From 943579faec5b2118f1359190cc9ee0fdacb9fc8e Mon Sep 17 00:00:00 2001 From: stm Date: Mon, 6 Feb 2023 13:35:45 +0100 Subject: [PATCH] New start --- Connected.Components.sln | 10 +- .../App.razor | 20 + ...onnected.Components.Showcase.Runner.csproj | 18 + .../MainLayout.razor | 5 + .../Pages/Demo.razor | 731 ++++++ .../Pages/Index.razor | 51 + .../Program.cs | 17 + .../Properties/launchSettings.json | 38 + .../_Imports.razor | 8 + .../wwwroot/index.html | 30 + .../Connected.Components.Showcase.csproj | 4 + .../Pages/AlertShowcase.razor | 381 --- .../Pages/AppBarShowcase.razor | 7 - .../Pages/DrawerShowcase.razor | 36 - .../Pages/TextBox.razor | 5 - .../Annotations/CategoryAttribute.cs | 538 ----- .../Annotations/LabelAttribute.cs | 12 - .../{ComponentsN => Components}/Alert.razor | 0 .../Alert.razor.cs | 4 +- .../Components/Alert/Alert.razor | 27 - .../Components/Alert/Alert.razor.cs | 122 - .../Components/AppBar/AppBar.razor | 10 - .../Components/AppBar/AppBar.razor.cs | 86 - .../Autocomplete/Autocomplete.razor | 96 - .../Autocomplete/Autocomplete.razor.cs | 732 ------ .../Components/Avatar/Avatar.razor | 23 - .../Components/Avatar/Avatar.razor.cs | 122 - .../Components/Avatar/AvatarGroup.razor | 14 - .../Components/Avatar/AvatarGroup.razor.cs | 205 -- .../Components/Avatar/AvatarKind.cs | 8 - .../Components/Badge/Badge.razor | 24 - .../Components/Badge/Badge.razor.cs | 177 -- .../Components/BindableItemsControlBase.cs | 31 - .../Components/BooleanInput.cs | 89 - .../Components/Breadcrumbs/BreadcrumbItem.cs | 17 - .../Breadcrumbs/BreadcrumbLink.razor | 19 - .../Breadcrumbs/BreadcrumbLink.razor.cs | 23 - .../Breadcrumbs/BreadcrumbSeparator.razor | 13 - .../Breadcrumbs/BreadcrumbSeparator.razor.cs | 10 - .../Components/Breadcrumbs/Breadcrumbs.razor | 35 - .../Breadcrumbs/Breadcrumbs.razor.cs | 88 - .../BreakpointProvider.razor | 6 - .../BreakpointProvider.razor.cs | 59 - .../Components/Button.razor | 128 + .../Components/Button.razor.cs | 150 ++ .../Components/Button/Button.razor | 17 - .../Components/Button/Button.razor.cs | 43 - .../Components/Button/ButtonBase.cs | 81 - .../Components/Button/Fab.razor | 25 - .../Components/Button/Fab.razor.cs | 78 - .../Components/Button/GlyphButton.razor | 27 - .../Components/Button/GlyphButton.razor.cs | 54 - .../Components/Button/ToggleGlyphButton.razor | 13 - .../Button/ToggleGlyphButton.razor.cs | 89 - .../Components/ButtonGroup/ButtonGroup.razor | 12 - .../ButtonGroup/ButtonGroup.razor.cs | 81 - .../Components/Card/Card.razor | 7 - .../Components/Card/Card.razor.cs | 46 - .../Components/Card/CardActions.razor | 7 - .../Components/Card/CardActions.razor.cs | 27 - .../Components/Card/CardContent.razor | 7 - .../Components/Card/CardContent.razor.cs | 27 - .../Components/Card/CardHeader.razor | 22 - .../Components/Card/CardHeader.razor.cs | 48 - .../Components/Card/CardMedia.razor | 5 - .../Components/Card/CardMedia.razor.cs | 46 - .../Components/Carousel/Carousel.razor | 84 - .../Components/Carousel/Carousel.razor.cs | 363 --- .../Components/Carousel/CarouselItem.razor | 10 - .../Components/Carousel/CarouselItem.razor.cs | 99 - .../Components/Chart/Chart.razor | 25 - .../Components/Chart/Chart.razor.cs | 145 -- .../Components/Chart/Charts/Bar.razor | 45 - .../Components/Chart/Charts/Bar.razor.cs | 155 -- .../Components/Chart/Charts/Donut.razor | 22 - .../Components/Chart/Charts/Donut.razor.cs | 67 - .../Components/Chart/Charts/Line.razor | 44 - .../Components/Chart/Charts/Line.razor.cs | 239 -- .../Components/Chart/Charts/Pie.razor | 14 - .../Components/Chart/Charts/Pie.razor.cs | 61 - .../Chart/Interpolation/EndSlopeSpline.cs | 75 - .../Chart/Interpolation/ILineInterpolator.cs | 11 - .../Components/Chart/Interpolation/Matrix.cs | 15 - .../Chart/Interpolation/MatrixSolver.cs | 89 - .../Chart/Interpolation/NaturalSpline.cs | 87 - .../Chart/Interpolation/NoInterpolation.cs | 10 - .../Chart/Interpolation/PeriodicSpline.cs | 86 - .../Chart/Interpolation/SplineInterpolator.cs | 83 - .../Components/Chart/Models/ChartOptions.cs | 40 - .../Components/Chart/Models/ChartSeries.cs | 8 - .../Components/Chart/Parts/Filters.razor | 5 - .../Components/Chart/Parts/Legend.razor | 15 - .../Components/Chart/Parts/Legend.razor.cs | 9 - .../Components/Chart/Svg/SvgCircle.cs | 11 - .../Components/Chart/Svg/SvgLegend.cs | 8 - .../Components/Chart/Svg/SvgPath.cs | 7 - .../Components/Chart/Svg/SvgText.cs | 8 - .../Components/CheckBox/CheckBox.razor | 25 - .../Components/CheckBox/CheckBox.razor.cs | 267 --- .../Components/Chip/Chip.razor | 33 - .../Components/Chip/Chip.razor.cs | 355 --- .../Components/ChipSet/ChipSet.razor | 8 - .../Components/ChipSet/ChipSet.razor.cs | 349 --- .../Components/Collapse/Collapse.razor | 11 - .../Components/Collapse/Collapse.razor.cs | 161 -- .../Components/ColorPicker/ColorPicker.razor | 151 -- .../ColorPicker/ColorPicker.razor.cs | 593 ----- .../Components/ColumnBase.cs | 22 - .../Components/Container/Container.razor | 7 - .../Components/Container/Container.razor.cs | 51 - .../DataGrid/AggregateDefinition.cs | 145 -- .../Components/DataGrid/AggregateType.cs | 15 - .../Components/DataGrid/Cell.cs | 167 -- .../Components/DataGrid/CellContext.cs | 47 - .../Components/DataGrid/Column.cs | 403 ---- .../Components/DataGrid/DataGrid.razor | 512 ---- .../Components/DataGrid/DataGrid.razor.cs | 1323 ----------- .../DataGrid/DataGridColumnResizeService.cs | 138 -- .../Components/DataGrid/DataGridEditMode.cs | 11 - .../DataGrid/DataGridEditTrigger.cs | 11 - .../DataGrid/DataGridFilterCaseSensitivity.cs | 11 - .../Components/DataGrid/DataGridFilterMode.cs | 12 - .../Components/DataGrid/DataGridPager.razor | 29 - .../DataGrid/DataGridPager.razor.cs | 79 - .../DataGrid/DataGridRowClickEventArgs.cs | 16 - .../DataGrid/DataGridRowValidator.cs | 69 - .../Components/DataGrid/Filter.cs | 166 -- .../Components/DataGrid/FilterContext.cs | 47 - .../Components/DataGrid/FilterDefinition.cs | 781 ------- .../DataGrid/FilterHeaderCell.razor | 65 - .../DataGrid/FilterHeaderCell.razor.cs | 216 -- .../Components/DataGrid/FilterOperator.cs | 191 -- .../Components/DataGrid/FooterCell.razor | 17 - .../Components/DataGrid/FooterCell.razor.cs | 37 - .../Components/DataGrid/FooterContext.cs | 45 - .../Components/DataGrid/GridState.cs | 22 - .../Components/DataGrid/GroupDefinition.cs | 17 - .../Components/DataGrid/HeaderCell.razor | 124 - .../Components/DataGrid/HeaderCell.razor.cs | 419 ---- .../Components/DataGrid/HeaderContext.cs | 46 - .../Components/DataGrid/HierarchyColumn.razor | 22 - .../Components/DataGrid/Row.razor | 6 - .../Components/DataGrid/Row.razor.cs | 16 - .../Components/DataGrid/SelectColumn.razor | 28 - .../Components/DataGrid/SortDefinition.cs | 7 - .../Components/DatePicker/DatePicker.cs | 311 --- .../DatePicker/DatePickerBase.razor | 152 -- .../DatePicker/DatePickerBase.razor.cs | 605 ----- .../Components/DatePicker/DateRange.cs | 76 - .../DatePicker/DateRangePicker.razor | 19 - .../DatePicker/DateRangePicker.razor.cs | 311 --- .../Components/Dialog/Dialog.razor | 22 - .../Components/Dialog/Dialog.razor.cs | 210 -- .../Components/Dialog/DialogInstance.razor | 28 - .../Components/Dialog/DialogInstance.razor.cs | 361 --- .../Components/Dialog/DialogOptions.cs | 50 - .../Components/Dialog/DialogParameters.cs | 60 - .../Components/Dialog/DialogProvider.razor | 10 - .../Components/Dialog/DialogProvider.razor.cs | 115 - .../Components/Dialog/DialogReference.cs | 73 - .../Components/Dialog/IDialogReference.cs | 38 - .../Components/Dialog/IDialogService.cs | 71 - .../Components/Divider/Divider.razor | 4 - .../Components/Divider/Divider.razor.cs | 56 - .../Components/Drawer/Drawer.razor | 22 - .../Components/Drawer/Drawer.razor.cs | 453 ---- .../Components/Drawer/DrawerContainer.razor | 8 - .../Drawer/DrawerContainer.razor.cs | 163 -- .../Components/Drawer/DrawerHeader.razor | 15 - .../Components/Drawer/DrawerHeader.razor.cs | 59 - .../Components/DropZone/DropContainer.razor | 10 - .../DropZone/DropContainer.razor.cs | 385 --- .../Components/DropZone/DropZone.razor | 69 - .../Components/DropZone/DropZone.razor.cs | 437 ---- .../Components/DropZone/DynamicDropItem.razor | 16 - .../DropZone/DynamicDropItem.razor.cs | 153 -- .../Components/Element/Element.cs | 106 - .../ExpansionPanel/ExpansionPanel.razor | 26 - .../ExpansionPanel/ExpansionPanel.razor.cs | 219 -- .../ExpansionPanel/ExpansionPanels.razor | 8 - .../ExpansionPanel/ExpansionPanels.razor.cs | 160 -- .../Components/Field/Field.razor | 26 - .../Components/Field/Field.razor.cs | 171 -- .../Components/FileUpload/FileUpload.razor | 18 - .../Components/FileUpload/FileUpload.razor.cs | 143 -- .../Components/FocusTrap/FocusTrap.razor | 39 - .../Components/FocusTrap/FocusTrap.razor.cs | 174 -- .../Components/Form/Form.razor | 16 - .../Components/Form/Form.razor.cs | 358 --- .../Components/Form/FormComponent.cs | 649 ------ .../Components/Form/IForm.cs | 12 - .../Components/Form/IFormComponent.cs | 15 - .../Components/Glyph.razor | 4 + .../Glyph.razor.cs | 6 +- .../Components/Grid/Grid.razor | 11 - .../Components/Grid/Grid.razor.cs | 40 - .../Components/Grid/Item.razor | 8 - .../Components/Grid/Item.razor.cs | 62 - .../Components/Hidden/Hidden.razor | 7 - .../Components/Hidden/Hidden.razor.cs | 130 -- .../Components/Highlighter/Highlighter.razor | 22 - .../Highlighter/Highlighter.razor.cs | 69 - .../Components/Highlighter/Splitter.cs | 114 - .../Components/Icon/Icon.razor | 18 - .../Components/Icon/Icon.razor.cs | 67 - .../Components/Image/Image.razor | 4 - .../Components/Image/Image.razor.cs | 84 - .../Components/Input/DebouncedInput.cs | 121 - .../Components/Input/Input.razor | 144 -- .../Components/Input/Input.razor.cs | 522 ----- .../Components/Input/InputAdornment.razor | 34 - .../Components/Input/InputBase.cs | 493 ---- .../Components/Input/InputCssHelper.cs | 37 - .../Components/Input/InputLabel.razor | 6 - .../Components/Input/InputLabel.razor.cs | 48 - .../Components/Input/Range.cs | 29 - .../Components/Input/RangeInput.razor | 33 - .../Components/Input/RangeInput.razor.cs | 132 -- .../Components/InputBase.cs | 87 + .../InputControl/InputControl.razor | 43 - .../InputControl/InputControl.razor.cs | 114 - .../Components/InputNumber.razor | 45 + .../Components/InputNumber.razor.cs | 55 + .../Components/InputPassword.razor | 42 + .../Components/InputPassword.razor.cs | 35 + .../Components/InputText.razor | 55 + .../Components/InputText.razor.cs | 56 + .../Components/ItemsControlBase.cs | 114 - .../Components/Layout/Layout.razor | 8 - .../Components/Layout/Layout.razor.cs | 36 - .../{ComponentsN => Components}/Link.razor | 0 .../{ComponentsN => Components}/Link.razor.cs | 2 +- .../Components/Link/Link.razor | 6 - .../Components/Link/Link.razor.cs | 99 - .../Components/Link/Link_old.razor | 6 - .../Components/Link/Link_old.razor.cs | 99 - .../Components/List/List.razor | 8 - .../Components/List/List.razor.cs | 209 -- .../Components/List/ListItem.razor | 43 - .../Components/List/ListItem.razor.cs | 324 --- .../Components/List/ListSubheader.razor | 6 - .../Components/List/ListSubheader.razor.cs | 33 - .../Components/Main/MainContent.razor | 7 - .../Components/Main/MainContent.razor.cs | 29 - .../Components/Mask/Mask.razor | 80 - .../Components/Mask/Mask.razor.cs | 450 ---- .../Components/Menu/IActivatable.cs | 8 - .../Components/Menu/Menu.razor | 49 - .../Components/Menu/Menu.razor.cs | 312 --- .../Components/Menu/MenuItem.razor | 8 - .../Components/Menu/MenuItem.razor.cs | 116 - .../Components/MessageBox/MessageBox.razor | 62 - .../Components/MessageBox/MessageBox.razor.cs | 217 -- .../NavMenu/INavigationEventReceiver.cs | 6 - .../Components/NavMenu/NavGroup.razor | 23 - .../Components/NavMenu/NavGroup.razor.cs | 128 - .../Components/NavMenu/NavLink.razor | 36 - .../Components/NavMenu/NavLink.razor.cs | 88 - .../Components/NavMenu/NavMenu.razor | 6 - .../Components/NavMenu/NavMenu.razor.cs | 63 - .../NumericField/NumericField.razor | 62 - .../NumericField/NumericField.razor.cs | 439 ---- .../Components/Overlay/Overlay.razor | 18 - .../Components/Overlay/Overlay.razor.cs | 206 -- .../PageContentNavigation.razor | 20 - .../PageContentNavigation.razor.cs | 184 -- .../PageContentSection.cs | 75 - .../Components/Pagination/Pagination.razor | 51 - .../Components/Pagination/Pagination.razor.cs | 324 --- .../Components/Paper/Paper.razor | 6 - .../Components/Paper/Paper.razor.cs | 106 - .../Components/Picker/Picker.razor | 116 - .../Components/Picker/Picker.razor.cs | 557 ----- .../Components/Picker/PickerContent.razor | 16 - .../Components/Picker/PickerToolbar.razor | 27 - .../Components/Popover/Popover.razor | 5 - .../Components/Popover/Popover.razor.cs | 206 -- .../Components/Popover/PopoverOptions.cs | 12 - .../Components/Popover/PopoverProvider.razor | 18 - .../Popover/PopoverProvider.razor.cs | 74 - .../Components/Popover/PopoverService.cs | 195 -- .../Progress/ProgressCircular.razor | 16 - .../Progress/ProgressCircular.razor.cs | 107 - .../Components/Progress/ProgressLinear.razor | 29 - .../Progress/ProgressLinear.razor.cs | 186 -- .../Components/RTLProvider/RTLProvider.razor | 8 - .../RTLProvider/RTLProvider.razor.cs | 41 - .../Components/Radio/IRadioGroup.cs | 7 - .../Components/Radio/Radio.razor | 23 - .../Components/Radio/Radio.razor.cs | 216 -- .../Components/Radio/RadioGroup.razor | 13 - .../Components/Radio/RadioGroup.razor.cs | 142 -- .../Components/Rating/Rating.razor | 14 - .../Components/Rating/Rating.razor.cs | 195 -- .../Components/Rating/RatingItem.razor | 16 - .../Components/Rating/RatingItem.razor.cs | 141 -- .../Components/Render/Render.razor | 25 - .../Components/ScrollToTop/ScrollToTop.razor | 9 - .../ScrollToTop/ScrollToTop.razor.cs | 136 -- .../Components/Select/ISelect.cs | 11 - .../Components/Select/Select.razor | 49 - .../Components/Select/Select.razor.cs | 1073 --------- .../Components/Select/SelectItem.razor | 19 - .../Components/Select/SelectItem.razor.cs | 154 -- .../Components/SelectItemBase.cs | 81 - .../Components/Skeleton/Skeleton.razor | 5 - .../Components/Skeleton/Skeleton.razor.cs | 63 - .../Components/Slider/Slider.razor | 51 - .../Components/Slider/Slider.razor.cs | 188 -- .../Snackbar/CommonSnackbarOptions.cs | 37 - .../Components/Snackbar/Defaults.cs | 25 - .../Components/Snackbar/ISnackbar.cs | 23 - .../SnackbarMessageRenderFragment.razor | 9 - .../SnackbarMessageText.razor | 8 - .../Snackbar/SnackBarMessageState.cs | 102 - .../Components/Snackbar/Snackbar.cs | 111 - .../Snackbar/SnackbarConfiguration.cs | 74 - .../Snackbar/SnackbarDuplicatesBehavior.cs | 12 - .../Components/Snackbar/SnackbarElement.razor | 35 - .../Snackbar/SnackbarElement.razor.cs | 78 - .../Components/Snackbar/SnackbarMessage.cs | 25 - .../Components/Snackbar/SnackbarOptions.cs | 82 - .../Snackbar/SnackbarProvider.razor | 17 - .../Snackbar/SnackbarProvider.razor.cs | 53 - .../Components/Snackbar/SnackbarService.cs | 227 -- .../Components/Snackbar/SnackbarState.cs | 19 - .../Components/Spacer/Spacer.razor | 3 - .../Components/Sparkline/SparkLine.razor | 20 - .../Components/Stack/Stack.razor | 6 - .../Components/Stack/Stack.razor.cs | 65 - .../Components/SwipeArea/SwipeArea.razor | 9 - .../Components/SwipeArea/SwipeArea.razor.cs | 132 -- .../Components/Switch/Switch.razor | 39 - .../Components/Switch/Switch.razor.cs | 168 -- .../Components/Table/AvatarColumn.razor | 24 - .../Components/Table/EditButtonContext.cs | 17 - .../Components/Table/SortableColumn.razor | 45 - .../Components/Table/SortableColumn.razor.cs | 70 - .../Components/Table/TFootRow.razor | 30 - .../Components/Table/TFootRow.razor.cs | 75 - .../Components/Table/THeadRow.razor | 32 - .../Components/Table/THeadRow.razor.cs | 75 - .../Components/Table/Table.razor | 246 -- .../Components/Table/Table.razor.cs | 577 ----- .../Components/Table/TableBase.cs | 538 ----- .../Components/Table/TableButtonPosition.cs | 50 - .../Components/Table/TableColumn.razor | 34 - .../Components/Table/TableColumn.razor.cs | 59 - .../Components/Table/TableContext.cs | 183 -- .../Components/Table/TableEditTrigger.cs | 11 - .../Components/Table/TableGroupData.cs | 19 - .../Components/Table/TableGroupDefinition.cs | 150 -- .../Components/Table/TableGroupRow.razor | 78 - .../Components/Table/TableGroupRow.razor.cs | 139 -- .../Components/Table/TablePager.razor | 51 - .../Components/Table/TablePager.razor.cs | 128 - .../Table/TableRowClickEventArgs.cs | 10 - .../Components/Table/TableRowValidator.cs | 59 - .../Components/Table/TableSortLabel.razor | 26 - .../Components/Table/TableSortLabel.razor.cs | 124 - .../Components/Table/TableState.cs | 18 - .../Components/Table/Td.razor | 6 - .../Components/Table/Td.razor.cs | 23 - .../Components/Table/TemplateColumn.razor | 36 - .../Components/Table/Th.razor | 7 - .../Components/Table/Th.razor.cs | 13 - .../Components/Table/Tr.razor | 82 - .../Components/Table/Tr.razor.cs | 191 -- .../Components/TableSimple/SimpleTable.razor | 10 - .../TableSimple/SimpleTable.razor.cs | 85 - .../Components/Tabs/DynamicTabs.razor | 44 - .../Components/Tabs/DynamicTabs.razor.cs | 84 - .../Components/Tabs/TabHeaderPosition.cs | 24 - .../Components/Tabs/TabPanel.razor | 18 - .../Components/Tabs/TabPanel.razor.cs | 111 - .../Components/Tabs/Tabs.razor | 108 - .../Components/Tabs/Tabs.razor.cs | 655 ------ .../Components/TextField/TextField.razor | 95 - .../Components/TextField/TextField.razor.cs | 168 -- .../ThemeProvider/ThemeProvider.razor | 21 - .../ThemeProvider/ThemeProvider.razor.cs | 410 ---- .../Components/TimePicker/TimePicker.razor | 101 - .../Components/TimePicker/TimePicker.razor.cs | 675 ------ .../Components/Timeline/Timeline.razor | 8 - .../Components/Timeline/Timeline.razor.cs | 87 - .../Components/Timeline/TimelineItem.razor | 34 - .../Components/Timeline/TimelineItem.razor.cs | 137 -- .../Components/ToolBar/ToolBar.razor | 39 - .../Components/Tooltip/Tooltip.razor | 19 - .../Components/Tooltip/Tooltip.razor.cs | 180 -- .../Components/TreeView/TreeView.razor | 19 - .../Components/TreeView/TreeView.razor.cs | 243 -- .../Components/TreeView/TreeViewItem.razor | 58 - .../Components/TreeView/TreeViewItem.razor.cs | 421 ---- .../TreeView/TreeViewItemToggleButton.razor | 65 - .../Components/Typography/TextContent.razor | 49 - .../Typography/TextContent.razor.cs | 73 - .../Components/UIComponent.cs | 28 - .../Components/Virtualize/Virtualize.razor | 21 - .../Components/Virtualize/Virtualize.razor.cs | 36 - .../ComponentsN/Button.razor | 8 - .../ComponentsN/Button.razor.cs | 92 - .../ComponentsN/Glyph.razor | 4 - .../ComponentsN/ISelect.cs | 11 - .../ComponentsN/InputDate.razor | 7 - .../ComponentsN/InputDate.razor.cs | 63 - .../ComponentsN/InputNumber.razor | 10 - .../ComponentsN/InputNumber.razor.cs | 77 - .../ComponentsN/InputText.razor | 27 - .../ComponentsN/InputText.razor.cs | 124 - .../ComponentsN/Select.razor | 33 - .../ComponentsN/Select.razor.cs | 63 - .../ComponentsN/SelectItem.razor | 5 - .../ComponentsN/SelectItem.razor.cs | 20 - .../ComponentsN/ToggleButton.razor | 5 - .../ComponentsN/ToggleButton.razor.cs | 148 -- .../Connected.Components.csproj | 23 +- src/Connected.Components/Enums/Adornment.cs | 13 - src/Connected.Components/Enums/Align.cs | 22 - src/Connected.Components/Enums/AlignItems.cs | 18 - src/Connected.Components/Enums/Alignment.cs | 23 - src/Connected.Components/Enums/Anchor.cs | 20 - src/Connected.Components/Enums/Animation.cs | 14 - src/Connected.Components/Enums/ButtonType.cs | 8 - src/Connected.Components/Enums/Color.cs | 45 +- .../Enums/ColorPickerMode.cs | 13 - .../Enums/ColorPickerView.cs | 14 - .../Enums/ContentNavigationExpandBehaviour.cs | 10 - .../Enums/DefaultFocus.cs | 10 - src/Connected.Components/Enums/Direction.cs | 20 - src/Connected.Components/Enums/DividerType.cs | 14 - .../Enums/DrawerClipMode.cs | 14 - .../Enums/DrawerVariant.cs | 16 - src/Connected.Components/Enums/Edge.cs | 14 - .../Enums/HorizontalAlignment.cs | 35 - src/Connected.Components/Enums/InputMode.cs | 40 - src/Connected.Components/Enums/Justify.cs | 20 - .../Enums/LabelPosition.cs | 12 - src/Connected.Components/Enums/LinkTarget.cs | 9 - src/Connected.Components/Enums/Margin.cs | 14 - src/Connected.Components/Enums/MaxWidth.cs | 22 - src/Connected.Components/Enums/MouseEvent.cs | 9 - src/Connected.Components/Enums/ObjectFit.cs | 20 - src/Connected.Components/Enums/OpenToView.cs | 13 - src/Connected.Components/Enums/Orientation.cs | 12 - src/Connected.Components/Enums/Origin.cs | 26 - .../Enums/OverflowBehavior.cs | 18 - src/Connected.Components/Enums/Page.cs | 12 - .../Enums/PickerVariant.cs | 13 - src/Connected.Components/Enums/Placement.cs | 16 - src/Connected.Components/Enums/ResizeMode.cs | 20 - src/Connected.Components/Enums/Size.cs | 20 +- .../Enums/SkeletonType.cs | 14 - .../Enums/SortDirection.cs | 14 - src/Connected.Components/Enums/SortMode.cs | 20 - .../Enums/SwipeDirection.cs | 11 - .../Enums/TimeEditMode.cs | 9 - .../Enums/TimelineAlign.cs | 14 - .../Enums/TimelineOrientation.cs | 12 - .../Enums/TimelinePosition.cs | 22 - src/Connected.Components/Enums/Transition.cs | 16 - src/Connected.Components/Enums/Typo.cs | 36 - src/Connected.Components/Enums/Underline.cs | 14 - src/Connected.Components/Enums/Variant.cs | 3 +- .../Enums/VerticalAlignment.cs | 7 - src/Connected.Components/Enums/Width.cs | 22 - .../Extensions/DataGridExtensions.cs | 36 - .../Extensions/DateTimeExtensions.cs | 48 - .../Extensions/DoubleExtentions.cs | 13 - .../Extensions/ElementReferenceExtensions.cs | 66 - .../Extensions/EnumExtensions.cs | 27 - .../Extensions/ExpressionExtensions.cs | 38 - .../Extensions/KeepInRangeExtensions.cs | 15 - .../Extensions/MathExtensions.cs | 8 - .../Extensions/ObjectExtensions.cs | 13 - .../Extensions/ParameterViewExtensions.cs | 12 - .../Extensions/StringExtensions.cs | 15 - .../Extensions/TableExtensions.cs | 27 - .../Extensions/TaskExtensions.cs | 68 - .../Extensions/TimeSpanExtensions.cs | 29 - .../Extensions/WebUnitsExtensions.cs | 18 - .../Icons/Custom/Brands.cs | 45 - .../Icons/Custom/FileFormats.cs | 23 - .../Icons/Custom/Uncategorized.cs | 33 - .../Icons/{Material => }/Filled.cs | 0 .../Icons/Material/_Obsolete.cs | 197 -- .../Icons/Obsolete/Filled.cs | 2066 ---------------- .../Icons/Obsolete/Outlined.cs | 2074 ----------------- .../Icons/Obsolete/Rounded.cs | 2074 ----------------- .../Icons/Obsolete/Sharp.cs | 2074 ----------------- .../Icons/Obsolete/TwoTone.cs | 2074 ----------------- .../Icons/Obsolete/_Obsolete.cs | 196 -- .../Icons/{Material => }/Outlined.cs | 0 .../Icons/{Material => }/Rounded.cs | 0 .../Icons/{Material => }/Sharp.cs | 0 .../Icons/{Material => }/TwoTone.cs | 0 .../Interop/BoundingClientRect.cs | 84 - .../Interop/EventHandlers.cs | 18 - .../Services/BrowserWindowSizeProvider.cs | 33 - .../Services/DialogResult.cs | 32 - .../Services/DialogService.cs | 258 -- .../Services/EventManager/EventManager.cs | 206 -- .../EventManager/WebEventJsonContext.cs | 26 - .../Services/IIJSRuntimeExtentions.cs | 130 -- .../Services/JsApiService.cs | 36 - .../Services/JsEvent/JsEvent.cs | 238 -- .../Services/JsEvent/JsEventFactory.cs | 33 - .../Services/JsEvent/JsEventOptions.cs | 28 - .../KeyInterceptor/IKeyInterceptor.cs | 21 - .../Services/KeyInterceptor/KeyInterceptor.cs | 105 - .../KeyInterceptor/KeyInterceptorFactory.cs | 32 - .../KeyInterceptor/KeyInterceptorOptions.cs | 82 - .../ReseizeObserver/IResizeObserver.cs | 22 - .../ReseizeObserver/IResizeObserverFactory.cs | 8 - .../ReseizeObserver/ResizeObserver.cs | 145 -- .../ReseizeObserver/ResizeObserverFactory.cs | 26 - .../ReseizeObserver/ResizeObserverOptions.cs | 16 - .../Services/ResizeListener/Breakpoint.cs | 14 - .../ResizeListener/BreakpointService .cs | 245 -- .../ResizeListener/BrowserWindowSize.cs | 10 - .../ResizeListener/ResizeBasedService.cs | 84 - .../ResizeListener/ResizeListenerService.cs | 236 -- .../Services/ResizeListener/ResizeOptions.cs | 88 - .../Services/ResizeListener/ResizeService.cs | 137 -- .../ResizeListener/SubscriptionInfo.cs | 59 - .../Services/Scroll/ScrollEventArgs.cs | 38 - .../Services/Scroll/ScrollListener.cs | 114 - .../Services/Scroll/ScrollListenerFactory.cs | 28 - .../Services/Scroll/ScrollManager.cs | 100 - .../Services/Scroll/ScrollManagerException.cs | 20 - .../Services/Scroll/ScrollOptions.cs | 22 - .../Services/Scroll/ScrollSpy.cs | 112 - .../Services/Scroll/ScrollSpyFactory.cs | 28 - .../Services/ServiceCollectionExtensions.cs | 304 --- .../Services/ServiceConfiguration.cs | 17 - .../Styles/Connected.Components.scss | 92 +- .../Styles/abstracts/_colors.scss | 86 - .../Styles/abstracts/_mixins.scss | 53 - .../Styles/abstracts/_variables.scss | 13 - .../Styles/components/_alert.scss | 120 - .../Styles/components/_avatar.scss | 131 -- .../Styles/components/_badge.scss | 203 -- .../Styles/components/_breadcrumbs.scss | 48 - .../Styles/components/_button.scss | 270 --- .../Styles/components/_buttongroup.scss | 322 --- .../Styles/components/_buttons.scss | 134 ++ .../Styles/components/_card.scss | 59 - .../Styles/components/_carousel.scss | 211 -- .../Styles/components/_charts.scss | 135 -- .../Styles/components/_checkbox.scss | 129 +- .../Styles/components/_chip.scss | 153 -- .../Styles/components/_collapse.scss | 48 - .../Styles/components/_datagrid.scss | 132 -- .../Styles/components/_dialog.scss | 201 -- .../Styles/components/_divider.scss | 39 - .../Styles/components/_dropzone.scss | 35 - .../Styles/components/_expansionpanel.scss | 125 - .../Styles/components/_fab.scss | 139 -- .../Styles/components/_field.scss | 33 - .../Styles/components/_fileupload.scss | 7 - .../Styles/components/_form.scss | 5 - .../Styles/components/_grid.scss | 714 +----- .../Styles/components/_iconbutton.scss | 83 - .../Styles/components/_icons.scss | 39 - .../Styles/components/_image.scss | 6 - .../Styles/components/_index.scss | 6 + .../Styles/components/_input.scss | 496 ---- .../Styles/components/_inputcontrol.scss | 200 -- .../Styles/components/_inputlabel.scss | 127 - .../Styles/components/_inputs.scss | 264 +++ .../Styles/components/_layout.scss | 4 - .../Styles/components/_link.scss | 27 - .../Styles/components/_list.scss | 132 -- .../Styles/components/_markdowncode.scss | 36 - .../Styles/components/_menu.scss | 21 - .../Styles/components/_navmenu.scss | 273 --- .../Styles/components/_overlay.scss | 64 - .../components/_pagecontentnavigation.scss | 34 - .../Styles/components/_pagination.scss | 97 - .../Styles/components/_paper.scss | 15 - .../Styles/components/_picker.scss | 198 -- .../Styles/components/_pickercolor.scss | 242 -- .../Styles/components/_pickerdate.scss | 384 --- .../Styles/components/_pickertime.scss | 285 --- .../Styles/components/_popover.scss | 58 - .../Styles/components/_progresscircular.scss | 52 - .../Styles/components/_progresslinear.scss | 262 --- .../Styles/components/_radio.scss | 168 +- .../Styles/components/_rating.scss | 54 - .../Styles/components/_select.scss | 89 - .../Styles/components/_sidebar.scss | 230 ++ .../Styles/components/_simpletable.scss | 145 -- .../Styles/components/_skeleton.scss | 44 - .../Styles/components/_slider.scss | 211 -- .../Styles/components/_snackbar.scss | 105 - .../Styles/components/_switch.scss | 106 - .../Styles/components/_table.scss | 559 ----- .../Styles/components/_tabs.scss | 303 --- .../Styles/components/_timeline.scss | 650 ------ .../Styles/components/_toolbar.scss | 34 - .../Styles/components/_tooltip.scss | 76 - .../Styles/components/_treeview.scss | 136 -- .../Styles/components/_typography.scss | 62 - .../Styles/core/_animations.scss | 249 -- .../Styles/core/_base.scss | 34 - .../Styles/core/_blazor.scss | 45 - .../Styles/core/_colors.scss | 361 --- .../Styles/core/_elevation.scss | 5 - .../Styles/core/_reset.scss | 81 - .../Styles/core/_ripple.scss | 37 - .../Styles/core/_rtl.scss | 13 - .../Styles/globals/_core.scss | 42 + .../Styles/globals/_index.scss | 4 + .../Styles/globals/_reset.scss | 97 + .../Styles/globals/_typography.scss | 218 ++ .../Styles/globals/_variables.scss | 146 ++ .../Styles/layout/_appbar.scss | 166 -- .../Styles/layout/_container.scss | 89 - .../Styles/layout/_css_documentation.scss | 65 + .../Styles/layout/_document.scss | 39 + .../Styles/layout/_drawer.scss | 390 ---- .../Styles/layout/_index.scss | 2 + .../Styles/layout/_main.scss | 136 -- .../Styles/layout/_scroll.scss | 69 - .../Styles/util/_breakpoints.scss | 31 + .../Styles/util/_colors.scss | 113 + .../Styles/util/_functions.scss | 17 + .../Styles/util/_index.scss | 4 + .../Styles/util/_utilities.scss | 278 +++ .../Styles/utilities/_index.scss | 21 - .../Styles/utilities/_obsolete.scss | 11 - .../utilities/borders/_border-radius.scss | 168 -- .../utilities/borders/_border-style.scss | 7 - .../utilities/borders/_border-width.scss | 22 - .../Styles/utilities/borders/_outline.scss | 34 - .../utilities/flexbox/_align-content.scss | 29 - .../utilities/flexbox/_align-items.scss | 25 - .../Styles/utilities/flexbox/_align-self.scss | 25 - .../utilities/flexbox/_flex-direction.scss | 21 - .../Styles/utilities/flexbox/_flex-grow.scss | 13 - .../utilities/flexbox/_flex-shrink.scss | 13 - .../Styles/utilities/flexbox/_flex-wrap.scss | 17 - .../Styles/utilities/flexbox/_flex.scss | 18 - .../Styles/utilities/flexbox/_gap.scss | 23 - .../Styles/utilities/flexbox/_index.scss | 29 - .../utilities/flexbox/_justify-content.scss | 29 - .../Styles/utilities/flexbox/_order.scss | 21 - .../utilities/interactivity/_cursor.scss | 13 - .../interactivity/_pointerevents.scss | 6 - .../Styles/utilities/layout/_display.scss | 65 - .../Styles/utilities/layout/_object-fit.scss | 15 - .../utilities/layout/_object-position.scss | 27 - .../Styles/utilities/layout/_overflow.scss | 47 - .../Styles/utilities/layout/_position.scss | 19 - .../Styles/utilities/layout/_visibility.scss | 6 - .../Styles/utilities/layout/_zindex.scss | 14 - .../Styles/utilities/spacing/_spacing.scss | 101 - .../TScripts/mudAAAlicense.js | 5 - .../TScripts/mudDragAndDrop.js | 12 - .../TScripts/mudElementReference.js | 146 -- .../TScripts/mudEventManager.js | 140 -- .../TScripts/mudHelpers.js | 87 - .../TScripts/mudJsEvent.js | 221 -- .../TScripts/mudKeyInterceptor.js | 258 -- .../TScripts/mudPopover.js | 494 ---- .../TScripts/mudResizeListener.js | 139 -- .../TScripts/mudResizeObserver.js | 143 -- .../TScripts/mudScrollListener.js | 83 - .../TScripts/mudScrollManager.js | 65 - .../TScripts/mudScrollSpy.js | 109 - .../TScripts/mudThemeProvider.js | 5 - .../TScripts/mudWindow.js | 26 - .../Themes/Models/Breakpoints.cs | 16 - .../Themes/Models/LayoutProperties.cs | 21 - .../Themes/Models/Palette.cs | 156 -- .../Themes/Models/PaletteDark.cs | 34 - .../Themes/Models/Shadow.cs | 36 - .../Themes/Models/Typography.cs | 174 -- .../Themes/Models/Z-Index.cs | 13 - src/Connected.Components/Themes/Theme.cs | 23 - .../Utilities/ActivatableCallback.cs | 15 - .../BindingConverters/BoolConverter.cs | 92 - .../Utilities/BindingConverters/Converter.cs | 111 - .../Utilities/BindingConverters/Converters.cs | 8 - .../BindingConverters/DateConverter.cs | 29 - .../BindingConverters/DefaultConverter.cs | 464 ---- .../BindingConverters/IsoDateConverter.cs | 17 - .../BindingConverters/NumericConverter.cs | 390 ---- .../BindingConverters/RangeConverter.cs | 41 - .../Utilities/CodeMessage.cs | 10 - src/Connected.Components/Utilities/Color.cs | 383 --- .../Utilities/ColorManager.cs | 113 - .../Utilities/ColorTransformation.cs | 144 -- .../Utilities/EventUtil.cs | 40 - .../GenericTypeMismatchException.cs | 13 - .../Utilities/FormFieldChangedEventArgs.cs | 13 - .../Utilities/HashSetExtensions.cs | 31 - src/Connected.Components/Utilities/Helper.cs | 63 +- .../Utilities/MaskAlgorithms/BaseMask.cs | 268 --- .../Utilities/MaskAlgorithms/BlockMask.cs | 116 - .../Utilities/MaskAlgorithms/DateMask.cs | 232 -- .../Utilities/MaskAlgorithms/IMask.cs | 76 - .../Utilities/MaskAlgorithms/MaskChar.cs | 27 - .../Utilities/MaskAlgorithms/MultiMask.cs | 100 - .../Utilities/MaskAlgorithms/PatternMask.cs | 269 --- .../Utilities/MaskAlgorithms/RegexMask.cs | 271 --- .../Utilities/RuntimeLocation.cs | 13 - .../Utilities/SortingAssistent.cs | 46 - src/Connected.Components/compilerconfig.json | 8 +- 709 files changed, 3671 insertions(+), 72449 deletions(-) create mode 100644 src/Connected.Components.Showcase.Runner/App.razor create mode 100644 src/Connected.Components.Showcase.Runner/Connected.Components.Showcase.Runner.csproj create mode 100644 src/Connected.Components.Showcase.Runner/MainLayout.razor create mode 100644 src/Connected.Components.Showcase.Runner/Pages/Demo.razor create mode 100644 src/Connected.Components.Showcase.Runner/Pages/Index.razor create mode 100644 src/Connected.Components.Showcase.Runner/Program.cs create mode 100644 src/Connected.Components.Showcase.Runner/Properties/launchSettings.json create mode 100644 src/Connected.Components.Showcase.Runner/_Imports.razor create mode 100644 src/Connected.Components.Showcase.Runner/wwwroot/index.html delete mode 100644 src/Connected.Components.Showcase/Pages/AlertShowcase.razor delete mode 100644 src/Connected.Components.Showcase/Pages/AppBarShowcase.razor delete mode 100644 src/Connected.Components.Showcase/Pages/DrawerShowcase.razor delete mode 100644 src/Connected.Components.Showcase/Pages/TextBox.razor delete mode 100644 src/Connected.Components/Annotations/CategoryAttribute.cs delete mode 100644 src/Connected.Components/Annotations/LabelAttribute.cs rename src/Connected.Components/{ComponentsN => Components}/Alert.razor (100%) rename src/Connected.Components/{ComponentsN => Components}/Alert.razor.cs (95%) delete mode 100644 src/Connected.Components/Components/Alert/Alert.razor delete mode 100644 src/Connected.Components/Components/Alert/Alert.razor.cs delete mode 100644 src/Connected.Components/Components/AppBar/AppBar.razor delete mode 100644 src/Connected.Components/Components/AppBar/AppBar.razor.cs delete mode 100644 src/Connected.Components/Components/Autocomplete/Autocomplete.razor delete mode 100644 src/Connected.Components/Components/Autocomplete/Autocomplete.razor.cs delete mode 100644 src/Connected.Components/Components/Avatar/Avatar.razor delete mode 100644 src/Connected.Components/Components/Avatar/Avatar.razor.cs delete mode 100644 src/Connected.Components/Components/Avatar/AvatarGroup.razor delete mode 100644 src/Connected.Components/Components/Avatar/AvatarGroup.razor.cs delete mode 100644 src/Connected.Components/Components/Avatar/AvatarKind.cs delete mode 100644 src/Connected.Components/Components/Badge/Badge.razor delete mode 100644 src/Connected.Components/Components/Badge/Badge.razor.cs delete mode 100644 src/Connected.Components/Components/BindableItemsControlBase.cs delete mode 100644 src/Connected.Components/Components/BooleanInput.cs delete mode 100644 src/Connected.Components/Components/Breadcrumbs/BreadcrumbItem.cs delete mode 100644 src/Connected.Components/Components/Breadcrumbs/BreadcrumbLink.razor delete mode 100644 src/Connected.Components/Components/Breadcrumbs/BreadcrumbLink.razor.cs delete mode 100644 src/Connected.Components/Components/Breadcrumbs/BreadcrumbSeparator.razor delete mode 100644 src/Connected.Components/Components/Breadcrumbs/BreadcrumbSeparator.razor.cs delete mode 100644 src/Connected.Components/Components/Breadcrumbs/Breadcrumbs.razor delete mode 100644 src/Connected.Components/Components/Breadcrumbs/Breadcrumbs.razor.cs delete mode 100644 src/Connected.Components/Components/BreakpointProvider/BreakpointProvider.razor delete mode 100644 src/Connected.Components/Components/BreakpointProvider/BreakpointProvider.razor.cs create mode 100644 src/Connected.Components/Components/Button.razor create mode 100644 src/Connected.Components/Components/Button.razor.cs delete mode 100644 src/Connected.Components/Components/Button/Button.razor delete mode 100644 src/Connected.Components/Components/Button/Button.razor.cs delete mode 100644 src/Connected.Components/Components/Button/ButtonBase.cs delete mode 100644 src/Connected.Components/Components/Button/Fab.razor delete mode 100644 src/Connected.Components/Components/Button/Fab.razor.cs delete mode 100644 src/Connected.Components/Components/Button/GlyphButton.razor delete mode 100644 src/Connected.Components/Components/Button/GlyphButton.razor.cs delete mode 100644 src/Connected.Components/Components/Button/ToggleGlyphButton.razor delete mode 100644 src/Connected.Components/Components/Button/ToggleGlyphButton.razor.cs delete mode 100644 src/Connected.Components/Components/ButtonGroup/ButtonGroup.razor delete mode 100644 src/Connected.Components/Components/ButtonGroup/ButtonGroup.razor.cs delete mode 100644 src/Connected.Components/Components/Card/Card.razor delete mode 100644 src/Connected.Components/Components/Card/Card.razor.cs delete mode 100644 src/Connected.Components/Components/Card/CardActions.razor delete mode 100644 src/Connected.Components/Components/Card/CardActions.razor.cs delete mode 100644 src/Connected.Components/Components/Card/CardContent.razor delete mode 100644 src/Connected.Components/Components/Card/CardContent.razor.cs delete mode 100644 src/Connected.Components/Components/Card/CardHeader.razor delete mode 100644 src/Connected.Components/Components/Card/CardHeader.razor.cs delete mode 100644 src/Connected.Components/Components/Card/CardMedia.razor delete mode 100644 src/Connected.Components/Components/Card/CardMedia.razor.cs delete mode 100644 src/Connected.Components/Components/Carousel/Carousel.razor delete mode 100644 src/Connected.Components/Components/Carousel/Carousel.razor.cs delete mode 100644 src/Connected.Components/Components/Carousel/CarouselItem.razor delete mode 100644 src/Connected.Components/Components/Carousel/CarouselItem.razor.cs delete mode 100644 src/Connected.Components/Components/Chart/Chart.razor delete mode 100644 src/Connected.Components/Components/Chart/Chart.razor.cs delete mode 100644 src/Connected.Components/Components/Chart/Charts/Bar.razor delete mode 100644 src/Connected.Components/Components/Chart/Charts/Bar.razor.cs delete mode 100644 src/Connected.Components/Components/Chart/Charts/Donut.razor delete mode 100644 src/Connected.Components/Components/Chart/Charts/Donut.razor.cs delete mode 100644 src/Connected.Components/Components/Chart/Charts/Line.razor delete mode 100644 src/Connected.Components/Components/Chart/Charts/Line.razor.cs delete mode 100644 src/Connected.Components/Components/Chart/Charts/Pie.razor delete mode 100644 src/Connected.Components/Components/Chart/Charts/Pie.razor.cs delete mode 100644 src/Connected.Components/Components/Chart/Interpolation/EndSlopeSpline.cs delete mode 100644 src/Connected.Components/Components/Chart/Interpolation/ILineInterpolator.cs delete mode 100644 src/Connected.Components/Components/Chart/Interpolation/Matrix.cs delete mode 100644 src/Connected.Components/Components/Chart/Interpolation/MatrixSolver.cs delete mode 100644 src/Connected.Components/Components/Chart/Interpolation/NaturalSpline.cs delete mode 100644 src/Connected.Components/Components/Chart/Interpolation/NoInterpolation.cs delete mode 100644 src/Connected.Components/Components/Chart/Interpolation/PeriodicSpline.cs delete mode 100644 src/Connected.Components/Components/Chart/Interpolation/SplineInterpolator.cs delete mode 100644 src/Connected.Components/Components/Chart/Models/ChartOptions.cs delete mode 100644 src/Connected.Components/Components/Chart/Models/ChartSeries.cs delete mode 100644 src/Connected.Components/Components/Chart/Parts/Filters.razor delete mode 100644 src/Connected.Components/Components/Chart/Parts/Legend.razor delete mode 100644 src/Connected.Components/Components/Chart/Parts/Legend.razor.cs delete mode 100644 src/Connected.Components/Components/Chart/Svg/SvgCircle.cs delete mode 100644 src/Connected.Components/Components/Chart/Svg/SvgLegend.cs delete mode 100644 src/Connected.Components/Components/Chart/Svg/SvgPath.cs delete mode 100644 src/Connected.Components/Components/Chart/Svg/SvgText.cs delete mode 100644 src/Connected.Components/Components/CheckBox/CheckBox.razor delete mode 100644 src/Connected.Components/Components/CheckBox/CheckBox.razor.cs delete mode 100644 src/Connected.Components/Components/Chip/Chip.razor delete mode 100644 src/Connected.Components/Components/Chip/Chip.razor.cs delete mode 100644 src/Connected.Components/Components/ChipSet/ChipSet.razor delete mode 100644 src/Connected.Components/Components/ChipSet/ChipSet.razor.cs delete mode 100644 src/Connected.Components/Components/Collapse/Collapse.razor delete mode 100644 src/Connected.Components/Components/Collapse/Collapse.razor.cs delete mode 100644 src/Connected.Components/Components/ColorPicker/ColorPicker.razor delete mode 100644 src/Connected.Components/Components/ColorPicker/ColorPicker.razor.cs delete mode 100644 src/Connected.Components/Components/ColumnBase.cs delete mode 100644 src/Connected.Components/Components/Container/Container.razor delete mode 100644 src/Connected.Components/Components/Container/Container.razor.cs delete mode 100644 src/Connected.Components/Components/DataGrid/AggregateDefinition.cs delete mode 100644 src/Connected.Components/Components/DataGrid/AggregateType.cs delete mode 100644 src/Connected.Components/Components/DataGrid/Cell.cs delete mode 100644 src/Connected.Components/Components/DataGrid/CellContext.cs delete mode 100644 src/Connected.Components/Components/DataGrid/Column.cs delete mode 100644 src/Connected.Components/Components/DataGrid/DataGrid.razor delete mode 100644 src/Connected.Components/Components/DataGrid/DataGrid.razor.cs delete mode 100644 src/Connected.Components/Components/DataGrid/DataGridColumnResizeService.cs delete mode 100644 src/Connected.Components/Components/DataGrid/DataGridEditMode.cs delete mode 100644 src/Connected.Components/Components/DataGrid/DataGridEditTrigger.cs delete mode 100644 src/Connected.Components/Components/DataGrid/DataGridFilterCaseSensitivity.cs delete mode 100644 src/Connected.Components/Components/DataGrid/DataGridFilterMode.cs delete mode 100644 src/Connected.Components/Components/DataGrid/DataGridPager.razor delete mode 100644 src/Connected.Components/Components/DataGrid/DataGridPager.razor.cs delete mode 100644 src/Connected.Components/Components/DataGrid/DataGridRowClickEventArgs.cs delete mode 100644 src/Connected.Components/Components/DataGrid/DataGridRowValidator.cs delete mode 100644 src/Connected.Components/Components/DataGrid/Filter.cs delete mode 100644 src/Connected.Components/Components/DataGrid/FilterContext.cs delete mode 100644 src/Connected.Components/Components/DataGrid/FilterDefinition.cs delete mode 100644 src/Connected.Components/Components/DataGrid/FilterHeaderCell.razor delete mode 100644 src/Connected.Components/Components/DataGrid/FilterHeaderCell.razor.cs delete mode 100644 src/Connected.Components/Components/DataGrid/FilterOperator.cs delete mode 100644 src/Connected.Components/Components/DataGrid/FooterCell.razor delete mode 100644 src/Connected.Components/Components/DataGrid/FooterCell.razor.cs delete mode 100644 src/Connected.Components/Components/DataGrid/FooterContext.cs delete mode 100644 src/Connected.Components/Components/DataGrid/GridState.cs delete mode 100644 src/Connected.Components/Components/DataGrid/GroupDefinition.cs delete mode 100644 src/Connected.Components/Components/DataGrid/HeaderCell.razor delete mode 100644 src/Connected.Components/Components/DataGrid/HeaderCell.razor.cs delete mode 100644 src/Connected.Components/Components/DataGrid/HeaderContext.cs delete mode 100644 src/Connected.Components/Components/DataGrid/HierarchyColumn.razor delete mode 100644 src/Connected.Components/Components/DataGrid/Row.razor delete mode 100644 src/Connected.Components/Components/DataGrid/Row.razor.cs delete mode 100644 src/Connected.Components/Components/DataGrid/SelectColumn.razor delete mode 100644 src/Connected.Components/Components/DataGrid/SortDefinition.cs delete mode 100644 src/Connected.Components/Components/DatePicker/DatePicker.cs delete mode 100644 src/Connected.Components/Components/DatePicker/DatePickerBase.razor delete mode 100644 src/Connected.Components/Components/DatePicker/DatePickerBase.razor.cs delete mode 100644 src/Connected.Components/Components/DatePicker/DateRange.cs delete mode 100644 src/Connected.Components/Components/DatePicker/DateRangePicker.razor delete mode 100644 src/Connected.Components/Components/DatePicker/DateRangePicker.razor.cs delete mode 100644 src/Connected.Components/Components/Dialog/Dialog.razor delete mode 100644 src/Connected.Components/Components/Dialog/Dialog.razor.cs delete mode 100644 src/Connected.Components/Components/Dialog/DialogInstance.razor delete mode 100644 src/Connected.Components/Components/Dialog/DialogInstance.razor.cs delete mode 100644 src/Connected.Components/Components/Dialog/DialogOptions.cs delete mode 100644 src/Connected.Components/Components/Dialog/DialogParameters.cs delete mode 100644 src/Connected.Components/Components/Dialog/DialogProvider.razor delete mode 100644 src/Connected.Components/Components/Dialog/DialogProvider.razor.cs delete mode 100644 src/Connected.Components/Components/Dialog/DialogReference.cs delete mode 100644 src/Connected.Components/Components/Dialog/IDialogReference.cs delete mode 100644 src/Connected.Components/Components/Dialog/IDialogService.cs delete mode 100644 src/Connected.Components/Components/Divider/Divider.razor delete mode 100644 src/Connected.Components/Components/Divider/Divider.razor.cs delete mode 100644 src/Connected.Components/Components/Drawer/Drawer.razor delete mode 100644 src/Connected.Components/Components/Drawer/Drawer.razor.cs delete mode 100644 src/Connected.Components/Components/Drawer/DrawerContainer.razor delete mode 100644 src/Connected.Components/Components/Drawer/DrawerContainer.razor.cs delete mode 100644 src/Connected.Components/Components/Drawer/DrawerHeader.razor delete mode 100644 src/Connected.Components/Components/Drawer/DrawerHeader.razor.cs delete mode 100644 src/Connected.Components/Components/DropZone/DropContainer.razor delete mode 100644 src/Connected.Components/Components/DropZone/DropContainer.razor.cs delete mode 100644 src/Connected.Components/Components/DropZone/DropZone.razor delete mode 100644 src/Connected.Components/Components/DropZone/DropZone.razor.cs delete mode 100644 src/Connected.Components/Components/DropZone/DynamicDropItem.razor delete mode 100644 src/Connected.Components/Components/DropZone/DynamicDropItem.razor.cs delete mode 100644 src/Connected.Components/Components/Element/Element.cs delete mode 100644 src/Connected.Components/Components/ExpansionPanel/ExpansionPanel.razor delete mode 100644 src/Connected.Components/Components/ExpansionPanel/ExpansionPanel.razor.cs delete mode 100644 src/Connected.Components/Components/ExpansionPanel/ExpansionPanels.razor delete mode 100644 src/Connected.Components/Components/ExpansionPanel/ExpansionPanels.razor.cs delete mode 100644 src/Connected.Components/Components/Field/Field.razor delete mode 100644 src/Connected.Components/Components/Field/Field.razor.cs delete mode 100644 src/Connected.Components/Components/FileUpload/FileUpload.razor delete mode 100644 src/Connected.Components/Components/FileUpload/FileUpload.razor.cs delete mode 100644 src/Connected.Components/Components/FocusTrap/FocusTrap.razor delete mode 100644 src/Connected.Components/Components/FocusTrap/FocusTrap.razor.cs delete mode 100644 src/Connected.Components/Components/Form/Form.razor delete mode 100644 src/Connected.Components/Components/Form/Form.razor.cs delete mode 100644 src/Connected.Components/Components/Form/FormComponent.cs delete mode 100644 src/Connected.Components/Components/Form/IForm.cs delete mode 100644 src/Connected.Components/Components/Form/IFormComponent.cs create mode 100644 src/Connected.Components/Components/Glyph.razor rename src/Connected.Components/{ComponentsN => Components}/Glyph.razor.cs (86%) delete mode 100644 src/Connected.Components/Components/Grid/Grid.razor delete mode 100644 src/Connected.Components/Components/Grid/Grid.razor.cs delete mode 100644 src/Connected.Components/Components/Grid/Item.razor delete mode 100644 src/Connected.Components/Components/Grid/Item.razor.cs delete mode 100644 src/Connected.Components/Components/Hidden/Hidden.razor delete mode 100644 src/Connected.Components/Components/Hidden/Hidden.razor.cs delete mode 100644 src/Connected.Components/Components/Highlighter/Highlighter.razor delete mode 100644 src/Connected.Components/Components/Highlighter/Highlighter.razor.cs delete mode 100644 src/Connected.Components/Components/Highlighter/Splitter.cs delete mode 100644 src/Connected.Components/Components/Icon/Icon.razor delete mode 100644 src/Connected.Components/Components/Icon/Icon.razor.cs delete mode 100644 src/Connected.Components/Components/Image/Image.razor delete mode 100644 src/Connected.Components/Components/Image/Image.razor.cs delete mode 100644 src/Connected.Components/Components/Input/DebouncedInput.cs delete mode 100644 src/Connected.Components/Components/Input/Input.razor delete mode 100644 src/Connected.Components/Components/Input/Input.razor.cs delete mode 100644 src/Connected.Components/Components/Input/InputAdornment.razor delete mode 100644 src/Connected.Components/Components/Input/InputBase.cs delete mode 100644 src/Connected.Components/Components/Input/InputCssHelper.cs delete mode 100644 src/Connected.Components/Components/Input/InputLabel.razor delete mode 100644 src/Connected.Components/Components/Input/InputLabel.razor.cs delete mode 100644 src/Connected.Components/Components/Input/Range.cs delete mode 100644 src/Connected.Components/Components/Input/RangeInput.razor delete mode 100644 src/Connected.Components/Components/Input/RangeInput.razor.cs create mode 100644 src/Connected.Components/Components/InputBase.cs delete mode 100644 src/Connected.Components/Components/InputControl/InputControl.razor delete mode 100644 src/Connected.Components/Components/InputControl/InputControl.razor.cs create mode 100644 src/Connected.Components/Components/InputNumber.razor create mode 100644 src/Connected.Components/Components/InputNumber.razor.cs create mode 100644 src/Connected.Components/Components/InputPassword.razor create mode 100644 src/Connected.Components/Components/InputPassword.razor.cs create mode 100644 src/Connected.Components/Components/InputText.razor create mode 100644 src/Connected.Components/Components/InputText.razor.cs delete mode 100644 src/Connected.Components/Components/ItemsControlBase.cs delete mode 100644 src/Connected.Components/Components/Layout/Layout.razor delete mode 100644 src/Connected.Components/Components/Layout/Layout.razor.cs rename src/Connected.Components/{ComponentsN => Components}/Link.razor (100%) rename src/Connected.Components/{ComponentsN => Components}/Link.razor.cs (96%) delete mode 100644 src/Connected.Components/Components/Link/Link.razor delete mode 100644 src/Connected.Components/Components/Link/Link.razor.cs delete mode 100644 src/Connected.Components/Components/Link/Link_old.razor delete mode 100644 src/Connected.Components/Components/Link/Link_old.razor.cs delete mode 100644 src/Connected.Components/Components/List/List.razor delete mode 100644 src/Connected.Components/Components/List/List.razor.cs delete mode 100644 src/Connected.Components/Components/List/ListItem.razor delete mode 100644 src/Connected.Components/Components/List/ListItem.razor.cs delete mode 100644 src/Connected.Components/Components/List/ListSubheader.razor delete mode 100644 src/Connected.Components/Components/List/ListSubheader.razor.cs delete mode 100644 src/Connected.Components/Components/Main/MainContent.razor delete mode 100644 src/Connected.Components/Components/Main/MainContent.razor.cs delete mode 100644 src/Connected.Components/Components/Mask/Mask.razor delete mode 100644 src/Connected.Components/Components/Mask/Mask.razor.cs delete mode 100644 src/Connected.Components/Components/Menu/IActivatable.cs delete mode 100644 src/Connected.Components/Components/Menu/Menu.razor delete mode 100644 src/Connected.Components/Components/Menu/Menu.razor.cs delete mode 100644 src/Connected.Components/Components/Menu/MenuItem.razor delete mode 100644 src/Connected.Components/Components/Menu/MenuItem.razor.cs delete mode 100644 src/Connected.Components/Components/MessageBox/MessageBox.razor delete mode 100644 src/Connected.Components/Components/MessageBox/MessageBox.razor.cs delete mode 100644 src/Connected.Components/Components/NavMenu/INavigationEventReceiver.cs delete mode 100644 src/Connected.Components/Components/NavMenu/NavGroup.razor delete mode 100644 src/Connected.Components/Components/NavMenu/NavGroup.razor.cs delete mode 100644 src/Connected.Components/Components/NavMenu/NavLink.razor delete mode 100644 src/Connected.Components/Components/NavMenu/NavLink.razor.cs delete mode 100644 src/Connected.Components/Components/NavMenu/NavMenu.razor delete mode 100644 src/Connected.Components/Components/NavMenu/NavMenu.razor.cs delete mode 100644 src/Connected.Components/Components/NumericField/NumericField.razor delete mode 100644 src/Connected.Components/Components/NumericField/NumericField.razor.cs delete mode 100644 src/Connected.Components/Components/Overlay/Overlay.razor delete mode 100644 src/Connected.Components/Components/Overlay/Overlay.razor.cs delete mode 100644 src/Connected.Components/Components/PageContentNavigation/PageContentNavigation.razor delete mode 100644 src/Connected.Components/Components/PageContentNavigation/PageContentNavigation.razor.cs delete mode 100644 src/Connected.Components/Components/PageContentNavigation/PageContentSection.cs delete mode 100644 src/Connected.Components/Components/Pagination/Pagination.razor delete mode 100644 src/Connected.Components/Components/Pagination/Pagination.razor.cs delete mode 100644 src/Connected.Components/Components/Paper/Paper.razor delete mode 100644 src/Connected.Components/Components/Paper/Paper.razor.cs delete mode 100644 src/Connected.Components/Components/Picker/Picker.razor delete mode 100644 src/Connected.Components/Components/Picker/Picker.razor.cs delete mode 100644 src/Connected.Components/Components/Picker/PickerContent.razor delete mode 100644 src/Connected.Components/Components/Picker/PickerToolbar.razor delete mode 100644 src/Connected.Components/Components/Popover/Popover.razor delete mode 100644 src/Connected.Components/Components/Popover/Popover.razor.cs delete mode 100644 src/Connected.Components/Components/Popover/PopoverOptions.cs delete mode 100644 src/Connected.Components/Components/Popover/PopoverProvider.razor delete mode 100644 src/Connected.Components/Components/Popover/PopoverProvider.razor.cs delete mode 100644 src/Connected.Components/Components/Popover/PopoverService.cs delete mode 100644 src/Connected.Components/Components/Progress/ProgressCircular.razor delete mode 100644 src/Connected.Components/Components/Progress/ProgressCircular.razor.cs delete mode 100644 src/Connected.Components/Components/Progress/ProgressLinear.razor delete mode 100644 src/Connected.Components/Components/Progress/ProgressLinear.razor.cs delete mode 100644 src/Connected.Components/Components/RTLProvider/RTLProvider.razor delete mode 100644 src/Connected.Components/Components/RTLProvider/RTLProvider.razor.cs delete mode 100644 src/Connected.Components/Components/Radio/IRadioGroup.cs delete mode 100644 src/Connected.Components/Components/Radio/Radio.razor delete mode 100644 src/Connected.Components/Components/Radio/Radio.razor.cs delete mode 100644 src/Connected.Components/Components/Radio/RadioGroup.razor delete mode 100644 src/Connected.Components/Components/Radio/RadioGroup.razor.cs delete mode 100644 src/Connected.Components/Components/Rating/Rating.razor delete mode 100644 src/Connected.Components/Components/Rating/Rating.razor.cs delete mode 100644 src/Connected.Components/Components/Rating/RatingItem.razor delete mode 100644 src/Connected.Components/Components/Rating/RatingItem.razor.cs delete mode 100644 src/Connected.Components/Components/Render/Render.razor delete mode 100644 src/Connected.Components/Components/ScrollToTop/ScrollToTop.razor delete mode 100644 src/Connected.Components/Components/ScrollToTop/ScrollToTop.razor.cs delete mode 100644 src/Connected.Components/Components/Select/ISelect.cs delete mode 100644 src/Connected.Components/Components/Select/Select.razor delete mode 100644 src/Connected.Components/Components/Select/Select.razor.cs delete mode 100644 src/Connected.Components/Components/Select/SelectItem.razor delete mode 100644 src/Connected.Components/Components/Select/SelectItem.razor.cs delete mode 100644 src/Connected.Components/Components/SelectItemBase.cs delete mode 100644 src/Connected.Components/Components/Skeleton/Skeleton.razor delete mode 100644 src/Connected.Components/Components/Skeleton/Skeleton.razor.cs delete mode 100644 src/Connected.Components/Components/Slider/Slider.razor delete mode 100644 src/Connected.Components/Components/Slider/Slider.razor.cs delete mode 100644 src/Connected.Components/Components/Snackbar/CommonSnackbarOptions.cs delete mode 100644 src/Connected.Components/Components/Snackbar/Defaults.cs delete mode 100644 src/Connected.Components/Components/Snackbar/ISnackbar.cs delete mode 100644 src/Connected.Components/Components/Snackbar/InternalComponents/SnackbarMessageRenderFragment.razor delete mode 100644 src/Connected.Components/Components/Snackbar/InternalComponents/SnackbarMessageText.razor delete mode 100644 src/Connected.Components/Components/Snackbar/SnackBarMessageState.cs delete mode 100644 src/Connected.Components/Components/Snackbar/Snackbar.cs delete mode 100644 src/Connected.Components/Components/Snackbar/SnackbarConfiguration.cs delete mode 100644 src/Connected.Components/Components/Snackbar/SnackbarDuplicatesBehavior.cs delete mode 100644 src/Connected.Components/Components/Snackbar/SnackbarElement.razor delete mode 100644 src/Connected.Components/Components/Snackbar/SnackbarElement.razor.cs delete mode 100644 src/Connected.Components/Components/Snackbar/SnackbarMessage.cs delete mode 100644 src/Connected.Components/Components/Snackbar/SnackbarOptions.cs delete mode 100644 src/Connected.Components/Components/Snackbar/SnackbarProvider.razor delete mode 100644 src/Connected.Components/Components/Snackbar/SnackbarProvider.razor.cs delete mode 100644 src/Connected.Components/Components/Snackbar/SnackbarService.cs delete mode 100644 src/Connected.Components/Components/Snackbar/SnackbarState.cs delete mode 100644 src/Connected.Components/Components/Spacer/Spacer.razor delete mode 100644 src/Connected.Components/Components/Sparkline/SparkLine.razor delete mode 100644 src/Connected.Components/Components/Stack/Stack.razor delete mode 100644 src/Connected.Components/Components/Stack/Stack.razor.cs delete mode 100644 src/Connected.Components/Components/SwipeArea/SwipeArea.razor delete mode 100644 src/Connected.Components/Components/SwipeArea/SwipeArea.razor.cs delete mode 100644 src/Connected.Components/Components/Switch/Switch.razor delete mode 100644 src/Connected.Components/Components/Switch/Switch.razor.cs delete mode 100644 src/Connected.Components/Components/Table/AvatarColumn.razor delete mode 100644 src/Connected.Components/Components/Table/EditButtonContext.cs delete mode 100644 src/Connected.Components/Components/Table/SortableColumn.razor delete mode 100644 src/Connected.Components/Components/Table/SortableColumn.razor.cs delete mode 100644 src/Connected.Components/Components/Table/TFootRow.razor delete mode 100644 src/Connected.Components/Components/Table/TFootRow.razor.cs delete mode 100644 src/Connected.Components/Components/Table/THeadRow.razor delete mode 100644 src/Connected.Components/Components/Table/THeadRow.razor.cs delete mode 100644 src/Connected.Components/Components/Table/Table.razor delete mode 100644 src/Connected.Components/Components/Table/Table.razor.cs delete mode 100644 src/Connected.Components/Components/Table/TableBase.cs delete mode 100644 src/Connected.Components/Components/Table/TableButtonPosition.cs delete mode 100644 src/Connected.Components/Components/Table/TableColumn.razor delete mode 100644 src/Connected.Components/Components/Table/TableColumn.razor.cs delete mode 100644 src/Connected.Components/Components/Table/TableContext.cs delete mode 100644 src/Connected.Components/Components/Table/TableEditTrigger.cs delete mode 100644 src/Connected.Components/Components/Table/TableGroupData.cs delete mode 100644 src/Connected.Components/Components/Table/TableGroupDefinition.cs delete mode 100644 src/Connected.Components/Components/Table/TableGroupRow.razor delete mode 100644 src/Connected.Components/Components/Table/TableGroupRow.razor.cs delete mode 100644 src/Connected.Components/Components/Table/TablePager.razor delete mode 100644 src/Connected.Components/Components/Table/TablePager.razor.cs delete mode 100644 src/Connected.Components/Components/Table/TableRowClickEventArgs.cs delete mode 100644 src/Connected.Components/Components/Table/TableRowValidator.cs delete mode 100644 src/Connected.Components/Components/Table/TableSortLabel.razor delete mode 100644 src/Connected.Components/Components/Table/TableSortLabel.razor.cs delete mode 100644 src/Connected.Components/Components/Table/TableState.cs delete mode 100644 src/Connected.Components/Components/Table/Td.razor delete mode 100644 src/Connected.Components/Components/Table/Td.razor.cs delete mode 100644 src/Connected.Components/Components/Table/TemplateColumn.razor delete mode 100644 src/Connected.Components/Components/Table/Th.razor delete mode 100644 src/Connected.Components/Components/Table/Th.razor.cs delete mode 100644 src/Connected.Components/Components/Table/Tr.razor delete mode 100644 src/Connected.Components/Components/Table/Tr.razor.cs delete mode 100644 src/Connected.Components/Components/TableSimple/SimpleTable.razor delete mode 100644 src/Connected.Components/Components/TableSimple/SimpleTable.razor.cs delete mode 100644 src/Connected.Components/Components/Tabs/DynamicTabs.razor delete mode 100644 src/Connected.Components/Components/Tabs/DynamicTabs.razor.cs delete mode 100644 src/Connected.Components/Components/Tabs/TabHeaderPosition.cs delete mode 100644 src/Connected.Components/Components/Tabs/TabPanel.razor delete mode 100644 src/Connected.Components/Components/Tabs/TabPanel.razor.cs delete mode 100644 src/Connected.Components/Components/Tabs/Tabs.razor delete mode 100644 src/Connected.Components/Components/Tabs/Tabs.razor.cs delete mode 100644 src/Connected.Components/Components/TextField/TextField.razor delete mode 100644 src/Connected.Components/Components/TextField/TextField.razor.cs delete mode 100644 src/Connected.Components/Components/ThemeProvider/ThemeProvider.razor delete mode 100644 src/Connected.Components/Components/ThemeProvider/ThemeProvider.razor.cs delete mode 100644 src/Connected.Components/Components/TimePicker/TimePicker.razor delete mode 100644 src/Connected.Components/Components/TimePicker/TimePicker.razor.cs delete mode 100644 src/Connected.Components/Components/Timeline/Timeline.razor delete mode 100644 src/Connected.Components/Components/Timeline/Timeline.razor.cs delete mode 100644 src/Connected.Components/Components/Timeline/TimelineItem.razor delete mode 100644 src/Connected.Components/Components/Timeline/TimelineItem.razor.cs delete mode 100644 src/Connected.Components/Components/ToolBar/ToolBar.razor delete mode 100644 src/Connected.Components/Components/Tooltip/Tooltip.razor delete mode 100644 src/Connected.Components/Components/Tooltip/Tooltip.razor.cs delete mode 100644 src/Connected.Components/Components/TreeView/TreeView.razor delete mode 100644 src/Connected.Components/Components/TreeView/TreeView.razor.cs delete mode 100644 src/Connected.Components/Components/TreeView/TreeViewItem.razor delete mode 100644 src/Connected.Components/Components/TreeView/TreeViewItem.razor.cs delete mode 100644 src/Connected.Components/Components/TreeView/TreeViewItemToggleButton.razor delete mode 100644 src/Connected.Components/Components/Typography/TextContent.razor delete mode 100644 src/Connected.Components/Components/Typography/TextContent.razor.cs delete mode 100644 src/Connected.Components/Components/UIComponent.cs delete mode 100644 src/Connected.Components/Components/Virtualize/Virtualize.razor delete mode 100644 src/Connected.Components/Components/Virtualize/Virtualize.razor.cs delete mode 100644 src/Connected.Components/ComponentsN/Button.razor delete mode 100644 src/Connected.Components/ComponentsN/Button.razor.cs delete mode 100644 src/Connected.Components/ComponentsN/Glyph.razor delete mode 100644 src/Connected.Components/ComponentsN/ISelect.cs delete mode 100644 src/Connected.Components/ComponentsN/InputDate.razor delete mode 100644 src/Connected.Components/ComponentsN/InputDate.razor.cs delete mode 100644 src/Connected.Components/ComponentsN/InputNumber.razor delete mode 100644 src/Connected.Components/ComponentsN/InputNumber.razor.cs delete mode 100644 src/Connected.Components/ComponentsN/InputText.razor delete mode 100644 src/Connected.Components/ComponentsN/InputText.razor.cs delete mode 100644 src/Connected.Components/ComponentsN/Select.razor delete mode 100644 src/Connected.Components/ComponentsN/Select.razor.cs delete mode 100644 src/Connected.Components/ComponentsN/SelectItem.razor delete mode 100644 src/Connected.Components/ComponentsN/SelectItem.razor.cs delete mode 100644 src/Connected.Components/ComponentsN/ToggleButton.razor delete mode 100644 src/Connected.Components/ComponentsN/ToggleButton.razor.cs delete mode 100644 src/Connected.Components/Enums/Adornment.cs delete mode 100644 src/Connected.Components/Enums/Align.cs delete mode 100644 src/Connected.Components/Enums/AlignItems.cs delete mode 100644 src/Connected.Components/Enums/Alignment.cs delete mode 100644 src/Connected.Components/Enums/Anchor.cs delete mode 100644 src/Connected.Components/Enums/Animation.cs delete mode 100644 src/Connected.Components/Enums/ButtonType.cs delete mode 100644 src/Connected.Components/Enums/ColorPickerMode.cs delete mode 100644 src/Connected.Components/Enums/ColorPickerView.cs delete mode 100644 src/Connected.Components/Enums/ContentNavigationExpandBehaviour.cs delete mode 100644 src/Connected.Components/Enums/DefaultFocus.cs delete mode 100644 src/Connected.Components/Enums/Direction.cs delete mode 100644 src/Connected.Components/Enums/DividerType.cs delete mode 100644 src/Connected.Components/Enums/DrawerClipMode.cs delete mode 100644 src/Connected.Components/Enums/DrawerVariant.cs delete mode 100644 src/Connected.Components/Enums/Edge.cs delete mode 100644 src/Connected.Components/Enums/HorizontalAlignment.cs delete mode 100644 src/Connected.Components/Enums/InputMode.cs delete mode 100644 src/Connected.Components/Enums/Justify.cs delete mode 100644 src/Connected.Components/Enums/LabelPosition.cs delete mode 100644 src/Connected.Components/Enums/LinkTarget.cs delete mode 100644 src/Connected.Components/Enums/Margin.cs delete mode 100644 src/Connected.Components/Enums/MaxWidth.cs delete mode 100644 src/Connected.Components/Enums/MouseEvent.cs delete mode 100644 src/Connected.Components/Enums/ObjectFit.cs delete mode 100644 src/Connected.Components/Enums/OpenToView.cs delete mode 100644 src/Connected.Components/Enums/Orientation.cs delete mode 100644 src/Connected.Components/Enums/Origin.cs delete mode 100644 src/Connected.Components/Enums/OverflowBehavior.cs delete mode 100644 src/Connected.Components/Enums/Page.cs delete mode 100644 src/Connected.Components/Enums/PickerVariant.cs delete mode 100644 src/Connected.Components/Enums/Placement.cs delete mode 100644 src/Connected.Components/Enums/ResizeMode.cs delete mode 100644 src/Connected.Components/Enums/SkeletonType.cs delete mode 100644 src/Connected.Components/Enums/SortDirection.cs delete mode 100644 src/Connected.Components/Enums/SortMode.cs delete mode 100644 src/Connected.Components/Enums/SwipeDirection.cs delete mode 100644 src/Connected.Components/Enums/TimeEditMode.cs delete mode 100644 src/Connected.Components/Enums/TimelineAlign.cs delete mode 100644 src/Connected.Components/Enums/TimelineOrientation.cs delete mode 100644 src/Connected.Components/Enums/TimelinePosition.cs delete mode 100644 src/Connected.Components/Enums/Transition.cs delete mode 100644 src/Connected.Components/Enums/Typo.cs delete mode 100644 src/Connected.Components/Enums/Underline.cs delete mode 100644 src/Connected.Components/Enums/VerticalAlignment.cs delete mode 100644 src/Connected.Components/Enums/Width.cs delete mode 100644 src/Connected.Components/Extensions/DataGridExtensions.cs delete mode 100644 src/Connected.Components/Extensions/DateTimeExtensions.cs delete mode 100644 src/Connected.Components/Extensions/DoubleExtentions.cs delete mode 100644 src/Connected.Components/Extensions/ElementReferenceExtensions.cs delete mode 100644 src/Connected.Components/Extensions/EnumExtensions.cs delete mode 100644 src/Connected.Components/Extensions/ExpressionExtensions.cs delete mode 100644 src/Connected.Components/Extensions/KeepInRangeExtensions.cs delete mode 100644 src/Connected.Components/Extensions/MathExtensions.cs delete mode 100644 src/Connected.Components/Extensions/ObjectExtensions.cs delete mode 100644 src/Connected.Components/Extensions/ParameterViewExtensions.cs delete mode 100644 src/Connected.Components/Extensions/StringExtensions.cs delete mode 100644 src/Connected.Components/Extensions/TableExtensions.cs delete mode 100644 src/Connected.Components/Extensions/TaskExtensions.cs delete mode 100644 src/Connected.Components/Extensions/TimeSpanExtensions.cs delete mode 100644 src/Connected.Components/Extensions/WebUnitsExtensions.cs delete mode 100644 src/Connected.Components/Icons/Custom/Brands.cs delete mode 100644 src/Connected.Components/Icons/Custom/FileFormats.cs delete mode 100644 src/Connected.Components/Icons/Custom/Uncategorized.cs rename src/Connected.Components/Icons/{Material => }/Filled.cs (100%) delete mode 100644 src/Connected.Components/Icons/Material/_Obsolete.cs delete mode 100644 src/Connected.Components/Icons/Obsolete/Filled.cs delete mode 100644 src/Connected.Components/Icons/Obsolete/Outlined.cs delete mode 100644 src/Connected.Components/Icons/Obsolete/Rounded.cs delete mode 100644 src/Connected.Components/Icons/Obsolete/Sharp.cs delete mode 100644 src/Connected.Components/Icons/Obsolete/TwoTone.cs delete mode 100644 src/Connected.Components/Icons/Obsolete/_Obsolete.cs rename src/Connected.Components/Icons/{Material => }/Outlined.cs (100%) rename src/Connected.Components/Icons/{Material => }/Rounded.cs (100%) rename src/Connected.Components/Icons/{Material => }/Sharp.cs (100%) rename src/Connected.Components/Icons/{Material => }/TwoTone.cs (100%) delete mode 100644 src/Connected.Components/Interop/BoundingClientRect.cs delete mode 100644 src/Connected.Components/Interop/EventHandlers.cs delete mode 100644 src/Connected.Components/Services/BrowserWindowSizeProvider.cs delete mode 100644 src/Connected.Components/Services/DialogResult.cs delete mode 100644 src/Connected.Components/Services/DialogService.cs delete mode 100644 src/Connected.Components/Services/EventManager/EventManager.cs delete mode 100644 src/Connected.Components/Services/EventManager/WebEventJsonContext.cs delete mode 100644 src/Connected.Components/Services/IIJSRuntimeExtentions.cs delete mode 100644 src/Connected.Components/Services/JsApiService.cs delete mode 100644 src/Connected.Components/Services/JsEvent/JsEvent.cs delete mode 100644 src/Connected.Components/Services/JsEvent/JsEventFactory.cs delete mode 100644 src/Connected.Components/Services/JsEvent/JsEventOptions.cs delete mode 100644 src/Connected.Components/Services/KeyInterceptor/IKeyInterceptor.cs delete mode 100644 src/Connected.Components/Services/KeyInterceptor/KeyInterceptor.cs delete mode 100644 src/Connected.Components/Services/KeyInterceptor/KeyInterceptorFactory.cs delete mode 100644 src/Connected.Components/Services/KeyInterceptor/KeyInterceptorOptions.cs delete mode 100644 src/Connected.Components/Services/ReseizeObserver/IResizeObserver.cs delete mode 100644 src/Connected.Components/Services/ReseizeObserver/IResizeObserverFactory.cs delete mode 100644 src/Connected.Components/Services/ReseizeObserver/ResizeObserver.cs delete mode 100644 src/Connected.Components/Services/ReseizeObserver/ResizeObserverFactory.cs delete mode 100644 src/Connected.Components/Services/ReseizeObserver/ResizeObserverOptions.cs delete mode 100644 src/Connected.Components/Services/ResizeListener/Breakpoint.cs delete mode 100644 src/Connected.Components/Services/ResizeListener/BreakpointService .cs delete mode 100644 src/Connected.Components/Services/ResizeListener/BrowserWindowSize.cs delete mode 100644 src/Connected.Components/Services/ResizeListener/ResizeBasedService.cs delete mode 100644 src/Connected.Components/Services/ResizeListener/ResizeListenerService.cs delete mode 100644 src/Connected.Components/Services/ResizeListener/ResizeOptions.cs delete mode 100644 src/Connected.Components/Services/ResizeListener/ResizeService.cs delete mode 100644 src/Connected.Components/Services/ResizeListener/SubscriptionInfo.cs delete mode 100644 src/Connected.Components/Services/Scroll/ScrollEventArgs.cs delete mode 100644 src/Connected.Components/Services/Scroll/ScrollListener.cs delete mode 100644 src/Connected.Components/Services/Scroll/ScrollListenerFactory.cs delete mode 100644 src/Connected.Components/Services/Scroll/ScrollManager.cs delete mode 100644 src/Connected.Components/Services/Scroll/ScrollManagerException.cs delete mode 100644 src/Connected.Components/Services/Scroll/ScrollOptions.cs delete mode 100644 src/Connected.Components/Services/Scroll/ScrollSpy.cs delete mode 100644 src/Connected.Components/Services/Scroll/ScrollSpyFactory.cs delete mode 100644 src/Connected.Components/Services/ServiceCollectionExtensions.cs delete mode 100644 src/Connected.Components/Services/ServiceConfiguration.cs delete mode 100644 src/Connected.Components/Styles/abstracts/_colors.scss delete mode 100644 src/Connected.Components/Styles/abstracts/_mixins.scss delete mode 100644 src/Connected.Components/Styles/abstracts/_variables.scss delete mode 100644 src/Connected.Components/Styles/components/_alert.scss delete mode 100644 src/Connected.Components/Styles/components/_avatar.scss delete mode 100644 src/Connected.Components/Styles/components/_badge.scss delete mode 100644 src/Connected.Components/Styles/components/_breadcrumbs.scss delete mode 100644 src/Connected.Components/Styles/components/_button.scss delete mode 100644 src/Connected.Components/Styles/components/_buttongroup.scss create mode 100644 src/Connected.Components/Styles/components/_buttons.scss delete mode 100644 src/Connected.Components/Styles/components/_card.scss delete mode 100644 src/Connected.Components/Styles/components/_carousel.scss delete mode 100644 src/Connected.Components/Styles/components/_charts.scss delete mode 100644 src/Connected.Components/Styles/components/_chip.scss delete mode 100644 src/Connected.Components/Styles/components/_collapse.scss delete mode 100644 src/Connected.Components/Styles/components/_datagrid.scss delete mode 100644 src/Connected.Components/Styles/components/_dialog.scss delete mode 100644 src/Connected.Components/Styles/components/_divider.scss delete mode 100644 src/Connected.Components/Styles/components/_dropzone.scss delete mode 100644 src/Connected.Components/Styles/components/_expansionpanel.scss delete mode 100644 src/Connected.Components/Styles/components/_fab.scss delete mode 100644 src/Connected.Components/Styles/components/_field.scss delete mode 100644 src/Connected.Components/Styles/components/_fileupload.scss delete mode 100644 src/Connected.Components/Styles/components/_form.scss delete mode 100644 src/Connected.Components/Styles/components/_iconbutton.scss delete mode 100644 src/Connected.Components/Styles/components/_icons.scss delete mode 100644 src/Connected.Components/Styles/components/_image.scss create mode 100644 src/Connected.Components/Styles/components/_index.scss delete mode 100644 src/Connected.Components/Styles/components/_input.scss delete mode 100644 src/Connected.Components/Styles/components/_inputcontrol.scss delete mode 100644 src/Connected.Components/Styles/components/_inputlabel.scss create mode 100644 src/Connected.Components/Styles/components/_inputs.scss delete mode 100644 src/Connected.Components/Styles/components/_layout.scss delete mode 100644 src/Connected.Components/Styles/components/_link.scss delete mode 100644 src/Connected.Components/Styles/components/_list.scss delete mode 100644 src/Connected.Components/Styles/components/_markdowncode.scss delete mode 100644 src/Connected.Components/Styles/components/_menu.scss delete mode 100644 src/Connected.Components/Styles/components/_navmenu.scss delete mode 100644 src/Connected.Components/Styles/components/_overlay.scss delete mode 100644 src/Connected.Components/Styles/components/_pagecontentnavigation.scss delete mode 100644 src/Connected.Components/Styles/components/_pagination.scss delete mode 100644 src/Connected.Components/Styles/components/_paper.scss delete mode 100644 src/Connected.Components/Styles/components/_picker.scss delete mode 100644 src/Connected.Components/Styles/components/_pickercolor.scss delete mode 100644 src/Connected.Components/Styles/components/_pickerdate.scss delete mode 100644 src/Connected.Components/Styles/components/_pickertime.scss delete mode 100644 src/Connected.Components/Styles/components/_popover.scss delete mode 100644 src/Connected.Components/Styles/components/_progresscircular.scss delete mode 100644 src/Connected.Components/Styles/components/_progresslinear.scss delete mode 100644 src/Connected.Components/Styles/components/_rating.scss delete mode 100644 src/Connected.Components/Styles/components/_select.scss create mode 100644 src/Connected.Components/Styles/components/_sidebar.scss delete mode 100644 src/Connected.Components/Styles/components/_simpletable.scss delete mode 100644 src/Connected.Components/Styles/components/_skeleton.scss delete mode 100644 src/Connected.Components/Styles/components/_slider.scss delete mode 100644 src/Connected.Components/Styles/components/_snackbar.scss delete mode 100644 src/Connected.Components/Styles/components/_switch.scss delete mode 100644 src/Connected.Components/Styles/components/_table.scss delete mode 100644 src/Connected.Components/Styles/components/_tabs.scss delete mode 100644 src/Connected.Components/Styles/components/_timeline.scss delete mode 100644 src/Connected.Components/Styles/components/_toolbar.scss delete mode 100644 src/Connected.Components/Styles/components/_tooltip.scss delete mode 100644 src/Connected.Components/Styles/components/_treeview.scss delete mode 100644 src/Connected.Components/Styles/components/_typography.scss delete mode 100644 src/Connected.Components/Styles/core/_animations.scss delete mode 100644 src/Connected.Components/Styles/core/_base.scss delete mode 100644 src/Connected.Components/Styles/core/_blazor.scss delete mode 100644 src/Connected.Components/Styles/core/_colors.scss delete mode 100644 src/Connected.Components/Styles/core/_elevation.scss delete mode 100644 src/Connected.Components/Styles/core/_reset.scss delete mode 100644 src/Connected.Components/Styles/core/_ripple.scss delete mode 100644 src/Connected.Components/Styles/core/_rtl.scss create mode 100644 src/Connected.Components/Styles/globals/_core.scss create mode 100644 src/Connected.Components/Styles/globals/_index.scss create mode 100644 src/Connected.Components/Styles/globals/_reset.scss create mode 100644 src/Connected.Components/Styles/globals/_typography.scss create mode 100644 src/Connected.Components/Styles/globals/_variables.scss delete mode 100644 src/Connected.Components/Styles/layout/_appbar.scss delete mode 100644 src/Connected.Components/Styles/layout/_container.scss create mode 100644 src/Connected.Components/Styles/layout/_css_documentation.scss create mode 100644 src/Connected.Components/Styles/layout/_document.scss delete mode 100644 src/Connected.Components/Styles/layout/_drawer.scss create mode 100644 src/Connected.Components/Styles/layout/_index.scss delete mode 100644 src/Connected.Components/Styles/layout/_main.scss delete mode 100644 src/Connected.Components/Styles/layout/_scroll.scss create mode 100644 src/Connected.Components/Styles/util/_breakpoints.scss create mode 100644 src/Connected.Components/Styles/util/_colors.scss create mode 100644 src/Connected.Components/Styles/util/_functions.scss create mode 100644 src/Connected.Components/Styles/util/_index.scss create mode 100644 src/Connected.Components/Styles/util/_utilities.scss delete mode 100644 src/Connected.Components/Styles/utilities/_index.scss delete mode 100644 src/Connected.Components/Styles/utilities/_obsolete.scss delete mode 100644 src/Connected.Components/Styles/utilities/borders/_border-radius.scss delete mode 100644 src/Connected.Components/Styles/utilities/borders/_border-style.scss delete mode 100644 src/Connected.Components/Styles/utilities/borders/_border-width.scss delete mode 100644 src/Connected.Components/Styles/utilities/borders/_outline.scss delete mode 100644 src/Connected.Components/Styles/utilities/flexbox/_align-content.scss delete mode 100644 src/Connected.Components/Styles/utilities/flexbox/_align-items.scss delete mode 100644 src/Connected.Components/Styles/utilities/flexbox/_align-self.scss delete mode 100644 src/Connected.Components/Styles/utilities/flexbox/_flex-direction.scss delete mode 100644 src/Connected.Components/Styles/utilities/flexbox/_flex-grow.scss delete mode 100644 src/Connected.Components/Styles/utilities/flexbox/_flex-shrink.scss delete mode 100644 src/Connected.Components/Styles/utilities/flexbox/_flex-wrap.scss delete mode 100644 src/Connected.Components/Styles/utilities/flexbox/_flex.scss delete mode 100644 src/Connected.Components/Styles/utilities/flexbox/_gap.scss delete mode 100644 src/Connected.Components/Styles/utilities/flexbox/_index.scss delete mode 100644 src/Connected.Components/Styles/utilities/flexbox/_justify-content.scss delete mode 100644 src/Connected.Components/Styles/utilities/flexbox/_order.scss delete mode 100644 src/Connected.Components/Styles/utilities/interactivity/_cursor.scss delete mode 100644 src/Connected.Components/Styles/utilities/interactivity/_pointerevents.scss delete mode 100644 src/Connected.Components/Styles/utilities/layout/_display.scss delete mode 100644 src/Connected.Components/Styles/utilities/layout/_object-fit.scss delete mode 100644 src/Connected.Components/Styles/utilities/layout/_object-position.scss delete mode 100644 src/Connected.Components/Styles/utilities/layout/_overflow.scss delete mode 100644 src/Connected.Components/Styles/utilities/layout/_position.scss delete mode 100644 src/Connected.Components/Styles/utilities/layout/_visibility.scss delete mode 100644 src/Connected.Components/Styles/utilities/layout/_zindex.scss delete mode 100644 src/Connected.Components/Styles/utilities/spacing/_spacing.scss delete mode 100644 src/Connected.Components/TScripts/mudAAAlicense.js delete mode 100644 src/Connected.Components/TScripts/mudDragAndDrop.js delete mode 100644 src/Connected.Components/TScripts/mudElementReference.js delete mode 100644 src/Connected.Components/TScripts/mudEventManager.js delete mode 100644 src/Connected.Components/TScripts/mudHelpers.js delete mode 100644 src/Connected.Components/TScripts/mudJsEvent.js delete mode 100644 src/Connected.Components/TScripts/mudKeyInterceptor.js delete mode 100644 src/Connected.Components/TScripts/mudPopover.js delete mode 100644 src/Connected.Components/TScripts/mudResizeListener.js delete mode 100644 src/Connected.Components/TScripts/mudResizeObserver.js delete mode 100644 src/Connected.Components/TScripts/mudScrollListener.js delete mode 100644 src/Connected.Components/TScripts/mudScrollManager.js delete mode 100644 src/Connected.Components/TScripts/mudScrollSpy.js delete mode 100644 src/Connected.Components/TScripts/mudThemeProvider.js delete mode 100644 src/Connected.Components/TScripts/mudWindow.js delete mode 100644 src/Connected.Components/Themes/Models/Breakpoints.cs delete mode 100644 src/Connected.Components/Themes/Models/LayoutProperties.cs delete mode 100644 src/Connected.Components/Themes/Models/Palette.cs delete mode 100644 src/Connected.Components/Themes/Models/PaletteDark.cs delete mode 100644 src/Connected.Components/Themes/Models/Shadow.cs delete mode 100644 src/Connected.Components/Themes/Models/Typography.cs delete mode 100644 src/Connected.Components/Themes/Models/Z-Index.cs delete mode 100644 src/Connected.Components/Themes/Theme.cs delete mode 100644 src/Connected.Components/Utilities/ActivatableCallback.cs delete mode 100644 src/Connected.Components/Utilities/BindingConverters/BoolConverter.cs delete mode 100644 src/Connected.Components/Utilities/BindingConverters/Converter.cs delete mode 100644 src/Connected.Components/Utilities/BindingConverters/Converters.cs delete mode 100644 src/Connected.Components/Utilities/BindingConverters/DateConverter.cs delete mode 100644 src/Connected.Components/Utilities/BindingConverters/DefaultConverter.cs delete mode 100644 src/Connected.Components/Utilities/BindingConverters/IsoDateConverter.cs delete mode 100644 src/Connected.Components/Utilities/BindingConverters/NumericConverter.cs delete mode 100644 src/Connected.Components/Utilities/BindingConverters/RangeConverter.cs delete mode 100644 src/Connected.Components/Utilities/CodeMessage.cs delete mode 100644 src/Connected.Components/Utilities/Color.cs delete mode 100644 src/Connected.Components/Utilities/ColorManager.cs delete mode 100644 src/Connected.Components/Utilities/ColorTransformation.cs delete mode 100644 src/Connected.Components/Utilities/EventUtil.cs delete mode 100644 src/Connected.Components/Utilities/Exceptions/GenericTypeMismatchException.cs delete mode 100644 src/Connected.Components/Utilities/FormFieldChangedEventArgs.cs delete mode 100644 src/Connected.Components/Utilities/HashSetExtensions.cs delete mode 100644 src/Connected.Components/Utilities/MaskAlgorithms/BaseMask.cs delete mode 100644 src/Connected.Components/Utilities/MaskAlgorithms/BlockMask.cs delete mode 100644 src/Connected.Components/Utilities/MaskAlgorithms/DateMask.cs delete mode 100644 src/Connected.Components/Utilities/MaskAlgorithms/IMask.cs delete mode 100644 src/Connected.Components/Utilities/MaskAlgorithms/MaskChar.cs delete mode 100644 src/Connected.Components/Utilities/MaskAlgorithms/MultiMask.cs delete mode 100644 src/Connected.Components/Utilities/MaskAlgorithms/PatternMask.cs delete mode 100644 src/Connected.Components/Utilities/MaskAlgorithms/RegexMask.cs delete mode 100644 src/Connected.Components/Utilities/RuntimeLocation.cs delete mode 100644 src/Connected.Components/Utilities/SortingAssistent.cs diff --git a/Connected.Components.sln b/Connected.Components.sln index 6507c50..4b866f4 100644 --- a/Connected.Components.sln +++ b/Connected.Components.sln @@ -7,7 +7,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Components", "src EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Components.Showcase", "src\Connected.Components.Showcase\Connected.Components.Showcase.csproj", "{EBB24FD8-A554-427C-A93B-B48C047D34CC}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Components.Showcase.Runner", "Connected.Components.Showcase.Runner\Connected.Components.Showcase.Runner.csproj", "{B8E7BCC3-3F99-4222-B65E-9ABD3B18DAF7}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Components.Showcase.Runner", "src\Connected.Components.Showcase.Runner\Connected.Components.Showcase.Runner.csproj", "{347B526C-39A0-43CE-B0F9-79E61B4897C6}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -23,10 +23,10 @@ Global {EBB24FD8-A554-427C-A93B-B48C047D34CC}.Debug|Any CPU.Build.0 = Debug|Any CPU {EBB24FD8-A554-427C-A93B-B48C047D34CC}.Release|Any CPU.ActiveCfg = Release|Any CPU {EBB24FD8-A554-427C-A93B-B48C047D34CC}.Release|Any CPU.Build.0 = Release|Any CPU - {B8E7BCC3-3F99-4222-B65E-9ABD3B18DAF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B8E7BCC3-3F99-4222-B65E-9ABD3B18DAF7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B8E7BCC3-3F99-4222-B65E-9ABD3B18DAF7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B8E7BCC3-3F99-4222-B65E-9ABD3B18DAF7}.Release|Any CPU.Build.0 = Release|Any CPU + {347B526C-39A0-43CE-B0F9-79E61B4897C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {347B526C-39A0-43CE-B0F9-79E61B4897C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {347B526C-39A0-43CE-B0F9-79E61B4897C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {347B526C-39A0-43CE-B0F9-79E61B4897C6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/Connected.Components.Showcase.Runner/App.razor b/src/Connected.Components.Showcase.Runner/App.razor new file mode 100644 index 0000000..48f4750 --- /dev/null +++ b/src/Connected.Components.Showcase.Runner/App.razor @@ -0,0 +1,20 @@ +@using System.Reflection; + + + + + + + Not found + +

Sorry, there's nothing at this address.

+
+
+
+ +@code { + private List additionalAssemblies { get; set; } = new() + { + //typeof(Connected.Components.Showcase.Pages.AlertShowcase).Assembly + }; +} \ No newline at end of file diff --git a/src/Connected.Components.Showcase.Runner/Connected.Components.Showcase.Runner.csproj b/src/Connected.Components.Showcase.Runner/Connected.Components.Showcase.Runner.csproj new file mode 100644 index 0000000..aeb38e0 --- /dev/null +++ b/src/Connected.Components.Showcase.Runner/Connected.Components.Showcase.Runner.csproj @@ -0,0 +1,18 @@ + + + + net7.0 + enable + enable + + + + + + + + + + + + diff --git a/src/Connected.Components.Showcase.Runner/MainLayout.razor b/src/Connected.Components.Showcase.Runner/MainLayout.razor new file mode 100644 index 0000000..de2be6c --- /dev/null +++ b/src/Connected.Components.Showcase.Runner/MainLayout.razor @@ -0,0 +1,5 @@ +@inherits LayoutComponentBase + +
+ @Body +
diff --git a/src/Connected.Components.Showcase.Runner/Pages/Demo.razor b/src/Connected.Components.Showcase.Runner/Pages/Demo.razor new file mode 100644 index 0000000..f59846a --- /dev/null +++ b/src/Connected.Components.Showcase.Runner/Pages/Demo.razor @@ -0,0 +1,731 @@ +@page "/demo" + + +
+ + + + + +
+ + +
+ +
+
+ Pick a color scheme + + + + + + + + + +
+
+ +
+ +
+ + Open Sidebar + +
+

Borders

+

Use border utilities to quickly style the border, border color and border-radius of an element. + Great for images, buttons, or any other element. Responsive classes are available that use the + same viewport width breakpoints as the grid system. +

+
+

Position

+
+
b-1
+ bt-1 + br-1 + bb-1 + bl-1 + bx-1 + by-1 +
+
+
+
+

Color

+
+ b-1
b-c-core
+ b-1
b-c-primary
+ b-1
b-c-secondary
+ b-1
b-c-success
+ b-1
b-c-info
+ b-1
b-c-warning
+ b-1
b-c-danger
+ b-1
b-c-white
+ b-1
b-c-light
+ b-1
b-c-dark
+ b-1
b-c-black
+
+
+
+
+

Border-radius

+
+ b-1 b-r-0 + b-1 b-r-1 + b-1 b-r-2 + b-1 b-r-3 + b-1 b-r-4 + b-1 b-r-5 + b-1 b-r-circle + b-1 b-r-pill +
+
+
+ + +
+

Colors

+

Convey meaning through color with a handful of color utility classes. Includes support for + styling links with hover states, too. +

+

Color

+
+ text-core + text-primary + text-secondary + text-success + text-info + text-warning + text-danger + text-white + text-light + text-dark + text-black +
+ +
+
+ 
+<span class="text-core">text-core</span>
+<span class="text-primary">text-primary</span>
+<span class="text-secondary">text-secondary</span>
+<span class="text-success">text-success</span>
+<span class="text-info">text-info</span>
+<span class="text-warning">text-warning</span>
+<span class="text-danger">text-danger</span>
+<span class="text-white">text-white</span>
+<span class="text-light">text-light</span>
+<span class="text-dark">text-dark</span>
+<span class="text-black">text-black</span>
+
+
+
+

Background color

+
+
bg-core
+
bg-primary
+
bg-secondary
+
bg-success
+
bg-info
+
bg-warning
+
bg-danger
+
bg-white
+
bg-light
+
bg-dark
+
bg-black
+
+
+ +

Link color

+ +
+ + +
+

Text

+

Documentation and examples for common text utilities to control size, alignment, wrapping, + weight, and + more. +

+ + +

Text sizes

+
+
+
This is h5
+

text-small
This is small font + size
+ Lorem + ipsum dolor sit, amet + consectetur + adipisicing + elit. Eum quis neque ullam, eos eaque nam voluptate veniam dolor ex ratione? +

+
+
+

This is h4

+

No class required
This is base font size
Lorem + ipsum + dolor sit amet consectetur, + adipisicing elit. + Explicabo modi dicta eveniet quia, repudiandae perspiciatis omnis vitae nihil vero + ratione. +

+
+
+

This is h3

+

text-medium
This is medium font +
+ Lorem + ipsum + dolor sit, amet consectetur + adipisicing + elit. Alias praesentium quo est pariatur sed nobis maiores rem aperiam ut voluptas? +

+
+
+

This is h2

+

text-large
This is large font +
+ Lorem + ipsum + dolor sit, amet consectetur + adipisicing + elit. Obcaecati nihil totam, modi minus excepturi laboriosam maiores. Provident quos est + maiores. +

+
+
+

This is h1

+

text-extralarge
This is + extra + large + font
+ Lorem + ipsum dolor sit amet, + consectetur adipisicing elit. Beatae, modi! +

+
+
+

text-sm-medium +
Medium size text on viewports sized SM (small) or wider. +

+
+
+

text-md-medium +
Medium size text on viewports sized MD (medium) or wider. +

+
+
+

text-lg-medium +
Medium size text on viewports sized LG (large) or wider. +

+
+
+

text-xl-medium +
Medium size text on viewports sized XL (extra-large) or wider. +

+
+
+ +
+

Text alignment

+

Easily realign text to components with text alignment classes. +

+
+
+

text-left

+

Left aligned text on all viewport sizes

+
+
+
+

text-center

+

Center aligned text on all viewport sizes.

+
+
+
+

text-right

+

Right aligned text on all viewport sizes.

+
+
+
+

text-justify

+

Justified text on all viewport sizes. Lorem ipsum dolor sit, amet consectetur + adipisicing elit. Temporibus consequatur nisi amet modi in voluptatum facere + reprehenderit, aut assumenda. Velit.

+
+
+
+

text-sm-right

+

Right aligned text on viewports sized SM (small) or wider.

+
+
+
+

text-md-right

+

Right aligned text on viewports sized MD (medium) or wider.

+
+
+
+

text-lg-right

+

Right aligned text on viewports sized LG (large) or wider.

+
+
+
+

text-xl-right

+

Right aligned text on viewports sized XL (extra-large) or wider.

+
+
+
+ + +
+

Font weight

+

Quickly change the weight (boldness). +

+
+

text-thin

+
+

This is thin text

+
+
+

text-regular

+
+

This is normal weight text - no class required

+
+
+

text-semibold

+
+

This is semibold text

+
+
+

text-bold

+
+

This is bold text

+
+
+

text-extrabold

+
+

This is extra bold text

+
+
+

text-sm-bold

+
+

Bold text on viewports sized SM (small) or wider.

+
+
+
+ + +
+

Text transform

+

Transform text in components with text capitalization classes or italicize text. +

+
+

text-italic

+
+

This is italic text

+
+
+

text-lowercase

+
+

This is lowercased text

+
+
+

text-uppercase

+
+

This is uppercased text

+
+
+

text-capitalize

+
+

This is capitalized text

+
+
+

text-nowrap

+
+ This text should overflow the parent. +
+
+

text-truncate

+
+ + This is text is truncated + +
+
+
+
+ + +
+

Buttons

+

Use custom button styles for actions in forms, dialogs, and more with support for multiple sizes, + states, and more. +

+
+

Examples

+
+ + + + + + + + + + +
+
+
+
+

Outline buttons

+
+ + + + + + + + + + +
+
+
+
+

Sizes

+
+ + +
+
+ + +
+
+ + +
+
+
+
+

Button states

+
+ + + +
+
+ + + +
+
+
+ +
+

Radio +

+

Radio buttons allow the user to select a single choice from a group of options. + + +

+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+
+ +
+

Input +

+

Inputs buttons allow the user to select a single choice from a group of options. +

+ + +
+
+ + +
+ + +
Some helping Text
+
At least 6 characters required
+ + + + + + + + + + +
+ + +
+ + +
Some helping Text
+
At least 6 characters required
+ + + + + + + + + + +
+ + +
+ + +
Some helping Text
+
At least 6 characters required
+ + + + + + + + + + +
+ +
+ + +
Some helping Text
+
At least 6 characters required
+ + + + + + + + + + +
+ + + +
+ + + + + + +
+ + +
+ + + + + + + + + + + + + + + + +
+ +
+ + +
Some helping Text
+
At least 6 characters required
+ + + + + + + + + + +
+ + +
+
+ + +
+
+ +
+ + +
+ +

Grid

+
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
+ +
+
+
+ + +@code { + private string sidebarClosed { get; set; } = "close"; + + private void ToggleSidebar() + { + sidebarClosed = string.IsNullOrWhiteSpace(sidebarClosed) ? "close" : ""; + } + + + private string NavClosed { get; set; } = "showMenu"; + + private void ToggleNav() + { + NavClosed = string.IsNullOrWhiteSpace(NavClosed) ? "showMenu" : ""; + } + +} diff --git a/src/Connected.Components.Showcase.Runner/Pages/Index.razor b/src/Connected.Components.Showcase.Runner/Pages/Index.razor new file mode 100644 index 0000000..9238ca6 --- /dev/null +++ b/src/Connected.Components.Showcase.Runner/Pages/Index.razor @@ -0,0 +1,51 @@ +@page "/" + +

Component Sandbox

+ +

ValueDouble: @inputValueDouble.ToString()

+

ValueInt: @inputValueInt.ToString()

+

ValueText: @inputValueText

+ + + + + + + + + + + + + + +@code { + + + int counter { get; set; } = 0; + + string inputValueText = "Sample text"; + double inputValueDouble = 12.756; + int inputValueInt = 12; + + DateTime inputValueDate = DateTime.Now.AddDays(-10); + + public void CounterIncrement() + { + counter++; + StateHasChanged(); + } +} \ No newline at end of file diff --git a/src/Connected.Components.Showcase.Runner/Program.cs b/src/Connected.Components.Showcase.Runner/Program.cs new file mode 100644 index 0000000..568153e --- /dev/null +++ b/src/Connected.Components.Showcase.Runner/Program.cs @@ -0,0 +1,17 @@ +using Connected.Components.Showcase.Runner; +using Microsoft.AspNetCore.Components.Web; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; + +internal class Program +{ + private static async global::System.Threading.Tasks.Task Main(string[] args) + { + var builder = WebAssemblyHostBuilder.CreateDefault(args); + builder.RootComponents.Add("#app"); + builder.RootComponents.Add("head::after"); + + builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); + + await builder.Build().RunAsync(); + } +} \ No newline at end of file diff --git a/src/Connected.Components.Showcase.Runner/Properties/launchSettings.json b/src/Connected.Components.Showcase.Runner/Properties/launchSettings.json new file mode 100644 index 0000000..74715de --- /dev/null +++ b/src/Connected.Components.Showcase.Runner/Properties/launchSettings.json @@ -0,0 +1,38 @@ +{ + "iisSettings": { + "iisExpress": { + "applicationUrl": "http://localhost:47832", + "sslPort": 44313 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "http://localhost:5225", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "https://localhost:7045;http://localhost:5225", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/src/Connected.Components.Showcase.Runner/_Imports.razor b/src/Connected.Components.Showcase.Runner/_Imports.razor new file mode 100644 index 0000000..53936ad --- /dev/null +++ b/src/Connected.Components.Showcase.Runner/_Imports.razor @@ -0,0 +1,8 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using Microsoft.JSInterop +@using Connected.Components.Showcase.Runner +@using Connected.Components.Showcase; diff --git a/src/Connected.Components.Showcase.Runner/wwwroot/index.html b/src/Connected.Components.Showcase.Runner/wwwroot/index.html new file mode 100644 index 0000000..1c123c0 --- /dev/null +++ b/src/Connected.Components.Showcase.Runner/wwwroot/index.html @@ -0,0 +1,30 @@ + + + + + + Connected.Components.Showcase.Runner + + + + + + + + + + + + +
Loading...
+ +
+ An unhandled error has occurred. + Reload + 🗙 +
+ + + + diff --git a/src/Connected.Components.Showcase/Connected.Components.Showcase.csproj b/src/Connected.Components.Showcase/Connected.Components.Showcase.csproj index a0cff86..75b1fd0 100644 --- a/src/Connected.Components.Showcase/Connected.Components.Showcase.csproj +++ b/src/Connected.Components.Showcase/Connected.Components.Showcase.csproj @@ -15,4 +15,8 @@ + + + + diff --git a/src/Connected.Components.Showcase/Pages/AlertShowcase.razor b/src/Connected.Components.Showcase/Pages/AlertShowcase.razor deleted file mode 100644 index bd9e724..0000000 --- a/src/Connected.Components.Showcase/Pages/AlertShowcase.razor +++ /dev/null @@ -1,381 +0,0 @@ -@page "/components/alert" - -@using Connected.Components; - - - - - -@code { - Theme MyCustomTheme = new Theme() - { - Palette = new Palette() - { - Error = "#ffd8e4", - ErrorContrastText = "#31111d", - //ErrorDarken = Colors.Green.Accent4, - }, - LayoutProperties = new LayoutProperties() - { - DefaultBorderRadius = "1rem", - } - }; -} - - - Alert - An alert is used to notify the user about an important message without interrupting the ongoing task. - - - - - - Simple alert - The reactor type is RBMK-1000 - The reactor was fired up successfully - The reactor is running at optimum temperature - The reactor temperature exceeds the optimal range - Meltdown is imminent - - - - - -
- <Alert Severity="Severity.Normal" GlyphVisible="true" ClassList="my-2">The reactor type is RBMK-1000</Alert>
-<Alert Severity="Severity.Info" GlyphVisible="true" ClassList="my-2">The reactor was fired up successfully</Alert>
-<Alert Severity="Severity.Success" GlyphVisible="true" ClassList="my-2">The reactor is running at optimum temperature</Alert>
-<Alert Severity="Severity.Warning" GlyphVisible="true" ClassList="my-2">The reactor temperature exceeds the optimal range</Alert>
-<Alert Severity="Severity.Error" GlyphVisible="true" ClassList="my-2">Meltdown is imminent</Alert>
-
- - - - - Outlined alert - The reactor type is RBMK-1000 - The reactor was fired up successfully - The reactor is running at optimum temperature - The reactor temperature exceeds the optimal range - Meltdown is imminent - - - - - -
- <Alert Severity="Severity.Normal" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2">The reactor type is RBMK-1000</Alert>
-<Alert Severity="Severity.Info" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2">The reactor was fired up successfully</Alert>
-<Alert Severity="Severity.Success" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2">The reactor is running at optimum temperature</Alert>
-<Alert Severity="Severity.Warning" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2">The reactor temperature exceeds the optimal range</Alert>
-<Alert Severity="Severity.Error" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2">Meltdown is imminent</Alert>
-
- - - - - - Outlined alert - The reactor type is RBMK-1000 - The reactor was fired up successfully - The reactor is running at optimum temperature - The reactor temperature exceeds the optimal range - Meltdown is imminent - - - - - -
- <Alert Severity="Severity.Normal" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2">The reactor type is RBMK-1000</Alert>
-<Alert Severity="Severity.Info" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2">The reactor was fired up successfully</Alert>
-<Alert Severity="Severity.Success" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2">The reactor is running at optimum temperature</Alert>
-<Alert Severity="Severity.Warning" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2">The reactor temperature exceeds the optimal range</Alert>
-<Alert Severity="Severity.Error" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2">Meltdown is imminent</Alert>
-
- - - - -
- Dense - Taking up too much space? Insert dense class in ClassList. It removes the vertical padding and lowers the horizontal. - -
- - - Dense Default - Dense Info - Dense Success - Dense Warning - Dense Errorr - - - Dense Default - Dense Info - Dense Success - Dense Warning - Dense Error - - - Dense Default - Dense Info - Dense Success - Dense Warning - Dense Error - - -
- - -
- <Grid>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" GlyphVisible="true" ClassList="my-2 dense">Dense Default</Alert>
-        <Alert Severity="Severity.Info" GlyphVisible="true" ClassList="my-2 dense">Dense Info</Alert>
-        <Alert Severity="Severity.Success" GlyphVisible="true" ClassList="my-2 dense">Dense Success</Alert>
-        <Alert Severity="Severity.Warning" GlyphVisible="true" ClassList="my-2 dense">Dense Warning</Alert>
-        <Alert Severity="Severity.Error" GlyphVisible="true" ClassList="my-2 dense">Dense Errorr</Alert>
-    </Item>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2 dense">Dense Default</Alert>
-        <Alert Severity="Severity.Info" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2 dense">Dense Info</Alert>
-        <Alert Severity="Severity.Success" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2 dense">Dense Success</Alert>
-        <Alert Severity="Severity.Warning" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2 dense">Dense Warning</Alert>
-        <Alert Severity="Severity.Error" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2 dense">Dense Error</Alert>
-    </Item>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2 dense">Dense Default</Alert>
-        <Alert Severity="Severity.Info" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2 dense">Dense Info</Alert>
-        <Alert Severity="Severity.Success" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2 dense">Dense Success</Alert>
-        <Alert Severity="Severity.Warning" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2 dense">Dense Warning</Alert>
-        <Alert Severity="Severity.Error" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2 dense">Dense Error</Alert>
-    </Item>
-</Grid>
-
- - - - -
- No Icons - You can disable the alert icons with the bool GlyphVisible set to false. -
- - - No Icon Default - No Icon Info - No Icon Success - No Icon Warning - No Icon Error - - - No Icon Default - No Icon Info - No Icon Success - No Icon Warning - No Icon Error - - - No Icon Default - No Icon Info - No Icon Success - No Icon Warning - No Icon Error - - -
- - -
- <Grid>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" GlyphVisible="false" ClassList="my-2">No Icon Default</Alert>
-        <Alert Severity="Severity.Info" GlyphVisible="false" ClassList="my-2 ">No Icon Info</Alert>
-        <Alert Severity="Severity.Success" GlyphVisible="false" ClassList="my-2">No Icon Success</Alert>
-        <Alert Severity="Severity.Warning" GlyphVisible="false" ClassList="my-2">No Icon Warning</Alert>
-        <Alert Severity="Severity.Error" GlyphVisible="false" ClassList="my-2">No Icon Error</Alert>
-    </Item>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" Variant="Variant.Outlined" GlyphVisible="false" ClassList="my-2">No Icon Default</Alert>
-        <Alert Severity="Severity.Info" Variant="Variant.Outlined" GlyphVisible="false" ClassList="my-2">No Icon Info</Alert>
-        <Alert Severity="Severity.Success" Variant="Variant.Outlined" GlyphVisible="false" ClassList="my-2">No Icon Success</Alert>
-        <Alert Severity="Severity.Warning" Variant="Variant.Outlined" GlyphVisible="false" ClassList="my-2">No Icon Warning</Alert>
-        <Alert Severity="Severity.Error" Variant="Variant.Outlined" GlyphVisible="false" ClassList="my-2 ">No Icon Error</Alert>
-    </Item>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" Variant="Variant.Filled" GlyphVisible="false" ClassList="my-2 ">No Icon Default</Alert>
-        <Alert Severity="Severity.Info" Variant="Variant.Filled" GlyphVisible="false" ClassList="my-2 ">No Icon Info</Alert>
-        <Alert Severity="Severity.Success" Variant="Variant.Filled" GlyphVisible="false" ClassList="my-2 ">No Icon Success</Alert>
-        <Alert Severity="Severity.Warning" Variant="Variant.Filled" GlyphVisible="false" ClassList="my-2 ">No Icon Warning</Alert>
-        <Alert Severity="Severity.Error" Variant="Variant.Filled" GlyphVisible="false" ClassList="my-2 ">No Icon Error</Alert>
-    </Item>
-</Grid>
-
- - - - -
- Rounded and Square - By default, the alert is set to rounded corners by your theme's - default value. If you need a square Alert but don't want to change the theme, insert class rounded-0 in - ClassList or change the default radius width classes rounded-sm, rounded-lg, rounded-xl. -
- - - Rounded-0 Default - Rounded Info - Rounded-sm Success - Rounded-lg Warning - Rounded-xl Error - - - Rounded-0 Default - Rounded Info - Rounded-sm Success - Rounded-lg Warning - Rounded-xl Error - - - Rounded-0 Default - Rounded Info - Rounded-sm Success - Rounded-lg Warning - Rounded-xl Error - - -
- - -
- <Grid>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" GlyphVisible="true" ClassList="my-2 rounded-0">Rounded-0 Default</Alert>
-        <Alert Severity="Severity.Info" GlyphVisible="true" ClassList="my-2 rounded">Rounded Info</Alert>
-        <Alert Severity="Severity.Success" GlyphVisible="true" ClassList="my-2 rounded-sm">Rounded-sm Success</Alert>
-        <Alert Severity="Severity.Warning" GlyphVisible="true" ClassList="my-2 rounded-lg">Rounded-lg Warning</Alert>
-        <Alert Severity="Severity.Error" GlyphVisible="true" ClassList="my-2 rounded-xl">Rounded-xl Error</Alert>
-    </Item>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2 rounded-0">Rounded-0 Default</Alert>
-        <Alert Severity="Severity.Info" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2 rounded">Rounded Info</Alert>
-        <Alert Severity="Severity.Success" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2 rounded-sm">Rounded-sm Success</Alert>
-        <Alert Severity="Severity.Warning" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2 rounded-lg">Rounded-lg Warning</Alert>
-        <Alert Severity="Severity.Error" Variant="Variant.Outlined" GlyphVisible="true" ClassList="my-2 rounded-xl">Rounded-xl Error</Alert>
-    </Item>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2 rounded-0">Rounded-0 Default</Alert>
-        <Alert Severity="Severity.Info" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2 rounded">Rounded Info</Alert>
-        <Alert Severity="Severity.Success" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2 rounded-sm">Rounded-sm Success</Alert>
-        <Alert Severity="Severity.Warning" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2 rounded-lg">Rounded-lg Warning</Alert>
-        <Alert Severity="Severity.Error" Variant="Variant.Filled" GlyphVisible="true" ClassList="my-2 rounded-xl">Rounded-xl Error</Alert>
-    </Item>
-</Grid>
-
- - - - - -
- Elevation - The component also accepts the Elevation class set a scale from elevation-1 to elevation-24 in ClassList. -
- - - elevation-8 - - - elevation-16 - - - elevation-24 - - -
- - -
- <Grid>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" GlyphVisible="true" ClassList="my-2 elevation-8">elevation-8 Default</Alert>
-    </Item>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" GlyphVisible="true" ClassList="my-2 elevation-16">elevation-16 Default</Alert>
-    </Item>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" GlyphVisible="true" ClassList="my-2 elevation-24">elevation-24 Default</Alert>
-    </Item>
-</Grid>
-
- - - -
- Content Alignment - Insert Utility class for the Alignment property in ClassList to define the content alignment - justify-center or justify-end -
- - - Default Alignment - - - Center Alignment - - - Right Alignment - - -
- - -
- <Grid>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" GlyphVisible="true" ClassList="my-2">Default Alignment</Alert>
-    </Item>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" GlyphVisible="true" ClassList="my-2 justify-center">Center Alignment</Alert>
-    </Item>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" GlyphVisible="true" ClassList="my-2 justify-end">Right Alignment</Alert>
-    </Item>
-</Grid>
-
- - - - -
- Close Icon and Event - Set the CloseGlyphVisible property to True to display a Close icon. - CloseIconClicked provides the EventCallback when clicking on the Close icon of the alert -
- - - Time to leave. Please close me! - - - Time to leave. Please close me! - - - RTime to leave. Please close me! - - -
- - -
- <Grid>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Normal" GlyphVisible="true" CloseGlyphVisible="true" ClassList="my-2">Time to leave. Please close me!</Alert>
-    </Item>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Info" GlyphVisible="true" CloseGlyphVisible="true" ClassList="my-2 justify-center">Time to leave. Please close me!</Alert>
-    </Item>
-    <Item md="4" xs="12">
-        <Alert Severity="Severity.Success" GlyphVisible="true" CloseGlyphVisible="true" ClassList="my-2 justify-end">RTime to leave. Please close me!</Alert>
-    </Item>
-</Grid>
-
diff --git a/src/Connected.Components.Showcase/Pages/AppBarShowcase.razor b/src/Connected.Components.Showcase/Pages/AppBarShowcase.razor deleted file mode 100644 index 68aff84..0000000 --- a/src/Connected.Components.Showcase/Pages/AppBarShowcase.razor +++ /dev/null @@ -1,7 +0,0 @@ -@page "/components/app-bar" - -@using Connected.Components; - - - -This is an alert diff --git a/src/Connected.Components.Showcase/Pages/DrawerShowcase.razor b/src/Connected.Components.Showcase/Pages/DrawerShowcase.razor deleted file mode 100644 index 445bff2..0000000 --- a/src/Connected.Components.Showcase/Pages/DrawerShowcase.razor +++ /dev/null @@ -1,36 +0,0 @@ -@page "/components/drawer" - -@using Connected.Components; - - - - - - - - - - - Application - - - Production - Production - - - - - - Lorem ipsum dolor sit amet consectetur adipisicing elit. Quam fuga necessitatibus illum non earum aperiam consequuntur odit odio a laborum! - - - - -@code { - bool _drawerOpen = true; - - void DrawerToggle() - { - _drawerOpen = !_drawerOpen; - } -} diff --git a/src/Connected.Components.Showcase/Pages/TextBox.razor b/src/Connected.Components.Showcase/Pages/TextBox.razor deleted file mode 100644 index ae49cc4..0000000 --- a/src/Connected.Components.Showcase/Pages/TextBox.razor +++ /dev/null @@ -1,5 +0,0 @@ -

TextBox

- -@code { - -} diff --git a/src/Connected.Components/Annotations/CategoryAttribute.cs b/src/Connected.Components/Annotations/CategoryAttribute.cs deleted file mode 100644 index ef7b589..0000000 --- a/src/Connected.Components/Annotations/CategoryAttribute.cs +++ /dev/null @@ -1,538 +0,0 @@ -namespace Connected.Annotations; - -/// -/// Specifies the name of the category in which to group the property of a MudBlazor component when displayed in the API documentation. -/// -/// -/// Use this attribute together with the .
-/// This attribute is similar to .
-/// The name of the category can be specified by using a constant defined in the class. -///
-[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)] -public class CategoryAttribute : Attribute -{ - public CategoryAttribute(string name) - { - if (string.IsNullOrEmpty(name)) - throw new ArgumentException("The category name cannot be null nor empty."); - if (!categoryOrder.ContainsKey(name)) - throw new ArgumentException($"The given category name '{name}' isn't in the categoryOrder field."); - Name = name; - } - - /// The name of the category. - public string Name { get; } - - /// The order of the category - the greater the number the lower the category will be displayed in the API documentation. - public int Order => categoryOrder[Name]; - - // Possible categories of component properties and the order in which they are displayed in the API documentation. - private static readonly Dictionary categoryOrder = new() - { - ["Data"] = 0, // general category - ["Validation"] = 1, // general category - - // specific categories associated with data - ["Validated data"] = 2, - ["Validation result"] = 3, - - ["Behavior"] = 100, // general category - - ["Header"] = 101, - ["Rows"] = 102, - ["Footer"] = 103, - - // specific behaviors of a component - ["Filtering"] = 200, - ["Grouping"] = 201, - ["Expanding"] = 202, - ["Sorting"] = 203, - ["Pagination"] = 204, - ["Selecting"] = 205, - ["Editing"] = 206, - ["Click action"] = 207, - ["Items"] = 208, - ["Disable"] = 209, - ["DraggingClass"] = 210, - ["DropRules"] = 211, - - ["Appearance"] = 300, // general category - - // specific parts of a component together with their behavior and appearance - ["Popup behavior"] = 400, - ["Popup appearance"] = 401, - ["List behavior"] = 402, - ["List appearance"] = 403, - ["Picker behavior"] = 404, - ["Picker appearance"] = 405, - ["Dot"] = 406, - - // "Miscellaneous" category. In classes inheriting from MudComponentBase it can be used only exceptionally - - // - only when the property can define behavior or appearance depending on value of the property. - ["Misc"] = int.MaxValue - 1, - - ["Common"] = int.MaxValue // general category - }; -} - -/// -/// Possible categories of MudBlazor components properties. -/// -/// -/// General categories -/// -/// - Data - Used e.g. in form fields, pickers, , , , -/// , and . Containers have this group when their items can be defined -/// not only in markup language, but also programmatically in the Items property and by specifying ItemTemplate.
-/// - Validation - Used in form fields and pickers.
-/// - Behavior - Changing these properties changes behavior of the component and behavior of the application. So in some way they are or may be more -/// important than the "Appearance" category. Example properties are: a) the Disabled property, b) icons (or avatars) without default value -/// (because setting their value can pass additional information).
-/// - Appearance - Changing these properties doesn't change behavior of the component and behavior of the application, but only changes the appearance -/// of the component irrelevant to the understanding of the application by a user. So in some way they are less important than the "Behavior" -/// category, because they are only used to adjust the look of the application. Example properties are: a) Elevation, Outlined, -/// Square, Rounded, DisableGutters, Dense, DisableRipple; b) size, color, and typography of the item -/// and its subelements; c) CSS classes and styles of subelements; d) icons with the default value already set (because most often changing its value -/// doesn't change passed information).
-/// - Common - Properties defined in . -///
-/// -/// Note: The following properties belong to the "Behavior" group, not to the "Appearance" group:
-/// - - because it describes meaning of the button, since MudIconButton doesn't have text,
-/// - - because it describes meaning of the field,
-/// - - because it can describe information important to a user, e.g. a numeric field unit such as kilograms.
-/// Sometimes choosing a category can be difficult - in such case choose a category that makes the most sense. -///
-/// -/// Categories for specific behaviors or specific parts of components -/// If some elements or behaviors can be distinguished in a component, then their properties are included in separate groups. -/// -/// Note: If a property qualifies for both the "Appearance" or "Behavior" group, and for some special group, then this special group takes precedence. -/// For example, could belong to the "Appearance" group, but belongs to the "Editing" group. -/// -/// Additional information -/// The list of categories is inspired by the categories displayed for Windows Forms and Web Forms components in the Visual Studio "Properties" window. -///
-public static class CategoryTypes -{ - /* Implementation note: - * Almost all components use the "Behavior" and "Appearance" categories. We could simplify the code - * by inheriting these constants, but C# doesn't allow to inherit static members of a class. - */ - - /// Used in . - public static class ComponentBase - { - public const string Common = "Common"; - } - - /// Used in: , all components inheriting from it, and . - public static class Button - { - public const string Behavior = "Behavior"; - public const string ClickAction = "Click action"; - public const string Appearance = "Appearance"; - } - - /// Used in and all components inheriting from it. - public static class FormComponent - { - public const string Data = "Data"; - public const string Validation = "Validation"; - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - public const string ListBehavior = "List behavior"; - public const string ListAppearance = "List appearance"; - public const string PickerBehavior = "Picker behavior"; - public const string PickerAppearance = "Picker appearance"; - } - - /// Used in all charts, that is in and all components inheriting from it. - public static class Chart - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - /// Used in other base classes. - public static class General - { - public const string Data = "Data"; - public const string Behavior = "Behavior"; - public const string ClickAction = "Click action"; - public const string Appearance = "Appearance"; - } - - public static class Alert - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class AppBar - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Avatar - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class AvatarGroup - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Badge - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Breadcrumbs - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class BreakpointProvider - { - public const string Behavior = "Behavior"; - } - - public static class ButtonGroup - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Card - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Carousel - { - public const string Data = "Data"; - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Chip - { - public const string Behavior = "Behavior"; - public const string ClickAction = "Click action"; - public const string Appearance = "Appearance"; - } - - public static class ChipSet - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Container - { - public const string Behavior = "Behavior"; - } - - public static class Dialog - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - public const string Misc = "Misc"; - } - - public static class Divider - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Drawer - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class DropZone - { - public const string Appearance = "Appearance"; - public const string Behavior = "Behavior"; - public const string Disabled = "Disable"; - public const string Sorting = "Sorting"; - public const string DraggingClass = "DraggingClass"; - public const string DropRules = "DropRules"; - public const string Items = "Items"; - } - - public static class Element - { - public const string Misc = "Misc"; - } - - public static class ExpansionPanel - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Field - { - public const string Data = "Data"; - public const string Validation = "Validation"; - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class FileUpload - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class FocusTrap - { - public const string Behavior = "Behavior"; - } - - public static class Form - { - public const string ValidatedData = "Validated data"; - public const string ValidationResult = "Validation result"; - public const string Behavior = "Behavior"; - } - - public static class Grid - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Highlighter - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Image - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Item - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Hidden - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Icon - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Link - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class List - { - public const string Behavior = "Behavior"; - public const string Expanding = "Expanding"; - public const string Selecting = "Selecting"; - public const string ClickAction = "Click action"; - public const string Appearance = "Appearance"; - } - - public static class MainContent - { - public const string Behavior = "Behavior"; - } - - public static class Menu - { - public const string Behavior = "Behavior"; - public const string ClickAction = "Click action"; - public const string Appearance = "Appearance"; - public const string PopupBehavior = "Popup behavior"; - public const string PopupAppearance = "Popup appearance"; - } - - public static class MessageBox - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class NavMenu - { - public const string Behavior = "Behavior"; - public const string ClickAction = "Click action"; - public const string Appearance = "Appearance"; - } - - public static class Overlay - { - public const string Behavior = "Behavior"; - public const string ClickAction = "Click action"; - } - - public static class Pagination - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Paper - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Popover - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class ProgressLinear - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class ProgressCircular - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Radio - { - public const string Data = "Data"; - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Rating - { - public const string Data = "Data"; - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class RTLProvider - { - public const string Behavior = "Behavior"; - } - - public static class ScrollToTop - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Skeleton - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Stack - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Slider - { - public const string Data = "Data"; - public const string Validation = "Validation"; - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class SwipeArea - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Table - { - public const string Data = "Data"; - public const string Behavior = "Behavior"; - public const string Header = "Header"; - public const string Rows = "Rows"; - public const string Footer = "Footer"; - public const string Filtering = "Filtering"; - public const string Grouping = "Grouping"; - public const string Sorting = "Sorting"; - public const string Pagination = "Pagination"; - public const string Selecting = "Selecting"; - public const string Editing = "Editing"; - public const string Appearance = "Appearance"; - } - - public static class SimpleTable - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Tabs - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Timeline - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - public const string Dot = "Dot"; - } - - public static class ToolBar - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class Tooltip - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } - - public static class TreeView - { - public const string Data = "Data"; - public const string Behavior = "Behavior"; - public const string Expanding = "Expanding"; - public const string Selecting = "Selecting"; - public const string ClickAction = "Click action"; - public const string Appearance = "Appearance"; - } - - public static class Text - { - public const string Behavior = "Behavior"; - public const string Appearance = "Appearance"; - } -} diff --git a/src/Connected.Components/Annotations/LabelAttribute.cs b/src/Connected.Components/Annotations/LabelAttribute.cs deleted file mode 100644 index 8e906da..0000000 --- a/src/Connected.Components/Annotations/LabelAttribute.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Connected.Annotations; - -[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)] -public class LabelAttribute : Attribute -{ - public LabelAttribute(string name) - { - Name = name; - } - - public string Name { get; } -} diff --git a/src/Connected.Components/ComponentsN/Alert.razor b/src/Connected.Components/Components/Alert.razor similarity index 100% rename from src/Connected.Components/ComponentsN/Alert.razor rename to src/Connected.Components/Components/Alert.razor diff --git a/src/Connected.Components/ComponentsN/Alert.razor.cs b/src/Connected.Components/Components/Alert.razor.cs similarity index 95% rename from src/Connected.Components/ComponentsN/Alert.razor.cs rename to src/Connected.Components/Components/Alert.razor.cs index 897c386..e29579b 100644 --- a/src/Connected.Components/ComponentsN/Alert.razor.cs +++ b/src/Connected.Components/Components/Alert.razor.cs @@ -1,7 +1,7 @@ using Connected.Utilities; using Microsoft.AspNetCore.Components; -namespace Connected.ComponentsN; +namespace Connected.Components; public partial class Alert { [Parameter] @@ -38,7 +38,7 @@ public partial class Alert } case Severity.Success: { - Glyph = Icons.Custom.Uncategorized.AlertSuccess; + Glyph = Icons.Material.Outlined.Check; break; } case Severity.Warning: diff --git a/src/Connected.Components/Components/Alert/Alert.razor b/src/Connected.Components/Components/Alert/Alert.razor deleted file mode 100644 index 3bed37f..0000000 --- a/src/Connected.Components/Components/Alert/Alert.razor +++ /dev/null @@ -1,27 +0,0 @@ -@namespace Connected.Components - -@inherits UIComponent - - - \ No newline at end of file diff --git a/src/Connected.Components/Components/Alert/Alert.razor.cs b/src/Connected.Components/Components/Alert/Alert.razor.cs deleted file mode 100644 index 6c77eee..0000000 --- a/src/Connected.Components/Components/Alert/Alert.razor.cs +++ /dev/null @@ -1,122 +0,0 @@ -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -public partial class Alert : UIComponent{ - /// - /// Contains the default container classlist and the user defined classes. - /// - private CssBuilder CompiledClassList - { - get - { - return new CssBuilder("alert") - .AddClass($"alert-{Variant}-{Severity}") - .AddClass(ClassList); - } - } - - /// - /// Child content of the component. - /// - [Parameter] - public RenderFragment? ChildContent { get; set; } - - #region EventCallbacks - /// - /// Raised when the alert is clicked. - /// - [Parameter] - public EventCallback Clicked { get; set; } - - /// - /// The callback, when the close glyph has been clicked. - /// - [Parameter] public EventCallback CloseClicked { get; set; } - - #endregion - - #region Content placeholders - /// - /// Define the glyph used for the close button. - /// - [Parameter] - public string CloseGlyph { get; set; } = Icons.Material.Filled.Close; - - /// - /// Custom glyph, leave unset to use the standard glyph which depends on the Severity. - /// - [Parameter] - public string Glyph { get; set; } = default!; - #endregion - - #region Styling properties - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? ClassList { get; set; } - - /// - /// Sets if the alert shows a close glyph. - /// - [Parameter] - public bool CloseGlyphVisible { get; set; } - - /// - /// If true, no alert glyph will be used. - /// - [Parameter] - public bool GlyphVisible { get; set; } - - /// - /// Specifies the control's display style - /// - //TODO: Implement in DOM - [CascadingParameter(Name = "RightToLeft")] - public bool RightToLeft { get; set; } - - /// - /// The severity of the alert. This defines the color and glyph used. - /// - [Parameter] - public Severity Severity { get; set; } = Severity.Normal; - - /// - /// The variant to use. - /// - [Parameter] - public Variant Variant { get; set; } = Variant.Text; - #endregion - - protected override void OnParametersSet() - { - if (!string.IsNullOrEmpty(Glyph)) - return; - - Glyph = GetGlyphForSeverity(Severity); - } - - private string GetGlyphForSeverity(Severity severity) - { - return Severity switch - { - Severity.Normal => Icons.Material.Outlined.EventNote, - Severity.Info => Icons.Material.Outlined.Info, - Severity.Success => Icons.Custom.Uncategorized.AlertSuccess, - Severity.Warning => Icons.Material.Outlined.ReportProblem, - Severity.Error => Icons.Material.Filled.ErrorOutline, - _ => throw new ArgumentOutOfRangeException(nameof(severity)), - }; - } - - internal async Task OnCloseGlyphClick() - { - if (!CloseClicked.HasDelegate) - return; - - await CloseClicked.InvokeAsync(this); - } -} \ No newline at end of file diff --git a/src/Connected.Components/Components/AppBar/AppBar.razor b/src/Connected.Components/Components/AppBar/AppBar.razor deleted file mode 100644 index 2626b3a..0000000 --- a/src/Connected.Components/Components/AppBar/AppBar.razor +++ /dev/null @@ -1,10 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -
- - @ChildContent - -
- - diff --git a/src/Connected.Components/Components/AppBar/AppBar.razor.cs b/src/Connected.Components/Components/AppBar/AppBar.razor.cs deleted file mode 100644 index 1465e43..0000000 --- a/src/Connected.Components/Components/AppBar/AppBar.razor.cs +++ /dev/null @@ -1,86 +0,0 @@ -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class AppBar : UIComponent -{ - - #region Event callbacks - #endregion - - #region Content placeholders - - /// - /// Child content of the component. - /// - [Parameter] - public RenderFragment? ChildContent { get; set; } - - #endregion - - #region Styling properties - /// - /// The classlist determining the toolbar render. - /// - private CssBuilder CompiledToolbarClassList - { - get - { - return new CssBuilder("toolbar-appbar") - .AddClass(ToolbarClassList); - } - } - /// - /// Class names for the nested toolbar. In case of several, separate by spaces. - /// - [Parameter] - public string? ToolbarClassList { get; set; } - - - /// - /// The classlist determining the header render. - /// - private CssBuilder CompiledHeaderClassList - { - get - { - return new CssBuilder("app-bar") - .AddClass($"appbar-fixed-top", Fixed && VerticalAlignment == VerticalAlignment.Top) - .AddClass($"appbar-fixed-bottom", Fixed && VerticalAlignment == VerticalAlignment.Bottom) - .AddClass(HeaderClassList); - } - } - /// - /// Class names for the AppBar header. In case of several, separate by spaces. - /// - [Parameter] - public string? HeaderClassList { get; set; } - - /// - /// Determines the vertical alignment of the AppBar. - /// - [Parameter] - public VerticalAlignment VerticalAlignment { get; set; } - - /// - /// If true, appbar will be fixed. - /// - [Parameter] - public bool Fixed { get; set; } = true; - - #endregion - - #region Lifecycle - #endregion - - - - - - - - - - -} diff --git a/src/Connected.Components/Components/Autocomplete/Autocomplete.razor b/src/Connected.Components/Components/Autocomplete/Autocomplete.razor deleted file mode 100644 index 74c7cfa..0000000 --- a/src/Connected.Components/Components/Autocomplete/Autocomplete.razor +++ /dev/null @@ -1,96 +0,0 @@ -@namespace Connected.Components -@inherits InputBase -@typeparam T - - -
- - - - - @if (ShowProgressIndicator && IsLoading) - { - @if (ProgressIndicatorTemplate is not null) - { - @ProgressIndicatorTemplate - } - else - { -
- -
- } - } - - - @if(ProgressIndicatorInPopoverTemplate != null && IsLoading) - { - @ProgressIndicatorInPopoverTemplate - } - else if (_items != null && _items.Length != 0) - { - - @for (var index = 0; index < _items.Length; index++) - { - var item = _items[index]; - bool is_selected = index == _selectedListItemIndex; - bool is_disabled = !_enabledItemIndices.Contains(index); - - @if (ItemTemplate == null) - { - @GetItemString(item) - } - else if (is_disabled && ItemDisabledTemplate is not null) - { - @ItemDisabledTemplate(item) - } - else if (is_selected) - { - @if (ItemSelectedTemplate is null) - @ItemTemplate(item) - else - @ItemSelectedTemplate(item) - - } - else - { - @ItemTemplate(item) - } - - } - @if (MoreItemsTemplate is not null && _itemsReturned > MaxItems) - { -
- @MoreItemsTemplate -
- } -
- } - else if (NoItemsTemplate is not null) - { -
- @NoItemsTemplate -
- } -
-
-
-
-
- - \ No newline at end of file diff --git a/src/Connected.Components/Components/Autocomplete/Autocomplete.razor.cs b/src/Connected.Components/Components/Autocomplete/Autocomplete.razor.cs deleted file mode 100644 index f943830..0000000 --- a/src/Connected.Components/Components/Autocomplete/Autocomplete.razor.cs +++ /dev/null @@ -1,732 +0,0 @@ -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -public partial class Autocomplete : InputBase, IDisposable -{ - - #region Variables - - [Inject] - IScrollManager ScrollManager { get; set; } - - private Func? _toStringFunc; - private Task _currentSearchTask; - private CancellationTokenSource _cancellationTokenSrc; - private bool _isOpen; - private Timer _timer; - private T[] _items; - private int _selectedListItemIndex = 0; - private IList _enabledItemIndices = new List(); - private int _itemsReturned; //the number of items returned by the search function - int _elementKey = 0; - /// - /// This boolean will keep track if the clear function is called too keep the set text function to be called. - /// - private bool _isCleared; - private Input _elementReference; - /// - /// We need a random id for the year items in the year list so we can scroll to the item safely in every DatePicker. - /// - private readonly string _componentId = Guid.NewGuid().ToString(); - - #endregion - - #region Event callbacks - - /// - /// Function to be invoked when checking whether an item should be disabled or not - /// - [Parameter] - public Func ItemDisabledFunc { get; set; } - - /// - /// If true, the currently selected item from the drop-down (if it is open) is selected. - /// - [Parameter] - public bool SelectValueOnTab { get; set; } = false; - - /// - /// Func that returns a list of items matching the typed text. Provides a cancellation token that - /// is marked as cancelled when the user changes the search text or selects a value from the list. - /// This can be used to cancel expensive asynchronous work occuring within the SearchFunc itself. - /// - [Parameter] - public Func>> SearchFuncWithCancel { get; set; } - /// - /// The SearchFunc returns a list of items matching the typed text - /// - [Parameter] - public Func>> SearchFunc { get; set; } - - - // - /// An event triggered when the state of IsOpen has changed - /// - [Parameter] - public EventCallback IsOpenChanged { get; set; } - - /// - /// Button click event for clear button. Called after text and value has been cleared. - /// - [Parameter] - public EventCallback OnClearButtonClick { get; set; } - - internal virtual async Task OnInputKeyUp(KeyboardEventArgs args) - { - switch (args.Key) - { - case "Enter": - case "NumpadEnter": - if (!IsOpen) - await ToggleMenu(); - else - await OnEnterKey(); - - break; - case "ArrowDown": - if (!IsOpen) - await ToggleMenu(); - else - { - var increment = _enabledItemIndices.ElementAtOrDefault(_enabledItemIndices.IndexOf(_selectedListItemIndex) + 1) - _selectedListItemIndex; - - await SelectNextItem(increment < 0 ? 1 : increment); - } - - break; - case "ArrowUp": - if (args.AltKey) - await ChangeMenu(false); - else if (!IsOpen) - await ToggleMenu(); - else - { - var decrement = _selectedListItemIndex - _enabledItemIndices.ElementAtOrDefault(_enabledItemIndices.IndexOf(_selectedListItemIndex) - 1); - await SelectNextItem(-(decrement < 0 ? 1 : decrement)); - } - - break; - case "Escape": - await ChangeMenu(false); - - break; - case "Tab": - await Task.Delay(1); - - if (!IsOpen) - return; - - if (SelectValueOnTab) - await OnEnterKey(); - else - await ToggleMenu(); - - break; - case "Backspace": - if (args.CtrlKey && args.ShiftKey) - Reset(); - break; - } - - base.InvokeKeyUp(args); - } - - internal virtual async Task OnInputKeyDown(KeyboardEventArgs args) - { - switch (args.Key) - { - case "Tab": - // NOTE: We need to catch Tab in Keydown because a tab will move focus to the next element and thus - // in OnInputKeyUp we'd never get the tab key - if (!IsOpen) - return; - if (SelectValueOnTab) - await OnEnterKey(); - else - IsOpen = false; - break; - } - } - - public async Task SelectOption(T value) - { - await SetValueAsync(value); - - if (_items is not null) - _selectedListItemIndex = Array.IndexOf(_items, value); - - var optionText = GetItemString(value); - - if (!_isCleared) - await SetTextAsync(optionText, false); - - _timer?.Dispose(); - - IsOpen = false; - - BeginValidate(); - - if (!_isCleared) - _elementReference?.SetText(optionText); - - _elementReference?.FocusAsync().AndForget(); - - StateHasChanged(); - } - /// - /// Toggle the menu (if not disabled or not readonly, and is opened). - /// - public async Task ToggleMenu() - { - if ((Disabled || ReadOnly) && !IsOpen) - return; - - await ChangeMenu(!IsOpen); - } - - private async Task ChangeMenu(bool open) - { - if (open) - { - if (SelectOnClick) - await _elementReference.SelectAsync(); - - await OnSearchAsync(); - } - else - { - _timer?.Dispose(); - - RestoreScrollPosition(); - - await CoerceTextToValue(); - - IsOpen = false; - - StateHasChanged(); - } - } - - - - protected override Task UpdateTextPropertyAsync(bool updateValue) - { - _timer?.Dispose(); - // This keeps the text from being set when clear() was called - if (_isCleared) - return Task.CompletedTask; - - return base.UpdateTextPropertyAsync(updateValue); - } - - protected override async Task UpdateValuePropertyAsync(bool updateText) - { - _timer?.Dispose(); - - if (ResetValueOnEmptyText && string.IsNullOrWhiteSpace(Text)) - await SetValueAsync(default, updateText); - - if (DebounceInterval <= 0) - await OnSearchAsync(); - else - _timer = new Timer(OnTimerComplete, null, DebounceInterval, Timeout.Infinite); - } - - private void OnTimerComplete(object stateInfo) - { - InvokeAsync(OnSearchAsync); - } - private void CancelToken() - { - try - { - _cancellationTokenSrc?.Cancel(); - } - catch - { - } - - _cancellationTokenSrc = new CancellationTokenSource(); - } - /// - /// This async method needs to return a task and be awaited in order for - /// unit tests that trigger this method to work correctly. - /// - private async Task OnSearchAsync() - { - if (MinCharacters > 0 && (string.IsNullOrWhiteSpace(Text) || Text.Length < MinCharacters)) - { - IsOpen = false; - StateHasChanged(); - return; - } - - IEnumerable searchedItems = Array.Empty(); - CancelToken(); - - try - { - if (ProgressIndicatorInPopoverTemplate is not null) - IsOpen = true; - - var searchTask = SearchFuncWithCancel is not null ? SearchFuncWithCancel(Text, _cancellationTokenSrc.Token) : SearchFunc(Text); - - _currentSearchTask = searchTask; - - StateHasChanged(); - - searchedItems = await searchTask ?? Array.Empty(); - } - catch (TaskCanceledException) - { - } - catch (OperationCanceledException) - { - } - catch (Exception e) - { - Console.WriteLine($"The search function failed to return results: {e.Message}"); - } - - _itemsReturned = searchedItems.Count(); - - if (MaxItems.HasValue) - searchedItems = searchedItems.Take(MaxItems.Value); - - _items = searchedItems.ToArray(); - _enabledItemIndices = _items.Select((item, idx) => (item, idx)).Where(tuple => ItemDisabledFunc?.Invoke(tuple.item) != true).Select(tuple => tuple.idx).ToList(); - _selectedListItemIndex = _enabledItemIndices.Any() ? _enabledItemIndices.First() : -1; - - IsOpen = true; - - if (_items?.Length == 0) - { - await CoerceValueToText(); - - StateHasChanged(); - - return; - } - - StateHasChanged(); - } - - /// - /// Clears the autocomplete's text - /// - public async Task Clear() - { - _isCleared = true; - IsOpen = false; - - await SetTextAsync(string.Empty, updateValue: false); - await CoerceValueToText(); - - if (_elementReference is not null) - await _elementReference.SetText(string.Empty); - - _timer?.Dispose(); - - StateHasChanged(); - } - - protected override async void ResetValue() - { - await Clear(); - base.ResetValue(); - } - - private string GetItemString(T item) - { - if (item is null) - return string.Empty; - try - { - return Converter.Convert(item); - } - catch (NullReferenceException) { } - - return "null"; - } - - private ValueTask SelectNextItem(int increment) - { - if (increment == 0 || _items is null || !_items.Any() || !_enabledItemIndices.Any()) - return ValueTask.CompletedTask; - // if we are at the end, or the beginning we just do an rollover - _selectedListItemIndex = Math.Clamp(value: (10 * _items.Length + _selectedListItemIndex + increment) % _items.Length, min: 0, max: _items.Length - 1); - - return ScrollToListItem(_selectedListItemIndex); - } - /// - /// Scroll to a specific item index in the Autocomplete list of items. - /// - /// the index to scroll to - public ValueTask ScrollToListItem(int index) - { - var id = GetListItemId(index); - //id of the scrolled element - return ScrollManager.ScrollToListItemAsync(id); - } - /* - * This restores the scroll position after closing the menu and element being 0 - */ - private void RestoreScrollPosition() - { - if (_selectedListItemIndex != 0) - return; - - ScrollManager.ScrollToListItemAsync(GetListItemId(0)); - } - - private string GetListItemId(in int index) - { - return $"{_componentId}_item{index}"; - } - - internal Task OnEnterKey() - { - if (!IsOpen) - return Task.CompletedTask; - - if (_items is null || !_items.Any()) - return Task.CompletedTask; - - if (_selectedListItemIndex >= 0 && _selectedListItemIndex < _items.Length) - return SelectOption(_items[_selectedListItemIndex]); - - return Task.CompletedTask; - } - - private Task OnInputBlurred(FocusEventArgs args) - { - OnBlur.InvokeAsync(args); - - return Task.CompletedTask; - // we should not validate on blur in autocomplete, because the user needs to click out of the input to select a value, - // resulting in a premature validation. thus, don't call base - //base.OnBlurred(args); - } - - private Task CoerceTextToValue() - { - if (!CoerceText) - return Task.CompletedTask; - - _timer?.Dispose(); - - var text = Value is null ? null : GetItemString(Value); - /* - * Don't update the value to prevent the popover from opening again after coercion - */ - if (text != Text) - return SetTextAsync(text, updateValue: false); - - return Task.CompletedTask; - } - - private Task CoerceValueToText() - { - if (!CoerceValue) - return Task.CompletedTask; - - _timer?.Dispose(); - - var value = Converter.ConvertBack(Text); - - return SetValueAsync(value, updateText: false); - } - - - /// - /// Focus the input in the Autocomplete component. - /// - public override ValueTask FocusAsync() - { - return _elementReference.FocusAsync(); - } - /// - /// Blur from the input in the Autocomplete component. - /// - public override ValueTask BlurAsync() - { - return _elementReference.BlurAsync(); - } - - /// - /// Select all text within the Autocomplete input. - /// - public override ValueTask SelectAsync() - { - return _elementReference.SelectAsync(); - } - - /// - /// Select all text within the Autocomplete input and aligns its start and end points to the text content of the current input. - /// - public override ValueTask SelectRangeAsync(int pos1, int pos2) - { - return _elementReference.SelectRangeAsync(pos1, pos2); - } - - private async Task OnTextChanged(string text) - { - await TextChanged.InvokeAsync(); - - if (text is null) - return; - - await SetTextAsync(text, true); - } - - private async Task ListItemOnClick(T item) - { - await SelectOption(item); - } - - #endregion - - #region Content placeholders - - - - #endregion - - #region Styling properties - - /// - /// Show clear button. - /// - [Parameter] - public bool Clearable { get; set; } = false; - private string CurrentIcon => !string.IsNullOrWhiteSpace(AdornmentIcon) ? AdornmentIcon : _isOpen ? CloseIcon : OpenIcon; - - /// - /// Returns the open state of the drop-down. - /// - public bool IsOpen - { - get => _isOpen; - // Note: the setter is protected because it was needed by a user who derived his own autocomplete from this class. - // Note: setting IsOpen will not open or close it. Use ToggleMenu() for that. - protected set - { - if (value == _isOpen) - return; - - _isOpen = value; - - IsOpenChanged.InvokeAsync(_isOpen).AndForget(); - } - } - - /// - /// User class names for the popover, separated by space - /// - [Parameter] - public string PopoverClass { get; set; } - /// - /// Set the anchor origin point to determen where the popover will open from. - /// - [Parameter] - public Origin AnchorOrigin { get; set; } = Origin.BottomCenter; - /// - /// Sets the transform origin point for the popover. - /// - [Parameter] - public Origin TransformOrigin { get; set; } = Origin.TopCenter; - /// - /// If true, compact vertical padding will be applied to all Autocomplete items. - /// - [Parameter] - public bool Dense { get; set; } - /// - /// The Open Autocomplete Glyph - /// - [Parameter] - public string OpenIcon { get; set; } = Icons.Material.Filled.ArrowDropDown; - /// - /// The Close Autocomplete Glyph - /// - [Parameter] - public string CloseIcon { get; set; } = Icons.Material.Filled.ArrowDropUp; - /// - /// The maximum height of the Autocomplete when it is open. - /// - [Parameter] - public int MaxHeight { get; set; } = 300; - /// - /// Defines how values are displayed in the drop-down list - /// - [Parameter] - public Func? ToStringFunc - { - get => _toStringFunc; - set - { - if (_toStringFunc == value) - return; - - _toStringFunc = value; - - SetConverter(new LambdaConverter(_toStringFunc ?? (x => x?.ToString()), null)); - } - } - /// - /// Whether to show the progress indicator. - /// - [Parameter] - public bool ShowProgressIndicator { get; set; } = false; - /// - /// The color of the progress indicator. - /// - [Parameter] - public ThemeColor ProgressIndicatorColor { get; set; } = ThemeColor.Default; - private bool IsLoading => _currentSearchTask is not null && !_currentSearchTask.IsCompleted; - - /// - /// Maximum items to display, defaults to 10. - /// A null value will display all items. - /// - [Parameter] - public int? MaxItems { get; set; } = 10; - /// - /// Minimum characters to initiate a search - /// - [Parameter] - public int MinCharacters { get; set; } = 0; - /// - /// Reset value if user deletes the text - /// - [Parameter] - public bool ResetValueOnEmptyText { get; set; } = false; - /// - /// If true, clicking the text field will select (highlight) its contents. - /// - [Parameter] - public bool SelectOnClick { get; set; } = true; - - protected string ClassList() - { - return new CssBuilder("select") - .Build(); - } - - protected string AutocompleteClassList() - { - return new CssBuilder("select") - .AddClass("autocomplete") - .AddClass("width-full", FullWidth) - .AddClass("autocomplete--with-progress", ShowProgressIndicator && IsLoading) - .Build(); - } - - protected string CircularProgressClassList() - { - return new CssBuilder("progress-indicator-circular") - .AddClass("progress-indicator-circular--with-adornment", Adornment == Adornment.End) - .Build(); - } - - /// - /// Debounce interval in milliseconds. - /// - [Parameter] - public int DebounceInterval { get; set; } = 100; - /// - /// Optional presentation template for unselected items - /// - [Parameter] - public RenderFragment ItemTemplate { get; set; } - /// - /// Optional presentation template for the selected item - /// - [Parameter] - public RenderFragment ItemSelectedTemplate { get; set; } - /// - /// Optional presentation template for disabled item - /// - [Parameter] - public RenderFragment ItemDisabledTemplate { get; set; } - /// - /// Optional presentation template for when more items were returned from the Search function than the MaxItems limit - /// - [Parameter] - public RenderFragment MoreItemsTemplate { get; set; } - /// - /// Optional presentation template for when no items were returned from the Search function - /// - [Parameter] - public RenderFragment NoItemsTemplate { get; set; } - /// - /// Optional template for progress indicator - /// - [Parameter] - public RenderFragment ProgressIndicatorTemplate { get; set; } - /// - /// Optional template for showing progress indicator inside the popover - /// - [Parameter] - public RenderFragment ProgressIndicatorInPopoverTemplate { get; set; } - /// - /// On drop-down close override Text with selected Value. This makes it clear to the user - /// which list value is currently selected and disallows incomplete values in Text. - /// - [Parameter] - public bool CoerceText { get; set; } = true; - /// - /// If user input is not found by the search func and CoerceValue is set to true the user input - /// will be applied to the Value which allows to validate it and display an error message. - /// - [Parameter] - public bool CoerceValue { get; set; } - - #endregion Styling - - #region Lifecycle - /// - /// Constructor - /// - public Autocomplete() - { - Adornment = Adornment.End; - IconSize = Size.Medium; - } - - protected override void OnInitialized() - { - var text = GetItemString(Value); - - if (!string.IsNullOrWhiteSpace(text)) - Text = text; - } - - protected override void OnAfterRender(bool firstRender) - { - _isCleared = false; - - base.OnAfterRender(firstRender); - } - - protected override void Dispose(bool disposing) - { - _timer?.Dispose(); - - if (_cancellationTokenSrc is not null) - { - try - { - _cancellationTokenSrc.Dispose(); - } - catch { } - } - - base.Dispose(disposing); - } - - #endregion - -} diff --git a/src/Connected.Components/Components/Avatar/Avatar.razor b/src/Connected.Components/Components/Avatar/Avatar.razor deleted file mode 100644 index 975dc26..0000000 --- a/src/Connected.Components/Components/Avatar/Avatar.razor +++ /dev/null @@ -1,23 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -@if(AvatarGroup is null || AvatarGroup.MaxGroupReached(this)) -{ -
- @if (!String.IsNullOrEmpty(Image)) - { - if (!String.IsNullOrEmpty(ImageAltText)) - { - @ImageAltText - } - else - { - - } - } - else - { - @ChildContent - } -
-} \ No newline at end of file diff --git a/src/Connected.Components/Components/Avatar/Avatar.razor.cs b/src/Connected.Components/Components/Avatar/Avatar.razor.cs deleted file mode 100644 index 7137688..0000000 --- a/src/Connected.Components/Components/Avatar/Avatar.razor.cs +++ /dev/null @@ -1,122 +0,0 @@ -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -partial class Avatar : UIComponent, IDisposable -{ - - #region Variables - #endregion - - #region Events - - internal void ForceRedraw() => StateHasChanged(); - - #endregion - - #region Content - - /// - /// Child content of the component. - /// - [Parameter] - public RenderFragment? ChildContent { get; set; } - - /// - /// Link to image, if set a image will be displayed instead of text. - /// - [Parameter] - public string? Image { get; set; } - - /// - /// If set (and Image is also set), will add an alt property to the img element - /// - [Parameter] - public string? ImageAltText { get; set; } - - [CascadingParameter] - protected AvatarGroup? AvatarGroup { get; set; } - - #endregion - - #region Styling - - protected CssBuilder CompiledClassList - { - get - { - return new CssBuilder("avatar") - .AddClass($"avatar-{Size}") - .AddClass($"avatar-rounded", Kind == AvatarKind.Rounded) - .AddClass($"avatar-square", Kind == AvatarKind.Square) - .AddClass($"avatar-{Variant}") - .AddClass($"avatar-{Variant}-{Color}") - .AddClass($"elevation-{Elevation}") - .AddClass(ClassList) - .AddClass(AvatarGroup?.GetAvatarSpacing() ?? new CssBuilder(), AvatarGroup != null); - } - } - - protected StyleBuilder CompiledStyles - { - get - { - return new StyleBuilder() - .AddStyle(AvatarGroup?.GetAvatarZindex(this) ?? new StyleBuilder(), AvatarGroup is not null); - } - } - - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? ClassList { get; set; } - - /// - /// The color of the component. It supports the theme colors. - /// - [Parameter] - public ThemeColor Color { get; set; } = ThemeColor.Default; - - /// - /// The higher the number, the heavier the drop-shadow. - /// - [Parameter] - public int Elevation { set; get; } = 0; - - /// - /// Sets the avatar appearance - /// - public AvatarKind Kind { get; set; } - - /// - /// The Size of the MudAvatar. - /// - [Parameter] - public Size Size { get; set; } = Size.Medium; - - /// - /// The variant to use. - /// - [Parameter] - public Variant Variant { get; set; } = Variant.Filled; - - #endregion - - #region Lifecycle - - protected override void OnInitialized() - { - base.OnInitialized(); - - AvatarGroup?.AddAvatar(this); - } - - public void Dispose() => AvatarGroup?.RemoveAvatar(this); - - #endregion - -} diff --git a/src/Connected.Components/Components/Avatar/AvatarGroup.razor b/src/Connected.Components/Components/Avatar/AvatarGroup.razor deleted file mode 100644 index b667de4..0000000 --- a/src/Connected.Components/Components/Avatar/AvatarGroup.razor +++ /dev/null @@ -1,14 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -
- - @ChildContent - - @if(_avatars.Count > Max) - { - - @($"+{_avatars.Count - Max}") - - } -
\ No newline at end of file diff --git a/src/Connected.Components/Components/Avatar/AvatarGroup.razor.cs b/src/Connected.Components/Components/Avatar/AvatarGroup.razor.cs deleted file mode 100644 index 0cdef1b..0000000 --- a/src/Connected.Components/Components/Avatar/AvatarGroup.razor.cs +++ /dev/null @@ -1,205 +0,0 @@ -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -partial class AvatarGroup : UIComponent -{ - - #region Variables - - private bool _childrenNeedUpdates = false; - private int _spacing = 3; - private List _avatars = new(); - - #endregion - - #region Event callbacks - #endregion - - #region Content - - /// - /// Child content of the component. - /// - [Parameter] - [Category(CategoryTypes.AvatarGroup.Behavior)] - public RenderFragment ChildContent { get; set; } - - internal void AddAvatar(Avatar avatar) - { - _avatars.Add(avatar); - StateHasChanged(); - } - - internal void RemoveAvatar(Avatar avatar) - { - _avatars.Remove(avatar); - } - - internal bool MaxGroupReached(Avatar avatar) - { - if (_avatars.IndexOf(avatar) < Max) - return true; - else - return false; - } - - #endregion - - #region Styling properties - - - internal CssBuilder GetAvatarSpacing() => new CssBuilder() - .AddClass($"ms-n{Spacing}"); - - internal StyleBuilder GetAvatarZindex(Avatar avatar) => new StyleBuilder() - .AddStyle("z-index", $"{_avatars.Count - _avatars.IndexOf(avatar)}"); - - private CssBuilder CompiledClassList - { - get - { - return new CssBuilder("avatar-group") - .AddClass($"avatar-group-outlined", Outlined) - .AddClass($"avatar-group-outlined-{OutlineColor.ToDescription()}", Outlined) - .AddClass(ClassList); - } - } - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? ClassList { get; set; } - - private CssBuilder CompiledMaxAvatarClassList - { - get - { - return new CssBuilder("avatar-group-max-avatar") - .AddClass($"ms-n{Spacing}") - .AddClass(MaxAvatarClass); - } - } - /// - /// Custom class/classes for MaxAvatar - /// - [Parameter] - [Category(CategoryTypes.AvatarGroup.Appearance)] - public string MaxAvatarClass { get; set; } - /// - /// Outlines the grouped avatars to distinguish them, useful when avatars are the same color or uses images. - /// - [Parameter] - [Category(CategoryTypes.AvatarGroup.Appearance)] - public bool Outlined { get; set; } = true; - - /// - /// Sets the color of the outline if its used. - /// - [Parameter] - [Category(CategoryTypes.AvatarGroup.Appearance)] - public ThemeColor OutlineColor { get; set; } = ThemeColor.Surface; - - /// - /// Elevation of the MaxAvatar the higher the number, the heavier the drop-shadow. - /// - [Parameter] - [Category(CategoryTypes.AvatarGroup.Appearance)] - public int MaxElevation { set; get; } = 0; - - /// - /// If true, MaxAvatar border-radius is set to 0. - /// - [Parameter] - [Category(CategoryTypes.AvatarGroup.Appearance)] - public bool MaxSquare { get; set; } - - /// - /// If true, MaxAvatar will be rounded. - /// - [Parameter] - [Category(CategoryTypes.AvatarGroup.Appearance)] - public bool MaxRounded { get; set; } - - /// - /// Color for the MaxAvatar. - /// - [Parameter] - [Category(CategoryTypes.AvatarGroup.Appearance)] - public ThemeColor MaxColor { get; set; } = ThemeColor.Default; - - /// - /// Size of the MaxAvatar. - /// - [Parameter] - [Category(CategoryTypes.AvatarGroup.Appearance)] - public Size MaxSize { get; set; } = Size.Medium; - - /// - /// Variant of the MaxAvatar. - /// - [Parameter] - [Category(CategoryTypes.AvatarGroup.Appearance)] - public Variant MaxVariant { get; set; } = Variant.Filled; - - private int _max = 3; - - /// - /// Max avatars to show before showing +x avatar, default value 0 has no max. - /// - [Parameter] - [Category(CategoryTypes.AvatarGroup.Behavior)] - public int Max - { - get => _max; - set - { - if (value != _max) - { - _max = value; - _childrenNeedUpdates = true; - } - } - } - - /// - /// Spacing between avatars where 0 is none and 16 max. - /// - [Parameter] - public int Spacing - { - get => _spacing; - set - { - if (value != _spacing) - { - _spacing = value; - _childrenNeedUpdates = true; - } - } - } - - #endregion - - #region Lifecycle - protected override void OnParametersSet() - { - base.OnParametersSet(); - - if (_childrenNeedUpdates == true) - { - foreach (var avatar in _avatars) - { - avatar.ForceRedraw(); - } - - _childrenNeedUpdates = false; - } - } - - #endregion - -} diff --git a/src/Connected.Components/Components/Avatar/AvatarKind.cs b/src/Connected.Components/Components/Avatar/AvatarKind.cs deleted file mode 100644 index 2be8175..0000000 --- a/src/Connected.Components/Components/Avatar/AvatarKind.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Connected.Components; -public enum AvatarKind -{ - Undefined = 0, - Unadorned = 1, - Rounded = 2, - Square = 3 -} diff --git a/src/Connected.Components/Components/Badge/Badge.razor b/src/Connected.Components/Components/Badge/Badge.razor deleted file mode 100644 index ad8c371..0000000 --- a/src/Connected.Components/Components/Badge/Badge.razor +++ /dev/null @@ -1,24 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - - - @ChildContent - @if (Visible) - { - - - @if (!Dot) - { - @if (!String.IsNullOrEmpty(Icon)) - { - - } - else - { - @_content - } - } - - - } - diff --git a/src/Connected.Components/Components/Badge/Badge.razor.cs b/src/Connected.Components/Components/Badge/Badge.razor.cs deleted file mode 100644 index 92ce88d..0000000 --- a/src/Connected.Components/Components/Badge/Badge.razor.cs +++ /dev/null @@ -1,177 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -public partial class Badge : UIComponent -{ - - #region Variables - #endregion - - #region Events - - /// - /// Button click event if set. - /// - [Parameter] public EventCallback OnClick { get; set; } - - - - internal Task HandleBadgeClick(MouseEventArgs e) - { - if (OnClick.HasDelegate) - return OnClick.InvokeAsync(e); - - return Task.CompletedTask; - } - - #endregion - - #region Content - - private string _content; - - /// - /// Sets the Glyph to use in the badge. - /// - [Parameter] - [Category(CategoryTypes.Badge.Behavior)] - public string Icon { get; set; } - - /// - /// Max value to show when content is integer type. - /// - [Parameter] - [Category(CategoryTypes.Badge.Behavior)] - public int Max { get; set; } = 99; - - /// - /// Content you want inside the badge. Supported types are string and integer. - /// - [Parameter] - [Category(CategoryTypes.Badge.Behavior)] - public object Content { get; set; } - - /// - /// Child content of component, the content that the badge will apply to. - /// - [Parameter] - [Category(CategoryTypes.Badge.Behavior)] - public RenderFragment ChildContent { get; set; } - - #endregion - - #region Styling - - /// - /// Badge class names, separated by space. - /// - [Parameter] - [Category(CategoryTypes.Badge.Appearance)] - public string BadgeClass { get; set; } - - protected string CompiledClassList => - new CssBuilder("badge-root") - .AddClass(AdditionalClassList) - .Build(); - protected string WrapperClass => - new CssBuilder("badge-wrapper") - .AddClass($"badge-{Origin.ToDescription().Replace("-", " ")}") - .Build(); - - protected string BadgeClassName => - new CssBuilder("badge") - .AddClass("badge-dot", Dot) - .AddClass("badge-bordered", Bordered) - .AddClass("badge-icon", !string.IsNullOrEmpty(Icon) && !Dot) - .AddClass($"badge-{Origin.ToDescription().Replace("-", " ")}") - .AddClass($"elevation-{Elevation.ToString()}") - .AddClass("theme-" + Color.ToDescription(), Color != ThemeColor.Default) - .AddClass("badge-default", Color == ThemeColor.Default) - .AddClass("badge-overlap", Overlap) - .AddClass(BadgeClass) - .Build(); - - /// - /// The placement of the badge. - /// - [Parameter] - [Category(CategoryTypes.Badge.Appearance)] - public Origin Origin { get; set; } = Origin.TopRight; - - /// - /// The higher the number, the heavier the drop-shadow. - /// - [Parameter] - [Category(CategoryTypes.Badge.Appearance)] - public int Elevation { set; get; } = 0; - - /// - /// The visibility of the badge. - /// - [Parameter] - [Category(CategoryTypes.Badge.Behavior)] - public bool Visible { get; set; } = true; - - /// - /// The color of the badge. - /// - [Parameter] - [Category(CategoryTypes.Badge.Appearance)] - public ThemeColor Color { get; set; } = ThemeColor.Default; - - /// - /// Reduces the size of the badge and hide any of its content. - /// - [Parameter] - [Category(CategoryTypes.Badge.Behavior)] - public bool Dot { get; set; } - - /// - /// Overlaps the childcontent on top of the content. - /// - [Parameter] - [Category(CategoryTypes.Badge.Appearance)] - public bool Overlap { get; set; } - - /// - /// Applies a border around the badge. - /// - [Parameter] - [Category(CategoryTypes.Badge.Appearance)] - public bool Bordered { get; set; } - - #endregion - - #region Lifecycle - - protected override void OnParametersSet() - { - if (Content is string stringContent) - { - _content = stringContent; - } - else if (Content is int numberContent) - { - if (numberContent > Max) - { - _content = Max + "+"; - } - else - { - _content = numberContent.ToString(); - } - } - else - { - _content = null; - } - } - - #endregion -} diff --git a/src/Connected.Components/Components/BindableItemsControlBase.cs b/src/Connected.Components/Components/BindableItemsControlBase.cs deleted file mode 100644 index e087f92..0000000 --- a/src/Connected.Components/Components/BindableItemsControlBase.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Connected.Annotations; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public abstract class BindableItemsControlBase : ItemsControlBase - where TChildComponent : UIComponent -{ - - /// - /// Items Collection - For databinding usage - /// - [Parameter] - [Category(CategoryTypes.General.Data)] - public IEnumerable ItemsSource { get; set; } - - /// - /// Template for each Item in ItemsSource collection - /// - [Parameter] - [Category(CategoryTypes.General.Appearance)] - public RenderFragment ItemTemplate { get; set; } - - /// - /// Gets the Selected Item from ItemsSource, or Selected TChildComponent, when it's null - /// - public object SelectedItem - { - get => ItemsSource == null ? Items[SelectedIndex] : ItemsSource.ElementAtOrDefault(SelectedIndex); - } -} diff --git a/src/Connected.Components/Components/BooleanInput.cs b/src/Connected.Components/Components/BooleanInput.cs deleted file mode 100644 index 2a362c3..0000000 --- a/src/Connected.Components/Components/BooleanInput.cs +++ /dev/null @@ -1,89 +0,0 @@ -using Connected.Annotations; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public class BooleanInput : FormComponent -{ - public BooleanInput() : base(new BoolConverter()) { } - - /// - /// If true, the input will be disabled. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool Disabled { get; set; } - - /// - /// If true, the input will be read-only. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool ReadOnly { get; set; } - - /// - /// The state of the component - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Data)] - public T Checked - { - get => _value; - set => _value = value; - } - - /// - /// If true will prevent the click from bubbling up the event tree. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool StopClickPropagation { get; set; } = true; - - /// - /// Fired when Checked changes. - /// - [Parameter] public EventCallback CheckedChanged { get; set; } - - protected bool? BoolValue => Converter.Convert(Checked); - - protected virtual Task OnChange(ChangeEventArgs args) - { - Modified = true; - return SetBoolValueAsync((bool?)args.Value); - } - - protected Task SetBoolValueAsync(bool? value) - { - return SetCheckedAsync(Converter.ConvertBack(value)); - } - - protected async Task SetCheckedAsync(T value) - { - if (Disabled) - return; - if (!EqualityComparer.Default.Equals(Checked, value)) - { - Checked = value; - await CheckedChanged.InvokeAsync(value); - BeginValidate(); - FieldChanged(Checked); - } - } - - protected override bool SetConverter(Converter value) - { - var changed = base.SetConverter(value); - if (changed) - SetBoolValueAsync(Converter.Convert(Checked)).AndForget(); - - return changed; - } - - /// - /// A value is required, so if not checked we return ERROR. - /// - protected override bool HasValue(T value) - { - return (BoolValue == true); - } -} diff --git a/src/Connected.Components/Components/Breadcrumbs/BreadcrumbItem.cs b/src/Connected.Components/Components/Breadcrumbs/BreadcrumbItem.cs deleted file mode 100644 index f8fdf2b..0000000 --- a/src/Connected.Components/Components/Breadcrumbs/BreadcrumbItem.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Connected.Components; - -public class BreadcrumbItem -{ - public string Text { get; } - public string Href { get; } - public bool Disabled { get; } - public string Icon { get; } - - public BreadcrumbItem(string text, string href, bool disabled = false, string icon = null) - { - Text = text; - Disabled = disabled; - Href = href; - Icon = icon; - } -} diff --git a/src/Connected.Components/Components/Breadcrumbs/BreadcrumbLink.razor b/src/Connected.Components/Components/Breadcrumbs/BreadcrumbLink.razor deleted file mode 100644 index 966d6a7..0000000 --- a/src/Connected.Components/Components/Breadcrumbs/BreadcrumbLink.razor +++ /dev/null @@ -1,19 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -
  • - @if (Parent?.ItemTemplate is null) - { - - @if (Item?.Icon != null) - { - - } - @Item?.Text - - } - else - { - @Parent?.ItemTemplate(Item); - } -
  • \ No newline at end of file diff --git a/src/Connected.Components/Components/Breadcrumbs/BreadcrumbLink.razor.cs b/src/Connected.Components/Components/Breadcrumbs/BreadcrumbLink.razor.cs deleted file mode 100644 index 1d94ce8..0000000 --- a/src/Connected.Components/Components/Breadcrumbs/BreadcrumbLink.razor.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; -public partial class BreadcrumbLink : UIComponent -{ - #region Content - [Parameter] - public BreadcrumbItem Item { get; set; } - - [CascadingParameter] - public Breadcrumbs Parent { get; set; } - - #endregion - - #region Style - - private string Classname => new CssBuilder("breadcrumb-item") - .AddClass("disabled", Item?.Disabled) - .Build(); - - #endregion -} diff --git a/src/Connected.Components/Components/Breadcrumbs/BreadcrumbSeparator.razor b/src/Connected.Components/Components/Breadcrumbs/BreadcrumbSeparator.razor deleted file mode 100644 index 0814832..0000000 --- a/src/Connected.Components/Components/Breadcrumbs/BreadcrumbSeparator.razor +++ /dev/null @@ -1,13 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - - \ No newline at end of file diff --git a/src/Connected.Components/Components/Breadcrumbs/BreadcrumbSeparator.razor.cs b/src/Connected.Components/Components/Breadcrumbs/BreadcrumbSeparator.razor.cs deleted file mode 100644 index b402d2c..0000000 --- a/src/Connected.Components/Components/Breadcrumbs/BreadcrumbSeparator.razor.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; -public partial class BreadcrumbSeparator : UIComponent -{ - #region Content - [CascadingParameter] - public Breadcrumbs Parent { get; set; } - #endregion -} diff --git a/src/Connected.Components/Components/Breadcrumbs/Breadcrumbs.razor b/src/Connected.Components/Components/Breadcrumbs/Breadcrumbs.razor deleted file mode 100644 index 4e34f6f..0000000 --- a/src/Connected.Components/Components/Breadcrumbs/Breadcrumbs.razor +++ /dev/null @@ -1,35 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -@if (Items is null || !Items.Any()) -{ - return; -} - - -
      - @if (MaxItems is not null && Collapsed && Items.Count > MaxItems) - { - - - - - - } - else - { - @for (var i = 0; i < Items.Count; i++) - { - var item = Items[i]; - - - if (i != Items.Count - 1) - { - - } - } - } -
    -
    \ No newline at end of file diff --git a/src/Connected.Components/Components/Breadcrumbs/Breadcrumbs.razor.cs b/src/Connected.Components/Components/Breadcrumbs/Breadcrumbs.razor.cs deleted file mode 100644 index b96b818..0000000 --- a/src/Connected.Components/Components/Breadcrumbs/Breadcrumbs.razor.cs +++ /dev/null @@ -1,88 +0,0 @@ -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class Breadcrumbs : UIComponent -{ - - #region Events - - internal void Expand() - { - if (!Collapsed) - return; - - Collapsed = false; - StateHasChanged(); - } - - #endregion - - #region Content - - /// - /// A list of breadcrumb items/links. - /// - [Parameter] - [Category(CategoryTypes.Breadcrumbs.Behavior)] - public List Items { get; set; } - - /// - /// Specifies the separator between the items. - /// - [Parameter] - [Category(CategoryTypes.Breadcrumbs.Appearance)] - public string Separator { get; set; } = "/"; - - /// - /// Custom expander icon. - /// - [Parameter] - [Category(CategoryTypes.Breadcrumbs.Appearance)] - public string ExpanderIcon { get; set; } = Icons.Material.Filled.SettingsEthernet; - - #endregion - - #region Styling - [Parameter] - public string ClassList { get; set; } = string.Empty; - private string Classname => new CssBuilder("breadcrumbs") - .AddClass("typography-body1") - .AddClass(ClassList) - .Build(); - - internal static string GetItemClassname(BreadcrumbItem item) - { - return new CssBuilder("breadcrumb-item") - .AddClass("disabled", item.Disabled) - .Build(); - } - - /// - /// Specifies a RenderFragment to use as the separator. - /// - [Parameter] - [Category(CategoryTypes.Breadcrumbs.Appearance)] - public RenderFragment SeparatorTemplate { get; set; } - - /// - /// Specifies a RenderFragment to use as the items' contents. - /// - [Parameter] - [Category(CategoryTypes.Breadcrumbs.Behavior)] - public RenderFragment ItemTemplate { get; set; } - - public bool Collapsed { get; private set; } = true; - - /// - /// Controls when (and if) the breadcrumbs will automatically collapse. - /// - [Parameter] - [Category(CategoryTypes.Breadcrumbs.Behavior)] - public byte? MaxItems { get; set; } - - #endregion - -} diff --git a/src/Connected.Components/Components/BreakpointProvider/BreakpointProvider.razor b/src/Connected.Components/Components/BreakpointProvider/BreakpointProvider.razor deleted file mode 100644 index d4a547d..0000000 --- a/src/Connected.Components/Components/BreakpointProvider/BreakpointProvider.razor +++ /dev/null @@ -1,6 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - - - @ChildContent - \ No newline at end of file diff --git a/src/Connected.Components/Components/BreakpointProvider/BreakpointProvider.razor.cs b/src/Connected.Components/Components/BreakpointProvider/BreakpointProvider.razor.cs deleted file mode 100644 index 9108251..0000000 --- a/src/Connected.Components/Components/BreakpointProvider/BreakpointProvider.razor.cs +++ /dev/null @@ -1,59 +0,0 @@ -using Connected.Annotations; -using Connected.Services; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class BreakpointProvider : UIComponent, IAsyncDisposable -{ - - #region Variables - private Guid _breakPointListenerSubscriptionId; - - public Breakpoint Breakpoint { get; private set; } = Breakpoint.Always; - - [Inject] public IBreakpointService Service { get; set; } - - #endregion - - #region Events - private void SetBreakpointCallback(Breakpoint breakpoint) - { - InvokeAsync(() => - { - Breakpoint = breakpoint; - OnBreakpointChanged.InvokeAsync(breakpoint); - StateHasChanged(); - }).AndForget(); - } - - [Parameter] public EventCallback OnBreakpointChanged { get; set; } - #endregion - - #region Content - [Parameter] - [Category(CategoryTypes.BreakpointProvider.Behavior)] - public RenderFragment ChildContent { get; set; } - #endregion - - #region Lifecycle - protected override async Task OnAfterRenderAsync(bool firstRender) - { - await base.OnAfterRenderAsync(firstRender); - - if (firstRender == true) - { - var attachResult = await Service.Subscribe(SetBreakpointCallback); - _breakPointListenerSubscriptionId = attachResult.SubscriptionId; - Breakpoint = attachResult.Breakpoint; - await OnBreakpointChanged.InvokeAsync(Breakpoint); - StateHasChanged(); - } - } - - - - public async ValueTask DisposeAsync() => await Service.Unsubscribe(_breakPointListenerSubscriptionId); - #endregion - -} diff --git a/src/Connected.Components/Components/Button.razor b/src/Connected.Components/Components/Button.razor new file mode 100644 index 0000000..0abbabb --- /dev/null +++ b/src/Connected.Components/Components/Button.razor @@ -0,0 +1,128 @@ + + + + diff --git a/src/Connected.Components/Components/Button.razor.cs b/src/Connected.Components/Components/Button.razor.cs new file mode 100644 index 0000000..26f0e22 --- /dev/null +++ b/src/Connected.Components/Components/Button.razor.cs @@ -0,0 +1,150 @@ +using Connected.Utilities; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Web; +using static Connected.Colors; +using System; + +namespace Connected.Components; +public partial class Button +{ + #region Parameters + + /// + /// Outline type of the button. + /// Options: true, false + /// Default: false + /// + [Parameter] + public bool Outlined { get; set; } = false; + + /// + /// Color of the button. + /// Options: Color.[Core,Primary,Secondary,Success,Info,Warning,Danger,White,Light,Dark] + /// Default: Color.Core + /// + [Parameter] + public Color Color { get; set; } = Color.Core; + + /// + /// Size of the button. + /// Options: Size.[Small,Medium,Large,FullWidth] + /// Default: Size.Large + /// + [Parameter] + public Size Size { get; set; } = Size.Large; + + /// + /// Text shown inside the button + /// Options: any string variable + /// Default: string.Empty + /// + [Parameter] + public RenderFragment? ChildContent { get; set; } + + /// + /// Disabled or enabled. + /// Default: false + /// + [Parameter] + public bool Disabled { get; set; } = false; + + /// + /// Glyph (Icon) inside the button. + /// Options: SVG string --> Icons + /// Default: string.Empty + /// + [Parameter] + public string Glyph { get; set; } = string.Empty; + + /// + /// Position of the glyph relative to button Text parameter. If Glyph parameter == string.Empty this parameter is ignored + /// Options: Position.[left,top,right,bottom] + /// Default: Position.left + /// + [Parameter] + public Position GlyphPosition { get; set; } = Position.Left; + + /// + /// HEX string of the color for the glyph. If Glyph parameter is empty this parameter is ignored + /// Options: any HEX color string + /// Default: Black (#000000) + /// + [Parameter] + public string GlyphColor { get; set; } = "#000000"; + + /// + /// User defined custom class added on top of default generated classes + /// Options: any user defined string with class names divided by space + /// Default: string.Empty + /// + [Parameter] + public string Class { get; set; } = string.Empty; + + /// + /// User defined custom class added on top of default generated classes + /// Options: any user defined string with class names divided by space + /// Default: string.Empty + /// + [Parameter] + public string ContentClass { get; set; } = string.Empty; + + /// + /// User defined custom style + /// Options: any user defined string with valid CSS style + /// Default: string.Empty + /// + [Parameter] + public string Style { get; set; } = string.Empty; + + /// + /// Button click event. + /// Options: any MouseEventCallback event + /// Default: empty + [Parameter] + public EventCallback OnClick { get; set; } + + #endregion + + #region Events + protected async Task Click(MouseEventArgs e) + { + await OnClick.InvokeAsync(e); + + } + #endregion + + #region Styling + + /// + /// Generated class list for button based on user parameters + /// + private string ClassList + { + get + { + return new CssBuilder("btn") + .AddClass("btn-" + Helper.GetEnumDescription(Size)) + .AddClass("btn-" + Helper.GetEnumDescription(Color),!Outlined) + .AddClass("btn-outline-" + Helper.GetEnumDescription(Color), Outlined) + .AddClass(Class) + .Build(); + } + } + + /// + /// Generated class list for button based on user parameters + /// + private string ContentClassList + { + get + { + return new CssBuilder("") + .AddClass(ContentClass) + .Build(); + } + } + + #endregion + + +} diff --git a/src/Connected.Components/Components/Button/Button.razor b/src/Connected.Components/Components/Button/Button.razor deleted file mode 100644 index 6453f63..0000000 --- a/src/Connected.Components/Components/Button/Button.razor +++ /dev/null @@ -1,17 +0,0 @@ -@namespace Connected.Components - -@using Connected.Extensions; - -@inherits ButtonBase - - - - @ChildContent - - diff --git a/src/Connected.Components/Components/Button/Button.razor.cs b/src/Connected.Components/Components/Button/Button.razor.cs deleted file mode 100644 index b1b835a..0000000 --- a/src/Connected.Components/Components/Button/Button.razor.cs +++ /dev/null @@ -1,43 +0,0 @@ -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class Button : ButtonBase -{ - - #region Content - /// - /// Child content of component. - /// - [Parameter] - public RenderFragment? ChildContent { get; set; } - #endregion - - #region Styling - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? ClassList { get; set; } - - /// - /// The variant to use. - /// - [Parameter] - public Variant Variant { get; set; } = Variant.Text; - /// - /// Contains the default container classlist and the user defined classes. - /// - private CssBuilder CompiledClassList - { - get - { - return new CssBuilder("button-root mud-button") - .AddClass($"button-{Variant}") - .AddClass(ClassList); - } - } - #endregion - -} diff --git a/src/Connected.Components/Components/Button/ButtonBase.cs b/src/Connected.Components/Components/Button/ButtonBase.cs deleted file mode 100644 index 029852a..0000000 --- a/src/Connected.Components/Components/Button/ButtonBase.cs +++ /dev/null @@ -1,81 +0,0 @@ -using System.Windows.Input; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -public abstract class ButtonBase : UIComponent -{ - #region EventCallbacks - /// - /// Button click event. - /// - [Parameter] - public EventCallback Clicked { get; set; } - - protected async Task OnClick(MouseEventArgs e) - { - if (Disabled) - return; - - if (Clicked.HasDelegate) - await Clicked.InvokeAsync(e); - - if (Command?.CanExecute(CommandParameters) ?? false) - Command.Execute(CommandParameters); - - Activateable?.Activate(this, e); - } - - #endregion - - #region Content placeholders - /// - /// Potential activation target for this button. This enables RenderFragments with user-defined - /// buttons which will automatically activate the intended functionality. - /// - [CascadingParameter] - protected IActivatable? Activateable { get; set; } - - /// - /// The HTML element that will be rendered in the root by the component - /// By default, is a button. - /// - protected string HtmlTag => ButtonType.ToString().ToLower(); - - #endregion - - #region Behavior properties - /// - /// The button Type (Button, Submit, Refresh) - /// - [Parameter] - public ButtonType ButtonType { get; set; } - - /// - /// Command executed when the user clicks on an element. - /// - [Parameter] - public ICommand? Command { get; set; } - - /// - /// Command parameter. - /// - [Parameter] - public object? CommandParameters { get; set; } - - /// - /// If true, the button will be disabled. - /// - [Parameter] - public bool Disabled { get; set; } - - /// - /// Indicates whether the internal click propagation should be disabled, - /// as it is handled in the component itself. - /// - protected bool PreventOnClickPropagation => string.Compare(HtmlTag, "button", true) == 0; - - #endregion - -} diff --git a/src/Connected.Components/Components/Button/Fab.razor b/src/Connected.Components/Components/Button/Fab.razor deleted file mode 100644 index f5f50d8..0000000 --- a/src/Connected.Components/Components/Button/Fab.razor +++ /dev/null @@ -1,25 +0,0 @@ -@namespace Connected.Components - -@inherits ButtonBase - -@using Connected.Extensions; - - - - @if (!string.IsNullOrWhiteSpace(StartIcon)) - { - - } - @Label - @if (!string.IsNullOrWhiteSpace(EndIcon)) - { - - } - - diff --git a/src/Connected.Components/Components/Button/Fab.razor.cs b/src/Connected.Components/Components/Button/Fab.razor.cs deleted file mode 100644 index 3ad2a22..0000000 --- a/src/Connected.Components/Components/Button/Fab.razor.cs +++ /dev/null @@ -1,78 +0,0 @@ -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class Fab : ButtonBase -{ - - #region Content - /// - /// If applied Glyph will be added at the start of the component. - /// - [Parameter] - [Category(CategoryTypes.Button.Behavior)] - public string StartIcon { get; set; } - - /// - /// If applied Glyph will be added at the end of the component. - /// - [Parameter] - [Category(CategoryTypes.Button.Behavior)] - public string EndIcon { get; set; } - - /// - /// If applied the text will be added to the component. - /// - [Parameter] - [Category(CategoryTypes.Button.Behavior)] - public string Label { get; set; } - - /// - /// GlyphTitle of the icon used for accessibility. - /// - [Parameter] - [Category(CategoryTypes.Button.Behavior)] - public string Title { get; set; } - #endregion - - #region Styling - protected string Classname => - new CssBuilder("button-root mud-fab") - .AddClass($"fab-extended", !string.IsNullOrEmpty(Label)) - .AddClass($"fab-{Color.ToDescription()}") - .AddClass($"fab-size-{Size.ToDescription()}") - .Build(); - - /// - /// The color of the component. It supports the theme colors. - /// - [Parameter] - [Category(CategoryTypes.Button.Appearance)] - public ThemeColor Color { get; set; } = ThemeColor.Default; - - /// - /// The Size of the component. - /// - [Parameter] - [Category(CategoryTypes.Button.Appearance)] - public Size Size { get; set; } = Size.Large; - - /// - /// The color of the icon. It supports the theme colors. - /// - [Parameter] - [Category(CategoryTypes.Button.Appearance)] - public ThemeColor IconColor { get; set; } = ThemeColor.Inherit; - - /// - /// The size of the icon. - /// - [Parameter] - [Category(CategoryTypes.Button.Appearance)] - public Size IconSize { get; set; } = Size.Medium; - #endregion - -} diff --git a/src/Connected.Components/Components/Button/GlyphButton.razor b/src/Connected.Components/Components/Button/GlyphButton.razor deleted file mode 100644 index 60ef2a8..0000000 --- a/src/Connected.Components/Components/Button/GlyphButton.razor +++ /dev/null @@ -1,27 +0,0 @@ -@namespace Connected.Components - -@inherits ButtonBase - -@using Connected.Components; - - - @if (!String.IsNullOrEmpty(Glyph)) - { - - - - } - else - { - - @ChildContent - - } - diff --git a/src/Connected.Components/Components/Button/GlyphButton.razor.cs b/src/Connected.Components/Components/Button/GlyphButton.razor.cs deleted file mode 100644 index bff5752..0000000 --- a/src/Connected.Components/Components/Button/GlyphButton.razor.cs +++ /dev/null @@ -1,54 +0,0 @@ -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class GlyphButton : ButtonBase -{ - #region Content - /// - /// The Icon that will be used in the component. - /// - [Parameter] - public string? Glyph { get; set; } - - /// - /// GlyphTitle of the icon used for accessibility. - /// - [Parameter] - public string? GlyphTitle { get; set; } - - /// - /// Child content of component, only shows if Glyph is null or Empty. - /// - [Parameter] - public RenderFragment? ChildContent { get; set; } - - #endregion - - #region Styling - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? ClassList { get; set; } - - /// - /// The variant to use. - /// - [Parameter] - public Variant Variant { get; set; } = Variant.Text; - - /// - /// Contains the default container classlist and the user defined classes. - /// - private CssBuilder CompiledClassList - { - get - { - return new CssBuilder("button-root glyph-button") - .AddClass(ClassList); - } - } - #endregion -} diff --git a/src/Connected.Components/Components/Button/ToggleGlyphButton.razor b/src/Connected.Components/Components/Button/ToggleGlyphButton.razor deleted file mode 100644 index 545c071..0000000 --- a/src/Connected.Components/Components/Button/ToggleGlyphButton.razor +++ /dev/null @@ -1,13 +0,0 @@ -@namespace Connected.Components - -@inherits UIComponent - - diff --git a/src/Connected.Components/Components/Button/ToggleGlyphButton.razor.cs b/src/Connected.Components/Components/Button/ToggleGlyphButton.razor.cs deleted file mode 100644 index d441950..0000000 --- a/src/Connected.Components/Components/Button/ToggleGlyphButton.razor.cs +++ /dev/null @@ -1,89 +0,0 @@ -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class ToggleGlyphButton : UIComponent -{ - #region Events - /// - /// Fires whenever toggled is changed. - /// - [Parameter] - public EventCallback ToggledChanged { get; set; } - - public async Task Toggle() - { - await SetToggledAsync(!Toggled); - } - - protected internal async Task SetToggledAsync(bool toggled) - { - if (Disabled) - return; - - if (Toggled != toggled) - { - Toggled = toggled; - - if (!ToggledChanged.HasDelegate) - return; - - await ToggledChanged.InvokeAsync(Toggled); - } - } - - #endregion - - #region Content - /// - /// The glyph that will be used in the untoggled state. - /// - [Parameter] - public string? Glyph { get; set; } - - /// - /// GlyphTitle of the icon used for accessibility. - /// - [Parameter] - public string? GlyphTitle { get; set; } - - /// - /// The glyph that will be used in the toggled state. - /// - [Parameter] - public string? ToggledGlyph { get; set; } - - /// - /// GlyphTitle used in toggled state, if different. - /// - [Parameter] - public string? ToggledGlyphTitle { get; set; } - #endregion - - #region Styling - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? ClassList { get; set; } - - /// - /// The variant to use. - /// - [Parameter] - public Variant Variant { get; set; } = Variant.Text; - - /// - /// If true, the button will be disabled. - /// - [Parameter] - public bool Disabled { get; set; } - - /// - /// The button toggled state. - /// - [Parameter] - public bool Toggled { get; set; } - - #endregion -} diff --git a/src/Connected.Components/Components/ButtonGroup/ButtonGroup.razor b/src/Connected.Components/Components/ButtonGroup/ButtonGroup.razor deleted file mode 100644 index 80188b6..0000000 --- a/src/Connected.Components/Components/ButtonGroup/ButtonGroup.razor +++ /dev/null @@ -1,12 +0,0 @@ -@namespace Connected.Components - -@inherits UIComponent - - - @ChildContent - - -@{ - if(!CustomAttributes.ContainsKey("role")) - CustomAttributes.Add("role", "group"); -} \ No newline at end of file diff --git a/src/Connected.Components/Components/ButtonGroup/ButtonGroup.razor.cs b/src/Connected.Components/Components/ButtonGroup/ButtonGroup.razor.cs deleted file mode 100644 index 2f80de2..0000000 --- a/src/Connected.Components/Components/ButtonGroup/ButtonGroup.razor.cs +++ /dev/null @@ -1,81 +0,0 @@ -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class ButtonGroup : UIComponent -{ - - #region Content - /// - /// Child content of component. - /// - [Parameter] - [Category(CategoryTypes.ButtonGroup.Behavior)] - public RenderFragment ChildContent { get; set; } - #endregion - - #region Styling - /// - /// If true, the button group will be displayed vertically. - /// - [Parameter] - [Category(CategoryTypes.ButtonGroup.Appearance)] - public bool VerticalAlign { get; set; } = false; - - /// - /// If true, no drop-shadow will be used. - /// - [Parameter] - [Category(CategoryTypes.ButtonGroup.Appearance)] - public bool DisableElevation { get; set; } = false; - - /// - /// The color of the component. It supports the theme colors. - /// - [Parameter] - [Category(CategoryTypes.ButtonGroup.Appearance)] - public ThemeColor Color { get; set; } = ThemeColor.Default; - - /// - /// The size of the component. - /// - [Parameter] - [Category(CategoryTypes.ButtonGroup.Appearance)] - public Size Size { get; set; } = Size.Medium; - - /// - /// The variant to use. - /// - [Parameter] - [Category(CategoryTypes.ButtonGroup.Appearance)] - public Variant Variant { get; set; } = Variant.Text; - - protected string Classname => - new CssBuilder("button-group-root") - .AddClass($"button-group-override-styles", OverrideStyles) - .AddClass($"button-group-{Variant.ToDescription()}") - .AddClass($"button-group-{Variant.ToDescription()}-{Color.ToDescription()}") - .AddClass($"button-group-{Variant.ToDescription()}-size-{Size.ToDescription()}") - .AddClass($"button-group-vertical", VerticalAlign) - .AddClass($"button-group-horizontal", !VerticalAlign) - .AddClass($"button-group-disable-elevation", DisableElevation) - .AddClass($"button-group-rtl", RightToLeft) - .AddClass(AdditionalClassList) - .Build(); - - - [CascadingParameter(Name = "RightToLeft")] - public bool RightToLeft { get; set; } - - /// - /// If true, the button group will override the styles of the individual buttons. - /// - [Parameter] - [Category(CategoryTypes.ButtonGroup.Appearance)] - public bool OverrideStyles { get; set; } = true; - #endregion - -} diff --git a/src/Connected.Components/Components/Card/Card.razor b/src/Connected.Components/Components/Card/Card.razor deleted file mode 100644 index 6535e65..0000000 --- a/src/Connected.Components/Components/Card/Card.razor +++ /dev/null @@ -1,7 +0,0 @@ -@namespace Connected.Components - -@inherits UIComponent - - - @ChildContent - diff --git a/src/Connected.Components/Components/Card/Card.razor.cs b/src/Connected.Components/Components/Card/Card.razor.cs deleted file mode 100644 index c9e1baa..0000000 --- a/src/Connected.Components/Components/Card/Card.razor.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class Card : UIComponent -{ - #region Content - /// - /// Child content of the component. - /// - [Parameter] - [Category(CategoryTypes.Card.Behavior)] - public RenderFragment ChildContent { get; set; } - #endregion - - #region Styling - protected string Classname => - new CssBuilder("card") - .AddClass(AdditionalClassList) - .Build(); - - /// - /// The higher the number, the heavier the drop-shadow. 0 for no shadow. - /// - [Parameter] - [Category(CategoryTypes.Card.Appearance)] - public int Elevation { set; get; } = 1; - - /// - /// If true, border-radius is set to 0. - /// - [Parameter] - [Category(CategoryTypes.Card.Appearance)] - public bool Square { get; set; } - - /// - /// If true, card will be outlined. - /// - [Parameter] - [Category(CategoryTypes.Card.Appearance)] - public bool Outlined { get; set; } - #endregion - -} diff --git a/src/Connected.Components/Components/Card/CardActions.razor b/src/Connected.Components/Components/Card/CardActions.razor deleted file mode 100644 index 8cdb0a6..0000000 --- a/src/Connected.Components/Components/Card/CardActions.razor +++ /dev/null @@ -1,7 +0,0 @@ -@namespace Connected.Components - -@inherits UIComponent - -
    - @ChildContent -
    diff --git a/src/Connected.Components/Components/Card/CardActions.razor.cs b/src/Connected.Components/Components/Card/CardActions.razor.cs deleted file mode 100644 index 8979a02..0000000 --- a/src/Connected.Components/Components/Card/CardActions.razor.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class CardActions : UIComponent -{ - #region Style - protected string Classname => - new CssBuilder("card-actions") - .AddClass(AdditionalClassList) - .Build(); - - #endregion - - #region Content - - /// - /// Child content of the component. - /// - [Parameter] - [Category(CategoryTypes.Card.Behavior)] - public RenderFragment ChildContent { get; set; } - - #endregion -} diff --git a/src/Connected.Components/Components/Card/CardContent.razor b/src/Connected.Components/Components/Card/CardContent.razor deleted file mode 100644 index 8cdb0a6..0000000 --- a/src/Connected.Components/Components/Card/CardContent.razor +++ /dev/null @@ -1,7 +0,0 @@ -@namespace Connected.Components - -@inherits UIComponent - -
    - @ChildContent -
    diff --git a/src/Connected.Components/Components/Card/CardContent.razor.cs b/src/Connected.Components/Components/Card/CardContent.razor.cs deleted file mode 100644 index 7c8cbca..0000000 --- a/src/Connected.Components/Components/Card/CardContent.razor.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class CardContent : UIComponent -{ - #region Style - protected string Classname => - new CssBuilder("card-content") - .AddClass(AdditionalClassList) - .Build(); - - #endregion - - #region Content - - /// - /// Child content of the component. - /// - [Parameter] - [Category(CategoryTypes.Card.Behavior)] - public RenderFragment ChildContent { get; set; } - - #endregion -} diff --git a/src/Connected.Components/Components/Card/CardHeader.razor b/src/Connected.Components/Components/Card/CardHeader.razor deleted file mode 100644 index f099d25..0000000 --- a/src/Connected.Components/Components/Card/CardHeader.razor +++ /dev/null @@ -1,22 +0,0 @@ -@namespace Connected.Components - -@inherits UIComponent - -
    - @if (CardHeaderAvatar is not null) - { -
    @CardHeaderAvatar
    - } - @if (CardHeaderContent is not null) - { -
    @CardHeaderContent
    - } - @if (CardHeaderActions is not null) - { -
    @CardHeaderActions
    - } - @if (ChildContent is not null) - { - @ChildContent - } -
    diff --git a/src/Connected.Components/Components/Card/CardHeader.razor.cs b/src/Connected.Components/Components/Card/CardHeader.razor.cs deleted file mode 100644 index f826226..0000000 --- a/src/Connected.Components/Components/Card/CardHeader.razor.cs +++ /dev/null @@ -1,48 +0,0 @@ -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class CardHeader : UIComponent -{ - #region Style - protected string Classname => - new CssBuilder("card-header") - .AddClass(AdditionalClassList) - .Build(); - - /// - /// If used renders child content of the CardHeaderAvatar. - /// - [Parameter] - [Category(CategoryTypes.Card.Behavior)] - public RenderFragment CardHeaderAvatar { get; set; } - - /// - /// If used renders child content of the CardHeaderContent. - /// - [Parameter] - [Category(CategoryTypes.Card.Behavior)] - public RenderFragment CardHeaderContent { get; set; } - - /// - /// If used renders child content of the CardHeaderActions. - /// - [Parameter] - [Category(CategoryTypes.Card.Behavior)] - public RenderFragment CardHeaderActions { get; set; } - - #endregion - - #region Content - - /// - /// Optional child content - /// - [Parameter] - [Category(CategoryTypes.Card.Behavior)] - public RenderFragment ChildContent { get; set; } - - #endregion -} diff --git a/src/Connected.Components/Components/Card/CardMedia.razor b/src/Connected.Components/Components/Card/CardMedia.razor deleted file mode 100644 index 464838b..0000000 --- a/src/Connected.Components/Components/Card/CardMedia.razor +++ /dev/null @@ -1,5 +0,0 @@ -@namespace Connected.Components - -@inherits UIComponent - -
    diff --git a/src/Connected.Components/Components/Card/CardMedia.razor.cs b/src/Connected.Components/Components/Card/CardMedia.razor.cs deleted file mode 100644 index 88793be..0000000 --- a/src/Connected.Components/Components/Card/CardMedia.razor.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class CardMedia : UIComponent -{ - #region Style - protected string StyleString => - StyleBuilder.Default($"background-image:url(\"{Image}\");height: {Height}px;") - .Build(); - - protected string Classname => - new CssBuilder("card-media") - .AddClass(AdditionalClassList) - .Build(); - - /// - /// Specifies the height of the image in px. - /// - [Parameter] - [Category(CategoryTypes.Card.Behavior)] - public int Height { get; set; } = 300; - - #endregion - - #region Content - - /// - /// GlyphTitle of the image used for accessibility. - /// - [Parameter] - [Category(CategoryTypes.Card.Behavior)] - public string Title { get; set; } - - /// - /// Specifies the path to the image. - /// - [Parameter] - [Category(CategoryTypes.Card.Behavior)] - public string Image { get; set; } - - #endregion - -} diff --git a/src/Connected.Components/Components/Carousel/Carousel.razor b/src/Connected.Components/Components/Carousel/Carousel.razor deleted file mode 100644 index b8cb1b6..0000000 --- a/src/Connected.Components/Components/Carousel/Carousel.razor +++ /dev/null @@ -1,84 +0,0 @@ -@namespace Connected.Components -@inherits BindableItemsControlBase -@using Connected.Extensions -@implements IAsyncDisposable -@typeparam TData - -
    - - - - @*Selected Content*@ - @if (ItemsSource == null) - { - @ChildContent - } - else - { - foreach (TData item in ItemsSource) - { - - @ItemTemplate(item) - - } - } - - - @*Controls*@ -
    - @*Left Arrow*@ - @if (ShowArrows) - { - @if (PreviousButtonTemplate == null) - { - - } - else - { -
    - @PreviousButtonTemplate -
    - } - } - - @*Bullets*@ -
    - @if (ShowBullets) - { -
    - @for (int i = 0; i < Items.Count; i++) - { - int current = i; - if (BulletTemplate == null) - { - - } - else - { -
    - @BulletTemplate(current == SelectedIndex) -
    - } - } -
    - } -
    - - @*Right Arrow*@ - @if (ShowArrows) - { - @if (NextButtonTemplate == null) - { - - } - else - { -
    - @NextButtonTemplate -
    - } - } -
    - -
    -
    diff --git a/src/Connected.Components/Components/Carousel/Carousel.razor.cs b/src/Connected.Components/Components/Carousel/Carousel.razor.cs deleted file mode 100644 index 0d1646b..0000000 --- a/src/Connected.Components/Components/Carousel/Carousel.razor.cs +++ /dev/null @@ -1,363 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class Carousel : BindableItemsControlBase, IAsyncDisposable -{ - #region Variables - - private Timer _timer; - private bool _autoCycle = true; - private ThemeColor _currentColor = ThemeColor.Inherit; - private TimeSpan _cycleTimeout = TimeSpan.FromSeconds(5); - private void TimerElapsed(object stateInfo) => InvokeAsync(async () => await TimerTickAsync()); - - #endregion - - #region Events - /// - /// Called when selected Index changed on base class - /// - protected override void SelectionChanged() - { - InvokeAsync(async () => await ResetTimerAsync()); - - _currentColor = SelectedContainer?.Color ?? ThemeColor.Inherit; - } - - //When an item is added, it automatically checks the color - public override void AddItem(CarouselItem item) - { - Items.Add(item); - if (Items.Count - 1 == SelectedIndex) - { - _currentColor = item.Color; - StateHasChanged(); - } - } - - /// - /// Provides Selection changes by horizontal swipe gesture - /// - private void OnSwipe(SwipeDirection direction) - { - if (!EnableSwipeGesture) - { - return; - } - - switch (direction) - { - case SwipeDirection.LeftToRight: - if (RightToLeft) Next(); - else Previous(); - break; - - case SwipeDirection.RightToLeft: - if (RightToLeft) Previous(); - else Next(); - break; - } - } - - /// - /// Immediately starts the AutoCycle timer - /// - private ValueTask StartTimerAsync() - { - if (AutoCycle) - _timer?.Change(AutoCycleTime, TimeSpan.Zero); - - return ValueTask.CompletedTask; - } - - /// - /// Immediately stops the AutoCycle timer - /// - private ValueTask StopTimerAsync() - { - _timer?.Change(Timeout.Infinite, Timeout.Infinite); - return ValueTask.CompletedTask; - } - - /// - /// Stops and restart the AutoCycle timer - /// - private async ValueTask ResetTimerAsync() - { - await StopTimerAsync(); - await StartTimerAsync(); - } - - - /// - /// Changes the SelectedIndex to a next one (or restart on 0) - /// - private async ValueTask TimerTickAsync() - { - await InvokeAsync(Next); - } - #endregion - - #region Styling - protected string Classname => - new CssBuilder("carousel") - .AddClass($"carousel-{(BulletsColor ?? _currentColor).ToDescription()}") - .AddClass(AdditionalClassList) - .Build(); - - protected string NavigationButtonsClassName => - new CssBuilder() - .AddClass($"align-self-{ConvertPosition(ArrowsPosition).ToDescription()}", !(NavigationButtonsClass ?? "").Contains("align-self-")) - .AddClass("carousel-elements-rtl", RightToLeft) - .AddClass(NavigationButtonsClass) - .Build(); - - protected string BulletsButtonsClassName => - new CssBuilder() - .AddClass(BulletsClass) - .Build(); - - private static Position ConvertPosition(Position position) - { - return position switch - { - Position.Top => Position.Start, - Position.Start => Position.Start, - Position.Bottom => Position.End, - Position.End => Position.End, - _ => position - }; - } - - [CascadingParameter(Name = "RightToLeft")] public bool RightToLeft { get; set; } - - - /// - /// Gets or Sets if 'Next' and 'Previous' arrows must be visible - /// - [Parameter] - [Category(CategoryTypes.Carousel.Behavior)] - public bool ShowArrows { get; set; } = true; - - /// - /// Sets the position of the arrows. By default, the position is the Center position - /// - [Parameter] - [Category(CategoryTypes.Carousel.Appearance)] - public Position ArrowsPosition { get; set; } = Position.Center; - - /// - /// Sets the position of the bullets. By default, the position is the Bottom position - /// - [Category(CategoryTypes.Carousel.Appearance)] - [Parameter] public Position BulletsPosition { get; set; } = Position.Bottom; - - /// - /// Gets or Sets the Bullets color. - /// If not set, the color is determined based on the property of the active child. - /// - [Category(CategoryTypes.Carousel.Appearance)] - [Parameter] public ThemeColor? BulletsColor { get; set; } - - /// - /// Gets or Sets the Delimiters color. - /// If not set, the color is determined based on the property of the active child. - /// Deprecated, use BulletsColor instead. - /// - [Obsolete($"Use {nameof(BulletsColor)} instead", false)] - [Category(CategoryTypes.Carousel.Appearance)] - [ExcludeFromCodeCoverage] - [Parameter] public ThemeColor? DelimitersColor { get => BulletsColor; set => BulletsColor = value; } - - /// - /// Gets or Sets custom class(es) for 'Next' and 'Previous' arrows - /// - [Parameter] - [Category(CategoryTypes.Carousel.Appearance)] - public string NavigationButtonsClass { get; set; } - - /// - /// Gets or Sets custom class(es) for Bullets buttons - /// - [Category(CategoryTypes.Carousel.Appearance)] - [Parameter] public string BulletsClass { get; set; } - - /// - /// Gets or Sets custom class(es) for Delimiters buttons. - /// Deprecated, use BulletsClass instead. - /// - [Category(CategoryTypes.Carousel.Appearance)] - [Obsolete($"Use {nameof(BulletsClass)} instead", false)] - [ExcludeFromCodeCoverage] - [Parameter] public string DelimitersClass { get => BulletsClass; set => BulletsClass = value; } - - /// - /// Custom previous navigation icon. - /// - [Parameter] - [Category(CategoryTypes.Carousel.Appearance)] - public string PreviousIcon { get; set; } = Icons.Material.Filled.NavigateBefore; - - /// - /// Custom selected bullet icon. - /// - [Parameter] - [Category(CategoryTypes.Carousel.Appearance)] - public string CheckedIcon { get; set; } = Icons.Material.Filled.RadioButtonChecked; - - /// - /// Custom unselected bullet icon. - /// - [Parameter] - [Category(CategoryTypes.Carousel.Appearance)] - public string UncheckedIcon { get; set; } = Icons.Material.Filled.RadioButtonUnchecked; - - /// - /// Custom next navigation icon. - /// - [Parameter] - [Category(CategoryTypes.Carousel.Appearance)] - public string NextIcon { get; set; } = Icons.Material.Filled.NavigateNext; - - /// - /// Gets or Sets the Template for the Left Arrow - /// - [Parameter] - [Category(CategoryTypes.Carousel.Appearance)] - public RenderFragment NextButtonTemplate { get; set; } - - - /// - /// Gets or Sets the Template for the Right Arrow - /// - [Parameter] - [Category(CategoryTypes.Carousel.Appearance)] - public RenderFragment PreviousButtonTemplate { get; set; } - - - /// - /// Gets or Sets the Template for Bullets - /// - [Category(CategoryTypes.Carousel.Appearance)] - [Parameter] public RenderFragment BulletTemplate { get; set; } - - /// - /// Gets or Sets the Template for Delimiters. - /// Deprecated, use BulletsTemplate instead. - /// - [Category(CategoryTypes.Carousel.Appearance)] - [Obsolete($"Use {nameof(BulletTemplate)} instead", false)] - [ExcludeFromCodeCoverage] - [Parameter] public RenderFragment DelimiterTemplate { get => BulletTemplate; set => BulletTemplate = value; } - - #endregion - - #region Behavior - /// - /// Gets or Sets if bar with Bullets must be visible - /// - [Category(CategoryTypes.Carousel.Behavior)] - [Parameter] public bool ShowBullets { get; set; } = true; - - /// - /// Gets or Sets if bottom bar with Delimiters must be visible. - /// Deprecated, use ShowBullets instead. - /// - [Category(CategoryTypes.Carousel.Behavior)] - [Obsolete($"Use {nameof(ShowBullets)} instead", false)] - [ExcludeFromCodeCoverage] - [Parameter] public bool ShowDelimiters { get => ShowBullets; set => ShowBullets = value; } - - - /// - /// Gets or Sets automatic cycle on item collection. - /// - [Parameter] - [Category(CategoryTypes.Carousel.Behavior)] - public bool AutoCycle - { - get => _autoCycle; - set - { - _autoCycle = value; - - if (_autoCycle) - InvokeAsync(async () => await ResetTimerAsync()); - - else - InvokeAsync(async () => await StopTimerAsync()); - } - } - - - /// - /// Gets or Sets the Auto Cycle time - /// - [Parameter] - [Category(CategoryTypes.Carousel.Behavior)] - public TimeSpan AutoCycleTime - { - get => _cycleTimeout; - set - { - _cycleTimeout = value; - - if (_autoCycle == true) - InvokeAsync(async () => await ResetTimerAsync()); - - else - InvokeAsync(async () => await StopTimerAsync()); - } - } - - - - - /// - /// Gets or Sets if swipe gestures are allowed for touch devices. - /// - [Category(CategoryTypes.Carousel.Behavior)] - [Parameter] - public bool EnableSwipeGesture { get; set; } = true; - #endregion - - #region Lifecycle - protected override async Task OnAfterRenderAsync(bool firstRender) - { - await base.OnAfterRenderAsync(firstRender); - - if (firstRender) - { - _timer = new Timer(TimerElapsed, null, AutoCycle ? AutoCycleTime : Timeout.InfiniteTimeSpan, AutoCycleTime); - } - } - - public async ValueTask DisposeAsync() - { - await DisposeAsync(true); - GC.SuppressFinalize(this); - } - - - protected virtual async ValueTask DisposeAsync(bool disposing) - { - if (disposing) - { - await StopTimerAsync(); - - var timer = _timer; - if (timer != null) - { - _timer = null; - await timer.DisposeAsync(); - } - } - } - #endregion - -} diff --git a/src/Connected.Components/Components/Carousel/CarouselItem.razor b/src/Connected.Components/Components/Carousel/CarouselItem.razor deleted file mode 100644 index 4ad06a8..0000000 --- a/src/Connected.Components/Components/Carousel/CarouselItem.razor +++ /dev/null @@ -1,10 +0,0 @@ -@namespace Connected.Components - -@inherits UIComponent - -@if (IsVisible) -{ -
    - @ChildContent -
    -} \ No newline at end of file diff --git a/src/Connected.Components/Components/Carousel/CarouselItem.razor.cs b/src/Connected.Components/Components/Carousel/CarouselItem.razor.cs deleted file mode 100644 index 07c4df4..0000000 --- a/src/Connected.Components/Components/Carousel/CarouselItem.razor.cs +++ /dev/null @@ -1,99 +0,0 @@ -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class CarouselItem : UIComponent, IDisposable -{ - #region Variables - private bool _disposed = false; - #endregion - - #region Content - [Parameter] - [Category(CategoryTypes.Carousel.Behavior)] - public RenderFragment ChildContent { get; set; } - - [CascadingParameter] protected internal ItemsControlBase Parent { get; set; } - #endregion - - #region Styling - protected string Classname => - new CssBuilder("carousel-item") - .AddClass($"carousel-item-{Color.ToDescription()}") - .AddClass("carousel-item-exit", !_disposed && Parent.LastContainer == this) - - .AddClass("carousel-transition-fade-in", !_disposed && Transition == Transition.Fade && Parent.SelectedContainer == this) - .AddClass("carousel-transition-fade-out", !_disposed && Transition == Transition.Fade && Parent.LastContainer == this) - - .AddClass("carousel-transition-slide-next-enter", !_disposed && Transition == Transition.Slide && RightToLeft == false && Parent.SelectedContainer == this && Parent._moveNext) - .AddClass("carousel-transition-slide-next-exit", !_disposed && Transition == Transition.Slide && RightToLeft == false && Parent.LastContainer == this && Parent._moveNext) - - .AddClass("carousel-transition-slide-prev-enter", !_disposed && Transition == Transition.Slide && RightToLeft == false && Parent.SelectedContainer == this && !Parent._moveNext) - .AddClass("carousel-transition-slide-prev-exit", !_disposed && Transition == Transition.Slide && RightToLeft == false && Parent.LastContainer == this && !Parent._moveNext) - - .AddClass("carousel-transition-slide-next-rtl-enter", !_disposed && Transition == Transition.Slide && RightToLeft == true && Parent.SelectedContainer == this && Parent._moveNext) - .AddClass("carousel-transition-slide-next-rtl-exit", !_disposed && Transition == Transition.Slide && RightToLeft == true && Parent.LastContainer == this && Parent._moveNext) - - .AddClass("carousel-transition-slide-prev-rtl-enter", !_disposed && Transition == Transition.Slide && RightToLeft == true && Parent.SelectedContainer == this && !Parent._moveNext) - .AddClass("carousel-transition-slide-prev-rtl-exit", !_disposed && Transition == Transition.Slide && RightToLeft == true && Parent.LastContainer == this && !Parent._moveNext) - - .AddClass("carousel-transition-none", !_disposed && Transition == Transition.None && Parent.SelectedContainer != this) - - .AddClass(CustomTransitionEnter, !_disposed && Transition == Transition.Custom && Parent.SelectedContainer == this && Parent.SelectedContainer == this) - .AddClass(CustomTransitionExit, !_disposed && Transition == Transition.Custom && Parent.LastContainer == this && Parent.LastContainer == this) - - .AddClass(AdditionalClassList) - .Build(); - - /// - /// The color of the component. It supports the theme colors. - /// - [Parameter] - [Category(CategoryTypes.Carousel.Appearance)] - public ThemeColor Color { get; set; } = ThemeColor.Default; - - /// - /// The transition effect of the component. - /// - [Parameter] - [Category(CategoryTypes.Carousel.Appearance)] - public Transition Transition { get; set; } = Transition.Slide; - - /// - /// The name of custom transition on entrance time - /// - [Parameter] - [Category(CategoryTypes.Carousel.Appearance)] - public string CustomTransitionEnter { get; set; } - - /// - /// The name of custom transition on exiting time - /// - [Parameter] - [Category(CategoryTypes.Carousel.Appearance)] - public string CustomTransitionExit { get; set; } - - [CascadingParameter(Name = "RightToLeft")] public bool RightToLeft { get; set; } - - public bool IsVisible => Parent != null && (Parent.LastContainer == this || Parent.SelectedIndex == Parent.Items.IndexOf(this)); - #endregion - - #region Lifecycle - protected override Task OnInitializedAsync() - { - Parent?.AddItem(this); - return Task.CompletedTask; - } - - - public void Dispose() - { - _disposed = true; - Parent?.Items.Remove(this); - } - #endregion - -} diff --git a/src/Connected.Components/Components/Chart/Chart.razor b/src/Connected.Components/Components/Chart/Chart.razor deleted file mode 100644 index d32f750..0000000 --- a/src/Connected.Components/Components/Chart/Chart.razor +++ /dev/null @@ -1,25 +0,0 @@ -@namespace Connected.Components - -@inherits UIComponent - - -
    - @if (ChartType == ChartType.Donut) - { - - } - @if (ChartType == ChartType.Pie) - { - - } - @if (ChartType == ChartType.Line) - { - - } - @if (ChartType == ChartType.Bar) - { - - } -
    -
    - diff --git a/src/Connected.Components/Components/Chart/Chart.razor.cs b/src/Connected.Components/Components/Chart/Chart.razor.cs deleted file mode 100644 index f76d160..0000000 --- a/src/Connected.Components/Components/Chart/Chart.razor.cs +++ /dev/null @@ -1,145 +0,0 @@ -using System.Globalization; -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class Chart : UIComponent -{ - - #region Variables - private int _selectedIndex; - #endregion - - #region Events - /// - /// Selected index of a portion of the chart. - /// - [Parameter] public EventCallback SelectedIndexChanged { get; set; } - - /// - /// Scales the input data to the range between 0 and 1 - /// - protected double[] GetNormalizedData() - { - if (InputData == null) - return Array.Empty(); - var total = InputData.Sum(); - return InputData.Select(x => Math.Abs(x) / total).ToArray(); - } - - protected string ToS(double d, string format = null) - { - if (string.IsNullOrEmpty(format)) - return d.ToString(CultureInfo.InvariantCulture); - - return d.ToString(format); - } - private Position ConvertLegendPosition(Position position) - { - return position switch - { - Position.Start => RightToLeft ? Position.Right : Position.Left, - Position.End => RightToLeft ? Position.Left : Position.Right, - _ => position - }; - } - #endregion - - #region Styling - [Parameter] - [Category(CategoryTypes.Chart.Appearance)] - public ChartOptions ChartOptions { get; set; } = new(); - - /// - /// RenderFragment for costumization inside the chart's svg. - /// - [Parameter] - [Category(CategoryTypes.Chart.Appearance)] - public RenderFragment CustomGraphics { get; set; } - - protected string Classname => - new CssBuilder("chart") - .AddClass($"chart-legend-{ConvertLegendPosition(LegendPosition).ToDescription()}") - .AddClass(AdditionalClassList) - .Build(); - - [CascadingParameter(Name = "RightToLeft")] public bool RightToLeft { get; set; } - - /// - /// The Width of the chart, end with % or px. - /// - [Parameter] - [Category(CategoryTypes.Chart.Appearance)] - public string Width { get; set; } = "80%"; - - /// - /// The Height of the chart, end with % or px. - /// - [Parameter] - [Category(CategoryTypes.Chart.Appearance)] - public string Height { get; set; } = "80%"; - - /// - /// The placement direction of the legend if used. - /// - [Parameter] - [Category(CategoryTypes.Chart.Appearance)] - public Position LegendPosition { get; set; } = Position.Bottom; - - #endregion - - #region Behavior - [Parameter] - [Category(CategoryTypes.Chart.Behavior)] - public double[] InputData { get; set; } = Array.Empty(); - - [Parameter] - [Category(CategoryTypes.Chart.Behavior)] - public string[] InputLabels { get; set; } = Array.Empty(); - - [Parameter] - [Category(CategoryTypes.Chart.Behavior)] - public string[] XAxisLabels { get; set; } = Array.Empty(); - - [Parameter] - [Category(CategoryTypes.Chart.Behavior)] - public List ChartSeries { get; set; } = new(); - /// - /// The Type of the chart. - /// - [Parameter] - [Category(CategoryTypes.Chart.Behavior)] - public ChartType ChartType { get; set; } - - /// - /// Selected index of a portion of the chart. - /// - [Parameter] - [Category(CategoryTypes.Chart.Behavior)] - public int SelectedIndex - { - get => _selectedIndex; - set - { - if (value != _selectedIndex) - { - _selectedIndex = value; - SelectedIndexChanged.InvokeAsync(value); - } - } - } - - #endregion - -} - -public enum ChartType -{ - Donut, - Line, - Pie, - Bar -} diff --git a/src/Connected.Components/Components/Chart/Charts/Bar.razor b/src/Connected.Components/Components/Chart/Charts/Bar.razor deleted file mode 100644 index f081599..0000000 --- a/src/Connected.Components/Components/Chart/Charts/Bar.razor +++ /dev/null @@ -1,45 +0,0 @@ -@namespace Connected.Components -@using System.Globalization; -@inherits Chart - - - - - @foreach (var horizontalLine in _horizontalLines) - { - - } - - @if (ChartParent?.ChartOptions.XAxisLines==true) - { - - @foreach (var verticalLine in _verticalLines) - { - - } - - } - - - @foreach (var horizontalLineValue in _horizontalValues) - { - @((MarkupString)$"{horizontalLineValue.Value.ToString(CultureInfo.InvariantCulture)}") - } - - - @foreach (var verticalLineValue in _verticalValues) - { - @((MarkupString)$"{verticalLineValue.Value.ToString(CultureInfo.InvariantCulture)}") - } - - - @foreach (var bar in _bars) - { - - } - - - - @ChartParent?.CustomGraphics - - diff --git a/src/Connected.Components/Components/Chart/Charts/Bar.razor.cs b/src/Connected.Components/Components/Chart/Charts/Bar.razor.cs deleted file mode 100644 index d1b097a..0000000 --- a/src/Connected.Components/Components/Chart/Charts/Bar.razor.cs +++ /dev/null @@ -1,155 +0,0 @@ -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -partial class Bar : Chart -{ - #region Variables - [CascadingParameter] public Chart ChartParent { get; set; } - - private List _horizontalLines = new(); - private List _horizontalValues = new(); - - private List _verticalLines = new(); - private List _verticalValues = new(); - - private List _legends = new(); - private List _series = new(); - - private List _bars = new(); - #endregion - - #region Lifecycle - protected override void OnParametersSet() - { - base.OnParametersSet(); - _horizontalLines.Clear(); - _verticalLines.Clear(); - _horizontalValues.Clear(); - _verticalValues.Clear(); - _legends.Clear(); - _bars.Clear(); - - if (ChartParent != null) - _series = ChartParent.ChartSeries; - - var maxY = 0.0; - var numValues = 0; - var numXLabels = XAxisLabels.Length; - foreach (var item in _series) - { - if (numValues < item.Data.Length) - { - numValues = item.Data.Length; - } - foreach (int i in item.Data) - { - if (maxY < i) - { - maxY = i; - } - } - } - - var boundHeight = 350.0; - var boundWidth = 650.0; - - double gridYUnits = ChartParent?.ChartOptions.YAxisTicks ?? 20; - double gridXUnits = 30; - - var numVerticalLines = numValues - 1; - - var numHorizontalLines = ((int)(maxY / gridYUnits)) + 1; - - var verticalStartSpace = 25.0; - var horizontalStartSpace = 30.0; - var verticalEndSpace = 25.0; - var horizontalEndSpace = 30.0; - - var verticalSpace = (boundHeight - verticalStartSpace - verticalEndSpace) / (numHorizontalLines); - var horizontalSpace = (boundWidth - horizontalStartSpace - horizontalEndSpace) / (numVerticalLines); - - //Horizontal Grid Lines - var y = verticalStartSpace; - double startGridY = 0; - for (var counter = 0; counter <= numHorizontalLines; counter++) - { - var line = new SvgPath() - { - Index = counter, - Data = $"M {ToS(horizontalStartSpace)} {ToS((boundHeight - y))} L {ToS((boundWidth - horizontalEndSpace))} {ToS((boundHeight - y))}" - }; - _horizontalLines.Add(line); - - var lineValue = new SvgText() { X = (horizontalStartSpace - 10), Y = (boundHeight - y + 5), Value = ToS(startGridY, ChartParent?.ChartOptions.YAxisFormat) }; - _horizontalValues.Add(lineValue); - - startGridY += gridYUnits; - y += verticalSpace; - } - - //Vertical Grid Lines - var x = horizontalStartSpace; - double startGridX = 0; - for (var counter = 0; counter <= numVerticalLines; counter++) - { - - var line = new SvgPath() - { - Index = counter, - Data = $"M {ToS(x)} {ToS((boundHeight - verticalStartSpace))} L {ToS(x)} {ToS(verticalEndSpace)}" - }; - _verticalLines.Add(line); - - var xLabels = ""; - if (counter < numXLabels) - { - xLabels = XAxisLabels[counter]; - } - - var lineValue = new SvgText() { X = x, Y = boundHeight - 2, Value = xLabels }; - _verticalValues.Add(lineValue); - - startGridX += gridXUnits; - x += horizontalSpace; - } - - - //Bars - var colorcounter = 0; - double barsPerSeries = 0; - foreach (var item in _series) - { - double gridValueX = horizontalStartSpace + barsPerSeries; - double gridValueY = boundHeight - verticalStartSpace; - - foreach (var dataLine in item.Data) - { - var dataValue = dataLine * verticalSpace / gridYUnits; - var gridValue = gridValueY - dataValue; - var bar = $"M {ToS(gridValueX)} {ToS(gridValueY)} L {ToS(gridValueX)} {ToS(gridValue)}"; - - gridValueX += horizontalSpace; - - var line = new SvgPath() - { - Index = colorcounter, - Data = bar - }; - _bars.Add(line); - } - - barsPerSeries += 10; - - var legend = new SvgLegend() - { - Index = colorcounter, - Labels = item.Name - }; - colorcounter++; - _legends.Add(legend); - } - } - #endregion - -} diff --git a/src/Connected.Components/Components/Chart/Charts/Donut.razor b/src/Connected.Components/Components/Chart/Charts/Donut.razor deleted file mode 100644 index f2c4109..0000000 --- a/src/Connected.Components/Components/Chart/Charts/Donut.razor +++ /dev/null @@ -1,22 +0,0 @@ -@namespace Connected.Components -@using System.Globalization -@inherits Chart - - - - - @foreach (var item in _circles.ToList()) - { - - - } - - - @ChartParent?.CustomGraphics - - diff --git a/src/Connected.Components/Components/Chart/Charts/Donut.razor.cs b/src/Connected.Components/Components/Chart/Charts/Donut.razor.cs deleted file mode 100644 index 83c6807..0000000 --- a/src/Connected.Components/Components/Chart/Charts/Donut.razor.cs +++ /dev/null @@ -1,67 +0,0 @@ -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -partial class Donut : Chart -{ - #region Variables - [CascadingParameter] public Chart ChartParent { get; set; } - - private List _circles = new(); - private List _legends = new(); - - protected string ParentWidth => ChartParent?.Width; - protected string ParentHeight => ChartParent?.Height; - - #endregion - - #region Lifecycle - - protected override void OnParametersSet() - { - _circles.Clear(); - _legends.Clear(); - double counterClockwiseOffset = 25; - double totalPercent = 0; - double offset; - - var counter = 0; - foreach (var data in GetNormalizedData()) - { - var percent = data * 100; - var reversePercent = 100 - percent; - offset = 100 - totalPercent + counterClockwiseOffset; - totalPercent += percent; - - var circle = new SvgCircle() - { - Index = counter, - CX = 21, - CY = 21, - Radius = 15.91549430918954, - StrokeDashArray = $"{ToS(percent)} {ToS(reversePercent)}", - StrokeDashOffset = offset - }; - _circles.Add(circle); - - - var labels = ""; - if (counter < InputLabels.Length) - { - labels = InputLabels[counter]; - } - var legend = new SvgLegend() - { - Index = counter, - Labels = labels, - Data = data.ToString() - }; - _legends.Add(legend); - - counter += 1; - } - } - - #endregion - -} diff --git a/src/Connected.Components/Components/Chart/Charts/Line.razor b/src/Connected.Components/Components/Chart/Charts/Line.razor deleted file mode 100644 index 5f1a37c..0000000 --- a/src/Connected.Components/Components/Chart/Charts/Line.razor +++ /dev/null @@ -1,44 +0,0 @@ -@namespace Connected.Components -@using System.Globalization; -@inherits Chart - - - - - @foreach (var horizontalLine in _horizontalLines) - { - - } - - @if (ChartParent?.ChartOptions.XAxisLines==true) - { - - @foreach (var verticalLine in _verticalLines) - { - - } - - } - - - @foreach (var horizontalLineValue in _horizontalValues) - { - @((MarkupString)$"{horizontalLineValue.Value.ToString(CultureInfo.InvariantCulture)}") - } - - - @foreach (var verticalLineValue in _verticalValues) - { - @((MarkupString)$"{verticalLineValue.Value.ToString(CultureInfo.InvariantCulture)}") - } - - - @foreach (var chartLine in _chartLines) - { - - } - - - @ChartParent?.CustomGraphics - - diff --git a/src/Connected.Components/Components/Chart/Charts/Line.razor.cs b/src/Connected.Components/Components/Chart/Charts/Line.razor.cs deleted file mode 100644 index 4d6962c..0000000 --- a/src/Connected.Components/Components/Chart/Charts/Line.razor.cs +++ /dev/null @@ -1,239 +0,0 @@ -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -partial class Line : Chart -{ - #region Variables - - private const int MaxHorizontalGridLines = 100; - - [CascadingParameter] public Chart ChartParent { get; set; } - - private List _horizontalLines = new(); - private List _horizontalValues = new(); - - private List _verticalLines = new(); - private List _verticalValues = new(); - - private List _legends = new(); - private List _series = new(); - - private List _chartLines = new(); - - #endregion - - #region Lifecycle - - protected override void OnParametersSet() - { - base.OnParametersSet(); - _horizontalLines.Clear(); - _verticalLines.Clear(); - _horizontalValues.Clear(); - _verticalValues.Clear(); - _legends.Clear(); - _chartLines.Clear(); - - if (ChartParent != null) - _series = ChartParent.ChartSeries; - - var maxY = 0.0; - var numValues = 0; - var numXLabels = XAxisLabels.Length; - foreach (var item in _series) - { - if (numValues < item.Data.Length) - { - numValues = item.Data.Length; - } - foreach (int i in item.Data) - { - if (maxY < i) - { - maxY = i; - } - } - } - - var boundHeight = 350.0; - var boundWidth = 650.0; - - double gridYUnits = ChartParent?.ChartOptions.YAxisTicks ?? 20; - if (gridYUnits <= 0) - gridYUnits = 20; - int maxYTicks = ChartParent?.ChartOptions.MaxNumYAxisTicks ?? 100; - double gridXUnits = 30; - - var numVerticalLines = numValues - 1; - - var numHorizontalLines = ((int)(maxY / gridYUnits)) + 1; - - // this is a safeguard against millions of gridlines which might arise with very high values - while (numHorizontalLines > maxYTicks) - { - gridYUnits *= 2; - numHorizontalLines = ((int)(maxY / gridYUnits)) + 1; - } - - var verticalStartSpace = 25.0; - var horizontalStartSpace = 30.0; - var verticalEndSpace = 25.0; - var horizontalEndSpace = 30.0; - - var verticalSpace = (boundHeight - verticalStartSpace - verticalEndSpace) / (numHorizontalLines); - var horizontalSpace = (boundWidth - horizontalStartSpace - horizontalEndSpace) / (numVerticalLines); - var interpolationOption = ChartParent?.ChartOptions.InterpolationOption ?? InterpolationOption.Straight; - - //Horizontal Grid Lines - var y = verticalStartSpace; - double startGridY = 0; - for (var counter = 0; counter <= numHorizontalLines; counter++) - { - var line = new SvgPath() - { - Index = counter, - Data = $"M {ToS(horizontalStartSpace)} {ToS((boundHeight - y))} L {ToS((boundWidth - horizontalEndSpace))} {ToS((boundHeight - y))}" - }; - _horizontalLines.Add(line); - - var lineValue = new SvgText() { X = (horizontalStartSpace - 10), Y = (boundHeight - y + 5), Value = ToS(startGridY, ChartParent?.ChartOptions.YAxisFormat) }; - _horizontalValues.Add(lineValue); - - startGridY += gridYUnits; - y += verticalSpace; - } - - //Vertical Grid Lines - var x = horizontalStartSpace; - double startGridX = 0; - for (var counter = 0; counter <= numVerticalLines; counter++) - { - - var line = new SvgPath() - { - Index = counter, - Data = $"M {ToS(x)} {ToS((boundHeight - verticalStartSpace))} L {ToS(x)} {ToS(verticalEndSpace)}" - }; - _verticalLines.Add(line); - - var xLabels = ""; - if (counter < numXLabels) - { - xLabels = XAxisLabels[counter]; - } - - var lineValue = new SvgText() { X = x, Y = boundHeight - 2, Value = xLabels }; - _verticalValues.Add(lineValue); - - startGridX += gridXUnits; - x += horizontalSpace; - } - - - //Chart Lines - var colorcounter = 0; - foreach (var item in _series) - { - var chartLine = ""; - double gridValueX = 0; - double gridValueY = 0; - var firstTime = true; - double[] XValues = new double[item.Data.Length]; - double[] YValues = new double[item.Data.Length]; - ILineInterpolator interpolator; - for (var i = 0; i <= item.Data.Length - 1; i++) - { - if (i == 0) - XValues[i] = 30; - else - XValues[i] = XValues[i - 1] + horizontalSpace; - - var gridValue = (item.Data[i]) * verticalSpace / gridYUnits; - YValues[i] = boundHeight - (verticalStartSpace + gridValue); - - } - switch (interpolationOption) - { - case InterpolationOption.NaturalSpline: - interpolator = new NaturalSpline(XValues, YValues); - break; - case InterpolationOption.EndSlope: - interpolator = new EndSlopeSpline(XValues, YValues); - break; - case InterpolationOption.Periodic: - interpolator = new PeriodicSpline(XValues, YValues); - break; - case InterpolationOption.Straight: - default: - interpolator = new NoInterpolation(); - break; - } - - if (interpolator?.InterpolationRequired == true) - { - horizontalSpace = (boundWidth - horizontalStartSpace - horizontalEndSpace) / interpolator.InterpolatedXs.Length; - foreach (var yValue in interpolator.InterpolatedYs) - { - - if (firstTime) - { - - chartLine += "M "; - firstTime = false; - gridValueX = horizontalStartSpace; - gridValueY = verticalStartSpace; - } - else - { - chartLine += " L "; - gridValueX += horizontalSpace; - gridValueY = verticalStartSpace; - } - gridValueY = yValue; - chartLine = chartLine + ToS(gridValueX) + " " + ToS(gridValueY); - } - } - else - { - foreach (var dataLine in item.Data) - { - if (firstTime) - { - chartLine += "M "; - firstTime = false; - gridValueX = horizontalStartSpace; - gridValueY = verticalStartSpace; - } - else - { - chartLine += " L "; - gridValueX += horizontalSpace; - gridValueY = verticalStartSpace; - } - - var gridValue = ((double)dataLine) * verticalSpace / gridYUnits; - gridValueY = boundHeight - (gridValueY + gridValue); - chartLine = chartLine + ToS(gridValueX) + " " + ToS(gridValueY); - } - } - - var line = new SvgPath() - { - Index = colorcounter, - Data = chartLine - }; - - var legend = new SvgLegend() - { - Index = colorcounter, - Labels = item.Name - }; - colorcounter++; - _chartLines.Add(line); - _legends.Add(legend); - } - } - - #endregion -} diff --git a/src/Connected.Components/Components/Chart/Charts/Pie.razor b/src/Connected.Components/Components/Chart/Charts/Pie.razor deleted file mode 100644 index 55b039b..0000000 --- a/src/Connected.Components/Components/Chart/Charts/Pie.razor +++ /dev/null @@ -1,14 +0,0 @@ -@namespace Connected.Components -@using System.Globalization -@inherits Chart - - - - @foreach (var item in _paths.ToList()) - { - - } - - @ChartParent?.CustomGraphics - - diff --git a/src/Connected.Components/Components/Chart/Charts/Pie.razor.cs b/src/Connected.Components/Components/Chart/Charts/Pie.razor.cs deleted file mode 100644 index e0e9c6d..0000000 --- a/src/Connected.Components/Components/Chart/Charts/Pie.razor.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -partial class Pie : Chart -{ - #region Variables - [CascadingParameter] public Chart ChartParent { get; set; } - - private List _paths = new(); - private List _legends = new(); - - #endregion - - #region Lifecycle - - protected override void OnParametersSet() - { - _paths.Clear(); - _legends.Clear(); - double startx, starty, endx, endy; - var ndata = GetNormalizedData(); - double cumulativeRadians = 0; - for (var i = 0; i < ndata.Length; i++) - { - var data = ndata[i]; - startx = Math.Cos(cumulativeRadians); - starty = Math.Sin(cumulativeRadians); - cumulativeRadians += 2 * Math.PI * data; - endx = Math.Cos(cumulativeRadians); - endy = Math.Sin(cumulativeRadians); - var largeArcFlag = data > 0.5 ? 1 : 0; - var path = new SvgPath() - { - Index = i, - Data = $"M {ToS(startx)} {ToS(starty)} A 1 1 0 {ToS(largeArcFlag)} 1 {ToS(endx)} {ToS(endy)} L 0 0" - }; - _paths.Add(path); - } - - var counter = 0; - foreach (var data in ndata) - { - var percent = data * 100; - var labels = ""; - if (counter < InputLabels.Length) - { - labels = InputLabels[counter]; - } - var legend = new SvgLegend() - { - Index = counter, - Labels = labels, - Data = ToS(Math.Round(percent, 1)) - }; - _legends.Add(legend); - counter += 1; - } - } - #endregion -} diff --git a/src/Connected.Components/Components/Chart/Interpolation/EndSlopeSpline.cs b/src/Connected.Components/Components/Chart/Interpolation/EndSlopeSpline.cs deleted file mode 100644 index 88a795f..0000000 --- a/src/Connected.Components/Components/Chart/Interpolation/EndSlopeSpline.cs +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Work in this file is derived from code originally written by Hans-Peter Moser: - * http://www.mosismath.com/AngleSplines/EndSlopeSplines.html - */ - -namespace Connected.Components; - -public class EndSlopeSpline : SplineInterpolator -{ - public EndSlopeSpline(double[] xs, double[] ys, - int resolution = 10, double firstSlopeDegrees = 0, double lastSlopeDegrees = 0) : - base(xs, ys, resolution) - { - m = new Matrix(n); - gauss = new MatrixSolver(n, m); - - a = new double[n]; - b = new double[n]; - c = new double[n]; - d = new double[n]; - h = new double[n]; - - CalcParameters(firstSlopeDegrees, lastSlopeDegrees); - Integrate(); - Interpolate(); - } - - public void CalcParameters(double alpha, double beta) - { - for (int i = 0; i < n; i++) - a[i] = GivenYs[i]; - - for (int i = 0; i < n - 1; i++) - h[i] = GivenXs[i + 1] - GivenXs[i]; - - m.a[0, 0] = 2.0 * h[0]; - m.a[0, 1] = h[0]; - m.y[0] = 3 * ((a[1] - a[0]) / h[0] - Math.Tan(alpha * Math.PI / 180)); - - for (int i = 0; i < n - 2; i++) - { - m.a[i + 1, i] = h[i]; - m.a[i + 1, i + 1] = 2.0 * (h[i] + h[i + 1]); - if (i < n - 2) - m.a[i + 1, i + 2] = h[i + 1]; - - if ((h[i] != 0.0) && (h[i + 1] != 0.0)) - m.y[i + 1] = ((a[i + 2] - a[i + 1]) / h[i + 1] - (a[i + 1] - a[i]) / h[i]) * 3.0; - else - m.y[i + 1] = 0.0; - } - - m.a[n - 1, n - 2] = h[n - 2]; - m.a[n - 1, n - 1] = 2.0 * h[n - 2]; - m.y[n - 1] = 3.0 * (Math.Tan(beta * Math.PI / 180) - (a[n - 1] - a[n - 2]) / h[n - 2]); - - if (gauss.Eliminate() == false) - throw new InvalidOperationException(); - - gauss.Solve(); - - for (int i = 0; i < n; i++) - { - c[i] = m.x[i]; - } - for (int i = 0; i < n; i++) - { - if (h[i] != 0.0) - { - d[i] = 1.0 / 3.0 / h[i] * (c[i + 1] - c[i]); - b[i] = 1.0 / h[i] * (a[i + 1] - a[i]) - h[i] / 3.0 * (c[i + 1] + 2 * c[i]); - } - } - } -} diff --git a/src/Connected.Components/Components/Chart/Interpolation/ILineInterpolator.cs b/src/Connected.Components/Components/Chart/Interpolation/ILineInterpolator.cs deleted file mode 100644 index a9ac2e4..0000000 --- a/src/Connected.Components/Components/Chart/Interpolation/ILineInterpolator.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Connected.Components; - -public interface ILineInterpolator -{ - public double[] GivenYs { get; set; } - public double[] GivenXs { get; set; } - public double[] InterpolatedXs { get; set; } - public double[] InterpolatedYs { get; set; } - public bool InterpolationRequired { get; set; } - -} diff --git a/src/Connected.Components/Components/Chart/Interpolation/Matrix.cs b/src/Connected.Components/Components/Chart/Interpolation/Matrix.cs deleted file mode 100644 index 761b904..0000000 --- a/src/Connected.Components/Components/Chart/Interpolation/Matrix.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Connected.Components; - -public class Matrix -{ - public double[,] a; - public double[] y; - public double[] x; - - public Matrix(int size) - { - a = new double[size, size]; - y = new double[size]; - x = new double[size]; - } -} diff --git a/src/Connected.Components/Components/Chart/Interpolation/MatrixSolver.cs b/src/Connected.Components/Components/Chart/Interpolation/MatrixSolver.cs deleted file mode 100644 index 562598c..0000000 --- a/src/Connected.Components/Components/Chart/Interpolation/MatrixSolver.cs +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Work in this file is derived from code originally written by Hans-Peter Moser: - * http://www.mosismath.com/Basics/Basics.html - * http://www.mosismath.com/Matrix_Gauss/MatrixGauss.html - */ - -namespace Connected.Components; - -// Matrix equation solver using the Gaussian elimination algorithm -public class MatrixSolver -{ - public readonly Matrix m; - public readonly int maxOrder; - public bool calcError; - - public MatrixSolver(int size, Matrix mi) - { - maxOrder = size; - m = mi; - } - - void SwitchRows(int n) - { - double tempD; - int i, j; - for (i = n; i <= maxOrder - 2; i++) - { - for (j = 0; j <= maxOrder - 1; j++) - { - tempD = m.a[i, j]; - m.a[i, j] = m.a[i + 1, j]; - m.a[i + 1, j] = tempD; - } - tempD = m.y[i]; - m.y[i] = m.y[i + 1]; - m.y[i + 1] = tempD; - } - } - - public bool Eliminate() - { - int i, k, l; - calcError = false; - for (k = 0; k <= maxOrder - 2; k++) - { - for (i = k; i <= maxOrder - 2; i++) - { - if (Math.Abs(m.a[i + 1, i]) < 1e-8) - { - SwitchRows(i + 1); - } - if (m.a[i + 1, k] != 0.0) - { - for (l = k + 1; l <= maxOrder - 1; l++) - { - if (!calcError) - { - m.a[i + 1, l] = m.a[i + 1, l] * m.a[k, k] - m.a[k, l] * m.a[i + 1, k]; - if (m.a[i + 1, l] > 10E260) - { - m.a[i + 1, k] = 0; - calcError = true; - } - } - } - m.y[i + 1] = m.y[i + 1] * m.a[k, k] - m.y[k] * m.a[i + 1, k]; - m.a[i + 1, k] = 0; - } - } - } - return !calcError; - } - - public void Solve() - { - int k, l; - for (k = maxOrder - 1; k >= 0; k--) - { - for (l = maxOrder - 1; l >= k; l--) - { - m.y[k] = m.y[k] - m.x[l] * m.a[k, l]; - } - if (m.a[k, k] != 0) - m.x[k] = m.y[k] / m.a[k, k]; - else - m.x[k] = 0; - } - } -} diff --git a/src/Connected.Components/Components/Chart/Interpolation/NaturalSpline.cs b/src/Connected.Components/Components/Chart/Interpolation/NaturalSpline.cs deleted file mode 100644 index d230bb9..0000000 --- a/src/Connected.Components/Components/Chart/Interpolation/NaturalSpline.cs +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Work in this file is derived from code originally written by Hans-Peter Moser: - * http://www.mosismath.com/NaturalSplines/NaturalSplines.html - */ - -namespace Connected.Components; - -public class NaturalSpline : SplineInterpolator -{ - /// - /// Natural Spline data interpolator - /// - public NaturalSpline(double[] xs, double[] ys, int resolution = 10) : base(xs, ys, resolution) - { - m = new Matrix(n - 2); - gauss = new MatrixSolver(n - 2, m); - - a = new double[n]; - b = new double[n]; - c = new double[n]; - d = new double[n]; - h = new double[n - 1]; - - CalcParameters(); - Integrate(); - Interpolate(); - } - public void CalcParameters() - { - for (int i = 0; i < n; i++) - a[i] = GivenYs[i]; - - for (int i = 0; i < n - 1; i++) - h[i] = GivenXs[i + 1] - GivenXs[i]; - - for (int i = 0; i < n - 2; i++) - { - for (int k = 0; k < n - 2; k++) - { - m.a[i, k] = 0.0; - m.y[i] = 0.0; - m.x[i] = 0.0; - } - } - - for (int i = 0; i < n - 2; i++) - { - if (i == 0) - { - m.a[i, 0] = 2.0 * (h[0] + h[1]); - m.a[i, 1] = h[1]; - } - else - { - m.a[i, i - 1] = h[i]; - m.a[i, i] = 2.0 * (h[i] + h[i + 1]); - if (i < n - 3) - m.a[i, i + 1] = h[i + 1]; - } - - if ((h[i] != 0.0) && (h[i + 1] != 0.0)) - m.y[i] = ((a[i + 2] - a[i + 1]) / h[i + 1] - (a[i + 1] - a[i]) / h[i]) * 3.0; - else - m.y[i] = 0.0; - } - - if (gauss.Eliminate() == false) - throw new InvalidOperationException("error in matrix calculation"); - - gauss.Solve(); - - c[0] = 0.0; - c[n - 1] = 0.0; - - for (int i = 1; i < n - 1; i++) - c[i] = m.x[i - 1]; - - for (int i = 0; i < n - 1; i++) - { - if (h[i] != 0.0) - { - d[i] = 1.0 / 3.0 / h[i] * (c[i + 1] - c[i]); - b[i] = 1.0 / h[i] * (a[i + 1] - a[i]) - h[i] / 3.0 * (c[i + 1] + 2 * c[i]); - } - } - } -} diff --git a/src/Connected.Components/Components/Chart/Interpolation/NoInterpolation.cs b/src/Connected.Components/Components/Chart/Interpolation/NoInterpolation.cs deleted file mode 100644 index 1a7797c..0000000 --- a/src/Connected.Components/Components/Chart/Interpolation/NoInterpolation.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Connected.Components; - -public class NoInterpolation : ILineInterpolator -{ - public double[] GivenYs { get; set; } - public double[] GivenXs { get; set; } - public double[] InterpolatedXs { get; set; } - public double[] InterpolatedYs { get; set; } - public bool InterpolationRequired { get; set; } = false; -} diff --git a/src/Connected.Components/Components/Chart/Interpolation/PeriodicSpline.cs b/src/Connected.Components/Components/Chart/Interpolation/PeriodicSpline.cs deleted file mode 100644 index e84b561..0000000 --- a/src/Connected.Components/Components/Chart/Interpolation/PeriodicSpline.cs +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Work in this file is derived from code originally written by Hans-Peter Moser: - * http://www.mosismath.com/PeriodicSplines/PeriodicSplines.html - */ - -namespace Connected.Components; - -public class PeriodicSpline : SplineInterpolator -{ - public PeriodicSpline(double[] xs, double[] ys, int resolution = 10) : base(xs, ys, resolution) - { - m = new Matrix(n - 1); - gauss = new MatrixSolver(n - 1, m); - - a = new double[n + 1]; - b = new double[n + 1]; - c = new double[n + 1]; - d = new double[n + 1]; - h = new double[n]; - - CalcParameters(); - Integrate(); - Interpolate(); - } - - public void CalcParameters() - { - for (int i = 0; i < n; i++) - a[i] = GivenYs[i]; - - for (int i = 0; i < n - 1; i++) - h[i] = GivenXs[i + 1] - GivenXs[i]; - - a[n] = GivenYs[1]; - h[n - 1] = h[0]; - - for (int i = 0; i < n - 1; i++) - for (int k = 0; k < n - 1; k++) - { - m.a[i, k] = 0.0; - m.y[i] = 0.0; - m.x[i] = 0.0; - } - - for (int i = 0; i < n - 1; i++) - { - if (i == 0) - { - m.a[i, 0] = 2.0 * (h[0] + h[1]); - m.a[i, 1] = h[1]; - } - else - { - m.a[i, i - 1] = h[i]; - m.a[i, i] = 2.0 * (h[i] + h[i + 1]); - if (i < n - 2) - m.a[i, i + 1] = h[i + 1]; - } - if ((h[i] != 0.0) && (h[i + 1] != 0.0)) - m.y[i] = ((a[i + 2] - a[i + 1]) / h[i + 1] - (a[i + 1] - a[i]) / h[i]) * 3.0; - else - m.y[i] = 0.0; - } - - m.a[0, n - 2] = h[0]; - m.a[n - 2, 0] = h[0]; - - if (gauss.Eliminate() == false) - throw new InvalidOperationException(); - - gauss.Solve(); - - for (int i = 1; i < n; i++) - c[i] = m.x[i - 1]; - c[0] = c[n - 1]; - - for (int i = 0; i < n; i++) - { - if (h[i] != 0.0) - { - d[i] = 1.0 / 3.0 / h[i] * (c[i + 1] - c[i]); - b[i] = 1.0 / h[i] * (a[i + 1] - a[i]) - h[i] / 3.0 * (c[i + 1] + 2 * c[i]); - } - } - } -} diff --git a/src/Connected.Components/Components/Chart/Interpolation/SplineInterpolator.cs b/src/Connected.Components/Components/Chart/Interpolation/SplineInterpolator.cs deleted file mode 100644 index 13f14f7..0000000 --- a/src/Connected.Components/Components/Chart/Interpolation/SplineInterpolator.cs +++ /dev/null @@ -1,83 +0,0 @@ -namespace Connected.Components; - -public abstract class SplineInterpolator : ILineInterpolator -{ - protected Matrix m; - protected MatrixSolver gauss; - - protected readonly int n; - protected double[] a, b, c, d, h; - - public double[] GivenYs { get; set; } - public double[] GivenXs { get; set; } - public double[] InterpolatedXs { get; set; } - public double[] InterpolatedYs { get; set; } - public bool InterpolationRequired { get; set; } = true; - - public SplineInterpolator(double[] xs, double[] ys, int resolution = 10) - { - if (xs is null || ys is null) - throw new ArgumentException("xs and ys cannot be null"); - - if (xs.Length != ys.Length) - throw new ArgumentException("xs and ys must have the same length"); - - if (xs.Length < 4) - throw new ArgumentException("xs and ys must have a length of 4 or greater"); - - if (resolution < 1) - throw new ArgumentException("resolution must be 1 or greater"); - - GivenXs = xs; - GivenYs = ys; - n = xs.Length; - - InterpolatedXs = new double[n * resolution]; - InterpolatedYs = new double[n * resolution]; - } - public void Interpolate() - { - int resolution = InterpolatedXs.Length / n; - for (int i = 0; i < h.Length; i++) - { - for (int k = 0; k < resolution; k++) - { - double deltaX = (double)k / resolution * h[i]; - double termA = a[i]; - double termB = b[i] * deltaX; - double termC = c[i] * deltaX * deltaX; - double termD = d[i] * deltaX * deltaX * deltaX; - int interpolatedIndex = i * resolution + k; - InterpolatedXs[interpolatedIndex] = deltaX + GivenXs[i]; - InterpolatedYs[interpolatedIndex] = termA + termB + termC + termD; - } - } - - // After interpolation the last several values of the interpolated arrays - // contain uninitialized data. This section identifies the values which are - // populated with values and copies just the useful data into new arrays. - int pointsToKeep = resolution * (n - 1) + 1; - double[] interpolatedXsCopy = new double[pointsToKeep]; - double[] interpolatedYsCopy = new double[pointsToKeep]; - Array.Copy(InterpolatedXs, 0, interpolatedXsCopy, 0, pointsToKeep - 1); - Array.Copy(InterpolatedYs, 0, interpolatedYsCopy, 0, pointsToKeep - 1); - InterpolatedXs = interpolatedXsCopy; - InterpolatedYs = interpolatedYsCopy; - InterpolatedXs[pointsToKeep - 1] = GivenXs[n - 1]; - InterpolatedYs[pointsToKeep - 1] = GivenYs[n - 1]; - } - - public double Integrate() - { - double integral = 0; - for (int i = 0; i < h.Length; i++) - { - double termA = a[i] * h[i]; - double termB = b[i] * Math.Pow(h[i], 2) / 2.0; - double termC = c[i] * Math.Pow(h[i], 3) / 3.0; - double termD = d[i] * Math.Pow(h[i], 4) / 4.0; - integral += termA + termB + termC + termD; - } - return integral; - } -} diff --git a/src/Connected.Components/Components/Chart/Models/ChartOptions.cs b/src/Connected.Components/Components/Chart/Models/ChartOptions.cs deleted file mode 100644 index 4fc7497..0000000 --- a/src/Connected.Components/Components/Chart/Models/ChartOptions.cs +++ /dev/null @@ -1,40 +0,0 @@ -namespace Connected.Components; - -public class ChartOptions -{ - /// - /// Spacing of Y-axis ticks. - /// - public int YAxisTicks { get; set; } = 20; - - /// - /// Maximum number of Y-axis ticks. The ticks will be thinned out if the value range is leading to too many ticks. - /// - public int MaxNumYAxisTicks { get; set; } = 20; - - public string YAxisFormat { get; set; } - public bool YAxisLines { get; set; } = true; - public bool XAxisLines { get; set; } - - /// - /// If true, legend will not be displayed. - /// - public bool DisableLegend { get; set; } - public string[] ChartPalette { get; set; } = { Colors.Blue.Accent3, Colors.Teal.Accent3, Colors.Amber.Accent3, Colors.Orange.Accent3, Colors.Red.Accent3, Colors.DeepPurple.Accent3, - Colors.Green.Accent3, Colors.LightBlue.Accent3, Colors.Teal.Lighten1, Colors.Amber.Lighten1, Colors.Orange.Lighten1, Colors.Red.Lighten1, - Colors.DeepPurple.Lighten1, Colors.Green.Lighten1, Colors.LightBlue.Lighten1, Colors.Amber.Darken2, Colors.Orange.Darken2, - Colors.Red.Darken2, Colors.DeepPurple.Darken2, Colors.Grey.Darken2 }; - public InterpolationOption InterpolationOption { get; set; } = InterpolationOption.Straight; - - /// - /// Line width of series in px - /// - public double LineStrokeWidth { get; set; } = 3; -} -public enum InterpolationOption -{ - NaturalSpline, - EndSlope, - Periodic, - Straight -} diff --git a/src/Connected.Components/Components/Chart/Models/ChartSeries.cs b/src/Connected.Components/Components/Chart/Models/ChartSeries.cs deleted file mode 100644 index f49f747..0000000 --- a/src/Connected.Components/Components/Chart/Models/ChartSeries.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Connected.Components; - -public class ChartSeries -{ - public string Name { get; set; } - - public double[] Data { get; set; } -} diff --git a/src/Connected.Components/Components/Chart/Parts/Filters.razor b/src/Connected.Components/Components/Chart/Parts/Filters.razor deleted file mode 100644 index 80a95cd..0000000 --- a/src/Connected.Components/Components/Chart/Parts/Filters.razor +++ /dev/null @@ -1,5 +0,0 @@ -@namespace Connected.Components - - - - \ No newline at end of file diff --git a/src/Connected.Components/Components/Chart/Parts/Legend.razor b/src/Connected.Components/Components/Chart/Parts/Legend.razor deleted file mode 100644 index 020e134..0000000 --- a/src/Connected.Components/Components/Chart/Parts/Legend.razor +++ /dev/null @@ -1,15 +0,0 @@ -@namespace Connected.Components -@inherits Chart - -@if (ChartParent?.ChartOptions.DisableLegend != true) -{ -
    - @foreach (var item in Data) - { -
    { if (ChartParent!=null) { ChartParent.SelectedIndex=item.Index; }}) @onclick:stopPropagation=@(ChartParent!=null)> - - @item.Labels -
    - } -
    -} diff --git a/src/Connected.Components/Components/Chart/Parts/Legend.razor.cs b/src/Connected.Components/Components/Chart/Parts/Legend.razor.cs deleted file mode 100644 index 3b59843..0000000 --- a/src/Connected.Components/Components/Chart/Parts/Legend.razor.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class Legend : Chart -{ - [CascadingParameter] public Chart ChartParent { get; set; } - [Parameter] public List Data { get; set; } = new List(); -} diff --git a/src/Connected.Components/Components/Chart/Svg/SvgCircle.cs b/src/Connected.Components/Components/Chart/Svg/SvgCircle.cs deleted file mode 100644 index b31a88d..0000000 --- a/src/Connected.Components/Components/Chart/Svg/SvgCircle.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Connected.Components; - -public class SvgCircle -{ - public int Index { get; set; } - public double CX { get; set; } - public double CY { get; set; } - public double Radius { get; set; } - public string StrokeDashArray { get; set; } - public double StrokeDashOffset { get; set; } -} diff --git a/src/Connected.Components/Components/Chart/Svg/SvgLegend.cs b/src/Connected.Components/Components/Chart/Svg/SvgLegend.cs deleted file mode 100644 index 381d30d..0000000 --- a/src/Connected.Components/Components/Chart/Svg/SvgLegend.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Connected.Components; - -public class SvgLegend -{ - public int Index { get; set; } - public string Labels { get; set; } - public string Data { get; set; } -} diff --git a/src/Connected.Components/Components/Chart/Svg/SvgPath.cs b/src/Connected.Components/Components/Chart/Svg/SvgPath.cs deleted file mode 100644 index aee9908..0000000 --- a/src/Connected.Components/Components/Chart/Svg/SvgPath.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Connected.Components; - -public class SvgPath -{ - public int Index { get; set; } - public string Data { get; set; } -} diff --git a/src/Connected.Components/Components/Chart/Svg/SvgText.cs b/src/Connected.Components/Components/Chart/Svg/SvgText.cs deleted file mode 100644 index 47638fb..0000000 --- a/src/Connected.Components/Components/Chart/Svg/SvgText.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Connected.Components; - -public class SvgText -{ - public double X { get; set; } - public double Y { get; set; } - public string Value { get; set; } -} diff --git a/src/Connected.Components/Components/CheckBox/CheckBox.razor b/src/Connected.Components/Components/CheckBox/CheckBox.razor deleted file mode 100644 index c2301b9..0000000 --- a/src/Connected.Components/Components/CheckBox/CheckBox.razor +++ /dev/null @@ -1,25 +0,0 @@ -@namespace Connected.Components -@inherits BooleanInput -@typeparam T - - - - - - \ No newline at end of file diff --git a/src/Connected.Components/Components/CheckBox/CheckBox.razor.cs b/src/Connected.Components/Components/CheckBox/CheckBox.razor.cs deleted file mode 100644 index 3e67b39..0000000 --- a/src/Connected.Components/Components/CheckBox/CheckBox.razor.cs +++ /dev/null @@ -1,267 +0,0 @@ -using Connected.Annotations; -using Connected.Extensions; -using Connected.Services; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -public partial class CheckBox : BooleanInput -{ - #region Variables - private IKeyInterceptor _keyInterceptor; - [Inject] private IKeyInterceptorFactory _keyInterceptorFactory { get; set; } - private string _elementId = "checkbox" + Guid.NewGuid().ToString().Substring(0, 8); - #endregion - - #region Events - protected override Task OnChange(ChangeEventArgs args) - { - Modified = true; - - // Apply only when TriState parameter is set to true and T is bool? - if (TriState && typeof(T) == typeof(bool?)) - { - // The cycle is forced with the following steps: true, false, indeterminate, true, false, indeterminate... - if (!((bool?)(object)_value).HasValue) - { - return SetBoolValueAsync(true); - } - else - { - return ((bool?)(object)_value).Value ? SetBoolValueAsync(false) : SetBoolValueAsync(default); - } - } - else - { - return SetBoolValueAsync((bool?)args.Value); - } - } - - protected void HandleKeyDown(KeyboardEventArgs obj) - { - if (Disabled || ReadOnly || !KeyboardEnabled) - return; - switch (obj.Key) - { - case "Delete": - SetBoolValueAsync(false); - break; - case "Enter": - case "NumpadEnter": - SetBoolValueAsync(true); - break; - case "Backspace": - if (TriState) - { - SetBoolValueAsync(null); - } - break; - case " ": - if (BoolValue == null) - { - SetBoolValueAsync(true); - } - else if (BoolValue == true) - { - SetBoolValueAsync(false); - } - else if (BoolValue == false) - { - if (TriState == true) - { - SetBoolValueAsync(null); - } - else - { - SetBoolValueAsync(true); - } - } - break; - } - } - #endregion - - #region Content - /// - /// Child content of component. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public RenderFragment ChildContent { get; set; } - #endregion - - #region Styling - protected string Classname => - new CssBuilder("input-control-boolean-input") - .AddClass(AdditionalClassList) - .Build(); - - protected string LabelClassname => - new CssBuilder("checkbox") - .AddClass($"disabled", Disabled) - .AddClass($"readonly", ReadOnly) - .AddClass(LabelPosition == LabelPosition.End ? "ltr" : "rtl", true) - .Build(); - - protected string CheckBoxClassname => - new CssBuilder("button-root mud-icon-button") - .AddClass($"{Color.ToDescription()}-text hover:mud-{Color.ToDescription()}-hover", UnCheckedColor == null || (UnCheckedColor != null && BoolValue == true)) - .AddClass($"{UnCheckedColor?.ToDescription()}-text hover:mud-{UnCheckedColor?.ToDescription()}-hover", UnCheckedColor != null && BoolValue == false) - .AddClass($"checkbox-dense", Dense) - .AddClass($"ripple mud-ripple-checkbox", !DisableRipple && !ReadOnly && !Disabled) - .AddClass($"disabled", Disabled) - .AddClass($"readonly", ReadOnly) - .Build(); - - /// - /// The color of the component. It supports the theme colors. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public ThemeColor Color { get; set; } = ThemeColor.Default; - - /// - /// The base color of the component in its none active/unchecked state. It supports the theme colors. - /// - [Parameter] - [Category(CategoryTypes.Radio.Appearance)] - public ThemeColor? UnCheckedColor { get; set; } = null; - - /// - /// If true, disables ripple effect. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public bool DisableRipple { get; set; } - - /// - /// If true, compact padding will be applied. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public bool Dense { get; set; } - - /// - /// The Size of the component. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public Size Size { get; set; } = Size.Medium; - - /// - /// Custom checked icon, leave null for default. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public string CheckedIcon { get; set; } = Icons.Material.Filled.CheckBox; - - /// - /// Custom unchecked icon, leave null for default. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public string UncheckedIcon { get; set; } = Icons.Material.Filled.CheckBoxOutlineBlank; - - /// - /// Custom indeterminate icon, leave null for default. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public string IndeterminateIcon { get; set; } = Icons.Material.Filled.IndeterminateCheckBox; - - private string GetIcon() - { - if (BoolValue == true) - { - return CheckedIcon; - } - - if (BoolValue == false) - { - return UncheckedIcon; - } - - return IndeterminateIcon; - } - - #endregion - - #region Behavior - /// - /// The text/label will be displayed next to the checkbox if set. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public string Label { get; set; } - - /// - /// The position of the text/label. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public LabelPosition LabelPosition { get; set; } = LabelPosition.End; - - /// - /// If true, the checkbox can be controlled with the keyboard. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool KeyboardEnabled { get; set; } = true; - - /// - /// Define if the checkbox can cycle again through indeterminate status. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Validation)] - public bool TriState { get; set; } - #endregion - - #region Lifecycle - protected override void OnInitialized() - { - base.OnInitialized(); - - if (Label == null && For != null) - Label = For.GetLabelString(); - } - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - if (firstRender) - { - _keyInterceptor = _keyInterceptorFactory.Create(); - - await _keyInterceptor.Connect(_elementId, new KeyInterceptorOptions() - { - //EnableLogging = true, - TargetClass = "button-root", - Keys = { - new KeyOptions { Key=" ", PreventDown = "key+none", PreventUp = "key+none" }, // prevent scrolling page - new KeyOptions { Key="Enter", PreventDown = "key+none" }, - new KeyOptions { Key="NumpadEnter", PreventDown = "key+none" }, - new KeyOptions { Key="Backspace", PreventDown = "key+none" }, - }, - }); - _keyInterceptor.KeyDown += HandleKeyDown; - } - await base.OnAfterRenderAsync(firstRender); - } - - protected override void Dispose(bool disposing) - { - base.Dispose(disposing); - - if (disposing == true) - { - if (_keyInterceptor != null) - { - _keyInterceptor.KeyDown -= HandleKeyDown; - _keyInterceptor.Dispose(); - } - } - } - #endregion - -} diff --git a/src/Connected.Components/Components/Chip/Chip.razor b/src/Connected.Components/Components/Chip/Chip.razor deleted file mode 100644 index a007d80..0000000 --- a/src/Connected.Components/Components/Chip/Chip.razor +++ /dev/null @@ -1,33 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -
    - @if (!String.IsNullOrEmpty(Avatar)) - { - - - - } - else if (!String.IsNullOrEmpty(Icon) && !IsChecked) - { - - } - else if (IsChecked) - { - - } - - @if (ChildContent == null) - { - @Text - } - else - { - @ChildContent - } - @if (OnClose.HasDelegate || ChipSet?.AllClosable==true) - { - - } - -
    diff --git a/src/Connected.Components/Components/Chip/Chip.razor.cs b/src/Connected.Components/Components/Chip/Chip.razor.cs deleted file mode 100644 index 6f10742..0000000 --- a/src/Connected.Components/Components/Chip/Chip.razor.cs +++ /dev/null @@ -1,355 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using System.Windows.Input; -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -public partial class Chip : UIComponent, IDisposable -{ - - #region Variables - private bool _isSelected; - [Inject] public NavigationManager UriHelper { get; set; } - - [Inject] public IJsApiService JsApiService { get; set; } - #endregion - - #region Events - - internal void ForceRerender() => StateHasChanged(); - - protected internal async Task OnClickHandler(MouseEventArgs ev) - { - if (ChipSet?.ReadOnly == true) - { - return; - } - if (ChipSet != null) - { - _ = ChipSet.OnChipClicked(this); - } - if (Href != null) - { - // TODO: use MudElement to render and this code can be removed. we know that it has potential problems on iOS - if (string.IsNullOrWhiteSpace(Target)) - UriHelper.NavigateTo(Href, ForceLoad); - else - await JsApiService.Open(Href, Target); - } - else - { - await OnClick.InvokeAsync(ev); - if (Command?.CanExecute(CommandParameter) ?? false) - { - Command.Execute(CommandParameter); - } - } - } - - protected async Task OnCloseHandler(MouseEventArgs ev) - { - if (ChipSet?.ReadOnly == true) - { - return; - } - await OnClose.InvokeAsync(this); - ChipSet?.OnChipDeleted(this); - StateHasChanged(); - } - - - /// - /// Chip click event, if set the chip focus, hover and click effects are applied. - /// - [Parameter] public EventCallback OnClick { get; set; } - - /// - /// Chip delete event, if set the delete icon will be visible. - /// - [Parameter] public EventCallback OnClose { get; set; } - #endregion - - #region Content - [CascadingParameter] ChipSet ChipSet { get; set; } - - /// - /// If set to a URL, clicking the button will open the referenced document. Use Target to specify where - /// - [Parameter] - [Category(CategoryTypes.Chip.ClickAction)] - public string Href { get; set; } - /// - /// The target attribute specifies where to open the link, if Href is specified. Possible values: _blank | _self | _parent | _top | framename - /// - [Parameter] - [Category(CategoryTypes.Chip.ClickAction)] - public string Target { get; set; } - - /// - /// Command executed when the user clicks on an element. - /// - [Parameter] - [Category(CategoryTypes.Chip.ClickAction)] - public ICommand Command { get; set; } - - /// - /// Command parameter. - /// - [Parameter] - [Category(CategoryTypes.Chip.ClickAction)] - public object CommandParameter { get; set; } - #endregion - - #region Styling - protected string Classname => - new CssBuilder("chip") - .AddClass($"chip-{GetVariant().ToDescription()}") - .AddClass($"chip-size-{Size.ToDescription()}") - .AddClass($"chip-color-{GetColor().ToDescription()}") - .AddClass("clickable", !ChipSet?.ReadOnly ?? OnClick.HasDelegate) - .AddClass("ripple", !ChipSet?.ReadOnly ?? OnClick.HasDelegate && !DisableRipple) - .AddClass("chip-label", Label) - .AddClass("disabled", Disabled) - .AddClass("chip-selected", IsSelected) - .AddClass(AdditionalClassList) - .Build(); - - //Cannot test the get variant (last line) - [ExcludeFromCodeCoverage] - private Variant GetVariant() - { - return Variant switch - { - Variant.Text => IsSelected ? Variant.Filled : Variant.Text, - Variant.Filled => IsSelected ? Variant.Text : Variant.Filled, - Variant.Outlined => Variant.Outlined, - _ => Variant - }; - } - - private ThemeColor GetColor() - { - if (IsSelected && SelectedColor != ThemeColor.Inherit) - { - return SelectedColor; - } - else if (IsSelected && SelectedColor == ThemeColor.Inherit) - { - return Color; - } - else - { - return Color; - } - } - - /// - /// The color of the component. - /// - [Parameter] - [Category(CategoryTypes.Chip.Appearance)] - public ThemeColor Color { get; set; } = ThemeColor.Default; - - /// - /// The size of the button. small is equivalent to the dense button styling. - /// - [Parameter] - [Category(CategoryTypes.Chip.Appearance)] - public Size Size { get; set; } = Size.Medium; - - /// - /// The variant to use. - /// - [Parameter] - [Category(CategoryTypes.Chip.Appearance)] - public Variant Variant { get; set; } = Variant.Filled; - - /// - /// The selected color to use when selected, only works together with ChipSet, Color.Inherit for default value. - /// - [Parameter] - [Category(CategoryTypes.Chip.Appearance)] - public ThemeColor SelectedColor { get; set; } = ThemeColor.Inherit; - - /// - /// Avatar CSS Class, appends to Chips default avatar classes. - /// - [Parameter] - [Category(CategoryTypes.Chip.Appearance)] - public string AvatarClass { get; set; } - - /// - /// Removes circle edges and applies theme default. - /// - [Parameter] - [Category(CategoryTypes.Chip.Appearance)] - public bool Label { get; set; } - - /// - /// Custom checked icon. - /// - [Parameter] - [Category(CategoryTypes.Chip.Appearance)] - public string CheckedIcon { get; set; } = Icons.Material.Filled.Check; - - /// - /// The color of the icon. - /// - [Parameter] - [Category(CategoryTypes.Chip.Appearance)] - public ThemeColor IconColor { get; set; } = ThemeColor.Inherit; - - /// - /// Overrides the default close icon, only shown if OnClose is set. - /// - [Parameter] - [Category(CategoryTypes.Chip.Appearance)] - public string CloseIcon { get; set; } - - /// - /// If true, disables ripple effect, ripple effect is only applied to clickable chips. - /// - [Parameter] - [Category(CategoryTypes.Chip.Appearance)] - public bool DisableRipple { get; set; } - - #endregion - - #region Behavior - - /// - /// Set by MudChipSet - /// - public bool IsSelected - { - get => _isSelected; - set - { - if (_isSelected == value) - return; - _isSelected = value; - StateHasChanged(); - } - } - - /// - /// If false, this chip has not been seen before - /// - public bool DefaultProcessed { get; set; } - - /// - /// Set by MudChipSet - /// - public bool IsChecked - { - get => _isSelected && ChipSet?.Filter == true; - } - - /// - /// If true, force browser to redirect outside component router-space. - /// - [Parameter] - [Category(CategoryTypes.Chip.ClickAction)] - public bool ForceLoad { get; set; } - - /// - /// If true, this chip is selected by default if used in a ChipSet. - /// - [Parameter] - [Category(CategoryTypes.Chip.Behavior)] - public bool? Default { get; set; } - - /// - /// A string you want to associate with the chip. If the ChildContent is not set this will be shown as chip text. - /// - [Parameter] - [Category(CategoryTypes.Chip.Behavior)] - public string Text { get; set; } - - /// - /// A value that should be managed in the SelectedValues collection. - /// Note: do not change the value during the chip's lifetime - /// - [Parameter] - [Category(CategoryTypes.Chip.Behavior)] - public object Value { get; set; } - - /// - /// Avatar Glyph, Overrides the regular Glyph if set. - /// - [Parameter] - [Category(CategoryTypes.Chip.Behavior)] - public string Avatar { get; set; } - - - - /// - /// If true, the chip will be displayed in disabled state and no events possible. - /// - [Parameter] - [Category(CategoryTypes.Chip.Behavior)] - public bool Disabled { get; set; } - - /// - /// Sets the Glyph to use. - /// - [Parameter] - [Category(CategoryTypes.Chip.Behavior)] - public string Icon { get; set; } - - - - /// - /// Child content of component. - /// - [Parameter] - [Category(CategoryTypes.Chip.Behavior)] - public RenderFragment ChildContent { get; set; } - - /// - /// If set to a URL, clicking the button will open the referenced document. Use Target to specify where (Obsolete replaced by Href) - /// - [Obsolete("Use Href Instead.", false)] - [Parameter] - [Category(CategoryTypes.Chip.ClickAction)] - public string Link - { - get => Href; - set => Href = value; - } - #endregion - - #region Lifecycle - - protected override void OnInitialized() - { - base.OnInitialized(); - if (Value == null) - Value = this; - } - - protected override Task OnInitializedAsync() - { - ChipSet?.Add(this); - return base.OnInitializedAsync(); - } - - //Exclude because we don't test to catching exception yet - [ExcludeFromCodeCoverage] - public void Dispose() - { - try - { - ChipSet?.Remove(this); - } - catch (Exception) - { - /* ignore! */ - } - } - #endregion -} diff --git a/src/Connected.Components/Components/ChipSet/ChipSet.razor b/src/Connected.Components/Components/ChipSet/ChipSet.razor deleted file mode 100644 index 58db7b8..0000000 --- a/src/Connected.Components/Components/ChipSet/ChipSet.razor +++ /dev/null @@ -1,8 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -
    - - @ChildContent - -
    diff --git a/src/Connected.Components/Components/ChipSet/ChipSet.razor.cs b/src/Connected.Components/Components/ChipSet/ChipSet.razor.cs deleted file mode 100644 index 32b112a..0000000 --- a/src/Connected.Components/Components/ChipSet/ChipSet.razor.cs +++ /dev/null @@ -1,349 +0,0 @@ -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class ChipSet : UIComponent, IDisposable -{ - #region Variables - private IEqualityComparer _comparer; - private HashSet _selectedValues; - private HashSet _initialSelectedValues; - private HashSet _chips = new(); - private bool _filter; - private bool _disposed; - #endregion - - #region Events - /// - /// Called when the selected chip changes, in Choice mode - /// - [Parameter] - public EventCallback SelectedChipChanged { get; set; } - /// - /// Called when the selection changed, in Filter mode - /// - [Parameter] - public EventCallback SelectedChipsChanged { get; set; } - - /// - /// The current selected value. - /// Note: make the list Clickable for item selection to work. - /// - [Parameter] - [Category(CategoryTypes.ChipSet.Behavior)] - public ICollection SelectedValues - { - get => _selectedValues; - set - { - if (value == null) - SetSelectedValues(new object[0]); - else - SetSelectedValues(value.ToArray()).AndForget(); - } - } - - /// - /// Called whenever the selection changed - /// - [Parameter] public EventCallback> SelectedValuesChanged { get; set; } - internal Task SetSelectedValues(object[] values) - { - HashSet newValues = null; - if (values == null) - values = new object[0]; - if (MultiSelection) - newValues = new HashSet(values, _comparer); - else - { - newValues = new HashSet(_comparer); - if (values.Length > 0) - newValues.Add(values.First()); - } - // avoid update with same values - if (_selectedValues.IsEqualTo(newValues)) - return Task.CompletedTask; - _selectedValues = newValues; - foreach (var chip in _chips.ToArray()) - { - var isSelected = _selectedValues.Contains(chip.Value); - chip.IsSelected = isSelected; - } - return NotifySelection(); - } - - /// - /// Called when a Chip was deleted (by click on the close icon) - /// - [Parameter] - public EventCallback OnClose { get; set; } - internal Task Add(Chip chip) - { - _chips.Add(chip); - if (_selectedValues.Contains(chip.Value)) - chip.IsSelected = true; - return CheckDefault(chip); - } - - internal void Remove(Chip chip) - { - _chips.Remove(chip); - if (chip.IsSelected) - { - _selectedValues.Remove(chip.Value); - NotifySelection().AndForget(); - } - } - - private async Task CheckDefault(Chip chip) - { - if (!MultiSelection) - return; - if (chip.DefaultProcessed) - return; - chip.DefaultProcessed = true; - if (chip.Default == null) - return; - var oldSelected = chip.IsSelected; - chip.IsSelected = chip.Default == true; - if (chip.IsSelected != oldSelected) - { - if (chip.IsSelected) - _selectedValues.Add(chip.Value); - else - _selectedValues.Remove(chip.Value); - await NotifySelection(); - } - } - - internal Task OnChipClicked(Chip chip) - { - var wasSelected = chip.IsSelected; - if (MultiSelection) - { - chip.IsSelected = !chip.IsSelected; - } - else - { - foreach (var ch in _chips) - { - ch.IsSelected = (ch == chip); // <-- exclusively select the one chip only, thus all others must be deselected - } - if (!Mandatory) - chip.IsSelected = !wasSelected; - } - UpdateSelectedValues(); - return NotifySelection(); - } - - private void UpdateSelectedValues() - { - _selectedValues = new HashSet(_chips.Where(x => x.IsSelected).Select(x => x.Value), _comparer); - } - - private object[] _lastSelectedValues = null; - - private async Task NotifySelection() - { - if (_disposed) - return; - // to avoid endless notification loops we check if selection has really changed - if (_selectedValues.IsEqualTo(_lastSelectedValues)) - return; - _lastSelectedValues = _selectedValues.ToArray(); - await SelectedChipChanged.InvokeAsync(SelectedChip); - await SelectedChipsChanged.InvokeAsync(SelectedChips); - await SelectedValuesChanged.InvokeAsync(SelectedValues); - StateHasChanged(); - } - - public void OnChipDeleted(Chip chip) - { - Remove(chip); - OnClose.InvokeAsync(chip); - } - - - - private async Task SelectDefaultChips() - { - if (!MultiSelection) - { - var anySelected = false; - var defaultChip = _chips.LastOrDefault(chip => chip.Default == true); - if (defaultChip != null) - { - defaultChip.IsSelected = true; - anySelected = true; - } - if (anySelected) - { - UpdateSelectedValues(); - await NotifySelection(); - } - } - } - #endregion - - #region Content - /// - /// Child content of component. - /// - [Parameter] - [Category(CategoryTypes.ChipSet.Behavior)] - public RenderFragment ChildContent { get; set; } - - /// - /// The currently selected chip in Choice mode - /// - [Parameter] - [Category(CategoryTypes.ChipSet.Behavior)] - public Chip SelectedChip - { - get { return _chips.OfType().FirstOrDefault(x => x.IsSelected); } - set - { - if (value == null) - { - foreach (var chip in _chips) - { - chip.IsSelected = false; - } - } - else - { - foreach (var chip in _chips) - { - chip.IsSelected = (chip == value); - } - } - this.InvokeAsync(StateHasChanged); - } - } - - /// - /// The currently selected chips in Filter mode - /// - [Parameter] - [Category(CategoryTypes.ChipSet.Behavior)] - public Chip[] SelectedChips - { - get { return _chips.OfType().Where(x => x.IsSelected).ToArray(); } - set - { - if (value == null || value.Length == 0) - { - foreach (var chip in _chips) - { - chip.IsSelected = false; - } - } - else - { - var selected = new HashSet(value); - foreach (var chip in _chips) - { - chip.IsSelected = selected.Contains(chip); - } - } - StateHasChanged(); - } - } - - #endregion - - #region Styling - protected string Classname => - new CssBuilder("chipset") - .AddClass(AdditionalClassList) - .Build(); - #endregion - - #region Behavior - /// - /// The Comparer to use for comparing selected values internally. - /// - [Parameter] - [Category(CategoryTypes.ChipSet.Behavior)] - public IEqualityComparer Comparer - { - get => _comparer; - set - { - _comparer = value; - // Apply comparer and refresh selected values - _selectedValues = new HashSet(_selectedValues, _comparer); - SelectedValues = _selectedValues; - } - } - /// - /// Will make all chips read only. - /// - [Parameter] - [Category(CategoryTypes.ChipSet.Behavior)] - public bool ReadOnly { get; set; } = false; - - /// - /// Allows to select more than one chip. - /// - [Parameter] - [Category(CategoryTypes.ChipSet.Behavior)] - public bool MultiSelection { get; set; } = false; - - /// - /// Will not allow to deselect the selected chip in single selection mode. - /// - [Parameter] - [Category(CategoryTypes.ChipSet.Behavior)] - public bool Mandatory { get; set; } = false; - - /// - /// Will make all chips closable. - /// - [Parameter] - [Category(CategoryTypes.ChipSet.Behavior)] - public bool AllClosable { get; set; } = false; - - /// - /// Will show a check-mark for the selected components. - /// - [Parameter] - [Category(CategoryTypes.ChipSet.Appearance)] - public bool Filter - { - get => _filter; - set - { - if (_filter == value) - return; - _filter = value; - StateHasChanged(); - foreach (var chip in _chips) - chip.ForceRerender(); - } - } - #endregion - - #region Lifecycle - public void Dispose() - { - _disposed = true; - } - protected override void OnInitialized() - { - base.OnInitialized(); - if (_selectedValues == null) - _selectedValues = new HashSet(_comparer); - _initialSelectedValues = new HashSet(_selectedValues, _comparer); - } - protected override async void OnAfterRender(bool firstRender) - { - if (firstRender) - await SelectDefaultChips(); - base.OnAfterRender(firstRender); - } - #endregion - -} diff --git a/src/Connected.Components/Components/Collapse/Collapse.razor b/src/Connected.Components/Components/Collapse/Collapse.razor deleted file mode 100644 index 8acf194..0000000 --- a/src/Connected.Components/Components/Collapse/Collapse.razor +++ /dev/null @@ -1,11 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent -@using System.Globalization; - -
    -
    -
    - @ChildContent -
    -
    -
    diff --git a/src/Connected.Components/Components/Collapse/Collapse.razor.cs b/src/Connected.Components/Components/Collapse/Collapse.razor.cs deleted file mode 100644 index dc9da98..0000000 --- a/src/Connected.Components/Components/Collapse/Collapse.razor.cs +++ /dev/null @@ -1,161 +0,0 @@ -using System.Globalization; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.JSInterop; - -namespace Connected.Components; - -public partial class Collapse : UIComponent -{ - #region Variables - internal enum CollapseState - { - Entering, Entered, Exiting, Exited - } - - internal double _height; - private bool _expanded, _isRendered, _updateHeight; - private ElementReference _wrapper; - internal CollapseState _state = CollapseState.Exited; - #endregion - - #region Events - [Parameter] public EventCallback OnAnimationEnd { get; set; } - - [Parameter] public EventCallback ExpandedChanged { get; set; } - - internal async Task UpdateHeight() - { - try - { - _height = (await _wrapper.MudGetBoundingClientRectAsync())?.Height ?? 0; - } - catch (Exception ex) when (ex is JSDisconnectedException || ex is TaskCanceledException) - { - _height = 0; - } - - if (MaxHeight != null && _height > MaxHeight) - { - _height = MaxHeight.Value; - } - } - - - - public void AnimationEnd() - { - if (_state == CollapseState.Entering) - { - _state = CollapseState.Entered; - StateHasChanged(); - } - else if (_state == CollapseState.Exiting) - { - _state = CollapseState.Exited; - StateHasChanged(); - } - OnAnimationEnd.InvokeAsync(Expanded); - } - #endregion - - #region Content - /// - /// Child content of component. - /// - [Parameter] public RenderFragment ChildContent { get; set; } - - - #endregion - - #region Styling - protected string Stylename => - new StyleBuilder() - .AddStyle("max-height", MaxHeight.ToPx(), MaxHeight != null) - .AddStyle("height", "auto", _state == CollapseState.Entered) - .AddStyle("height", _height.ToPx(), _state is CollapseState.Entering or CollapseState.Exiting) - .AddStyle("animation-duration", $"{CalculatedAnimationDuration.ToString("#.##", CultureInfo.InvariantCulture)}s", _state == CollapseState.Entering) - .Build(); - - protected string Classname => - new CssBuilder("collapse-container") - .AddClass($"collapse-entering", _state == CollapseState.Entering) - .AddClass($"collapse-entered", _state == CollapseState.Entered) - .AddClass($"collapse-exiting", _state == CollapseState.Exiting) - .AddClass(AdditionalClassList) - .Build(); - - /// - /// If true, expands the panel, otherwise collapse it. Setting this prop enables control over the panel. - /// - [Parameter] - public bool Expanded - { - get => _expanded; - set - { - if (_expanded == value) - return; - _expanded = value; - - if (_isRendered) - { - _state = _expanded ? CollapseState.Entering : CollapseState.Exiting; - _ = UpdateHeight(); - _updateHeight = true; - } - else if (_expanded) - { - _state = CollapseState.Entered; - } - - _ = ExpandedChanged.InvokeAsync(_expanded); - } - } - - /// - /// Explicitly sets the height for the Collapse element to override the css default. - /// - [Parameter] public int? MaxHeight { get; set; } - - /// - /// Modified Animation duration that scales with height parameter. - /// Basic implementation for now but should be a math formula to allow it to scale between 0.1s and 1s for the effect to be consistently smooth. - /// - private double CalculatedAnimationDuration - { - get - { - if (MaxHeight != null) - { - if (MaxHeight <= 200) return 0.2; - else if (MaxHeight <= 600) return 0.4; - else if (MaxHeight <= 1400) return 0.6; - return 1; - } - return Math.Min(_height / 800.0, 1); - } - set { } - } - - #endregion - - #region Lifecycle - protected override async Task OnAfterRenderAsync(bool firstRender) - { - if (firstRender) - { - _isRendered = true; - await UpdateHeight(); - } - else if (_updateHeight && _state is CollapseState.Entering or CollapseState.Exiting) - { - _updateHeight = false; - await UpdateHeight(); - StateHasChanged(); - } - await base.OnAfterRenderAsync(firstRender); - } - #endregion - -} \ No newline at end of file diff --git a/src/Connected.Components/Components/ColorPicker/ColorPicker.razor b/src/Connected.Components/Components/ColorPicker/ColorPicker.razor deleted file mode 100644 index 4184b09..0000000 --- a/src/Connected.Components/Components/ColorPicker/ColorPicker.razor +++ /dev/null @@ -1,151 +0,0 @@ -@namespace Connected.Components -@using System.Globalization; -@using Connected.Utilities; -@inherits Picker - -@Render - -@code { - - protected override RenderFragment PickerContent => - @ - - @if (PickerVariant != PickerVariant.Static) - { - - } - - - - - - - @if (!DisableColorField) - { -
    - @if (_activeColorPickerView == ColorPickerView.Spectrum) - { -
    -
    -
    -
    - - - - - - - - - - - - -
    -
    -
    -
    - } - @if (_activeColorPickerView is ColorPickerView.Grid or ColorPickerView.GridCompact) - { -
    - @foreach (var item in _gridList) - { -
    - } -
    - } -
    - } - @if (_activeColorPickerView != ColorPickerView.GridCompact) - { - @if (!DisableSliders || !DisableInputs || !DisablePreview) - { -
    - @if (!DisableSliders || !DisablePreview) - { -
    - @if (!DisablePreview) - { -
    -
    -
    - } - @if (!DisableSliders && !_collectionOpen) - { -
    - @if (_activeColorPickerView != ColorPickerView.Grid) - { - - } - @if (!DisableAlpha) - { - - } -
    - } - @if (_collectionOpen) - { -
    - @foreach (var item in Palette.Take(5)) - { -
    - } -
    - } -
    - } - @if (!DisableInputs) - { -
    -
    - @switch (ColorPickerMode) - { - case ColorPickerMode.RGB: - - - - break; - case ColorPickerMode.HSL: - - - - break; - case ColorPickerMode.HEX: - - break; - default: - break; - } - - @if (!DisableAlpha && ColorPickerMode != ColorPickerMode.HEX) - { - - } -
    - @if (!DisableModeSwitch) - { -
    - -
    - } -
    - } -
    - } - @if (_activeColorPickerView == ColorPickerView.Palette) - { -
    -
    - @foreach (var item in Palette) - { -
    - } -
    -
    - } - } -
    -
    ; - -} diff --git a/src/Connected.Components/Components/ColorPicker/ColorPicker.razor.cs b/src/Connected.Components/Components/ColorPicker/ColorPicker.razor.cs deleted file mode 100644 index e3cac1e..0000000 --- a/src/Connected.Components/Components/ColorPicker/ColorPicker.razor.cs +++ /dev/null @@ -1,593 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Globalization; -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -public partial class ColorPicker : Picker, IAsyncDisposable -{ - #region Variables - - private static Dictionary r, Func g, Func b, string dominantColorPart)> _rgbToHueMapper = new() - { - { 0, ((x) => 255, x => x, x => 0, "rb") }, - { 1, ((x) => 255 - x, x => 255, x => 0, "gb") }, - { 2, ((x) => 0, x => 255, x => x, "gr") }, - { 3, ((x) => 0, x => 255 - x, x => 255, "br") }, - { 4, ((x) => x, x => 0, x => 255, "bg") }, - { 5, ((x) => 255, x => 0, x => 255 - x, "rg") }, - }; - - private const double _maxY = 250; - private const double _maxX = 312; - private const double _selctorSize = 26.0; - - private double _selectorX; - private double _selectorY; - private bool _skipFeedback = false; - - private Color _baseColor; - private Color _color; - - private bool _collectionOpen; - - private readonly Guid _id = Guid.NewGuid(); - private Guid _throttledMouseOverEventId; - - private ColorPickerView _colorPickerView = ColorPickerView.Spectrum; - private ColorPickerView _activeColorPickerView = ColorPickerView.Spectrum; - - private bool _disableAlpha = false; - - private IEventListener _throttledEventManager; - - /// - /// MudColor list of predefined colors. The first five colors will show up as the quick colors on preview dot click. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public IEnumerable Palette { get; set; } = new Color[] - { "#424242", "#2196f3", "#00c853", "#ff9800", "#f44336", - "#f6f9fb", "#9df1fa", "#bdffcf", "#fff0a3", "#ffd254", - "#e6e9eb", "#27dbf5", "#7ef7a0", "#ffe273", "#ffb31f", - "#c9cccf", "#13b8e8", "#14dc71", "#fdd22f", "#ff9102", - "#858791", "#0989c2", "#1bbd66", "#ebb323", "#fe6800", - "#585b62", "#17698e", "#17a258", "#d9980d", "#dc3f11", - "#353940", "#113b53", "#127942", "#bf7d11", "#aa0000" - }; - - private IEnumerable _gridList = new Color[] - { - "#FFFFFF","#ebebeb","#d6d6d6","#c2c2c2","#adadad","#999999","#858586","#707070","#5c5c5c","#474747","#333333","#000000", - "#133648","#071d53","#0f0638","#2a093b","#370c1b","#541107","#532009","#53350d","#523e0f","#65611b","#505518","#2b3d16", - "#1e4c63","#0f2e76","#180b4e","#3f1256","#4e1629","#781e0e","#722f10","#734c16","#73591a","#8c8629","#707625","#3f5623", - "#2e6c8c","#1841a3","#280c72","#591e77","#6f223d","#a62c17","#a0451a","#a06b23","#9f7d28","#c3bc3c","#9da436","#587934", - "#3c8ab0","#2155ce","#331c8e","#702898","#8d2e4f","#d03a20","#ca5a24","#c8862e","#c99f35","#f3ec4e","#c6d047","#729b44", - "#479fd3","#2660f5","#4725ab","#8c33b5","#aa395d","#eb512e","#ed732e","#f3ae3d","#f5c944","#fefb67","#ddeb5c","#86b953", - "#59c4f7","#4e85f6","#5733e2","#af43eb","#d44a7a","#ed6c59","#ef8c56","#f3b757","#f6cd5b","#fef881","#e6ee7a","#a3d16e", - "#78d3f8","#7fa6f8","#7e52f5","#c45ff6","#de789d","#f09286","#f2a984","#f6c983","#f9da85","#fef9a1","#ebf29b","#badc94", - "#a5e1fa","#adc5fa","#ab8df7","#d696f8","#e8a7bf","#f4b8b1","#f6c7af","#f9daae","#fae5af","#fefbc0","#f3f7be","#d2e7ba", - "#d2effd","#d6e1fc","#d6c9fa","#e9cbfb","#f3d4df","#f9dcd9","#fae3d8","#fcecd7","#fdf2d8","#fefce0","#f7fade","#e3edd6" - }; - - [Inject] IEventListenerFactory ThrottledEventManagerFactory { get; set; } - - #endregion - - #region Events - private EventCallback GetEventCallback() => EventCallback.Factory.Create(this, () => Close()); - private EventCallback GetSelectPaletteColorCallback(Color color) => new EventCallbackFactory().Create(this, (MouseEventArgs e) => SelectPaletteColor(color)); - - /// - /// Set the R (red) component of the color picker - /// - /// A value between 0 (no red) or 255 (max red) - public void SetR(int value) => Value = Value.SetR(value); - - /// - /// Set the G (green) component of the color picker - /// - /// A value between 0 (no green) or 255 (max green) - public void SetG(int value) => Value = Value.SetG(value); - - /// - /// Set the B (blue) component of the color picker - /// - /// A value between 0 (no blue) or 255 (max blue) - public void SetB(int value) => Value = Value.SetB(value); - - /// - /// Set the H (hue) component of the color picker - /// - /// A value between 0 and 360 (degrees) - public void SetH(double value) => Value = Value.SetH(value); - - /// - /// Set the S (saturation) component of the color picker - /// - /// A value between 0.0 (no saturation) and 1.0 (max saturation) - public void SetS(double value) => Value = Value.SetS(value); - - /// - /// Set the L (Lightness) component of the color picker - /// - /// A value between 0.0 (no light, black) and 1.0 (max light, white) - public void SetL(double value) => Value = Value.SetL(value); - - /// - /// Set the Alpha (transparency) component of the color picker - /// - /// A value between 0.0 (full transparent) and 1.0 (solid) - public void SetAlpha(double value) => Value = Value.SetAlpha(value); - - /// - /// Set the Alpha (transparency) component of the color picker - /// - /// A value between 0 (full transparent) and 1 (solid) - public void SetAlpha(int value) => Value = Value.SetAlpha(value); - - /// - /// Set the color of the picker based on the string input - /// - /// Accepting different formats for a color representation such as rbg, rgba, # - public void SetInputString(string input) - { - Color color; - try - { - color = new Color(input); - } - catch (Exception) - { - return; - } - - Value = color; - } - - protected override Task StringValueChanged(string value) - { - SetInputString(value); - return Task.CompletedTask; - } - - private bool _attachedMouseEvent = false; - - protected override void OnPickerOpened() - { - base.OnPickerOpened(); - _attachedMouseEvent = true; - StateHasChanged(); - } - - protected override void OnPickerClosed() - { - base.OnPickerClosed(); - RemoveMouseOverEvent().AndForget(); - } - private void HandleColorOverlayClicked() - { - UpdateColorBaseOnSelection(); - - if (IsAnyControlVisible() == false) - { - Close(); - } - } - - private void OnSelectorClicked(MouseEventArgs e) - { - SetSelectorBasedOnMouseEvents(e, false); - HandleColorOverlayClicked(); - } - - private void OnColorOverlayClick(MouseEventArgs e) - { - SetSelectorBasedOnMouseEvents(e, true); - HandleColorOverlayClicked(); - } - - private void OnMouseOver(MouseEventArgs e) - { - if (e.Buttons == 1) - { - SetSelectorBasedOnMouseEvents(e, true); - UpdateColorBaseOnSelection(); - } - } - - private void SetSelectorBasedOnMouseEvents(MouseEventArgs e, bool offsetIsAbsolute) - { - _selectorX = (offsetIsAbsolute == true ? e.OffsetX : (e.OffsetX - _selctorSize / 2.0) + _selectorX).EnsureRange(_maxX); - _selectorY = (offsetIsAbsolute == true ? e.OffsetY : (e.OffsetY - _selctorSize / 2.0) + _selectorY).EnsureRange(_maxY); - } - - [Parameter] public EventCallback ValueChanged { get; set; } - - private void ToggleCollection() - { - _collectionOpen = !_collectionOpen; - } - - private void SelectPaletteColor(Color color) - { - Value = color; - _collectionOpen = false; - - if ( - IsAnyControlVisible() == false || _activeColorPickerView is ColorPickerView.GridCompact or ColorPickerView.Palette) - { - Close(); - } - } - - public void ChangeMode() => - ColorPickerMode = ColorPickerMode switch - { - ColorPickerMode.RGB => ColorPickerMode.HSL, - ColorPickerMode.HSL => ColorPickerMode.HEX, - ColorPickerMode.HEX => ColorPickerMode.RGB, - _ => ColorPickerMode.RGB, - }; - - public async Task ChangeView(ColorPickerView value) - { - - var oldValue = _activeColorPickerView; - - _activeColorPickerView = value; - Text = GetColorTextValue(); - - if (oldValue == ColorPickerView.Spectrum) - { - await RemoveMouseOverEvent(); - } - - if (value == ColorPickerView.Spectrum) - { - _attachedMouseEvent = true; - } - } - - private void UpdateBaseColorSlider(int value) - { - var diff = Math.Abs(value - (int)Value.H); - if (diff == 0) { return; } - - Value = Value.SetH(value); - } - - private void UpdateBaseColor() - { - var index = (int)_color.H / 60; - if (index == 6) - { - index = 5; - } - - var valueInDeg = (int)_color.H - (index * 60); - var value = (int)(MathExtensions.Map(0, 60, 0, 255, valueInDeg)); - var section = _rgbToHueMapper[index]; - - _baseColor = new(section.r(value), section.g(value), section.b(value), 255); - } - - private void UpdateColorBaseOnSelection() - { - var x = _selectorX / _maxX; - - var r_x = 255 - (int)((255 - _baseColor.R) * x); - var g_x = 255 - (int)((255 - _baseColor.G) * x); - var b_x = 255 - (int)((255 - _baseColor.B) * x); - - var y = 1.0 - _selectorY / _maxY; - - var r = r_x * y; - var g = g_x * y; - var b = b_x * y; - - _skipFeedback = true; - //in this mode, H is expected to be stable, so copy H value - Value = new Color((byte)r, (byte)g, (byte)b, _color); - _skipFeedback = false; - } - - private void UpdateColorSelectorBasedOnRgb() - { - var hueValue = (int)MathExtensions.Map(0, 360, 0, 6 * 255, _color.H); - var index = hueValue / 255; - if (index == 6) - { - index = 5; - } - - var section = _rgbToHueMapper[index]; - - var colorValues = section.dominantColorPart switch - { - "rb" => (_color.R, _color.B), - "rg" => (_color.R, _color.G), - "gb" => (_color.G, _color.B), - "gr" => (_color.G, _color.R), - "br" => (_color.B, _color.R), - "bg" => (_color.B, _color.G), - _ => (255, 255) - }; - - var primaryDiff = 255 - colorValues.Item1; - var primaryDiffDelta = colorValues.Item1 / 255.0; - - _selectorY = MathExtensions.Map(0, 255, 0, _maxY, primaryDiff); - - var secondaryColorX = colorValues.Item2 * (1.0 / primaryDiffDelta); - var relation = (255 - secondaryColorX) / 255.0; - - _selectorX = relation * _maxX; - } - - #endregion - - #region Styling - - private bool IsAnyControlVisible() => !(DisablePreview && DisableSliders && DisableInputs); - private ThemeColor GetButtonColor(ColorPickerView view) => _activeColorPickerView == view ? ThemeColor.Primary : ThemeColor.Inherit; - private string GetColorDotClass(Color color) => new CssBuilder("picker-color-dot").AddClass("selected", color == Value).ToString(); - private string AlphaSliderStyle => new StyleBuilder().AddStyle($"background-image: linear-gradient(to {(RightToLeft ? "left" : "right")}, transparent, {_color.ToString(ColorOutputFormats.RGB)})").Build(); - private string GetSelectorLocation() => $"translate({Math.Round(_selectorX, 2).ToString(CultureInfo.InvariantCulture)}px, {Math.Round(_selectorY, 2).ToString(CultureInfo.InvariantCulture)}px);"; - private string GetColorTextValue() => (DisableAlpha == true || _activeColorPickerView is ColorPickerView.Palette or ColorPickerView.GridCompact) ? _color.ToString(ColorOutputFormats.Hex) : _color.ToString(ColorOutputFormats.HexA); - private int GetHexColorInputMaxLength() => DisableAlpha ? 7 : 9; - - /// - /// When set to true, no mouse move events in the spectrum mode will be captured, so the selector circle won't fellow the mouse. - /// Under some conditions like long latency the visual representation might not reflect the user behaviour anymore. So, it can be disabled - /// Enabled by default - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public bool DisableDragEffect { get; set; } = false; - - /// - /// Custom close icon. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerAppearance)] - public string CloseIcon { get; set; } = Icons.Material.Filled.Close; - - /// - /// Custom spectrum icon. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerAppearance)] - public string SpectrumIcon { get; set; } = Icons.Material.Filled.Tune; - - /// - /// Custom grid icon. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerAppearance)] - public string GridIcon { get; set; } = Icons.Material.Filled.Apps; - - /// - /// Custom palette icon. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerAppearance)] - public string PaletteIcon { get; set; } = Icons.Material.Filled.Palette; - - /// - /// Custom import/export icont. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerAppearance)] - public string ImportExportIcon { get; set; } = Icons.Material.Filled.ImportExport; - #endregion - - #region Behavior - [CascadingParameter(Name = "RightToLeft")] public bool RightToLeft { get; set; } - - /// - /// If true, Alpha options will not be displayed and color output will be RGB, HSL or HEX and not RGBA, HSLA or HEXA. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public bool DisableAlpha - { - get => _disableAlpha; - set - { - if (value != _disableAlpha) - { - _disableAlpha = value; - - if (value == true) - { - Value = Value.SetAlpha(1.0); - } - - Text = GetColorTextValue(); - } - } - } - - /// - /// If true, the color field will not be displayed. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public bool DisableColorField { get; set; } = false; - - /// - /// If true, the switch to change color mode will not be displayed. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public bool DisableModeSwitch { get; set; } = false; - - /// - /// If true, textfield inputs and color mode switch will not be displayed. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public bool DisableInputs { get; set; } = false; - - /// - /// If true, hue and alpha sliders will not be displayed. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public bool DisableSliders { get; set; } = false; - - /// - /// If true, the preview color box will not be displayed, note that the preview color functions as a button as well for collection colors. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public bool DisablePreview { get; set; } = false; - - /// - /// The initial mode (RGB, HSL or HEX) the picker should open. Defaults to RGB - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public ColorPickerMode ColorPickerMode { get; set; } = ColorPickerMode.RGB; - - - - /// - /// The initial view of the picker. Views can be changed if toolbar is enabled. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public ColorPickerView ColorPickerView - { - get => _colorPickerView; - set - { - if (value != _colorPickerView) - { - _colorPickerView = value; - ChangeView(value).AndForget(); - } - } - } - - /// - /// If true, binding changes occurred also when HSL values changed without a corresponding RGB change - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool UpdateBindingIfOnlyHSLChanged { get; set; } = false; - - /// - /// A two-way bindable property representing the selected value. MudColor is a utility class that can be used to get the value as RGB, HSL, hex or other value - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Data)] - public Color Value - { - get => _color; - set - { - if (value == null) { return; } - - var rgbChanged = value != _color; - var hslChanged = _color == null ? false : value.HslChanged(_color); - _color = value; - - if (rgbChanged) - { - if (_skipFeedback == false) - { - UpdateBaseColor(); - UpdateColorSelectorBasedOnRgb(); - } - - SetTextAsync(GetColorTextValue(), false).AndForget(); - ValueChanged.InvokeAsync(value).AndForget(); - FieldChanged(value); - } - - if (rgbChanged == false && UpdateBindingIfOnlyHSLChanged && hslChanged == true) - { - SetTextAsync(GetColorTextValue(), false).AndForget(); - ValueChanged.InvokeAsync(value).AndForget(); - FieldChanged(value); - } - } - } - - - #endregion - - #region Lifecycle - - public ColorPicker() : base(new DefaultConverter()) - { - AdornmentIcon = Icons.Material.Outlined.Palette; - DisableToolbar = true; - Value = "#594ae2"; //MudBlazor Blue - Text = GetColorTextValue(); - AdornmentAriaLabel = "Open Color Picker"; - } - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - await base.OnAfterRenderAsync(firstRender); - - if (firstRender == true) - { - if (PickerVariant == PickerVariant.Static) - { - await AddMouseOverEvent(); - } - } - - if (_attachedMouseEvent == true) - { - _attachedMouseEvent = false; - await AddMouseOverEvent(); - } - } - - private async Task AddMouseOverEvent() - { - if (DisableDragEffect == true) { return; } - - if (_throttledEventManager == null) - { - _throttledEventManager = ThrottledEventManagerFactory.Create(); - } - - _throttledMouseOverEventId = await - _throttledEventManager.Subscribe("mousemove", _id.ToString(), "mudEventProjections.correctOffset", 10, async (x) => - { - var e = x as MouseEventArgs; - await InvokeAsync(() => OnMouseOver(e)); - StateHasChanged(); - }); - } - - private Task RemoveMouseOverEvent() - { - if (_throttledMouseOverEventId == default) { return Task.CompletedTask; } - - return _throttledEventManager.Unsubscribe(_throttledMouseOverEventId); - } - - public async ValueTask DisposeAsync() - { - if (_throttledEventManager == null) { return; } - - await _throttledEventManager.DisposeAsync(); - } - - #endregion - -} diff --git a/src/Connected.Components/Components/ColumnBase.cs b/src/Connected.Components/Components/ColumnBase.cs deleted file mode 100644 index 2640034..0000000 --- a/src/Connected.Components/Components/ColumnBase.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public abstract class ColumnBase : ComponentBase -{ - public enum Rendermode - { - Header, Item, Edit, Footer - } - - [CascadingParameter(Name = "Mode")] - public Rendermode Mode { get; set; } - - [Parameter] public bool Visible { get; set; } = true; - [Parameter] public string HeaderText { get; set; } - - protected bool IsDefault(T value) - { - return EqualityComparer.Default.Equals(value, default(T)); - } -} diff --git a/src/Connected.Components/Components/Container/Container.razor b/src/Connected.Components/Components/Container/Container.razor deleted file mode 100644 index 16ee03e..0000000 --- a/src/Connected.Components/Components/Container/Container.razor +++ /dev/null @@ -1,7 +0,0 @@ -@namespace Connected.Components - -@inherits UIComponent - -
    - @ChildContent -
    \ No newline at end of file diff --git a/src/Connected.Components/Components/Container/Container.razor.cs b/src/Connected.Components/Components/Container/Container.razor.cs deleted file mode 100644 index fcdfaf4..0000000 --- a/src/Connected.Components/Components/Container/Container.razor.cs +++ /dev/null @@ -1,51 +0,0 @@ -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; -public partial class Container : UIComponent -{ - - #region Content placeholders - - /// - /// Child content of component. - /// - [Parameter] - public RenderFragment ChildContent { get; set; } - - #endregion - - #region Styling properties - private CssBuilder CompiledClassList - { - get - { - return new CssBuilder("container") - .AddClass(ClassList); - } - } - - protected StyleBuilder CompiledStyleList - { - get - { - return new StyleBuilder() - .AddStyle(StyleList); - - } - } - - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? ClassList { get; set; } - - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? StyleList { get; set; } - - #endregion -} diff --git a/src/Connected.Components/Components/DataGrid/AggregateDefinition.cs b/src/Connected.Components/Components/DataGrid/AggregateDefinition.cs deleted file mode 100644 index 2aa97cf..0000000 --- a/src/Connected.Components/Components/DataGrid/AggregateDefinition.cs +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Linq.Expressions; - -namespace Connected.Components; - -public class AggregateDefinition -{ - public AggregateType Type { get; set; } = AggregateType.Count; - public string DisplayFormat { get; set; } = "{value}"; - public Func, string> CustomAggregate { get; set; } - - private AggregateType? _cachedType; - private Func _compiledAvgExpression; - private Func _compiledMinMaxExpression; - private Func _compiledSumExpression; - - public string GetValue(string field, IEnumerable items) - { - if (items == null || items.Count() == 0) - { - return DisplayFormat.Replace("{value}", "0"); - } - - object value = null; - - if (_cachedType != Type) - { - _cachedType = Type; - - if (Type == AggregateType.Avg) - { - var parameter = Expression.Parameter(typeof(T), "x"); - var f = Expression.Convert(Expression.Property(parameter, typeof(T).GetProperty(field)), typeof(decimal)); - _compiledAvgExpression = Expression.Lambda>(f, parameter).Compile(); - value = items.Average(_compiledAvgExpression); - } - else if (Type == AggregateType.Count) - { - value = items.Count(); - } - else if (Type == AggregateType.Custom) - { - return CustomAggregate.Invoke(items); - } - else if (Type == AggregateType.Max) - { - var parameter = Expression.Parameter(typeof(T), "x"); - var f = Expression.Convert(Expression.Property(parameter, typeof(T).GetProperty(field)), typeof(object)); - _compiledMinMaxExpression = Expression.Lambda>(f, parameter).Compile(); - value = items.Max(_compiledMinMaxExpression); - } - else if (Type == AggregateType.Min) - { - var parameter = Expression.Parameter(typeof(T), "x"); - var f = Expression.Convert(Expression.Property(parameter, typeof(T).GetProperty(field)), typeof(object)); - _compiledMinMaxExpression = Expression.Lambda>(f, parameter).Compile(); - value = items.Min(_compiledMinMaxExpression); - } - else if (Type == AggregateType.Sum) - { - var parameter = Expression.Parameter(typeof(T), "x"); - var f = Expression.Convert(Expression.Property(parameter, typeof(T).GetProperty(field)), typeof(decimal)); - _compiledSumExpression = Expression.Lambda>(f, parameter).Compile(); - value = items.Sum(_compiledSumExpression); - } - } - else - { - if (Type == AggregateType.Avg) - { - value = items.Average(_compiledAvgExpression); - } - else if (Type == AggregateType.Count) - { - value = items.Count(); - } - else if (Type == AggregateType.Custom) - { - return CustomAggregate.Invoke(items); - } - else if (Type == AggregateType.Max) - { - value = items.Max(_compiledMinMaxExpression); - } - else if (Type == AggregateType.Min) - { - value = items.Min(_compiledMinMaxExpression); - } - else if (Type == AggregateType.Sum) - { - value = items.Sum(_compiledSumExpression); - } - } - - return DisplayFormat.Replace("{value}", (value ?? "").ToString()); - } - - public static AggregateDefinition SimpleAvg() - { - return new AggregateDefinition - { - Type = AggregateType.Avg, - DisplayFormat = "Average {value}" - }; - } - - public static AggregateDefinition SimpleCount() - { - return new AggregateDefinition - { - Type = AggregateType.Count, - DisplayFormat = "Total {value}" - }; - } - - public static AggregateDefinition SimpleMax() - { - return new AggregateDefinition - { - Type = AggregateType.Max, - DisplayFormat = "Max {value}" - }; - } - - public static AggregateDefinition SimpleMin() - { - return new AggregateDefinition - { - Type = AggregateType.Min, - DisplayFormat = "Min {value}" - }; - } - - public static AggregateDefinition SimpleSum() - { - return new AggregateDefinition - { - Type = AggregateType.Sum, - DisplayFormat = "Sum {value}" - }; - } -} diff --git a/src/Connected.Components/Components/DataGrid/AggregateType.cs b/src/Connected.Components/Components/DataGrid/AggregateType.cs deleted file mode 100644 index 5defad5..0000000 --- a/src/Connected.Components/Components/DataGrid/AggregateType.cs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected.Components; - -public enum AggregateType -{ - Avg, - Count, - Custom, - Max, - Min, - Sum -} diff --git a/src/Connected.Components/Components/DataGrid/Cell.cs b/src/Connected.Components/Components/DataGrid/Cell.cs deleted file mode 100644 index 71a4a91..0000000 --- a/src/Connected.Components/Components/DataGrid/Cell.cs +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Diagnostics.CodeAnalysis; -using System.Text.Json; -using Connected.Utilities; - -namespace Connected.Components; - -[RequiresUnreferencedCode(CodeMessage.SerializationUnreferencedCodeMessage)] -internal class Cell -{ - private readonly DataGrid _dataGrid; - private readonly Column _column; - internal T _item; - internal string valueString; - internal double? valueNumber; - internal bool isEditing; - internal CellContext cellContext; - - #region Computed Properties - - internal object ComputedValue - { - get - { - if (_item == null || _column.Field == null) - return null; - - // Handle case where T is IDictionary. - if (typeof(T) == typeof(IDictionary)) - { - if (_column.FieldType == null) - throw new ArgumentNullException(nameof(_column.FieldType)); - - if (_column.FieldType.IsEnum) - { - var o = ((IDictionary)_item)[_column.Field]; - - if (o == null) - return null; - - if (o.GetType() == typeof(JsonElement)) - { - var json = (JsonElement)o; - return Enum.ToObject(_column.FieldType, json.GetInt32()); - } - else - { - return Enum.ToObject(_column.FieldType, o); - } - } - - return ((IDictionary)_item)[_column.Field]; - } - - var property = _item.GetType().GetProperties().SingleOrDefault(x => x.Name == _column.Field); - return property.GetValue(_item); - } - } - internal string computedClass - { - get - { - return new CssBuilder(_column.CellClassFunc?.Invoke(_item)) - .AddClass(_column.CellClass) - .AddClass("table-cell") - .AddClass("table-cell-hide", _column.HideSmall) - .AddClass("sticky-left", _column.StickyLeft) - .AddClass("sticky-right", _column.StickyRight) - .AddClass($"edit-mode-cell", _dataGrid.EditMode == DataGridEditMode.Cell && _column.IsEditable) - .Build(); - } - } - internal string computedStyle - { - get - { - return new StyleBuilder() - .AddStyle(_column.CellStyleFunc?.Invoke(_item)) - .AddStyle(_column.CellStyle) - .Build(); - } - } - - #endregion - - public Cell(DataGrid dataGrid, Column column, T item) - { - _dataGrid = dataGrid; - _column = column; - _item = item; - - OnStartedEditingItem(); - - // Create the CellContext - cellContext = new CellContext(_dataGrid, _item); - } - - public async Task StringValueChangedAsync(string value) - { - var property = _item.GetType().GetProperties().SingleOrDefault(x => x.Name == _column.Field); - property.SetValue(_item, value); - - // If the edit mode is Cell, we update immediately. - if (_dataGrid.EditMode == DataGridEditMode.Cell) - await _dataGrid.CommitItemChangesAsync(_item); - } - - public async Task NumberValueChangedAsync(double? value) - { - var property = _item.GetType().GetProperties().SingleOrDefault(x => x.Name == _column.Field); - property.SetValue(_item, ChangeType(value, property.PropertyType)); - - // If the edit mode is Cell, we update immediately. - if (_dataGrid.EditMode == DataGridEditMode.Cell) - await _dataGrid.CommitItemChangesAsync(_item); - } - - private void OnStartedEditingItem() - { - - if (ComputedValue != null) - { - if (ComputedValue.GetType() == typeof(JsonElement)) - { - if (_column.dataType == typeof(string)) - { - valueString = ((JsonElement)ComputedValue).GetString(); - } - else if (_column.isNumber) - { - valueNumber = ((JsonElement)ComputedValue).GetDouble(); - } - } - else - { - if (_column.dataType == typeof(string)) - { - valueString = (string)ComputedValue; - } - else if (_column.isNumber) - { - valueNumber = Convert.ToDouble(ComputedValue); - } - } - } - } - - private object ChangeType(object value, Type conversion) - { - var t = conversion; - - if (t.IsGenericType && t.GetGenericTypeDefinition().Equals(typeof(Nullable<>))) - { - if (value == null) - { - return null; - } - - t = Nullable.GetUnderlyingType(t); - } - - return Convert.ChangeType(value, t); - } -} diff --git a/src/Connected.Components/Components/DataGrid/CellContext.cs b/src/Connected.Components/Components/DataGrid/CellContext.cs deleted file mode 100644 index 73497b1..0000000 --- a/src/Connected.Components/Components/DataGrid/CellContext.cs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected.Components; - -public class CellContext -{ - internal HashSet selection; - internal HashSet openHierarchies; - public T Item { get; set; } - public CellActions Actions { get; internal set; } - public bool IsSelected - { - get - { - if (selection != null) - { - return selection.Contains(Item); - } - - return false; - } - } - - public CellContext(DataGrid dataGrid, T item) - { - selection = dataGrid.Selection; - openHierarchies = dataGrid._openHierarchies; - Item = item; - Actions = new CellContext.CellActions - { - SetSelectedItem = async (x) => await dataGrid.SetSelectedItemAsync(x, item), - StartEditingItem = async () => await dataGrid.SetEditingItemAsync(item), - CancelEditingItem = async () => await dataGrid.CancelEditingItemAsync(), - ToggleHierarchyVisibilityForItem = async () => await dataGrid.ToggleHierarchyVisibilityAsync(item), - }; - } - - public class CellActions - { - public Action SetSelectedItem { get; internal set; } - public Action StartEditingItem { get; internal set; } - public Action CancelEditingItem { get; internal set; } - public Action ToggleHierarchyVisibilityForItem { get; internal set; } - } -} diff --git a/src/Connected.Components/Components/DataGrid/Column.cs b/src/Connected.Components/Components/DataGrid/Column.cs deleted file mode 100644 index 9822031..0000000 --- a/src/Connected.Components/Components/DataGrid/Column.cs +++ /dev/null @@ -1,403 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Diagnostics.CodeAnalysis; -using System.Globalization; -using System.Linq.Expressions; -using System.Text.Json; -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -[RequiresUnreferencedCode(CodeMessage.SerializationUnreferencedCodeMessage)] -public partial class Column : UIComponent -{ - [CascadingParameter] public DataGrid DataGrid { get; set; } - - //[CascadingParameter(Name = "HeaderCell")] public HeaderCell HeaderCell { get; set; } - - [Parameter] public T Value { get; set; } - [Parameter] public EventCallback ValueChanged { get; set; } - - //[Parameter] public bool Visible { get; set; } = true; - - /// - /// Specifies the name of the object's property bound to the column - /// - [Parameter] public string Field { get; set; } - - [Parameter] public Type FieldType { get; set; } - [Parameter] public string Title { get; set; } - [Parameter] public bool HideSmall { get; set; } - [Parameter] public int FooterColSpan { get; set; } = 1; - [Parameter] public int HeaderColSpan { get; set; } = 1; - [Parameter] public RenderFragment ChildContent { get; set; } - [Parameter] public RenderFragment> HeaderTemplate { get; set; } - [Parameter] public RenderFragment> CellTemplate { get; set; } - [Parameter] public RenderFragment> FooterTemplate { get; set; } - [Parameter] public RenderFragment> GroupTemplate { get; set; } - [Parameter] public Func GroupBy { get; set; } - - #region HeaderCell Properties - - [Parameter] public string HeaderClass { get; set; } - [Parameter] public Func HeaderClassFunc { get; set; } - [Parameter] public string HeaderStyle { get; set; } - [Parameter] public Func HeaderStyleFunc { get; set; } - - /// - /// Determines whether this columns data can be sorted. This overrides the Sortable parameter on the DataGrid. - /// - [Parameter] public bool? Sortable { get; set; } - - [Parameter] public bool? Resizable { get; set; } - - /// - /// Determines whether this columns data can be filtered. This overrides the Filterable parameter on the DataGrid. - /// - [Parameter] public bool? Filterable { get; set; } - - [Parameter] public bool? ShowFilterIcon { get; set; } - - /// - /// Determines whether this column can be hidden. This overrides the Hideable parameter on the DataGrid. - /// - [Parameter] public bool? Hideable { get; set; } - - [Parameter] public bool Hidden { get; set; } - [Parameter] public EventCallback HiddenChanged { get; set; } - - /// - /// Determines whether to show or hide column options. This overrides the ShowColumnOptions parameter on the DataGrid. - /// - [Parameter] public bool? ShowColumnOptions { get; set; } - - [Parameter] - public Func SortBy - { - get - { - return GetLocalSortFunc(); - } - set - { - _sortBy = value; - } - } - - [Parameter] public SortDirection InitialDirection { get; set; } = SortDirection.None; - [Parameter] public string SortIcon { get; set; } = Icons.Material.Filled.ArrowUpward; - - /// - /// Specifies whether the column can be grouped. - /// - [Parameter] public bool? Groupable { get; set; } - - /// - /// Specifies whether the column is grouped. - /// - [Parameter] public bool Grouping { get; set; } - - /// - /// Specifies whether the column is sticky. - /// - [Parameter] public bool StickyLeft { get; set; } - - [Parameter] public bool StickyRight { get; set; } - - [Parameter] public RenderFragment> FilterTemplate { get; set; } - - private CultureInfo _culture; - /// - /// The culture used to represent this column and by the filtering input field. - /// - [Parameter] - [Category(CategoryTypes.Table.Appearance)] - public CultureInfo Culture - { - get => _culture ?? DataGrid?.Culture; - set - { - _culture = value; - } - } - #endregion - - #region Cell Properties - - [Parameter] public string CellClass { get; set; } - [Parameter] public Func CellClassFunc { get; set; } - [Parameter] public string CellStyle { get; set; } - [Parameter] public Func CellStyleFunc { get; set; } - [Parameter] public bool IsEditable { get; set; } = true; - [Parameter] public RenderFragment> EditTemplate { get; set; } - - #endregion - - #region FooterCell Properties - - [Parameter] public string FooterClass { get; set; } - [Parameter] public Func FooterClassFunc { get; set; } - [Parameter] public string FooterStyle { get; set; } - [Parameter] public Func FooterStyleFunc { get; set; } - [Parameter] public bool EnableFooterSelection { get; set; } - [Parameter] public AggregateDefinition AggregateDefinition { get; set; } - - #endregion - - public Action ColumnStateHasChanged { get; set; } - - internal string headerClassname => - new CssBuilder("table-cell") - .AddClass("table-cell-hide", HideSmall) - .AddClass("sticky-left", StickyLeft) - .AddClass("sticky-right", StickyRight) - .AddClass(AdditionalClassList) - .Build(); - - internal string cellClassname; - //internal string cellClassname => - // new CssBuilder("table-cell") - // .AddClass("table-cell-hide", HideSmall) - // .AddClass("sticky-right", StickyRight) - // .AddClass(Class) - // .Build(); - - internal string footerClassname => - new CssBuilder("table-cell") - .AddClass("table-cell-hide", HideSmall) - .AddClass(AdditionalClassList) - .Build(); - - internal bool grouping; - - #region Computed Properties - - internal Type dataType - { - get - { - if (FieldType != null) - return FieldType; - - if (Field == null) - return typeof(object); - - if (typeof(T) == typeof(IDictionary) && FieldType == null) - throw new ArgumentNullException(nameof(FieldType)); - - var t = typeof(T).GetProperty(Field).PropertyType; - return Nullable.GetUnderlyingType(t) ?? t; - } - } - - // This returns the data type for an object when T is an IDictionary. - internal Type innerDataType - { - get - { - // Handle case where T is IDictionary. - if (typeof(T) == typeof(IDictionary)) - { - // We need to get the actual type here so we need to look at actual data. - // get the first item where we have a non-null value in the field to be filtered. - var first = DataGrid.Items.FirstOrDefault(x => ((IDictionary)x)[Field] != null); - - if (first != null) - { - return ((IDictionary)first)[Field].GetType(); - } - else - { - return typeof(object); - } - } - - return dataType; - } - } - - internal bool isNumber - { - get - { - return FilterOperator.NumericTypes.Contains(dataType); - } - } - - internal string computedTitle - { - get - { - return Title ?? Field; - } - } - - internal bool groupable - { - get - { - return Groupable ?? DataGrid?.Groupable ?? false; - } - } - - internal bool filterable - { - get - { - return Filterable ?? DataGrid?.Filterable ?? false; - } - } - - #endregion - - internal int SortIndex { get; set; } = -1; - internal HeaderCell HeaderCell { get; set; } - - private Func _sortBy; - internal Func groupBy; - internal HeaderContext headerContext; - internal FilterContext filterContext; - internal FooterContext footerContext; - - [UnconditionalSuppressMessage("Trimming", "IL2046: 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.", Justification = "Suppressing because we annotating the whole component with RequiresUnreferencedCodeAttribute for information that generic type must be preserved.")] - protected override void OnInitialized() - { - if (!Hideable.HasValue) - Hideable = DataGrid?.Hideable; - - groupBy = GroupBy; - CompileGroupBy(); - - if (groupable && Grouping) - grouping = Grouping; - - if (null != DataGrid) - DataGrid.AddColumn(this); - - // Add the HeaderContext - headerContext = new HeaderContext(DataGrid); - - // Add the FilterContext - if (filterable) - { - filterContext = new FilterContext(DataGrid); - var operators = FilterOperator.GetOperatorByDataType(dataType); - filterContext.FilterDefinition = new FilterDefinition() - { - DataGrid = this.DataGrid, - Field = Field, - FieldType = FieldType, - Title = Title, - Operator = operators.FirstOrDefault() - }; - } - - // Add the FooterContext - footerContext = new FooterContext(DataGrid); - } - - internal Func GetLocalSortFunc() - { - if (null == _sortBy) - { - var type = typeof(T); - - // set the default SortBy - if (type == typeof(IDictionary)) - { - if (FieldType == null) - throw new ArgumentNullException(nameof(FieldType)); - - var innerType = innerDataType; - - if (innerType == typeof(JsonElement)) - { - _sortBy = x => - { - var json = (JsonElement)(x as IDictionary)[Field]; - - if (FieldType == typeof(string)) - return json.GetString(); - else if (isNumber) - return json.GetDouble(); - else - return json.GetRawText(); - }; - } - else - { - _sortBy = x => Convert.ChangeType((x as IDictionary)[Field], FieldType); - } - } - else - { - var parameter = Expression.Parameter(type, "x"); - var field = Expression.Convert(Expression.Property(parameter, type.GetProperty(Field)), typeof(object)); - _sortBy = Expression.Lambda>(field, parameter).Compile(); - } - } - - return _sortBy; - } - - internal void CompileGroupBy() - { - if (groupBy == null && !string.IsNullOrWhiteSpace(Field)) - { - var type = typeof(T); - - // set the default GroupBy - if (type == typeof(IDictionary)) - { - groupBy = x => (x as IDictionary)[Field]; - } - else - { - var parameter = Expression.Parameter(type, "x"); - var field = Expression.Convert(Expression.Property(parameter, type.GetProperty(Field)), typeof(object)); - groupBy = Expression.Lambda>(field, parameter).Compile(); - } - } - } - - // Allows child components to change column grouping. - internal void SetGrouping(bool g) - { - if (groupable) - { - grouping = g; - DataGrid?.ChangedGrouping(this); - } - } - - /// - /// This method's sole purpose is for the DataGrid to remove grouping in mass. - /// - internal void RemoveGrouping() - { - grouping = false; - } - - public async Task HideAsync() - { - Hidden = true; - await HiddenChanged.InvokeAsync(Hidden); - } - - public async Task ShowAsync() - { - Hidden = false; - await HiddenChanged.InvokeAsync(Hidden); - } - - public async Task ToggleAsync() - { - Hidden = !Hidden; - await HiddenChanged.InvokeAsync(Hidden); - DataGrid.ExternalStateHasChanged(); - } -} diff --git a/src/Connected.Components/Components/DataGrid/DataGrid.razor b/src/Connected.Components/Components/DataGrid/DataGrid.razor deleted file mode 100644 index d641904..0000000 --- a/src/Connected.Components/Components/DataGrid/DataGrid.razor +++ /dev/null @@ -1,512 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent -@typeparam T -@using Connected.Utilities - -@Columns - - -
    - @if (Items != null || ServerData != null) - { - @if (ToolBarContent != null) - { - - @ToolBarContent - @if (ShowMenuIcon) - { - @ToolbarMenu(this) - } - - } - else - { - @if (ShowMenuIcon) - { - @*Add the default toolbar.*@ - - - @ToolbarMenu(this) - - } - } -
    - - @if (ColGroup != null) - { - - @ColGroup - - } - - - @Header - - - @foreach (var column in RenderedColumns) - { - - } - - @if (_filtersMenuVisible && FilterMode == DataGridFilterMode.Simple) - { - - - @if (FilterTemplate == null) - { - - @foreach (var f in FilterDefinitions) - { - @Filter(f, null) - } - - - @if (ServerData != null) - { - - } - - } - else - { - @FilterTemplate(FilterDefinitions) - } - - } - @if (_columnsPanelVisible) - { - - - - @foreach (var column in RenderedColumns) - { - - - - } - - - - - - - - - - } - @if (Filterable && FilterMode == DataGridFilterMode.ColumnFilterRow) - { - - @foreach (var column in RenderedColumns) - { - - } - - } - - - @if (Loading) - { - - - - } - - @{var resolvedPageItems = CurrentPageItems.ToList();} - @if (resolvedPageItems != null && resolvedPageItems.Count > 0) - { - if (GroupedColumn != null) - { - foreach (var g in _groups) - { - - @{ var groupClass = new CssBuilder(GroupClass).AddClass(GroupClassFunc?.Invoke(g)).Build(); } - @{ var groupStyle = new StyleBuilder().AddStyle(GroupStyle).AddStyle(GroupStyleFunc?.Invoke(g)).Build(); } - - - - var rowIndex = 0; - - @if (g.IsExpanded) - { - - @{ var rowClass = new CssBuilder(RowClass).AddClass(RowClassFunc?.Invoke(item, rowIndex)).Build(); } - @{ var rowStyle = new StyleBuilder().AddStyle(RowStyle).AddStyle(RowStyleFunc?.Invoke(item, rowIndex)).Build(); } - @{ var tmpRowIndex = rowIndex; } - - - @foreach (var column in RenderedColumns) - { - if (!column.Hidden) - { - @Cell(column, item) - } - } - - - @if (ChildRowContent != null && (_openHierarchies.Contains(item) || !hasHierarchyColumn)) - { - - - - } - @{ rowIndex++; } - - @*Group Footer*@ - - @FooterCells(g.Grouping.ToList()) - - } - } - } - else - { - var rowIndex = 0; - - @{ var rowClass = new CssBuilder(RowClass).AddClass(RowClassFunc?.Invoke(item, rowIndex)).Build(); } - @{ var rowStyle = new StyleBuilder().AddStyle(RowStyle).AddStyle(RowStyleFunc?.Invoke(item, rowIndex)).Build(); } - @{ var tmpRowIndex = rowIndex; } - - - @foreach (var column in RenderedColumns) - { - if (!column.Hidden) - { - @Cell(column, item) - } - } - - - @if (ChildRowContent != null && (_openHierarchies.Contains(item) || !hasHierarchyColumn)) - { - - - - } - @{ rowIndex++; } - - } - } - else if(Loading ? LoadingContent != null : NoRecordsContent != null) - { - - - - } - - - - @FooterCells(resolvedPageItems) - - -
    - -
    - - - @if (GroupedColumn.GroupTemplate == null) - { - @GroupedColumn.computedTitle: @g.Grouping.Key - } - else - { - @GroupedColumn.GroupTemplate(@g) - } -
    - @ChildRowContent(new CellContext(this, item)) -
    - @ChildRowContent(new CellContext(this, item)) -
    -
    - @if(Loading) - { - @LoadingContent - } - else - { - @NoRecordsContent - } -
    -
    -
    - @if (PagerContent != null) - { -
    - @PagerContent -
    - } - } -
    - - - - Edit - - - -
    - @foreach (var column in RenderedColumns) - { - var cell = new Cell(this, column, _editingItem); - - if (column.EditTemplate != null) - { - @column.EditTemplate(cell.cellContext) - } - else - { - if (column.dataType == typeof(string)) - { - - } - else if (column.isNumber) - { - - } - } - } - -
    - - - - -
    -
    - -@code { - internal RenderFragment ToolbarMenu(DataGrid __this) - { - return - @ - - Columns - @if (__this.Groupable) - { - Expand All Groups - Collapse All Groups - } - @if(__this.ServerData != null) - { - Refresh Data - } - - ; - } - - internal RenderFragment FooterCells(IEnumerable currentItems) - { - return - @ - @if (currentItems != null) - { - foreach (var column in RenderedColumns) - { - if (!column.Hidden) - { - if (column.AggregateDefinition != null || column.FooterTemplate != null || hasFooter) - { - - } - } - } - } - ; - } - - internal RenderFragment Cell(Column column, T item) - { - return - @ - @{ - var cell = new Cell(this, column, item); - } - - @if (column.IsEditable && !ReadOnly && DataGridEditMode.Cell == EditMode) - { - if (column.EditTemplate != null) - { - @column.EditTemplate(cell.cellContext) - } - else - { - if (column.dataType == typeof(string)) - { - - } - else if (column.isNumber) - { - - } - } - } - else - { - if (column.CellTemplate != null) - { - @column.CellTemplate(cell.cellContext) - } - else if (column.Culture != null && column.isNumber) - { - @cell.valueNumber?.ToString(column.Culture) - } - else - { - @cell.ComputedValue - } - } - - - ; - } - - internal RenderFragment Filter(FilterDefinition f, Column column) - { - return - @ - @{ - var filter = new Filter(this, f, column); - } - @if (column == null) - { - - - - - - - - - - - @if (filter.dataType == typeof(string) && !(f.Operator ?? "").EndsWith("empty")) - { - - } - else if (filter.isNumber && !(f.Operator ?? "").EndsWith("empty")) - { - - } - else if (filter.isEnum) - { - - } - else if (filter.dataType == typeof(bool)) - { - - } - else if (filter.dataType == typeof(DateTime) && !(f.Operator ?? "").EndsWith("empty")) - { - - - - - - - - - } - else if (filter.dataType == typeof(Guid)) - { - - } - - } - else - { - - - - - @if (filter.dataType == typeof(string) && !(f.Operator ?? "").EndsWith("empty")) - { - - } - else if (filter.isNumber && !(f.Operator ?? "").EndsWith("empty")) - { - - } - else if (filter.isEnum) - { - - } - else if (filter.dataType == typeof(bool)) - { - - } - else if (filter.dataType == typeof(DateTime) && !(f.Operator ?? "").EndsWith("empty")) - { - - - - - - - - - } - else if (filter.dataType == typeof(Guid)) - { - - } - - } - - ; - } -} \ No newline at end of file diff --git a/src/Connected.Components/Components/DataGrid/DataGrid.razor.cs b/src/Connected.Components/Components/DataGrid/DataGrid.razor.cs deleted file mode 100644 index 2d244f5..0000000 --- a/src/Connected.Components/Components/DataGrid/DataGrid.razor.cs +++ /dev/null @@ -1,1323 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Collections.Specialized; -using System.Diagnostics.CodeAnalysis; -using System.Globalization; -using System.Reflection; -using System.Text.Json; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -[RequiresUnreferencedCode(CodeMessage.SerializationUnreferencedCodeMessage)] -public partial class DataGrid : UIComponent -{ - private int _currentPage = 0; - internal int? _rowsPerPage; - private bool _isFirstRendered = false; - private bool _filtersMenuVisible = false; - private bool _columnsPanelVisible = false; - private IEnumerable _items; - private T _selectedItem; - internal HashSet _groupExpansions = new HashSet(); - private List> _groups = new List>(); - internal HashSet _openHierarchies = new HashSet(); - private PropertyInfo[] _properties = typeof(T).GetProperties(); - - protected string _classname => - new CssBuilder("table") - .AddClass("data-grid") - .AddClass("xs-table", Breakpoint == Breakpoint.Xs) - .AddClass("sm-table", Breakpoint == Breakpoint.Sm) - .AddClass("md-table", Breakpoint == Breakpoint.Md) - .AddClass("lg-table", Breakpoint == Breakpoint.Lg || Breakpoint == Breakpoint.Always) - .AddClass("xl-table", Breakpoint == Breakpoint.Xl || Breakpoint == Breakpoint.Always) - .AddClass("table-dense", Dense) - .AddClass("table-hover", Hover) - .AddClass("table-bordered", Bordered) - .AddClass("table-striped", Striped) - .AddClass("table-outlined", Outlined) - .AddClass("table-square", Square) - .AddClass("table-sticky-header", FixedHeader) - .AddClass("table-sticky-footer", FixedFooter) - .AddClass($"elevation-{Elevation}", !Outlined) - .AddClass(AdditionalClassList) - .Build(); - - protected string _style => - new StyleBuilder() - .AddStyle("overflow-x", "auto", when: HorizontalScrollbar || ColumnResizeMode == ResizeMode.Container) - .AddStyle("position", "relative", when: hasStickyColumns) - .Build(); - - protected string _tableStyle => - new StyleBuilder() - .AddStyle("height", Height, !string.IsNullOrWhiteSpace(Height)) - .AddStyle("width", "max-content", when: (HorizontalScrollbar || ColumnResizeMode == ResizeMode.Container) && !hasStickyColumns) - .AddStyle("display", "block", when: HorizontalScrollbar) - .Build(); - - protected string _tableClass => - new CssBuilder("table-container") - .AddClass("cursor-col-resize", when: IsResizing) - .Build(); - - protected string _headClassname => new CssBuilder("table-head") - .AddClass(HeaderClass).Build(); - - protected string _footClassname => new CssBuilder("table-foot") - .AddClass(FooterClass).Build(); - - internal SortDirection GetColumnSortDirection(string columnName) - { - if (columnName == null) - { - return SortDirection.None; - } - else - { - SortDefinition sortDefinition = null; - var ok = SortDefinitions.TryGetValue(columnName, out sortDefinition); - - if (ok) - { - return sortDefinition.Descending ? SortDirection.Descending : SortDirection.Ascending; - } - else - { - return SortDirection.None; - } - } - } - - protected int numPages - { - get - { - if (ServerData != null) - return (int)Math.Ceiling(_server_data.TotalItems / (double)RowsPerPage); - - return (int)Math.Ceiling(FilteredItems.Count() / (double)RowsPerPage); - } - } - - public readonly List> RenderedColumns = new List>(); - internal T _editingItem; - - //internal int editingItemHash; - internal T editingSourceItem; - - internal T _previousEditingItem; - internal bool isEditFormOpen; - - // converters - private Converter _oppositeBoolConverter = new LambdaConverter(value => value ? false : true, value => value.HasValue ? !value.Value : true); - - #region Notify Children Delegates - - internal Action>, HashSet> SortChangedEvent { get; set; } - internal Action> SelectedItemsChangedEvent { get; set; } - internal Action SelectedAllItemsChangedEvent { get; set; } - internal Action StartedEditingItemEvent { get; set; } - internal Action EditingCancelledEvent { get; set; } - public Action PagerStateHasChangedEvent { get; set; } - - #endregion - - #region EventCallbacks - - /// - /// Callback is called when a row has been clicked and returns the selected item. - /// - [Parameter] public EventCallback SelectedItemChanged { get; set; } - - /// - /// Callback is called whenever items are selected or deselected in multi selection mode. - /// - [Parameter] public EventCallback> SelectedItemsChanged { get; set; } - - /// - /// Callback is called whenever a row is clicked. - /// - [Parameter] public EventCallback> RowClick { get; set; } - - /// - /// Callback is called when an item has begun to be edited. Returns the item being edited. - /// - [Parameter] public EventCallback StartedEditingItem { get; set; } - - /// - /// Callback is called when the process of editing an item has been cancelled. Returns the item which was previously in edit mode. - /// - [Parameter] public EventCallback CancelledEditingItem { get; set; } - - /// - /// Callback is called when the changes to an item are committed. Returns the item whose changes were committed. - /// - [Parameter] public EventCallback CommittedItemChanges { get; set; } - - /// - /// Callback is called when a field changes in the dialog MudForm. Only works in EditMode.Form - /// - [Parameter] public EventCallback FormFieldChanged { get; set; } - - #endregion - - #region Parameters - - /// - /// Controls whether data in the DataGrid can be sorted. This is overridable by each column. - /// - [Parameter] public SortMode SortMode { get; set; } = SortMode.Multiple; - - /// - /// Controls whether data in the DataGrid can be filtered. This is overridable by each column. - /// - [Parameter] public bool Filterable { get; set; } = false; - - /// - /// Controls whether columns in the DataGrid can be hidden. This is overridable by each column. - /// - [Parameter] public bool Hideable { get; set; } = false; - - /// - /// Controls whether to hide or show the column options. This is overridable by each column. - /// - [Parameter] public bool ShowColumnOptions { get; set; } = true; - - /// - /// At what breakpoint the table should switch to mobile layout. Takes None, Xs, Sm, Md, Lg and Xl the default behavior is breaking on Xs. - /// - [Parameter] public Breakpoint Breakpoint { get; set; } = Breakpoint.Xs; - - /// - /// The higher the number, the heavier the drop-shadow. 0 for no shadow. - /// - [Parameter] public int Elevation { set; get; } = 1; - - /// - /// Set true to disable rounded corners - /// - [Parameter] public bool Square { get; set; } - - /// - /// If true, table will be outlined. - /// - [Parameter] public bool Outlined { get; set; } - - /// - /// If true, table's cells will have left/right borders. - /// - [Parameter] public bool Bordered { get; set; } - - /// - /// Specifies a group of one or more columns in a table for formatting. - /// Ex: - /// table - /// colgroup - /// col span="2" style="background-color:red" - /// col style="background-color:yellow" - /// colgroup - /// header - /// body - /// table - /// - [Parameter] public RenderFragment ColGroup { get; set; } - - /// - /// Set true for rows with a narrow height - /// - [Parameter] public bool Dense { get; set; } - - /// - /// Set true to see rows hover on mouse-over. - /// - [Parameter] public bool Hover { get; set; } - - /// - /// If true, striped table rows will be used. - /// - [Parameter] public bool Striped { get; set; } - - /// - /// When true, the header will stay in place when the table is scrolled. Note: set Height to make the table scrollable. - /// - [Parameter] public bool FixedHeader { get; set; } - - /// - /// When true, the footer will be visible is not scrolled to the bottom. Note: set Height to make the table scrollable. - /// - [Parameter] public bool FixedFooter { get; set; } - - [Parameter] public bool ShowFilterIcons { get; set; } = true; - - [Parameter] public DataGridFilterMode FilterMode { get; set; } - - [Parameter] public DataGridFilterCaseSensitivity FilterCaseSensitivity { get; set; } - - [Parameter] public RenderFragment>> FilterTemplate { get; set; } - - /// - /// The list of FilterDefinitions that have been added to the data grid. FilterDefinitions are managed by the data - /// grid automatically when using the built in filter UI. You can also programmatically manage these definitions - /// through this collection. - /// - [Parameter] public List> FilterDefinitions { get; set; } = new List>(); - - /// - /// The list of SortDefinitions that have been added to the data grid. SortDefinitions are managed by the data - /// grid automatically when using the built in filter UI. You can also programmatically manage these definitions - /// through this collection. - /// - [Parameter] public Dictionary> SortDefinitions { get; set; } = new Dictionary>(); - - /// - /// If true, the results are displayed in a Virtualize component, allowing a boost in rendering speed. - /// - [Parameter] public bool Virtualize { get; set; } - - /// - /// Gets or sets a value that determines how many additional items will be rendered - /// before and after the visible region. This help to reduce the frequency of rendering - /// during scrolling. However, higher values mean that more elements will be present - /// in the page. - /// Only used for virtualization. - /// - [Parameter] public int OverscanCount { get; set; } = 3; - - /// - /// CSS class for the table rows. Note, many CSS settings are overridden by MudTd though - /// - [Parameter] public string RowClass { get; set; } - - /// - /// CSS styles for the table rows. Note, many CSS settings are overridden by MudTd though - /// - [Parameter] public string RowStyle { get; set; } - - /// - /// Returns the class that will get joined with RowClass. Takes the current item and row index. - /// - [Parameter] public Func RowClassFunc { get; set; } - - /// - /// Returns the class that will get joined with RowClass. Takes the current item and row index. - /// - [Parameter] public Func RowStyleFunc { get; set; } - - /// - /// Set to true to enable selection of multiple rows. - /// - [Parameter] public bool MultiSelection { get; set; } - - /// - /// When the grid is not read only, you can specify what type of editing mode to use. - /// - [Parameter] public DataGridEditMode? EditMode { get; set; } - - /// - /// Allows you to specify the action that will trigger an edit when the EditMode is Form. - /// - [Parameter] public DataGridEditTrigger? EditTrigger { get; set; } = DataGridEditTrigger.Manual; - - /// - /// Fine tune the edit dialog. - /// - [Parameter] public DialogOptions EditDialogOptions { get; set; } - - /// - /// The data to display in the table. MudTable will render one row per item - /// - /// - [Parameter] - public IEnumerable Items - { - get => _items; - set - { - if (_items == value) - return; - - _items = value; - - if (PagerStateHasChangedEvent != null) - InvokeAsync(PagerStateHasChangedEvent); - - // set initial grouping - if (Groupable) - { - GroupItems(); - } - - // Setup ObservableCollection functionality. - if (_items is INotifyCollectionChanged) - { - (_items as INotifyCollectionChanged).CollectionChanged += (s, e) => - { - if (Groupable) - GroupItems(); - }; - } - } - } - - /// - /// Show a loading animation, if true. - /// - [Parameter] public bool Loading { get; set; } - - /// - /// Define if Cancel button is present or not for inline editing. - /// - [Parameter] public bool CanCancelEdit { get; set; } = true; - - /// - /// The color of the loading progress if used. It supports the theme colors. - /// - [Parameter] public ThemeColor LoadingProgressColor { get; set; } = ThemeColor.Info; - - /// - /// Optional. Add any kind of toolbar to this render fragment. - /// - [Parameter] public RenderFragment ToolBarContent { get; set; } - - /// - /// Defines if the table has a horizontal scrollbar. - /// - [Parameter] public bool HorizontalScrollbar { get; set; } - - /// - /// Defines if columns of the grid can be resized. - /// - [Parameter] public ResizeMode ColumnResizeMode { get; set; } - - /// - /// Add a class to the thead tag - /// - [Parameter] public string HeaderClass { get; set; } - - /// - /// Setting a height will allow to scroll the table. If not set, it will try to grow in height. You can set this to any CSS value that the - /// attribute 'height' accepts, i.e. 500px. - /// - [Parameter] public string Height { get; set; } - - /// - /// Add a class to the tfoot tag - /// - [Parameter] public string FooterClass { get; set; } - - /// - /// A function that returns whether or not an item should be displayed in the table. You can use this to implement your own search function. - /// - [Parameter] public Func QuickFilter { get; set; } = null; - - /// - /// Allows adding a custom header beyond that specified in the Column component. Add HeaderCell - /// components to add a custom header. - /// - [Parameter] public RenderFragment Header { get; set; } - - /// - /// The Columns that make up the data grid. Add Column components to this RenderFragment. - /// - [Parameter] public RenderFragment Columns { get; set; } - - /// - /// The culture used to represent numeric columns and his filtering input fields. - /// Each column can override this DataGrid Culture. - /// - [Parameter] - public CultureInfo Culture { get; set; } - - /// - /// Row Child content of the component. - /// - [Parameter] public RenderFragment> ChildRowContent { get; set; } - - /// - /// Defines the table body content when there are no matching records found - /// - [Parameter] public RenderFragment NoRecordsContent { get; set; } - - /// - /// Defines the table body content the table has no rows and is loading - /// - [Parameter] public RenderFragment LoadingContent { get; set; } - - /// - /// Add MudTablePager here to enable breaking the rows in to multiple pages. - /// - [Parameter] public RenderFragment PagerContent { get; set; } - - /// - /// Supply an async function which (re)loads filtered, paginated and sorted data from server. - /// Table will await this func and update based on the returned TableData. - /// Used only with ServerData - /// - [Parameter] public Func, Task>> ServerData { get; set; } - - /// - /// If the table has more items than this number, it will break the rows into pages of said size. - /// Note: requires a MudTablePager in PagerContent. - /// - [Parameter] - public int RowsPerPage - { - get => _rowsPerPage ?? 10; - set - { - if (_rowsPerPage == null) - InvokeAsync(() => SetRowsPerPageAsync(value)); - } - } - - /// - /// The page index of the currently displayed page (Zero based). Usually called by MudTablePager. - /// Note: requires a MudTablePager in PagerContent. - /// - [Parameter] - public int CurrentPage - { - get => _currentPage; - set - { - if (_currentPage == value) - return; - _currentPage = value; - InvokeAsync(StateHasChanged); - - if (_isFirstRendered) - InvokeAsync(InvokeServerLoadFunc); - } - } - - /// - /// Locks Inline Edit mode, if true. - /// - [Parameter] public bool ReadOnly { get; set; } = true; - - /// - /// If MultiSelection is true, this returns the currently selected items. You can bind this property and the initial content of the HashSet you bind it to will cause these rows to be selected initially. - /// - [Parameter] - public HashSet SelectedItems - { - get - { - if (!MultiSelection) - if (_selectedItem is null) - return new HashSet(Array.Empty()); - else - return new HashSet(new T[] { _selectedItem }); - else - return Selection; - } - set - { - if (value == Selection) - return; - if (value == null) - { - if (Selection.Count == 0) - return; - Selection = new HashSet(); - } - else - Selection = value; - SelectedItemsChangedEvent?.Invoke(Selection); - SelectedItemsChanged.InvokeAsync(Selection); - InvokeAsync(StateHasChanged); - } - } - - /// - /// Returns the item which was last clicked on in single selection mode (that is, if MultiSelection is false) - /// - [Parameter] - public T SelectedItem - { - get => _selectedItem; - set - { - if (EqualityComparer.Default.Equals(SelectedItem, value)) - return; - _selectedItem = value; - SelectedItemChanged.InvokeAsync(value); - } - } - - /// - /// Determines whether grouping of columns is allowed in the data grid. - /// - [Parameter] - public bool Groupable - { - get { return _groupable; } - set - { - if (_groupable != value) - { - _groupable = value; - - if (!_groupable) - { - _groups.Clear(); - _groupExpansions.Clear(); - - foreach (var column in RenderedColumns) - column.RemoveGrouping(); - } - } - } - } - - private bool _groupable = false; - - /// - /// If set, a grouped column will be expanded by default. - /// - [Parameter] public bool GroupExpanded { get; set; } - - /// - /// CSS class for the groups. - /// - [Parameter] public string GroupClass { get; set; } - - /// - /// CSS styles for the groups. - /// - [Parameter] public string GroupStyle { get; set; } - - /// - /// Returns the class that will get joined with GroupClass. - /// - [Parameter] public Func, string> GroupClassFunc { get; set; } - - /// - /// Returns the class that will get joined with GroupStyle. - /// - [Parameter] public Func, string> GroupStyleFunc { get; set; } - - /// - /// When true, displays the built-in menu icon in the header of the data grid. - /// - [Parameter] public bool ShowMenuIcon { get; set; } = false; - - #endregion - - #region Properties - - internal IEnumerable CurrentPageItems - { - get - { - if (@PagerContent == null) - { - return FilteredItems; // we have no pagination - } - if (ServerData == null) - { - var filteredItemCount = GetFilteredItemsCount(); - int lastPageNo; - if (filteredItemCount == 0) - lastPageNo = 0; - else - lastPageNo = (filteredItemCount / RowsPerPage) - (filteredItemCount % RowsPerPage == 0 ? 1 : 0); - CurrentPage = lastPageNo < CurrentPage ? lastPageNo : CurrentPage; - } - - return GetItemsOfPage(CurrentPage, RowsPerPage); - } - } - - public HashSet Selection { get; set; } = new HashSet(); - public bool HasPager { get; set; } - private GridData _server_data = new GridData() { TotalItems = 0, Items = Array.Empty() }; - - public IEnumerable FilteredItems - { - get - { - var items = ServerData != null - ? _server_data.Items - : Items; - - // Quick filtering - if (QuickFilter != null) - { - items = items.Where(QuickFilter); - } - - foreach (var f in FilterDefinitions) - { - f.DataGrid = this; - var filterFunc = f.GenerateFilterFunction(); - items = items.Where(filterFunc); - } - - return Sort(items); - } - } - - public IForm Validator { get; set; } = new DataGridRowValidator(); - - internal Column GroupedColumn - { - get - { - return RenderedColumns.FirstOrDefault(x => x.grouping); - } - } - - #endregion - - #region Computed Properties - - private bool hasFooter - { - get - { - return RenderedColumns.Any(x => !x.Hidden && (x.FooterTemplate != null || x.AggregateDefinition != null)); - } - } - - private bool hasStickyColumns - { - get - { - return RenderedColumns.Any(x => x.StickyLeft || x.StickyRight); - } - } - - private bool hasHierarchyColumn - { - get - { - return RenderedColumns.Any(x => x.Tag?.ToString() == "hierarchy-column"); - } - } - - #endregion - - [UnconditionalSuppressMessage("Trimming", "IL2046: 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.", Justification = "Suppressing because we annotating the whole component with RequiresUnreferencedCodeAttribute for information that generic type must be preserved.")] - protected override async Task OnAfterRenderAsync(bool firstRender) - { - if (firstRender) - { - _isFirstRendered = true; - GroupItems(); - await InvokeServerLoadFunc(); - } - else - { - PagerStateHasChangedEvent?.Invoke(); - } - - await base.OnAfterRenderAsync(firstRender); - } - - [UnconditionalSuppressMessage("Trimming", "IL2046: 'RequiresUnreferencedCodeAttribute' annotations must match across all interface implementations or overrides.", Justification = "Suppressing because we annotating the whole component with RequiresUnreferencedCodeAttribute for information that generic type must be preserved.")] - public override async Task SetParametersAsync(ParameterView parameters) - { - var sortModeBefore = SortMode; - await base.SetParametersAsync(parameters); - - if (parameters.TryGetValue(nameof(SortMode), out SortMode sortMode) && sortMode != sortModeBefore) - await ClearCurrentSortings(); - } - - #region Methods - - protected IEnumerable GetItemsOfPage(int page, int pageSize) - { - if (page < 0 || pageSize <= 0) - return Array.Empty(); - - if (ServerData != null) - { - return QuickFilter != null - ? _server_data.Items.Where(QuickFilter) - : _server_data.Items; - } - - return FilteredItems.Skip(page * pageSize).Take(pageSize); - } - - internal async Task InvokeServerLoadFunc() - { - if (ServerData == null) - return; - - Loading = true; - StateHasChanged(); - - var state = new GridState - { - Page = CurrentPage, - PageSize = RowsPerPage, - SortDefinitions = SortDefinitions.Values.OrderBy(sd => sd.Index).ToList(), - // Additional ToList() here to decouple clients from internal list avoiding runtime issues - FilterDefinitions = FilterDefinitions.ToList() - }; - - _server_data = await ServerData(state); - - if (CurrentPage * RowsPerPage > _server_data.TotalItems) - CurrentPage = 0; - - Loading = false; - StateHasChanged(); - PagerStateHasChangedEvent?.Invoke(); - } - - internal void AddColumn(Column column) - { - if (column.Tag?.ToString() == "hierarchy-column") - { - RenderedColumns.Insert(0, column); - } - else if (column.Tag?.ToString() == "select-column") - { - // Position SelectColumn after HierarchyColumn if present - if (RenderedColumns.Select(x => x.Tag).Contains("hierarchy-column")) - { - RenderedColumns.Insert(1, column); - } - else - { - RenderedColumns.Insert(0, column); - } - } - else - { - RenderedColumns.Add(column); - } - } - - /// - /// Called by the DataGrid when the "Add Filter" button is pressed. - /// - internal void AddFilter() - { - var column = RenderedColumns.FirstOrDefault(x => x.filterable); - FilterDefinitions.Add(new FilterDefinition - { - Id = Guid.NewGuid(), - DataGrid = this, - Field = column?.Field, - Title = column?.Title, - FieldType = column?.FieldType - }); - _filtersMenuVisible = true; - StateHasChanged(); - } - - internal void ApplyFilters() - { - _filtersMenuVisible = false; - InvokeServerLoadFunc().AndForget(); - } - - internal void ClearFilters() - { - FilterDefinitions.Clear(); - } - - internal void AddFilter(Guid id, string field) - { - var column = RenderedColumns.FirstOrDefault(x => x.Field == field && x.filterable); - FilterDefinitions.Add(new FilterDefinition - { - Id = id, - DataGrid = this, - Field = field, - Title = column?.Title, - FieldType = column?.FieldType, - }); - _filtersMenuVisible = true; - StateHasChanged(); - } - - internal void RemoveFilter(Guid id) - { - FilterDefinitions.RemoveAll(x => x.Id == id); - GroupItems(); - } - - internal async Task SetSelectedItemAsync(bool value, T item) - { - if (value) - Selection.Add(item); - else - Selection.Remove(item); - - await InvokeAsync(() => SelectedItemsChangedEvent.Invoke(SelectedItems)); - await SelectedItemsChanged.InvokeAsync(SelectedItems); - await InvokeAsync(StateHasChanged); - } - - internal async Task SetSelectAllAsync(bool value) - { - if (value) - Selection = new HashSet(Items); - else - Selection.Clear(); - - SelectedItemsChangedEvent?.Invoke(SelectedItems); - SelectedAllItemsChangedEvent?.Invoke(value); - await SelectedItemsChanged.InvokeAsync(SelectedItems); - StateHasChanged(); - } - - internal IEnumerable Sort(IEnumerable items) - { - if (null == items || !items.Any()) - return items; - - if (null == SortDefinitions || 0 == SortDefinitions.Count) - return items; - - IOrderedEnumerable orderedEnumerable = null; - - foreach (var sortDefinition in SortDefinitions.Values.Where(sd => null != sd.SortFunc).OrderBy(sd => sd.Index)) - { - if (null == orderedEnumerable) - orderedEnumerable = sortDefinition.Descending ? items.OrderByDescending(item => sortDefinition.SortFunc(item)) - : items.OrderBy(item => sortDefinition.SortFunc(item)); - else - orderedEnumerable = sortDefinition.Descending ? orderedEnumerable.ThenByDescending(item => sortDefinition.SortFunc(item)) - : orderedEnumerable.ThenBy(item => sortDefinition.SortFunc(item)); - } - - return orderedEnumerable ?? items; - } - - internal void ClearEditingItem() - { - _editingItem = default; - editingSourceItem = default; - } - - /// - /// This method notifies the consumer that changes to the data have been committed - /// and what those changes are. This variation of the method is only used by the Cell - /// when the EditMode is set to cell. - /// - /// - /// - internal async Task CommitItemChangesAsync(T item) - { - // Here, we need to validate at the cellular level... - await CommittedItemChanges.InvokeAsync(item); - } - - /// - /// This method notifies the consumer that changes to the data have been committed - /// and what those changes are. This variation of the method is used when the EditMode - /// is anything but Cell since the _editingItem is used. - /// - /// - internal async Task CommitItemChangesAsync() - { - // Here, we need to validate at the cellular level... - - if (editingSourceItem != null) - { - foreach (var property in _properties) - { - if (property.CanWrite) - property.SetValue(editingSourceItem, property.GetValue(_editingItem)); - } - - await CommittedItemChanges.InvokeAsync(editingSourceItem); - ClearEditingItem(); - isEditFormOpen = false; - } - } - - internal async Task OnRowClickedAsync(MouseEventArgs args, T item, int rowIndex) - { - await RowClick.InvokeAsync(new DataGridRowClickEventArgs - { - MouseEventArgs = args, - Item = item, - RowIndex = rowIndex - }); - - if (EditMode != DataGridEditMode.Cell && EditTrigger == DataGridEditTrigger.OnRowClick) - await SetEditingItemAsync(item); - - await SetSelectedItemAsync(item); - } - - /// - /// Gets the total count of filtered items in the data grid. - /// - /// - public int GetFilteredItemsCount() - { - if (ServerData != null) - return _server_data.TotalItems; - return FilteredItems.Count(); - } - - /// - /// Navigates to a specific page when the data grid has an attached data pager. - /// - /// - public void NavigateTo(Page page) - { - switch (page) - { - case Page.First: - CurrentPage = 0; - break; - - case Page.Last: - CurrentPage = Math.Max(0, numPages - 1); - break; - - case Page.Next: - CurrentPage = Math.Min(numPages - 1, CurrentPage + 1); - break; - - case Page.Previous: - CurrentPage = Math.Max(0, CurrentPage - 1); - break; - } - - GroupItems(); - } - - /// - /// Sets the rows displayed per page when the data grid has an attached data pager. - /// - /// - public async Task SetRowsPerPageAsync(int size) - { - if (_rowsPerPage == size) - return; - - _rowsPerPage = size; - CurrentPage = 0; - StateHasChanged(); - - if (_isFirstRendered) - await InvokeAsync(InvokeServerLoadFunc); - } - - /// - /// Sets the sort on the data grid. - /// - /// The field. - /// The direction. - /// The sort function. - public async Task SetSortAsync(string field, SortDirection direction, Func sortFunc) - { - var removedSortDefinitions = new HashSet(SortDefinitions.Keys); - SortDefinitions.Clear(); - - var newDefinition = new SortDefinition(field, direction == SortDirection.Descending, 0, sortFunc); - SortDefinitions[field] = newDefinition; - - // In case sort is just updated make sure to not mark the field as removed - removedSortDefinitions.Remove(field); - - await InvokeSortUpdates(SortDefinitions, removedSortDefinitions); - } - - public async Task ExtendSortAsync(string field, SortDirection direction, Func sortFunc) - { - // If SortMode is not multiple, use the default set approach and don't extend. - if (SortMode != SortMode.Multiple) - { - await SetSortAsync(field, direction, sortFunc); - return; - } - - // in case it already exists, just update the current entry - if (SortDefinitions.TryGetValue(field, out var sortDefinition)) - SortDefinitions[field] = sortDefinition with { Descending = direction == SortDirection.Descending, SortFunc = sortFunc }; - else - { - var newDefinition = new SortDefinition(field, direction == SortDirection.Descending, SortDefinitions.Count, sortFunc); - SortDefinitions[field] = newDefinition; - } - - await InvokeSortUpdates(SortDefinitions, null); - } - - public async Task RemoveSortAsync(string field) - { - if (!string.IsNullOrWhiteSpace(field) && SortDefinitions.TryGetValue(field, out var definition)) - { - SortDefinitions.Remove(field); - foreach (var defToUpdate in SortDefinitions.Where(kvp => kvp.Value.Index > definition.Index).ToList()) - SortDefinitions[defToUpdate.Key] = defToUpdate.Value with { Index = defToUpdate.Value.Index - 1 }; - - await InvokeSortUpdates(SortDefinitions, new HashSet() { field }); - } - } - - private async Task ClearCurrentSortings() - { - var removedSortDefinitions = new HashSet(SortDefinitions.Keys); - SortDefinitions.Clear(); - await InvokeSortUpdates(SortDefinitions, removedSortDefinitions); - } - - private async Task InvokeSortUpdates(Dictionary> activeSortDefinitions, HashSet removedSortDefinitions) - { - SortChangedEvent?.Invoke(activeSortDefinitions, removedSortDefinitions); - await InvokeServerLoadFunc(); - StateHasChanged(); - } - - /// - /// Set the currently selected item in the data grid. - /// - /// - /// - public async Task SetSelectedItemAsync(T item) - { - if (MultiSelection) - { - if (Selection.Contains(item)) - { - Selection.Remove(item); - } - else - { - Selection.Add(item); - } - - SelectedItemsChangedEvent?.Invoke(SelectedItems); - await SelectedItemsChanged.InvokeAsync(SelectedItems); - } - - SelectedItem = item; - } - - /// - /// Set an item to be edited. - /// - /// - /// - [UnconditionalSuppressMessage("Trimming", "IL2026: Using member 'System.Text.Json.JsonSerializer.Deserialize(string, System.Text.Json.JsonSerializerOptions?)' which has 'RequiresUnreferencedCodeAttribute' can break functionality when trimming application code. JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.", Justification = "Suppressing because T is a type supplied by the user and it is unlikely that it is not referenced by their code.")] - public async Task SetEditingItemAsync(T item) - { - if (ReadOnly) return; - - editingSourceItem = item; - EditingCancelledEvent?.Invoke(); - _previousEditingItem = _editingItem; - _editingItem = JsonSerializer.Deserialize(JsonSerializer.Serialize(item)); - StartedEditingItemEvent?.Invoke(); - await StartedEditingItem.InvokeAsync(_editingItem); - isEditFormOpen = true; - } - - /// - /// Cancel editing an item. - /// - public async Task CancelEditingItemAsync() - { - EditingCancelledEvent?.Invoke(); - await CancelledEditingItem.InvokeAsync(_editingItem); - ClearEditingItem(); - isEditFormOpen = false; - } - - /// - /// Opens or closes the filter panel. - /// - public void ToggleFiltersMenu() - { - _filtersMenuVisible = !_filtersMenuVisible; - StateHasChanged(); - } - - /// - /// Call this to reload the server-filtered, -sorted and -paginated items - /// - public Task ReloadServerData() - { - return InvokeServerLoadFunc(); - } - - /// - /// Opens the filter panel. - /// - public void OpenFilters() - { - _filtersMenuVisible = true; - StateHasChanged(); - } - - internal async Task HideAllColumnsAsync() - { - foreach (var column in RenderedColumns) - { - if (column.Hideable ?? false) - await column.HideAsync(); - } - - StateHasChanged(); - } - - internal async Task ShowAllColumnsAsync() - { - foreach (var column in RenderedColumns) - { - if (column.Hideable ?? false) - await column.ShowAsync(); - } - - StateHasChanged(); - } - - public void ShowColumnsPanel() - { - _columnsPanelVisible = true; - StateHasChanged(); - } - - public void HideColumnsPanel() - { - _columnsPanelVisible = false; - StateHasChanged(); - } - - internal void ExternalStateHasChanged() - { - StateHasChanged(); - } - - public void GroupItems() - { - if (GroupedColumn == null) - { - _groups = new List>(); - StateHasChanged(); - return; - } - - var groupings = CurrentPageItems.GroupBy(GroupedColumn.groupBy); - - if (_groupExpansions.Count == 0) - { - if (GroupExpanded) - { - // We need to initially expand all groups. - foreach (var group in groupings) - { - _groupExpansions.Add(group.Key); - } - } - - _groupExpansions.Add("__initial__"); - } - - // construct the groups - _groups = groupings.Select(x => new GroupDefinition(x, - _groupExpansions.Contains(x.Key))).ToList(); - - StateHasChanged(); - } - - internal void ChangedGrouping(Column column) - { - foreach (var c in RenderedColumns) - { - if (c.Field != column.Field) - c.RemoveGrouping(); - } - - GroupItems(); - } - - internal void ToggleGroupExpansion(GroupDefinition g) - { - if (_groupExpansions.Contains(g.Grouping.Key)) - { - _groupExpansions.Remove(g.Grouping.Key); - } - else - { - _groupExpansions.Add(g.Grouping.Key); - } - - GroupItems(); - } - - public void ExpandAllGroups() - { - foreach (var group in _groups) - { - group.IsExpanded = true; - _groupExpansions.Add(group.Grouping.Key); - } - } - - public void CollapseAllGroups() - { - foreach (var group in _groups) - { - group.IsExpanded = false; - } - } - - #endregion - - internal async Task ToggleHierarchyVisibilityAsync(T item) - { - if (_openHierarchies.Contains(item)) - { - _openHierarchies.Remove(item); - } - else - { - _openHierarchies.Add(item); - } - - await InvokeAsync(StateHasChanged); - } - - #region Resize feature - - [Inject] private IEventListener EventListener { get; set; } - internal bool IsResizing { get; set; } - - private ElementReference _gridElement; - private DataGridColumnResizeService _resizeService; - - internal DataGridColumnResizeService ResizeService - { - get - { - if (null == _resizeService) - { - _resizeService = new DataGridColumnResizeService(this, EventListener); - } - - return _resizeService; - } - } - - internal async Task StartResizeColumn(HeaderCell headerCell, double clientX) - => await ResizeService.StartResizeColumn(headerCell, clientX, RenderedColumns, ColumnResizeMode); - - internal async Task GetActualHeight() - { - var gridRect = await _gridElement.MudGetBoundingClientRectAsync(); - var gridHeight = gridRect.Height; - return gridHeight; - } - - #endregion -} diff --git a/src/Connected.Components/Components/DataGrid/DataGridColumnResizeService.cs b/src/Connected.Components/Components/DataGrid/DataGridColumnResizeService.cs deleted file mode 100644 index e1f598c..0000000 --- a/src/Connected.Components/Components/DataGrid/DataGridColumnResizeService.cs +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -internal sealed class DataGridColumnResizeService -{ - private const string EventMouseMove = "mousemove"; - private const string EventMouseUp = "mouseup"; - - private readonly DataGrid _dataGrid; - private readonly IEventListener _eventListener; - private ResizeMode _resizeMode; - - private IList> _columns; - private double _currentX; - private double _startWidth; - private double _nextStartWidth; - private Column _startColumn; - private Column _nextColumn; - private Guid _mouseMoveSubscriptionId; - private Guid _mouseUpSubscriptionId; - - public DataGridColumnResizeService(DataGrid dataGrid, IEventListener eventListener) - { - _dataGrid = dataGrid; - _eventListener = eventListener; - } - - internal async Task StartResizeColumn(HeaderCell headerCell, double clientX, IList> columns, ResizeMode columnResizeMode) - { - if ((headerCell?.Column?.Resizable ?? false) || columnResizeMode == ResizeMode.None || _mouseMoveSubscriptionId != default || _mouseUpSubscriptionId != default) - return false; - - _columns = columns; - _resizeMode = columnResizeMode; - _currentX = clientX; - - _startWidth = await headerCell.GetCurrentCellWidth(); - _startColumn = headerCell.Column; - - if (_resizeMode == ResizeMode.Column) - { - // In case resize mode is column, we have to find any column right of the current one that can also be resized and is not hidden. - var nextResizableColumn = _columns.Skip(_columns.IndexOf(headerCell.Column) + 1).FirstOrDefault(c => c.Resizable ?? true && !c.Hidden); - if (null == nextResizableColumn) - return false; - - _nextStartWidth = await nextResizableColumn.HeaderCell.GetCurrentCellWidth(); - _nextColumn = nextResizableColumn; - } - - _mouseMoveSubscriptionId = await _eventListener.SubscribeGlobal(EventMouseMove, 0, OnApplicationMouseMove); - _mouseUpSubscriptionId = await _eventListener.SubscribeGlobal(EventMouseUp, 0, OnApplicationMouseUp); - - _dataGrid.IsResizing = true; - _dataGrid.ExternalStateHasChanged(); - return true; - } - - private async Task OnApplicationMouseMove(object eventArgs) - { - await ResizeColumn(eventArgs, false); - } - - private async Task OnApplicationMouseUp(object eventArgs) - { - var requiresUpdate = _mouseMoveSubscriptionId != default || _mouseUpSubscriptionId != default; - - _dataGrid.IsResizing = false; - _dataGrid.ExternalStateHasChanged(); - await UnsubscribeApplicationEvents(); - - if (requiresUpdate) - { - await ResizeColumn(eventArgs, true); - } - } - - private async Task UnsubscribeApplicationEvents() - { - if (_mouseMoveSubscriptionId != default) - { - await _eventListener.Unsubscribe(_mouseMoveSubscriptionId); - _mouseMoveSubscriptionId = default; - } - - if (_mouseUpSubscriptionId != default) - { - await _eventListener.Unsubscribe(_mouseUpSubscriptionId); - _mouseUpSubscriptionId = default; - } - } - - private async Task ResizeColumn(object eventArgs, bool finish) - { - if (eventArgs is MouseEventArgs mouseEventArgs) - { - // Need to update height, because resizing of columns can lead to height changes in grid (due to line-breaks) - var gridHeight = await _dataGrid.GetActualHeight(); - - var deltaX = mouseEventArgs.ClientX - _currentX; - var targetWidth = _startWidth + deltaX; - - // Easy case: ResizeMode is container, we simply update the width of the resized column - if (_resizeMode == ResizeMode.Container) - { - await _startColumn.HeaderCell.UpdateColumnWidth(targetWidth, gridHeight, finish); - return; - } - - // In case of column resize mode, we have to find another column that can be resized to - // enlarge/shrink this other column by the same amount, the current column shall be shrinked/enlarged. - var nextTargetWidth = _nextStartWidth - deltaX; - - // In case we shrink the current column, make sure to not shrink further after min width has been reached: - if (deltaX < 0) - await ResizeColumns(_startColumn, _nextColumn, targetWidth, nextTargetWidth, gridHeight, finish); - // In case we enlarge, we first shrink the following column and ensure it is not shrinked beyond min width: - else - await ResizeColumns(_nextColumn, _startColumn, nextTargetWidth, targetWidth, gridHeight, finish); - } - } - - private static async Task ResizeColumns(Column columnToShrink, Column columnToEnlarge, - double shrinkedWidth, double enlargedWidth, double gridHeight, bool finish) - { - var actualWidth = await columnToShrink.HeaderCell.UpdateColumnWidth(shrinkedWidth, gridHeight, finish); - // Use actualWidth to see if the column could be made smaller or if it reached its min size. - if (actualWidth >= shrinkedWidth) - enlargedWidth -= (actualWidth - shrinkedWidth); - - await columnToEnlarge.HeaderCell.UpdateColumnWidth(enlargedWidth, gridHeight, finish); - } -} diff --git a/src/Connected.Components/Components/DataGrid/DataGridEditMode.cs b/src/Connected.Components/Components/DataGrid/DataGridEditMode.cs deleted file mode 100644 index 913f493..0000000 --- a/src/Connected.Components/Components/DataGrid/DataGridEditMode.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected.Components; - -public enum DataGridEditMode -{ - Cell, - Form -} diff --git a/src/Connected.Components/Components/DataGrid/DataGridEditTrigger.cs b/src/Connected.Components/Components/DataGrid/DataGridEditTrigger.cs deleted file mode 100644 index e2b6f0c..0000000 --- a/src/Connected.Components/Components/DataGrid/DataGridEditTrigger.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected.Components; - -public enum DataGridEditTrigger -{ - OnRowClick, - Manual -} diff --git a/src/Connected.Components/Components/DataGrid/DataGridFilterCaseSensitivity.cs b/src/Connected.Components/Components/DataGrid/DataGridFilterCaseSensitivity.cs deleted file mode 100644 index c5a0169..0000000 --- a/src/Connected.Components/Components/DataGrid/DataGridFilterCaseSensitivity.cs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected.Components; -public enum DataGridFilterCaseSensitivity -{ - Default, - - CaseInsensitive -} diff --git a/src/Connected.Components/Components/DataGrid/DataGridFilterMode.cs b/src/Connected.Components/Components/DataGrid/DataGridFilterMode.cs deleted file mode 100644 index 8f60f38..0000000 --- a/src/Connected.Components/Components/DataGrid/DataGridFilterMode.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected.Components; - - public enum DataGridFilterMode - { - Simple, - ColumnFilterMenu, - ColumnFilterRow, - } diff --git a/src/Connected.Components/Components/DataGrid/DataGridPager.razor b/src/Connected.Components/Components/DataGrid/DataGridPager.razor deleted file mode 100644 index 572e5bc..0000000 --- a/src/Connected.Components/Components/DataGrid/DataGridPager.razor +++ /dev/null @@ -1,29 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent -@typeparam T - - -
    - @if (!DisableRowsPerPage) - { - - @RowsPerPageString - - - } - - @Info - -
    - - - - -
    -
    - diff --git a/src/Connected.Components/Components/DataGrid/DataGridPager.razor.cs b/src/Connected.Components/Components/DataGrid/DataGridPager.razor.cs deleted file mode 100644 index 8623bb3..0000000 --- a/src/Connected.Components/Components/DataGrid/DataGridPager.razor.cs +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class DataGridPager : UIComponent, IDisposable -{ - [CascadingParameter] public DataGrid DataGrid { get; set; } - - /// - /// Set true to hide the part of the pager which allows to change the page size. - /// - [Parameter] public bool DisableRowsPerPage { get; set; } - - /// - /// Set true to disable user interaction with the backward/forward buttons - /// and the part of the pager which allows to change the page size. - /// - [Parameter] public bool Disabled { get; set; } - - /// - /// Define a list of available page size options for the user to choose from - /// - [Parameter] public int[] PageSizeOptions { get; set; } = new int[] { 10, 25, 50, 100 }; - - /// - /// Format string for the display of the current page, which you can localize to your language. Available variables are: - /// {first_item}, {last_item} and {all_items} which will replaced with the indices of the page's first and last item, as well as the total number of items. - /// Default: "{first_item}-{last_item} of {all_items}" which is transformed into "0-25 of 77". - /// - [Parameter] public string InfoFormat { get; set; } = "{first_item}-{last_item} of {all_items}"; - - /// - /// The localizable "Rows per page:" text. - /// - [Parameter] public string RowsPerPageString { get; set; } = "Rows per page:"; - - private string Info => DataGrid == null ? "DataGrid==null" : InfoFormat - .Replace("{first_item}", $"{DataGrid?.CurrentPage * DataGrid.RowsPerPage + 1}") - .Replace("{last_item}", $"{Math.Min((DataGrid.CurrentPage + 1) * DataGrid.RowsPerPage, DataGrid.GetFilteredItemsCount())}") - .Replace("{all_items}", $"{DataGrid.GetFilteredItemsCount()}"); - - private bool BackButtonsDisabled => Disabled || (DataGrid == null ? false : DataGrid.CurrentPage == 0); - - private bool ForwardButtonsDisabled => Disabled || (DataGrid == null ? false : (DataGrid.CurrentPage + 1) * DataGrid.RowsPerPage >= DataGrid.GetFilteredItemsCount()); - - protected string Classname => - new CssBuilder("table-pagination-toolbar") - .AddClass(AdditionalClassList) - .Build(); - - private async Task SetRowsPerPageAsync(string size) - { - await DataGrid?.SetRowsPerPageAsync(int.Parse(size)); - } - - protected override async Task OnInitializedAsync() - { - if (DataGrid != null) - { - DataGrid.HasPager = true; - DataGrid.PagerStateHasChangedEvent += StateHasChanged; - var size = DataGrid._rowsPerPage ?? PageSizeOptions.First(); - await DataGrid.SetRowsPerPageAsync(size); - } - } - - public void Dispose() - { - if (DataGrid != null) - { - DataGrid.PagerStateHasChangedEvent -= StateHasChanged; - } - } -} diff --git a/src/Connected.Components/Components/DataGrid/DataGridRowClickEventArgs.cs b/src/Connected.Components/Components/DataGrid/DataGridRowClickEventArgs.cs deleted file mode 100644 index dd5a581..0000000 --- a/src/Connected.Components/Components/DataGrid/DataGridRowClickEventArgs.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - - public class DataGridRowClickEventArgs : EventArgs - { - public MouseEventArgs MouseEventArgs { get; set; } - public T Item { get; set; } - public int RowIndex { get; set; } - - } diff --git a/src/Connected.Components/Components/DataGrid/DataGridRowValidator.cs b/src/Connected.Components/Components/DataGrid/DataGridRowValidator.cs deleted file mode 100644 index 0aa8a54..0000000 --- a/src/Connected.Components/Components/DataGrid/DataGridRowValidator.cs +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Diagnostics.CodeAnalysis; - -namespace Connected.Components; - -public class DataGridRowValidator : IForm -{ - public bool IsValid - { - get - { - Validate(); - return Errors.Length <= 0; - } - } - - public string[] Errors - { - get => _errors.ToArray(); - } - -#nullable enable - [ExcludeFromCodeCoverage] - public object? Model { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); } -#nullable disable - - protected HashSet _errors = new HashSet(); - - - void IForm.FieldChanged(IFormComponent formControl, object newValue) - { - //implement in future for DataGrid - } - - void IForm.Add(IFormComponent formControl) - { - _formControls.Add(formControl); - } - - void IForm.Remove(IFormComponent formControl) - { - _formControls.Remove(formControl); - } - - void IForm.Update(IFormComponent formControl) - { - //Validate(formControl); - } - - protected HashSet _formControls = new HashSet(); - - [ExcludeFromCodeCoverage] - public void Validate() - { - _errors.Clear(); - foreach (var formControl in _formControls.ToArray()) - { - formControl.Validate(); - foreach (var err in formControl.ValidationErrors) - { - _errors.Add(err); - } - } - } - -} diff --git a/src/Connected.Components/Components/DataGrid/Filter.cs b/src/Connected.Components/Components/DataGrid/Filter.cs deleted file mode 100644 index be0530a..0000000 --- a/src/Connected.Components/Components/DataGrid/Filter.cs +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected.Components; - -internal class Filter -{ - private readonly DataGrid _dataGrid; - private readonly FilterDefinition _filterDefinition; - private readonly Column _column; - - internal string _valueString; - internal double? _valueNumber; - internal Enum _valueEnum = null; - internal bool? _valueBool; - internal DateTime? _valueDate; - internal TimeSpan? _valueTime; - - internal Type dataType - { - get - { - if (_column != null) - return _column.dataType; - - if (_filterDefinition.FieldType != null) - return _filterDefinition.FieldType; - - if (_filterDefinition.Field == null) - return typeof(object); - - if (typeof(T) == typeof(IDictionary) && _filterDefinition.FieldType == null) - throw new ArgumentNullException(nameof(_filterDefinition.FieldType)); - - var t = typeof(T).GetProperty(_filterDefinition.Field).PropertyType; - return Nullable.GetUnderlyingType(t) ?? t; - } - } - internal bool isNumber - { - get - { - return FilterOperator.IsNumber(dataType); - } - } - internal bool isEnum - { - get - { - return FilterOperator.IsEnum(dataType); - } - } - - internal Column filterColumn => - _column != null - ? _column - : _dataGrid.RenderedColumns?.FirstOrDefault(c => c.Field == _filterDefinition.Field); - - public Filter(DataGrid dataGrid, FilterDefinition filterDefinition, Column column) - { - _dataGrid = dataGrid; - _filterDefinition = filterDefinition; - _column = column; - - if (dataType == typeof(string)) - _valueString = _filterDefinition.Value == null ? null : _filterDefinition.Value.ToString(); - else if (isNumber) - _valueNumber = _filterDefinition.Value == null ? null : Convert.ToDouble(_filterDefinition.Value); - else if (isEnum) - _valueEnum = _filterDefinition.Value == null ? null : (Enum)_filterDefinition.Value; - else if (dataType == typeof(bool)) - _valueBool = _filterDefinition.Value == null ? null : Convert.ToBoolean(_filterDefinition.Value); - else if (dataType == typeof(DateTime) || dataType == typeof(DateTime?)) - { - var dateTime = Convert.ToDateTime(_filterDefinition.Value); - _valueDate = _filterDefinition.Value == null ? null : dateTime; - _valueTime = _filterDefinition.Value == null ? null : dateTime.TimeOfDay; - } - } - - internal void RemoveFilter() - { - _dataGrid.RemoveFilter(_filterDefinition.Id); - } - - internal void FieldChanged(string field) - { - _filterDefinition.Field = field; - var operators = FilterOperator.GetOperatorByDataType(dataType); - _filterDefinition.Operator = operators.FirstOrDefault(); - _filterDefinition.Value = null; - } - - internal void StringValueChanged(string value) - { - _valueString = value; - _filterDefinition.Value = _valueString; - _dataGrid.GroupItems(); - } - - internal void NumberValueChanged(double? value) - { - _valueNumber = value; - _filterDefinition.Value = _valueNumber; - _dataGrid.GroupItems(); - } - - internal void EnumValueChanged(Enum value) - { - _valueEnum = value; - _filterDefinition.Value = _valueEnum; - _dataGrid.GroupItems(); - } - - internal void BoolValueChanged(bool? value) - { - _valueBool = value; - _filterDefinition.Value = _valueBool; - _dataGrid.GroupItems(); - } - - internal void DateValueChanged(DateTime? value) - { - _valueDate = value; - - if (value != null) - { - var date = value.Value.Date; - - // get the time component and add it to the date. - if (_valueTime != null) - { - date.Add(_valueTime.Value); - } - - _filterDefinition.Value = date; - } - else - _filterDefinition.Value = value; - - _dataGrid.GroupItems(); - } - - internal void TimeValueChanged(TimeSpan? value) - { - _valueTime = value; - - if (_valueDate != null) - { - var date = _valueDate.Value.Date; - - - // get the time component and add it to the date. - if (_valueTime != null) - { - date = date.Add(_valueTime.Value); - } - - _filterDefinition.Value = date; - } - - _dataGrid.GroupItems(); - } - -} diff --git a/src/Connected.Components/Components/DataGrid/FilterContext.cs b/src/Connected.Components/Components/DataGrid/FilterContext.cs deleted file mode 100644 index a61d1a6..0000000 --- a/src/Connected.Components/Components/DataGrid/FilterContext.cs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected.Components; - -public class FilterContext -{ - internal DataGrid _dataGrid; - internal HeaderCell _headerCell; - public IEnumerable Items - { - get - { - return _dataGrid.Items; - } - } - public List> FilterDefinitions - { - get - { - return _dataGrid.FilterDefinitions; - } - } - internal FilterDefinition FilterDefinition { get; set; } - public FilterActions Actions { get; internal set; } - - public FilterContext(DataGrid dataGrid) - { - _dataGrid = dataGrid; - Actions = new FilterContext.FilterActions - { - ApplyFilter = x => _headerCell.ApplyFilter(x), - ApplyFilters = x => _headerCell.ApplyFilters(x), - ClearFilter = x => _headerCell.ClearFilter(x), - ClearFilters = x => _headerCell.ClearFilters(x), - }; - } - - public class FilterActions - { - public Action> ApplyFilter { get; internal set; } - public Action>> ApplyFilters { get; internal set; } - public Action> ClearFilter { get; internal set; } - public Action>> ClearFilters { get; internal set; } - } -} diff --git a/src/Connected.Components/Components/DataGrid/FilterDefinition.cs b/src/Connected.Components/Components/DataGrid/FilterDefinition.cs deleted file mode 100644 index 1e23d03..0000000 --- a/src/Connected.Components/Components/DataGrid/FilterDefinition.cs +++ /dev/null @@ -1,781 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Diagnostics.CodeAnalysis; -using System.Linq.Expressions; -using System.Text.Json; -using Connected.Utilities; - -namespace Connected.Components; - -[RequiresUnreferencedCode(CodeMessage.SerializationUnreferencedCodeMessage)] -public class FilterDefinition -{ - internal DataGrid DataGrid { get; set; } - - public Guid Id { get; set; } = Guid.NewGuid(); - public string Field { get; set; } - public string Title { get; set; } - public Type FieldType { get; set; } - public string Operator { get; set; } - public object Value { get; set; } - public Func FilterFunction { get; set; } - - private Type dataType - { - get - { - if (FieldType != null) - return FieldType; - - if (Field == null) - return typeof(object); - - if (typeof(T) == typeof(IDictionary) && FieldType == null) - throw new ArgumentNullException(nameof(FieldType)); - - return typeof(T).GetProperty(Field).PropertyType; - } - } - - private bool isNumber - { - get - { - return FilterOperator.IsNumber(dataType); - } - } - - private bool isEnum - { - get - { - return FilterOperator.IsEnum(dataType); - } - } - - private bool isDateTime - { - get - { - return FilterOperator.IsDateTime(dataType); - } - } - - private bool isBoolean - { - get - { - return FilterOperator.IsBoolean(dataType); - } - } - - private bool isGuid - { - get - { - return FilterOperator.IsGuid(dataType); - } - } - - public Func GenerateFilterFunction() - { - if (FilterFunction != null) - return FilterFunction; - - // Handle case where we have an IDictionary. - if (typeof(T) == typeof(IDictionary)) - { - if (dataType == typeof(string)) - { - return GenerateFilterForStringTypeInIDictionary(); - } - else if (isNumber) - { - return GenerateFilterForNumericTypesInIDictionary(); - } - else if (isEnum) - { - return GenerateFilterForEnumTypesInIDictionary(); - } - else if (isBoolean) - { - return GenerateFilterForBooleanTypeInIDictionary(); - } - else if (isDateTime) - { - return GenerateFilterForDateTimeTypeInIDictionary(); - } - else if (isGuid) - { - return GenerateFilterForGuidTypeInIDictionary(); - } - - return x => true; - } - else - { - var expression = GenerateFilterExpression(); - - return expression.Compile(); - } - } - - public Expression> GenerateFilterExpression() - { - var parameter = Expression.Parameter(typeof(T), "x"); - Expression expression; - - if (dataType == typeof(string)) - { - expression = GenerateFilterExpressionForStringType(parameter); - } - else if (isNumber) - { - expression = GenerateFilterExpressionForNumericTypes(parameter); - } - else if (isEnum) - { - expression = GenerateFilterExpressionForEnumTypes(parameter); - } - else if (isBoolean) - { - expression = GenerateFilterExpressionForBooleanTypes(parameter); - } - else if (isDateTime) - { - expression = GenerateFilterExpressionForDateTimeTypes(parameter); - } - else if (isGuid) - { - expression = GenerateFilterExpressionForGuidTypes(parameter); - } - else - { - expression = Expression.Constant(true, typeof(bool)); - } - - return Expression.Lambda>(expression, parameter); - } - - private Expression GenerateFilterExpressionForDateTimeTypes(ParameterExpression parameter) - { - var field = Expression.Convert(Expression.Property(parameter, typeof(T).GetProperty(Field)), typeof(DateTime?)); - DateTime? valueDateTime = Value == null ? null : (DateTime)Value; - var isnotnull = Expression.NotEqual(field, Expression.Constant(null)); - var isnull = Expression.Equal(field, Expression.Constant(null)); - var notNullDateTime = Expression.Convert(field, typeof(DateTime)); - var valueDateTimeConstant = Expression.Constant(valueDateTime); - - return Operator switch - { - FilterOperator.DateTime.Is when null != Value => - Expression.AndAlso(isnotnull, - Expression.Equal(notNullDateTime, valueDateTimeConstant)), - - FilterOperator.DateTime.IsNot when null != Value => - Expression.OrElse(isnull, - Expression.NotEqual(notNullDateTime, valueDateTimeConstant)), - - FilterOperator.DateTime.After when null != Value => - Expression.AndAlso(isnotnull, - Expression.GreaterThan(notNullDateTime, valueDateTimeConstant)), - - FilterOperator.DateTime.OnOrAfter when null != Value => - Expression.AndAlso(isnotnull, - Expression.GreaterThanOrEqual(notNullDateTime, valueDateTimeConstant)), - - FilterOperator.DateTime.Before when null != Value => - Expression.AndAlso(isnotnull, - Expression.LessThan(notNullDateTime, valueDateTimeConstant)), - - FilterOperator.DateTime.OnOrBefore when null != Value => - Expression.AndAlso(isnotnull, - Expression.LessThanOrEqual(notNullDateTime, valueDateTimeConstant)), - - FilterOperator.DateTime.Empty => isnull, - FilterOperator.DateTime.NotEmpty => isnotnull, - - _ => Expression.Constant(true, typeof(bool)) - }; - } - - private Expression GenerateFilterExpressionForBooleanTypes(ParameterExpression parameter) - { - var field = Expression.Convert(Expression.Property(parameter, typeof(T).GetProperty(Field)), typeof(bool?)); - bool? valueBool = Value == null ? null : Convert.ToBoolean(Value); - var isnotnull = Expression.NotEqual(field, Expression.Constant(null)); - var notNullBool = Expression.Convert(field, typeof(bool)); - - return Operator switch - { - FilterOperator.Enum.Is when Value != null => Expression.AndAlso(isnotnull, - Expression.Equal(notNullBool, Expression.Constant(valueBool))), - - _ => Expression.Constant(true, typeof(bool)) - }; - } - - private Expression GenerateFilterExpressionForGuidTypes(ParameterExpression parameter) - { - var field = Expression.Convert(Expression.Property(parameter, typeof(T).GetProperty(Field)), typeof(Guid?)); - Guid? valueGuid = Value == null ? null : ParseGuid((String)Value); - var isnotnull = Expression.IsTrue(Expression.Property(field, typeof(Guid?), "HasValue")); - var isnull = Expression.IsFalse(Expression.Property(field, typeof(Guid?), "HasValue")); - var notNullGuid = Expression.Convert(field, typeof(Guid)); - - return Operator switch - { - FilterOperator.Guid.Equal when valueGuid != null => - Expression.AndAlso(isnotnull, - Expression.Equal(notNullGuid, Expression.Constant(valueGuid))), - - FilterOperator.Guid.NotEqual when valueGuid != null => - Expression.OrElse( - isnull, - Expression.NotEqual(notNullGuid, Expression.Constant(valueGuid))), - - // filtered value is not a valid GUID - _ when valueGuid == null && Value != null => - Expression.Constant(false), - - _ => Expression.Constant(true, typeof(bool)) - }; - } - - private Expression GenerateFilterExpressionForEnumTypes(ParameterExpression parameter) - { - var field = Expression.Convert(Expression.Property(parameter, typeof(T).GetProperty(Field)), dataType); - var valueEnum = Value == null ? null : (Enum)Value; - var _null = Expression.Convert(Expression.Constant(null), dataType); - var isnull = Expression.Equal(field, _null); - var isnotnull = Expression.NotEqual(field, _null); - var valueEnumConstant = Expression.Convert(Expression.Constant(valueEnum), dataType); - - return Operator switch - { - FilterOperator.Enum.Is when Value != null => - IsNullableEnum(dataType) ? Expression.AndAlso(isnotnull, - Expression.Equal(field, valueEnumConstant)) - : Expression.Equal(field, valueEnumConstant), - - FilterOperator.Enum.IsNot when Value != null => - IsNullableEnum(dataType) ? Expression.OrElse(isnull, - Expression.NotEqual(field, valueEnumConstant)) - : Expression.NotEqual(field, valueEnumConstant), - - _ => Expression.Constant(true, typeof(bool)) - }; - } - - private Expression GenerateFilterExpressionForNumericTypes(ParameterExpression parameter) - { - var field = Expression.Convert(Expression.Property(parameter, typeof(T).GetProperty(Field)), typeof(double?)); - double? valueNumber = Value == null ? null : Convert.ToDouble(Value); - var isnotnull = Expression.NotEqual(field, Expression.Constant(null)); - var isnull = Expression.Equal(field, Expression.Constant(null)); - var notNullNumber = Expression.Convert(field, typeof(double)); - var valueNumberConstant = Expression.Constant(valueNumber); - - return Operator switch - { - FilterOperator.Number.Equal when Value != null => - Expression.AndAlso(isnotnull, - Expression.Equal(notNullNumber, valueNumberConstant)), - - FilterOperator.Number.NotEqual when Value != null => - Expression.OrElse(isnull, - Expression.NotEqual(notNullNumber, valueNumberConstant)), - - FilterOperator.Number.GreaterThan when Value != null => - Expression.AndAlso(isnotnull, - Expression.GreaterThan(notNullNumber, valueNumberConstant)), - - FilterOperator.Number.GreaterThanOrEqual when Value != null => - Expression.AndAlso(isnotnull, - Expression.GreaterThanOrEqual(notNullNumber, valueNumberConstant)), - - FilterOperator.Number.LessThan when Value != null => - Expression.AndAlso(isnotnull, - Expression.LessThan(notNullNumber, valueNumberConstant)), - - FilterOperator.Number.LessThanOrEqual when Value != null => - Expression.AndAlso(isnotnull, - Expression.LessThanOrEqual(notNullNumber, valueNumberConstant)), - - FilterOperator.Number.Empty => isnull, - FilterOperator.Number.NotEmpty => isnotnull, - - _ => Expression.Constant(true, typeof(bool)) - }; - } - - private Expression GenerateFilterExpressionForStringType(ParameterExpression parameter) - { - var field = Expression.Property(parameter, typeof(T).GetProperty(Field)); - var valueString = Value?.ToString(); - var trim = Expression.Call(field, dataType.GetMethod("Trim", Type.EmptyTypes)); - var isnull = Expression.Equal(field, Expression.Constant(null)); - var isnotnull = Expression.NotEqual(field, Expression.Constant(null)); - - return Operator switch - { - FilterOperator.String.Contains when Value != null && DataGrid.FilterCaseSensitivity == DataGridFilterCaseSensitivity.Default => - Expression.AndAlso(isnotnull, - Expression.Call(field, dataType.GetMethod("Contains", new[] { dataType }), Expression.Constant(valueString))), - - FilterOperator.String.Contains when Value != null && DataGrid.FilterCaseSensitivity == DataGridFilterCaseSensitivity.CaseInsensitive => - Expression.AndAlso(isnotnull, - Expression.Call(field, dataType.GetMethod("Contains", new[] { dataType, typeof(StringComparison) }), new[] { Expression.Constant(valueString), Expression.Constant(StringComparison.OrdinalIgnoreCase) })), - - FilterOperator.String.NotContains when Value != null && DataGrid.FilterCaseSensitivity == DataGridFilterCaseSensitivity.Default => - Expression.AndAlso(isnotnull, - Expression.Not(Expression.Call(field, dataType.GetMethod("Contains", new[] { dataType }), Expression.Constant(valueString)))), - - FilterOperator.String.NotContains when Value != null && DataGrid.FilterCaseSensitivity == DataGridFilterCaseSensitivity.CaseInsensitive => - Expression.AndAlso(isnotnull, - Expression.Not(Expression.Call(field, dataType.GetMethod("Contains", new[] { dataType, typeof(StringComparison) }), new[] { Expression.Constant(valueString), Expression.Constant(StringComparison.OrdinalIgnoreCase) }))), - - FilterOperator.String.Equal when Value != null && DataGrid.FilterCaseSensitivity == DataGridFilterCaseSensitivity.Default => - Expression.AndAlso(isnotnull, - Expression.Equal(field, Expression.Constant(valueString))), - - FilterOperator.String.Equal when Value != null && DataGrid.FilterCaseSensitivity == DataGridFilterCaseSensitivity.CaseInsensitive => - Expression.AndAlso(isnotnull, - Expression.Call(field, dataType.GetMethod("Equals", new[] { dataType, typeof(StringComparison) }), new[] { Expression.Constant(valueString), Expression.Constant(StringComparison.OrdinalIgnoreCase) })), - - FilterOperator.String.NotEqual when Value != null && DataGrid.FilterCaseSensitivity == DataGridFilterCaseSensitivity.Default => - Expression.AndAlso(isnotnull, - Expression.Not(Expression.Equal(field, Expression.Constant(valueString)))), - - FilterOperator.String.NotEqual when Value != null && DataGrid.FilterCaseSensitivity == DataGridFilterCaseSensitivity.CaseInsensitive => - Expression.AndAlso(isnotnull, - Expression.Not(Expression.Call(field, dataType.GetMethod("Equals", new[] { dataType, typeof(StringComparison) }), new[] { Expression.Constant(valueString), Expression.Constant(StringComparison.OrdinalIgnoreCase) }))), - - FilterOperator.String.StartsWith when Value != null && DataGrid.FilterCaseSensitivity == DataGridFilterCaseSensitivity.Default => - Expression.AndAlso(isnotnull, - Expression.Call(field, dataType.GetMethod("StartsWith", new[] { dataType }), Expression.Constant(valueString))), - - FilterOperator.String.StartsWith when Value != null && DataGrid.FilterCaseSensitivity == DataGridFilterCaseSensitivity.CaseInsensitive => - Expression.AndAlso(isnotnull, - Expression.Call(field, dataType.GetMethod("StartsWith", new[] { dataType, typeof(StringComparison) }), new[] { Expression.Constant(valueString), Expression.Constant(StringComparison.OrdinalIgnoreCase) })), - - FilterOperator.String.EndsWith when Value != null && DataGrid.FilterCaseSensitivity == DataGridFilterCaseSensitivity.Default => - Expression.AndAlso(isnotnull, - Expression.Call(field, dataType.GetMethod("EndsWith", new[] { dataType }), Expression.Constant(valueString))), - - FilterOperator.String.EndsWith when Value != null && DataGrid.FilterCaseSensitivity == DataGridFilterCaseSensitivity.CaseInsensitive => - Expression.AndAlso(isnotnull, - Expression.Call(field, dataType.GetMethod("EndsWith", new[] { dataType, typeof(StringComparison) }), new[] { Expression.Constant(valueString), Expression.Constant(StringComparison.OrdinalIgnoreCase) })), - - FilterOperator.String.Empty => - Expression.OrElse(isnull, - Expression.Equal(trim, Expression.Constant(string.Empty, dataType))), - - FilterOperator.String.NotEmpty => - Expression.AndAlso(isnotnull, - Expression.NotEqual(trim, Expression.Constant(string.Empty, dataType))), - - _ => Expression.Constant(true, typeof(bool)) - }; - } - - #region IDictionary Filters - - private Func GenerateFilterForStringTypeInIDictionary() - { - var valueString = Value?.ToString(); - - var caseSensitivity = DataGrid.FilterCaseSensitivity == DataGridFilterCaseSensitivity.Default ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase; - - return Operator switch - { - FilterOperator.String.Contains when Value != null => x => - { - string v = GetStringFromObject(((IDictionary)x)[Field]); - - return v != null && v.Contains(valueString, caseSensitivity); - } - , - FilterOperator.String.NotContains when Value != null => x => - { - string v = GetStringFromObject(((IDictionary)x)[Field]); - - return v != null && !v.Contains(valueString, caseSensitivity); - } - , - - FilterOperator.String.Equal when Value != null => x => - { - string v = GetStringFromObject(((IDictionary)x)[Field]); - - return v != null && v.Equals(valueString, caseSensitivity); - } - , - - FilterOperator.String.NotEqual when Value != null => x => - { - string v = GetStringFromObject(((IDictionary)x)[Field]); - - return !valueString.Equals(v, caseSensitivity); - } - , - - FilterOperator.String.StartsWith when Value != null => x => - { - string v = GetStringFromObject(((IDictionary)x)[Field]); - - return v != null && v.StartsWith(valueString, caseSensitivity); - } - , - - FilterOperator.String.EndsWith when Value != null => x => - { - string v = GetStringFromObject(((IDictionary)x)[Field]); - - return v != null && v.EndsWith(valueString, caseSensitivity); - } - , - - FilterOperator.String.Empty => x => - { - string v = GetStringFromObject(((IDictionary)x)[Field]); - - return string.IsNullOrWhiteSpace(v); - } - , - - FilterOperator.String.NotEmpty => x => - { - string v = GetStringFromObject(((IDictionary)x)[Field]); - - return !string.IsNullOrWhiteSpace(v); - } - , - - _ => x => true - }; - } - - private Func GenerateFilterForNumericTypesInIDictionary() - { - double? valueNumber = Value == null ? null : Convert.ToDouble(Value); - - return Operator switch - { - FilterOperator.Number.Equal when Value != null => x => - { - double? v = GetDoubleFromObject(((IDictionary)x)[Field]); - - return v == valueNumber; - } - , - - FilterOperator.Number.NotEqual when Value != null => x => - { - double? v = GetDoubleFromObject(((IDictionary)x)[Field]); - - return v != valueNumber; - } - , - - FilterOperator.Number.GreaterThan when Value != null => x => - { - double? v = GetDoubleFromObject(((IDictionary)x)[Field]); - - return v > valueNumber; - } - , - - FilterOperator.Number.GreaterThanOrEqual when Value != null => x => - { - double? v = GetDoubleFromObject(((IDictionary)x)[Field]); - - return v >= valueNumber; - } - , - - FilterOperator.Number.LessThan when Value != null => x => - { - double? v = GetDoubleFromObject(((IDictionary)x)[Field]); - - return v < valueNumber; - } - , - - FilterOperator.Number.LessThanOrEqual when Value != null => x => - { - double? v = GetDoubleFromObject(((IDictionary)x)[Field]); - - return v <= valueNumber; - } - , - - FilterOperator.Number.Empty => x => - { - double? v = GetDoubleFromObject(((IDictionary)x)[Field]); - - return v == null; - } - , - - FilterOperator.Number.NotEmpty => x => - { - double? v = GetDoubleFromObject(((IDictionary)x)[Field]); - - return v != null; - } - , - - _ => x => true - }; - } - - private Func GenerateFilterForEnumTypesInIDictionary() - { - return Operator switch - { - FilterOperator.Enum.Is when Value != null => x => - { - var v = GetEnumFromObject(((IDictionary)x)[Field]); - - return object.Equals(v, Value); - } - , - - FilterOperator.Enum.IsNot when Value != null => x => - { - var v = GetEnumFromObject(((IDictionary)x)[Field]); - - return !object.Equals(v, Value); - } - , - - _ => x => true - }; - } - - private Func GenerateFilterForBooleanTypeInIDictionary() - { - return Operator switch - { - FilterOperator.Enum.Is when Value != null => x => - { - var v = GetBoolFromObject(((IDictionary)x)[Field]); - - return object.Equals(v, Value); - } - , - - _ => x => true - }; - } - - private Func GenerateFilterForGuidTypeInIDictionary() - { - Guid? valueGuid = Value == null ? null : ParseGuid((string)Value); - return Operator switch - { - FilterOperator.Guid.Equal when Value != null => x => - { - var v = GetGuidFromObject(((IDictionary)x)[Field]); - - return v == valueGuid; - } - , - FilterOperator.Guid.NotEqual when Value != null => x => - { - var v = GetGuidFromObject(((IDictionary)x)[Field]); - - return v != valueGuid; - } - , - - _ => x => true - }; - } - - private Func GenerateFilterForDateTimeTypeInIDictionary() - { - DateTime? valueDateTime = Value == null ? null : (DateTime)Value; - - return Operator switch - { - FilterOperator.DateTime.Is when Value != null => x => - { - var v = GetDateTimeFromObject(((IDictionary)x)[Field]); - - return v == valueDateTime; - } - , - - FilterOperator.DateTime.IsNot when Value != null => x => - { - var v = GetDateTimeFromObject(((IDictionary)x)[Field]); - - return v != valueDateTime; - } - , - - FilterOperator.DateTime.After when Value != null => x => - { - var v = GetDateTimeFromObject(((IDictionary)x)[Field]); - - return v > valueDateTime; - } - , - - FilterOperator.DateTime.OnOrAfter when Value != null => x => - { - var v = GetDateTimeFromObject(((IDictionary)x)[Field]); - - return v >= valueDateTime; - } - , - - FilterOperator.DateTime.Before when Value != null => x => - { - var v = GetDateTimeFromObject(((IDictionary)x)[Field]); - - return v < valueDateTime; - } - , - - FilterOperator.DateTime.OnOrBefore when Value != null => x => - { - var v = GetDateTimeFromObject(((IDictionary)x)[Field]); - - return v <= valueDateTime; - } - , - - FilterOperator.DateTime.Empty => x => - { - var v = GetDateTimeFromObject(((IDictionary)x)[Field]); - - return v == null; - } - , - - FilterOperator.DateTime.NotEmpty => x => - { - var v = GetDateTimeFromObject(((IDictionary)x)[Field]); - - return v != null; - } - , - - _ => x => true - }; - } - - #endregion - - private static bool IsNullableEnum(Type t) - { - Type u = Nullable.GetUnderlyingType(t); - return (u != null) && u.IsEnum; - } - - private string GetStringFromObject(object o) - { - if (o == null) - return null; - else if (o.GetType() == typeof(JsonElement)) - { - return ((JsonElement)o).GetString(); - } - else - { - return (string)o; - } - } - - private double? GetDoubleFromObject(object o) - { - if (o == null) - return null; - - if (o.GetType() == typeof(JsonElement)) - { - return ((JsonElement)o).GetDouble(); - } - else - { - return Convert.ToDouble(o); - } - } - - private Enum GetEnumFromObject(object o) - { - if (o == null) - return null; - - if (o.GetType() == typeof(JsonElement)) - { - return (Enum)Enum.ToObject(FieldType, ((JsonElement)o).GetInt32()); - } - else - { - return (Enum)Enum.ToObject(FieldType, o); - } - } - - private bool? GetBoolFromObject(object o) - { - if (o == null) - return null; - - if (o.GetType() == typeof(JsonElement)) - { - return ((JsonElement)o).GetBoolean(); - } - else - { - return Convert.ToBoolean(o); - } - } - - private DateTime? GetDateTimeFromObject(object o) - { - if (o == null) - return null; - - if (o.GetType() == typeof(JsonElement)) - { - return ((JsonElement)o).GetDateTime(); - } - else - { - return Convert.ToDateTime(o); - } - } - - private Guid? GetGuidFromObject(object o) - { - if (o == null) - return null; - - if (o.GetType() == typeof(JsonElement)) - { - return ParseGuid(((JsonElement)o).GetString()); - } - else - { - return ParseGuid(Convert.ToString(o)); - } - } - - private Guid? ParseGuid(string value) - { - if (value != null && Guid.TryParse(value, out Guid guid)) - { - return guid; - } - else - { - return null; - } - } -} diff --git a/src/Connected.Components/Components/DataGrid/FilterHeaderCell.razor b/src/Connected.Components/Components/DataGrid/FilterHeaderCell.razor deleted file mode 100644 index a015d28..0000000 --- a/src/Connected.Components/Components/DataGrid/FilterHeaderCell.razor +++ /dev/null @@ -1,65 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent -@typeparam T - - - @if (null != Column && Column.filterable) - { - @if (Column.FilterTemplate != null) - { - @Column.FilterTemplate(Column.filterContext) - } - else - { - - @if (dataType == typeof(string) && !(_operator ?? "").EndsWith("empty")) - { - - } - else if (isNumber && !(_operator ?? "").EndsWith("empty")) - { - - } - else if (isEnum) - { - - } - else if (dataType == typeof(bool)) - { - - } - else if (dataType == typeof(DateTime) && !(_operator ?? "").EndsWith("empty")) - { - - - - - - - - - } - - @foreach (var o in operators) - { - if (!string.IsNullOrWhiteSpace(o)) - { - @o - } - } - - - - } - } - diff --git a/src/Connected.Components/Components/DataGrid/FilterHeaderCell.razor.cs b/src/Connected.Components/Components/DataGrid/FilterHeaderCell.razor.cs deleted file mode 100644 index 309b4d9..0000000 --- a/src/Connected.Components/Components/DataGrid/FilterHeaderCell.razor.cs +++ /dev/null @@ -1,216 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class FilterHeaderCell : UIComponent -{ - [CascadingParameter] public DataGrid DataGrid { get; set; } - - [Parameter] public Column Column { get; set; } - [Parameter] public RenderFragment ChildContent { get; set; } - - private string _classname => - new CssBuilder(Column?.HeaderClass) - .AddClass(Column?.headerClassname) - .AddClass(AdditionalClassList) - .AddClass("filter-header-cell") - .Build(); - - private string _style => - new StyleBuilder() - .AddStyle(Column?.HeaderStyle) - .Build(); - - private string _valueString; - private double? _valueNumber; - private Enum _valueEnum = null; - private bool? _valueBool; - private DateTime? _valueDate; - private TimeSpan? _valueTime; - - #region Computed Properties and Functions - - private bool hasFilter - { - get - { - if (DataGrid == null) - return false; - - return DataGrid.FilterDefinitions.Any(x => x.Field == Column.Field && x.Operator != null && x.Value != null); - } - } - - private Type dataType - { - get - { - return Column?.dataType; - } - } - - private string[] operators - { - get - { - return FilterOperator.GetOperatorByDataType(dataType); - } - } - - private string _operator; - - private string chosenOperatorStyle(string o) - { - return o == _operator ? "color:var(--mud-palette-primary-text);background-color:var(--mud-palette-primary)" : ""; - } - - private bool isNumber - { - get - { - return FilterOperator.IsNumber(dataType); - } - } - - private bool isEnum - { - get - { - return FilterOperator.IsEnum(dataType); - } - } - - #endregion - - protected override void OnInitialized() - { - _operator = operators.FirstOrDefault(); - } - - #region Events - - private void ChangeOperator(string o) - { - _operator = o; - Column.filterContext.FilterDefinition.Operator = _operator; - ApplyFilter(Column.filterContext.FilterDefinition); - } - - internal void StringValueChanged(string value) - { - _valueString = value; - Column.filterContext.FilterDefinition.Operator = _operator; - Column.filterContext.FilterDefinition.Value = value; - ApplyFilter(Column.filterContext.FilterDefinition); - } - - internal void NumberValueChanged(double? value) - { - _valueNumber = value; - Column.filterContext.FilterDefinition.Operator = _operator; - Column.filterContext.FilterDefinition.Value = value; - ApplyFilter(Column.filterContext.FilterDefinition); - } - - internal void EnumValueChanged(Enum value) - { - _valueEnum = value; - Column.filterContext.FilterDefinition.Operator = _operator; - Column.filterContext.FilterDefinition.Value = value; - ApplyFilter(Column.filterContext.FilterDefinition); - } - - internal void BoolValueChanged(bool? value) - { - _valueBool = value; - Column.filterContext.FilterDefinition.Operator = _operator; - Column.filterContext.FilterDefinition.Value = value; - ApplyFilter(Column.filterContext.FilterDefinition); - } - - internal void DateValueChanged(DateTime? value) - { - _valueDate = value; - - if (value != null) - { - var date = value.Value.Date; - - // get the time component and add it to the date. - if (_valueTime != null) - { - date.Add(_valueTime.Value); - } - - Column.filterContext.FilterDefinition.Operator = _operator; - Column.filterContext.FilterDefinition.Value = date; - ApplyFilter(Column.filterContext.FilterDefinition); - } - else - { - Column.filterContext.FilterDefinition.Operator = _operator; - Column.filterContext.FilterDefinition.Value = value; - ApplyFilter(Column.filterContext.FilterDefinition); - } - } - - internal void TimeValueChanged(TimeSpan? value) - { - _valueTime = value; - - if (_valueDate != null) - { - var date = _valueDate.Value.Date; - - // get the time component and add it to the date. - if (_valueTime != null) - { - date = date.Add(_valueTime.Value); - } - - Column.filterContext.FilterDefinition.Operator = _operator; - Column.filterContext.FilterDefinition.Value = date; - ApplyFilter(Column.filterContext.FilterDefinition); - } - } - - internal void ApplyFilter(FilterDefinition filterDefinition) - { - if (!DataGrid.FilterDefinitions.Any(x => x.Id == filterDefinition.Id)) - DataGrid.FilterDefinitions.Add(filterDefinition); - - DataGrid.GroupItems(); - DataGrid.ExternalStateHasChanged(); - } - - private void ClearFilter() - { - ClearFilter(Column.filterContext.FilterDefinition); - - if (dataType == typeof(string)) - _valueString = null; - else if (isNumber) - _valueNumber = null; - else if (isEnum) - _valueEnum = null; - else if (dataType == typeof(bool)) - _valueBool = null; - else if (dataType == typeof(DateTime) || dataType == typeof(DateTime?)) - { - _valueDate = null; - _valueTime = null; - } - } - - internal void ClearFilter(FilterDefinition filterDefinition) - { - DataGrid.RemoveFilter(filterDefinition.Id); - } - - #endregion -} diff --git a/src/Connected.Components/Components/DataGrid/FilterOperator.cs b/src/Connected.Components/Components/DataGrid/FilterOperator.cs deleted file mode 100644 index 9849b3f..0000000 --- a/src/Connected.Components/Components/DataGrid/FilterOperator.cs +++ /dev/null @@ -1,191 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Diagnostics.CodeAnalysis; -using System.Numerics; - -namespace Connected.Components; - -public static class FilterOperator -{ - public static class String - { - public const string Contains = "contains"; - public const string NotContains = "not contains"; - public const string Equal = "equals"; - public const string NotEqual = "not equals"; - public const string StartsWith = "starts with"; - public const string EndsWith = "ends with"; - public const string Empty = "is empty"; - public const string NotEmpty = "is not empty"; - - internal static string[] Values = GetFields(typeof(String)); - } - - public static class Number - { - public const string Equal = "="; - public const string NotEqual = "!="; - public const string GreaterThan = ">"; - public const string GreaterThanOrEqual = ">="; - public const string LessThan = "<"; - public const string LessThanOrEqual = "<="; - public const string Empty = "is empty"; - public const string NotEmpty = "is not empty"; - - internal static string[] Values = GetFields(typeof(Number)); - } - - public static class Enum - { - public const string Is = "is"; - public const string IsNot = "is not"; - - internal static string[] Values = GetFields(typeof(Enum)); - } - - public static class Boolean - { - public const string Is = "is"; - - internal static string[] Values = GetFields(typeof(Boolean)); - } - - public static class DateTime - { - public const string Is = "is"; - public const string IsNot = "is not"; - public const string After = "is after"; - public const string OnOrAfter = "is on or after"; - public const string Before = "is before"; - public const string OnOrBefore = "is on or before"; - public const string Empty = "is empty"; - public const string NotEmpty = "is not empty"; - - internal static string[] Values = GetFields(typeof(DateTime)); - } - - public static class Guid - { - public const string Equal = "equals"; - public const string NotEqual = "not equals"; - - internal static string[] Values = GetFields(typeof(Guid)); - } - - internal static string[] GetOperatorByDataType(Type type) - { - if (type == typeof(string)) - { - return String.Values; - } - if (IsNumber(type)) - { - return Number.Values; - } - if (IsEnum(type)) - { - return Enum.Values; - } - if (type == typeof(bool)) - { - return Boolean.Values; - } - if (type == typeof(System.DateTime)) - { - return DateTime.Values; - } - if (type == typeof(System.Guid)) - { - return Guid.Values; - } - - // default - return new string[] { }; - } - - internal static string[] GetFields([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type) - { - List fields = new List(); - - foreach (var field in type.GetFields().Where(fi => fi.IsLiteral)) - { - fields.Add((string)field.GetValue(null)); - } - - return fields.ToArray(); - } - - internal static readonly HashSet NumericTypes = new HashSet - { - typeof(int), - typeof(double), - typeof(decimal), - typeof(long), - typeof(short), - typeof(sbyte), - typeof(byte), - typeof(ulong), - typeof(ushort), - typeof(uint), - typeof(float), - typeof(BigInteger), - typeof(int?), - typeof(double?), - typeof(decimal?), - typeof(long?), - typeof(short?), - typeof(sbyte?), - typeof(byte?), - typeof(ulong?), - typeof(ushort?), - typeof(uint?), - typeof(float?), - typeof(BigInteger?), - }; - - internal static bool IsNumber([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type) - { - return NumericTypes.Contains(type); - } - - internal static bool IsEnum([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type) - { - if (null == type) - return false; - - if (type.IsEnum) - return true; - - Type u = Nullable.GetUnderlyingType(type); - return (u != null) && u.IsEnum; - } - - internal static bool IsDateTime([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type) - { - if (type == typeof(System.DateTime)) - return true; - - Type u = Nullable.GetUnderlyingType(type); - return (u != null) && u == typeof(System.DateTime); - } - - internal static bool IsBoolean([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type) - { - if (type == typeof(bool)) - return true; - - Type u = Nullable.GetUnderlyingType(type); - return (u != null) && u == typeof(bool); - } - - internal static bool IsGuid(Type type) - { - if (type == typeof(System.Guid)) - return true; - - Type u = Nullable.GetUnderlyingType(type); - return (u != null) && u == typeof(System.Guid); - } -} diff --git a/src/Connected.Components/Components/DataGrid/FooterCell.razor b/src/Connected.Components/Components/DataGrid/FooterCell.razor deleted file mode 100644 index ae9ba4a..0000000 --- a/src/Connected.Components/Components/DataGrid/FooterCell.razor +++ /dev/null @@ -1,17 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent -@typeparam T - -@if (Column is not null) -{ - - @if (Column.AggregateDefinition != null) - { - @Column.AggregateDefinition?.GetValue(Column.Field, items) - } - else if (Column.FooterTemplate != null) - { - @Column.FooterTemplate(Column.footerContext) - } - -} \ No newline at end of file diff --git a/src/Connected.Components/Components/DataGrid/FooterCell.razor.cs b/src/Connected.Components/Components/DataGrid/FooterCell.razor.cs deleted file mode 100644 index 6ac8c9a..0000000 --- a/src/Connected.Components/Components/DataGrid/FooterCell.razor.cs +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class FooterCell : UIComponent -{ - [CascadingParameter] public DataGrid DataGrid { get; set; } - - [Parameter] public Column Column { get; set; } - [Parameter] public RenderFragment ChildContent { get; set; } - [Parameter] public IEnumerable CurrentItems { get; set; } - - private string _classname => - new CssBuilder("footer-cell") - .AddClass(Column?.FooterClass) - .AddClass(Column?.footerClassname) - .AddClass(AdditionalClassList) - .Build(); - private string _style => - new StyleBuilder() - .AddStyle(Column?.FooterStyle) - .AddStyle("font-weight", "600") - .Build(); - - internal IEnumerable items - { - get - { - return CurrentItems ?? DataGrid?.CurrentPageItems; - } - } -} diff --git a/src/Connected.Components/Components/DataGrid/FooterContext.cs b/src/Connected.Components/Components/DataGrid/FooterContext.cs deleted file mode 100644 index f9263e4..0000000 --- a/src/Connected.Components/Components/DataGrid/FooterContext.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected.Components; - -public class FooterContext -{ - internal DataGrid _dataGrid; - public IEnumerable Items - { - get - { - return _dataGrid.Items; - } - } - public FooterActions Actions { get; internal set; } - public bool IsAllSelected - { - get - { - - if (_dataGrid.Selection != null && Items != null) - { - return _dataGrid.Selection.Count == Items.Count(); - } - - return false; - } - } - - public FooterContext(DataGrid dataGrid) - { - _dataGrid = dataGrid; - Actions = new FooterContext.FooterActions - { - SetSelectAll = async (x) => await _dataGrid.SetSelectAllAsync(x), - }; - } - - public class FooterActions - { - public Action SetSelectAll { get; internal set; } - } -} diff --git a/src/Connected.Components/Components/DataGrid/GridState.cs b/src/Connected.Components/Components/DataGrid/GridState.cs deleted file mode 100644 index 3e473a5..0000000 --- a/src/Connected.Components/Components/DataGrid/GridState.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected.Components; - -public class GridState -{ - public int Page { get; set; } - - public int PageSize { get; set; } - - public ICollection> SortDefinitions { get; set; } - - public ICollection> FilterDefinitions { get; set; } -} - -public class GridData -{ - public IEnumerable Items { get; set; } - public int TotalItems { get; set; } -} diff --git a/src/Connected.Components/Components/DataGrid/GroupDefinition.cs b/src/Connected.Components/Components/DataGrid/GroupDefinition.cs deleted file mode 100644 index afaa9dc..0000000 --- a/src/Connected.Components/Components/DataGrid/GroupDefinition.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected.Components; - -public class GroupDefinition -{ - public IGrouping Grouping { get; set; } - public bool IsExpanded { get; set; } - - public GroupDefinition(IGrouping grouping, bool isExpanded) - { - Grouping = grouping; - IsExpanded = isExpanded; - } -} diff --git a/src/Connected.Components/Components/DataGrid/HeaderCell.razor b/src/Connected.Components/Components/DataGrid/HeaderCell.razor deleted file mode 100644 index 1ca96f8..0000000 --- a/src/Connected.Components/Components/DataGrid/HeaderCell.razor +++ /dev/null @@ -1,124 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent -@typeparam T - -@if (IsOnlyHeader) -{ - - @ChildContent - -} -else if (Column != null && !Column.Hidden) -{ - - - @if (sortable) - { - - @if (Column.HeaderTemplate != null) - { - @Column.HeaderTemplate(Column.headerContext) - } - else - { - @computedTitle - } - - } - else - { - @if (Column.HeaderTemplate != null) - { - @Column.HeaderTemplate(Column.headerContext) - } - else - { - @computedTitle - } - } - - @if (sortable) - { - if (_initialDirection == SortDirection.None) - { - - } - else - { - - if(DataGrid.SortMode == SortMode.Multiple) - { - @(Column.SortIndex + 1) - } - } - } - - @if (DataGrid.FilterMode != DataGridFilterMode.ColumnFilterRow) - { - if (hasFilter) - { - - } - else if (showFilterIcon) - { - - } - } - - @if (showColumnOptions) - { - - Unsort - @if (filterable && DataGrid.FilterMode != DataGridFilterMode.ColumnFilterRow) - { - Filter - } - @if (hideable) - { - Hide - } - @if (groupable) - { - if (Column?.grouping ?? false) - { - Ungroup - } - else - { - Group - } - } - - } - - - @if (resizable) - { -
    - } - - @if (filterable && DataGrid.FilterMode == DataGridFilterMode.ColumnFilterMenu) - { - - - @if (Column.FilterTemplate != null) - { - @Column.FilterTemplate(Column.filterContext) - } - else - { - - - @DataGrid.Filter(Column.filterContext.FilterDefinition, Column) - - - - - - - } - - } - -} \ No newline at end of file diff --git a/src/Connected.Components/Components/DataGrid/HeaderCell.razor.cs b/src/Connected.Components/Components/DataGrid/HeaderCell.razor.cs deleted file mode 100644 index 964932e..0000000 --- a/src/Connected.Components/Components/DataGrid/HeaderCell.razor.cs +++ /dev/null @@ -1,419 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -public partial class HeaderCell : UIComponent, IDisposable -{ - [CascadingParameter] public DataGrid DataGrid { get; set; } - [CascadingParameter(Name = "IsOnlyHeader")] public bool IsOnlyHeader { get; set; } = false; - - [Parameter] public Column Column { get; set; } - [Parameter] public RenderFragment ChildContent { get; set; } - - private SortDirection _initialDirection; - private Type _dataType; - private bool _isSelected; - - [Parameter] - public SortDirection SortDirection - { - get => _initialDirection; - set - { - _initialDirection = value; - } - } - - private string _classname => - new CssBuilder(Column?.HeaderClass) - .AddClass(Column?.headerClassname) - .AddClass(AdditionalClassList) - .Build(); - - private string _style => - new StyleBuilder() - .AddStyle(Column?.HeaderStyle) - .AddStyle("width", _width?.ToPx(), when: _width.HasValue) - .Build(); - - private string _resizerStyle => - new StyleBuilder() - .AddStyle("height", _resizerHeight?.ToPx() ?? "100%") - .Build(); - - private string _resizerClass => - new CssBuilder() - .AddClass("resizing", when: _isResizing) - .AddClass("resizer") - .Build(); - - private string _sortHeaderClass => - new CssBuilder() - .AddClass("sortable-column-header") - .AddClass("cursor-pointer", when: !_isResizing) - .Build(); - - private string _optionsClass => - new CssBuilder() - .AddClass("column-options") - .AddClass("cursor-pointer", when: !_isResizing) - .Build(); - - private ElementReference _headerElement; - - private double? _width; - private double? _resizerHeight; - private bool _isResizing; - private bool _filtersMenuVisible; - - #region Computed Properties and Functions - - private string computedTitle - { - get - { - return Column.Title ?? Column.Field; - } - } - - private bool sortable - { - get - { - return Column?.Sortable ?? DataGrid?.SortMode != SortMode.None; - } - } - - private bool resizable - { - get - { - return Column?.Resizable ?? DataGrid.ColumnResizeMode != ResizeMode.None; - } - } - - private bool filterable - { - get - { - return Column?.Filterable ?? DataGrid?.Filterable ?? true; - } - } - - private bool showFilterIcon - { - get - { - if (!filterable) - return false; - - return Column?.ShowFilterIcon ?? DataGrid?.ShowFilterIcons ?? true; - } - } - - private bool hideable - { - get - { - return Column?.Hideable ?? DataGrid?.Hideable ?? false; - } - } - - private bool groupable - { - get - { - return Column?.Groupable ?? DataGrid?.Groupable ?? false; - } - } - - private bool showColumnOptions - { - get - { - if (!sortable && !filterable && !groupable) - return false; - - return Column?.ShowColumnOptions ?? DataGrid?.ShowColumnOptions ?? true; - } - } - - private string sortIconClass - { - get - { - if (_initialDirection == SortDirection.Descending) - { - return "sort-direction-icon mud-direction-desc"; - } - else if (_initialDirection == SortDirection.Ascending) - { - return "sort-direction-icon mud-direction-asc"; - } - else - { - return "sort-direction-icon"; - } - } - } - - private bool hasFilter - { - get - { - if (DataGrid == null) - return false; - - return DataGrid.FilterDefinitions.Any(x => x.Field == Column.Field && x.Operator != null && x.Value != null); - } - } - - #endregion - - protected override async Task OnInitializedAsync() - { - _initialDirection = Column?.InitialDirection ?? SortDirection.None; - - if (_initialDirection != SortDirection.None) - { - // set initial sort - await InvokeAsync(() => DataGrid.ExtendSortAsync(Column.Field, _initialDirection, Column.GetLocalSortFunc())); - } - - if (DataGrid != null) - { - DataGrid.SortChangedEvent += OnGridSortChanged; - DataGrid.SelectedAllItemsChangedEvent += OnSelectedAllItemsChanged; - DataGrid.SelectedItemsChangedEvent += OnSelectedItemsChanged; - } - - if (null != Column) - { - Column.HeaderCell = this; - - if (Column.filterable) - { - Column.filterContext._headerCell = this; - } - } - } - - internal void GetDataType() - { - var p = typeof(T).GetProperty(Column?.Field); - _dataType = p.GetType(); - } - - #region Events - - /// - /// This is triggered by the DataGrid when a sort is applied - /// e.g. from another HeaderCell. - /// - /// The active sorts. - /// The removed sorts. - private void OnGridSortChanged(Dictionary> activeSorts, HashSet removedSorts) - { - if ((Column.Sortable.HasValue && !Column.Sortable.Value) || string.IsNullOrWhiteSpace(Column.Field)) - return; - - if (null != removedSorts && removedSorts.Contains(Column.Field)) - MarkAsUnsorted(); - else if (activeSorts.TryGetValue(Column.Field, out var sortDefinition)) - Column.SortIndex = sortDefinition.Index; - } - - private void OnSelectedAllItemsChanged(bool value) - { - _isSelected = value; - StateHasChanged(); - } - - private void OnSelectedItemsChanged(HashSet items) - { - _isSelected = items.Count == DataGrid.GetFilteredItemsCount(); - StateHasChanged(); - } - - private async Task OnResizerMouseDown(MouseEventArgs args) - { - if (!resizable) - return; - - if (args.Detail > 1) // Double click clears the width, hence setting it to minimum size. - { - _width = null; - return; - } - - _isResizing = await DataGrid.StartResizeColumn(this, args.ClientX); - } - - private async Task OnResizerMouseOver() - { - if (!_isResizing) - _resizerHeight = await DataGrid?.GetActualHeight(); - } - - private void OnResizerMouseLeave() - { - if (!_isResizing) - _resizerHeight = null; - } - - internal async Task UpdateColumnWidth(double targetWidth, double gridHeight, bool finishResize) - { - if (targetWidth > 0) - { - _resizerHeight = gridHeight; - _width = targetWidth; - if (finishResize) - { - _isResizing = false; - } - - await InvokeAsync(StateHasChanged); - } - - return await GetCurrentCellWidth(); - } - - internal async Task GetCurrentCellWidth() - { - var boundingRect = await _headerElement.MudGetBoundingClientRectAsync(); - return boundingRect.Width; - } - - internal async Task SortChangedAsync(MouseEventArgs args) - { - if (args.AltKey) - { - if (_initialDirection != SortDirection.None) - await RemoveSortAsync(); - - return; - } - - _initialDirection = _initialDirection switch - { - SortDirection.Ascending => SortDirection.Descending, - _ => SortDirection.Ascending - }; - - if (args.CtrlKey && DataGrid.SortMode == SortMode.Multiple) - await InvokeAsync(() => DataGrid.ExtendSortAsync(Column.Field, _initialDirection, Column.GetLocalSortFunc())); - else - await InvokeAsync(() => DataGrid.SetSortAsync(Column.Field, _initialDirection, Column.GetLocalSortFunc())); - } - - internal async Task RemoveSortAsync() - { - await InvokeAsync(() => DataGrid.RemoveSortAsync(Column.Field)); - MarkAsUnsorted(); - } - - internal void AddFilter() - { - if (DataGrid.FilterMode == DataGridFilterMode.Simple) - DataGrid.AddFilter(Guid.NewGuid(), Column?.Field); - else if (DataGrid.FilterMode == DataGridFilterMode.ColumnFilterMenu) - _filtersMenuVisible = true; - } - - internal void OpenFilters() - { - if (DataGrid.FilterMode == DataGridFilterMode.Simple) - DataGrid.OpenFilters(); - else if (DataGrid.FilterMode == DataGridFilterMode.ColumnFilterMenu) - _filtersMenuVisible = true; - } - - internal void ApplyFilter() - { - DataGrid.FilterDefinitions.Add(Column.filterContext.FilterDefinition); - DataGrid.ExternalStateHasChanged(); - _filtersMenuVisible = false; - } - - internal void ApplyFilter(FilterDefinition filterDefinition) - { - DataGrid.FilterDefinitions.Add(filterDefinition); - DataGrid.ExternalStateHasChanged(); - _filtersMenuVisible = false; - } - - internal void ApplyFilters(IEnumerable> filterDefinitions) - { - DataGrid.FilterDefinitions.AddRange(filterDefinitions); - DataGrid.ExternalStateHasChanged(); - _filtersMenuVisible = false; - } - - internal void ClearFilter() - { - DataGrid.RemoveFilter(Column.filterContext.FilterDefinition.Id); - Column.filterContext.FilterDefinition.Value = null; - _filtersMenuVisible = false; - } - - internal void ClearFilter(FilterDefinition filterDefinition) - { - DataGrid.RemoveFilter(filterDefinition.Id); - _filtersMenuVisible = false; - } - - internal void ClearFilters(IEnumerable> filterDefinitions) - { - DataGrid.FilterDefinitions.RemoveAll(x => filterDefinitions.Any(y => y.Id == x.Id)); - DataGrid.ExternalStateHasChanged(); - _filtersMenuVisible = false; - } - - private async Task CheckedChangedAsync(bool value) - { - await DataGrid?.SetSelectAllAsync(value); - } - - internal async Task HideColumnAsync() - { - if (Column != null) - { - await Column.HideAsync(); - DataGrid.ExternalStateHasChanged(); - } - } - - internal void GroupColumn() - { - Column?.SetGrouping(true); - } - - internal void UngroupColumn() - { - Column?.SetGrouping(false); - } - - private void MarkAsUnsorted() - { - _initialDirection = SortDirection.None; - Column.SortIndex = -1; - } - - #endregion - - public void Dispose() - { - if (DataGrid != null) - { - DataGrid.SortChangedEvent -= OnGridSortChanged; - DataGrid.SelectedAllItemsChangedEvent -= OnSelectedAllItemsChanged; - DataGrid.SelectedItemsChangedEvent -= OnSelectedItemsChanged; - } - } -} diff --git a/src/Connected.Components/Components/DataGrid/HeaderContext.cs b/src/Connected.Components/Components/DataGrid/HeaderContext.cs deleted file mode 100644 index 0abbe6e..0000000 --- a/src/Connected.Components/Components/DataGrid/HeaderContext.cs +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected.Components; - -public class HeaderContext -{ - internal DataGrid _dataGrid; - public IEnumerable Items - { - get - { - return _dataGrid.Items; - } - } - public HeaderActions Actions { get; internal set; } - public bool IsAllSelected - { - get - { - - if (_dataGrid.Selection != null && Items != null) - { - return _dataGrid.Selection.Count == Items.Count(); - } - - return false; - } - } - - public HeaderContext(DataGrid dataGrid) - { - _dataGrid = dataGrid; - Actions = new HeaderContext.HeaderActions - { - SetSelectAll = async (x) => await _dataGrid.SetSelectAllAsync(x), - }; - - } - - public class HeaderActions - { - public Action SetSelectAll { get; internal set; } - } -} diff --git a/src/Connected.Components/Components/DataGrid/HierarchyColumn.razor b/src/Connected.Components/Components/DataGrid/HierarchyColumn.razor deleted file mode 100644 index 133bc5a..0000000 --- a/src/Connected.Components/Components/DataGrid/HierarchyColumn.razor +++ /dev/null @@ -1,22 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent -@typeparam T - - - - - - - -@code { - [Parameter] public string ClosedIcon { get; set; } = Icons.Material.Filled.ChevronRight; - [Parameter] public string OpenIcon { get; set; } = Icons.Material.Filled.ExpandMore; - [Parameter] public Size IconSize { get; set; } = Size.Medium; - [Parameter] public Func ButtonDisabledFunc { get; set; } = x => false; -} \ No newline at end of file diff --git a/src/Connected.Components/Components/DataGrid/Row.razor b/src/Connected.Components/Components/DataGrid/Row.razor deleted file mode 100644 index 4422235..0000000 --- a/src/Connected.Components/Components/DataGrid/Row.razor +++ /dev/null @@ -1,6 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - - - @ChildContent - \ No newline at end of file diff --git a/src/Connected.Components/Components/DataGrid/Row.razor.cs b/src/Connected.Components/Components/DataGrid/Row.razor.cs deleted file mode 100644 index 4711b11..0000000 --- a/src/Connected.Components/Components/DataGrid/Row.razor.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class Row : UIComponent -{ - [Parameter] public RenderFragment ChildContent { get; set; } - - protected string Classname => new CssBuilder("table-row") - .AddClass(AdditionalClassList).Build(); -} diff --git a/src/Connected.Components/Components/DataGrid/SelectColumn.razor b/src/Connected.Components/Components/DataGrid/SelectColumn.razor deleted file mode 100644 index 0f1f54a..0000000 --- a/src/Connected.Components/Components/DataGrid/SelectColumn.razor +++ /dev/null @@ -1,28 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent -@typeparam T - - - - @if (ShowInHeader) - { - - } - - - - - - @if (ShowInFooter) - { - - } - - - -@code { - [Parameter] public bool ShowInHeader { get; set; } = true; - [Parameter] public bool ShowInFooter { get; set; } = true; - [Parameter] public Size Size { get; set; } = Size.Medium; -} \ No newline at end of file diff --git a/src/Connected.Components/Components/DataGrid/SortDefinition.cs b/src/Connected.Components/Components/DataGrid/SortDefinition.cs deleted file mode 100644 index 0b2837e..0000000 --- a/src/Connected.Components/Components/DataGrid/SortDefinition.cs +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected.Components; - -public sealed record SortDefinition(string SortBy, bool Descending, int Index, Func SortFunc); diff --git a/src/Connected.Components/Components/DatePicker/DatePicker.cs b/src/Connected.Components/Components/DatePicker/DatePicker.cs deleted file mode 100644 index 0ef16e4..0000000 --- a/src/Connected.Components/Components/DatePicker/DatePicker.cs +++ /dev/null @@ -1,311 +0,0 @@ -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -public class DatePicker : DatePickerBase -{ - private DateTime? _selectedDate; - - /// - /// Fired when the DateFormat changes. - /// - [Parameter] public EventCallback DateChanged { get; set; } - - /// - /// The currently selected date (two-way bindable). If null, then nothing was selected. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Data)] - public DateTime? Date - { - get => _value; - set => SetDateAsync(value, true).AndForget(); - } - - protected async Task SetDateAsync(DateTime? date, bool updateValue) - { - if (_value != date) - { - Modified = true; - - if (date is not null && IsDateDisabledFunc(date.Value.Date)) - { - await SetTextAsync(null, false); - return; - } - - _value = date; - if (updateValue) - await SetTextAsync(Converter.Convert(_value), false); - - await DateChanged.InvokeAsync(_value); - BeginValidate(); - FieldChanged(_value); - } - } - - protected override Task DateFormatChanged(string newFormat) - { - Modified = true; - return SetTextAsync(Converter.Convert(_value), false); - } - - protected override Task StringValueChanged(string value) - { - Modified = true; - // Update the date property (without updating back the Value property) - return SetDateAsync(Converter.ConvertBack(value), false); - } - - protected override string GetDayClasses(int month, DateTime day) - { - var b = new CssBuilder("day"); - b.AddClass(AdditionalDateClassesFunc?.Invoke(day) ?? string.Empty); - if (day < GetMonthStart(month) || day > GetMonthEnd(month)) - return b.AddClass("hidden").Build(); - if ((Date?.Date == day && _selectedDate == null) || _selectedDate?.Date == day) - return b.AddClass("selected").AddClass($"theme-{Color.ToDescription()}").Build(); - if (day == DateTime.Today) - return b.AddClass("current mud-button-outlined").AddClass($"button-outlined-{Color.ToDescription()} mud-{Color.ToDescription()}-text").Build(); - return b.Build(); - } - - protected override async void OnDayClicked(DateTime dateTime) - { - _selectedDate = dateTime; - if (PickerActions == null || AutoClose || PickerVariant == PickerVariant.Static) - { - Submit(); - - if (PickerVariant != PickerVariant.Static) - { - await Task.Delay(ClosingDelay); - Close(false); - } - } - } - - /// - /// user clicked on a month - /// - /// - protected override void OnMonthSelected(DateTime month) - { - PickerMonth = month; - var nextView = GetNextView(); - if (nextView == null) - { - _selectedDate = _selectedDate.HasValue ? - //everything has to be set because a value could already defined -> fix values can be ignored as they are set in submit anyway - new DateTime(month.Year, month.Month, _selectedDate.Value.Day, _selectedDate.Value.Hour, _selectedDate.Value.Minute, _selectedDate.Value.Second, _selectedDate.Value.Millisecond, _selectedDate.Value.Kind) - //We can assume day here, as it was not set yet. If a fix value is set, it will be overriden in Submit - : new DateTime(month.Year, month.Month, 1); - SubmitAndClose(); - } - else - { - CurrentView = (OpenTo)nextView; - } - } - - /// - /// user clicked on a year - /// - /// - protected override void OnYearClicked(int year) - { - var current = GetMonthStart(0); - PickerMonth = new DateTime(year, current.Month, 1); - var nextView = GetNextView(); - if (nextView == null) - { - _selectedDate = _selectedDate.HasValue ? - //everything has to be set because a value could already defined -> fix values can be ignored as they are set in submit anyway - new DateTime(_selectedDate.Value.Year, _selectedDate.Value.Month, _selectedDate.Value.Day, _selectedDate.Value.Hour, _selectedDate.Value.Minute, _selectedDate.Value.Second, _selectedDate.Value.Millisecond, _selectedDate.Value.Kind) - //We can assume month and day here, as they were not set yet - : new DateTime(year, 1, 1); - SubmitAndClose(); - } - else - { - CurrentView = (OpenTo)nextView; - } - } - - protected override void OnOpened() - { - _selectedDate = null; - - base.OnOpened(); - } - - protected internal override async void Submit() - { - if (ReadOnly) - return; - if (_selectedDate == null) - return; - - if (FixYear.HasValue || FixMonth.HasValue || FixDay.HasValue) - _selectedDate = new DateTime(FixYear ?? _selectedDate.Value.Year, - FixMonth ?? _selectedDate.Value.Month, - FixDay ?? _selectedDate.Value.Day, - _selectedDate.Value.Hour, - _selectedDate.Value.Minute, - _selectedDate.Value.Second, - _selectedDate.Value.Millisecond); - - await SetDateAsync(_selectedDate, true); - _selectedDate = null; - } - - public override async void Clear(bool close = true) - { - _selectedDate = null; - await SetDateAsync(null, true); - - if (AutoClose == true) - { - Close(false); - } - } - - protected override string GetTitleDateString() - { - return FormatTitleDate(_selectedDate ?? Date); - } - - protected override DateTime GetCalendarStartOfMonth() - { - var date = StartMonth ?? Date ?? DateTime.Today; - return date.StartOfMonth(Culture); - } - - protected override int GetCalendarYear(int year) - { - var date = Date ?? DateTime.Today; - var diff = date.Year - year; - var calenderYear = Culture.Calendar.GetYear(date); - return calenderYear - diff; - } - - //To be completed on next PR - protected internal override void HandleKeyDown(KeyboardEventArgs obj) - { - if (Disabled || ReadOnly) - return; - base.HandleKeyDown(obj); - switch (obj.Key) - { - case "ArrowRight": - if (IsOpen) - { - - } - break; - case "ArrowLeft": - if (IsOpen) - { - - } - break; - case "ArrowUp": - if (IsOpen == false && Editable == false) - { - IsOpen = true; - } - else if (obj.AltKey == true) - { - IsOpen = false; - } - else if (obj.ShiftKey == true) - { - - } - else - { - - } - break; - case "ArrowDown": - if (IsOpen == false && Editable == false) - { - IsOpen = true; - } - else if (obj.ShiftKey == true) - { - - } - else - { - - } - break; - case "Escape": - ReturnDateBackUp(); - break; - case "Enter": - case "NumpadEnter": - if (!IsOpen) - { - Open(); - } - else - { - Submit(); - Close(); - _inputReference?.SetText(Text); - } - break; - case " ": - if (!Editable) - { - if (!IsOpen) - { - Open(); - } - else - { - Submit(); - Close(); - _inputReference?.SetText(Text); - } - } - break; - } - } - - private void ReturnDateBackUp() - { - Close(); - } - - /// - /// Scrolls to the date. - /// - public void GoToDate() - { - if (Date.HasValue) - { - PickerMonth = new DateTime(Date.Value.Year, Date.Value.Month, 1); - ScrollToYear(); - } - } - - /// - /// Scrolls to the defined date. - /// - public async Task GoToDate(DateTime date, bool submitDate = true) - { - PickerMonth = new DateTime(date.Year, date.Month, 1); - if (submitDate) - { - await SetDateAsync(date, true); - ScrollToYear(); - } - } -} diff --git a/src/Connected.Components/Components/DatePicker/DatePickerBase.razor b/src/Connected.Components/Components/DatePicker/DatePickerBase.razor deleted file mode 100644 index 4af3f5a..0000000 --- a/src/Connected.Components/Components/DatePicker/DatePickerBase.razor +++ /dev/null @@ -1,152 +0,0 @@ -@namespace Connected.Components -@inherits Picker - -@Render - -@code { - - protected override RenderFragment PickerContent => - @ - - - - - -
    - @{ - int dayId = 0; - @if (_picker_month.HasValue && _picker_month.Value.Year == 1 && _picker_month.Value.Month == 1) - { - dayId = -1; - } - } - @for (int displayMonth = 0; displayMonth < DisplayMonths; ++displayMonth) - { - int tempMonth = displayMonth; //without local variable month names are wrong - -
    - @if (tempMonth == 0 && CurrentView == OpenTo.Year) - { -
    - @for (int i = GetMinYear(); i <= GetMaxYear(); i++) - { - var year = i; -
    - @GetCalendarYear(year) -
    - } -
    - } - else if (tempMonth == 0 && CurrentView == OpenTo.Month) - { - var calendarYear = GetCalendarYear(PickerMonth?.Year ?? DateTime.Today.Year); - var prevLabel = $"Go to previous year {calendarYear - 1}"; - var nextLabel = $"Go to next year {calendarYear + 1}"; - -
    -
    - @if (!FixYear.HasValue) - { - - - - } - else - { - @calendarYear - } -
    -
    -
    - @foreach (var month in GetAllMonths()) - { - - } -
    - } - else if (CurrentView == OpenTo.Date || tempMonth > 0) - { - var prevLabel = $"Go to previous month {GetMonthName((tempMonth - 1) % 12)}"; - var nextLabel = $"Go to next month {GetMonthName((tempMonth + 1) % 12)}"; - -
    -
    - @if (!FixMonth.HasValue) - { - - - - } - else - { - @GetMonthName(tempMonth) - } -
    -
    - @if (ShowWeekNumbers) - { -
    - -
    - } - @foreach (var dayname in GetAbbreviatedDayNames()) - { - @dayname - } -
    -
    -
    -
    - @for (int week = 0; week < 6; week++) - { - int tempWeek = week; - var firstMonthFirstYear = _picker_month.HasValue && _picker_month.Value.Year == 1 && _picker_month.Value.Month == 1; - - @if (ShowWeekNumbers) - { -
    - @GetWeekNumber(tempMonth, tempWeek) -
    - } - @foreach (var day in GetWeek(tempMonth, tempWeek)) - { - var tempId = ++dayId; - - @if (tempId != 0 || !firstMonthFirstYear) - { - var selectedDay = !firstMonthFirstYear ? day : day.AddDays(-1); - - } - else - { - - } - } - } -
    -
    - } -
    - } -
    -
    -
    ; -} \ No newline at end of file diff --git a/src/Connected.Components/Components/DatePicker/DatePickerBase.razor.cs b/src/Connected.Components/Components/DatePicker/DatePickerBase.razor.cs deleted file mode 100644 index 9bb9cea..0000000 --- a/src/Connected.Components/Components/DatePicker/DatePickerBase.razor.cs +++ /dev/null @@ -1,605 +0,0 @@ -using System.Globalization; -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public abstract partial class DatePickerBase : Picker -{ - #region Variables - private bool _dateFormatTouched; - private DateTime? _picker_month; - protected virtual bool IsRange { get; } = false; - protected OpenTo CurrentView; - /// - /// We need a random id for the year items in the year list so we can scroll to the item safely in every DatePicker. - /// - private string _componentId = Guid.NewGuid().ToString(); - - /// - /// Is set to true to scroll to the actual year after the next render - /// - private bool _scrollToYearAfterRender = false; - #endregion - - #region Events - private Typo GetMonthTypo(DateTime month) - { - if (GetMonthStart(0) == month) - return Typo.h5; - return Typo.subtitle1; - } - - protected abstract DateTime GetCalendarStartOfMonth(); - - private int GetCalendarDayOfMonth(DateTime date) - { - return Culture.Calendar.GetDayOfMonth(date); - } - - /// - /// Converts gregorian year into whatever year it is in the provided culture - /// - /// Gregorian year - /// Year according to culture - protected abstract int GetCalendarYear(int year); - public async void ScrollToYear() - { - _scrollToYearAfterRender = false; - var id = $"{_componentId}{GetMonthStart(0).Year}"; - await ScrollManager.ScrollToYearAsync(id); - StateHasChanged(); - } - - private int GetMinYear() - { - if (MinDate.HasValue) - return MinDate.Value.Year; - return DateTime.Today.Year - 100; - } - - private int GetMaxYear() - { - if (MaxDate.HasValue) - return MaxDate.Value.Year; - return DateTime.Today.Year + 100; - } - - - - private Typo GetYearTypo(int year) - { - if (year == GetMonthStart(0).Year) - return Typo.h5; - return Typo.subtitle1; - } - - private void OnFormattedDateClick() - { - // todo: raise an event the user can handle - } - - - private IEnumerable GetAllMonths() - { - var current = GetMonthStart(0); - var calendarYear = Culture.Calendar.GetYear(current); - var firstOfCalendarYear = Culture.Calendar.ToDateTime(calendarYear, 1, 1, 0, 0, 0, 0); - for (var i = 0; i < Culture.Calendar.GetMonthsInYear(calendarYear); i++) - yield return Culture.Calendar.AddMonths(firstOfCalendarYear, i); - } - - private string GetAbbreviatedMonthName(DateTime month) - { - var calendarMonth = Culture.Calendar.GetMonth(month); - return Culture.DateTimeFormat.AbbreviatedMonthNames[calendarMonth - 1]; - } - - private string GetMonthName(DateTime month) - { - var calendarMonth = Culture.Calendar.GetMonth(month); - return Culture.DateTimeFormat.MonthNames[calendarMonth - 1]; - } - protected override void OnPickerOpened() - { - base.OnPickerOpened(); - if (Editable == true && Text != null) - { - DateTime? a = Converter.ConvertBack(Text); - if (a.HasValue) - { - a = new DateTime(a.Value.Year, a.Value.Month, 1); - PickerMonth = a; - } - } - if (OpenTo == OpenTo.Date && FixDay.HasValue) - { - OpenTo = OpenTo.Month; - } - if (OpenTo == OpenTo.Date && FixDay.HasValue && FixMonth.HasValue) - { - OpenTo = OpenTo.Year; - } - CurrentView = OpenTo; - if (CurrentView == OpenTo.Year) - _scrollToYearAfterRender = true; - } - - /// - /// Get the first of the month to display - /// - /// - protected DateTime GetMonthStart(int month) - { - var monthStartDate = _picker_month ?? DateTime.Today.StartOfMonth(Culture); - // Return the min supported datetime of the calendar when this is year 1 and first month! - if (_picker_month.HasValue && _picker_month.Value.Year == 1 && _picker_month.Value.Month == 1) - { - return Culture.Calendar.MinSupportedDateTime; - } - return Culture.Calendar.AddMonths(monthStartDate, month); - } - - /// - /// Get the last of the month to display - /// - /// - protected DateTime GetMonthEnd(int month) - { - var monthStartDate = _picker_month ?? DateTime.Today.StartOfMonth(Culture); - return Culture.Calendar.AddMonths(monthStartDate, month).EndOfMonth(Culture); - } - - protected DayOfWeek GetFirstDayOfWeek() - { - if (FirstDayOfWeek.HasValue) - return FirstDayOfWeek.Value; - return Culture.DateTimeFormat.FirstDayOfWeek; - } - - /// - /// Gets the n-th week of the currently displayed month. - /// - /// offset from _picker_month - /// between 0 and 4 - /// - protected IEnumerable GetWeek(int month, int index) - { - if (index is < 0 or > 5) - throw new ArgumentException("Index must be between 0 and 5"); - var month_first = GetMonthStart(month); - var week_first = month_first.AddDays(index * 7).StartOfWeek(GetFirstDayOfWeek()); - for (var i = 0; i < 7; i++) - yield return week_first.AddDays(i); - } - - private string GetWeekNumber(int month, int index) - { - if (index is < 0 or > 5) - throw new ArgumentException("Index must be between 0 and 5"); - var month_first = GetMonthStart(month); - var week_first = month_first.AddDays(index * 7).StartOfWeek(GetFirstDayOfWeek()); - //january 1st - if (month_first.Month == 1 && index == 0) - { - week_first = month_first; - } - - if (week_first.Month != month_first.Month && week_first.AddDays(6).Month != month_first.Month) - return ""; - - return Culture.Calendar.GetWeekOfYear(week_first, - Culture.DateTimeFormat.CalendarWeekRule, FirstDayOfWeek ?? Culture.DateTimeFormat.FirstDayOfWeek).ToString(); - } - - protected virtual OpenTo? GetNextView() - { - OpenTo? nextView = CurrentView switch - { - OpenTo.Year => !FixMonth.HasValue ? OpenTo.Month : !FixDay.HasValue ? OpenTo.Date : null, - OpenTo.Month => !FixDay.HasValue ? OpenTo.Date : null, - _ => null, - }; - return nextView; - } - - protected virtual async void SubmitAndClose() - { - if (PickerActions == null) - { - Submit(); - - if (PickerVariant != PickerVariant.Static) - { - await Task.Delay(ClosingDelay); - Close(false); - } - } - } - - protected abstract string GetDayClasses(int month, DateTime day); - - /// - /// User clicked on a day - /// - protected abstract void OnDayClicked(DateTime dateTime); - - /// - /// user clicked on a month - /// - /// - protected virtual void OnMonthSelected(DateTime month) - { - PickerMonth = month; - var nextView = GetNextView(); - if (nextView != null) - { - CurrentView = (OpenTo)nextView; - } - } - - /// - /// user clicked on a year - /// - /// - protected virtual void OnYearClicked(int year) - { - var current = GetMonthStart(0); - PickerMonth = new DateTime(year, current.Month, 1); - var nextView = GetNextView(); - if (nextView != null) - { - CurrentView = (OpenTo)nextView; - } - } - - /// - /// user clicked on a month - /// - protected virtual void OnMonthClicked(int month) - { - CurrentView = OpenTo.Month; - _picker_month = _picker_month?.AddMonths(month); - StateHasChanged(); - } - - /// - /// return Mo, Tu, We, Th, Fr, Sa, Su in the right culture - /// - /// - protected IEnumerable GetAbbreviatedDayNames() - { - var dayNamesNormal = Culture.DateTimeFormat.AbbreviatedDayNames; - var dayNamesShifted = Shift(dayNamesNormal, (int)GetFirstDayOfWeek()); - return dayNamesShifted; - } - - /// - /// Shift array and cycle around from the end - /// - private static T[] Shift(T[] array, int positions) - { - var copy = new T[array.Length]; - Array.Copy(array, 0, copy, array.Length - positions, positions); - Array.Copy(array, positions, copy, 0, array.Length - positions); - return copy; - } - - protected string GetMonthName(int month) - { - return GetMonthStart(month).ToString(Culture.DateTimeFormat.YearMonthPattern, Culture); - } - - protected abstract string GetTitleDateString(); - - protected string FormatTitleDate(DateTime? date) - { - return date?.ToString(TitleDateFormat ?? "ddd, dd MMM", Culture) ?? ""; - } - - protected string GetFormattedYearString() - { - return GetMonthStart(0).ToString("yyyy", Culture); - } - - private void OnPreviousMonthClick() - { - // It is impossible to go further into the past after the first year and the first month! - if (PickerMonth.HasValue && PickerMonth.Value.Year == 1 && PickerMonth.Value.Month == 1) - { - return; - } - PickerMonth = GetMonthStart(0).AddDays(-1).StartOfMonth(Culture); - } - - private void OnNextMonthClick() - { - PickerMonth = GetMonthEnd(0).AddDays(1); - } - - private void OnPreviousYearClick() - { - PickerMonth = GetMonthStart(0).AddYears(-1); - } - - private void OnNextYearClick() - { - PickerMonth = GetMonthStart(0).AddYears(1); - } - - private void OnYearClick() - { - if (!FixYear.HasValue) - { - CurrentView = OpenTo.Year; - StateHasChanged(); - _scrollToYearAfterRender = true; - } - } - /// - /// Date format value change hook for descendants. - /// - protected virtual Task DateFormatChanged(string newFormat) - { - return Task.CompletedTask; - } - - protected override bool SetCulture(CultureInfo value) - { - if (!base.SetCulture(value)) - return false; - - if (!_dateFormatTouched && Converter is DefaultConverter defaultConverter) - defaultConverter.Format = value.DateTimeFormat.ShortDatePattern; - - return true; - } - /// - /// Fired when the date changes. - /// - [Parameter] public EventCallback PickerMonthChanged { get; set; } - - #endregion - - #region Content - [Inject] protected IScrollManager ScrollManager { get; set; } - /// - /// Defines on which day the week starts. Depends on the value of Culture. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public DayOfWeek? FirstDayOfWeek { get; set; } = null; - - /// - /// The current month of the date picker (two-way bindable). This changes when the user browses through the calender. - /// The month is represented as a DateTime which is always the first day of that month. You can also set this to define which month is initially shown. If not set, the current month is shown. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public DateTime? PickerMonth - { - get => _picker_month; - set - { - if (value == _picker_month) - return; - _picker_month = value; - InvokeAsync(StateHasChanged); - PickerMonthChanged.InvokeAsync(value); - } - } - #endregion - - #region Styling - private string GetMonthClasses(DateTime month) - { - if (GetMonthStart(0) == month) - return $"picker-month-selected mud-{Color.ToDescription()}-text"; - return null; - } - /// - /// Function to conditionally apply new classes to specific days - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public Func AdditionalDateClassesFunc { get; set; } - private string GetYearClasses(int year) - { - if (year == GetMonthStart(0).Year) - return $"picker-year-selected mud-{Color.ToDescription()}-text"; - return null; - } - - private string GetCalendarHeaderClasses(int month) - { - return new CssBuilder("picker-calendar-header") - .AddClass($"picker-calendar-header-{month + 1}") - .AddClass($"picker-calendar-header-last", month == DisplayMonths - 1) - .Build(); - } - /// - /// Custom previous icon. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerAppearance)] - public string PreviousIcon { get; set; } = Icons.Material.Filled.ChevronLeft; - - /// - /// Custom next icon. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerAppearance)] - public string NextIcon { get; set; } = Icons.Material.Filled.ChevronRight; - - - - /// - /// String Format for selected date view - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public string DateFormat - { - get - { - return (Converter as DefaultConverter)?.Format; - } - set - { - if (Converter is DefaultConverter defaultConverter) - { - defaultConverter.Format = value; - _dateFormatTouched = true; - } - DateFormatChanged(value); - } - } - #endregion - - #region Behavior - /// - /// Max selectable date. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Validation)] - public DateTime? MaxDate { get; set; } - - /// - /// Min selectable date. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Validation)] - public DateTime? MinDate { get; set; } - - /// - /// First view to show in the DatePicker. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public OpenTo OpenTo { get; set; } = OpenTo.Date; - - /// - /// Set a predefined fix year - no year can be selected - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public int? FixYear { get; set; } - /// - /// Set a predefined fix month - no month can be selected - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public int? FixMonth { get; set; } - /// - /// Set a predefined fix day - no day can be selected - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public int? FixDay { get; set; } - /// - /// Sets the amount of time in milliseconds to wait before closing the picker. This helps the user see that the date was selected before the popover disappears. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public int ClosingDelay { get; set; } = 100; - - /// - /// Number of months to display in the calendar - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public int DisplayMonths { get; set; } = 1; - - /// - /// Maximum number of months in one row - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerAppearance)] - public int? MaxMonthColumns { get; set; } - - /// - /// Start month when opening the picker. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public DateTime? StartMonth { get; set; } - - /// - /// Display week numbers according to the Culture parameter. If no culture is defined, CultureInfo.CurrentCulture will be used. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public bool ShowWeekNumbers { get; set; } - - /// - /// Format of the selected date in the title. By default, this is "ddd, dd MMM" which abbreviates day and month names. - /// For instance, display the long names like this "dddd, dd. MMMM". - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public string TitleDateFormat { get; set; } = "ddd, dd MMM"; - - /// - /// If AutoClose is set to true and PickerActions are defined, selecting a day will close the MudDatePicker. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.PickerBehavior)] - public bool AutoClose { get; set; } - - /// - /// Function to determine whether a date is disabled - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Validation)] - public Func IsDateDisabledFunc - { - get => _isDateDisabledFunc; - set - { - _isDateDisabledFunc = value ?? (_ => false); - } - } - private Func _isDateDisabledFunc = _ => false; - #endregion - - #region Lifecycle - - protected DatePickerBase() : base(new DefaultConverter - { - Format = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern, - Culture = CultureInfo.CurrentCulture - }) - { - AdornmentAriaLabel = "Open Date Picker"; - } - - protected override void OnInitialized() - { - base.OnInitialized(); - CurrentView = OpenTo; - } - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - await base.OnAfterRenderAsync(firstRender); - - if (firstRender) - { - _picker_month ??= GetCalendarStartOfMonth(); - } - - if (firstRender && CurrentView == OpenTo.Year) - { - ScrollToYear(); - return; - } - - if (_scrollToYearAfterRender) - ScrollToYear(); - } - - #endregion - -} diff --git a/src/Connected.Components/Components/DatePicker/DateRange.cs b/src/Connected.Components/Components/DatePicker/DateRange.cs deleted file mode 100644 index 3c5d2aa..0000000 --- a/src/Connected.Components/Components/DatePicker/DateRange.cs +++ /dev/null @@ -1,76 +0,0 @@ -using Connected.Extensions; -using Connected.Utilities.BindingConverters; - -namespace Connected.Components; - -public class DateRange : Range, IEquatable -{ - public DateRange() : base(null, null) - { - } - - public DateRange(DateTime? start, DateTime? end) : base(start, end) - { - } - - public string ToString(Converter converter) - { - if (Start == null || End == null) - return string.Empty; - - return RangeConverter.Join(converter.Convert(Start.Value), converter.Convert(End.Value)); - } - - public string ToIsoDateString() - { - if (Start == null || End == null) - return string.Empty; - - return RangeConverter.Join(Start.ToIsoDateString(), End.ToIsoDateString()); - } - - public static bool TryParse(string value, Converter converter, out DateRange date) - { - date = null; - - if (!RangeConverter.Split(value, out var start, out var end)) - return false; - - return TryParse(start, end, converter, out date); - } - - public static bool TryParse(string start, string end, Converter converter, out DateRange date) - { - date = null; - - var endDate = converter.ConvertBack(end); - - if (endDate is null) - return false; - - var startDate = converter.ConvertBack(start); - - if (startDate is null) - return false; - - date = new DateRange(startDate, endDate); - return true; - } - - public override int GetHashCode() => HashCode.Combine(Start, End); - public override bool Equals(object obj) => Equals(obj as DateRange); - - public bool Equals(DateRange other) => other != null && Start == other.Start && End == other.End; - - public static bool operator ==(DateRange dateRange1, DateRange dateRange2) - { - if (ReferenceEquals(dateRange1, dateRange2)) - return true; - if (dateRange1 is null || dateRange2 is null) - return false; - - return dateRange1.Equals(dateRange2); - } - - public static bool operator !=(DateRange dateRange1, DateRange dateRange2) => !(dateRange1 == dateRange2); -} diff --git a/src/Connected.Components/Components/DatePicker/DateRangePicker.razor b/src/Connected.Components/Components/DatePicker/DateRangePicker.razor deleted file mode 100644 index 9a26474..0000000 --- a/src/Connected.Components/Components/DatePicker/DateRangePicker.razor +++ /dev/null @@ -1,19 +0,0 @@ -@namespace Connected.Components -@inherits DatePickerBase - -@Render - -@code{ - - protected override RenderFragment InputContent=> - @ - - - - ; - -} diff --git a/src/Connected.Components/Components/DatePicker/DateRangePicker.razor.cs b/src/Connected.Components/Components/DatePicker/DateRangePicker.razor.cs deleted file mode 100644 index af0723e..0000000 --- a/src/Connected.Components/Components/DatePicker/DateRangePicker.razor.cs +++ /dev/null @@ -1,311 +0,0 @@ -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class DateRangePicker : DatePickerBase -{ - #region Variables - private DateTime? _firstDate = null, _secondDate; - private DateRange _dateRange; - private Range _rangeText; - protected override bool IsRange => true; - private RangeInput _rangeInput; - /// - /// The currently selected range (two-way bindable). If null, then nothing was selected. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Data)] - public DateRange DateRange - { - get => _dateRange; - set => SetDateRangeAsync(value, true).AndForget(); - } - #endregion - - #region Events - - protected override async void OnDayClicked(DateTime dateTime) - { - if (_firstDate == null || _firstDate > dateTime || _secondDate != null) - { - _secondDate = null; - _firstDate = dateTime; - return; - } - - _secondDate = dateTime; - if (PickerActions == null || AutoClose) - { - Submit(); - - if (PickerVariant != PickerVariant.Static) - { - await Task.Delay(ClosingDelay); - Close(false); - } - } - } - - protected override void OnOpened() - { - _secondDate = null; - base.OnOpened(); - } - - protected internal override async void Submit() - { - if (ReadOnly) - return; - if (_firstDate == null || _secondDate == null) - return; - - await SetDateRangeAsync(new DateRange(_firstDate, _secondDate), true); - - _firstDate = null; - _secondDate = null; - } - - public override void Clear(bool close = true) - { - DateRange = null; - _firstDate = _secondDate = null; - base.Clear(); - } - protected override Task DateFormatChanged(string newFormat) - { - Modified = true; - return SetTextAsync(_dateRange?.ToString(Converter), false); - } - - protected override Task StringValueChanged(string value) - { - Modified = true; - // Update the daterange property (without updating back the Value property) - return SetDateRangeAsync(ParseDateRangeValue(value), false); - } - /// - /// Fired when the DateFormat changes. - /// - [Parameter] public EventCallback DateRangeChanged { get; set; } - protected async Task SetDateRangeAsync(DateRange range, bool updateValue) - { - if (_dateRange != range) - { - var doesRangeContainDisabledDates = range?.Start != null && range?.End != null && Enumerable - .Range(0, int.MaxValue) - .Select(index => range.Start.Value.AddDays(index)) - .TakeWhile(date => date <= range.End.Value) - .Any(date => IsDateDisabledFunc(date.Date)); - - if (doesRangeContainDisabledDates) - { - _rangeText = null; - await SetTextAsync(null, false); - return; - } - - _dateRange = range; - _value = range?.End; - - if (updateValue) - { - if (_dateRange == null) - { - _rangeText = null; - await SetTextAsync(null, false); - } - else - { - _rangeText = new Range( - Converter.Convert(_dateRange.Start), - Converter.Convert(_dateRange.End)); - await SetTextAsync(_dateRange.ToString(Converter), false); - } - } - - await DateRangeChanged.InvokeAsync(_dateRange); - BeginValidate(); - } - } - #endregion - - #region Content - - private Range RangeText - { - get => _rangeText; - set - { - if (_rangeText?.Equals(value) ?? value == null) - return; - - Modified = true; - _rangeText = value; - SetDateRangeAsync(ParseDateRangeValue(value?.Start, value?.End), false).AndForget(); - } - } - - #endregion - - #region Styling - protected override string GetDayClasses(int month, DateTime day) - { - var b = new CssBuilder("day"); - if (day < GetMonthStart(month) || day > GetMonthEnd(month)) - { - return b.AddClass("hidden").Build(); - } - - if ((_firstDate != null && _secondDate != null && _firstDate < day && _secondDate > day) || - (_firstDate == null && _dateRange != null && _dateRange.Start < day && _dateRange.End > day)) - { - return b - .AddClass("range") - .AddClass("range-between") - .Build(); - } - - if ((_firstDate != null && day == _firstDate) || - (_firstDate == null && _dateRange != null && _dateRange.Start == day && DateRange.End != day)) - { - return b.AddClass("selected") - .AddClass("range") - .AddClass("range-start-selected") - .AddClass("range-selection", _firstDate != null) - .AddClass($"theme-{Color.ToDescription()}") - .Build(); - } - - if ((_firstDate != null && _secondDate != null && day == _secondDate) || - (_firstDate == null && _dateRange != null && _dateRange.Start != day && _dateRange.End == day)) - { - return b.AddClass("selected") - .AddClass("range") - .AddClass("range-end-selected") - .AddClass($"theme-{Color.ToDescription()}") - .Build(); - } - - if (_firstDate == null && _dateRange != null && _dateRange.Start == _dateRange.End && _dateRange.Start == day) - { - return b.AddClass("selected").AddClass($"theme-{Color.ToDescription()}").Build(); - } - else if (_firstDate != null && day > _firstDate) - { - return b.AddClass("range") - .AddClass("range-selection", _secondDate == null) - .AddClass($"range-selection-{Color.ToDescription()}", _firstDate != null) - .Build(); - } - - if (day == DateTime.Today) - { - return b.AddClass("current") - .AddClass("range", _firstDate != null && day > _firstDate) - .AddClass("range-selection", _firstDate != null && day > _firstDate) - .AddClass($"range-selection-{Color.ToDescription()}", _firstDate != null && day > _firstDate) - .AddClass($"{Color.ToDescription()}-text") - .Build(); - } - - return b.Build(); - } - #endregion - - #region Behavior - - protected override string GetTitleDateString() - { - if (_firstDate != null) - return $"{FormatTitleDate(_firstDate)} - {FormatTitleDate(_secondDate)}"; - - return DateRange?.Start != null - ? $"{FormatTitleDate(DateRange.Start)} - {FormatTitleDate(DateRange.End)}" - : ""; - } - - protected override DateTime GetCalendarStartOfMonth() - { - var date = StartMonth ?? DateRange?.Start ?? DateTime.Today; - return date.StartOfMonth(Culture); - } - - protected override int GetCalendarYear(int year) - { - var date = DateRange?.Start ?? DateTime.Today; - var diff = date.Year - year; - var calenderYear = Culture.Calendar.GetYear(date); - return calenderYear - diff; - } - protected override bool HasValue(DateTime? value) - { - return null != value && value.HasValue; - } - - private DateRange ParseDateRangeValue(string value) - { - return DateRange.TryParse(value, Converter, out var dateRange) ? dateRange : null; - } - - private DateRange ParseDateRangeValue(string start, string end) - { - return DateRange.TryParse(start, end, Converter, out var dateRange) ? dateRange : null; - } - /// - /// Focuses the start date of MudDateRangePicker - /// - /// - public ValueTask FocusStartAsync() => _rangeInput.FocusStartAsync(); - - /// - /// Selects the start date of MudDateRangePicker - /// - /// - public ValueTask SelectStartAsync() => _rangeInput.SelectStartAsync(); - - /// - /// Selects the specified range of the start date text - /// - /// Start position of the selection - /// End position of the selection - /// - public ValueTask SelectRangeStartAsync(int pos1, int pos2) => _rangeInput.SelectRangeStartAsync(pos1, pos2); - - /// - /// Focuses the end date of MudDateRangePicker - /// - /// - public ValueTask FocusEndAsync() => _rangeInput.FocusEndAsync(); - - /// - /// Selects the end date of MudDateRangePicker - /// - /// - public ValueTask SelectEndAsync() => _rangeInput.SelectEndAsync(); - - /// - /// Selects the specified range of the end date text - /// - /// Start position of the selection - /// End position of the selection - /// - public ValueTask SelectRangeEndAsync(int pos1, int pos2) => _rangeInput.SelectRangeEndAsync(pos1, pos2); - #endregion - - #region Lifecycle - public DateRangePicker() - { - DisplayMonths = 2; - AdornmentAriaLabel = "Open Date Range Picker"; - } - protected override void OnPickerClosed() - { - _firstDate = null; - base.OnPickerClosed(); - } - #endregion - -} diff --git a/src/Connected.Components/Components/Dialog/Dialog.razor b/src/Connected.Components/Components/Dialog/Dialog.razor deleted file mode 100644 index dfe47de..0000000 --- a/src/Connected.Components/Components/Dialog/Dialog.razor +++ /dev/null @@ -1,22 +0,0 @@ -@namespace Connected.Components - -@inherits UIComponent - -@*this makes dialog inlineable, it will only render inside a DialogInstance*@ -@if (!IsInline) -{ - - -
    - @DialogContent -
    - - @if (DialogActions != null) - { -
    - @DialogActions -
    - } - -
    -} diff --git a/src/Connected.Components/Components/Dialog/Dialog.razor.cs b/src/Connected.Components/Components/Dialog/Dialog.razor.cs deleted file mode 100644 index a3c5574..0000000 --- a/src/Connected.Components/Components/Dialog/Dialog.razor.cs +++ /dev/null @@ -1,210 +0,0 @@ -// License: MIT -// Copyright (c) 2019 Blazored - See https://github.com/Blazored -// Copyright (c) 2020 Jonny Larsson and Meinrad Recheis - -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class Dialog : UIComponent -{ - #region Variables - [CascadingParameter] private DialogInstance DialogInstance { get; set; } - [Inject] public IDialogService DialogService { get; set; } - private IDialogReference _reference; - #endregion - - #region Events - [Parameter] - [Category(CategoryTypes.Dialog.Behavior)] - public Action OnBackdropClick { get; set; } - - /// - /// Raised when the inline dialog's display status changes. - /// - [Parameter] public EventCallback IsVisibleChanged { get; set; } - #endregion - - #region Content - - /// - /// Define the dialog title as a renderfragment (overrides GlyphTitle) - /// - [Parameter] - [Category(CategoryTypes.Dialog.Behavior)] - public DefaultFocus DefaultFocus { get; set; } - - /// - /// Define the dialog title as a renderfragment (overrides GlyphTitle) - /// - [Parameter] - [Category(CategoryTypes.Dialog.Behavior)] - public RenderFragment TitleContent { get; set; } - - /// - /// Define the dialog body here - /// - [Parameter] - [Category(CategoryTypes.Dialog.Behavior)] - public RenderFragment DialogContent { get; set; } - - /// - /// Define the action buttons here - /// - [Parameter] - [Category(CategoryTypes.Dialog.Behavior)] - public RenderFragment DialogActions { get; set; } - #endregion - - #region Styling - /// - /// No padding at the sides - /// - [Parameter] - [Category(CategoryTypes.Dialog.Appearance)] - public bool DisableSidePadding { get; set; } - /// - /// CSS class that will be applied to the dialog content - /// - [Parameter] - [Category(CategoryTypes.Dialog.Appearance)] - public string ClassContent { get; set; } - - /// - /// CSS class that will be applied to the action buttons container - /// - [Parameter] - [Category(CategoryTypes.Dialog.Appearance)] - public string ClassActions { get; set; } - - /// - /// CSS styles to be applied to the dialog content - /// - [Parameter] - [Category(CategoryTypes.Dialog.Appearance)] - public string ContentStyle { get; set; } - - /// - /// Bind this two-way to show and close an inlined dialog. Has no effect on opened dialogs - /// - [Parameter] - [Category(CategoryTypes.Dialog.Behavior)] - public bool IsVisible - { - get => _isVisible; - set - { - if (_isVisible == value) - return; - _isVisible = value; - IsVisibleChanged.InvokeAsync(value); - } - } - private bool _isVisible; - protected string ContentClass => new CssBuilder("dialog-content") - .AddClass($"dialog-no-side-padding", DisableSidePadding) - .AddClass(ClassContent) - .Build(); - - protected string ActionClass => new CssBuilder("dialog-actions") - .AddClass(ClassActions) - .Build(); - #endregion - - #region Behavior - /// - /// Used for forwarding state changes from inlined dialog to its instance - /// - internal void ForceUpdate() - { - StateHasChanged(); - } - - /// - /// Default options to pass to Show(), if none are explicitly provided. - /// Typically useful on inline dialogs. - /// - [Parameter] - [Category(CategoryTypes.Dialog.Misc)] // Behavior and Appearance - public DialogOptions Options { get; set; } - - /// - /// Close the currently open inlined dialog - /// - /// - public void Close(DialogResult result = null) - { - if (!IsInline || _reference == null) - return; - _reference.Close(result); - _reference = null; - } - - private bool IsInline => DialogInstance == null; - - #endregion - - #region Lifecycle - - protected override void OnInitialized() - { - base.OnInitialized(); - DialogInstance?.Register(this); - } - - /// - /// Show this inlined dialog - /// - /// - /// - /// - public IDialogReference Show(string title = null, DialogOptions options = null) - { - if (!IsInline) - throw new InvalidOperationException("You can only show an inlined dialog."); - if (_reference != null) - Close(); - var parameters = new DialogParameters() - { - [nameof(AdditionalClassList)] = AdditionalClassList, - [nameof(Tag)] = Tag, - [nameof(TitleContent)] = TitleContent, - [nameof(DialogContent)] = DialogContent, - [nameof(DialogActions)] = DialogActions, - [nameof(DisableSidePadding)] = DisableSidePadding, - [nameof(ClassContent)] = ClassContent, - [nameof(ClassActions)] = ClassActions, - [nameof(ContentStyle)] = ContentStyle, - }; - _reference = DialogService.Show(title, parameters, options ?? Options); - _reference.Result.ContinueWith(t => - { - _isVisible = false; - InvokeAsync(() => IsVisibleChanged.InvokeAsync(false)); - }); - return _reference; - } - - protected override void OnAfterRender(bool firstRender) - { - if (IsInline) - { - if (_isVisible && _reference == null) - { - Show(); // if isVisible and we don't have any reference we need to call Show - } - else if (_reference != null) - { - if (IsVisible) - (_reference.Dialog as Dialog)?.ForceUpdate(); // forward render update to instance - else - Close(); // if we still have reference but it's not visible call Close - } - } - base.OnAfterRender(firstRender); - } - #endregion - -} diff --git a/src/Connected.Components/Components/Dialog/DialogInstance.razor b/src/Connected.Components/Components/Dialog/DialogInstance.razor deleted file mode 100644 index 7870629..0000000 --- a/src/Connected.Components/Components/Dialog/DialogInstance.razor +++ /dev/null @@ -1,28 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -
    - - -
    diff --git a/src/Connected.Components/Components/Dialog/DialogInstance.razor.cs b/src/Connected.Components/Components/Dialog/DialogInstance.razor.cs deleted file mode 100644 index 90e215b..0000000 --- a/src/Connected.Components/Components/Dialog/DialogInstance.razor.cs +++ /dev/null @@ -1,361 +0,0 @@ -// Copyright (c) 2019 Blazored -// Copyright (c) 2020 Adapted by Jonny Larsson, Meinrad Recheis and Contributors - -using Connected.Annotations; -using Connected.Extensions; -using Connected.Services; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -public partial class DialogInstance : UIComponent, IDisposable -{ - #region Variables - private DialogOptions _options = new(); - private string _elementId = "dialog_" + Guid.NewGuid().ToString().Substring(0, 8); - private IKeyInterceptor _keyInterceptor; - [Inject] private IKeyInterceptorFactory _keyInterceptorFactory { get; set; } - [CascadingParameter] private DialogProvider Parent { get; set; } - [CascadingParameter] private DialogOptions GlobalDialogOptions { get; set; } = new DialogOptions(); - private Dialog _dialog; - private bool _disposedValue; - #endregion - - #region Events - private void HandleBackgroundClick() - { - if (DisableBackdropClick) - return; - - if (_dialog?.OnBackdropClick == null) - { - Cancel(); - return; - } - - _dialog?.OnBackdropClick.Invoke(); - } - - /// - /// Cancels all dialogs in dialog provider collection. - /// - public void CancelAll() - { - Parent?.DismissAll(); - } - - public void Register(Dialog dialog) - { - if (dialog == null) - return; - _dialog = dialog; - //AdditionalClassList = dialog.AdditionalClassList; - TitleContent = dialog.TitleContent; - StateHasChanged(); - } - #endregion - - #region Content - [Parameter] - [Category(CategoryTypes.Dialog.Behavior)] - public string Title { get; set; } - - [Parameter] - [Category(CategoryTypes.Dialog.Behavior)] - public RenderFragment TitleContent { get; set; } - - [Parameter] - [Category(CategoryTypes.Dialog.Behavior)] - public RenderFragment Content { get; set; } - [Parameter] - [Category(CategoryTypes.Dialog.Behavior)] - public Guid Id { get; set; } - #endregion - - #region Styling - public void ForceRender() - { - StateHasChanged(); - } - private string SetPosition() - { - DialogPosition position; - - if (Options.Position.HasValue) - { - position = Options.Position.Value; - } - else if (GlobalDialogOptions.Position.HasValue) - { - position = GlobalDialogOptions.Position.Value; - } - else - { - position = DialogPosition.Center; - } - return $"dialog-{position.ToDescription()}"; - } - - - - private bool SetHideHeader() - { - if (Options.NoHeader.HasValue) - return Options.NoHeader.Value; - - if (GlobalDialogOptions.NoHeader.HasValue) - return GlobalDialogOptions.NoHeader.Value; - - return false; - } - - private bool SetCloseButton() - { - if (Options.CloseButton.HasValue) - return Options.CloseButton.Value; - - if (GlobalDialogOptions.CloseButton.HasValue) - return GlobalDialogOptions.CloseButton.Value; - - return false; - } - - private bool SetDisableBackdropClick() - { - if (Options.DisableBackdropClick.HasValue) - return Options.DisableBackdropClick.Value; - - if (GlobalDialogOptions.DisableBackdropClick.HasValue) - return GlobalDialogOptions.DisableBackdropClick.Value; - - return false; - } - - private bool SetCloseOnEscapeKey() - { - if (Options.CloseOnEscapeKey.HasValue) - return Options.CloseOnEscapeKey.Value; - - if (GlobalDialogOptions.CloseOnEscapeKey.HasValue) - return GlobalDialogOptions.CloseOnEscapeKey.Value; - - return false; - } - private string SetMaxWidth() - { - MaxWidth maxWidth; - - if (Options.MaxWidth.HasValue) - { - maxWidth = Options.MaxWidth.Value; - } - else if (GlobalDialogOptions.MaxWidth.HasValue) - { - maxWidth = GlobalDialogOptions.MaxWidth.Value; - } - else - { - maxWidth = MaxWidth.Small; - } - return $"dialog-width-{maxWidth.ToDescription()}"; - } - - private bool SetFullWidth() - { - if (Options.FullWidth.HasValue) - return Options.FullWidth.Value; - - if (GlobalDialogOptions.FullWidth.HasValue) - return GlobalDialogOptions.FullWidth.Value; - - return false; - } - - private bool SetFulScreen() - { - if (Options.FullScreen.HasValue) - return Options.FullScreen.Value; - - if (GlobalDialogOptions.FullScreen.HasValue) - return GlobalDialogOptions.FullScreen.Value; - - return false; - } - - protected string Classname => - new CssBuilder("dialog") - .AddClass(DialogMaxWidth, !FullScreen) - .AddClass("dialog-width-full", FullWidth && !FullScreen) - .AddClass("dialog-fullscreen", FullScreen) - .AddClass("dialog-rtl", RightToLeft) - .AddClass(_dialog?.AdditionalClassList) - .Build(); - - /// - /// Custom close icon. - /// - [Parameter] - [Category(CategoryTypes.Dialog.Appearance)] - public string CloseIcon { get; set; } = Icons.Material.Filled.Close; - - private string Position { get; set; } - private string DialogMaxWidth { get; set; } - private bool DisableBackdropClick { get; set; } - private bool CloseOnEscapeKey { get; set; } - private bool NoHeader { get; set; } - private bool CloseButton { get; set; } - private bool FullScreen { get; set; } - private bool FullWidth { get; set; } - [CascadingParameter(Name = "RightToLeft")] public bool RightToLeft { get; set; } - [Parameter] - [Category(CategoryTypes.Dialog.Misc)] // Behavior and Appearance - public DialogOptions Options - { - get - { - if (_options == null) - _options = new DialogOptions(); - return _options; - } - set => _options = value; - } - #endregion - - #region Behavior - internal void HandleKeyDown(KeyboardEventArgs args) - { - switch (args.Key) - { - case "Escape": - if (CloseOnEscapeKey) - { - Cancel(); - } - break; - } - } - - public void SetOptions(DialogOptions options) - { - Options = options; - ConfigureInstance(); - StateHasChanged(); - } - - public void SetTitle(string title) - { - Title = title; - StateHasChanged(); - } - - /// - /// Close and return null. - /// - /// This is a shorthand of Close(DialogResult.Ok((object)null)); - /// - public void Close() - { - Close(DialogResult.Ok(null)); - } - - /// - /// Close with dialog result. - /// - /// Usage: Close(DialogResult.Ok(returnValue)) - /// - public void Close(DialogResult dialogResult) - { - Parent.DismissInstance(Id, dialogResult); - } - - /// - /// Close and directly pass a return value. - /// - /// This is a shorthand for Close(DialogResult.Ok(returnValue)) - /// - /// - /// - public void Close(T returnValue) - { - var dialogResult = DialogResult.Ok(returnValue); - Parent.DismissInstance(Id, dialogResult); - } - - /// - /// Cancel the dialog. DialogResult.Cancelled will be set to true - /// - public void Cancel() - { - Close(DialogResult.Cancel()); - } - - private void ConfigureInstance() - { - Position = SetPosition(); - DialogMaxWidth = SetMaxWidth(); - NoHeader = SetHideHeader(); - CloseButton = SetCloseButton(); - FullWidth = SetFullWidth(); - FullScreen = SetFulScreen(); - DisableBackdropClick = SetDisableBackdropClick(); - CloseOnEscapeKey = SetCloseOnEscapeKey(); - //AdditionalClassList = Classname; - } - - #endregion - - #region Lifecycle - protected override void OnInitialized() - { - ConfigureInstance(); - } - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - if (firstRender) - { - //Since CloseOnEscapeKey is the only thing to be handled, turn interceptor off - if (CloseOnEscapeKey) - { - _keyInterceptor = _keyInterceptorFactory.Create(); - - await _keyInterceptor.Connect(_elementId, new KeyInterceptorOptions() - { - TargetClass = "dialog", - Keys = { - new KeyOptions { Key="Escape", SubscribeDown = true }, - }, - }); - _keyInterceptor.KeyDown += HandleKeyDown; - } - } - await base.OnAfterRenderAsync(firstRender); - } - - protected virtual void Dispose(bool disposing) - { - if (!_disposedValue) - { - if (disposing) - { - if (_keyInterceptor != null) - { - _keyInterceptor.KeyDown -= HandleKeyDown; - _keyInterceptor.Dispose(); - } - } - - _disposedValue = true; - } - } - - public void Dispose() - { - Dispose(disposing: true); - GC.SuppressFinalize(this); - } - #endregion - -} diff --git a/src/Connected.Components/Components/Dialog/DialogOptions.cs b/src/Connected.Components/Components/Dialog/DialogOptions.cs deleted file mode 100644 index d95fe31..0000000 --- a/src/Connected.Components/Components/Dialog/DialogOptions.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) 2020 Jonny Larsson -// License: MIT -// See https://github.com/MudBlazor/MudBlazor -// Modified version of Blazored Modal -// Copyright (c) 2019 Blazored -// License: MIT -// See https://github.com/Blazored - - -using System.ComponentModel; - -namespace Connected.Components; - -public class DialogOptions -{ - public DialogPosition? Position { get; set; } - - public MaxWidth? MaxWidth { get; set; } - - public bool? DisableBackdropClick { get; set; } - public bool? CloseOnEscapeKey { get; set; } - public bool? NoHeader { get; set; } - public bool? CloseButton { get; set; } - public bool? FullScreen { get; set; } - public bool? FullWidth { get; set; } -} - -public enum DialogPosition -{ - [Description("center")] - Center, - [Description("centerleft")] - CenterLeft, - [Description("centerright")] - CenterRight, - [Description("topcenter")] - TopCenter, - [Description("topleft")] - TopLeft, - [Description("topright")] - TopRight, - [Description("bottomcenter")] - BottomCenter, - [Description("bottomleft")] - BottomLeft, - [Description("bottomright")] - BottomRight, - [Description("custom")] - Custom -} diff --git a/src/Connected.Components/Components/Dialog/DialogParameters.cs b/src/Connected.Components/Components/Dialog/DialogParameters.cs deleted file mode 100644 index 8e26c09..0000000 --- a/src/Connected.Components/Components/Dialog/DialogParameters.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) 2019 - Blazored -// Copyright (c) 2020 - Adaptations by Jonny Larsson and Meinrad Recheis - -using System.Collections; - -namespace Connected.Components; - -public class DialogParameters : IEnumerable> -{ - internal Dictionary _parameters; - - public DialogParameters() - { - _parameters = new Dictionary(); - } - - public void Add(string parameterName, object value) - { - _parameters[parameterName] = value; - } - - public T Get(string parameterName) - { - if (_parameters.TryGetValue(parameterName, out var value)) - { - return (T)value; - } - - throw new KeyNotFoundException($"{parameterName} does not exist in Dialog parameters"); - } - - public T TryGet(string parameterName) - { - if (_parameters.TryGetValue(parameterName, out var value)) - { - return (T)value; - } - - return default; - } - - public int Count => - _parameters.Count; - - public object this[string parameterName] - { - get => Get(parameterName); - set => _parameters[parameterName] = value; - } - - public IEnumerator> GetEnumerator() - { - return _parameters.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return _parameters.GetEnumerator(); - } -} diff --git a/src/Connected.Components/Components/Dialog/DialogProvider.razor b/src/Connected.Components/Components/Dialog/DialogProvider.razor deleted file mode 100644 index dd899a7..0000000 --- a/src/Connected.Components/Components/Dialog/DialogProvider.razor +++ /dev/null @@ -1,10 +0,0 @@ -@namespace Connected.Components - - - - @foreach (var dialogReference in _dialogs.Where(x => !x.Result.IsCompleted)) - { - @dialogReference.RenderFragment - } - - diff --git a/src/Connected.Components/Components/Dialog/DialogProvider.razor.cs b/src/Connected.Components/Components/Dialog/DialogProvider.razor.cs deleted file mode 100644 index c72afc6..0000000 --- a/src/Connected.Components/Components/Dialog/DialogProvider.razor.cs +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (c) 2020 Jonny Larsson -// License: MIT -// See https://github.com/MudBlazor/MudBlazor -// Modified version of Blazored Modal -// Copyright (c) 2019 Blazored -// License: MIT -// See https://github.com/Blazored - -using System.Collections.ObjectModel; -using Connected.Annotations; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Routing; - -namespace Connected.Components; - -public partial class DialogProvider : IDisposable -{ - - #region Variables - [Inject] private IDialogService DialogService { get; set; } - [Inject] private NavigationManager NavigationManager { get; set; } - [Parameter][Category(CategoryTypes.Dialog.Behavior)] public bool? NoHeader { get; set; } - [Parameter][Category(CategoryTypes.Dialog.Behavior)] public bool? CloseButton { get; set; } - [Parameter][Category(CategoryTypes.Dialog.Behavior)] public bool? DisableBackdropClick { get; set; } - [Parameter][Category(CategoryTypes.Dialog.Behavior)] public bool? CloseOnEscapeKey { get; set; } - [Parameter][Category(CategoryTypes.Dialog.Appearance)] public bool? FullWidth { get; set; } - [Parameter][Category(CategoryTypes.Dialog.Appearance)] public DialogPosition? Position { get; set; } - [Parameter][Category(CategoryTypes.Dialog.Appearance)] public MaxWidth? MaxWidth { get; set; } - - private readonly Collection _dialogs = new(); - private readonly DialogOptions _globalDialogOptions = new(); - #endregion - - #region Events - private void AddInstance(IDialogReference dialog) - { - _dialogs.Add(dialog); - StateHasChanged(); - } - internal void DismissInstance(Guid id, DialogResult result) - { - var reference = GetDialogReference(id); - if (reference != null) - DismissInstance(reference, result); - } - - public void DismissAll() - { - _dialogs.ToList().ForEach(r => DismissInstance(r, DialogResult.Cancel())); - StateHasChanged(); - } - - private void DismissInstance(IDialogReference dialog, DialogResult result) - { - if (!dialog.Dismiss(result)) return; - - _dialogs.Remove(dialog); - StateHasChanged(); - } - - private IDialogReference GetDialogReference(Guid id) - { - return _dialogs.SingleOrDefault(x => x.Id == id); - } - - private void LocationChanged(object sender, LocationChangedEventArgs args) - { - DismissAll(); - } - #endregion - - #region Lifecycle - protected override void OnInitialized() - { - DialogService.OnDialogInstanceAdded += AddInstance; - DialogService.OnDialogCloseRequested += DismissInstance; - NavigationManager.LocationChanged += LocationChanged; - - _globalDialogOptions.DisableBackdropClick = DisableBackdropClick; - _globalDialogOptions.CloseOnEscapeKey = CloseOnEscapeKey; - _globalDialogOptions.CloseButton = CloseButton; - _globalDialogOptions.NoHeader = NoHeader; - _globalDialogOptions.Position = Position; - _globalDialogOptions.FullWidth = FullWidth; - _globalDialogOptions.MaxWidth = MaxWidth; - } - - protected override Task OnAfterRenderAsync(bool firstRender) - { - if (!firstRender) - { - foreach (var dialogReference in _dialogs.Where(x => !x.Result.IsCompleted)) - { - dialogReference.RenderCompleteTaskCompletionSource.TrySetResult(true); - } - } - - return base.OnAfterRenderAsync(firstRender); - } - - public void Dispose() - { - if (NavigationManager != null) - NavigationManager.LocationChanged -= LocationChanged; - - if (DialogService != null) - { - DialogService.OnDialogInstanceAdded -= AddInstance; - DialogService.OnDialogCloseRequested -= DismissInstance; - } - } - - #endregion - -} diff --git a/src/Connected.Components/Components/Dialog/DialogReference.cs b/src/Connected.Components/Components/Dialog/DialogReference.cs deleted file mode 100644 index 6b9732e..0000000 --- a/src/Connected.Components/Components/Dialog/DialogReference.cs +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) 2019 Blazored (https://github.com/Blazored) -// Copyright (c) 2020 Jonny Larsson (https://github.com/MudBlazor/MudBlazor) -// Copyright (c) 2021 improvements by Meinrad Recheis -// See https://github.com/Blazored -// License: MIT - -using System.Diagnostics; -using System.Diagnostics.CodeAnalysis; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public class DialogReference : IDialogReference -{ - private readonly TaskCompletionSource _resultCompletion = new(); - - private readonly IDialogService _dialogService; - - public DialogReference(Guid dialogInstanceId, IDialogService dialogService) - { - Id = dialogInstanceId; - _dialogService = dialogService; - } - - public void Close() - { - _dialogService.Close(this); - } - - public void Close(DialogResult result) - { - _dialogService.Close(this, result); - } - - public virtual bool Dismiss(DialogResult result) - { - return _resultCompletion.TrySetResult(result); - } - - public Guid Id { get; } - - public object Dialog { get; private set; } - public RenderFragment RenderFragment { get; set; } - - public Task Result => _resultCompletion.Task; - - TaskCompletionSource IDialogReference.RenderCompleteTaskCompletionSource { get; } = new(); - - public void InjectDialog(object inst) - { - Dialog = inst; - } - - public void InjectRenderFragment(RenderFragment rf) - { - RenderFragment = rf; - } - - public async Task GetReturnValueAsync<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>() - { - var result = await Result; - try - { - return (T)result.Data; - } - catch (InvalidCastException) - { - Debug.WriteLine($"Could not cast return value to {typeof(T)}, returning default."); - return default; - } - } - -} diff --git a/src/Connected.Components/Components/Dialog/IDialogReference.cs b/src/Connected.Components/Components/Dialog/IDialogReference.cs deleted file mode 100644 index cf9e088..0000000 --- a/src/Connected.Components/Components/Dialog/IDialogReference.cs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) 2019 Blazored (https://github.com/Blazored) -// Copyright (c) 2020 Jonny Larsson (https://github.com/MudBlazor/MudBlazor) -// Copyright (c) 2021 improvements by Meinrad Recheis -// See https://github.com/Blazored -// License: MIT - -using System.Diagnostics.CodeAnalysis; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public interface IDialogReference -{ - Guid Id { get; } - - RenderFragment RenderFragment { get; set; } - - [Obsolete("This will always return true"), ExcludeFromCodeCoverage] - bool AreParametersRendered { get => true; set { } } - - Task Result { get; } - - internal TaskCompletionSource RenderCompleteTaskCompletionSource { get; } - - void Close(); - - void Close(DialogResult result); - - bool Dismiss(DialogResult result); - - object Dialog { get; } - - void InjectRenderFragment(RenderFragment rf); - - void InjectDialog(object inst); - - Task GetReturnValueAsync<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(); -} diff --git a/src/Connected.Components/Components/Dialog/IDialogService.cs b/src/Connected.Components/Components/Dialog/IDialogService.cs deleted file mode 100644 index cf138c2..0000000 --- a/src/Connected.Components/Components/Dialog/IDialogService.cs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) 2019 Blazored (https://github.com/Blazored) -// Copyright (c) 2020 Jonny Larsson (https://github.com/MudBlazor/MudBlazor) -// Copyright (c) 2021 improvements by Meinrad Recheis -// See https://github.com/Blazored -// License: MIT - - -using System.Diagnostics.CodeAnalysis; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public interface IDialogService -{ - public event Action OnDialogInstanceAdded; - public event Action OnDialogCloseRequested; - - IDialogReference Show<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TComponent>() where TComponent : ComponentBase; - - IDialogReference Show<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TComponent>(string title) where TComponent : ComponentBase; - - IDialogReference Show<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TComponent>(string title, DialogOptions options) where TComponent : ComponentBase; - - IDialogReference Show<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TComponent>(string title, DialogParameters parameters) where TComponent : ComponentBase; - - IDialogReference Show<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TComponent>(string title, DialogParameters parameters, DialogOptions options) where TComponent : ComponentBase; - - IDialogReference Show([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type component); - - IDialogReference Show([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type component, string title); - - IDialogReference Show([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type component, string title, DialogOptions options); - - IDialogReference Show([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type component, string title, DialogParameters parameters); - - IDialogReference Show([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type component, string title, DialogParameters parameters, DialogOptions options); - - Task ShowAsync<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TComponent>() where TComponent : ComponentBase; - - Task ShowAsync<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TComponent>(string title) where TComponent : ComponentBase; - - Task ShowAsync<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TComponent>(string title, DialogOptions options) where TComponent : ComponentBase; - - Task ShowAsync<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TComponent>(string title, DialogParameters parameters) where TComponent : ComponentBase; - - Task ShowAsync<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TComponent>(string title, DialogParameters parameters, DialogOptions options) where TComponent : ComponentBase; - - Task ShowAsync([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type component); - - Task ShowAsync([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type component, string title); - - Task ShowAsync([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type component, string title, DialogOptions options); - - Task ShowAsync([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type component, string title, DialogParameters parameters); - - Task ShowAsync([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type component, string title, DialogParameters parameters, DialogOptions options); - - IDialogReference CreateReference(); - - Task ShowMessageBox(string title, string message, string yesText = "OK", - string noText = null, string cancelText = null, DialogOptions options = null); - - Task ShowMessageBox(string title, MarkupString markupMessage, string yesText = "OK", - string noText = null, string cancelText = null, DialogOptions options = null); - - Task ShowMessageBox(MessageBoxOptions messageBoxOptions, DialogOptions options = null); - - void Close(DialogReference dialog); - - void Close(DialogReference dialog, DialogResult result); -} diff --git a/src/Connected.Components/Components/Divider/Divider.razor b/src/Connected.Components/Components/Divider/Divider.razor deleted file mode 100644 index 5e7fb2c..0000000 --- a/src/Connected.Components/Components/Divider/Divider.razor +++ /dev/null @@ -1,4 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -
    \ No newline at end of file diff --git a/src/Connected.Components/Components/Divider/Divider.razor.cs b/src/Connected.Components/Components/Divider/Divider.razor.cs deleted file mode 100644 index 15a8007..0000000 --- a/src/Connected.Components/Components/Divider/Divider.razor.cs +++ /dev/null @@ -1,56 +0,0 @@ -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; -public partial class Divider : UIComponent -{ - #region Styling - protected string Classname => - new CssBuilder("divider") - .AddClass($"divider-absolute", Absolute) - .AddClass($"divider-flexitem", FlexItem) - .AddClass($"divider-light", Light) - .AddClass($"divider-vertical", Vertical) - .AddClass($"divider-{DividerType.ToDescription()}", when: () => DividerType != DividerType.FullWidth) - .AddClass(AdditionalClassList) - .Build(); - - /// - /// Sets absolute position to the component. - /// - [Parameter] - [Category(CategoryTypes.Divider.Appearance)] - public bool Absolute { get; set; } - - /// - /// If true, a vertical divider will have the correct height when used in flex container. - /// - [Parameter] - [Category(CategoryTypes.Divider.Appearance)] - public bool FlexItem { get; set; } - - /// - /// If true, the divider will have a lighter color. - /// - [Parameter] - [Category(CategoryTypes.Divider.Appearance)] - public bool Light { get; set; } - - /// - /// If true, the divider is displayed vertically. - /// - [Parameter] - [Category(CategoryTypes.Divider.Appearance)] - public bool Vertical { get; set; } - - /// - /// The Divider type to use. - /// - [Parameter] - [Category(CategoryTypes.Divider.Appearance)] - public DividerType DividerType { get; set; } = DividerType.FullWidth; - - #endregion -} diff --git a/src/Connected.Components/Components/Drawer/Drawer.razor b/src/Connected.Components/Components/Drawer/Drawer.razor deleted file mode 100644 index 967cfa2..0000000 --- a/src/Connected.Components/Components/Drawer/Drawer.razor +++ /dev/null @@ -1,22 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -@if (_screenBreakpoint.ToString().ToLower() != "xs") -{ - - -} else { - - - @ChildContent - - - -} \ No newline at end of file diff --git a/src/Connected.Components/Components/Drawer/Drawer.razor.cs b/src/Connected.Components/Components/Drawer/Drawer.razor.cs deleted file mode 100644 index 6d4faea..0000000 --- a/src/Connected.Components/Components/Drawer/Drawer.razor.cs +++ /dev/null @@ -1,453 +0,0 @@ -using Connected.Extensions; -using Connected.Services; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class Drawer : UIComponent, IDisposable, INavigationEventReceiver -{ - #region Variables - private double _height; - private ElementReference _contentRef; - private DrawerClipMode _clipMode; - private bool? _isOpenWhenLarge = null; - private bool _open; - private bool _rtl; - private bool _isRendered; - private bool _initial = true; - private bool _keepInitialState; - private bool _fixed = true; - private Breakpoint _breakpoint = Breakpoint.Md; - private Breakpoint _screenBreakpoint = Breakpoint.None; - private Guid _breakpointListenerSubscriptionId; - - #endregion - - #region Events - private void CloseDrawer() - { - if (Open) - { - OpenChanged.InvokeAsync(false); - } - } - - [Parameter] public EventCallback OpenChanged { get; set; } - - public async Task OnNavigation() - { - if (Variant == DrawerVariant.Temporary || - (Variant == DrawerVariant.Responsive && await Breakpointistener.GetBreakpoint() < Breakpoint)) - { - await OpenChanged.InvokeAsync(false); - } - } - - private void ResizeListener_OnBreakpointChanged(object sender, Breakpoint breakpoint) - { - if (!_isRendered) - return; - - InvokeAsync(() => UpdateBreakpointState(breakpoint)); - } - - private async void UpdateBreakpointState(Breakpoint breakpoint) - { - var isStateChanged = false; - if (breakpoint == Breakpoint.None) - { - breakpoint = await Breakpointistener.GetBreakpoint(); - } - - if (breakpoint < Breakpoint && _screenBreakpoint >= Breakpoint && (Variant == DrawerVariant.Responsive || Variant == DrawerVariant.Mini)) - { - _isOpenWhenLarge = Open; - - await OpenChanged.InvokeAsync(false); - isStateChanged = true; - } - else if (breakpoint >= Breakpoint && _screenBreakpoint < Breakpoint && (Variant == DrawerVariant.Responsive || Variant == DrawerVariant.Mini)) - { - if (Open && PreserveOpenState) - { - DrawerContainer?.FireDrawersChanged(); - isStateChanged = true; - } - else if (_isOpenWhenLarge != null) - { - await OpenChanged.InvokeAsync(_isOpenWhenLarge.Value); - _isOpenWhenLarge = null; - isStateChanged = true; - } - } - - if (_breakpoint != _screenBreakpoint) - { - isStateChanged = true; - } - _screenBreakpoint = breakpoint; - - if (isStateChanged) - { - StateHasChanged(); - } - } - - internal string GetPosition() - { - switch (Anchor) - { - case Anchor.Start: - return RightToLeft ? "right" : "left"; - case Anchor.End: - return RightToLeft ? "left" : "right"; - default: break; - } - - return Anchor.ToDescription(); - } - - private bool closeOnMouseLeave = false; - - public async void OnMouseEnter() - { - if (Variant == DrawerVariant.Mini && !Open && OpenMiniOnHover) - { - closeOnMouseLeave = true; - await OpenChanged.InvokeAsync(true); - } - } - - public async void OnMouseLeave() - { - if (Variant == DrawerVariant.Mini && Open && closeOnMouseLeave) - { - closeOnMouseLeave = false; - await OpenChanged.InvokeAsync(false); - } - } - - #endregion - - #region Content placeholders - - /// - /// Child content of component. - /// - [Parameter] - public RenderFragment ChildContent { get; set; } - - [CascadingParameter] DrawerContainer DrawerContainer { get; set; } - - [Inject] public IBreakpointService Breakpointistener { get; set; } - - [CascadingParameter(Name = "RightToLeft")] - bool RightToLeft - { - get => _rtl; - set - { - if (_rtl != value) - { - _rtl = value; - DrawerContainer?.FireDrawersChanged(); - } - } - } - - #endregion - - #region Styling properties - - //old - public CssBuilder CompiledClassList - { - get - { - return new CssBuilder("drawer") - .AddClass($"drawer-fixed", Fixed) - .AddClass($"drawer-pos-{GetPosition()}") - .AddClass($"drawer--open", Open) - .AddClass($"drawer--closed", !Open) - .AddClass($"drawer--initial", _initial) - .AddClass($"drawer-{Breakpoint.ToDescription()}") - .AddClass($"drawer-clipped-{_clipMode.ToDescription()}") - .AddClass($"theme-{Color.ToDescription()}", Color != ThemeColor.Default) - .AddClass($"elevation-{Elevation}") - .AddClass($"drawer-{Variant.ToDescription()}") - .AddClass(ClassList); - } - } - - protected StyleBuilder CompiledStyleList - { - get - { - return new StyleBuilder() - .AddStyle(StyleList?? "") - .AddStyle("width", Width, !string.IsNullOrWhiteSpace(Width) && !Fixed) - .AddStyle("drawer-width", Width, !string.IsNullOrWhiteSpace(Width) && (!Fixed || Variant == DrawerVariant.Temporary)) - .AddStyle("height", Height, !string.IsNullOrWhiteSpace(Height)) - .AddStyle("drawer-content-height", string.IsNullOrWhiteSpace(Height) ? _height.ToPx() : Height, Anchor == Anchor.Bottom || Anchor == Anchor.Top) - .AddStyle("visibility", "hidden", string.IsNullOrWhiteSpace(Height) && _height == 0 && (Anchor == Anchor.Bottom || Anchor == Anchor.Top)); - - } - } - - protected CssBuilder CompiledOverlayClass - { - get - { - return new CssBuilder("drawer-overlay") - .AddClass($"drawer-pos-{GetPosition()}") - .AddClass($"drawer-overlay--open", Open) - .AddClass($"drawer-overlay-{Variant.ToDescription()}") - .AddClass($"drawer-overlay-{Breakpoint.ToDescription()}") - .AddClass($"drawer-overlay--initial", _initial); - } - } - - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? ClassList { get; set; } - - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? StyleList { get; set; } - - /// - /// If true, drawer position will be fixed. (CSS position: fixed;) - /// - [Parameter] - public bool Fixed - { - get => _fixed && DrawerContainer is Layout; - set - { - if (_fixed == value) - return; - _fixed = value; - } - } - - /// - /// The higher the number, the heavier the drop-shadow. 0 for no shadow. - /// - [Parameter] - public int Elevation { set; get; } = 1; - - /// - /// Side from which the drawer will appear. - /// - [Parameter] - public Anchor Anchor { get; set; } = Anchor.Start; - - - /// - /// The color of the component. It supports the theme colors. - /// - [Parameter] - public ThemeColor Color { get; set; } = ThemeColor.Default; - - - /// - /// Variant of the drawer. It specifies how the drawer will be displayed. - /// - [Parameter] - public DrawerVariant Variant { get; set; } = DrawerVariant.Responsive; - - - /// - /// Show overlay for responsive and temporary drawers. - /// - [Parameter] - public bool DisableOverlay { get; set; } = false; - - /// - /// Preserve open state for responsive drawer when window resized above . - /// - [Parameter] - public bool PreserveOpenState { get; set; } = false; - - /// - /// Open drawer automatically on mouse enter when parameter is set to . - /// - [Parameter] - public bool OpenMiniOnHover { get; set; } - - /// - /// Specify how the drawer should behave inside a MudLayout. It affects the position relative to MudAppbar - /// - [Parameter] - public DrawerClipMode ClipMode - { - get => _clipMode; - set - { - if (_clipMode == value) - { - return; - } - _clipMode = value; - if (Fixed) - { - DrawerContainer?.FireDrawersChanged(); - } - StateHasChanged(); - } - } - - private bool OverlayVisible => _open && !DisableOverlay && - (Variant == DrawerVariant.Temporary || - (_screenBreakpoint < Breakpoint && Variant == DrawerVariant.Mini) || - (_screenBreakpoint < Breakpoint && Variant == DrawerVariant.Responsive)); - - /// - /// Switching point for responsive drawers - /// - [Parameter] - public Breakpoint Breakpoint - { - get => _breakpoint; - set - { - if (value == _breakpoint) - return; - - _breakpoint = value; - if (_isRendered) - { - UpdateBreakpointState(_screenBreakpoint); - } - - DrawerContainer?.FireDrawersChanged(); - } - } - - /// - /// Sets the opened state on the drawer. Can be used with two-way binding to close itself on navigation. - /// - [Parameter] - public bool Open - { - get => _open; - set - { - if (_open == value) - { - return; - } - _open = value; - if (_isRendered && _initial && !_keepInitialState) - { - _initial = false; - } - if (_keepInitialState) - { - _keepInitialState = false; - } - /*if (_isRendered && value && (Anchor == Anchor.Top || Anchor == Anchor.Bottom)) - { - _ = UpdateHeight(); - }*/ - - DrawerContainer?.FireDrawersChanged(); - OpenChanged.InvokeAsync(_open); - } - } - - - /// - /// Width of left/right drawer. Only for non-fixed drawers. - /// - [Parameter] - public string Width { get; set; } - - /// - /// Width of left/right drawer. Only for non-fixed drawers. - /// - [Parameter] - public string MiniWidth { get; set; } - - /// - /// Height of top/bottom temporary drawer - /// - [Parameter] - public string Height { get; set; } - - - #endregion - - #region Lifecycle - - protected override void OnInitialized() - { - if (Variant != DrawerVariant.Temporary) - { - DrawerContainer?.Add(this); - } - base.OnInitialized(); - } - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - if (firstRender) - { - //await UpdateHeight(); - var result = await Breakpointistener.Subscribe(UpdateBreakpointState); - //var currentBreakpoint = result.Breakpoint; - - _breakpointListenerSubscriptionId = result.SubscriptionId; - - var refresh = false; - - if (_screenBreakpoint != result.Breakpoint) refresh = true; - _screenBreakpoint = result.Breakpoint; - if (_screenBreakpoint < Breakpoint && _open) - { - _keepInitialState = true; - await OpenChanged.InvokeAsync(false); - } - - _isRendered = true; - if (Anchor == Anchor.Bottom || Anchor == Anchor.Top || _screenBreakpoint == Breakpoint.None) - { - refresh = true; - } - if (refresh) StateHasChanged(); - } - - await base.OnAfterRenderAsync(firstRender); - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - int _disposeCount; - public virtual void Dispose(bool disposing) - { - if (Interlocked.Increment(ref _disposeCount) == 1) - { - if (disposing) - { - DrawerContainer?.Remove(this); - - if (_breakpointListenerSubscriptionId != default) - { - Breakpointistener.Unsubscribe(_breakpointListenerSubscriptionId).AndForget(); - } - } - } - } - - #endregion - -} diff --git a/src/Connected.Components/Components/Drawer/DrawerContainer.razor b/src/Connected.Components/Components/Drawer/DrawerContainer.razor deleted file mode 100644 index 4dec4c6..0000000 --- a/src/Connected.Components/Components/Drawer/DrawerContainer.razor +++ /dev/null @@ -1,8 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -
    - - @ChildContent - -
    diff --git a/src/Connected.Components/Components/Drawer/DrawerContainer.razor.cs b/src/Connected.Components/Components/Drawer/DrawerContainer.razor.cs deleted file mode 100644 index 2ccb8cd..0000000 --- a/src/Connected.Components/Components/Drawer/DrawerContainer.razor.cs +++ /dev/null @@ -1,163 +0,0 @@ -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class DrawerContainer : UIComponent -{ - #region Variables - protected bool Fixed { get; set; } = false; - private List _drawers = new(); - #endregion - - #region Events - - internal void FireDrawersChanged() => StateHasChanged(); - - internal void Add(Drawer drawer) - { - if (Fixed && !drawer.Fixed) - return; - - _drawers.Add(drawer); - StateHasChanged(); - } - - internal void Remove(Drawer drawer) - { - _drawers.Remove(drawer); - StateHasChanged(); - } - - #endregion - - #region Content - - [CascadingParameter(Name = "RightToLeft")] public bool RightToLeft { get; set; } - - [Parameter] - public RenderFragment ChildContent { get; set; } - - private string GetDrawerClass(Drawer drawer) - { - - if (drawer == null) - return string.Empty; - else return drawer.CompiledClassList.Build(); - - /*var className = $"drawer-{(drawer.Open ? "open" : "close")}-{drawer.Variant.ToDescription()}"; - if (drawer.Variant is DrawerVariant.Responsive or DrawerVariant.Mini) - { - className += $"-{drawer.Breakpoint.ToDescription()}"; - } - className += $"-{drawer.GetPosition()}"; - - className += $"drawer-{drawer.GetPosition()}-clipped-{drawer.ClipMode.ToDescription()}"; - - return className;*/ - } - - private Drawer FindLeftDrawer() - { - var anchor = RightToLeft ? Anchor.End : Anchor.Start; - return _drawers.FirstOrDefault(d => d.Anchor == anchor || d.Anchor == Anchor.Left); - } - - private Drawer FindRightDrawer() - { - var anchor = RightToLeft ? Anchor.Start : Anchor.End; - return _drawers.FirstOrDefault(d => d.Anchor == anchor || d.Anchor == Anchor.Right); - } - - private Drawer FindLeftMiniDrawer() - { - var anchor = RightToLeft ? Anchor.End : Anchor.Start; - return _drawers.FirstOrDefault(d => d.Variant == DrawerVariant.Mini && (d.Anchor == anchor || d.Anchor == Anchor.Left)); - } - - private Drawer FindRightMiniDrawer() - { - var anchor = RightToLeft ? Anchor.Start : Anchor.End; - return _drawers.FirstOrDefault(d => d.Variant == DrawerVariant.Mini && (d.Anchor == anchor || d.Anchor == Anchor.Right)); - } - - private string GetDrawerWidth(Drawer drawer) - { - if (drawer == null) - return string.Empty; - - return drawer.Width; - } - - private string GetMiniDrawerWidth(Drawer drawer) - { - if (drawer == null) - return string.Empty; - - return drawer.Width; - } - - #endregion - - #region Styling - - protected virtual CssBuilder CompiledClassList - { - get - { - return new CssBuilder() - .AddClass(GetDrawerClass(FindLeftDrawer())) - .AddClass(GetDrawerClass(FindRightDrawer())) - .AddClass(ClassList); - } - } - - /* - protected virtual string Classname => - new CssBuilder() - /*.AddClass(GetDrawerClass(FindLeftDrawer())) - .AddClass(GetDrawerClass(FindRightDrawer())) - .AddClass(ClassList) - .Build(); - - protected string Stylename => - new StyleBuilder() - .AddStyle(StyleList) - .AddStyle("--mud-drawer-width-left", GetDrawerWidth(FindLeftDrawer()), !string.IsNullOrEmpty(GetDrawerWidth(FindLeftDrawer()))) - .AddStyle("--mud-drawer-width-right", GetDrawerWidth(FindRightDrawer()), !string.IsNullOrEmpty(GetDrawerWidth(FindRightDrawer()))) - .AddStyle("--mud-drawer-width-mini-left", GetMiniDrawerWidth(FindLeftMiniDrawer()), !string.IsNullOrEmpty(GetMiniDrawerWidth(FindLeftMiniDrawer()))) - .AddStyle("--mud-drawer-width-mini-right", GetMiniDrawerWidth(FindRightMiniDrawer()), !string.IsNullOrEmpty(GetMiniDrawerWidth(FindRightMiniDrawer()))) - .Build();*/ - - protected virtual StyleBuilder CompiledStyleList - { - get - { - return new StyleBuilder() - .AddStyle(StyleList) - .AddStyle("drawer-width-left", GetDrawerWidth(FindLeftDrawer()), !string.IsNullOrEmpty(GetDrawerWidth(FindLeftDrawer()))) - .AddStyle("drawer-width-right", GetDrawerWidth(FindRightDrawer()), !string.IsNullOrEmpty(GetDrawerWidth(FindRightDrawer()))) - .AddStyle("drawer-width-mini-left", GetMiniDrawerWidth(FindLeftMiniDrawer()), !string.IsNullOrEmpty(GetMiniDrawerWidth(FindLeftMiniDrawer()))) - .AddStyle("drawer-width-mini-right", GetMiniDrawerWidth(FindRightMiniDrawer()), !string.IsNullOrEmpty(GetMiniDrawerWidth(FindRightMiniDrawer()))); - - } - } - - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? ClassList { get; set; } - - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? StyleList { get; set; } - - #endregion - - - -} diff --git a/src/Connected.Components/Components/Drawer/DrawerHeader.razor b/src/Connected.Components/Components/Drawer/DrawerHeader.razor deleted file mode 100644 index 8586ab6..0000000 --- a/src/Connected.Components/Components/Drawer/DrawerHeader.razor +++ /dev/null @@ -1,15 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -@if (LinkToIndex) -{ - - @ChildContent - -} -else -{ -
    - @ChildContent -
    -} diff --git a/src/Connected.Components/Components/Drawer/DrawerHeader.razor.cs b/src/Connected.Components/Components/Drawer/DrawerHeader.razor.cs deleted file mode 100644 index 74dcfb2..0000000 --- a/src/Connected.Components/Components/Drawer/DrawerHeader.razor.cs +++ /dev/null @@ -1,59 +0,0 @@ -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; -public partial class DrawerHeader : UIComponent -{ - - #region Content - - /// - /// If true, compact padding will be used, same as the Appbar. - /// - [Parameter] - public bool Dense { get; set; } - - /// - /// Child content of component. - /// - [Parameter] - public RenderFragment ChildContent { get; set; } - - /// - /// If true, the component will link to index page with an a element instead of div. - /// - [Parameter] - public bool LinkToIndex { get; set; } - - #endregion - - #region Styling - - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? ClassList { get; set; } - - /* - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? StyleList { get; set; } - */ - - protected virtual CssBuilder CompiledClassList - { - get - { - return new CssBuilder("drawer-header") - .AddClass($"drawer-header-dense", Dense) - .AddClass(ClassList); - } - } - - #endregion - - -} diff --git a/src/Connected.Components/Components/DropZone/DropContainer.razor b/src/Connected.Components/Components/DropZone/DropContainer.razor deleted file mode 100644 index c89ad9f..0000000 --- a/src/Connected.Components/Components/DropZone/DropContainer.razor +++ /dev/null @@ -1,10 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent -@typeparam T - - -
    - @ChildContent -
    -
    \ No newline at end of file diff --git a/src/Connected.Components/Components/DropZone/DropContainer.razor.cs b/src/Connected.Components/Components/DropZone/DropContainer.razor.cs deleted file mode 100644 index 7ffa0dc..0000000 --- a/src/Connected.Components/Components/DropZone/DropContainer.razor.cs +++ /dev/null @@ -1,385 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public class DragAndDropIndexChangedEventArgs : EventArgs -{ - #region Variables - public string ZoneIdentifier { get; } - public int Index { get; } - public string OldZoneIdentifier { get; } - #endregion - - #region Events - public DragAndDropIndexChangedEventArgs(string zoneIdentifier, string oldZoneIdentifier, int index) - { - ZoneIdentifier = zoneIdentifier; - Index = index; - OldZoneIdentifier = oldZoneIdentifier; - } - - #endregion -} - -/// -/// Used to encapsulate data for a drag and drop transaction -/// -/// -/// - -public class DragAndDropItemTransaction -{ - #region Variables - private Func _commitCallback; - private Func _cancelCallback; - #endregion - - #region Events - - /// - /// create a new instance of a drag and drop transaction encapsulating the item and source - /// - /// The item of this transaction - /// The identifier of the drop zone, where the transaction started - /// The source index - /// A callback that is invokde when the transaction has been successful - /// A callback that is inviked when the transaction has been cancelled - public DragAndDropItemTransaction(T item, string identifier, int index, Func commitCallback, Func cancelCallback) - { - Item = item; - SourceZoneIdentifier = identifier; - CurrentZone = identifier; - Index = index; - SourceIndex = index; - - _commitCallback = commitCallback; - _cancelCallback = cancelCallback; - } - - /// - /// Cancel the transaction - /// - /// - public async Task Cancel() => await _cancelCallback.Invoke(); - - /// - /// Commit this transaction as succesful - /// - /// - public async Task Commit() => await _commitCallback.Invoke(); - - internal bool UpdateIndex(int index) - { - if (Index == index) { return false; } - - Index = index; - return true; - } - - internal bool UpdateZone(string idenfifer) - { - if (CurrentZone == idenfifer) { return false; } - - CurrentZone = idenfifer; - Index = -1; - return true; - } - - #endregion - - #region Content - - /// - /// The Item that is dragged during the transaction - /// - public T Item { get; init; } - - /// - /// The index of the item in the current drop zone - /// - public int Index { get; private set; } - - /// - /// The index of the item when the transaction started - /// - public int SourceIndex { get; private set; } - - /// - /// Identifier for drop zone where the transaction started - /// - public string SourceZoneIdentifier { get; init; } - - public string CurrentZone { get; private set; } - - #endregion - -} - - -/// -/// Record encaplusalting data regaring a completed transaction -/// -/// Type of dragged item -/// The dragged item during the transaction -/// Identifier of the zone where the transaction started -/// The index of the item within in the dropzone -public record ItemDropInfo(T Item, string DropzoneIdentifier, int IndexInZone); - -public class DragAndDropTransactionFinishedEventArgs : EventArgs - { - #region Variables - public T Item { get; } - public bool Success { get; } - public string OriginatedDropzoneIdentifier { get; } - public string DestinationDropzoneIdentifier { get; } - public int OriginIndex { get; } - public int DestinationIndex { get; } - #endregion - - #region Events - public DragAndDropTransactionFinishedEventArgs(DragAndDropItemTransaction transaction) : - this(string.Empty, false, transaction) - { - - } - - public DragAndDropTransactionFinishedEventArgs(string destinationDropzoneIdentifier, bool success, DragAndDropItemTransaction transaction) - { - Item = transaction.Item; - Success = success; - OriginatedDropzoneIdentifier = transaction.SourceZoneIdentifier; - DestinationDropzoneIdentifier = destinationDropzoneIdentifier; - OriginIndex = transaction.SourceIndex; - DestinationIndex = transaction.Index; - } - - #endregion - -} - -/// -/// The container of a drag and drop zones -/// -/// Datetype of items -public partial class DropContainer : UIComponent - { - - #region Variables - private DragAndDropItemTransaction _transaction; - #endregion - - #region Events - public event EventHandler> TransactionStarted; - public event EventHandler TransactionIndexChanged; - - public event EventHandler> TransactionEnded; - public event EventHandler RefreshRequested; - #endregion - - #region Content - /// - /// Child content of component. This should include the drop zones - /// - [Parameter] - [Category(CategoryTypes.DropZone.Appearance)] - public RenderFragment ChildContent { get; set; } - - /// - /// The items that can be drag and dropped within the container - /// - [Parameter] - [Category(CategoryTypes.DropZone.Items)] - public IEnumerable Items { get; set; } - #endregion - - #region Styling - - protected string Classname => - new CssBuilder("drop-container") - .AddClass(AdditionalClassList) - .Build(); - - /// - /// The CSS class(es), that is applied to drop zones that are a valid target for drag and drop transaction - /// - [Parameter] - [Category(CategoryTypes.DropZone.DropRules)] - public string CanDropClass { get; set; } - - /// - /// The CSS class(es), that is applied to drop zones that are NOT valid target for drag and drop transaction - /// - [Parameter] - [Category(CategoryTypes.DropZone.DropRules)] - public string NoDropClass { get; set; } - - /// - /// The method is used to determinate if an item should be disabled for dragging. Defaults to allow all items - /// - [Parameter] - [Category(CategoryTypes.DropZone.Disabled)] - public Func ItemIsDisabled { get; set; } - - /// - /// If a drop item is disabled (determinate by ). This class is applied to the element - /// - [Parameter] - [Category(CategoryTypes.DropZone.Disabled)] - public string DisabledClass { get; set; } = "disabled"; - - /// - /// An additional class that is applied to the drop zone where a drag operation started - /// - [Parameter] - [Category(CategoryTypes.DropZone.DraggingClass)] - public string DraggingClass { get; set; } - - /// - /// An additional class that is applied to an drop item, when it is dragged - /// - [Parameter] - [Category(CategoryTypes.DropZone.DraggingClass)] - public string ItemDraggingClass { get; set; } - - #endregion - - #region Behavior - /// - /// Callback that indicates that an item has been dropped on a drop zone. Should be used to update the "status" of the data item - /// - [Parameter] - [Category(CategoryTypes.DropZone.Items)] - public EventCallback> ItemDropped { get; set; } - - /// - /// The method is used to determinate if an item can be dropped within a drop zone - /// - [Parameter] - [Category(CategoryTypes.DropZone.DropRules)] - public Func CanDrop { get; set; } - - /// - /// The render fragment (template) that should be used to render the items within a drop zone - /// - [Parameter] - [Category(CategoryTypes.DropZone.Items)] - public RenderFragment ItemRenderer { get; set; } - - /// - /// The method is used to determinate if an item can be dropped within a drop zone - /// - [Parameter] - [Category(CategoryTypes.DropZone.Items)] - public Func ItemsSelector { get; set; } - - /// - /// If true, drop classes CanDropClass or NoDropClass or applied as soon, as a transaction has started - /// - [Parameter] - [Category(CategoryTypes.DropZone.DropRules)] - public bool ApplyDropClassesOnDragStarted { get; set; } = false; - - public void StartTransaction(T item, string identifier, int index, Func commitCallback, Func cancelCallback) - { - _transaction = new DragAndDropItemTransaction(item, identifier, index, commitCallback, cancelCallback); - TransactionStarted?.Invoke(this, _transaction); - } - - public T GetTransactionItem() => _transaction.Item; - - public bool TransactionInProgress() => _transaction != null; - public string GetTransactionOrignZoneIdentiifer() => _transaction?.SourceZoneIdentifier ?? string.Empty; - public string GetTransactionCurrentZoneIdentiifer() => _transaction?.CurrentZone ?? string.Empty; - public bool IsTransactionOriginatedFromInside(string identifier) => _transaction.SourceZoneIdentifier == identifier; - - public int GetTransactionIndex() => _transaction?.Index ?? -1; - public bool IsItemMovedDownwards() => _transaction.Index > _transaction.SourceIndex; - public bool HasTransactionIndexChanged() - { - if (_transaction == null) - { - return false; - } - - if (_transaction.CurrentZone != _transaction.SourceZoneIdentifier) - { - return true; - } - - return _transaction.Index != _transaction.SourceIndex; - } - - public bool IsOrign(int index, string identifier) - { - if (_transaction == null) - { - return false; - } - - if (identifier != _transaction.SourceZoneIdentifier) - { - return false; - } - - return _transaction.SourceIndex == index || _transaction.SourceIndex - 1 == index; - } - - public async Task CommitTransaction(string dropzoneIdentifier, bool reorderIsAllowed) - { - await _transaction.Commit(); - var index = -1; - if (reorderIsAllowed == true) - { - index = GetTransactionIndex() + 1; - if (_transaction.SourceZoneIdentifier == _transaction.CurrentZone && IsItemMovedDownwards() == true) - { - index -= 1; - } - } - - await ItemDropped.InvokeAsync(new ItemDropInfo(_transaction.Item, dropzoneIdentifier, index)); - var transactionFinishedEventArgs = new DragAndDropTransactionFinishedEventArgs(dropzoneIdentifier, true, _transaction); - _transaction = null; - TransactionEnded?.Invoke(this, transactionFinishedEventArgs); - } - - public async Task CancelTransaction() - { - await _transaction.Cancel(); - var transactionFinishedEventArgs = new DragAndDropTransactionFinishedEventArgs(_transaction); - _transaction = null; - TransactionEnded?.Invoke(this, transactionFinishedEventArgs); - } - - public void UpdateTransactionIndex(int index) - { - var changed = _transaction.UpdateIndex(index); - if (changed == false) { return; } - - TransactionIndexChanged?.Invoke(this, new DragAndDropIndexChangedEventArgs(_transaction.CurrentZone, _transaction.CurrentZone, _transaction.Index)); - } - - internal void UpdateTransactionZone(string identifier) - { - var oldValue = _transaction.CurrentZone; - var changed = _transaction.UpdateZone(identifier); - if (changed == false) { return; } - - TransactionIndexChanged?.Invoke(this, new DragAndDropIndexChangedEventArgs(_transaction.CurrentZone, oldValue, _transaction.Index)); - } - - - /// - /// Refreshes the dropzone and all items within. This is neded in case of adding items to the collection or changed values of items - /// - public void Refresh() => RefreshRequested?.Invoke(this, EventArgs.Empty); - - #endregion - -} diff --git a/src/Connected.Components/Components/DropZone/DropZone.razor b/src/Connected.Components/Components/DropZone/DropZone.razor deleted file mode 100644 index ccc0ef4..0000000 --- a/src/Connected.Components/Components/DropZone/DropZone.razor +++ /dev/null @@ -1,69 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent -@typeparam T - - -
    - - @ChildContent - - @if (OnlyZone != true) - { - int index = 0; - var transactionIndex = Container?.GetTransactionIndex() ?? -1; - var items = GetItems(); - - @if (AllowReorder == true) - { - @if (items.Any() == false) - { -
    - } - else - { - if (transactionIndex == -1) - { -
    - } - - } - } - @foreach (var item in items) - { - var indexCopy = index; - - - @{ - var renderer = GetItemTemplate(); - } - - @renderer(item) - - - - - if (transactionIndex == indexCopy && IsOrign(indexCopy) == false ) - { -
    - } - - index++; - } - } -
    \ No newline at end of file diff --git a/src/Connected.Components/Components/DropZone/DropZone.razor.cs b/src/Connected.Components/Components/DropZone/DropZone.razor.cs deleted file mode 100644 index 9056270..0000000 --- a/src/Connected.Components/Components/DropZone/DropZone.razor.cs +++ /dev/null @@ -1,437 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.JSInterop; - -namespace Connected.Components; - -public partial class DropZone : UIComponent, IDisposable -{ - #region Variables - private bool _containerIsInitialized = false; - private bool _canDrop = false; - private bool _dragInProgress = false; - private bool _disposedValue = false; - private Guid _id = Guid.NewGuid(); - - private int _dragCounter = 0; - - private Dictionary _indicies = new(); - - [Inject] private IJSRuntime JsRuntime { get; set; } - - [CascadingParameter] - protected DropContainer Container { get; set; } - - #endregion - - #region Events - private int GetItemIndex(T item) - { - if (_indicies.ContainsKey(item) == false) - { - _indicies.Add(item, _indicies.Count); - } - - return _indicies[item]; - } - - private IEnumerable GetItems() - { - Func predicate = (item) => Container.ItemsSelector(item, Identifier ?? string.Empty); - if (ItemsSelector != null) - { - predicate = ItemsSelector; - } - - return (Container?.Items ?? Array.Empty()).Where(predicate).OrderBy(x => GetItemIndex(x)).ToArray(); - } - - private RenderFragment GetItemTemplate() => ItemRenderer ?? Container?.ItemRenderer; - - private string GetDragginClass() - { - if (string.IsNullOrEmpty(DraggingClass) == true) - { - return Container?.DraggingClass ?? string.Empty; - } - - return DraggingClass; - } - - private string GetItemDraggingClass() - { - if (string.IsNullOrEmpty(ItemDraggingClass) == false) - { - return ItemDraggingClass; - } - - return Container?.ItemDraggingClass ?? string.Empty; - } - - private bool GetApplyDropClassesOnDragStarted() => (ApplyDropClassesOnDragStarted ?? Container?.ApplyDropClassesOnDragStarted) ?? false; - - private bool GetItemDisabledStatus(T item) - { - var result = false; - var predicate = ItemIsDisabled ?? Container?.ItemIsDisabled; - if (predicate != null) - { - result = predicate(item); - } - - return result; - } - - private void Container_TransactionEnded(object sender, DragAndDropTransactionFinishedEventArgs e) - { - _dragCounter = 0; - - if (GetApplyDropClassesOnDragStarted() == true) - { - _canDrop = false; - } - - if (e.Success == true) - { - if (e.OriginatedDropzoneIdentifier == Identifier && e.DestinationDropzoneIdentifier != e.OriginatedDropzoneIdentifier) - { - _indicies.Remove(e.Item); - } - - if (e.OriginatedDropzoneIdentifier == Identifier || e.DestinationDropzoneIdentifier == Identifier) - { - int index = 0; - - foreach (var item in _indicies.OrderBy(x => x.Value).ToArray()) - { - _indicies[item.Key] = index++; - } - } - } - - StateHasChanged(); - } - - private void Container_TransactionStarted(object sender, DragAndDropItemTransaction e) - { - if (GetApplyDropClassesOnDragStarted() == true) - { - var dropResult = ItemCanBeDropped(); - _canDrop = dropResult.Item2; - } - - StateHasChanged(); - } - - private void Container_RefreshRequested(object sender, EventArgs e) - { - _indicies.Clear(); - InvokeAsync(StateHasChanged); - } - - private void HandleDragEnter() - { - _dragCounter++; - - var (context, isValidZone) = ItemCanBeDropped(); - if (context == null) - { - return; - } - - _canDrop = isValidZone; - - Container.UpdateTransactionZone(Identifier); - } - - private void HandleDragLeave() - { - _dragCounter--; - - var (context, _) = ItemCanBeDropped(); - if (context == null) - { - return; - } - } - - private async Task HandleDrop() - { - var (context, isValidZone) = ItemCanBeDropped(); - if (context == null) - { - return; - } - - _dragCounter = 0; - - if (isValidZone == false) - { - await Container.CancelTransaction(); - return; - } - - if (AllowReorder == true) - { - if (Container.HasTransactionIndexChanged() == true) - { - var newIndex = Container.GetTransactionIndex() + 1; - - if (Container.IsTransactionOriginatedFromInside(this.Identifier) == true) - { - var oldIndex = _indicies[context]; - - if (Container.IsItemMovedDownwards() == true) - { - newIndex -= 1; - - foreach (var item in _indicies.Where(x => x.Value >= oldIndex + 1 && x.Value <= newIndex).ToArray()) - { - _indicies[item.Key] -= 1; - } - } - else - { - foreach (var item in _indicies.Where(x => x.Value >= newIndex && x.Value < oldIndex).ToArray()) - { - _indicies[item.Key] += 1; - } - } - - _indicies[context] = newIndex; - } - else - { - foreach (var item in _indicies.Where(x => x.Value >= newIndex).ToArray()) - { - _indicies[item.Key] = item.Value + 1; - } - - _indicies.Add(context, newIndex); - } - } - } - else - { - _indicies.Clear(); - } - - await Container.CommitTransaction(Identifier, AllowReorder); - } - - private void FinishedDragOperation() => _dragInProgress = false; - private void DragOperationStarted() => _dragInProgress = true; - - private void Container_TransactionIndexChanged(object sender, DragAndDropIndexChangedEventArgs e) - { - if (e.ZoneIdentifier != Identifier && e.OldZoneIdentifier != Identifier) { return; } - - StateHasChanged(); - } - - #endregion - - #region Content - /// - /// Child content of component - /// - [Parameter] - [Category(CategoryTypes.DropZone.Appearance)] - public RenderFragment ChildContent { get; set; } - - /// - /// The unique identifier of this drop zone. It is used within transaction to - /// - [Parameter] - [Category(CategoryTypes.DropZone.Appearance)] - public string Identifier { get; set; } - - /// - /// The render fragment (template) that should be used to render the items within a drop zone. Overrides value provided by drop container - /// - [Parameter] - [Category(CategoryTypes.DropZone.Items)] - public RenderFragment ItemRenderer { get; set; } - - /// - /// The method is used to determinate if an item can be dropped within a drop zone. Overrides value provided by drop container - /// - [Parameter] - [Category(CategoryTypes.DropZone.Items)] - public Func ItemsSelector { get; set; } - #endregion - - #region Styling - - /// - /// The CSS class(es), that is applied to drop zones that are a valid target for drag and drop transaction. Overrides value provided by drop container - /// - [Parameter] - [Category(CategoryTypes.DropZone.DropRules)] - public string CanDropClass { get; set; } - - /// - /// The CSS class(es), that is applied to drop zones that are NOT valid target for drag and drop transaction. Overrides value provided by drop container - /// - [Parameter] - [Category(CategoryTypes.DropZone.DropRules)] - public string NoDropClass { get; set; } - - /// - /// The method is used to determinate if an item should be disabled for dragging. Defaults to allow all items. Overrides value provided by drop container - /// - [Parameter] - [Category(CategoryTypes.DropZone.Disabled)] - public Func ItemIsDisabled { get; set; } - - /// - /// If a drop item is disabled (determinate by ). This class is applied to the element. Overrides value provided by drop container - /// - [Parameter] - [Category(CategoryTypes.DropZone.Disabled)] - public string DisabledClass { get; set; } - - /// - /// An additional class that is applied to the drop zone where a drag operation started - /// - [Parameter] - [Category(CategoryTypes.DropZone.DraggingClass)] - public string DraggingClass { get; set; } - - /// - /// An additional class that is applied to an drop item, when it is dragged - /// - [Parameter] - [Category(CategoryTypes.DropZone.DraggingClass)] - public string ItemDraggingClass { get; set; } - - protected string Classname => - new CssBuilder("drop-zone") - //.AddClass("drop-zone-drag-block", Container?.TransactionInProgress() == true && Container.GetTransactionOrignZoneIdentiifer() != Identifier) - .AddClass(CanDropClass ?? Container?.CanDropClass, Container?.TransactionInProgress() == true && Container.GetTransactionOrignZoneIdentiifer() != Identifier && _canDrop == true && (_dragCounter > 0 || GetApplyDropClassesOnDragStarted() == true)) - .AddClass(NoDropClass ?? Container?.NoDropClass, Container?.TransactionInProgress() == true && Container.GetTransactionOrignZoneIdentiifer() != Identifier && _canDrop == false && (_dragCounter > 0 || GetApplyDropClassesOnDragStarted() == true)) - .AddClass(GetDragginClass(), _dragInProgress == true) - .AddClass(AdditionalClassList) - .Build(); - - protected string PlaceholderClassname => - new CssBuilder("border-2 mud-border-primary border-dashed mud-chip-text mud-chip-color-primary pa-4 mud-dropitem-placeholder") - .AddClass("d-none", AllowReorder == false || (Container?.TransactionInProgress() == false || Container.GetTransactionCurrentZoneIdentiifer() != Identifier)) - .Build(); - - #endregion - - #region Behavior - - /// - /// The method is used to determinate if an item can be dropped within a drop zone. Overrides value provided by drop container - /// - [Parameter] - [Category(CategoryTypes.DropZone.DropRules)] - public Func CanDrop { get; set; } - - - - /// - /// If true, drop classes CanDropClass or NoDropClass or applied as soon, as a transaction has started. Overrides value provided by drop container - /// - [Parameter] - [Category(CategoryTypes.DropZone.DropRules)] - public bool? ApplyDropClassesOnDragStarted { get; set; } - - [Parameter] - [Category(CategoryTypes.DropZone.Behavior)] - public bool AllowReorder { get; set; } - - /// - /// If true, will only act as a dropable zone and not render any items. - /// - [Parameter] - [Category(CategoryTypes.DropZone.Behavior)] - public bool OnlyZone { get; set; } - - private (T, bool) ItemCanBeDropped() - { - if (Container == null || Container.TransactionInProgress() == false) - { - return (default(T), false); - } - - var item = Container.GetTransactionItem(); - - var result = true; - if (CanDrop != null) - { - result = CanDrop(item); - } - else if (Container.CanDrop != null) - { - result = Container.CanDrop(item, Identifier); - } - - return (item, result); - } - - private bool IsOrign(int index) => Container.IsOrign(index, Identifier); - #endregion - - #region Lifecycle - - protected override void OnParametersSet() - { - if (Container != null && _containerIsInitialized == false) - { - _containerIsInitialized = true; - Container.TransactionStarted += Container_TransactionStarted; - Container.TransactionEnded += Container_TransactionEnded; - Container.RefreshRequested += Container_RefreshRequested; - Container.TransactionIndexChanged += Container_TransactionIndexChanged; - } - - base.OnParametersSet(); - } - - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - if (firstRender == true) - { - await JsRuntime.InvokeVoidAsyncWithErrorHandling("mudDragAndDrop.initDropZone", _id.ToString()); - } - - await base.OnAfterRenderAsync(firstRender); - } - - protected virtual void Dispose(bool disposing) - { - if (!_disposedValue) - { - if (disposing) - { - if (Container != null) - { - Container.TransactionStarted -= Container_TransactionStarted; - Container.TransactionEnded -= Container_TransactionEnded; - Container.RefreshRequested -= Container_RefreshRequested; - Container.TransactionIndexChanged -= Container_TransactionIndexChanged; - - } - } - - _disposedValue = true; - } - } - - public void Dispose() - { - Dispose(disposing: true); - GC.SuppressFinalize(this); - } - - #endregion -} diff --git a/src/Connected.Components/Components/DropZone/DynamicDropItem.razor b/src/Connected.Components/Components/DropZone/DynamicDropItem.razor deleted file mode 100644 index 86f0edd..0000000 --- a/src/Connected.Components/Components/DropZone/DynamicDropItem.razor +++ /dev/null @@ -1,16 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent -@typeparam T - -
    - @if (HideContent == false) - { - @ChildContent - } -
    \ No newline at end of file diff --git a/src/Connected.Components/Components/DropZone/DynamicDropItem.razor.cs b/src/Connected.Components/Components/DropZone/DynamicDropItem.razor.cs deleted file mode 100644 index 0beaa14..0000000 --- a/src/Connected.Components/Components/DropZone/DynamicDropItem.razor.cs +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -public partial class DynamicDropItem : UIComponent -{ - - #region Variables - private bool _dragOperationIsInProgress = false; - #endregion - - #region Events - /// - /// An event callback set fires, when a drag operation has been started - /// - [Parameter] - [Category(CategoryTypes.DropZone.Behavior)] - public EventCallback OnDragStarted { get; set; } - - /// - /// An event callback set fires, when a drag operation has been eneded. This included also a cancelled transaction - /// - [Parameter] - [Category(CategoryTypes.DropZone.Behavior)] - public EventCallback OnDragEnded { get; set; } - - private async Task DragStarted() - { - if (Container == null) { return; } - - _dragOperationIsInProgress = true; - Container.StartTransaction(Item, ZoneIdentifier ?? string.Empty, Index, OnDroppedSucceeded, OnDroppedCanceled); - await OnDragStarted.InvokeAsync(); - } - - private async Task OnDroppedSucceeded() - { - _dragOperationIsInProgress = false; - - await OnDragEnded.InvokeAsync(Item); - StateHasChanged(); - } - - private async Task OnDroppedCanceled() - { - _dragOperationIsInProgress = false; - - await OnDragEnded.InvokeAsync(Item); - StateHasChanged(); - } - - private async Task DragEnded(DragEventArgs e) - { - if (_dragOperationIsInProgress == true) - { - _dragOperationIsInProgress = false; - await Container?.CancelTransaction(); - } - else - { - await OnDragEnded.InvokeAsync(Item); - } - } - - private void HandleDragEnter() - { - if (Container == null || Container.TransactionInProgress() == false) { return; } - - Container.UpdateTransactionIndex(Index); - } - - private void HandleDragLeave() - { - } - - #endregion - - #region Content - [CascadingParameter] - protected DropContainer Container { get; set; } - - /// - /// The zone identifier of the corresponding drop zone - /// - [Parameter] - [Category(CategoryTypes.DropZone.Behavior)] - public string ZoneIdentifier { get; set; } - - /// - /// the data item that is represneted by this item - /// - [Parameter] - [Category(CategoryTypes.DropZone.Behavior)] - public T Item { get; set; } - - /// - /// Child content of component - /// - [Parameter] - [Category(CategoryTypes.DropZone.Appearance)] - public RenderFragment ChildContent { get; set; } - - #endregion - - #region Styling - /// - /// An additional class that is applied to this element when a drag operation is in progress - /// - [Parameter] - [Category(CategoryTypes.DropZone.DraggingClass)] - public string DraggingClass { get; set; } - - /// - /// When true, the item can't be dragged. defaults to false - /// - [Parameter] - [Category(CategoryTypes.DropZone.Disabled)] - public bool Disabled { get; set; } = false; - - /// - /// The class that is applied when disabled is set to true - /// - [Parameter] - [Category(CategoryTypes.DropZone.Disabled)] - public string DisabledClass { get; set; } - - [Parameter] - [Category(CategoryTypes.DropZone.Sorting)] - public int Index { get; set; } = -1; - protected string Classname => - new CssBuilder("drop-item") - .AddClass(DraggingClass, _dragOperationIsInProgress == true) - .AddClass(DisabledClass, Disabled == true) - .AddClass(AdditionalClassList) - .Build(); - - - #endregion - - #region Behavior - [Parameter] - [Category(CategoryTypes.DropZone.Sorting)] - public bool HideContent { get; set; } - #endregion - -} diff --git a/src/Connected.Components/Components/Element/Element.cs b/src/Connected.Components/Components/Element/Element.cs deleted file mode 100644 index 7ed3b5b..0000000 --- a/src/Connected.Components/Components/Element/Element.cs +++ /dev/null @@ -1,106 +0,0 @@ -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Rendering; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -/// -/// Primitive component which allows rendering any HTML element we want -/// through the HtmlTag property -/// -public class Element : UIComponent -{ - /// - /// Child content - /// - [Parameter] - public RenderFragment? ChildContent { get; set; } - - #region EventCallbacks - [Parameter] - public EventCallback RefChanged { get; set; } - #endregion - - #region Content placeholders - /// - /// The Ref to bind to. - /// Usage: @bind-Ref="myRef" - /// - [Parameter] - public ElementReference? Ref { get; set; } - #endregion - - #region Styling properties - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? ClassList { get; set; } - #endregion - - #region Behavior properties - /// - /// The HTML element that will be rendered in the root by the component - /// - [Parameter] - public string HtmlTag { get; set; } = "span"; - - [Parameter] - public bool PreventOnClickPropagation { get; set; } - #endregion - - /// - /// Schedules a component's state refresh - /// - public void Refresh() => StateHasChanged(); - - protected override void BuildRenderTree(RenderTreeBuilder builder) - { - base.BuildRenderTree(builder); - - builder.OpenElement(0, HtmlTag); - - /* - * Handle splatted attributes - */ - foreach (var attribute in CustomAttributes) - { - /* - * Checking if the value is null, we can get rid of null event handlers, - * for example `@onmouseenter=@(IsOpen ? HandleEnter : null)`. - * This is a powerful feature that does not work in regular html elements - * because Blazor always adds the attribute value and creates an EventCallback. - * */ - if (attribute.Value is not null) - builder.AddAttribute(1, attribute.Key, attribute.Value); - } - - builder.AddAttribute(2, "class", ClassList); - - /* - * Stop onclock propagation for buttons. The order matters. - * This has to be before content is added - */ - if (PreventOnClickPropagation) - builder.AddEventStopPropagationAttribute(5, "onclick", true); - - /* - * Add reference capture propagation. - */ - if (Ref is not null) - { - builder.AddElementReferenceCapture(6, async capturedRef => - { - Ref = capturedRef; - await RefChanged.InvokeAsync(Ref.Value); - }); - } - - /* - * Render child content - */ - builder.AddContent(10, ChildContent); - - builder.CloseElement(); - } -} diff --git a/src/Connected.Components/Components/ExpansionPanel/ExpansionPanel.razor b/src/Connected.Components/Components/ExpansionPanel/ExpansionPanel.razor deleted file mode 100644 index f4dea58..0000000 --- a/src/Connected.Components/Components/ExpansionPanel/ExpansionPanel.razor +++ /dev/null @@ -1,26 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -
    -
    -
    - @if (TitleContent != null) - { - @TitleContent - } - else - { - @Text - } -
    - @if (!HideIcon) - { - - } -
    - -
    - @ChildContent -
    -
    -
    diff --git a/src/Connected.Components/Components/ExpansionPanel/ExpansionPanel.razor.cs b/src/Connected.Components/Components/ExpansionPanel/ExpansionPanel.razor.cs deleted file mode 100644 index 4166d79..0000000 --- a/src/Connected.Components/Components/ExpansionPanel/ExpansionPanel.razor.cs +++ /dev/null @@ -1,219 +0,0 @@ -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class ExpansionPanel : UIComponent, IDisposable -{ - - #region Variables - private bool _nextPanelExpanded; - private bool _isExpanded; - private bool _collapseIsExpanded; - #endregion - - #region Events - - public void ToggleExpansion() - { - if (Disabled) - { - return; - } - - IsExpanded = !IsExpanded; - } - - public void Expand(bool update_parent = true) - { - if (update_parent) - IsExpanded = true; - else - { - _isExpanded = true; - _collapseIsExpanded = true; - IsExpandedChanged.InvokeAsync(_isExpanded); - } - } - - public void Collapse(bool update_parent = true) - { - if (update_parent) - IsExpanded = false; - else - { - _isExpanded = false; - _collapseIsExpanded = false; - IsExpandedChanged.InvokeAsync(_isExpanded); - } - } - - /// - /// Raised when IsExpanded changes. - /// - [Parameter] public EventCallback IsExpandedChanged { get; set; } - - internal event Action NotifyIsExpandedChanged; - - #endregion - - #region Content - [CascadingParameter] private ExpansionPanels Parent { get; set; } - - /// - /// RenderFragment to be displayed in the expansion panel which will override header text if defined. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Behavior)] - public RenderFragment TitleContent { get; set; } - - /// - /// The text to be displayed in the expansion panel. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Behavior)] - public string Text { get; set; } - - /// - /// Child content of component. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Behavior)] - public RenderFragment ChildContent { get; set; } - #endregion - - #region Styling - protected string Classname => - new CssBuilder("expand-panel") - .AddClass("panel-expanded", IsExpanded) - .AddClass("panel-next-expanded", NextPanelExpanded) - .AddClass("disabled", Disabled) - .AddClass($"elevation-{Parent?.Elevation.ToString()}") - .AddClass($"expand-panel-border", Parent?.DisableBorders != true) - .AddClass(AdditionalClassList) - .Build(); - - protected string PanelContentClassname => - new CssBuilder("expand-panel-content") - .AddClass("expand-panel-gutters", DisableGutters || Parent?.DisableGutters == true) - .AddClass("expand-panel-dense", Dense || Parent?.Dense == true) - .Build(); - - /// - /// Explicitly sets the height for the Collapse element to override the css default. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Appearance)] - public int? MaxHeight { get; set; } - - /// - /// If true, expand icon will not show - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Appearance)] - public bool HideIcon { get; set; } - - /// - /// Custom hide icon. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Appearance)] - public string Icon { get; set; } = Icons.Material.Filled.ExpandMore; - - /// - /// If true, removes vertical padding from childcontent. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Appearance)] - public bool Dense { get; set; } - - /// - /// If true, the left and right padding is removed from childcontent. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Appearance)] - public bool DisableGutters { get; set; } - - /// - /// Expansion state of the panel (two-way bindable) - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Behavior)] - public bool IsExpanded - { - get => _isExpanded; - set - { - if (_isExpanded == value) - return; - _isExpanded = value; - - NotifyIsExpandedChanged?.Invoke(this); - IsExpandedChanged.InvokeAsync(_isExpanded).ContinueWith(t => - { - if (_collapseIsExpanded != _isExpanded) - { - _collapseIsExpanded = _isExpanded; - InvokeAsync(() => StateHasChanged()); - } - }); - } - } - - /// - /// If true, the component will be disabled. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Behavior)] - public bool Disabled { get; set; } - - #endregion - - #region Behavior - /// - /// Sets the initial expansion state. Do not use in combination with IsExpanded. - /// Combine with MultiExpansion to have more than one panel start open. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Behavior)] - public bool IsInitiallyExpanded { get; set; } - - public bool NextPanelExpanded - { - get => _nextPanelExpanded; - set - { - if (_nextPanelExpanded == value) - return; - _nextPanelExpanded = value; - //InvokeAsync(StateHasChanged); - } - } - - #endregion - - #region Lifecycle - - protected override void OnInitialized() - { - // NOTE: we can't throw here because we need to be able to instanciate the type for the API Docs to infer default values - //if (Parent == null) - // throw new ArgumentNullException(nameof(Parent), "ExpansionPanel must exist within a ExpansionPanels component"); - base.OnInitialized(); - if (!IsExpanded && IsInitiallyExpanded) - { - _isExpanded = true; - _collapseIsExpanded = true; - } - - Parent?.AddPanel(this); - } - - public void Dispose() - { - Parent?.RemovePanel(this); - } - #endregion - -} diff --git a/src/Connected.Components/Components/ExpansionPanel/ExpansionPanels.razor b/src/Connected.Components/Components/ExpansionPanel/ExpansionPanels.razor deleted file mode 100644 index c49d052..0000000 --- a/src/Connected.Components/Components/ExpansionPanel/ExpansionPanels.razor +++ /dev/null @@ -1,8 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -
    - - @ChildContent - -
    diff --git a/src/Connected.Components/Components/ExpansionPanel/ExpansionPanels.razor.cs b/src/Connected.Components/Components/ExpansionPanel/ExpansionPanels.razor.cs deleted file mode 100644 index 8bc1249..0000000 --- a/src/Connected.Components/Components/ExpansionPanel/ExpansionPanels.razor.cs +++ /dev/null @@ -1,160 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class ExpansionPanels : UIComponent -{ - - #region Events - internal void AddPanel(ExpansionPanel panel) - { - if (MultiExpansion == false && _panels.Any(p => p.IsExpanded)) - { - panel.Collapse(update_parent: false); - } - - panel.NotifyIsExpandedChanged += UpdatePanelsOnPanelsChanged; - _panels.Add(panel); - } - - public void RemovePanel(ExpansionPanel panel) - { - panel.NotifyIsExpandedChanged -= UpdatePanelsOnPanelsChanged; - _panels.Remove(panel); - try - { - StateHasChanged(); - } - catch (InvalidOperationException) { /* this happens on page reload, probably a Blazor bug */ } - } - - internal void UpdatePanelsOnPanelsChanged(ExpansionPanel panel) - { - if (MultiExpansion == false && panel.IsExpanded) - { - CollapseAllExcept(panel); - return; - } - - UpdateAll(); - } - - public void UpdateAll() - { - ExpansionPanel last = null; - foreach (var panel in _panels) - { - if (last != null) - last.NextPanelExpanded = panel.IsExpanded; - last = panel; - } - StateHasChanged(); - } - - /// - /// Collapses all panels except the given one. - /// - /// The panel not to collapse. - public void CollapseAllExcept(ExpansionPanel panel) - { - foreach (var p in _panels) - { - if (p == panel) - continue; - p.Collapse(update_parent: false); - } - this.InvokeAsync(UpdateAll); - } - - /// - /// Collapses all panels. - /// - public void CollapseAll() - { - foreach (var p in _panels) - { - p.Collapse(update_parent: false); - } - this.InvokeAsync(UpdateAll); - } - - /// - /// Expands all panels. - /// - public void ExpandAll() - { - foreach (var p in _panels) - { - p.Expand(update_parent: false); - } - this.InvokeAsync(UpdateAll); - } - #endregion - - #region Content - /// - /// Child content of component. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Behavior)] - public RenderFragment ChildContent { get; set; } - - private List _panels = new(); - #endregion - - #region Styling - protected string Classname => - new CssBuilder("expansion-panels") - .AddClass($"expansion-panels-square", Square) - .AddClass(AdditionalClassList) - .Build(); - - /// - /// If true, border-radius is set to 0. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Appearance)] - public bool Square { get; set; } - - /// - /// The higher the number, the heavier the drop-shadow. 0 for no shadow. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Appearance)] - public int Elevation { set; get; } = 1; - - /// - /// If true, removes vertical padding from all panels' childcontent. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Appearance)] - public bool Dense { get; set; } - - /// - /// If true, the left and right padding is removed from all panels' childcontent. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Appearance)] - public bool DisableGutters { get; set; } - - /// - /// If true, the borders around each panel will be removed. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Appearance)] - public bool DisableBorders { get; set; } - #endregion - - #region Behavior - /// - /// If true, multiple panels can be expanded at the same time. - /// - [Parameter] - [Category(CategoryTypes.ExpansionPanel.Behavior)] - public bool MultiExpansion { get; set; } - #endregion - -} diff --git a/src/Connected.Components/Components/Field/Field.razor b/src/Connected.Components/Components/Field/Field.razor deleted file mode 100644 index 28bc6ac..0000000 --- a/src/Connected.Components/Components/Field/Field.razor +++ /dev/null @@ -1,26 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - - - -
    - @if (Adornment == Adornment.Start) - { - - } -
    - @ChildContent -
    - @if (Adornment == Adornment.End) - { - - } - @if (Variant == Variant.Outlined) - { -
    - } -
    -
    -
    - diff --git a/src/Connected.Components/Components/Field/Field.razor.cs b/src/Connected.Components/Components/Field/Field.razor.cs deleted file mode 100644 index d1174b5..0000000 --- a/src/Connected.Components/Components/Field/Field.razor.cs +++ /dev/null @@ -1,171 +0,0 @@ -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -//TODO Maybe can inherit from MudBaseInput? -public partial class Field : UIComponent -{ - #region Events - /// - /// Button click event if set and Adornment used. - /// - [Parameter] public EventCallback OnAdornmentClick { get; set; } - #endregion - - #region Content - /// - /// Child content of component. - /// - [Parameter] - [Category(CategoryTypes.Field.Data)] - public RenderFragment ChildContent { get; set; } - - /// - /// The ErrorText that will be displayed if Error true - /// - [Parameter] - [Category(CategoryTypes.Field.Validation)] - public string ErrorText { get; set; } - - /// - /// The HelperText will be displayed below the text field. - /// - [Parameter] - [Category(CategoryTypes.Field.Behavior)] - public string HelperText { get; set; } - - /// - /// If string has value the label text will be displayed in the input, and scaled down at the top if the field has value. - /// - [Parameter] - [Category(CategoryTypes.Field.Behavior)] - public string Label { get; set; } - - /// - /// Text that will be used if Adornment is set to Start or End, the Text overrides Glyph. - /// - [Parameter] - [Category(CategoryTypes.Field.Behavior)] - public string AdornmentText { get; set; } - - - #endregion - - #region Styling - protected string Classname => - new CssBuilder("input") - .AddClass($"input-{Variant.ToDescription()}") - .AddClass($"input-adorned-{Adornment.ToDescription()}", Adornment != Adornment.None) - .AddClass($"input-margin-{Margin.ToDescription()}", when: () => Margin != Margin.None) - .AddClass("input-underline", when: () => DisableUnderLine == false && Variant != Variant.Outlined) - .AddClass("shrink", when: () => !string.IsNullOrWhiteSpace(ChildContent?.ToString()) || Adornment == Adornment.Start) - .AddClass("disabled", Disabled) - .AddClass("input-error", Error && !string.IsNullOrEmpty(ErrorText)) - .Build(); - - protected string InnerClassname => - new CssBuilder("input-slot") - .AddClass("input-root") - .AddClass("input-slot-nopadding", when: () => InnerPadding == false) - .AddClass($"input-root-{Variant.ToDescription()}") - .AddClass($"input-adorned-{Adornment.ToDescription()}", Adornment != Adornment.None) - .AddClass($"input-root-margin-{Margin.ToDescription()}", when: () => Margin != Margin.None) - .Build(); - - protected string AdornmentClassname => - new CssBuilder("input-adornment") - .AddClass($"input-adornment-{Adornment.ToDescription()}", Adornment != Adornment.None) - .AddClass($"text", !string.IsNullOrEmpty(AdornmentText)) - .AddClass($"input-root-filled-shrink", Variant == Variant.Filled) - .Build(); - - protected string InputControlClassname => - new CssBuilder("field") - .AddClass(AdditionalClassList) - .Build(); - - - - /// - /// Will adjust vertical spacing. - /// - [Parameter] - [Category(CategoryTypes.Field.Appearance)] - public Margin Margin { get; set; } = Margin.None; - - /// - /// If true, the label will be displayed in an error state. - /// - [Parameter] - [Category(CategoryTypes.Field.Validation)] - public bool Error { get; set; } - - /// - /// If true, the field will take up the full width of its container. - /// - [Parameter] - [Category(CategoryTypes.Field.Appearance)] - public bool FullWidth { get; set; } - - /// - /// Variant can be Text, Filled or Outlined. - /// - [Parameter] - [Category(CategoryTypes.Field.Appearance)] - public Variant Variant { get; set; } = Variant.Text; - - /// - /// If true, the input element will be disabled. - /// - [Parameter] - [Category(CategoryTypes.Field.Behavior)] - public bool Disabled { get; set; } - - /// - /// Glyph that will be used if Adornment is set to Start or End. - /// - [Parameter] - [Category(CategoryTypes.Field.Behavior)] - public string AdornmentIcon { get; set; } - - /// - /// The Adornment if used. By default, it is set to None. - /// - [Parameter] - [Category(CategoryTypes.Field.Behavior)] - public Adornment Adornment { get; set; } = Adornment.None; - - /// - /// The color of the adornment if used. It supports the theme colors. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public ThemeColor AdornmentColor { get; set; } = ThemeColor.Default; - - /// - /// Sets the Glyph Size. - /// - [Parameter] - [Category(CategoryTypes.Field.Appearance)] - public Size IconSize { get; set; } = Size.Medium; - - /// - /// If true, the inner contents padding is removed. - /// - [Parameter] - [Category(CategoryTypes.Field.Appearance)] - public bool InnerPadding { get; set; } = true; - - /// - /// If true, the field will not have an underline. - /// - [Parameter] - [Category(CategoryTypes.Field.Appearance)] - public bool DisableUnderLine { get; set; } - #endregion - -} diff --git a/src/Connected.Components/Components/FileUpload/FileUpload.razor b/src/Connected.Components/Components/FileUpload/FileUpload.razor deleted file mode 100644 index e7b9b87..0000000 --- a/src/Connected.Components/Components/FileUpload/FileUpload.razor +++ /dev/null @@ -1,18 +0,0 @@ -@inherits FormComponent; -@typeparam T; -@namespace Connected.Components -@using Microsoft.AspNetCore.Components.Forms - - - - - \ No newline at end of file diff --git a/src/Connected.Components/Components/FileUpload/FileUpload.razor.cs b/src/Connected.Components/Components/FileUpload/FileUpload.razor.cs deleted file mode 100644 index 6cef0b6..0000000 --- a/src/Connected.Components/Components/FileUpload/FileUpload.razor.cs +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Connected.Annotations; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Forms; -using Microsoft.Extensions.Logging; -using Connected.Utilities; - -namespace Connected.Components; - -public partial class FileUpload : FormComponent -{ - #region Variables - private readonly string _id = $"mud_fileupload_{Guid.NewGuid()}"; - #endregion - - #region Events - /// - /// Triggered when the internal OnChange event fires - /// - [Parameter] - [Category(CategoryTypes.FileUpload.Behavior)] - public EventCallback FilesChanged { get; set; } - - /// - /// Called when the internal files are changed - /// - [Parameter] - [Category(CategoryTypes.FileUpload.Behavior)] - public EventCallback OnFilesChanged { get; set; } - - private async Task OnChange(InputFileChangeEventArgs args) - { - if (typeof(T) == typeof(IReadOnlyList)) - { - _value = (T)args.GetMultipleFiles(); - } - else if (typeof(T) == typeof(IBrowserFile)) - { - _value = (T)args.File; - } - else return; - - await FilesChanged.InvokeAsync(_value); - BeginValidate(); - FieldChanged(_value); - if (!HasError || !SuppressOnChangeWhenInvalid) //only trigger FilesChanged if validation passes or SuppressOnChangeWhenInvalid is false - await OnFilesChanged.InvokeAsync(args); - } - #endregion - - #region Content - /// - /// The value of the MudFileUpload component. - /// If T is IBrowserFile, it represents a single file. - /// If T is IReadOnlyList<IBrowserFile>, it represents multiple files - /// - [Parameter] - [Category(CategoryTypes.FileUpload.Behavior)] - public T Files - { - get => _value; - set - { - if (_value != null && _value.Equals(value)) - return; - _value = value; - } - } - #endregion - - #region Styling - protected string Classname => - new CssBuilder("file-upload") - .AddClass(AdditionalClassList) - .Build(); - - - - /// - /// Renders the button that triggers the input. Required for functioning. - /// - [Parameter] - [Category(CategoryTypes.FileUpload.Appearance)] - public RenderFragment ButtonTemplate { get; set; } - /// - /// Renders the selected files, if desired. - /// - [Parameter] - [Category(CategoryTypes.FileUpload.Appearance)] - public RenderFragment SelectedTemplate { get; set; } - - /// - /// If false, the inner FileInput will be visible - /// - [Parameter] - [Category(CategoryTypes.FileUpload.Appearance)] - public bool Hidden { get; set; } = true; - /// - /// Css classes to apply to the internal InputFile - /// - [Parameter] - [Category(CategoryTypes.FileUpload.Appearance)] - public string InputClass { get; set; } - /// - /// Style to apply to the internal InputFile - /// - [Parameter] - [Category(CategoryTypes.FileUpload.Appearance)] - public string InputStyle { get; set; } - #endregion - - #region Behavior - /// - /// If true, OnFilesChanged will not trigger if validation fails - /// - [Parameter] - [Category(CategoryTypes.FileUpload.Behavior)] - public bool SuppressOnChangeWhenInvalid { get; set; } - /// - /// Sets the file types this input will accept - /// - [Parameter] - [Category(CategoryTypes.FileUpload.Behavior)] - public string Accept { get; set; } - #endregion - - #region Lifecycle - public FileUpload() : base(new DefaultConverter()) { } - - protected override void OnInitialized() - { - //if (!(typeof(T) == typeof(IReadOnlyList) || typeof(T) == typeof(IBrowserFile))) - // Logger.LogWarning("T must be of type {type1} or {type2}", typeof(IReadOnlyList), typeof(IBrowserFile)); - - base.OnInitialized(); - } - - #endregion - -} diff --git a/src/Connected.Components/Components/FocusTrap/FocusTrap.razor b/src/Connected.Components/Components/FocusTrap/FocusTrap.razor deleted file mode 100644 index 8ce3845..0000000 --- a/src/Connected.Components/Components/FocusTrap/FocusTrap.razor +++ /dev/null @@ -1,39 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -
    - -
    -
    - -
    -
    - -
    -
    - - @ChildContent - -
    -
    - -
    -
    - -
    - -@code { - string TrapTabIndex => (Disabled? "-1" : "0"); -} \ No newline at end of file diff --git a/src/Connected.Components/Components/FocusTrap/FocusTrap.razor.cs b/src/Connected.Components/Components/FocusTrap/FocusTrap.razor.cs deleted file mode 100644 index 5e8906f..0000000 --- a/src/Connected.Components/Components/FocusTrap/FocusTrap.razor.cs +++ /dev/null @@ -1,174 +0,0 @@ -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -public partial class FocusTrap : IDisposable -{ - #region Variables - protected ElementReference _firstBumper; - protected ElementReference _lastBumper; - protected ElementReference _fallback; - protected ElementReference _root; - - private bool _shiftDown; - private bool _disabled; - private bool _initialized; - - bool _shouldRender = true; - #endregion - - #region Events - private Task OnBottomFocusAsync(FocusEventArgs args) - { - return FocusLastAsync(); - } - - private Task OnBumperFocusAsync(FocusEventArgs args) - { - return _shiftDown ? FocusLastAsync() : FocusFirstAsync(); - } - - private Task OnRootFocusAsync(FocusEventArgs args) - { - return FocusFallbackAsync(); - } - - private void OnRootKeyDown(KeyboardEventArgs args) - { - HandleKeyEvent(args); - } - - private void OnRootKeyUp(KeyboardEventArgs args) - { - HandleKeyEvent(args); - } - - private Task OnTopFocusAsync(FocusEventArgs args) - { - return FocusFirstAsync(); - } - - private Task InitializeFocusAsync() - { - _initialized = true; - - if (!_disabled) - { - switch (DefaultFocus) - { - case DefaultFocus.Element: return FocusFallbackAsync(); - case DefaultFocus.FirstChild: return FocusFirstAsync(); - case DefaultFocus.LastChild: return FocusLastAsync(); - } - } - return Task.CompletedTask; - } - - private Task FocusFallbackAsync() - { - return _fallback.FocusAsync().AsTask(); - } - - private Task FocusFirstAsync() - { - return _root.FocusFirstAsync(2, 4).AsTask(); - } - - private Task FocusLastAsync() - { - return _root.FocusLastAsync(2, 4).AsTask(); - } - - private void HandleKeyEvent(KeyboardEventArgs args) - { - _shouldRender = false; - if (args.Key == "Tab") - _shiftDown = args.ShiftKey; - } - - private Task RestoreFocusAsync() - { - return _root.RestoreFocusAsync().AsTask(); - } - - private Task SaveFocusAsync() - { - return _root.SaveFocusAsync().AsTask(); - } - #endregion - - #region Content - /// - /// Child content of the component. - /// - [Parameter] - [Category(CategoryTypes.FocusTrap.Behavior)] - public RenderFragment ChildContent { get; set; } - #endregion - - #region Styling - protected string Classname => - new CssBuilder("outline-none") - .AddClass(AdditionalClassList) - .Build(); - - /// - /// Defines on which element to set the focus when the component is created or enabled. - /// When DefaultFocus.Element is used, the focus will be set to the FocusTrap itself, so the user will have to press TAB key once to focus the first tabbable element. - /// - [Parameter] - [Category(CategoryTypes.FocusTrap.Behavior)] - public DefaultFocus DefaultFocus { get; set; } = DefaultFocus.FirstChild; - #endregion - - #region Behavior - /// - /// If true, the focus will no longer loop inside the component. - /// - [Parameter] - [Category(CategoryTypes.FocusTrap.Behavior)] - public bool Disabled - { - get => _disabled; - set - { - if (_disabled != value) - { - _disabled = value; - _initialized = false; - } - } - } - protected override bool ShouldRender() - { - if (_shouldRender) - return true; - _shouldRender = true; // auto-reset _shouldRender to true - return false; - } - - #endregion - - #region Lifecycle - protected override async Task OnAfterRenderAsync(bool firstRender) - { - await base.OnAfterRenderAsync(firstRender); - - if (firstRender) - await SaveFocusAsync(); - - if (!_initialized) - await InitializeFocusAsync(); - } - public void Dispose() - { - if (!_disabled) - RestoreFocusAsync().AndForget(TaskOption.Safe); - } - - #endregion - -} diff --git a/src/Connected.Components/Components/Form/Form.razor b/src/Connected.Components/Components/Form/Form.razor deleted file mode 100644 index fed87cb..0000000 --- a/src/Connected.Components/Components/Form/Form.razor +++ /dev/null @@ -1,16 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - - -
    - @if (SuppressImplicitSubmission) - { - - - - } - - @ChildContent - -
    - diff --git a/src/Connected.Components/Components/Form/Form.razor.cs b/src/Connected.Components/Components/Form/Form.razor.cs deleted file mode 100644 index 7a9011f..0000000 --- a/src/Connected.Components/Components/Form/Form.razor.cs +++ /dev/null @@ -1,358 +0,0 @@ -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class Form : UIComponent, IDisposable, IForm -{ - #region Variables - // Note: w/o any children the form is automatically valid. - // It stays valid, as long as non-required fields are added or - // a required field is added or the user touches a field that fails validation. - private bool _valid = true; - - private bool _touched = false; - - protected HashSet _formControls = new(); - protected HashSet _errors = new(); - - private Timer _timer; - - private bool _shouldRender = true; // <-- default is true, we need the form children to render - #endregion - - #region Events - private void SetIsValid(bool value) - { - if (IsValid == value) - return; - IsValid = value; - IsValidChanged.InvokeAsync(IsValid).AndForget(); - } - - /// - /// Raised when IsValid changes. - /// - [Parameter] public EventCallback IsValidChanged { get; set; } - - /// - /// Raised when IsTouched changes. - /// - [Parameter] public EventCallback IsTouchedChanged { get; set; } - - /// - /// Raised when a contained IFormComponent changes its value - /// - [Parameter] public EventCallback FieldChanged { get; set; } - - [Parameter] public EventCallback ErrorsChanged { get; set; } - - void IForm.FieldChanged(IFormComponent formControl, object newValue) - { - FieldChanged.InvokeAsync(new FormFieldChangedEventArgs { Field = formControl, NewValue = newValue }).AndForget(); - } - - void IForm.Add(IFormComponent formControl) - { - if (formControl.Required) - SetIsValid(false); - _formControls.Add(formControl); - SetDefaultControlValidation(formControl); - } - - void IForm.Remove(IFormComponent formControl) - { - _formControls.Remove(formControl); - } - - /// - /// Called by any input of the form to signal that its value changed. - /// - /// - void IForm.Update(IFormComponent formControl) - { - EvaluateForm(); - } - - private void EvaluateForm(bool debounce = true) - { - _timer?.Dispose(); - if (debounce && ValidationDelay > 0) - _timer = new Timer(OnTimerComplete, null, ValidationDelay, Timeout.Infinite); - else - _ = OnEvaluateForm(); - } - - private void OnTimerComplete(object stateInfo) => InvokeAsync(OnEvaluateForm); - - protected async Task OnEvaluateForm() - { - _errors.Clear(); - foreach (var error in _formControls.SelectMany(control => control.ValidationErrors)) - _errors.Add(error); - // form can only be valid if: - // - none have an error - // - all required fields have been touched (and thus validated) - var no_errors = _formControls.All(x => x.HasErrors == false); - var required_all_touched = _formControls.Where(x => x.Required).All(x => x.Modified); - var valid = no_errors && required_all_touched; - - var old_touched = _touched; - _touched = _formControls.Any(x => x.Modified); - try - { - _shouldRender = false; - SetIsValid(valid); - await ErrorsChanged.InvokeAsync(Errors); - if (old_touched != _touched) - await IsTouchedChanged.InvokeAsync(_touched); - } - finally - { - _shouldRender = true; - } - } - - protected override bool ShouldRender() - { - if (!SuppressRenderingOnValidation) - return true; - return _shouldRender; - } - - /// - /// Force a validation of all form controls, even if they haven't been touched by the user yet. - /// - public async Task Validate() - { - await Task.WhenAll(_formControls.Select(x => x.Validate())); - - if (ChildForms.Count > 0) - { - await Task.WhenAll(ChildForms.Select(x => x.Validate())); - } - - EvaluateForm(debounce: false); - } - - /// - /// Reset all form controls and reset their validation state. - /// - public void Reset() - { - foreach (var control in _formControls.ToArray()) - { - control.Reset(); - } - - foreach (var form in ChildForms) - { - form.Reset(); - } - - EvaluateForm(debounce: false); - } - - /// - /// Reset the validation state but keep the values. - /// - public void ResetValidation() - { - foreach (var control in _formControls.ToArray()) - { - control.ResetValidation(); - } - - foreach (var form in ChildForms) - { - form.ResetValidation(); - } - - EvaluateForm(debounce: false); - } - private void SetDefaultControlValidation(IFormComponent formComponent) - { - if (Validation == null) return; - - if (!formComponent.IsForNull && (formComponent.Validation == null || (OverrideFieldValidation ?? true))) - { - formComponent.Validation = Validation; - } - } - #endregion - - #region Content - /// - /// Child content of component. - /// - [Parameter] - [Category(CategoryTypes.Form.ValidatedData)] - public RenderFragment ChildContent { get; set; } - private HashSet
    ChildForms { get; set; } = new HashSet(); - [CascadingParameter] private Form ParentForm { get; set; } - - - // keeps track of validation. if the input was validated at least once the value will be true - - - /// - /// A default validation func or a validation attribute to use for form controls that don't have one. - /// Supported types are: - /// Func<T, bool> ... will output the standard error message "Invalid" if false - /// Func<T, string> ... outputs the result as error message, no error if null - /// Func<T, IEnumerable< string >> ... outputs all the returned error messages, no error if empty - /// Func<object, string, IEnumerable< string >> input Form.Model, Full Path of Member ... outputs all the returned error messages, no error if empty - /// Func<T, Task< bool >> ... will output the standard error message "Invalid" if false - /// Func<T, Task< string >> ... outputs the result as error message, no error if null - /// Func<T, Task<IEnumerable< string >>> ... outputs all the returned error messages, no error if empty - /// Func<object, string, Task<IEnumerable< string >>> input Form.Model, Full Path of Member ... outputs all the returned error messages, no error if empty - /// System.ComponentModel.DataAnnotations.ValidationAttribute instances - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Validation)] - public object Validation { get; set; } - - - - /// - /// Validation error messages. - /// - [Parameter] - [Category(CategoryTypes.Form.ValidationResult)] - public string[] Errors - { - get => _errors.ToArray(); - set { /* readonly */ } - } - - - - /// - /// Specifies the top-level model object for the form. Used with Fluent Validation - /// - [Parameter] - [Category(CategoryTypes.Form.ValidatedData)] - public object? Model { get; set; } - #endregion - - #region Styling - protected string Classname => - new CssBuilder("form") - .AddClass(AdditionalClassList) - .Build(); - #endregion - - #region Behavior - - // Note: w/o any children the form is automatically valid. - // It stays valid, as long as non-required fields are added or - // a required field is added or the user touches a field that fails validation. - - - /// - /// Validation debounce delay in milliseconds. This can help improve rendering performance of forms with real-time validation of inputs - /// i.e. when textfields have ChangeTextImmediately="true". - /// - [Parameter] - [Category(CategoryTypes.Form.Behavior)] - public int ValidationDelay { get; set; } = 300; - - /// - /// Validation status. True if the form is valid and without errors. This parameter is two-way bindable. - /// - [Parameter] - [Category(CategoryTypes.Form.ValidationResult)] - public bool IsValid - { - get => _valid && ChildForms.All(x => x.IsValid); - set - { - _valid = value; - } - } - - /// - /// True if any field of the field was touched. This parameter is readonly. - /// - [Parameter] - [Category(CategoryTypes.Form.Behavior)] - public bool IsTouched { get => _touched; set {/* readonly parameter! */ } } - - /// - /// When true, the form will not re-render its child contents on validation updates (i.e. when IsValid changes). - /// This is an optimization which can be necessary especially for larger forms on older devices. - /// - [Parameter] - [Category(CategoryTypes.Form.Behavior)] - public bool SuppressRenderingOnValidation { get; set; } = false; - - /// - /// When true, will not cause a page refresh on Enter if any input has focus. - /// - /// - /// https://www.w3.org/TR/2018/SPSD-html5-20180327/forms.html#implicit-submission - /// Usually this is not wanted, as it can cause a page refresh in the middle of editing a form. - /// When the form is in a dialog this will cause the dialog to close. So by default we suppress it. - /// - [Parameter] - [Category(CategoryTypes.Form.Behavior)] - public bool SuppressImplicitSubmission { get; set; } = true; - - /// - /// If a field already has a validation, override it with . - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Validation)] - public bool? OverrideFieldValidation { get; set; } - #endregion - - #region Lifecycle - protected override Task OnAfterRenderAsync(bool firstRender) - { - if (firstRender) - { - var valid = _formControls.All(x => x.Required == false); - if (valid != IsValid) - { - // the user probably bound a variable to IsValid and it conflicts with our state. - // let's set this right - SetIsValid(valid); - } - - } - return base.OnAfterRenderAsync(firstRender); - } - - protected override void OnInitialized() - { - if (ParentForm != null) - { - ParentForm.ChildForms.Add(this); - } - - base.OnInitialized(); - } - - public void Dispose() - { - _timer?.Dispose(); - } - #endregion - - - - - - - - - - - - - - - - -} diff --git a/src/Connected.Components/Components/Form/FormComponent.cs b/src/Connected.Components/Components/Form/FormComponent.cs deleted file mode 100644 index a6e4fd3..0000000 --- a/src/Connected.Components/Components/Form/FormComponent.cs +++ /dev/null @@ -1,649 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; -using System.Globalization; -using System.Linq.Expressions; -using System.Reflection; -using Connected.Annotations; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Forms; -using static System.String; - -namespace Connected.Components; - -public abstract class FormComponent : UIComponent, IFormComponent, IDisposable -{ - private Converter _converter; - - /// - /// Invoked whenever the string value cannot be converted - /// - public event EventHandler ConversionErrorOccured; - - protected FormComponent(Converter converter) - { - _converter = converter ?? throw new ArgumentNullException(nameof(converter)); - _converter.ErrorOccured += (s, e) => OnConversionError(e); - } - - [CascadingParameter] - internal IForm? Form { get; set; } - - /// - /// If true, this is a top-level form component. If false, this input is a sub-component of another input (i.e. TextField, Select, etc). - /// If it is sub-component, it will NOT do form validation!! - /// - [CascadingParameter(Name = "SubscribeToParentForm")] - internal bool SubscribeToParentForm { get; set; } = true; - - /// - /// If true, this form input is required to be filled out. - /// - [Parameter] - public bool Required { get; set; } - - /// - /// The error text that will be displayed if the input is not filled out but required. - /// - [Parameter] - public string RequiredError { get; set; } = "Required"; - - /// - /// The ErrorText that will be displayed if is set to true. - /// - [Parameter] - public string ErrorText { get; set; } - - /// - /// If true, the label will be displayed in an error state. - /// - [Parameter] - public bool HasError { get; set; } - - /// - /// The ErrorId that will be used by aria-describedby if is true - /// - [Parameter] - public string ErrorId { get; set; } - - /// - /// The generic converter of the component. - /// - public Converter Converter => _converter; - - /// - /// The culture of the component. Also sets the culture of the . - /// - [Parameter] - public CultureInfo Culture - { - get => _converter.Culture; - set => SetCulture(value); - } - - private string _conversionError { get; set; } - - protected virtual bool SetConverter(Converter value) - { - var changed = _converter != value; - - if (changed) - { - /* - * Converter is mandatory at all times - */ - _converter = value ?? throw new ArgumentNullException(nameof(value)); - _converter.ErrorOccured += (s, e) => OnConversionError(e); - } - - return changed; - } - - protected virtual bool SetCulture(CultureInfo value) - { - var changed = _converter.Culture != value; - - if (changed) - _converter.Culture = value; - - return changed; - } - - private void OnConversionError(string error) - { - // note: we need to update the form here because the conversion error might lead to not updating the value - // ... which leads to not updating the form - - //TODO Why does the form need to be updated? - Modified = true; - - _conversionError = error; - - Form?.Update(this); - - ConversionErrorOccured?.Invoke(this, error); - } - - /// - /// True if the conversion from string to T failed - /// - public bool ConversionError => !string.IsNullOrWhiteSpace(_conversionError); - - /// - /// The error message of the conversion error from string to T. Null otherwise - /// - public string ConversionErrorMessage => _conversionError; - - /// - /// True if the input has any of the following errors: An error set from outside, a conversion error or - /// one or more validation errors - /// - public bool HasErrors => HasError || ConversionError || ValidationErrors.Count > 0; - - /// - /// Return the validation error text or the conversion error message. - /// - /// Error text/message - public string? GetErrorText(bool test = false) - { - // ErrorText is either set from outside or the first validation error - if (!IsNullOrWhiteSpace(ErrorText)) - return ErrorText; - - if (!IsNullOrWhiteSpace(ConversionErrorMessage)) - return ConversionErrorMessage; - - if (test) return "Error: test"; - - return null; - } - - /// - /// This manages the state of having been modified by the user. A form control always starts out unmodified - /// but becomes modified when the user performed input or the blur event was raised. - /// - /// The modified state is only relevant for inputs that have no value (i.e. empty text fields). Being unmodified will - /// suppress the display of the - /// - public bool Modified { get; protected set; } - - #region MudForm Validation - - public List ValidationErrors { get; set; } = new List(); - - /// - /// A validation func or a validation attribute. Supported types are: - /// Func<T, bool> ... will output the standard error message "Invalid" if false - /// Func<T, string> ... outputs the result as error message, no error if null - /// Func<T, IEnumerable< string >> ... outputs all the returned error messages, no error if empty - /// Func<object, string, IEnumerable< string >> input Form.Model, Full Path of Member ... outputs all the returned error messages, no error if empty - /// Func<T, Task< bool >> ... will output the standard error message "Invalid" if false - /// Func<T, Task< string >> ... outputs the result as error message, no error if null - /// Func<T, Task<IEnumerable< string >>> ... outputs all the returned error messages, no error if empty - /// Func<object, string, Task<IEnumerable< string >>> input Form.Model, Full Path of Member ... outputs all the returned error messages, no error if empty - /// System.ComponentModel.DataAnnotations.ValidationAttribute instances - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Validation)] - public object Validation { get; set; } - - private T __value; - - /// - /// This is the form component's value. - /// - protected T _value - { - get => __value; - set - { - __value = value; - _conversionError = null; - } - } - - // These are the fire-and-forget methods to launch an async validation process. - // After each async step, we make sure the current Value of the component has not changed while - // async code was executed to avoid race condition which could lead to incorrect validation results. - protected void BeginValidateAfter(Task task) - { - Func execute = async () => - { - var value = _value; - - await task; - - // we validate only if the value hasn't changed while we waited for task. - // if it has in fact changed, another validate call will follow anyway - if (EqualityComparer.Default.Equals(value, _value)) - { - BeginValidate(); - } - }; - execute().AndForget(); - } - - protected void BeginValidate() - { - Func execute = async () => - { - var value = _value; - - await ValidateValue(); - - if (EqualityComparer.Default.Equals(value, _value)) - { - EditFormValidate(); - } - }; - execute().AndForget(); - } - - /// - /// Cause this component to validate its value. - /// - public Task Validate() - { - // when a validation is forced, we must set Touched to true, because for untouched fields with - // no value, validation does nothing due to the way forms are expected to work (display errors - // only after fields have been touched). - Modified = true; - return ValidateValue(); - } - - protected virtual async Task ValidateValue() - { - var changed = false; - var errors = new List(); - try - { - // conversion error - if (ConversionError) - errors.Add(ConversionErrorMessage); - // validation errors - if (Validation is ValidationAttribute) - ValidateWithAttribute(Validation as ValidationAttribute, _value, errors); - else if (Validation is Func) - ValidateWithFunc(Validation as Func, _value, errors); - else if (Validation is Func) - ValidateWithFunc(Validation as Func, _value, errors); - else if (Validation is Func>) - ValidateWithFunc(Validation as Func>, _value, errors); - else if (Validation is Func>) - ValidateModelWithFullPathOfMember(Validation as Func>, errors); - else - { - var value = _value; - - if (Validation is Func>) - await ValidateWithFunc(Validation as Func>, _value, errors); - else if (Validation is Func>) - await ValidateWithFunc(Validation as Func>, _value, errors); - else if (Validation is Func>>) - await ValidateWithFunc(Validation as Func>>, _value, errors); - else if (Validation is Func>>) - await ValidateModelWithFullPathOfMember(Validation as Func>>, errors); - - changed = !EqualityComparer.Default.Equals(value, _value); - } - - // Run each validation attributes of the property targeted with `For` - if (_validationAttrsFor != null) - { - foreach (var attr in _validationAttrsFor) - { - ValidateWithAttribute(attr, _value, errors); - } - } - - // required error (must be last, because it is least important!) - if (Required) - { - if (Modified && !HasValue(_value)) - errors.Add(RequiredError); - } - } - finally - { - // If Value has changed while we were validating it, ignore results and exit - if (!changed) - { - // this must be called in any case, because even if Validation is null the user might have set Error and ErrorText manually - // if Error and ErrorText are set by the user, setting them here will have no effect. - // if Error, create an error id that can be used by aria-describedby on input control - ValidationErrors = errors; - HasError = errors.Count > 0; - ErrorText = errors.FirstOrDefault(); - ErrorId = HasErrors ? Guid.NewGuid().ToString() : null; - Form?.Update(this); - StateHasChanged(); - } - } - } - - protected virtual bool HasValue(T value) - { - if (typeof(T) == typeof(string)) - return !IsNullOrWhiteSpace(value as string); - - return value != null; - } - - [UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "In the context of EditContext.Model / FieldIdentifier.Model they won't get trimmed.")] - protected virtual void ValidateWithAttribute(ValidationAttribute attr, T value, List errors) - { - try - { - // The validation context is applied either on the `EditContext.Model`, '_fieldIdentifier.Model', or `this` as a stub subject. - // Complex validation with fields references (like `CompareAttribute`) should use an EditContext or For when not using EditContext. - var validationContextSubject = EditContext?.Model ?? _fieldIdentifier.Model ?? this; - var validationContext = new ValidationContext(validationContextSubject); - if (validationContext.MemberName is null && _fieldIdentifier.FieldName is not null) - validationContext.MemberName = _fieldIdentifier.FieldName; - var validationResult = attr.GetValidationResult(value, validationContext); - if (validationResult != ValidationResult.Success) - errors.Add(validationResult.ErrorMessage); - } - catch (Exception e) - { - // Maybe conditionally add full error message if `IWebAssemblyHostEnvironment.IsDevelopment()` - // Or log using proper logger. - errors.Add($"An unhandled exception occurred: {e.Message}"); - } - } - - protected virtual void ValidateWithFunc(Func func, T value, List errors) - { - try - { - if (!func(value)) - errors.Add("Invalid"); - } - catch (Exception e) - { - errors.Add("Error in validation func: " + e.Message); - } - } - - protected virtual void ValidateWithFunc(Func func, T value, List errors) - { - try - { - var error = func(value); - if (error != null) - errors.Add(error); - } - catch (Exception e) - { - errors.Add("Error in validation func: " + e.Message); - } - } - - protected virtual void ValidateWithFunc(Func> func, T value, List errors) - { - try - { - foreach (var error in func(value)) - errors.Add(error); - } - catch (Exception e) - { - errors.Add("Error in validation func: " + e.Message); - } - } - - protected virtual void ValidateModelWithFullPathOfMember(Func> func, List errors) - { - try - { - if (Form?.Model == null) - { - return; - } - - if (For == null) - { - errors.Add($"For is null, please set parameter For on the form input component of type {GetType().Name}"); - return; - } - - foreach (var error in func(Form.Model, For.GetFullPathOfMember())) - errors.Add(error); - } - catch (Exception e) - { - errors.Add("Error in validation func: " + e.Message); - } - } - - protected virtual async Task ValidateWithFunc(Func> func, T value, List errors) - { - try - { - if (!await func(value)) - errors.Add("Invalid"); - } - catch (Exception e) - { - errors.Add("Error in validation func: " + e.Message); - } - } - - protected virtual async Task ValidateWithFunc(Func> func, T value, List errors) - { - try - { - var error = await func(value); - if (error != null) - errors.Add(error); - } - catch (Exception e) - { - errors.Add("Error in validation func: " + e.Message); - } - } - - protected virtual async Task ValidateWithFunc(Func>> func, T value, List errors) - { - try - { - foreach (var error in await func(value)) - errors.Add(error); - } - catch (Exception e) - { - errors.Add("Error in validation func: " + e.Message); - } - } - - protected virtual async Task ValidateModelWithFullPathOfMember(Func>> func, List errors) - { - try - { - if (Form?.Model == null) - { - return; - } - - if (For == null) - { - errors.Add($"For is null, please set parameter For on the form input component of type {GetType().Name}"); - return; - } - - foreach (var error in await func(Form.Model, For.GetFullPathOfMember())) - errors.Add(error); - } - catch (Exception e) - { - errors.Add("Error in validation func: " + e.Message); - } - } - - /// - /// Notify the Form that a field has changed if SubscribeToParentForm is true - /// - protected void FieldChanged(object newValue) - { - if (SubscribeToParentForm) - Form?.FieldChanged(this, newValue); - } - - /// - /// Reset the value and the validation. - /// - public void Reset() - { - ResetValue(); - ResetValidation(); - } - - protected virtual void ResetValue() - { - /* to be overridden */ - _value = default; - _conversionError = null; - Modified = false; - StateHasChanged(); - } - - /// - /// Reset the validation. - /// - public void ResetValidation() - { - HasError = false; - ValidationErrors.Clear(); - ErrorText = null; - StateHasChanged(); - } - - #endregion - - - #region --> Blazor EditForm validation support - - /// - /// This is the form validation context for Blazor's component - /// - [CascadingParameter] - EditContext EditContext { get; set; } = default!; - - /// - /// Triggers field to be validated. - /// - internal void EditFormValidate() - { - if (_fieldIdentifier.FieldName != null) - { - EditContext?.NotifyFieldChanged(_fieldIdentifier); - } - } - - /// - /// Specify an expression which returns the model's field for which validation messages should be displayed. - /// - [Parameter] - public Expression>? For { get; set; } - - - public bool IsForNull => For == null; - - - /// - /// Stores the list of validation attributes attached to the property targeted by . If is null, this property is null too. - /// - private IEnumerable? _validationAttrsFor; - - - private void OnValidationStateChanged(object sender, ValidationStateChangedEventArgs e) - { - if (EditContext != null && !_fieldIdentifier.Equals(default(FieldIdentifier))) - { - var error_msgs = EditContext.GetValidationMessages(_fieldIdentifier).ToArray(); - HasError = error_msgs.Length > 0; - ErrorText = (HasError ? error_msgs[0] : null); - StateHasChanged(); - } - } - - /// - /// Points to a field of the model for which validation messages should be displayed. - /// - private FieldIdentifier _fieldIdentifier; - - /// - /// To find out whether or not For parameter has changed we keep a separate reference - /// - private Expression>? _currentFor; - - - /// - /// To find out whether or not EditContext parameter has changed we keep a separate reference - /// - private EditContext? _currentEditContext; - - protected override void OnParametersSet() - { - if (For != null && For != _currentFor) - { - // Extract validation attributes - // Sourced from https://stackoverflow.com/a/43076222/4839162 - // and also https://stackoverflow.com/questions/59407225/getting-a-custom-attribute-from-a-property-using-an-expression - var expression = (MemberExpression)For.Body; - var propertyInfo = (PropertyInfo)expression.Expression?.Type.GetProperty(expression.Member.Name); - _validationAttrsFor = propertyInfo?.GetCustomAttributes(typeof(ValidationAttribute), true).Cast(); - - _fieldIdentifier = FieldIdentifier.Create(For); - _currentFor = For; - } - - if (EditContext != null && EditContext != _currentEditContext) - { - DetachValidationStateChangedListener(); - EditContext.OnValidationStateChanged += OnValidationStateChanged; - _currentEditContext = EditContext; - } - } - - private void DetachValidationStateChangedListener() - { - if (_currentEditContext != null) - _currentEditContext.OnValidationStateChanged -= OnValidationStateChanged; - } - - #endregion - - - protected override Task OnInitializedAsync() - { - RegisterAsFormComponent(); - return base.OnInitializedAsync(); - } - - protected virtual void RegisterAsFormComponent() - { - if (SubscribeToParentForm) - { - Form?.Add(this); - } - } - - /// - /// Called to dispose this instance. - /// - /// if called within . - protected virtual void Dispose(bool disposing) - { - } - - void IDisposable.Dispose() - { - try - { - Form?.Remove(this); - } - catch { /* ignore */ } - DetachValidationStateChangedListener(); - Dispose(disposing: true); - } -} diff --git a/src/Connected.Components/Components/Form/IForm.cs b/src/Connected.Components/Components/Form/IForm.cs deleted file mode 100644 index 3e0361b..0000000 --- a/src/Connected.Components/Components/Form/IForm.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Connected.Components; - -public interface IForm -{ - public bool IsValid { get; } - public string[] Errors { get; } - public object? Model { get; set; } - public void FieldChanged(IFormComponent formControl, object newValue); - internal void Add(IFormComponent formControl); - internal void Remove(IFormComponent formControl); - internal void Update(IFormComponent formControl); -} diff --git a/src/Connected.Components/Components/Form/IFormComponent.cs b/src/Connected.Components/Components/Form/IFormComponent.cs deleted file mode 100644 index 94ec669..0000000 --- a/src/Connected.Components/Components/Form/IFormComponent.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Connected.Components; - -public interface IFormComponent -{ - public bool Required { get; set; } - public bool HasError { get; set; } - public bool HasErrors { get; } - public bool Modified { get; } - public object Validation { get; set; } - public bool IsForNull { get; } - public List ValidationErrors { get; set; } - public Task Validate(); - public void Reset(); - public void ResetValidation(); -} diff --git a/src/Connected.Components/Components/Glyph.razor b/src/Connected.Components/Components/Glyph.razor new file mode 100644 index 0000000..b8c55fa --- /dev/null +++ b/src/Connected.Components/Components/Glyph.razor @@ -0,0 +1,4 @@ +
    + + @((MarkupString)SVG) + \ No newline at end of file diff --git a/src/Connected.Components/ComponentsN/Glyph.razor.cs b/src/Connected.Components/Components/Glyph.razor.cs similarity index 86% rename from src/Connected.Components/ComponentsN/Glyph.razor.cs rename to src/Connected.Components/Components/Glyph.razor.cs index aafbee9..8c26764 100644 --- a/src/Connected.Components/ComponentsN/Glyph.razor.cs +++ b/src/Connected.Components/Components/Glyph.razor.cs @@ -2,7 +2,7 @@ using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; -namespace Connected.ComponentsN +namespace Connected.Components { public partial class Glyph { @@ -13,9 +13,9 @@ namespace Connected.ComponentsN public string Color { get; set; } = "#000000"; [Parameter] - public int Width { get; set; } = 30; + public int Width { get; set; } = 25; [Parameter] - public int Height { get; set; } = 30; + public int Height { get; set; } = 25; [Parameter] public string Class { get; set; } = string.Empty; diff --git a/src/Connected.Components/Components/Grid/Grid.razor b/src/Connected.Components/Components/Grid/Grid.razor deleted file mode 100644 index 9dd4784..0000000 --- a/src/Connected.Components/Components/Grid/Grid.razor +++ /dev/null @@ -1,11 +0,0 @@ -@namespace Connected.Components -@using Connected.Annotations; -@using Connected.Utilities -@using Connected.Extensions -@inherits UIComponent - - -
    - @ChildContent -
    -
    \ No newline at end of file diff --git a/src/Connected.Components/Components/Grid/Grid.razor.cs b/src/Connected.Components/Components/Grid/Grid.razor.cs deleted file mode 100644 index 46dd902..0000000 --- a/src/Connected.Components/Components/Grid/Grid.razor.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Connected.Utilities; -using Connected.Extensions; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; -public partial class Grid -{ - - #region Styling - - private CssBuilder CompiledClassList - { - get - { - return new CssBuilder("grid") - .AddClass($"grid-spacing-xs-{Spacing.ToString()}") - .AddClass($"justify-{Justify.ToDescription()}") - .AddClass(ClassList); - } - } - - [Parameter] - public int Spacing { set; get; } = 3; - - [Parameter] - public Justify Justify { get; set; } = Justify.FlexStart; - - [Parameter] - public RenderFragment ChildContent { get; set; } - - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? ClassList { get; set; } - - #endregion - - -} diff --git a/src/Connected.Components/Components/Grid/Item.razor b/src/Connected.Components/Components/Grid/Item.razor deleted file mode 100644 index 59a6a44..0000000 --- a/src/Connected.Components/Components/Grid/Item.razor +++ /dev/null @@ -1,8 +0,0 @@ -@namespace Connected.Components - -@inherits UIComponent - -
    - @ChildContent -
    - diff --git a/src/Connected.Components/Components/Grid/Item.razor.cs b/src/Connected.Components/Components/Grid/Item.razor.cs deleted file mode 100644 index 06b0233..0000000 --- a/src/Connected.Components/Components/Grid/Item.razor.cs +++ /dev/null @@ -1,62 +0,0 @@ -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; -public partial class Item -{ - - #region Content - - [CascadingParameter] - private Grid Parent { get; set; } - - [Parameter] public int xs { get; set; } - [Parameter] public int sm { get; set; } - [Parameter] public int md { get; set; } - [Parameter] public int lg { get; set; } - [Parameter] public int xl { get; set; } - [Parameter] public int xxl { get; set; } - - [Parameter] - public RenderFragment ChildContent { get; set; } - - #endregion - - #region Styling - - private CssBuilder CompiledClassList - { - get - { - return new CssBuilder("grid-item") - .AddClass($"grid-item-xs-{xs.ToString()}", xs != 0) - .AddClass($"grid-item-sm-{sm.ToString()}", sm != 0) - .AddClass($"grid-item-md-{md.ToString()}", md != 0) - .AddClass($"grid-item-lg-{lg.ToString()}", lg != 0) - .AddClass($"grid-item-xl-{xl.ToString()}", xl != 0) - .AddClass($"grid-item-xxl-{xxl.ToString()}", xxl != 0) - .AddClass(ClassList); - } - } - - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? ClassList { get; set; } - - #endregion - - #region Lifecycle - - protected override void OnInitialized() - { - // NOTE: we can't throw here, the component must be able to live alone for the docs API to infer default parameters - //if (Parent == null) - // throw new ArgumentNullException(nameof(Parent), "Item must exist within a Grid"); - base.OnInitialized(); - } - - #endregion - -} diff --git a/src/Connected.Components/Components/Hidden/Hidden.razor b/src/Connected.Components/Components/Hidden/Hidden.razor deleted file mode 100644 index 80bfa01..0000000 --- a/src/Connected.Components/Components/Hidden/Hidden.razor +++ /dev/null @@ -1,7 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -@if (!_isHidden) -{ - @ChildContent -} \ No newline at end of file diff --git a/src/Connected.Components/Components/Hidden/Hidden.razor.cs b/src/Connected.Components/Components/Hidden/Hidden.razor.cs deleted file mode 100644 index 6a27f50..0000000 --- a/src/Connected.Components/Components/Hidden/Hidden.razor.cs +++ /dev/null @@ -1,130 +0,0 @@ -using Connected.Annotations; -using Connected.Services; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - - -public partial class Hidden : UIComponent, IAsyncDisposable -{ - #region Variables - private Breakpoint _currentBreakpoint = Breakpoint.None; - private bool _serviceIsReady = false; - private Guid _breakpointServiceSubscriptionId; - private bool _isHidden = true; - - [Inject] public IBreakpointService BreakpointService { get; set; } - - [CascadingParameter] public Breakpoint CurrentBreakpointFromProvider { get; set; } = Breakpoint.None; - - #endregion - - #region Events - /// - /// Fires when the breakpoint changes visibility of the component - /// - [Parameter] public EventCallback IsHiddenChanged { get; set; } - - protected void Update(Breakpoint currentBreakpoint) - { - if (CurrentBreakpointFromProvider != Breakpoint.None) - { - currentBreakpoint = CurrentBreakpointFromProvider; - } - else if (_serviceIsReady == false) { return; } - - if (currentBreakpoint == Breakpoint.None) { return; } - - _currentBreakpoint = currentBreakpoint; - - var hidden = BreakpointService.IsMediaSize(Breakpoint, currentBreakpoint); - if (Invert == true) - { - hidden = !hidden; - } - - IsHidden = hidden; - } - #endregion - - #region Content - /// - /// Child content of component. - /// - [Parameter] - [Category(CategoryTypes.Hidden.Behavior)] - public RenderFragment ChildContent { get; set; } - #endregion - - #region Styling - /// - /// The screen size(s) depending on which the ChildContent should not be rendered (or should be, if Invert is true) - /// - [Parameter] - [Category(CategoryTypes.Hidden.Behavior)] - public Breakpoint Breakpoint { get; set; } - - /// - /// Inverts the Breakpoint, so that the ChildContent is only rendered when the breakpoint matches the screen size. - /// - [Parameter] - [Category(CategoryTypes.Hidden.Behavior)] - public bool Invert { get; set; } - - /// - /// True if the component is not visible (two-way bindable) - /// - [Parameter] - [Category(CategoryTypes.Hidden.Behavior)] - public bool IsHidden - { - get => _isHidden; - set - { - if (_isHidden != value) - { - _isHidden = value; - IsHiddenChanged.InvokeAsync(_isHidden); - - } - } - } - - #endregion - - #region Lifecycle - protected override void OnParametersSet() - { - base.OnParametersSet(); - Update(_currentBreakpoint); - } - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - await base.OnAfterRenderAsync(firstRender); - if (firstRender == true) - { - if (CurrentBreakpointFromProvider == Breakpoint.None) - { - var attachResult = await BreakpointService.Subscribe((x) => - { - Update(x); - InvokeAsync(StateHasChanged); - }); - - _serviceIsReady = true; - _breakpointServiceSubscriptionId = attachResult.SubscriptionId; - Update(attachResult.Breakpoint); - StateHasChanged(); - } - else - { - _serviceIsReady = true; - } - } - } - - public async ValueTask DisposeAsync() => await BreakpointService.Unsubscribe(_breakpointServiceSubscriptionId); - #endregion - -} diff --git a/src/Connected.Components/Components/Highlighter/Highlighter.razor b/src/Connected.Components/Components/Highlighter/Highlighter.razor deleted file mode 100644 index d1df9c3..0000000 --- a/src/Connected.Components/Components/Highlighter/Highlighter.razor +++ /dev/null @@ -1,22 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -@using System.Text.RegularExpressions -@using static Connected.Components.Splitter - -@foreach (var fragment in _fragments.Span) -{ - if (!string.IsNullOrWhiteSpace(_regex) - && Regex.IsMatch(fragment, - _regex, - CaseSensitive - ? RegexOptions.None - : RegexOptions.IgnoreCase)) - { - @fragment - } - else - { - @fragment - } -} \ No newline at end of file diff --git a/src/Connected.Components/Components/Highlighter/Highlighter.razor.cs b/src/Connected.Components/Components/Highlighter/Highlighter.razor.cs deleted file mode 100644 index a22c80c..0000000 --- a/src/Connected.Components/Components/Highlighter/Highlighter.razor.cs +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Connected.Annotations; -using Microsoft.AspNetCore.Components; -using static Connected.Components.Splitter; - -namespace Connected.Components; - -public partial class Highlighter : UIComponent -{ - #region Variables - private Memory _fragments; - private string _regex; - #endregion - - #region Content - /// - /// The whole text in which a fragment will be highlighted - /// - [Parameter] - [Category(CategoryTypes.Highlighter.Behavior)] - public string Text { get; set; } - - /// - /// The fragment of text to be highlighted - /// - [Parameter] - [Category(CategoryTypes.Highlighter.Behavior)] - public string HighlightedText { get; set; } - - /// - /// The fragments of text to be highlighted - /// - [Parameter] - [Category(CategoryTypes.Highlighter.Behavior)] - public IEnumerable HighlightedTexts { get; set; } - #endregion - - #region Styling - /// - /// Whether or not the highlighted text is case sensitive - /// - [Parameter] - [Category(CategoryTypes.Highlighter.Behavior)] - public bool CaseSensitive { get; set; } - #endregion - - #region Behavior - /// - /// If true, highlights the text until the next regex boundary - /// - [Parameter] - [Category(CategoryTypes.Highlighter.Behavior)] - public bool HighlightUntilNextBoundary { get; set; } - #endregion - - #region Lifecycle - //TODO - //Accept regex highlightings - // [Parameter] public bool IsRegex { get; set; } - protected override void OnParametersSet() - { - _fragments = GetFragments(Text, HighlightedText, HighlightedTexts, out _regex, CaseSensitive, HighlightUntilNextBoundary); - } - #endregion - -} diff --git a/src/Connected.Components/Components/Highlighter/Splitter.cs b/src/Connected.Components/Components/Highlighter/Splitter.cs deleted file mode 100644 index 6724453..0000000 --- a/src/Connected.Components/Components/Highlighter/Splitter.cs +++ /dev/null @@ -1,114 +0,0 @@ -using System.Text; -using System.Text.RegularExpressions; - -namespace Connected.Components; - -public static class Splitter -{ - private const string NextBoundary = ".*?\\b"; - - private static StringBuilder s_stringBuilderCached; - - /// - /// Splits the text into fragments, according to the - /// text to be highlighted - /// - /// The whole text - /// The text to be highlighted - /// The texts to be highlighted - /// Regex expression that was used to split fragments. - /// Whether it's case sensitive or not - /// If true, splits until the next regex boundary - /// - public static Memory GetFragments(string text, - string highlightedText, - IEnumerable highlightedTexts, - out string regex, - bool caseSensitive = false, - bool untilNextBoundary = false) - { - if (string.IsNullOrEmpty(text)) - { - regex = ""; - return Memory.Empty; - } - - var builder = Interlocked.Exchange(ref s_stringBuilderCached, null) ?? new(); - //the first brace in the pattern is to keep the patten when splitting, - //the `(?:` in the pattern is to accept multiple highlightedTexts but not capture them. - builder.Append("((?:"); - - //this becomes true if `AppendPattern` was called at least once. - bool hasAtLeastOnePattern = false; - if (!string.IsNullOrEmpty(highlightedText)) - { - AppendPattern(highlightedText); - } - - if (highlightedTexts is not null) - { - foreach (var substring in highlightedTexts) - { - if (string.IsNullOrEmpty(substring)) - continue; - - //split pattern if we already added an string to search. - if (hasAtLeastOnePattern) - { - builder.Append(")|(?:"); - } - - AppendPattern(substring); - } - } - - if (hasAtLeastOnePattern) - { - //close the last pattern group and the capture group. - builder.Append("))"); - } - else - { - builder.Clear(); - s_stringBuilderCached = builder; - - //all patterns were empty or null. - regex = ""; - return new string[] { text }; - } - - regex = builder.ToString(); - builder.Clear(); - s_stringBuilderCached = builder; - - var splits = Regex - .Split(text, - regex, - caseSensitive - ? RegexOptions.None - : RegexOptions.IgnoreCase); - var length = 0; - for (var i = 0; i < splits.Length; i++) - { - var s = splits[i]; - if (!string.IsNullOrEmpty(s)) - { - splits[length++] = s; - } - } - Array.Clear(splits, length, splits.Length - length); - return splits.AsMemory(0, length); - - void AppendPattern(string value) - { - hasAtLeastOnePattern = true; - //escapes the text for regex - value = Regex.Escape(value); - builder.Append(value); - if (untilNextBoundary) - { - builder.Append(NextBoundary); - } - } - } -} diff --git a/src/Connected.Components/Components/Icon/Icon.razor b/src/Connected.Components/Components/Icon/Icon.razor deleted file mode 100644 index 4900ec0..0000000 --- a/src/Connected.Components/Components/Icon/Icon.razor +++ /dev/null @@ -1,18 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -@if (!string.IsNullOrEmpty(Glyph) && Glyph.Trim().StartsWith(("<"))) -{ - -} -else -{ - -} diff --git a/src/Connected.Components/Components/Icon/Icon.razor.cs b/src/Connected.Components/Components/Icon/Icon.razor.cs deleted file mode 100644 index fcbb86c..0000000 --- a/src/Connected.Components/Components/Icon/Icon.razor.cs +++ /dev/null @@ -1,67 +0,0 @@ -using Connected.Annotations; -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class Icon : UIComponent -{ - - #region Content - /// - /// GlyphTitle of the icon used for accessibility. - /// - [Parameter] - [Category(CategoryTypes.Icon.Behavior)] - public string Title { get; set; } - - /// - /// Child content of component. - /// - [Parameter] - [Category(CategoryTypes.Icon.Behavior)] - public RenderFragment ChildContent { get; set; } - #endregion - - #region Styling - protected string Classname => - new CssBuilder("icon-root") - .AddClass($"icon-default", Color == ThemeColor.Default) - .AddClass($"svg-icon", !string.IsNullOrEmpty(Glyph) && Glyph.Trim().StartsWith("<")) - .AddClass($"{Color.ToDescription()}-text", Color != ThemeColor.Default && Color != ThemeColor.Inherit) - .AddClass($"icon-size-{Size.ToDescription()}") - .AddClass(AdditionalClassList) - .Build(); - - /// - /// Glyph to be used can either be svg paths for font icons. - /// - [Parameter] - [Category(CategoryTypes.Icon.Behavior)] - public string Glyph { get; set; } - - /// - /// The Size of the icon. - /// - [Parameter] - [Category(CategoryTypes.Icon.Appearance)] - public Size Size { get; set; } = Size.Medium; - - /// - /// The color of the component. It supports the theme colors. - /// - [Parameter] - [Category(CategoryTypes.Icon.Appearance)] - public ThemeColor Color { get; set; } = ThemeColor.Inherit; - - /// - /// The viewbox size of an svg element. - /// - [Parameter] - [Category(CategoryTypes.Icon.Behavior)] - public string ViewBox { get; set; } = "0 0 24 24"; - #endregion - - -} diff --git a/src/Connected.Components/Components/Image/Image.razor b/src/Connected.Components/Components/Image/Image.razor deleted file mode 100644 index 13d5db2..0000000 --- a/src/Connected.Components/Components/Image/Image.razor +++ /dev/null @@ -1,4 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -@Alt \ No newline at end of file diff --git a/src/Connected.Components/Components/Image/Image.razor.cs b/src/Connected.Components/Components/Image/Image.razor.cs deleted file mode 100644 index 4a0545f..0000000 --- a/src/Connected.Components/Components/Image/Image.razor.cs +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class Image : UIComponent -{ - #region Content - /// - /// Specifies the path to the image. - /// - [Parameter] - public string Src { get; set; } - - /// - /// Specifies an alternate text for the image. - /// - [Parameter] - public string Alt { get; set; } - #endregion - - #region Styling - - /// - /// Specifies the height of the image in px. - /// - [Parameter] - public int? Height { get; set; } - - /// - /// Specifies the width of the image in px. - /// - [Parameter] - public int? Width { get; set; } - - /// - /// The higher the number, the heavier the drop-shadow. - /// - [Parameter] - public int Elevation { set; get; } - private CssBuilder CompiledClassList - { - get - { - return new CssBuilder("image") - .AddClass("fluid", Fluid) - .AddClass($"object-{ObjectFit.ToDescription()}") - .AddClass($"object-{ObjectPosition.ToDescription()}") - .AddClass($"elevation-{Elevation}", Elevation > 0) - .AddClass(ClassList); - } - } - - /// - /// Applies the fluid class so the image scales with the parent width. - /// - [Parameter] - public bool Fluid { get; set; } - - /// - /// Controls how the image should be resized. - /// - [Parameter] - public ObjectFit ObjectFit { set; get; } = ObjectFit.Fill; - - /// - /// Controls how the image should positioned within its container. - /// - [Parameter] - public Position ObjectPosition { set; get; } = Position.Center; - - /// - /// A space separated list of class names, added on top of the default class list. - /// - [Parameter] - public string? ClassList { get; set; } - #endregion - -} diff --git a/src/Connected.Components/Components/Input/DebouncedInput.cs b/src/Connected.Components/Components/Input/DebouncedInput.cs deleted file mode 100644 index 78fff3e..0000000 --- a/src/Connected.Components/Components/Input/DebouncedInput.cs +++ /dev/null @@ -1,121 +0,0 @@ -using System.Timers; -using Connected.Annotations; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public abstract class DebouncedInput : InputBase -{ - private System.Timers.Timer _timer; - private double _debounceInterval; - - /// - /// Interval to be awaited in milliseconds before changing the Text value - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public double DebounceInterval - { - get => _debounceInterval; - set - { - if (NumericConverter.AreEqual(_debounceInterval, value)) - return; - _debounceInterval = value; - if (_debounceInterval == 0) - { - // not debounced, dispose timer if any - ClearTimer(suppressTick: false); - return; - } - SetTimer(); - } - } - - /// - /// callback to be called when the debounce interval has elapsed - /// receives the Text as a parameter - /// - [Parameter] public EventCallback OnDebounceIntervalElapsed { get; set; } - - protected Task OnChange() - { - if (DebounceInterval > 0 && _timer != null) - { - _timer.Stop(); - return base.UpdateValuePropertyAsync(false); - } - - return Task.CompletedTask; - } - - protected override Task UpdateValuePropertyAsync(bool updateText) - { - // This method is called when Value property needs to be refreshed from the current Text property, so typically because Text property has changed. - // We want to debounce only text-input, not a value being set, so the debouncing is only done when updateText==false (because that indicates the - // change came from a Text setter) - if (updateText) - { - // we have a change coming not from the Text setter, no debouncing is needed - return base.UpdateValuePropertyAsync(updateText); - } - // if debounce interval is 0 we update immediately - if (DebounceInterval <= 0 || _timer == null) - return base.UpdateValuePropertyAsync(updateText); - // If a debounce interval is defined, we want to delay the update of Value property. - _timer.Stop(); - // restart the timer while user is typing - _timer.Start(); - return Task.CompletedTask; - } - - protected override void OnParametersSet() - { - base.OnParametersSet(); - // if input is to be debounced, makes sense to bind the change of the text to oninput - // so we set ChangeTextImmediately to true - if (DebounceInterval > 0) - ChangeTextImmediately = true; - } - - private void SetTimer() - { - if (_timer == null) - { - _timer = new System.Timers.Timer(); - _timer.Elapsed += OnTimerTick; - _timer.AutoReset = false; - } - _timer.Interval = DebounceInterval; - } - - private void OnTimerTick(object sender, ElapsedEventArgs e) - { - InvokeAsync(OnTimerTickGuiThread).AndForget(); - } - - private async Task OnTimerTickGuiThread() - { - await base.UpdateValuePropertyAsync(false); - await OnDebounceIntervalElapsed.InvokeAsync(Text); - } - - private void ClearTimer(bool suppressTick = false) - { - if (_timer == null) - return; - var wasEnabled = _timer.Enabled; - _timer.Stop(); - _timer.Elapsed -= OnTimerTick; - _timer.Dispose(); - _timer = null; - if (wasEnabled && !suppressTick) - OnTimerTickGuiThread().AndForget(); - } - - protected override void Dispose(bool disposing) - { - base.Dispose(disposing); - ClearTimer(suppressTick: true); - } -} diff --git a/src/Connected.Components/Components/Input/Input.razor b/src/Connected.Components/Components/Input/Input.razor deleted file mode 100644 index 44d41eb..0000000 --- a/src/Connected.Components/Components/Input/Input.razor +++ /dev/null @@ -1,144 +0,0 @@ -@namespace Connected.Components -@typeparam T -@inherits InputBase - - -
    - @if (Adornment == Adornment.Start) - { - - } - - @if (Lines > 1) - { - - @*Note: double mouse wheel handlers needed for Firefox because it doesn't know onmousewheel*@ - @*note: the value="@_internalText" is absolutely essential here. the inner html @Text is needed by tests checking it*@ - } - else - { - - @*Note: double mouse wheel handlers needed for Firefox because it doesn't know onmousewheel*@ - - @if (Disabled) { - @*Note: this div must always be there to avoid crashes in WASM, but it is hidden most of the time except if ChildContent should be shown. - In Disabled state the tabindex attribute must NOT be set at all or else it will get focus on click - *@ -
    - @ChildContent -
    - } - else - { - @*Note: this div must always be there to avoid crashes in WASM, but it is hidden most of the time except if ChildContent should be shown.*@ -
    - @ChildContent -
    - } - } - - @if (_showClearable && !Disabled) - { - - } - - @if (Adornment == Adornment.End) - { - - } - - @if (Variant == Variant.Outlined) - { -
    - } - - @if (!HideSpinButtons) - { -
    - - -
    - } -
    \ No newline at end of file diff --git a/src/Connected.Components/Components/Input/Input.razor.cs b/src/Connected.Components/Components/Input/Input.razor.cs deleted file mode 100644 index dce98f6..0000000 --- a/src/Connected.Components/Components/Input/Input.razor.cs +++ /dev/null @@ -1,522 +0,0 @@ -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; -using System.Timers; - -namespace Connected.Components; - -public partial class Input : InputBase -{ - - #region Event Callbacks - - /// - /// Paste hook for descendants. - /// -#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously - - protected virtual async Task OnPaste(ClipboardEventArgs args) -#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously - { - // do nothing - return; - } - - /// - /// callback to be called when the debounce interval has elapsed - /// receives the Text as a parameter - /// - [Parameter] public EventCallback OnDebounceIntervalElapsed { get; set; } - - protected Task OnDebounceChange() - { - - if (TextChangeDelay > 0 && _timer != null) - { - _timer.Stop(); - return base.UpdateValuePropertyAsync(false); - } - return Task.CompletedTask; - } - - protected override Task UpdateValuePropertyAsync(bool updateText) - { - // This method is called when Value property needs to be refreshed from the current Text property, so typically because Text property has changed. - // We want to debounce only text-input, not a value being set, so the debouncing is only done when updateText==false (because that indicates the - // change came from a Text setter) - - if (updateText) - { - // we have a change coming not from the Text setter, no debouncing is needed - return base.UpdateValuePropertyAsync(updateText); - } - // if debounce interval is 0 we update immediately - if (TextChangeDelay <= 0 || _timer == null) - return base.UpdateValuePropertyAsync(updateText); - // If a debounce interval is defined, we want to delay the update of Value property. - _timer.Stop(); - // restart the timer while user is typing - _timer.Start(); - return Task.CompletedTask; - } - - private void OnTimerTick(object sender, ElapsedEventArgs e) - { - InvokeAsync(OnTimerTickGuiThread).AndForget(); - } - - private async Task OnTimerTickGuiThread() - { - await base.UpdateValuePropertyAsync(false); - await OnDebounceIntervalElapsed.InvokeAsync(Text); - } - protected Task OnInput(ChangeEventArgs args) - { - var input = args.Value.ToString(); - /*if (InputType==InputType.Number) - { - if (!Helper.IsNumeric(input)) - { - input = Regex.Replace(input, "[^0-9.]", ""); - Text = input; - UpdateValuePropertyAsync(true); - } - }*/ - if (!ChangeTextImmediately) - return Task.CompletedTask; - _isFocused = true; - return SetTextAsync(input); - } - - protected virtual void OnKeyDown(KeyboardEventArgs obj) - { - if (InputType == InputType.Number) - { - if (Helper.IsNumeric(obj.Key)) - { - _isFocused = true; - base.OnKeyDown.InvokeAsync(obj).AndForget(); - } - } else - { - _isFocused = true; - base.OnKeyDown.InvokeAsync(obj).AndForget(); - } - } - - protected async Task OnChange(ChangeEventArgs args) - { - if (TextChangeDelay > 0 && _timer != null) - { - _timer.Stop(); - await UpdateValuePropertyAsync(false); - } - else - { - _internalText = args?.Value as string; - await OnInternalInputChanged.InvokeAsync(args); - if (!ChangeTextImmediately) - { - await SetTextAsync(args?.Value as string); - } - } - } - - /// - /// Invokes the callback when the Up arrow button is clicked when the input is set to . - /// Note: use the optimized control if you need to deal with numbers. - /// - [Parameter] public EventCallback OnIncrement { get; set; } - - /// - /// Invokes the callback when the Down arrow button is clicked when the input is set to . - /// Note: use the optimized control if you need to deal with numbers. - /// - [Parameter] public EventCallback OnDecrement { get; set; } - - /// - /// Button click event for clear button. Called after text and value has been cleared. - /// - [Parameter] public EventCallback OnClearButtonClick { get; set; } - - /// - /// Mouse wheel event for input. - /// - [Parameter] public EventCallback OnMouseWheel { get; set; } - - public override async ValueTask FocusAsync() - { - try - { - if (InputType == InputType.Hidden && ChildContent != null) - await _elementReference1.FocusAsync(); - else - await ElementReference.FocusAsync(); - } - catch (Exception e) - { - Console.WriteLine("Input.FocusAsync: " + e.Message); - } - } - - public override ValueTask BlurAsync() - { - return ElementReference.BlurAsync(); - } - - public override ValueTask SelectAsync() - { - return ElementReference.SelectAsync(); - } - - public override ValueTask SelectRangeAsync(int pos1, int pos2) - { - return ElementReference.SelectRangeAsync(pos1, pos2); - } - - private void UpdateClearable(object value) - { - var showClearable = Clearable && ((value is string stringValue && !string.IsNullOrWhiteSpace(stringValue)) || (value is not string && value is not null)); - if (_showClearable != showClearable) - _showClearable = showClearable; - } - - protected override async Task UpdateTextPropertyAsync(bool updateValue) - { - await base.UpdateTextPropertyAsync(updateValue); - if (Clearable) - UpdateClearable(Text); - } - - protected virtual async Task ClearButtonClickHandlerAsync(MouseEventArgs e) - { - await SetTextAsync(string.Empty, updateValue: true); - await ElementReference.FocusAsync(); - await OnClearButtonClick.InvokeAsync(e); - } - - /// - /// Custom input Attributes - /// - [Parameter] public Dictionary? Attributes { get; set; } = null; - - #endregion - - #region Style properties - - /// - /// Type of the input element. It should be a valid HTML5 input type. - /// - [Parameter] public InputType InputType { get; set; } = InputType.Text; - - private string ClearIcon = Icons.Material.Filled.Clear; - - private string NumericUpIcon = Icons.Material.Filled.KeyboardArrowUp; - - private string NumericDownIcon = Icons.Material.Filled.KeyboardArrowDown; - - /// - /// Hides the spin buttons"/> - /// - [Parameter] public bool HideSpinButtons { get; set; } = true; - - internal override InputType GetInputType() - { - return InputType; - } - - /// - /// Show clear button. - /// - [Parameter] public bool Clearable { get; set; } = false; - - #region Wrapper class - /*[Parameter] - public string WrapperClass { get; set; } = string.Empty;*/ - - /*protected string WrapperClass => InputCssHelper.GetClassname(this, - () => HasNativeHtmlPlaceholder() || !string.IsNullOrEmpty(Text) || Adornment == Adornment.Start || !string.IsNullOrWhiteSpace(Placeholder));*/ - - [Parameter] - public string ClassList { get; set; } = string.Empty; - - protected string WrapperClassList - { - get - { - /*return new CssBuilder("input") - .AddClass($"input-{Variant.ToDescription()}") - .AddClass($"input-adorned-{Adornment.ToDescription()}", Adornment != Adornment.None) - .AddClass($"input-margin-{Margin.ToDescription()}", when: () => Margin != Margin.None) - .AddClass($"input-underline", when: () => DisableUnderLine == false && Variant != Variant.Outlined) - .AddClass($"shrink", when: HasNativeHtmlPlaceholder() || !string.IsNullOrEmpty(Text) || Adornment == Adornment.Start || !string.IsNullOrWhiteSpace(Placeholder)) - .AddClass($"disabled", Disabled) - .AddClass($"input-error", HasErrors) - .AddClass($"ltr", GetInputType() == InputType.Email || GetInputType() == InputType.Telephone) - .AddClass(WrapperClass) - .Build();*/ - - var clasList = new CssBuilder("input") - .AddClass($"input-{Variant.ToDescription()}") - .AddClass($"input-adorned-{Adornment.ToDescription()}", Adornment != Adornment.None) - .AddClass($"input-margin-{Margin.ToDescription()}", when: () => Margin != Margin.None) - .AddClass("input-underline", when: () => DisableUnderLine == false && Variant != Variant.Outlined) - //.AddClass("shrink", when: () => HasNativeHtmlPlaceholder() || !string.IsNullOrEmpty(Text) || Adornment == Adornment.Start || !string.IsNullOrWhiteSpace(Placeholder)) - .AddClass("disabled", Disabled) - .AddClass("input-error", HasErrors) - .AddClass("ltr", GetInputType() == InputType.Email || GetInputType() == InputType.Telephone) - .AddClass(ClassList) - .Build(); - return clasList; - - } - } - - /// - /// User styles, applied on top of the component's own classes and styles. - /// - [Parameter] - public string Style { get; set; } - - - #endregion - - #region Input field class - - [Parameter] - public string InputClass { get; set; } = string.Empty; - protected string InputClassList - { - get - { - return new CssBuilder("input-slot") - .AddClass("input-root") - .AddClass($"input-root-{Variant.ToDescription()}") - .AddClass($"input-root-adorned-{Adornment.ToDescription()}", Adornment != Adornment.None) - .AddClass($"input-root-margin-{Margin.ToDescription()}", when: () => Margin != Margin.None) - .AddClass(InputClass) - .Build(); - - //return new CssBuilder().AddClass(InputCssHelper.GetInputClassname(this)).Build(); - } - } - #endregion - - #region Adornment class - [Parameter] - public string AdornmentClass { get; set; } = string.Empty; - protected string AdornmentClassList - { - get - { - return new CssBuilder("input-adornment") - .AddClass($"input-adornment-{Adornment.ToDescription()}", Adornment != Adornment.None) - .AddClass($"text", !string.IsNullOrEmpty(AdornmentText)) - .AddClass($"input-root-filled-shrink", Variant == Variant.Filled) - .AddClass(AdornmentClass) - .Build(); - - //return new CssBuilder().AddClass(InputCssHelper.GetAdornmentClassname(this)).Build(); - } - } - #endregion - - #region Clear icon class - [Parameter] - public string ClearButtonClass { get; set; } = string.Empty; - protected string ClearButtonClassList - { - get - { - return new CssBuilder() - .AddClass("me-n1", Adornment == Adornment.End && HideSpinButtons == false) - .AddClass("icon-button-edge-end", Adornment == Adornment.End && HideSpinButtons == true) - .AddClass("me-6", Adornment != Adornment.End && HideSpinButtons == false) - .AddClass("micon-button-edge-margin-end", Adornment != Adornment.End && HideSpinButtons == true) - .AddClass(ClearButtonClass) - .Build(); - } - } - #endregion - - #region Helper container class - - /// - /// A space separated list of class names, added on top of the default helper container class list. - /// - [Parameter] - public string? HelperContainerClass { get; set; } - protected string HelperContainerClassList - { - get - { - return new CssBuilder("input-control-helper-container") - .AddClass($"px-1", Variant == Variant.Filled) - .AddClass($"px-2", Variant == Variant.Outlined) - .AddClass($"px-1", Variant == Variant.Text) - .AddClass(HelperContainerClass) - .Build(); - } - } - - #endregion - - #region Error container class -- still needs implementation - - #endregion - - #region Counter container class -- still needs implementation - - #endregion - - #endregion - - #region Content placeholders - - /// - /// The current character counter, displayed below the text field. - /// - [Parameter] public bool ShowCharacterCounter { get; set; } - - /// - /// The current character counter, displayed below the text field. - /// - public string GetCounterText() - { - if (ShowCharacterCounter) - return Text.Length.ToString(); - return string.Empty; - } - - private System.Timers.Timer _timer; - - private double _textChangeInterval; - - [Parameter] - public int Lines { get; set; } = 1; - - - /// - /// Interval to be awaited in MILLISECONDS before changing the Text value - /// - [Parameter] - public double TextChangeDelay - { - get => _textChangeInterval; - set - { - if (NumericConverter.AreEqual(_textChangeInterval, value)) - return; - _textChangeInterval = value; - if (_textChangeInterval == 0) - { - // not debounced, dispose timer if any - ClearTimer(suppressTick: false); - return; - } - SetTimer(); - } - } - - private void SetTimer() - { - if (_timer == null) - { - _timer = new System.Timers.Timer(); - _timer.Elapsed += OnTimerTick; - _timer.AutoReset = false; - } - _timer.Interval = TextChangeDelay; - } - - private void ClearTimer(bool suppressTick = false) - { - if (_timer == null) - return; - var wasEnabled = _timer.Enabled; - _timer.Stop(); - _timer.Elapsed -= OnTimerTick; - _timer.Dispose(); - _timer = null; - if (wasEnabled && !suppressTick) - OnTimerTickGuiThread().AndForget(); - } - - /// - /// ChildContent of the MudInput will only be displayed if InputType.Hidden and if its not null. - /// - [Parameter] public RenderFragment ChildContent { get; set; } - - private string TextCounter() - { - if (string.IsNullOrEmpty(Text)) return "0"; - return Text.Length.ToString(); - } - - [Parameter] - public double Step { get; set; } = 1; - //internal override InputType GetInputType() => InputType; - protected string InputTypeString => InputType.ToDescription(); - public ElementReference ElementReference { get; private set; } - private ElementReference _elementReference1; - private Size GetButtonSize() => Margin == Margin.Dense ? Size.Small : Size.Medium; - private bool _showClearable; - private string _internalText; - - /// - /// Sets the input text from outside programmatically - /// - /// - /// - public Task SetText(string text) - { - _internalText = text; - return SetTextAsync(text); - } - - private bool HasNativeHtmlPlaceholder() - { - return GetInputType() is InputType.Color or InputType.Date or InputType.DateTimeLocal or InputType.Month - or InputType.Time or InputType.Week; - } - - #endregion - - #region Lifecycle events - public override async Task SetParametersAsync(ParameterView parameters) - { - await base.SetParametersAsync(parameters); - //if (!_isFocused || _forceTextUpdate) - // _internalText = Text; - if (RuntimeLocation.IsServerSide && TextUpdateSuppression) - { - // Text update suppression, only in BSS (not in WASM). - // This is a fix for #1012 - if (!_isFocused || _forceTextUpdate) - _internalText = Text; - } - else - { - // in WASM (or in BSS with TextUpdateSuppression==false) we always update - _internalText = Text; - } - - if (Helper.IsNumericType(typeof(T).Name) && InputType != InputType.Number) - { - InputType = InputType.Number; - } - - } - - protected override void OnParametersSet() - { - base.OnParametersSet(); - // if input is to be debounced, makes sense to bind the change of the text to oninput - // so we set ChangeTextImmediately to true - if (TextChangeDelay > 0) - ChangeTextImmediately = true; - } - #endregion - -} diff --git a/src/Connected.Components/Components/Input/InputAdornment.razor b/src/Connected.Components/Components/Input/InputAdornment.razor deleted file mode 100644 index ae4e49a..0000000 --- a/src/Connected.Components/Components/Input/InputAdornment.razor +++ /dev/null @@ -1,34 +0,0 @@ -@namespace Connected.Components - - - -
    - @if (!string.IsNullOrWhiteSpace(Text)) - { - @Text - } - else if (!string.IsNullOrWhiteSpace(Icon)) - { - @if (AdornmentClick.HasDelegate) - { - - } - else - { - - } - } -
    - - -@code { - [Parameter] public string Class { get; set; } - [Parameter] public string Text { get; set; } - [Parameter] public string Icon { get; set; } - [Parameter] public Edge Edge { get; set; } - [Parameter] public Size Size { get; set; } = Size.Medium; - [Parameter] public ThemeColor Color { get; set; } = ThemeColor.Default; - [Parameter] public string AriaLabel { get; set; } - - [Parameter] public EventCallback AdornmentClick { get; set; } -} diff --git a/src/Connected.Components/Components/Input/InputBase.cs b/src/Connected.Components/Components/Input/InputBase.cs deleted file mode 100644 index 571abc8..0000000 --- a/src/Connected.Components/Components/Input/InputBase.cs +++ /dev/null @@ -1,493 +0,0 @@ -using System.Globalization; -using Connected.Annotations; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Components; - -public abstract class InputBase : FormComponent -{ - private bool _isDirty; - - protected InputBase() : base(new DefaultConverter()) { } - - /// - /// If true, the input element will be disabled. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool Disabled { get; set; } - - /// - /// If true, the input will be read-only. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool ReadOnly { get; set; } - - /// - /// If true, the input will take up the full width of its container. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public bool FullWidth { get; set; } - - /// - /// If true, the input will update the Value immediately on typing. - /// If false, the Value is updated only on Enter. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool ChangeTextImmediately { get; set; } = true; - - /// - /// If true, the input will not have an underline. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public bool DisableUnderLine { get; set; } - - /// - /// The HelperText will be displayed below the text field. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public string HelperText { get; set; } - - /// - /// If true, the helper text will only be visible on focus. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool HelperTextOnFocus { get; set; } - - /// - /// Glyph that will be used if Adornment is set to Start or End. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public string AdornmentIcon { get; set; } - - /// - /// Text that will be used if Adornment is set to Start or End, the Text overrides Glyph. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public string AdornmentText { get; set; } - - /// - /// The Adornment if used. By default, it is set to None. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public Adornment Adornment { get; set; } = Adornment.None; - - /// - /// The validation is only triggered if the user has changed the input value at least once. By default, it is false - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool OnlyValidateIfDirty { get; set; } = false; - - /// - /// The color of the adornment if used. It supports the theme colors. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public ThemeColor AdornmentColor { get; set; } = ThemeColor.Default; - - /// - /// The aria-label of the adornment. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public string AdornmentAriaLabel { get; set; } = string.Empty; - - /// - /// The Glyph Size. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public Size IconSize { get; set; } = Size.Medium; - - /// - /// Button click event if set and Adornment used. - /// - [Parameter] public EventCallback OnAdornmentClick { get; set; } - - /// - /// Variant to use. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public Variant Variant { get; set; } = Variant.Text; - - /// - /// Will adjust vertical spacing. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Appearance)] - public Margin Margin { get; set; } = Margin.None; - - /// - /// The short hint displayed in the input before the user enters a value. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public string Placeholder { get; set; } - - /// - /// If set, will display the counter, value 0 will display current count but no stop count. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Validation)] - public int? Counter { get; set; } - - /// - /// Maximum number of characters that the input will accept - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Validation)] - public int MaxLength { get; set; } = 524288; - - /// - /// If string has value the label text will be displayed in the input, and scaled down at the top if the input has value. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public string Label { get; set; } - - /// - /// If true the input will focus automatically. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool AutoFocus { get; set; } - - /// - /// A multiline input (textarea) will be shown, if set to more than one line. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public int NumberOfLines { get; set; } = 1; - - /// - /// The text to be displayed. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Data)] - public string Text { get; set; } - - /// - /// When TextUpdateSuppression is true (which is default) the text can not be updated by bindings while the component is focused in BSS (not WASM). - /// This solves issue #1012: Textfield swallowing chars when typing rapidly - /// If you need to update the input's text while it is focused you can set this parameter to false. - /// Note: on WASM text update suppression is not active, so this parameter has no effect. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool TextUpdateSuppression { get; set; } = true; - - /// - /// Hints at the type of data that might be entered by the user while editing the input - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public virtual InputMode InputMode { get; set; } = InputMode.text; - - /// - /// The pattern attribute, when specified, is a regular expression which the input's value must match in order for the value to pass constraint validation. It must be a valid JavaScript regular expression - /// Not Supported in multline input - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Validation)] - public virtual string Pattern { get; set; } - - /// - /// Derived classes need to override this if they can be something other than text - /// - internal virtual InputType GetInputType() { return InputType.Text; } - - protected virtual async Task SetTextAsync(string text, bool updateValue = true) - { - if (Text != text) - { - Text = text; - if (!string.IsNullOrWhiteSpace(Text)) - Modified = true; - if (updateValue) - await UpdateValuePropertyAsync(false); - await TextChanged.InvokeAsync(Text); - } - - } - - /// - /// Text change hook for descendants. Called when Text needs to be refreshed from current Value property. - /// - protected virtual Task UpdateTextPropertyAsync(bool updateValue) - { - return SetTextAsync(Converter.Convert(Value), updateValue); - } - - /// - /// Focuses the element - /// - /// The ValueTask - public virtual ValueTask FocusAsync() { return new ValueTask(); } - - public virtual ValueTask BlurAsync() { return new ValueTask(); } - - public virtual ValueTask SelectAsync() { return new ValueTask(); } - - public virtual ValueTask SelectRangeAsync(int pos1, int pos2) { return new ValueTask(); } - - /// - /// Fired when the text value changes. - /// - [Parameter] public EventCallback TextChanged { get; set; } - - /// - /// Fired when the element loses focus. - /// - [Parameter] public EventCallback OnBlur { get; set; } - - /// - /// Fired when the element changes internally its text value. - /// - [Parameter] - public EventCallback OnInternalInputChanged { get; set; } - - protected bool _isFocused; - - protected internal virtual void OnBlurred(FocusEventArgs obj) - { - _isFocused = false; - - if (!OnlyValidateIfDirty || _isDirty) - { - Modified = true; - BeginValidateAfter(OnBlur.InvokeAsync(obj)); - } - } - - /// - /// Fired on the KeyDown event. - /// - [Parameter] public EventCallback OnKeyDown { get; set; } - - protected virtual void InvokeKeyDown(KeyboardEventArgs obj) - { - _isFocused = true; - OnKeyDown.InvokeAsync(obj).AndForget(); - } - - /// - /// Prevent the default action for the KeyDown event. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool KeyDownPreventDefault { get; set; } - - - /// - /// Fired on the KeyPress event. - /// - [Parameter] public EventCallback OnKeyPress { get; set; } - - protected virtual void InvokeKeyPress(KeyboardEventArgs obj) - { - OnKeyPress.InvokeAsync(obj).AndForget(); - } - - /// - /// Prevent the default action for the KeyPress event. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool KeyPressPreventDefault { get; set; } - - /// - /// Fired on the KeyUp event. - /// - [Parameter] public EventCallback OnKeyUp { get; set; } - - protected virtual void InvokeKeyUp(KeyboardEventArgs obj) - { - _isFocused = true; - OnKeyUp.InvokeAsync(obj).AndForget(); - } - - /// - /// Prevent the default action for the KeyUp event. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public bool KeyUpPreventDefault { get; set; } - - /// - /// Fired when the Value property changes. - /// - [Parameter] - public EventCallback ValueChanged - { - get; - set; - } - - /// - /// The value of this input element. - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Data)] - public T Value - { - get => _value; - set => _value = value; - } - - protected virtual async Task SetValueAsync(T value, bool updateText = true) - { - if (!EqualityComparer.Default.Equals(Value, value)) - { - _isDirty = true; - Value = value; - if (updateText) - await UpdateTextPropertyAsync(false); - await ValueChanged.InvokeAsync(Value); - BeginValidate(); - FieldChanged(Value); - } - } - - /// - /// Value change hook for descendants. Called when Value needs to be refreshed from current Text property. - /// - protected virtual Task UpdateValuePropertyAsync(bool updateText) - { - return SetValueAsync(Converter.ConvertBack(Text), updateText); - } - - protected override bool SetConverter(Converter value) - { - var changed = base.SetConverter(value); - if (changed) - UpdateTextPropertyAsync(false).AndForget(); // refresh only Text property from current Value - - return changed; - } - - protected override bool SetCulture(CultureInfo value) - { - var changed = base.SetCulture(value); - if (changed) - UpdateTextPropertyAsync(false).AndForget(); // refresh only Text property from current Value - - return changed; - } - - /// - /// Conversion format parameter for ToString(), can be used for formatting primitive types, DateTimes and TimeSpans - /// - [Parameter] - [Category(CategoryTypes.FormComponent.Behavior)] - public string Format - { - get => ((ToStringConverter)Converter).Format; - set => SetFormat(value); - } - - protected virtual bool SetFormat(string value) - { - var changed = Format != value; - if (changed) - { - ((ToStringConverter)Converter).Format = value; - UpdateTextPropertyAsync(false).AndForget(); // refresh only Text property from current Value - } - return changed; - } - - protected override Task ValidateValue() - { - if (SubscribeToParentForm) - return base.ValidateValue(); - - return Task.CompletedTask; - } - - protected override async Task OnInitializedAsync() - { - await base.OnInitializedAsync(); - - // Because the way the Value setter is built, it won't cause an update if the incoming Value is - // equal to the initial value. This is why we force an update to the Text property here. - if (typeof(T) != typeof(string)) - await UpdateTextPropertyAsync(false); - - if (Label == null && For != null) - Label = For.GetLabelString(); - } - - public virtual void ForceRender(bool forceTextUpdate) - { - _forceTextUpdate = true; - UpdateTextPropertyAsync(false).AndForget(); - StateHasChanged(); - } - - protected bool _forceTextUpdate; - - public override async Task SetParametersAsync(ParameterView parameters) - { - await base.SetParametersAsync(parameters); - - var hasText = parameters.Contains(nameof(Text)); - var hasValue = parameters.Contains(nameof(Value)); - - // Refresh Value from Text - if (hasText && !hasValue) - await UpdateValuePropertyAsync(false); - - // Refresh Text from Value - if (hasValue && !hasText) - { - var updateText = true; - if (_isFocused && !_forceTextUpdate) - { - // Text update suppression, only in BSS (not in WASM). - // This is a fix for #1012 - if (RuntimeLocation.IsServerSide && TextUpdateSuppression) - updateText = false; - } - if (updateText) - { - _forceTextUpdate = false; - await UpdateTextPropertyAsync(false); - } - } - } - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - //Only focus automatically after the first render cycle! - if (firstRender && AutoFocus) - { - await FocusAsync(); - } - } - - protected override void OnParametersSet() - { - if (SubscribeToParentForm) - base.OnParametersSet(); - } - - protected override void ResetValue() - { - SetTextAsync(null, updateValue: true).AndForget(); - _isDirty = false; - base.ResetValue(); - } -} diff --git a/src/Connected.Components/Components/Input/InputCssHelper.cs b/src/Connected.Components/Components/Input/InputCssHelper.cs deleted file mode 100644 index cb5dc3c..0000000 --- a/src/Connected.Components/Components/Input/InputCssHelper.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Connected.Extensions; -using Connected.Utilities; - -namespace Connected.Components; - -internal static class InputCssHelper -{ - public static string GetClassname(InputBase baseInput, Func shrinkWhen) => - new CssBuilder("input") - .AddClass($"input-{baseInput.Variant.ToDescription()}") - .AddClass($"input-adorned-{baseInput.Adornment.ToDescription()}", baseInput.Adornment != Adornment.None) - .AddClass($"input-margin-{baseInput.Margin.ToDescription()}", when: () => baseInput.Margin != Margin.None) - .AddClass("input-underline", when: () => baseInput.DisableUnderLine == false && baseInput.Variant != Variant.Outlined) - .AddClass("shrink", when: shrinkWhen) - .AddClass("disabled", baseInput.Disabled) - .AddClass("input-error", baseInput.HasErrors) - .AddClass("ltr", baseInput.GetInputType() == InputType.Email || baseInput.GetInputType() == InputType.Telephone) - .AddClass(baseInput.AdditionalClassList) - .Build(); - - public static string GetInputClassname(InputBase baseInput) => - new CssBuilder("input-slot") - .AddClass("input-root") - .AddClass($"input-root-{baseInput.Variant.ToDescription()}") - .AddClass($"input-root-adorned-{baseInput.Adornment.ToDescription()}", baseInput.Adornment != Adornment.None) - .AddClass($"input-root-margin-{baseInput.Margin.ToDescription()}", when: () => baseInput.Margin != Margin.None) - .AddClass(baseInput.AdditionalClassList) - .Build(); - - public static string GetAdornmentClassname(InputBase baseInput) => - new CssBuilder("input-adornment") - .AddClass($"input-adornment-{baseInput.Adornment.ToDescription()}", baseInput.Adornment != Adornment.None) - .AddClass($"text", !string.IsNullOrEmpty(baseInput.AdornmentText)) - .AddClass($"input-root-filled-shrink", baseInput.Variant == Variant.Filled) - .AddClass(baseInput.AdditionalClassList) - .Build(); -} diff --git a/src/Connected.Components/Components/Input/InputLabel.razor b/src/Connected.Components/Components/Input/InputLabel.razor deleted file mode 100644 index 59548b0..0000000 --- a/src/Connected.Components/Components/Input/InputLabel.razor +++ /dev/null @@ -1,6 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - - diff --git a/src/Connected.Components/Components/Input/InputLabel.razor.cs b/src/Connected.Components/Components/Input/InputLabel.razor.cs deleted file mode 100644 index 1bc3cd6..0000000 --- a/src/Connected.Components/Components/Input/InputLabel.razor.cs +++ /dev/null @@ -1,48 +0,0 @@ -using Connected.Extensions; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class InputLabel : UIComponent -{ - protected string Classname => - new Utilities.CssBuilder() - .AddClass("input-label") - .AddClass("input-label-animated") - .AddClass($"input-label-{Variant.ToDescription()}") - .AddClass($"input-label-margin-{Margin.ToDescription()}", when: () => Margin != Margin.None) - .AddClass($"disabled", Disabled) - .AddClass("input-error", Error) - .AddClass(AdditionalClassList) - .Build(); - - /// - /// Child content of component. - /// - [Parameter] public RenderFragment ChildContent { get; set; } - - /// - /// If true, the input element will be disabled. - /// - [Parameter] public bool Disabled { get; set; } - - /// - /// If true, the label will be displayed in an error state. - /// - [Parameter] public bool Error { get; set; } - - /// - /// Variant to use. - /// - [Parameter] public Variant Variant { get; set; } = Variant.Text; - - /// - /// Will adjust vertical spacing. - /// - [Parameter] public Margin Margin { get; set; } = Margin.None; - - /// - /// Will set the for attribute for WCAG accessiblility - /// - [Parameter] public string ForId { get; set; } = string.Empty; -} diff --git a/src/Connected.Components/Components/Input/Range.cs b/src/Connected.Components/Components/Input/Range.cs deleted file mode 100644 index 8de9ac7..0000000 --- a/src/Connected.Components/Components/Input/Range.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace Connected.Components; - -public class Range -{ - public T Start { get; set; } - - public T End { get; set; } - - public Range() - { - - } - - public Range(T start, T end) - { - Start = start; - End = end; - } - - public override bool Equals(object obj) - { - return obj is Range r && null != r.Start && r.Start.Equals(Start) && null != r.End && r.End.Equals(End); - } - - public override int GetHashCode() - { - return base.GetHashCode(); - } -} diff --git a/src/Connected.Components/Components/Input/RangeInput.razor b/src/Connected.Components/Components/Input/RangeInput.razor deleted file mode 100644 index 8f97847..0000000 --- a/src/Connected.Components/Components/Input/RangeInput.razor +++ /dev/null @@ -1,33 +0,0 @@ -@namespace Connected.Components -@typeparam T -@inherits InputBase> - -
    - @if (Adornment == Adornment.Start) - { - - } - - @if (InputType == InputType.Hidden && ChildContent != null) - { -
    - @ChildContent -
    - } - - - - - - @if (Adornment == Adornment.End) - { - - } - - @if (Variant == Variant.Outlined) - { -
    - } -
    \ No newline at end of file diff --git a/src/Connected.Components/Components/Input/RangeInput.razor.cs b/src/Connected.Components/Components/Input/RangeInput.razor.cs deleted file mode 100644 index de4ad70..0000000 --- a/src/Connected.Components/Components/Input/RangeInput.razor.cs +++ /dev/null @@ -1,132 +0,0 @@ -using Connected.Extensions; -using Connected.Utilities.BindingConverters; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class RangeInput : InputBase> -{ - private string _textStart, _textEnd; - - public RangeInput() - { - Value = new Range(); - SetConverter(new RangeConverter()); - } - - protected string Classname => InputCssHelper.GetClassname(this, - () => !string.IsNullOrEmpty(Text) || Adornment == Adornment.Start || !string.IsNullOrWhiteSpace(PlaceholderStart) || !string.IsNullOrWhiteSpace(PlaceholderEnd)); - - /// - /// Type of the input element. It should be a valid HTML5 input type. - /// - [Parameter] public InputType InputType { get; set; } = InputType.Text; - - internal override InputType GetInputType() => InputType; - - protected string InputClassname => InputCssHelper.GetInputClassname(this); - - protected string AdornmentClassname => InputCssHelper.GetAdornmentClassname(this); - - /// - /// The short hint displayed in the start input before the user enters a value. - /// - [Parameter] public string PlaceholderStart { get; set; } - - /// - /// The short hint displayed in the end input before the user enters a value. - /// - [Parameter] public string PlaceholderEnd { get; set; } - - protected string InputTypeString => InputType.ToDescription(); - - /// - /// ChildContent of the MudInput will only be displayed if InputType.Hidden and if its not null. - /// - [Parameter] public RenderFragment ChildContent { get; set; } - - private ElementReference _elementReferenceStart, _elementReferenceEnd; - - /// - /// Custom separator icon, leave null for default. - /// - [Parameter] public string SeparatorIcon { get; set; } = Icons.Material.Filled.ArrowRightAlt; - - /// - /// Focuses the start input of MudRangeInput - /// - /// - public ValueTask FocusStartAsync() => _elementReferenceStart.FocusAsync(); - - /// - /// Selects the start text of MudRangeInput - /// - /// - public ValueTask SelectStartAsync() => _elementReferenceStart.SelectAsync(); - - /// - /// Selects the specified range of the start text - /// - /// Start position of the selection - /// End position of the selection - /// - public ValueTask SelectRangeStartAsync(int pos1, int pos2) => _elementReferenceStart.SelectRangeAsync(pos1, pos2); - - /// - /// Focuses the end input of MudRangeInput - /// - /// - public ValueTask FocusEndAsync() => _elementReferenceEnd.FocusAsync(); - - /// - /// Selects the end text of MudRangeInput - /// - /// - public ValueTask SelectEndAsync() => _elementReferenceEnd.SelectAsync(); - - /// - /// Selects the specified range of the end text - /// - /// Start position of the selection - /// End position of the selection - /// - public ValueTask SelectRangeEndAsync(int pos1, int pos2) => _elementReferenceEnd.SelectRangeAsync(pos1, pos2); - - public string TextStart - { - get => _textStart; - set - { - if (_textStart == value) - return; - _textStart = value; - SetTextAsync(RangeConverter.Join(_textStart, _textEnd)).AndForget(); - } - } - - public string TextEnd - { - get => _textEnd; - set - { - if (_textEnd == value) - return; - _textEnd = value; - SetTextAsync(RangeConverter.Join(_textStart, _textEnd)).AndForget(); - } - } - - protected override async Task UpdateTextPropertyAsync(bool updateValue) - { - await base.UpdateTextPropertyAsync(updateValue); - - RangeConverter.Split(Text, out _textStart, out _textEnd); - } - - protected override async Task UpdateValuePropertyAsync(bool updateText) - { - await base.UpdateValuePropertyAsync(updateText); - - RangeConverter.Split(Text, out _textStart, out _textEnd); - } -} diff --git a/src/Connected.Components/Components/InputBase.cs b/src/Connected.Components/Components/InputBase.cs new file mode 100644 index 0000000..581ff4e --- /dev/null +++ b/src/Connected.Components/Components/InputBase.cs @@ -0,0 +1,87 @@ +using Connected.Utilities; +using Microsoft.AspNetCore.Components; + +namespace Connected.Components; +public class InputBase : ComponentBase +{ + [Parameter] + public string Class { get; set; } = string.Empty; + + public string InputFieldClassList + { + get + { + return new CssBuilder("form-group") + .AddClass("error", ErrorText.Length > 0) + .AddClass(Class) + .Build(); + } + } + + /// + /// Show clear button. + /// + [Parameter] + public bool Clearable { get; set; } = true; + + /// + /// Required property + /// + [Parameter] + public bool Required { get; set; } = false; + + public Dictionary InputAttributes { get; set; } + + /// + /// Show clear button. + /// + [Parameter] + public bool Disabled { get; set; } = false; + + /// + /// Show clear button. + /// + [Parameter] + public bool Readonly { get; set; } = false; + + /// + /// The show input character counter + /// + [Parameter] + public bool ShowCharacterCounter { get; set; } + + [Parameter] + public string ErrorText { get; set; } = string.Empty; + + public bool IsError + { + get + { + return !string.IsNullOrEmpty(ErrorText); + } + } + + [Parameter] + public string HelperText { get; set; } = string.Empty; + + public bool IsHelperText + { + get + { + return !string.IsNullOrEmpty(HelperText); + } + } + + [Parameter] + public string Label { get; set; } = string.Empty; + public bool IsLabel + { + get + { + return !string.IsNullOrEmpty(Label); + } + } + + [Parameter] + public string Placeholder { get; set; } = string.Empty; +} diff --git a/src/Connected.Components/Components/InputControl/InputControl.razor b/src/Connected.Components/Components/InputControl/InputControl.razor deleted file mode 100644 index e52ecb3..0000000 --- a/src/Connected.Components/Components/InputControl/InputControl.razor +++ /dev/null @@ -1,43 +0,0 @@ -@namespace Connected.Components -@inherits UIComponent - -
    -
    - @InputContent - @if (!String.IsNullOrEmpty(Label)) - { - - @Label - - } -
    - @if (Error || !String.IsNullOrEmpty(HelperText) || !String.IsNullOrEmpty(CounterText)) - { -
    -

    -

    - @if (Error) - { -
    - @ErrorText -
    - } - else if (!String.IsNullOrEmpty(HelperText)) - { -
    - @HelperText -
    - } - @if (!String.IsNullOrEmpty(CounterText)) - { -
    - @CounterText -
    - } -
    -

    -
    - } - @ChildContent -
    \ No newline at end of file diff --git a/src/Connected.Components/Components/InputControl/InputControl.razor.cs b/src/Connected.Components/Components/InputControl/InputControl.razor.cs deleted file mode 100644 index 8eafd54..0000000 --- a/src/Connected.Components/Components/InputControl/InputControl.razor.cs +++ /dev/null @@ -1,114 +0,0 @@ -using Connected.Extensions; -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.Components; - -public partial class InputControl : UIComponent -{ - #region Content - - /// - /// Child content of component. - /// - [Parameter] public RenderFragment ChildContent { get; set; } - - /// - /// Should be the Input - /// - [Parameter] public RenderFragment InputContent { get; set; } - - /// - /// The ErrorText that will be displayed if Error true - /// - [Parameter] public string ErrorText { get; set; } - - /// - /// The HelperText will be displayed below the text field. - /// - [Parameter] public string HelperText { get; set; } - - /// - /// The current character counter, displayed below the text field. - /// - [Parameter] public string CounterText { get; set; } - - /// - /// If string has value the label text will be displayed in the input, and scaled down at the top if the input has value. - /// - [Parameter] public string Label { get; set; } - - /// - /// If string has value the label "for" attribute will be added. - /// - [Parameter] public string ForId { get; set; } = string.Empty; - #endregion - - #region Styling - protected string Classname => - new CssBuilder("input-control") - .AddClass("input-required", when: () => Required) - .AddClass($"input-control-margin-{Margin.ToDescription()}", when: () => Margin != Margin.None) - .AddClass("input-control-full-width", FullWidth) - .AddClass("input-error", Error) - .AddClass(AdditionalClassList) - .Build(); - - protected string HelperContainer => - new CssBuilder("input-control-helper-container") - .AddClass($"px-1", Variant == Variant.Filled) - .AddClass($"px-2", Variant == Variant.Outlined) - .Build(); - - protected string HelperClass => - new CssBuilder("input-helper-text") - .AddClass("input-helper-onfocus", HelperTextOnFocus) - .AddClass("input-error", Error) - .Build(); - - /// - /// Will adjust vertical spacing. - /// - [Parameter] public Margin Margin { get; set; } = Margin.None; - - /// - /// If true, the input will take up the full width of its container. - /// - [Parameter] public bool FullWidth { get; set; } - - - /// - /// Variant can be Text, Filled or Outlined. - /// - [Parameter] public Variant Variant { get; set; } = Variant.Text; - - /// - /// If true, the input element will be disabled. - /// - [Parameter] public bool Disabled { get; set; } - #endregion - - - #region Behavior - /// - /// If true, the label will be displayed in an error state. - /// - [Parameter] public bool Error { get; set; } - - /// - /// If true, will apply mud-input-required class to the output div - /// - [Parameter] public bool Required { get; set; } - - /// - /// If true, the helper text will only be visible on focus. - /// - [Parameter] public bool HelperTextOnFocus { get; set; } - - /// - /// The ErrorId that will be used by aria-describedby if Error true - /// - [Parameter] public string ErrorId { get; set; } - #endregion - -} diff --git a/src/Connected.Components/Components/InputNumber.razor b/src/Connected.Components/Components/InputNumber.razor new file mode 100644 index 0000000..92ce583 --- /dev/null +++ b/src/Connected.Components/Components/InputNumber.razor @@ -0,0 +1,45 @@ +@inherits InputBase + +@typeparam NumberType + +
    + + + + + @if (IsLabel) + { + + } + @if (IsHelperText && !IsError) + { +
    @HelperText
    + } + @if (IsError) + { +
    @ErrorText
    + } + + + @if (Clearable) + { + + + + } + @if (IsError) + { + + + + } + + +
    \ No newline at end of file diff --git a/src/Connected.Components/Components/InputNumber.razor.cs b/src/Connected.Components/Components/InputNumber.razor.cs new file mode 100644 index 0000000..bf692c8 --- /dev/null +++ b/src/Connected.Components/Components/InputNumber.razor.cs @@ -0,0 +1,55 @@ +using Microsoft.AspNetCore.Components; +using System.Numerics; + +namespace Connected.Components; +public partial class InputNumber:InputBase where NumberType : INumber +{ + + [Parameter] + public double Step { get; set; } + + [Parameter] + public NumberType Value { get; set; } + + [Parameter] + public int DecimalPlaces { get; set; } =0; + + + [Parameter] + public EventCallback ValueChanged { get; set; } + + public async Task ChangeValueAsync(ChangeEventArgs args) + { + if (args.Value is not null) + { + if (args.Value.ToString().Length > 0) + { + await ValueChanged.InvokeAsync((NumberType)Convert.ChangeType(args.Value, typeof(NumberType))); + } + else + { + await ValueChanged.InvokeAsync((NumberType)Convert.ChangeType(0, typeof(NumberType))); + } + } + } + + private async Task Clear() + { + await ValueChanged.InvokeAsync((NumberType)Convert.ChangeType(0, typeof(NumberType))); + } + + #region Lifecycle + + protected override async Task OnParametersSetAsync() + { + if (typeof(NumberType).Name.ToLower().Contains("int")) + { + if (Step-(int)Step>0) Step= (int)Step; + if (Step < 1) Step = 1; + } + + await base.OnParametersSetAsync(); + } + + #endregion +} \ No newline at end of file diff --git a/src/Connected.Components/Components/InputPassword.razor b/src/Connected.Components/Components/InputPassword.razor new file mode 100644 index 0000000..7553737 --- /dev/null +++ b/src/Connected.Components/Components/InputPassword.razor @@ -0,0 +1,42 @@ +@inherits InputBase; + +
    + + + + + @if (IsLabel) + { + + } + @if (IsHelperText && !IsError) + { +
    @HelperText
    + } + @if (IsError) + { +
    @ErrorText
    + } + + + @if (Clearable) + { + + + + } + @if (IsError) + { + + + + } + + +
    \ No newline at end of file diff --git a/src/Connected.Components/Components/InputPassword.razor.cs b/src/Connected.Components/Components/InputPassword.razor.cs new file mode 100644 index 0000000..8d0f3c2 --- /dev/null +++ b/src/Connected.Components/Components/InputPassword.razor.cs @@ -0,0 +1,35 @@ +using Microsoft.AspNetCore.Components; + +namespace Connected.Components; +public partial class InputPassword: InputBase +{ + + [Parameter] + public string Value { get; set; } + + + [Parameter] + public EventCallback ValueChanged { get; set; } + + private async Task ChangeValueAsync(ChangeEventArgs args) + { + await ValueChanged.InvokeAsync(args.Value.ToString()); + StateHasChanged(); + } + + private async Task Clear() + { + await ValueChanged.InvokeAsync(string.Empty); + } + + protected override async Task OnInitializedAsync() + { + if (base.InputAttributes is null) base.InputAttributes = new(); + if (base.Required) + { + if (base.InputAttributes.ContainsKey("required")) base.InputAttributes.Add("required", true); + } + await base.OnInitializedAsync(); + } + +} \ No newline at end of file diff --git a/src/Connected.Components/Components/InputText.razor b/src/Connected.Components/Components/InputText.razor new file mode 100644 index 0000000..efc8fd6 --- /dev/null +++ b/src/Connected.Components/Components/InputText.razor @@ -0,0 +1,55 @@ +@inherits InputBase; + +
    + @if (NumOfRows==1) + { + + } else + { + - } else - { - - } -
    \ No newline at end of file diff --git a/src/Connected.Components/ComponentsN/InputText.razor.cs b/src/Connected.Components/ComponentsN/InputText.razor.cs deleted file mode 100644 index 2e89a6c..0000000 --- a/src/Connected.Components/ComponentsN/InputText.razor.cs +++ /dev/null @@ -1,124 +0,0 @@ - -using Connected.Utilities; -using Microsoft.AspNetCore.Components; - -namespace Connected.ComponentsN; -public partial class InputText -{ - #region parameters - /// - /// Class - /// - [Parameter] - public string Class { get; set; } - - private string InputFieldClassList - { - get - { - return new CssBuilder() - .AddClass(Class) - .Build(); - } - } - - private InputType InputType { get; set; } = InputType.Text; - - [Parameter] - public bool IsPasswordField { get; set; } = false; - - /// - /// Show clear button. - /// - [Parameter] - public bool Clearable { get; set; } = false; - - /// - /// Required property - /// - [Parameter] - public bool Required { get; set; } = false; - - /// - /// Show clear button. - /// - [Parameter] - public bool Disabled { get; set; } = false; - - /// - /// Show clear button. - /// - [Parameter] - public bool Readonly { get; set; } = false; - - /// - /// The show input character counter - /// - [Parameter] - public bool ShowCharCounter { get; set; } - - [Parameter] - public string ErrorText { get; set; } = string.Empty; - - [Parameter] - public string Label { get; set; } = string.Empty; - - [Parameter] - public string Placeholder { get; set; } = string.Empty; - - - /// - /// If more than 1, we have a textarea with defined number of lines - /// - [Parameter] - public int NumOfLines - { - get - { - return _numberOfLines; - } - set - { - if (value < 1) - { - _numberOfLines = 1; - } - else - { - _numberOfLines = value; - } - } - } - private int _numberOfLines = 1; - - #endregion - - #region Variables - private string _clearIcon = Icons.Material.Filled.Clear; - - #endregion - - [Parameter] - public string Value { get; set; } - - [Parameter] - public EventCallback ValueChanged { get; set; } - - private async Task ChangeValueAsync(ChangeEventArgs args) - { - - await ValueChanged.InvokeAsync(args.Value.ToString()); - } - - #region Lifecycle - - protected async Task OnParametersSetAsync() - { - if (IsPasswordField) InputType = InputType.Password; - - - await base.OnParametersSetAsync(); - } - - #endregion -} \ No newline at end of file diff --git a/src/Connected.Components/ComponentsN/Select.razor b/src/Connected.Components/ComponentsN/Select.razor deleted file mode 100644 index c4c3e62..0000000 --- a/src/Connected.Components/ComponentsN/Select.razor +++ /dev/null @@ -1,33 +0,0 @@ -@typeparam ValueType - - - -
    - @if (SearchFieldEnabled) - { - //search field - } - - @foreach (SelectItem item in Items) - { - - } - - - @if (_pagination()>1) - { - //pagination - } -
    diff --git a/src/Connected.Components/ComponentsN/Select.razor.cs b/src/Connected.Components/ComponentsN/Select.razor.cs deleted file mode 100644 index 7480c9c..0000000 --- a/src/Connected.Components/ComponentsN/Select.razor.cs +++ /dev/null @@ -1,63 +0,0 @@ -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -namespace Connected.ComponentsN; -public partial class Select -{ - - [Parameter] - public bool SearchFieldEnabled { get; set; } = false; - - [Parameter] - public int MaxVisibleItems { get; set; } = 7; - - [Parameter] - public List> Items - { - get{ - if (FilterText.Length > 0) - { - return _items.Where(i => i.Value.ToString().Contains(FilterText) || i.Text.ToString().Contains(FilterText)).ToList(); - } - return _items; - } - set { - _items= value; - } - } - - private List> _items = new List>(); - - private int ItemsCount => Items.Count(); - - - [Parameter] - public int SelectedIndex { get; set; } = 0; - - [Parameter] - public string FilterText { get; set; } = string.Empty; - - private int _pagination() - { - int result = 0; - if (MaxVisibleItems - /// Contains the default container classlist and the user defined classes. - /// - private string CompiledClassList - { - get - { - return new CssBuilder() - .AddClass(ClassList) - .Build(); - } - } -} diff --git a/src/Connected.Components/ComponentsN/SelectItem.razor b/src/Connected.Components/ComponentsN/SelectItem.razor deleted file mode 100644 index c13d41f..0000000 --- a/src/Connected.Components/ComponentsN/SelectItem.razor +++ /dev/null @@ -1,5 +0,0 @@ -@typeparam ValueType - -
    - @Text -
    diff --git a/src/Connected.Components/ComponentsN/SelectItem.razor.cs b/src/Connected.Components/ComponentsN/SelectItem.razor.cs deleted file mode 100644 index 1d9a2ed..0000000 --- a/src/Connected.Components/ComponentsN/SelectItem.razor.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Microsoft.AspNetCore.Components; - -namespace Connected.ComponentsN; -public partial class SelectItem -{ - [Parameter, EditorRequired] - public ValueType Value { get; set; } - [Parameter] - public string Text { get; set; } = string.Empty; - - protected override async Task OnParametersSetAsync() - { - if (string.IsNullOrEmpty(Text)) { - - if (Value is not null) - Text = Value.ToString(); - } - await base.OnParametersSetAsync(); - } -} diff --git a/src/Connected.Components/ComponentsN/ToggleButton.razor b/src/Connected.Components/ComponentsN/ToggleButton.razor deleted file mode 100644 index 8cb11a4..0000000 --- a/src/Connected.Components/ComponentsN/ToggleButton.razor +++ /dev/null @@ -1,5 +0,0 @@ -@using Connected.ComponentsN - - \ No newline at end of file diff --git a/src/Connected.Components/ComponentsN/ToggleButton.razor.cs b/src/Connected.Components/ComponentsN/ToggleButton.razor.cs deleted file mode 100644 index d7ccbcf..0000000 --- a/src/Connected.Components/ComponentsN/ToggleButton.razor.cs +++ /dev/null @@ -1,148 +0,0 @@ -using Connected.Utilities; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.ComponentsN; -public partial class ToggleButton -{ - /// - /// Define state of ToggleButton: Default: false - /// - [Parameter] - public bool Toggled { get; set; } = false; - - private void Toggle() - { - Toggled=!Toggled; - StateHasChanged(); - } - - #region Text content - /// - /// default Text shown inside the button - /// - [Parameter] - public string Text { get; set; } = string.Empty; - /// - /// Text of toggled button shown inside the button - /// - [Parameter] - public string ToggleText { get; set; } = string.Empty; - - private string TextToShow() - { - if (Toggled) return ToggleText; - return Text; - } - - #endregion - - #region Glyph - /// - /// Glyph for the button. - /// Default: string.Empty - /// - [Parameter] - public string Glyph { get; set; } = string.Empty; - - /// - /// Glyph for the button. - /// Default: string.Empty - /// - [Parameter] - public string ToggleGlyph { get; set; } = string.Empty; - - private string GlyphToShow() - { - if (Toggled) return ToggleGlyph; - return Glyph; - } - - /// - /// Position of the glyph relative to button Text parameter. Default: Position.Left (Possible options: Top,Bottom,Center,Left,Right,Start,End) - /// If Glyph parameter is empty this parameter is ignored - /// - [Parameter] - public Position GlyphPosition { get; set; } = Position.Left; - - /// - /// HEX value of the color for the glyph custom color. Default: black (#000000) - /// If Glyph parameter is empty this parameter is ignored - /// - [Parameter] - public string GlyphColor { get; set; } = "#000000"; - - /// - /// HEX value of the color for the glyph custom color. Default: black (#000000) - /// If Glyph parameter is empty this parameter is ignored - /// - [Parameter] - public string ToggleGlyphColor { get; set; } = "#000000"; - - private string GlyphColorToUse() - { - if (Toggled) return ToggleGlyphColor; - return GlyphColor; - } - - #endregion - - - [Parameter] - /// - /// Button click event. - /// - public EventCallback Click { get; set; } - protected async Task OnClick(MouseEventArgs e) - { - await Click.InvokeAsync(e); - } - - /// - /// Disabled or enabled property of the button. Default: false - /// - [Parameter] - public bool Disabled { get; set; } = false; - - [Parameter] - public string Class { get; set; } = string.Empty; - - private string ButtonClassList - { - get - { - return new CssBuilder() - .AddClass(Class) - .Build(); - } - } - - [Parameter] - public string Style { get; set; } = string.Empty; - - private string ButtonStyleList - { - get - { - return new StyleBuilder() - .AddStyle(Style) - .Build(); - } - } - - /// - /// When mouse is over the component - /// - /// - public async Task HoverOn() - { - } - - /// - /// When mouse is away from component - /// - /// - public async Task HoverOff() - { - } -} diff --git a/src/Connected.Components/Connected.Components.csproj b/src/Connected.Components/Connected.Components.csproj index 00911ab..91d8e97 100644 --- a/src/Connected.Components/Connected.Components.csproj +++ b/src/Connected.Components/Connected.Components.csproj @@ -7,14 +7,6 @@ Connected - - - - - - <_ContentIncludedByDefault Remove="compilerconfig.json" /> - - @@ -32,7 +24,7 @@ - + @@ -46,7 +38,7 @@ - + + @@ -88,8 +81,10 @@ + + @@ -100,6 +95,12 @@ + + + + + + diff --git a/src/Connected.Components/Enums/Adornment.cs b/src/Connected.Components/Enums/Adornment.cs deleted file mode 100644 index 66bef65..0000000 --- a/src/Connected.Components/Enums/Adornment.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.ComponentModel; - -namespace Connected; - -public enum Adornment -{ - [Description("none")] - None, - [Description("start")] - Start, - [Description("end")] - End -} diff --git a/src/Connected.Components/Enums/Align.cs b/src/Connected.Components/Enums/Align.cs deleted file mode 100644 index 5954e49..0000000 --- a/src/Connected.Components/Enums/Align.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum Align - { - [Description("inherit")] - Inherit, - [Description("left")] - Left, - [Description("center")] - Center, - [Description("right")] - Right, - [Description("justify")] - Justify, - [Description("start")] - Start, - [Description("end")] - End, - } -} diff --git a/src/Connected.Components/Enums/AlignItems.cs b/src/Connected.Components/Enums/AlignItems.cs deleted file mode 100644 index f3be3b4..0000000 --- a/src/Connected.Components/Enums/AlignItems.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum AlignItems - { - [Description("baseline")] - Baseline, - [Description("center")] - Center, - [Description("start")] - Start, - [Description("end")] - End, - [Description("stretch")] - Stretch - } -} diff --git a/src/Connected.Components/Enums/Alignment.cs b/src/Connected.Components/Enums/Alignment.cs deleted file mode 100644 index 0e18d7c..0000000 --- a/src/Connected.Components/Enums/Alignment.cs +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. -using System.ComponentModel; - -namespace Connected; - -public enum Alignment -{ - Center, - Top, - Bottom, - Left, - [Description("left-top")] - LeftTop, - [Description("left-bottom")] - LeftBottom, - Right, - [Description("right-top")] - RightTop, - [Description("right-bottom")] - RightBottom, -} diff --git a/src/Connected.Components/Enums/Anchor.cs b/src/Connected.Components/Enums/Anchor.cs deleted file mode 100644 index e94a4c8..0000000 --- a/src/Connected.Components/Enums/Anchor.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum Anchor - { - [Description("left")] - Left, - [Description("right")] - Right, - [Description("start")] - Start, - [Description("end")] - End, - [Description("top")] - Top, - [Description("bottom")] - Bottom - } -} diff --git a/src/Connected.Components/Enums/Animation.cs b/src/Connected.Components/Enums/Animation.cs deleted file mode 100644 index 3d176bd..0000000 --- a/src/Connected.Components/Enums/Animation.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum Animation - { - [Description("false")] - False, - [Description("pulse")] - Pulse, - [Description("wave")] - Wave - } -} diff --git a/src/Connected.Components/Enums/ButtonType.cs b/src/Connected.Components/Enums/ButtonType.cs deleted file mode 100644 index 7982d09..0000000 --- a/src/Connected.Components/Enums/ButtonType.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Connected; - -public enum ButtonType -{ - Button, - Submit, - Reset -} diff --git a/src/Connected.Components/Enums/Color.cs b/src/Connected.Components/Enums/Color.cs index 76005f9..eadc7e8 100644 --- a/src/Connected.Components/Enums/Color.cs +++ b/src/Connected.Components/Enums/Color.cs @@ -2,18 +2,35 @@ namespace Connected; -public enum ThemeColor +public enum Color { - Default, - Primary, - Secondary, - Tertiary, - Info, - Success, - Warning, - Error, - Dark, - Transparent, - Inherit, - Surface -} + [Description("core")] + Core, + + [Description("primary")] + Primary, + + [Description("secondary")] + Secondary, + + [Description("success")] + Success, + + [Description("info")] + Info, + + [Description("warning")] + Warning, + + [Description("danger")] + Danger, + + [Description("white")] + White, + + [Description("light")] + Light, + + [Description("dark")] + Dark +} \ No newline at end of file diff --git a/src/Connected.Components/Enums/ColorPickerMode.cs b/src/Connected.Components/Enums/ColorPickerMode.cs deleted file mode 100644 index f890f53..0000000 --- a/src/Connected.Components/Enums/ColorPickerMode.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected -{ - public enum ColorPickerMode - { - RGB, - HSL, - HEX - } -} diff --git a/src/Connected.Components/Enums/ColorPickerView.cs b/src/Connected.Components/Enums/ColorPickerView.cs deleted file mode 100644 index 4dcefdd..0000000 --- a/src/Connected.Components/Enums/ColorPickerView.cs +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected -{ - public enum ColorPickerView - { - Spectrum, - Palette, - Grid, - GridCompact - } -} diff --git a/src/Connected.Components/Enums/ContentNavigationExpandBehaviour.cs b/src/Connected.Components/Enums/ContentNavigationExpandBehaviour.cs deleted file mode 100644 index 462182b..0000000 --- a/src/Connected.Components/Enums/ContentNavigationExpandBehaviour.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum ContentNavigationExpandBehaviour - { - Always, - WhenSectionIsActive, - } -} diff --git a/src/Connected.Components/Enums/DefaultFocus.cs b/src/Connected.Components/Enums/DefaultFocus.cs deleted file mode 100644 index 4053270..0000000 --- a/src/Connected.Components/Enums/DefaultFocus.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Connected -{ - public enum DefaultFocus - { - None, - Element, - FirstChild, - LastChild - } -} diff --git a/src/Connected.Components/Enums/Direction.cs b/src/Connected.Components/Enums/Direction.cs deleted file mode 100644 index 04c5abf..0000000 --- a/src/Connected.Components/Enums/Direction.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum Direction - { - [Description("bottom")] - Bottom, - [Description("top")] - Top, - [Description("left")] - Left, - [Description("right")] - Right, - [Description("start")] - Start, - [Description("end")] - End - } -} diff --git a/src/Connected.Components/Enums/DividerType.cs b/src/Connected.Components/Enums/DividerType.cs deleted file mode 100644 index 863c2ce..0000000 --- a/src/Connected.Components/Enums/DividerType.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum DividerType - { - [Description("fullwidth")] - FullWidth, - [Description("inset")] - Inset, - [Description("middle")] - Middle - } -} diff --git a/src/Connected.Components/Enums/DrawerClipMode.cs b/src/Connected.Components/Enums/DrawerClipMode.cs deleted file mode 100644 index 27ed69f..0000000 --- a/src/Connected.Components/Enums/DrawerClipMode.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum DrawerClipMode - { - [Description("never")] - Never, - [Description("docked")] - Docked, - [Description("always")] - Always - } -} diff --git a/src/Connected.Components/Enums/DrawerVariant.cs b/src/Connected.Components/Enums/DrawerVariant.cs deleted file mode 100644 index 104cb96..0000000 --- a/src/Connected.Components/Enums/DrawerVariant.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum DrawerVariant - { - [Description("temporary")] - Temporary, - [Description("responsive")] - Responsive, - [Description("persistent")] - Persistent, - [Description("mini")] - Mini - } -} diff --git a/src/Connected.Components/Enums/Edge.cs b/src/Connected.Components/Enums/Edge.cs deleted file mode 100644 index dbc8a74..0000000 --- a/src/Connected.Components/Enums/Edge.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum Edge - { - [Description("false")] - False, - [Description("start")] - Start, - [Description("end")] - End - } -} diff --git a/src/Connected.Components/Enums/HorizontalAlignment.cs b/src/Connected.Components/Enums/HorizontalAlignment.cs deleted file mode 100644 index 515bd9f..0000000 --- a/src/Connected.Components/Enums/HorizontalAlignment.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Runtime.CompilerServices; - -namespace Connected; - -public enum HorizontalAlignment -{ - Left, - Right, - Center, - Start, - End -} - -public static class HorizontalAlignmentExtensions -{ - public static HorizontalAlignment GetAbsolute(this HorizontalAlignment alignment, bool rightToLeft = false) - { - return alignment switch - { - HorizontalAlignment.Start => rightToLeft ? HorizontalAlignment.Right : HorizontalAlignment.Left, - HorizontalAlignment.End => rightToLeft ? HorizontalAlignment.Left : HorizontalAlignment.Right, - _ => alignment - }; - } - - public static HorizontalAlignment GetRelative(this HorizontalAlignment alignment, bool rightToLeft = false) - { - return alignment switch - { - HorizontalAlignment.Left => rightToLeft ? HorizontalAlignment.End : HorizontalAlignment.Start, - HorizontalAlignment.Right => rightToLeft ? HorizontalAlignment.Start : HorizontalAlignment.End, - _ => alignment - }; - } -} diff --git a/src/Connected.Components/Enums/InputMode.cs b/src/Connected.Components/Enums/InputMode.cs deleted file mode 100644 index 224d7d7..0000000 --- a/src/Connected.Components/Enums/InputMode.cs +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.ComponentModel; - -namespace Connected -{ - /// - /// The inputmode global attribute is an enumerated attribute that hints at the type of data that might be entered by the user while editing the element or its contents. - /// Not supported by safari. Use Pattern to achieve special mobile keyboards in safari. - /// https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode - /// - public enum InputMode - { - [Description("No virtual keyboard. For when the page implements its own keyboard input control.")] - none, - - [Description("Default. Standard input keyboard for the user's current locale.")] - text, - - [Description("Fractional numeric input keyboard containing the digits and decimal separator for the user's locale (typically . or ,). Devices may or may not show a minus key (-).")] - @decimal, - - [Description("Numeric input keyboard, but only requires the digits 0–9. Devices may or may not show a minus key.")] - numeric, - - [Description("A telephone keypad input, including the digits 0–9, the asterisk (*), and the pound (#) key. Inputs that require a telephone number should typically use instead.")] - tel, - - [Description("A virtual keyboard optimized for search input. For instance, the return/submit key may be labeled “Search”, along with possible other optimizations. Inputs that require a search query should typically use instead.")] - search, - - [Description("A virtual keyboard optimized for entering email addresses. Typically includes the @ character as well as other optimizations. Inputs that require email addresses should typically use instead.")] - email, - - [Description("A keypad optimized for entering URLs. This may have the / key more prominent, for example. Enhanced features could include history access and so on. Inputs that require a URL should typically use instead.")] - url - } -} diff --git a/src/Connected.Components/Enums/Justify.cs b/src/Connected.Components/Enums/Justify.cs deleted file mode 100644 index d976f32..0000000 --- a/src/Connected.Components/Enums/Justify.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum Justify - { - [Description("start")] - FlexStart, - [Description("center")] - Center, - [Description("end")] - FlexEnd, - [Description("space-between")] - SpaceBetween, - [Description("space-around")] - SpaceAround, - [Description("space-evenly")] - SpaceEvenly - } -} diff --git a/src/Connected.Components/Enums/LabelPosition.cs b/src/Connected.Components/Enums/LabelPosition.cs deleted file mode 100644 index 1226a7a..0000000 --- a/src/Connected.Components/Enums/LabelPosition.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum LabelPosition - { - [Description("start")] - Start, - [Description("end")] - End - } -} diff --git a/src/Connected.Components/Enums/LinkTarget.cs b/src/Connected.Components/Enums/LinkTarget.cs deleted file mode 100644 index ff00801..0000000 --- a/src/Connected.Components/Enums/LinkTarget.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Connected.Enums; - -public enum LinkTarget -{ - _blank, //Opens the linked document in a new window or tab - _self, // Opens the linked document in the same frame as it was clicked(this is default) - _parent, // Opens the linked document in the parent frame - _top // Opens the linked document in the full body of the window -} diff --git a/src/Connected.Components/Enums/Margin.cs b/src/Connected.Components/Enums/Margin.cs deleted file mode 100644 index fb2ba46..0000000 --- a/src/Connected.Components/Enums/Margin.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum Margin - { - [Description("none")] - None, - [Description("dense")] - Dense, - [Description("normal")] - Normal - } -} diff --git a/src/Connected.Components/Enums/MaxWidth.cs b/src/Connected.Components/Enums/MaxWidth.cs deleted file mode 100644 index 216245a..0000000 --- a/src/Connected.Components/Enums/MaxWidth.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum MaxWidth - { - [Description("lg")] - Large, - [Description("md")] - Medium, - [Description("sm")] - Small, - [Description("xl")] - ExtraLarge, - [Description("xxl")] - ExtraExtraLarge, - [Description("xs")] - ExtraSmall, - [Description("false")] - False, - } -} diff --git a/src/Connected.Components/Enums/MouseEvent.cs b/src/Connected.Components/Enums/MouseEvent.cs deleted file mode 100644 index 6fef082..0000000 --- a/src/Connected.Components/Enums/MouseEvent.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Connected -{ - public enum MouseEvent - { - LeftClick, - RightClick, - MouseOver - } -} diff --git a/src/Connected.Components/Enums/ObjectFit.cs b/src/Connected.Components/Enums/ObjectFit.cs deleted file mode 100644 index 06df265..0000000 --- a/src/Connected.Components/Enums/ObjectFit.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. -using System.ComponentModel; - -namespace Connected; - -public enum ObjectFit -{ - [Description("none")] - None, - [Description("cover")] - Cover, - [Description("contain")] - Contain, - [Description("fill")] - Fill, - [Description("scale-down")] - ScaleDown -} diff --git a/src/Connected.Components/Enums/OpenToView.cs b/src/Connected.Components/Enums/OpenToView.cs deleted file mode 100644 index b77299b..0000000 --- a/src/Connected.Components/Enums/OpenToView.cs +++ /dev/null @@ -1,13 +0,0 @@ - -namespace Connected -{ - public enum OpenTo - { - None, - Date, - Year, - Month, - Hours, - Minutes - } -} diff --git a/src/Connected.Components/Enums/Orientation.cs b/src/Connected.Components/Enums/Orientation.cs deleted file mode 100644 index ee128f0..0000000 --- a/src/Connected.Components/Enums/Orientation.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum Orientation - { - [Description("portrait")] - Portrait, - [Description("landscape")] - Landscape - } -} diff --git a/src/Connected.Components/Enums/Origin.cs b/src/Connected.Components/Enums/Origin.cs deleted file mode 100644 index 25c3a96..0000000 --- a/src/Connected.Components/Enums/Origin.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum Origin - { - [Description("top-left")] - TopLeft, - [Description("top-center")] - TopCenter, - [Description("top-right")] - TopRight, - [Description("center-left")] - CenterLeft, - [Description("center-center")] - CenterCenter, - [Description("center-right")] - CenterRight, - [Description("bottom-left")] - BottomLeft, - [Description("bottom-center")] - BottomCenter, - [Description("bottom-right")] - BottomRight, - } -} diff --git a/src/Connected.Components/Enums/OverflowBehavior.cs b/src/Connected.Components/Enums/OverflowBehavior.cs deleted file mode 100644 index dcac662..0000000 --- a/src/Connected.Components/Enums/OverflowBehavior.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.ComponentModel; -using System; - -namespace Connected -{ - public enum OverflowBehavior - { - [Description("flip-never")] - FlipNever, - [Obsolete("This value has a typo and will be removed. Please use FlipOnOpen")] - [Description("flip-onopen")] - FilpOnOpen, - [Description("flip-onopen")] - FlipOnOpen, - [Description("flip-always")] - FlipAlways, - } -} diff --git a/src/Connected.Components/Enums/Page.cs b/src/Connected.Components/Enums/Page.cs deleted file mode 100644 index f629dff..0000000 --- a/src/Connected.Components/Enums/Page.cs +++ /dev/null @@ -1,12 +0,0 @@ - - -namespace Connected -{ - public enum Page - { - First, - Previous, - Next, - Last - } -} diff --git a/src/Connected.Components/Enums/PickerVariant.cs b/src/Connected.Components/Enums/PickerVariant.cs deleted file mode 100644 index 857024f..0000000 --- a/src/Connected.Components/Enums/PickerVariant.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.ComponentModel; - -namespace Connected; - -public enum PickerVariant -{ - [Description("inline")] - Inline, - [Description("dialog")] - Dialog, - [Description("static")] - Static -} diff --git a/src/Connected.Components/Enums/Placement.cs b/src/Connected.Components/Enums/Placement.cs deleted file mode 100644 index 7d478fc..0000000 --- a/src/Connected.Components/Enums/Placement.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. -using System.ComponentModel; - -namespace Connected; - -public enum Placement -{ - Top, - Bottom, - Left, - Right, - Start, - End -} diff --git a/src/Connected.Components/Enums/ResizeMode.cs b/src/Connected.Components/Enums/ResizeMode.cs deleted file mode 100644 index 8c9755f..0000000 --- a/src/Connected.Components/Enums/ResizeMode.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.ComponentModel; - -namespace Connected -{ - public enum ResizeMode - { - [Description("none")] - None, - - [Description("column")] - Column, - - [Description("container")] - Container - } -} diff --git a/src/Connected.Components/Enums/Size.cs b/src/Connected.Components/Enums/Size.cs index c81e5e4..2c69c79 100644 --- a/src/Connected.Components/Enums/Size.cs +++ b/src/Connected.Components/Enums/Size.cs @@ -1,8 +1,18 @@ -namespace Connected; +using System.ComponentModel; + +namespace Connected; public enum Size { - Small, - Medium, - Large -} + [Description("sm")] + Small, + + [Description("lg")] + Large, + + [Description("block")] + FullWidth, + + [Description("md")] + Medium +} \ No newline at end of file diff --git a/src/Connected.Components/Enums/SkeletonType.cs b/src/Connected.Components/Enums/SkeletonType.cs deleted file mode 100644 index 099e374..0000000 --- a/src/Connected.Components/Enums/SkeletonType.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum SkeletonType - { - [Description("text")] - Text, - [Description("circle")] - Circle, - [Description("rectangle")] - Rectangle - } -} diff --git a/src/Connected.Components/Enums/SortDirection.cs b/src/Connected.Components/Enums/SortDirection.cs deleted file mode 100644 index ec2dd7a..0000000 --- a/src/Connected.Components/Enums/SortDirection.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum SortDirection - { - [Description("none")] - None, - [Description("ascending")] - Ascending, - [Description("descending")] - Descending - } -} diff --git a/src/Connected.Components/Enums/SortMode.cs b/src/Connected.Components/Enums/SortMode.cs deleted file mode 100644 index a5a818a..0000000 --- a/src/Connected.Components/Enums/SortMode.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.ComponentModel; - -namespace Connected -{ - public enum SortMode - { - [Description("none")] - None, - - [Description("single")] - Single, - - [Description("multiple")] - Multiple - } -} diff --git a/src/Connected.Components/Enums/SwipeDirection.cs b/src/Connected.Components/Enums/SwipeDirection.cs deleted file mode 100644 index 9aa0201..0000000 --- a/src/Connected.Components/Enums/SwipeDirection.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Connected -{ - public enum SwipeDirection - { - None, - LeftToRight, - RightToLeft, - TopToBottom, - BottomToTop - } -} diff --git a/src/Connected.Components/Enums/TimeEditMode.cs b/src/Connected.Components/Enums/TimeEditMode.cs deleted file mode 100644 index 1cc41c3..0000000 --- a/src/Connected.Components/Enums/TimeEditMode.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Connected -{ - public enum TimeEditMode - { - Normal, - OnlyMinutes, - OnlyHours - } -} diff --git a/src/Connected.Components/Enums/TimelineAlign.cs b/src/Connected.Components/Enums/TimelineAlign.cs deleted file mode 100644 index 8eaeb2c..0000000 --- a/src/Connected.Components/Enums/TimelineAlign.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum TimelineAlign - { - [Description("default")] - Default, - [Description("start")] - Start, - [Description("end")] - End - } -} diff --git a/src/Connected.Components/Enums/TimelineOrientation.cs b/src/Connected.Components/Enums/TimelineOrientation.cs deleted file mode 100644 index 3bfbcd2..0000000 --- a/src/Connected.Components/Enums/TimelineOrientation.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum TimelineOrientation - { - [Description("vertical")] - Vertical, - [Description("horizontal")] - Horizontal - } -} diff --git a/src/Connected.Components/Enums/TimelinePosition.cs b/src/Connected.Components/Enums/TimelinePosition.cs deleted file mode 100644 index 5a0e5b7..0000000 --- a/src/Connected.Components/Enums/TimelinePosition.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum TimelinePosition - { - [Description("alternate")] - Alternate, - [Description("top")] - Top, - [Description("bottom")] - Bottom, - [Description("left")] - Left, - [Description("right")] - Right, - [Description("start")] - Start, - [Description("end")] - End - } -} diff --git a/src/Connected.Components/Enums/Transition.cs b/src/Connected.Components/Enums/Transition.cs deleted file mode 100644 index 7677931..0000000 --- a/src/Connected.Components/Enums/Transition.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum Transition - { - [Description("None")] - None = 0, - [Description("Fade")] - Fade = 1, - [Description("Fade")] - Slide = 2, - [Description("Custom")] - Custom = 99 - } -} diff --git a/src/Connected.Components/Enums/Typo.cs b/src/Connected.Components/Enums/Typo.cs deleted file mode 100644 index 6c9d16f..0000000 --- a/src/Connected.Components/Enums/Typo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum Typo - { - [Description("inherit")] - inherit, - [Description("h1")] - h1, - [Description("h2")] - h2, - [Description("h3")] - h3, - [Description("h4")] - h4, - [Description("h5")] - h5, - [Description("h6")] - h6, - [Description("subtitle1")] - subtitle1, - [Description("subtitle2")] - subtitle2, - [Description("body1")] - body1, - [Description("body2")] - body2, - [Description("button")] - button, - [Description("caption")] - caption, - [Description("overline")] - overline - } -} diff --git a/src/Connected.Components/Enums/Underline.cs b/src/Connected.Components/Enums/Underline.cs deleted file mode 100644 index da1777d..0000000 --- a/src/Connected.Components/Enums/Underline.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum Underline - { - [Description("none")] - None, - [Description("hover")] - Hover, - [Description("always")] - Always - } -} diff --git a/src/Connected.Components/Enums/Variant.cs b/src/Connected.Components/Enums/Variant.cs index 97139b1..12f19d5 100644 --- a/src/Connected.Components/Enums/Variant.cs +++ b/src/Connected.Components/Enums/Variant.cs @@ -1,10 +1,9 @@ -using System.ComponentModel; + namespace Connected; public enum Variant { - Text, Filled, Outlined } diff --git a/src/Connected.Components/Enums/VerticalAlignment.cs b/src/Connected.Components/Enums/VerticalAlignment.cs deleted file mode 100644 index 9720101..0000000 --- a/src/Connected.Components/Enums/VerticalAlignment.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Connected; -public enum VerticalAlignment -{ - Top, - Bottom, - Center -} diff --git a/src/Connected.Components/Enums/Width.cs b/src/Connected.Components/Enums/Width.cs deleted file mode 100644 index e2b6d4a..0000000 --- a/src/Connected.Components/Enums/Width.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.ComponentModel; - -namespace Connected -{ - public enum Width - { - [Description("xs")] - xs, - [Description("sm")] - sm, - [Description("md")] - md, - [Description("lg")] - lg, - [Description("xl")] - xl, - [Description("xxl")] - xxl, - [Description("false")] - False, - } -} diff --git a/src/Connected.Components/Extensions/DataGridExtensions.cs b/src/Connected.Components/Extensions/DataGridExtensions.cs deleted file mode 100644 index c372ed6..0000000 --- a/src/Connected.Components/Extensions/DataGridExtensions.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Connected.Components; - -namespace Connected; - -public static class DataGridExtensions -{ - public static IEnumerable OrderBySortDefinitions(this IEnumerable source, GridState state) - => OrderBySortDefinitions(source, state?.SortDefinitions); - - public static IEnumerable OrderBySortDefinitions(this IEnumerable source, ICollection> sortDefinitions) - { - if (null == source || !source.Any()) - return source; - - if (null == sortDefinitions || 0 == sortDefinitions.Count) - return source; - - IOrderedEnumerable orderedEnumerable = null; - - foreach (var sortDefinition in sortDefinitions) - { - if (null == orderedEnumerable) - orderedEnumerable = sortDefinition.Descending ? source.OrderByDescending(sortDefinition.SortFunc) - : source.OrderBy(sortDefinition.SortFunc); - else - orderedEnumerable = sortDefinition.Descending ? orderedEnumerable.ThenByDescending(sortDefinition.SortFunc) - : orderedEnumerable.ThenBy(sortDefinition.SortFunc); - } - - return orderedEnumerable ?? source; - } -} diff --git a/src/Connected.Components/Extensions/DateTimeExtensions.cs b/src/Connected.Components/Extensions/DateTimeExtensions.cs deleted file mode 100644 index 6a7aebe..0000000 --- a/src/Connected.Components/Extensions/DateTimeExtensions.cs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) MudBlazor - -using System; -using System.Globalization; - -namespace Connected.Extensions -{ - - public static class DateTimeExtensions - { - public static string ToIsoDateString(this DateTime self) - { - return $"{self.Year:D4}-{self.Month:D2}-{self.Day:D2}"; - } - - public static string ToIsoDateString(this DateTime? self) - { - if (self == null) - return null; - return $"{self.Value.Year:D4}-{self.Value.Month:D2}-{self.Value.Day:D2}"; - } - - public static DateTime StartOfMonth(this DateTime self, CultureInfo culture) - { - var month = culture.Calendar.GetMonth(self); - var year = culture.Calendar.GetYear(self); - return culture.Calendar.ToDateTime(year, month, 1, 0, 0, 0, 0); - } - - public static DateTime EndOfMonth(this DateTime self, CultureInfo culture) - { - var month = culture.Calendar.GetMonth(self); - var year = culture.Calendar.GetYear(self); - var days = culture.Calendar.GetDaysInMonth(year, month); - return culture.Calendar.ToDateTime(year, month, days, 0, 0, 0, 0); - } - - public static DateTime StartOfWeek(this DateTime self, DayOfWeek firstDayOfWeek) - { - var diff = (7 + (self.DayOfWeek - firstDayOfWeek)) % 7; - if (self.Year == 1 && self.Month == 1 && (self.Day - diff) < 1) - { - return self.Date; - } - return self.AddDays(-1 * diff).Date; - } - } -} diff --git a/src/Connected.Components/Extensions/DoubleExtentions.cs b/src/Connected.Components/Extensions/DoubleExtentions.cs deleted file mode 100644 index 995469a..0000000 --- a/src/Connected.Components/Extensions/DoubleExtentions.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Globalization; - -namespace Connected.Extensions -{ - public static class DoubleExtentions - { - public static string ToInvariantString(this double input) => input.ToString(CultureInfo.InvariantCulture); - } -} diff --git a/src/Connected.Components/Extensions/ElementReferenceExtensions.cs b/src/Connected.Components/Extensions/ElementReferenceExtensions.cs deleted file mode 100644 index 487d638..0000000 --- a/src/Connected.Components/Extensions/ElementReferenceExtensions.cs +++ /dev/null @@ -1,66 +0,0 @@ -#nullable enable -using System.Diagnostics.CodeAnalysis; -using System.Reflection; -using Connected.Interop; -using Microsoft.AspNetCore.Components; -using Microsoft.JSInterop; - -namespace Connected -{ - [ExcludeFromCodeCoverage] - public static class ElementReferenceExtensions - { - private static readonly PropertyInfo? jsRuntimeProperty = - typeof(WebElementReferenceContext).GetProperty("JSRuntime", BindingFlags.Instance | BindingFlags.NonPublic); - - internal static IJSRuntime? GetJSRuntime(this ElementReference elementReference) - { - if (elementReference.Context is not WebElementReferenceContext context) - { - return null; - } - - return (IJSRuntime?)jsRuntimeProperty?.GetValue(context); - } - - public static ValueTask FocusFirstAsync(this ElementReference elementReference, int skip = 0, int min = 0) => - elementReference.GetJSRuntime()?.InvokeVoidAsync("elementRef.focusFirst", elementReference, skip, min) ?? ValueTask.CompletedTask; - - public static ValueTask FocusLastAsync(this ElementReference elementReference, int skip = 0, int min = 0) => - elementReference.GetJSRuntime()?.InvokeVoidAsync("elementRef.focusLast", elementReference, skip, min) ?? ValueTask.CompletedTask; - - public static ValueTask SaveFocusAsync(this ElementReference elementReference) => - elementReference.GetJSRuntime()?.InvokeVoidAsync("elementRef.saveFocus", elementReference) ?? ValueTask.CompletedTask; - - public static ValueTask RestoreFocusAsync(this ElementReference elementReference) => - elementReference.GetJSRuntime()?.InvokeVoidAsync("elementRef.restoreFocus", elementReference) ?? ValueTask.CompletedTask; - - public static ValueTask BlurAsync(this ElementReference elementReference) => - elementReference.GetJSRuntime()?.InvokeVoidAsync("elementRef.blur", elementReference) ?? ValueTask.CompletedTask; - - public static ValueTask SelectAsync(this ElementReference elementReference) => - elementReference.GetJSRuntime()?.InvokeVoidAsync("elementRef.select", elementReference) ?? ValueTask.CompletedTask; - - public static ValueTask SelectRangeAsync(this ElementReference elementReference, int pos1, int pos2) => - elementReference.GetJSRuntime()?.InvokeVoidAsync("elementRef.selectRange", elementReference, pos1, pos2) ?? ValueTask.CompletedTask; - - public static ValueTask ChangeCssAsync(this ElementReference elementReference, string css) => - elementReference.GetJSRuntime()?.InvokeVoidAsync("elementRef.changeCss", elementReference, css) ?? ValueTask.CompletedTask; - - public static ValueTask MudGetBoundingClientRectAsync(this ElementReference elementReference) => - elementReference.GetJSRuntime()?.InvokeAsync("elementRef.getBoundingClientRect", elementReference) ?? ValueTask.FromResult(new BoundingClientRect()); - - public static ValueTask AddDefaultPreventingHandlers(this ElementReference elementReference, string[] eventNames) => - elementReference.GetJSRuntime()?.InvokeAsync("elementRef.addDefaultPreventingHandlers", elementReference, eventNames) ?? new ValueTask(Array.Empty()); - - public static ValueTask RemoveDefaultPreventingHandlers(this ElementReference elementReference, string[] eventNames, int[] listenerIds) - { - if (eventNames.Length != listenerIds.Length) - { - throw new ArgumentException($"Number of elements in {nameof(eventNames)} and {nameof(listenerIds)} has to match."); - } - - return elementReference.GetJSRuntime()?.InvokeVoidAsync("elementRef.removeDefaultPreventingHandlers", elementReference, eventNames, listenerIds) ?? ValueTask.CompletedTask; - } - } -} diff --git a/src/Connected.Components/Extensions/EnumExtensions.cs b/src/Connected.Components/Extensions/EnumExtensions.cs deleted file mode 100644 index dc37f54..0000000 --- a/src/Connected.Components/Extensions/EnumExtensions.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.ComponentModel; - -namespace Connected.Extensions; - -public static class EnumExtensions -{ - public static string? ToDescription(this Enum value) - { - if (value is null) - return null; - - var stringValue = value.ToString(); - - var attributes = - value - ?.GetType() - ?.GetField(stringValue) - ?.GetCustomAttributes(typeof(DescriptionAttribute), false) - as DescriptionAttribute[]; - - attributes ??= Array.Empty(); - - return attributes.Length > 0 - ? attributes[0].Description - : stringValue.ToLower(); - } -} diff --git a/src/Connected.Components/Extensions/ExpressionExtensions.cs b/src/Connected.Components/Extensions/ExpressionExtensions.cs deleted file mode 100644 index 5382f19..0000000 --- a/src/Connected.Components/Extensions/ExpressionExtensions.cs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Linq.Expressions; -using Connected.Annotations; - -namespace Connected -{ - public static class ExpressionExtensions - { - public static string GetFullPathOfMember(this Expression> property) - { - var resultingString = string.Empty; - var p = property.Body as MemberExpression; - - while (p != null) - { - if (p.Expression is MemberExpression) - { - resultingString = p.Member.Name + (resultingString != string.Empty ? "." : string.Empty) + resultingString; - } - p = p.Expression as MemberExpression; - } - return resultingString; - } - - /// - /// Returns the display name attribute of the provided field property as a string. If this attribute is missing, the member name will be returned. - /// - public static string GetLabelString(this Expression> expression) - { - var memberExpression = (MemberExpression)expression.Body; - var propertyInfo = memberExpression.Expression?.Type.GetProperty(memberExpression.Member.Name); - return propertyInfo?.GetCustomAttributes(typeof(LabelAttribute), true).Cast().FirstOrDefault()?.Name ?? string.Empty; - } - } -} diff --git a/src/Connected.Components/Extensions/KeepInRangeExtensions.cs b/src/Connected.Components/Extensions/KeepInRangeExtensions.cs deleted file mode 100644 index e7e8f62..0000000 --- a/src/Connected.Components/Extensions/KeepInRangeExtensions.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; - -namespace Connected.Extensions -{ - public static class KeepInRangeExtensions - { - public static double EnsureRange(this double input, double max) => EnsureRange(input, 0.0, max); - public static double EnsureRange(this double input, double min, double max) => Math.Max(min, Math.Min(max, input)); - public static byte EnsureRange(this byte input, byte max) => EnsureRange(input, (byte)0, max); - public static byte EnsureRange(this byte input, byte min, byte max) => Math.Max(min, Math.Min(max, input)); - public static byte EnsureRangeToByte(this int input) => (byte)EnsureRange(input, 0, 255); - public static int EnsureRange(this int input, int max) => EnsureRange(input, 0, max); - public static int EnsureRange(this int input, int min, int max) => Math.Max(min, Math.Min(max, input)); - } -} diff --git a/src/Connected.Components/Extensions/MathExtensions.cs b/src/Connected.Components/Extensions/MathExtensions.cs deleted file mode 100644 index 3f092a2..0000000 --- a/src/Connected.Components/Extensions/MathExtensions.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Connected.Extensions -{ - public static class MathExtensions - { - public static double Map(double sourceMin, double sourceMax, double targetMin, double targetMax, double value) => - ((value) / (sourceMax - sourceMin)) * (targetMax - targetMin); - } -} diff --git a/src/Connected.Components/Extensions/ObjectExtensions.cs b/src/Connected.Components/Extensions/ObjectExtensions.cs deleted file mode 100644 index 07a55b9..0000000 --- a/src/Connected.Components/Extensions/ObjectExtensions.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Connected.Extensions -{ - public static class ObjectExtensions - { - - public static T As(this object self) - { - if (self == null || !(self is T)) - return default(T); - return (T)self; - } - } -} diff --git a/src/Connected.Components/Extensions/ParameterViewExtensions.cs b/src/Connected.Components/Extensions/ParameterViewExtensions.cs deleted file mode 100644 index 9e15842..0000000 --- a/src/Connected.Components/Extensions/ParameterViewExtensions.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Microsoft.AspNetCore.Components; - -namespace Connected -{ - internal static class ParameterViewExtensions - { - public static bool Contains(this ParameterView view, string parameterName) - { - return view.TryGetValue(parameterName, out var _); - } - } -} diff --git a/src/Connected.Components/Extensions/StringExtensions.cs b/src/Connected.Components/Extensions/StringExtensions.cs deleted file mode 100644 index cf1ff04..0000000 --- a/src/Connected.Components/Extensions/StringExtensions.cs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) Alessandro Ghidini. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -using System.Globalization; - -// ReSharper disable once CheckNamespace -internal static class StringExtensions -{ - public static bool IsEmpty(this string value) => string.IsNullOrWhiteSpace(value); - public static bool IsNonEmpty(this string value) => !string.IsNullOrWhiteSpace(value); - public static string Trimmed(this string value) => value == null ? string.Empty : value.Trim(); - public static string ToPercentage(this decimal value) => value.ToString("0.##", CultureInfo.InvariantCulture); - public static string ToJsString(this string value) => char.ToLower(value[0]) + value.Substring(1); - public static byte GetByteValue(this string value, int index) => byte.Parse(new string(new char[] { value[index], value[index + 1] }), NumberStyles.HexNumber); -} diff --git a/src/Connected.Components/Extensions/TableExtensions.cs b/src/Connected.Components/Extensions/TableExtensions.cs deleted file mode 100644 index 40c849f..0000000 --- a/src/Connected.Components/Extensions/TableExtensions.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Linq.Expressions; -using Connected.Components; - -namespace Connected -{ - public static class TableExtensions - { - public static IOrderedEnumerable OrderByDirection(this IEnumerable source, SortDirection direction, Func keySelector) - { - if (direction == SortDirection.Descending) - return source.OrderByDescending(keySelector); - return source.OrderBy(keySelector); - } - - public static IOrderedQueryable OrderByDirection(this IQueryable source, SortDirection direction, Expression> keySelector) - { - if (direction == SortDirection.Descending) - return source.OrderByDescending(keySelector); - return source.OrderBy(keySelector); - } - - /// - /// Disabled the edit button if edit row switching is blocked and the provided item is not being edited - /// - public static bool EditButtonDisabled(this TableContext context, T item) => (context?.Table.IsEditRowSwitchingBlocked ?? false) && context?.Table._editingItem != null && !ReferenceEquals(context?.Table._editingItem, item); - } -} diff --git a/src/Connected.Components/Extensions/TaskExtensions.cs b/src/Connected.Components/Extensions/TaskExtensions.cs deleted file mode 100644 index f388b09..0000000 --- a/src/Connected.Components/Extensions/TaskExtensions.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Threading.Tasks; - -namespace Connected -{ - public enum TaskOption - { - None, - Safe - } - - public static class TaskExtensions - { - /// - /// Task will be awaited and exceptions will be logged to console (TaskOption.Safe) or managed by the Blazor framework (TaskOption.None). - /// - public static async void AndForget(this Task task, TaskOption option = TaskOption.None) - { - try - { - await task; - } - catch (Exception ex) - { - if (option != TaskOption.Safe) - throw; - - Console.WriteLine(ex); - } - } - - /// - /// ValueTask will be awaited and exceptions will be logged to console (TaskOption.Safe) or managed by the Blazor framework (TaskOption.None). - /// - public static async void AndForget(this ValueTask task, TaskOption option = TaskOption.None) - { - try - { - await task; - } - catch (Exception ex) - { - if (option != TaskOption.Safe) - throw; - - Console.WriteLine(ex); - } - } - - /// - /// ValueTask(bool) will be awaited and exceptions will be logged to console (TaskOption.Safe) or managed by the Blazor framework (TaskOption.None). - /// - public static async void AndForget(this ValueTask task, TaskOption option = TaskOption.None) - { - try - { - await task; - } - catch (Exception ex) - { - if (option != TaskOption.Safe) - throw; - - Console.WriteLine(ex); - } - } - } -} diff --git a/src/Connected.Components/Extensions/TimeSpanExtensions.cs b/src/Connected.Components/Extensions/TimeSpanExtensions.cs deleted file mode 100644 index d4d42a8..0000000 --- a/src/Connected.Components/Extensions/TimeSpanExtensions.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) MudBlazor - -using System; - -// ReSharper disable once CheckNamespace -internal static class TimeSpanExtensions -{ - public static string ToIsoString(this TimeSpan self, bool seconds = false, bool ms = false) - { - if (!seconds) - return $"{self.Hours:D2}:{self.Minutes:D2}"; - if (!ms) - return $"{self.Hours:D2}:{self.Minutes:D2}-{self.Seconds:D2}"; - return $"{self.Hours:D2}:{self.Minutes:D2}-{self.Seconds:D2},{self.Milliseconds}"; - } - - public static string ToIsoString(this TimeSpan? self, bool seconds = false, bool ms = false) - { - return self?.ToIsoString(seconds, ms); - } - - public static int ToAmPmHour(this TimeSpan time) - { - var h = time.Hours % 12; - if (h == 0) - h = 12; - return h; - } -} diff --git a/src/Connected.Components/Extensions/WebUnitsExtensions.cs b/src/Connected.Components/Extensions/WebUnitsExtensions.cs deleted file mode 100644 index b1380bc..0000000 --- a/src/Connected.Components/Extensions/WebUnitsExtensions.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Globalization; - -namespace Connected.Utilities -{ - public static class WebUnitsExtensions - { - public static string ToPx(this int val) => $"{val}px"; - public static string ToPx(this int? val) => val != null ? val.Value.ToPx() : string.Empty; - public static string ToPx(this long val) => $"{val}px"; - public static string ToPx(this long? val) => val != null ? val.Value.ToPx() : string.Empty; - public static string ToPx(this double val) => $"{val.ToString("0.##", CultureInfo.InvariantCulture)}px"; - public static string ToPx(this double? val) => val != null ? val.Value.ToPx() : string.Empty; - } -} diff --git a/src/Connected.Components/Icons/Custom/Brands.cs b/src/Connected.Components/Icons/Custom/Brands.cs deleted file mode 100644 index 49d1543..0000000 --- a/src/Connected.Components/Icons/Custom/Brands.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System.Diagnostics.CodeAnalysis; - -namespace Connected -{ - public partial class Icons - { - public partial class Custom - { - [ExcludeFromCodeCoverage] - public class Brands - { - public const string MudBlazor = ""; - public const string GitHub = ""; - public const string Apple = ""; - public const string Facebook = ""; - public const string Awesome = ""; - public const string Google = ""; - public const string Instagram = ""; - public const string LinkedIn = ""; - public const string Pinterest = ""; - public const string Reddit = ""; - public const string Telegram = ""; - public const string Twitter = ""; - public const string TikTok = ""; - public const string Vimeo = ""; - public const string WhatsApp = ""; - public const string YouTube = ""; - public const string Microsoft = ""; - public const string MicrosoftAzure = ""; - public const string MicrosoftAzureDevOps = ""; - public const string MicrosoftVisualStudio = ""; - public const string MicrosoftWindows = ""; - - public const string Discord = ""; - - public const string Steam = "<"; - public const string StackOverflow = ""; - public const string Chrome = ""; - public const string Gmail = ""; - public const string Calculator = ""; - public const string Linux = ""; - } - } - } -} diff --git a/src/Connected.Components/Icons/Custom/FileFormats.cs b/src/Connected.Components/Icons/Custom/FileFormats.cs deleted file mode 100644 index 9833ff2..0000000 --- a/src/Connected.Components/Icons/Custom/FileFormats.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Diagnostics.CodeAnalysis; - -namespace Connected -{ - public partial class Icons - { - public partial class Custom - { - [ExcludeFromCodeCoverage] - public class FileFormats - { - public const string FileCode = ""; - public const string FileDocument = ""; - public const string FileExcel = ""; - public const string FileImage = ""; - public const string FileMusic = ""; - public const string FilePdf = ""; - public const string FileVideo = ""; - public const string FileWord = ""; - } - } - } -} diff --git a/src/Connected.Components/Icons/Custom/Uncategorized.cs b/src/Connected.Components/Icons/Custom/Uncategorized.cs deleted file mode 100644 index 9ddae93..0000000 --- a/src/Connected.Components/Icons/Custom/Uncategorized.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Diagnostics.CodeAnalysis; - -namespace Connected -{ - public partial class Icons - { - public partial class Custom - { - [ExcludeFromCodeCoverage] - public class Uncategorized - { - public const string Radioactive = ""; - public const string BioHazard = ""; - public const string FoodApple = ""; - public const string Bacteria = ""; - public const string Baguette = ""; - public const string Sausage = ""; - public const string WaterMelon = ""; - public const string AlertSuccess = ""; - public const string ColorPalette = ""; - public const string Fish = ""; - public const string Folder = ""; - public const string FolderOpen = ""; - public const string ChessQueen = ""; - public const string ChessKing = ""; - public const string ChessBishop = ">"; - public const string ChessKnight = ""; - public const string ChessPawn = ""; - public const string ChessRook = ""; - } - } - } -} diff --git a/src/Connected.Components/Icons/Material/Filled.cs b/src/Connected.Components/Icons/Filled.cs similarity index 100% rename from src/Connected.Components/Icons/Material/Filled.cs rename to src/Connected.Components/Icons/Filled.cs diff --git a/src/Connected.Components/Icons/Material/_Obsolete.cs b/src/Connected.Components/Icons/Material/_Obsolete.cs deleted file mode 100644 index 9a59b2a..0000000 --- a/src/Connected.Components/Icons/Material/_Obsolete.cs +++ /dev/null @@ -1,197 +0,0 @@ -using System; - -namespace Connected -{ - // These icons have been removed from the Google Material Design Icons set either - // due to typo corrections, improved consistency in naming or simply because they - // have been retired. They may be removed in a future version of MudBlazor so - // it is strongly recommended to remove or update any references to them. - public partial class Icons - { - public partial class Material - { - public partial class Filled - { - [Obsolete("Removed from Material Design Icons.", true)] - public const string AmpStories = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string Eco = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string BlockFlipped = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string OutgoingMail = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string HomeFilled = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string AssistantNavigation = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string LocationPin = ""; - - [Obsolete("Removed from Material Design Icons. Replace with `Outbound` icon.", true)] - public string Outbond => Outbound; - - [Obsolete("Removed from Material Design Icons. Replace with `Workspaces` icon.", true)] - public string WorkspacesFilled => Workspaces; - - [Obsolete("Removed from Material Design Icons. Replace with `FilterAlt` icon.", true)] - public string FilterListAlt => FilterAlt; - - [Obsolete("Removed from Material Design Icons. Replace with `AddIcCall` icon.", true)] - public string AddCall => AddIcCall; - - [Obsolete("Removed from Material Design Icons. Replace with `WbTwilight` icon.", true)] - public string WbTwighlight => WbTwilight; - - [Obsolete("Removed from Material Design Icons. Replace with `PieChartOutline` icon.", true)] - public string PieChartOutlined => PieChartOutline; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lock` icon.", true)] - public string LockOutlined => Outlined.Lock; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Info` icon.", true)] - public string InfoOutlined => Outlined.Info; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Label` icon.", true)] - public string LabelOutline => Outlined.Label; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.LabelImportant` icon.", true)] - public string LabelImportantOutline => Outlined.LabelImportant; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lightbulb` icon.", true)] - public string LightbulbOutline => Outlined.Lightbulb; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Workspaces` icon.", true)] - public string WorkspacesOutline => Outlined.Workspaces; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.DriveFileMove` icon.", true)] - public string DriveFileMoveOutline => Outlined.DriveFileMove; - - [Obsolete("Removed from Material Design Icons. Replace with `NoMeals` icon.", true)] - public string NoMealsOuline => NoMeals; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Filled.Flag` icon.", false)] - public string EmojiFlags => Filled.Flag; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Custom.Brands.Facebook` icon.", false)] - public string Facebook => Custom.Brands.Facebook; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Filled.Lock` icon.", false)] - public string LockOutline => Filled.Lock; - } - - public partial class Outlined - { - [Obsolete("Removed from Material Design Icons.", true)] - public const string AmpStories = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string Eco = ""; - - [Obsolete("Removed from Material Design Icons. Replace with `Face` icon.", true)] - public string FaceUnlock => Face; - - [Obsolete("Removed from Material Design Icons. Replace with `Outbound` icon.", true)] - public string Outbond => Outbound; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lock` icon.", true)] - public string LockOutlined => Outlined.Lock; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Info` icon.", true)] - public string InfoOutlined => Outlined.Info; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Label` icon.", true)] - public string LabelOutline => Outlined.Label; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.LabelImportant` icon.", true)] - public string LabelImportantOutline => Outlined.LabelImportant; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lightbulb` icon.", true)] - public string LightbulbOutline => Outlined.Lightbulb; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Flag` icon.", false)] - public string EmojiFlags => Outlined.Flag; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Custom.Brands.Facebook` icon.", false)] - public string Facebook => Custom.Brands.Facebook; - } - - public partial class Rounded - { - [Obsolete("Removed from Material Design Icons.", true)] - public const string AmpStories = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string Eco = ""; - - [Obsolete("Removed from Material Design Icons. Replace with `Face` icon.", true)] - public string FaceUnlock => Face; - - [Obsolete("Removed from Material Design Icons. Replace with `Outbound` icon.", true)] - public string Outbond => Outbound; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lock` icon.", true)] - public string LockOutlined => Outlined.Lock; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Info` icon.", true)] - public string InfoOutlined => Outlined.Info; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Label` icon.", true)] - public string LabelOutline => Outlined.Label; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.LabelImportant` icon.", true)] - public string LabelImportantOutline => Outlined.LabelImportant; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lightbulb` icon.", true)] - public string LightbulbOutline => Outlined.Lightbulb; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Rounded.Flag` icon.", false)] - public string EmojiFlags => Rounded.Flag; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Custom.Brands.Facebook` icon.", false)] - public string Facebook => Custom.Brands.Facebook; - } - - public partial class Sharp - { - [Obsolete("Removed from Material Design Icons.", true)] - public const string AmpStories = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string Eco = ""; - - [Obsolete("Removed from Material Design Icons. Replace with `Face` icon.", true)] - public string FaceUnlock => Face; - - [Obsolete("Removed from Material Design Icons. Replace with `Outbound` icon.", true)] - public string Outbond => Outbound; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lock` icon.", true)] - public string LockOutlined => Outlined.Lock; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Info` icon.", true)] - public string InfoOutlined => Outlined.Info; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Label` icon.", true)] - public string LabelOutline => Outlined.Label; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.LabelImportant` icon.", true)] - public string LabelImportantOutline => Outlined.LabelImportant; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lightbulb` icon.", true)] - public string LightbulbOutline => Outlined.Lightbulb; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Sharp.Flag` icon.", false)] - public string EmojiFlags => Sharp.Flag; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Custom.Brands.Facebook` icon.", false)] - public string Facebook => Custom.Brands.Facebook; - } - } - } -} diff --git a/src/Connected.Components/Icons/Obsolete/Filled.cs b/src/Connected.Components/Icons/Obsolete/Filled.cs deleted file mode 100644 index 8eb4822..0000000 --- a/src/Connected.Components/Icons/Obsolete/Filled.cs +++ /dev/null @@ -1,2066 +0,0 @@ -/* - * This file was auto-generated by Update-MudIcons.ps1 - * 2022.02.01_04:17:46 - */ - -using System.Diagnostics.CodeAnalysis; - -namespace Connected -{ - public partial class Icons - { - [ExcludeFromCodeCoverage] - public partial class Filled - { - public const string _10k = Material.Filled._10k; - public const string _10mp = Material.Filled._10mp; - public const string _11mp = Material.Filled._11mp; - public const string _123 = Material.Filled._123; - public const string _12mp = Material.Filled._12mp; - public const string _13mp = Material.Filled._13mp; - public const string _14mp = Material.Filled._14mp; - public const string _15mp = Material.Filled._15mp; - public const string _16mp = Material.Filled._16mp; - public const string _17mp = Material.Filled._17mp; - public const string _18mp = Material.Filled._18mp; - public const string _19mp = Material.Filled._19mp; - public const string _1k = Material.Filled._1k; - public const string _1kPlus = Material.Filled._1kPlus; - public const string _1xMobiledata = Material.Filled._1xMobiledata; - public const string _20mp = Material.Filled._20mp; - public const string _21mp = Material.Filled._21mp; - public const string _22mp = Material.Filled._22mp; - public const string _23mp = Material.Filled._23mp; - public const string _24mp = Material.Filled._24mp; - public const string _2k = Material.Filled._2k; - public const string _2kPlus = Material.Filled._2kPlus; - public const string _2mp = Material.Filled._2mp; - public const string _30fps = Material.Filled._30fps; - public const string _30fpsSelect = Material.Filled._30fpsSelect; - public const string _360 = Material.Filled._360; - public const string _3dRotation = Material.Filled._3dRotation; - public const string _3gMobiledata = Material.Filled._3gMobiledata; - public const string _3k = Material.Filled._3k; - public const string _3kPlus = Material.Filled._3kPlus; - public const string _3mp = Material.Filled._3mp; - public const string _3p = Material.Filled._3p; - public const string _4gMobiledata = Material.Filled._4gMobiledata; - public const string _4gPlusMobiledata = Material.Filled._4gPlusMobiledata; - public const string _4k = Material.Filled._4k; - public const string _4kPlus = Material.Filled._4kPlus; - public const string _4mp = Material.Filled._4mp; - public const string _5g = Material.Filled._5g; - public const string _5k = Material.Filled._5k; - public const string _5kPlus = Material.Filled._5kPlus; - public const string _5mp = Material.Filled._5mp; - public const string _60fps = Material.Filled._60fps; - public const string _60fpsSelect = Material.Filled._60fpsSelect; - public const string _6FtApart = Material.Filled._6FtApart; - public const string _6k = Material.Filled._6k; - public const string _6kPlus = Material.Filled._6kPlus; - public const string _6mp = Material.Filled._6mp; - public const string _7k = Material.Filled._7k; - public const string _7kPlus = Material.Filled._7kPlus; - public const string _7mp = Material.Filled._7mp; - public const string _8k = Material.Filled._8k; - public const string _8kPlus = Material.Filled._8kPlus; - public const string _8mp = Material.Filled._8mp; - public const string _9k = Material.Filled._9k; - public const string _9kPlus = Material.Filled._9kPlus; - public const string _9mp = Material.Filled._9mp; - public const string Abc = Material.Filled.Abc; - public const string AcUnit = Material.Filled.AcUnit; - public const string AccessAlarm = Material.Filled.AccessAlarm; - public const string AccessAlarms = Material.Filled.AccessAlarms; - public const string AccessTime = Material.Filled.AccessTime; - public const string AccessTimeFilled = Material.Filled.AccessTimeFilled; - public const string Accessibility = Material.Filled.Accessibility; - public const string AccessibilityNew = Material.Filled.AccessibilityNew; - public const string Accessible = Material.Filled.Accessible; - public const string AccessibleForward = Material.Filled.AccessibleForward; - public const string AccountBalance = Material.Filled.AccountBalance; - public const string AccountBalanceWallet = Material.Filled.AccountBalanceWallet; - public const string AccountBox = Material.Filled.AccountBox; - public const string AccountCircle = Material.Filled.AccountCircle; - public const string AccountTree = Material.Filled.AccountTree; - public const string AdUnits = Material.Filled.AdUnits; - public const string Adb = Material.Filled.Adb; - public const string Add = Material.Filled.Add; - public const string AddAPhoto = Material.Filled.AddAPhoto; - public const string AddAlarm = Material.Filled.AddAlarm; - public const string AddAlert = Material.Filled.AddAlert; - public const string AddBox = Material.Filled.AddBox; - public const string AddBusiness = Material.Filled.AddBusiness; - public const string AddCard = Material.Filled.AddCard; - public const string AddChart = Material.Filled.AddChart; - public const string AddCircle = Material.Filled.AddCircle; - public const string AddCircleOutline = Material.Filled.AddCircleOutline; - public const string AddComment = Material.Filled.AddComment; - public const string AddIcCall = Material.Filled.AddIcCall; - public const string AddLink = Material.Filled.AddLink; - public const string AddLocation = Material.Filled.AddLocation; - public const string AddLocationAlt = Material.Filled.AddLocationAlt; - public const string AddModerator = Material.Filled.AddModerator; - public const string AddPhotoAlternate = Material.Filled.AddPhotoAlternate; - public const string AddReaction = Material.Filled.AddReaction; - public const string AddRoad = Material.Filled.AddRoad; - public const string AddShoppingCart = Material.Filled.AddShoppingCart; - public const string AddTask = Material.Filled.AddTask; - public const string AddToDrive = Material.Filled.AddToDrive; - public const string AddToHomeScreen = Material.Filled.AddToHomeScreen; - public const string AddToPhotos = Material.Filled.AddToPhotos; - public const string AddToQueue = Material.Filled.AddToQueue; - public const string Addchart = Material.Filled.Addchart; - public const string AdfScanner = Material.Filled.AdfScanner; - public const string Adjust = Material.Filled.Adjust; - public const string AdminPanelSettings = Material.Filled.AdminPanelSettings; - public const string AdsClick = Material.Filled.AdsClick; - public const string Agriculture = Material.Filled.Agriculture; - public const string Air = Material.Filled.Air; - public const string AirlineSeatFlat = Material.Filled.AirlineSeatFlat; - public const string AirlineSeatFlatAngled = Material.Filled.AirlineSeatFlatAngled; - public const string AirlineSeatIndividualSuite = Material.Filled.AirlineSeatIndividualSuite; - public const string AirlineSeatLegroomExtra = Material.Filled.AirlineSeatLegroomExtra; - public const string AirlineSeatLegroomNormal = Material.Filled.AirlineSeatLegroomNormal; - public const string AirlineSeatLegroomReduced = Material.Filled.AirlineSeatLegroomReduced; - public const string AirlineSeatReclineExtra = Material.Filled.AirlineSeatReclineExtra; - public const string AirlineSeatReclineNormal = Material.Filled.AirlineSeatReclineNormal; - public const string AirlineStops = Material.Filled.AirlineStops; - public const string Airlines = Material.Filled.Airlines; - public const string AirplaneTicket = Material.Filled.AirplaneTicket; - public const string AirplanemodeActive = Material.Filled.AirplanemodeActive; - public const string AirplanemodeInactive = Material.Filled.AirplanemodeInactive; - public const string Airplay = Material.Filled.Airplay; - public const string AirportShuttle = Material.Filled.AirportShuttle; - public const string Alarm = Material.Filled.Alarm; - public const string AlarmAdd = Material.Filled.AlarmAdd; - public const string AlarmOff = Material.Filled.AlarmOff; - public const string AlarmOn = Material.Filled.AlarmOn; - public const string Album = Material.Filled.Album; - public const string AlignHorizontalCenter = Material.Filled.AlignHorizontalCenter; - public const string AlignHorizontalLeft = Material.Filled.AlignHorizontalLeft; - public const string AlignHorizontalRight = Material.Filled.AlignHorizontalRight; - public const string AlignVerticalBottom = Material.Filled.AlignVerticalBottom; - public const string AlignVerticalCenter = Material.Filled.AlignVerticalCenter; - public const string AlignVerticalTop = Material.Filled.AlignVerticalTop; - public const string AllInbox = Material.Filled.AllInbox; - public const string AllInclusive = Material.Filled.AllInclusive; - public const string AllOut = Material.Filled.AllOut; - public const string AltRoute = Material.Filled.AltRoute; - public const string AlternateEmail = Material.Filled.AlternateEmail; - public const string Analytics = Material.Filled.Analytics; - public const string Anchor = Material.Filled.Anchor; - public const string Android = Material.Filled.Android; - public const string Animation = Material.Filled.Animation; - public const string Announcement = Material.Filled.Announcement; - public const string Aod = Material.Filled.Aod; - public const string Apartment = Material.Filled.Apartment; - public const string Api = Material.Filled.Api; - public const string AppBlocking = Material.Filled.AppBlocking; - public const string AppRegistration = Material.Filled.AppRegistration; - public const string AppSettingsAlt = Material.Filled.AppSettingsAlt; - public const string AppShortcut = Material.Filled.AppShortcut; - public const string Approval = Material.Filled.Approval; - public const string Apps = Material.Filled.Apps; - public const string AppsOutage = Material.Filled.AppsOutage; - public const string Architecture = Material.Filled.Architecture; - public const string Archive = Material.Filled.Archive; - public const string AreaChart = Material.Filled.AreaChart; - public const string ArrowBack = Material.Filled.ArrowBack; - public const string ArrowBackIos = Material.Filled.ArrowBackIos; - public const string ArrowBackIosNew = Material.Filled.ArrowBackIosNew; - public const string ArrowCircleDown = Material.Filled.ArrowCircleDown; - public const string ArrowCircleLeft = Material.Filled.ArrowCircleLeft; - public const string ArrowCircleRight = Material.Filled.ArrowCircleRight; - public const string ArrowCircleUp = Material.Filled.ArrowCircleUp; - public const string ArrowDownward = Material.Filled.ArrowDownward; - public const string ArrowDropDown = Material.Filled.ArrowDropDown; - public const string ArrowDropDownCircle = Material.Filled.ArrowDropDownCircle; - public const string ArrowDropUp = Material.Filled.ArrowDropUp; - public const string ArrowForward = Material.Filled.ArrowForward; - public const string ArrowForwardIos = Material.Filled.ArrowForwardIos; - public const string ArrowLeft = Material.Filled.ArrowLeft; - public const string ArrowRight = Material.Filled.ArrowRight; - public const string ArrowRightAlt = Material.Filled.ArrowRightAlt; - public const string ArrowUpward = Material.Filled.ArrowUpward; - public const string ArtTrack = Material.Filled.ArtTrack; - public const string Article = Material.Filled.Article; - public const string AspectRatio = Material.Filled.AspectRatio; - public const string Assessment = Material.Filled.Assessment; - public const string Assignment = Material.Filled.Assignment; - public const string AssignmentInd = Material.Filled.AssignmentInd; - public const string AssignmentLate = Material.Filled.AssignmentLate; - public const string AssignmentReturn = Material.Filled.AssignmentReturn; - public const string AssignmentReturned = Material.Filled.AssignmentReturned; - public const string AssignmentTurnedIn = Material.Filled.AssignmentTurnedIn; - public const string Assistant = Material.Filled.Assistant; - public const string AssistantDirection = Material.Filled.AssistantDirection; - public const string AssistantPhoto = Material.Filled.AssistantPhoto; - public const string AssuredWorkload = Material.Filled.AssuredWorkload; - public const string Atm = Material.Filled.Atm; - public const string AttachEmail = Material.Filled.AttachEmail; - public const string AttachFile = Material.Filled.AttachFile; - public const string AttachMoney = Material.Filled.AttachMoney; - public const string Attachment = Material.Filled.Attachment; - public const string Attractions = Material.Filled.Attractions; - public const string Attribution = Material.Filled.Attribution; - public const string AudioFile = Material.Filled.AudioFile; - public const string Audiotrack = Material.Filled.Audiotrack; - public const string AutoAwesome = Material.Filled.AutoAwesome; - public const string AutoAwesomeMosaic = Material.Filled.AutoAwesomeMosaic; - public const string AutoAwesomeMotion = Material.Filled.AutoAwesomeMotion; - public const string AutoDelete = Material.Filled.AutoDelete; - public const string AutoFixHigh = Material.Filled.AutoFixHigh; - public const string AutoFixNormal = Material.Filled.AutoFixNormal; - public const string AutoFixOff = Material.Filled.AutoFixOff; - public const string AutoGraph = Material.Filled.AutoGraph; - public const string AutoStories = Material.Filled.AutoStories; - public const string AutofpsSelect = Material.Filled.AutofpsSelect; - public const string Autorenew = Material.Filled.Autorenew; - public const string AvTimer = Material.Filled.AvTimer; - public const string BabyChangingStation = Material.Filled.BabyChangingStation; - public const string BackHand = Material.Filled.BackHand; - public const string Backpack = Material.Filled.Backpack; - public const string Backspace = Material.Filled.Backspace; - public const string Backup = Material.Filled.Backup; - public const string BackupTable = Material.Filled.BackupTable; - public const string Badge = Material.Filled.Badge; - public const string BakeryDining = Material.Filled.BakeryDining; - public const string Balance = Material.Filled.Balance; - public const string Balcony = Material.Filled.Balcony; - public const string Ballot = Material.Filled.Ballot; - public const string BarChart = Material.Filled.BarChart; - public const string BatchPrediction = Material.Filled.BatchPrediction; - public const string Bathroom = Material.Filled.Bathroom; - public const string Bathtub = Material.Filled.Bathtub; - public const string Battery0Bar = Material.Filled.Battery0Bar; - public const string Battery1Bar = Material.Filled.Battery1Bar; - public const string Battery2Bar = Material.Filled.Battery2Bar; - public const string Battery3Bar = Material.Filled.Battery3Bar; - public const string Battery4Bar = Material.Filled.Battery4Bar; - public const string Battery5Bar = Material.Filled.Battery5Bar; - public const string Battery6Bar = Material.Filled.Battery6Bar; - public const string BatteryAlert = Material.Filled.BatteryAlert; - public const string BatteryChargingFull = Material.Filled.BatteryChargingFull; - public const string BatteryFull = Material.Filled.BatteryFull; - public const string BatterySaver = Material.Filled.BatterySaver; - public const string BatteryStd = Material.Filled.BatteryStd; - public const string BatteryUnknown = Material.Filled.BatteryUnknown; - public const string BeachAccess = Material.Filled.BeachAccess; - public const string Bed = Material.Filled.Bed; - public const string BedroomBaby = Material.Filled.BedroomBaby; - public const string BedroomChild = Material.Filled.BedroomChild; - public const string BedroomParent = Material.Filled.BedroomParent; - public const string Bedtime = Material.Filled.Bedtime; - public const string BedtimeOff = Material.Filled.BedtimeOff; - public const string Beenhere = Material.Filled.Beenhere; - public const string Bento = Material.Filled.Bento; - public const string BikeScooter = Material.Filled.BikeScooter; - public const string Biotech = Material.Filled.Biotech; - public const string Blender = Material.Filled.Blender; - public const string Block = Material.Filled.Block; - public const string Bloodtype = Material.Filled.Bloodtype; - public const string Bluetooth = Material.Filled.Bluetooth; - public const string BluetoothAudio = Material.Filled.BluetoothAudio; - public const string BluetoothConnected = Material.Filled.BluetoothConnected; - public const string BluetoothDisabled = Material.Filled.BluetoothDisabled; - public const string BluetoothDrive = Material.Filled.BluetoothDrive; - public const string BluetoothSearching = Material.Filled.BluetoothSearching; - public const string BlurCircular = Material.Filled.BlurCircular; - public const string BlurLinear = Material.Filled.BlurLinear; - public const string BlurOff = Material.Filled.BlurOff; - public const string BlurOn = Material.Filled.BlurOn; - public const string Bolt = Material.Filled.Bolt; - public const string Book = Material.Filled.Book; - public const string BookOnline = Material.Filled.BookOnline; - public const string Bookmark = Material.Filled.Bookmark; - public const string BookmarkAdd = Material.Filled.BookmarkAdd; - public const string BookmarkAdded = Material.Filled.BookmarkAdded; - public const string BookmarkBorder = Material.Filled.BookmarkBorder; - public const string BookmarkRemove = Material.Filled.BookmarkRemove; - public const string Bookmarks = Material.Filled.Bookmarks; - public const string BorderAll = Material.Filled.BorderAll; - public const string BorderBottom = Material.Filled.BorderBottom; - public const string BorderClear = Material.Filled.BorderClear; - public const string BorderColor = Material.Filled.BorderColor; - public const string BorderHorizontal = Material.Filled.BorderHorizontal; - public const string BorderInner = Material.Filled.BorderInner; - public const string BorderLeft = Material.Filled.BorderLeft; - public const string BorderOuter = Material.Filled.BorderOuter; - public const string BorderRight = Material.Filled.BorderRight; - public const string BorderStyle = Material.Filled.BorderStyle; - public const string BorderTop = Material.Filled.BorderTop; - public const string BorderVertical = Material.Filled.BorderVertical; - public const string Boy = Material.Filled.Boy; - public const string BrandingWatermark = Material.Filled.BrandingWatermark; - public const string BreakfastDining = Material.Filled.BreakfastDining; - public const string Brightness1 = Material.Filled.Brightness1; - public const string Brightness2 = Material.Filled.Brightness2; - public const string Brightness3 = Material.Filled.Brightness3; - public const string Brightness4 = Material.Filled.Brightness4; - public const string Brightness5 = Material.Filled.Brightness5; - public const string Brightness6 = Material.Filled.Brightness6; - public const string Brightness7 = Material.Filled.Brightness7; - public const string BrightnessAuto = Material.Filled.BrightnessAuto; - public const string BrightnessHigh = Material.Filled.BrightnessHigh; - public const string BrightnessLow = Material.Filled.BrightnessLow; - public const string BrightnessMedium = Material.Filled.BrightnessMedium; - public const string BrokenImage = Material.Filled.BrokenImage; - public const string BrowseGallery = Material.Filled.BrowseGallery; - public const string BrowserNotSupported = Material.Filled.BrowserNotSupported; - public const string BrowserUpdated = Material.Filled.BrowserUpdated; - public const string BrunchDining = Material.Filled.BrunchDining; - public const string Brush = Material.Filled.Brush; - public const string BubbleChart = Material.Filled.BubbleChart; - public const string BugReport = Material.Filled.BugReport; - public const string Build = Material.Filled.Build; - public const string BuildCircle = Material.Filled.BuildCircle; - public const string Bungalow = Material.Filled.Bungalow; - public const string BurstMode = Material.Filled.BurstMode; - public const string BusAlert = Material.Filled.BusAlert; - public const string Business = Material.Filled.Business; - public const string BusinessCenter = Material.Filled.BusinessCenter; - public const string Cabin = Material.Filled.Cabin; - public const string Cable = Material.Filled.Cable; - public const string Cached = Material.Filled.Cached; - public const string Cake = Material.Filled.Cake; - public const string Calculate = Material.Filled.Calculate; - public const string CalendarMonth = Material.Filled.CalendarMonth; - public const string CalendarToday = Material.Filled.CalendarToday; - public const string CalendarViewDay = Material.Filled.CalendarViewDay; - public const string CalendarViewMonth = Material.Filled.CalendarViewMonth; - public const string CalendarViewWeek = Material.Filled.CalendarViewWeek; - public const string Call = Material.Filled.Call; - public const string CallEnd = Material.Filled.CallEnd; - public const string CallMade = Material.Filled.CallMade; - public const string CallMerge = Material.Filled.CallMerge; - public const string CallMissed = Material.Filled.CallMissed; - public const string CallMissedOutgoing = Material.Filled.CallMissedOutgoing; - public const string CallReceived = Material.Filled.CallReceived; - public const string CallSplit = Material.Filled.CallSplit; - public const string CallToAction = Material.Filled.CallToAction; - public const string Camera = Material.Filled.Camera; - public const string CameraAlt = Material.Filled.CameraAlt; - public const string CameraEnhance = Material.Filled.CameraEnhance; - public const string CameraFront = Material.Filled.CameraFront; - public const string CameraIndoor = Material.Filled.CameraIndoor; - public const string CameraOutdoor = Material.Filled.CameraOutdoor; - public const string CameraRear = Material.Filled.CameraRear; - public const string CameraRoll = Material.Filled.CameraRoll; - public const string Cameraswitch = Material.Filled.Cameraswitch; - public const string Campaign = Material.Filled.Campaign; - public const string Cancel = Material.Filled.Cancel; - public const string CancelPresentation = Material.Filled.CancelPresentation; - public const string CancelScheduleSend = Material.Filled.CancelScheduleSend; - public const string CandlestickChart = Material.Filled.CandlestickChart; - public const string CarCrash = Material.Filled.CarCrash; - public const string CarRental = Material.Filled.CarRental; - public const string CarRepair = Material.Filled.CarRepair; - public const string CardGiftcard = Material.Filled.CardGiftcard; - public const string CardMembership = Material.Filled.CardMembership; - public const string CardTravel = Material.Filled.CardTravel; - public const string Carpenter = Material.Filled.Carpenter; - public const string Cases = Material.Filled.Cases; - public const string Casino = Material.Filled.Casino; - public const string Cast = Material.Filled.Cast; - public const string CastConnected = Material.Filled.CastConnected; - public const string CastForEducation = Material.Filled.CastForEducation; - public const string Castle = Material.Filled.Castle; - public const string CatchingPokemon = Material.Filled.CatchingPokemon; - public const string Category = Material.Filled.Category; - public const string Celebration = Material.Filled.Celebration; - public const string CellTower = Material.Filled.CellTower; - public const string CellWifi = Material.Filled.CellWifi; - public const string CenterFocusStrong = Material.Filled.CenterFocusStrong; - public const string CenterFocusWeak = Material.Filled.CenterFocusWeak; - public const string Chair = Material.Filled.Chair; - public const string ChairAlt = Material.Filled.ChairAlt; - public const string Chalet = Material.Filled.Chalet; - public const string ChangeCircle = Material.Filled.ChangeCircle; - public const string ChangeHistory = Material.Filled.ChangeHistory; - public const string ChargingStation = Material.Filled.ChargingStation; - public const string Chat = Material.Filled.Chat; - public const string ChatBubble = Material.Filled.ChatBubble; - public const string ChatBubbleOutline = Material.Filled.ChatBubbleOutline; - public const string Check = Material.Filled.Check; - public const string CheckBox = Material.Filled.CheckBox; - public const string CheckBoxOutlineBlank = Material.Filled.CheckBoxOutlineBlank; - public const string CheckCircle = Material.Filled.CheckCircle; - public const string CheckCircleOutline = Material.Filled.CheckCircleOutline; - public const string Checklist = Material.Filled.Checklist; - public const string ChecklistRtl = Material.Filled.ChecklistRtl; - public const string Checkroom = Material.Filled.Checkroom; - public const string ChevronLeft = Material.Filled.ChevronLeft; - public const string ChevronRight = Material.Filled.ChevronRight; - public const string ChildCare = Material.Filled.ChildCare; - public const string ChildFriendly = Material.Filled.ChildFriendly; - public const string ChromeReaderMode = Material.Filled.ChromeReaderMode; - public const string Church = Material.Filled.Church; - public const string Circle = Material.Filled.Circle; - public const string CircleNotifications = Material.Filled.CircleNotifications; - public const string Class = Material.Filled.Class; - public const string CleanHands = Material.Filled.CleanHands; - public const string CleaningServices = Material.Filled.CleaningServices; - public const string Clear = Material.Filled.Clear; - public const string ClearAll = Material.Filled.ClearAll; - public const string Close = Material.Filled.Close; - public const string CloseFullscreen = Material.Filled.CloseFullscreen; - public const string ClosedCaption = Material.Filled.ClosedCaption; - public const string ClosedCaptionDisabled = Material.Filled.ClosedCaptionDisabled; - public const string ClosedCaptionOff = Material.Filled.ClosedCaptionOff; - public const string Cloud = Material.Filled.Cloud; - public const string CloudCircle = Material.Filled.CloudCircle; - public const string CloudDone = Material.Filled.CloudDone; - public const string CloudDownload = Material.Filled.CloudDownload; - public const string CloudOff = Material.Filled.CloudOff; - public const string CloudQueue = Material.Filled.CloudQueue; - public const string CloudSync = Material.Filled.CloudSync; - public const string CloudUpload = Material.Filled.CloudUpload; - public const string Co2 = Material.Filled.Co2; - public const string CoPresent = Material.Filled.CoPresent; - public const string Code = Material.Filled.Code; - public const string CodeOff = Material.Filled.CodeOff; - public const string Coffee = Material.Filled.Coffee; - public const string CoffeeMaker = Material.Filled.CoffeeMaker; - public const string Collections = Material.Filled.Collections; - public const string CollectionsBookmark = Material.Filled.CollectionsBookmark; - public const string ColorLens = Material.Filled.ColorLens; - public const string Colorize = Material.Filled.Colorize; - public const string Comment = Material.Filled.Comment; - public const string CommentBank = Material.Filled.CommentBank; - public const string CommentsDisabled = Material.Filled.CommentsDisabled; - public const string Commit = Material.Filled.Commit; - public const string Commute = Material.Filled.Commute; - public const string Compare = Material.Filled.Compare; - public const string CompareArrows = Material.Filled.CompareArrows; - public const string CompassCalibration = Material.Filled.CompassCalibration; - public const string Compost = Material.Filled.Compost; - public const string Compress = Material.Filled.Compress; - public const string Computer = Material.Filled.Computer; - public const string ConfirmationNumber = Material.Filled.ConfirmationNumber; - public const string ConnectWithoutContact = Material.Filled.ConnectWithoutContact; - public const string ConnectedTv = Material.Filled.ConnectedTv; - public const string ConnectingAirports = Material.Filled.ConnectingAirports; - public const string Construction = Material.Filled.Construction; - public const string ContactMail = Material.Filled.ContactMail; - public const string ContactPage = Material.Filled.ContactPage; - public const string ContactPhone = Material.Filled.ContactPhone; - public const string ContactSupport = Material.Filled.ContactSupport; - public const string Contactless = Material.Filled.Contactless; - public const string Contacts = Material.Filled.Contacts; - public const string ContentCopy = Material.Filled.ContentCopy; - public const string ContentCut = Material.Filled.ContentCut; - public const string ContentPaste = Material.Filled.ContentPaste; - public const string ContentPasteGo = Material.Filled.ContentPasteGo; - public const string ContentPasteOff = Material.Filled.ContentPasteOff; - public const string ContentPasteSearch = Material.Filled.ContentPasteSearch; - public const string Contrast = Material.Filled.Contrast; - public const string ControlCamera = Material.Filled.ControlCamera; - public const string ControlPoint = Material.Filled.ControlPoint; - public const string ControlPointDuplicate = Material.Filled.ControlPointDuplicate; - public const string Cookie = Material.Filled.Cookie; - public const string CopyAll = Material.Filled.CopyAll; - public const string Copyright = Material.Filled.Copyright; - public const string Coronavirus = Material.Filled.Coronavirus; - public const string CorporateFare = Material.Filled.CorporateFare; - public const string Cottage = Material.Filled.Cottage; - public const string Countertops = Material.Filled.Countertops; - public const string Create = Material.Filled.Create; - public const string CreateNewFolder = Material.Filled.CreateNewFolder; - public const string CreditCard = Material.Filled.CreditCard; - public const string CreditCardOff = Material.Filled.CreditCardOff; - public const string CreditScore = Material.Filled.CreditScore; - public const string Crib = Material.Filled.Crib; - public const string CrisisAlert = Material.Filled.CrisisAlert; - public const string Crop = Material.Filled.Crop; - public const string Crop169 = Material.Filled.Crop169; - public const string Crop32 = Material.Filled.Crop32; - public const string Crop54 = Material.Filled.Crop54; - public const string Crop75 = Material.Filled.Crop75; - public const string CropDin = Material.Filled.CropDin; - public const string CropFree = Material.Filled.CropFree; - public const string CropLandscape = Material.Filled.CropLandscape; - public const string CropOriginal = Material.Filled.CropOriginal; - public const string CropPortrait = Material.Filled.CropPortrait; - public const string CropRotate = Material.Filled.CropRotate; - public const string CropSquare = Material.Filled.CropSquare; - public const string CrueltyFree = Material.Filled.CrueltyFree; - public const string Css = Material.Filled.Css; - public const string CurrencyBitcoin = Material.Filled.CurrencyBitcoin; - public const string CurrencyExchange = Material.Filled.CurrencyExchange; - public const string CurrencyFranc = Material.Filled.CurrencyFranc; - public const string CurrencyLira = Material.Filled.CurrencyLira; - public const string CurrencyPound = Material.Filled.CurrencyPound; - public const string CurrencyRuble = Material.Filled.CurrencyRuble; - public const string CurrencyRupee = Material.Filled.CurrencyRupee; - public const string CurrencyYen = Material.Filled.CurrencyYen; - public const string CurrencyYuan = Material.Filled.CurrencyYuan; - public const string Cyclone = Material.Filled.Cyclone; - public const string Dangerous = Material.Filled.Dangerous; - public const string DarkMode = Material.Filled.DarkMode; - public const string Dashboard = Material.Filled.Dashboard; - public const string DashboardCustomize = Material.Filled.DashboardCustomize; - public const string DataArray = Material.Filled.DataArray; - public const string DataExploration = Material.Filled.DataExploration; - public const string DataObject = Material.Filled.DataObject; - public const string DataSaverOff = Material.Filled.DataSaverOff; - public const string DataSaverOn = Material.Filled.DataSaverOn; - public const string DataThresholding = Material.Filled.DataThresholding; - public const string DataUsage = Material.Filled.DataUsage; - public const string DateRange = Material.Filled.DateRange; - public const string Deblur = Material.Filled.Deblur; - public const string Deck = Material.Filled.Deck; - public const string Dehaze = Material.Filled.Dehaze; - public const string Delete = Material.Filled.Delete; - public const string DeleteForever = Material.Filled.DeleteForever; - public const string DeleteOutline = Material.Filled.DeleteOutline; - public const string DeleteSweep = Material.Filled.DeleteSweep; - public const string DeliveryDining = Material.Filled.DeliveryDining; - public const string DensityLarge = Material.Filled.DensityLarge; - public const string DensityMedium = Material.Filled.DensityMedium; - public const string DensitySmall = Material.Filled.DensitySmall; - public const string DepartureBoard = Material.Filled.DepartureBoard; - public const string Description = Material.Filled.Description; - public const string Deselect = Material.Filled.Deselect; - public const string DesignServices = Material.Filled.DesignServices; - public const string DesktopAccessDisabled = Material.Filled.DesktopAccessDisabled; - public const string DesktopMac = Material.Filled.DesktopMac; - public const string DesktopWindows = Material.Filled.DesktopWindows; - public const string Details = Material.Filled.Details; - public const string DeveloperBoard = Material.Filled.DeveloperBoard; - public const string DeveloperBoardOff = Material.Filled.DeveloperBoardOff; - public const string DeveloperMode = Material.Filled.DeveloperMode; - public const string DeviceHub = Material.Filled.DeviceHub; - public const string DeviceThermostat = Material.Filled.DeviceThermostat; - public const string DeviceUnknown = Material.Filled.DeviceUnknown; - public const string Devices = Material.Filled.Devices; - public const string DevicesFold = Material.Filled.DevicesFold; - public const string DevicesOther = Material.Filled.DevicesOther; - public const string DialerSip = Material.Filled.DialerSip; - public const string Dialpad = Material.Filled.Dialpad; - public const string Diamond = Material.Filled.Diamond; - public const string Difference = Material.Filled.Difference; - public const string Dining = Material.Filled.Dining; - public const string DinnerDining = Material.Filled.DinnerDining; - public const string Directions = Material.Filled.Directions; - public const string DirectionsBike = Material.Filled.DirectionsBike; - public const string DirectionsBoat = Material.Filled.DirectionsBoat; - public const string DirectionsBoatFilled = Material.Filled.DirectionsBoatFilled; - public const string DirectionsBus = Material.Filled.DirectionsBus; - public const string DirectionsBusFilled = Material.Filled.DirectionsBusFilled; - public const string DirectionsCar = Material.Filled.DirectionsCar; - public const string DirectionsCarFilled = Material.Filled.DirectionsCarFilled; - public const string DirectionsOff = Material.Filled.DirectionsOff; - public const string DirectionsRailway = Material.Filled.DirectionsRailway; - public const string DirectionsRailwayFilled = Material.Filled.DirectionsRailwayFilled; - public const string DirectionsRun = Material.Filled.DirectionsRun; - public const string DirectionsSubway = Material.Filled.DirectionsSubway; - public const string DirectionsSubwayFilled = Material.Filled.DirectionsSubwayFilled; - public const string DirectionsTransit = Material.Filled.DirectionsTransit; - public const string DirectionsTransitFilled = Material.Filled.DirectionsTransitFilled; - public const string DirectionsWalk = Material.Filled.DirectionsWalk; - public const string DirtyLens = Material.Filled.DirtyLens; - public const string DisabledByDefault = Material.Filled.DisabledByDefault; - public const string DisabledVisible = Material.Filled.DisabledVisible; - public const string DiscFull = Material.Filled.DiscFull; - public const string Discount = Material.Filled.Discount; - public const string DisplaySettings = Material.Filled.DisplaySettings; - public const string Dns = Material.Filled.Dns; - public const string DoDisturb = Material.Filled.DoDisturb; - public const string DoDisturbAlt = Material.Filled.DoDisturbAlt; - public const string DoDisturbOff = Material.Filled.DoDisturbOff; - public const string DoDisturbOn = Material.Filled.DoDisturbOn; - public const string DoNotDisturb = Material.Filled.DoNotDisturb; - public const string DoNotDisturbAlt = Material.Filled.DoNotDisturbAlt; - public const string DoNotDisturbOff = Material.Filled.DoNotDisturbOff; - public const string DoNotDisturbOn = Material.Filled.DoNotDisturbOn; - public const string DoNotDisturbOnTotalSilence = Material.Filled.DoNotDisturbOnTotalSilence; - public const string DoNotStep = Material.Filled.DoNotStep; - public const string DoNotTouch = Material.Filled.DoNotTouch; - public const string Dock = Material.Filled.Dock; - public const string DocumentScanner = Material.Filled.DocumentScanner; - public const string Domain = Material.Filled.Domain; - public const string DomainAdd = Material.Filled.DomainAdd; - public const string DomainDisabled = Material.Filled.DomainDisabled; - public const string DomainVerification = Material.Filled.DomainVerification; - public const string Done = Material.Filled.Done; - public const string DoneAll = Material.Filled.DoneAll; - public const string DoneOutline = Material.Filled.DoneOutline; - public const string DonutLarge = Material.Filled.DonutLarge; - public const string DonutSmall = Material.Filled.DonutSmall; - public const string DoorBack = Material.Filled.DoorBack; - public const string DoorFront = Material.Filled.DoorFront; - public const string DoorSliding = Material.Filled.DoorSliding; - public const string Doorbell = Material.Filled.Doorbell; - public const string DoubleArrow = Material.Filled.DoubleArrow; - public const string DownhillSkiing = Material.Filled.DownhillSkiing; - public const string Download = Material.Filled.Download; - public const string DownloadDone = Material.Filled.DownloadDone; - public const string DownloadForOffline = Material.Filled.DownloadForOffline; - public const string Downloading = Material.Filled.Downloading; - public const string Drafts = Material.Filled.Drafts; - public const string DragHandle = Material.Filled.DragHandle; - public const string DragIndicator = Material.Filled.DragIndicator; - public const string Draw = Material.Filled.Draw; - public const string DriveEta = Material.Filled.DriveEta; - public const string DriveFileMove = Material.Filled.DriveFileMove; - public const string DriveFileMoveRtl = Material.Filled.DriveFileMoveRtl; - public const string DriveFileRenameOutline = Material.Filled.DriveFileRenameOutline; - public const string DriveFolderUpload = Material.Filled.DriveFolderUpload; - public const string Dry = Material.Filled.Dry; - public const string DryCleaning = Material.Filled.DryCleaning; - public const string Duo = Material.Filled.Duo; - public const string Dvr = Material.Filled.Dvr; - public const string DynamicFeed = Material.Filled.DynamicFeed; - public const string DynamicForm = Material.Filled.DynamicForm; - public const string EMobiledata = Material.Filled.EMobiledata; - public const string Earbuds = Material.Filled.Earbuds; - public const string EarbudsBattery = Material.Filled.EarbudsBattery; - public const string East = Material.Filled.East; - public const string EdgesensorHigh = Material.Filled.EdgesensorHigh; - public const string EdgesensorLow = Material.Filled.EdgesensorLow; - public const string Edit = Material.Filled.Edit; - public const string EditAttributes = Material.Filled.EditAttributes; - public const string EditCalendar = Material.Filled.EditCalendar; - public const string EditLocation = Material.Filled.EditLocation; - public const string EditLocationAlt = Material.Filled.EditLocationAlt; - public const string EditNote = Material.Filled.EditNote; - public const string EditNotifications = Material.Filled.EditNotifications; - public const string EditOff = Material.Filled.EditOff; - public const string EditRoad = Material.Filled.EditRoad; - public const string Egg = Material.Filled.Egg; - public const string EggAlt = Material.Filled.EggAlt; - public const string Eject = Material.Filled.Eject; - public const string Elderly = Material.Filled.Elderly; - public const string ElderlyWoman = Material.Filled.ElderlyWoman; - public const string ElectricBike = Material.Filled.ElectricBike; - public const string ElectricCar = Material.Filled.ElectricCar; - public const string ElectricMoped = Material.Filled.ElectricMoped; - public const string ElectricRickshaw = Material.Filled.ElectricRickshaw; - public const string ElectricScooter = Material.Filled.ElectricScooter; - public const string ElectricalServices = Material.Filled.ElectricalServices; - public const string Elevator = Material.Filled.Elevator; - public const string Email = Material.Filled.Email; - public const string Emergency = Material.Filled.Emergency; - public const string EmergencyRecording = Material.Filled.EmergencyRecording; - public const string EmergencyShare = Material.Filled.EmergencyShare; - public const string EmojiEmotions = Material.Filled.EmojiEmotions; - public const string EmojiEvents = Material.Filled.EmojiEvents; - public const string EmojiFoodBeverage = Material.Filled.EmojiFoodBeverage; - public const string EmojiNature = Material.Filled.EmojiNature; - public const string EmojiObjects = Material.Filled.EmojiObjects; - public const string EmojiPeople = Material.Filled.EmojiPeople; - public const string EmojiSymbols = Material.Filled.EmojiSymbols; - public const string EmojiTransportation = Material.Filled.EmojiTransportation; - public const string Engineering = Material.Filled.Engineering; - public const string EnhancedEncryption = Material.Filled.EnhancedEncryption; - public const string Equalizer = Material.Filled.Equalizer; - public const string Error = Material.Filled.Error; - public const string ErrorOutline = Material.Filled.ErrorOutline; - public const string Escalator = Material.Filled.Escalator; - public const string EscalatorWarning = Material.Filled.EscalatorWarning; - public const string Euro = Material.Filled.Euro; - public const string EuroSymbol = Material.Filled.EuroSymbol; - public const string EvStation = Material.Filled.EvStation; - public const string Event = Material.Filled.Event; - public const string EventAvailable = Material.Filled.EventAvailable; - public const string EventBusy = Material.Filled.EventBusy; - public const string EventNote = Material.Filled.EventNote; - public const string EventRepeat = Material.Filled.EventRepeat; - public const string EventSeat = Material.Filled.EventSeat; - public const string ExitToApp = Material.Filled.ExitToApp; - public const string Expand = Material.Filled.Expand; - public const string ExpandCircleDown = Material.Filled.ExpandCircleDown; - public const string ExpandLess = Material.Filled.ExpandLess; - public const string ExpandMore = Material.Filled.ExpandMore; - public const string Explicit = Material.Filled.Explicit; - public const string Explore = Material.Filled.Explore; - public const string ExploreOff = Material.Filled.ExploreOff; - public const string Exposure = Material.Filled.Exposure; - public const string ExposureNeg1 = Material.Filled.ExposureNeg1; - public const string ExposureNeg2 = Material.Filled.ExposureNeg2; - public const string ExposurePlus1 = Material.Filled.ExposurePlus1; - public const string ExposurePlus2 = Material.Filled.ExposurePlus2; - public const string ExposureZero = Material.Filled.ExposureZero; - public const string Extension = Material.Filled.Extension; - public const string ExtensionOff = Material.Filled.ExtensionOff; - public const string Face = Material.Filled.Face; - public const string FaceRetouchingNatural = Material.Filled.FaceRetouchingNatural; - public const string FaceRetouchingOff = Material.Filled.FaceRetouchingOff; - public const string FactCheck = Material.Filled.FactCheck; - public const string Factory = Material.Filled.Factory; - public const string FamilyRestroom = Material.Filled.FamilyRestroom; - public const string FastForward = Material.Filled.FastForward; - public const string FastRewind = Material.Filled.FastRewind; - public const string Fastfood = Material.Filled.Fastfood; - public const string Favorite = Material.Filled.Favorite; - public const string FavoriteBorder = Material.Filled.FavoriteBorder; - public const string Fax = Material.Filled.Fax; - public const string FeaturedPlayList = Material.Filled.FeaturedPlayList; - public const string FeaturedVideo = Material.Filled.FeaturedVideo; - public const string Feed = Material.Filled.Feed; - public const string Feedback = Material.Filled.Feedback; - public const string Female = Material.Filled.Female; - public const string Fence = Material.Filled.Fence; - public const string Festival = Material.Filled.Festival; - public const string FiberDvr = Material.Filled.FiberDvr; - public const string FiberManualRecord = Material.Filled.FiberManualRecord; - public const string FiberNew = Material.Filled.FiberNew; - public const string FiberPin = Material.Filled.FiberPin; - public const string FiberSmartRecord = Material.Filled.FiberSmartRecord; - public const string FileCopy = Material.Filled.FileCopy; - public const string FileDownload = Material.Filled.FileDownload; - public const string FileDownloadDone = Material.Filled.FileDownloadDone; - public const string FileDownloadOff = Material.Filled.FileDownloadOff; - public const string FileOpen = Material.Filled.FileOpen; - public const string FilePresent = Material.Filled.FilePresent; - public const string FileUpload = Material.Filled.FileUpload; - public const string Filter = Material.Filled.Filter; - public const string Filter1 = Material.Filled.Filter1; - public const string Filter2 = Material.Filled.Filter2; - public const string Filter3 = Material.Filled.Filter3; - public const string Filter4 = Material.Filled.Filter4; - public const string Filter5 = Material.Filled.Filter5; - public const string Filter6 = Material.Filled.Filter6; - public const string Filter7 = Material.Filled.Filter7; - public const string Filter8 = Material.Filled.Filter8; - public const string Filter9 = Material.Filled.Filter9; - public const string Filter9Plus = Material.Filled.Filter9Plus; - public const string FilterAlt = Material.Filled.FilterAlt; - public const string FilterAltOff = Material.Filled.FilterAltOff; - public const string FilterBAndW = Material.Filled.FilterBAndW; - public const string FilterCenterFocus = Material.Filled.FilterCenterFocus; - public const string FilterDrama = Material.Filled.FilterDrama; - public const string FilterFrames = Material.Filled.FilterFrames; - public const string FilterHdr = Material.Filled.FilterHdr; - public const string FilterList = Material.Filled.FilterList; - public const string FilterListOff = Material.Filled.FilterListOff; - public const string FilterNone = Material.Filled.FilterNone; - public const string FilterTiltShift = Material.Filled.FilterTiltShift; - public const string FilterVintage = Material.Filled.FilterVintage; - public const string FindInPage = Material.Filled.FindInPage; - public const string FindReplace = Material.Filled.FindReplace; - public const string Fingerprint = Material.Filled.Fingerprint; - public const string FireExtinguisher = Material.Filled.FireExtinguisher; - public const string Fireplace = Material.Filled.Fireplace; - public const string FirstPage = Material.Filled.FirstPage; - public const string FitScreen = Material.Filled.FitScreen; - public const string Fitbit = Material.Filled.Fitbit; - public const string FitnessCenter = Material.Filled.FitnessCenter; - public const string Flag = Material.Filled.Flag; - public const string FlagCircle = Material.Filled.FlagCircle; - public const string Flaky = Material.Filled.Flaky; - public const string Flare = Material.Filled.Flare; - public const string FlashAuto = Material.Filled.FlashAuto; - public const string FlashOff = Material.Filled.FlashOff; - public const string FlashOn = Material.Filled.FlashOn; - public const string FlashlightOff = Material.Filled.FlashlightOff; - public const string FlashlightOn = Material.Filled.FlashlightOn; - public const string Flatware = Material.Filled.Flatware; - public const string Flight = Material.Filled.Flight; - public const string FlightClass = Material.Filled.FlightClass; - public const string FlightLand = Material.Filled.FlightLand; - public const string FlightTakeoff = Material.Filled.FlightTakeoff; - public const string Flip = Material.Filled.Flip; - public const string FlipCameraAndroid = Material.Filled.FlipCameraAndroid; - public const string FlipCameraIos = Material.Filled.FlipCameraIos; - public const string FlipToBack = Material.Filled.FlipToBack; - public const string FlipToFront = Material.Filled.FlipToFront; - public const string Flood = Material.Filled.Flood; - public const string Flourescent = Material.Filled.Flourescent; - public const string FlutterDash = Material.Filled.FlutterDash; - public const string FmdBad = Material.Filled.FmdBad; - public const string FmdGood = Material.Filled.FmdGood; - public const string Folder = Material.Filled.Folder; - public const string FolderCopy = Material.Filled.FolderCopy; - public const string FolderDelete = Material.Filled.FolderDelete; - public const string FolderOff = Material.Filled.FolderOff; - public const string FolderOpen = Material.Filled.FolderOpen; - public const string FolderShared = Material.Filled.FolderShared; - public const string FolderSpecial = Material.Filled.FolderSpecial; - public const string FolderZip = Material.Filled.FolderZip; - public const string FollowTheSigns = Material.Filled.FollowTheSigns; - public const string FontDownload = Material.Filled.FontDownload; - public const string FontDownloadOff = Material.Filled.FontDownloadOff; - public const string FoodBank = Material.Filled.FoodBank; - public const string Forest = Material.Filled.Forest; - public const string ForkLeft = Material.Filled.ForkLeft; - public const string ForkRight = Material.Filled.ForkRight; - public const string FormatAlignCenter = Material.Filled.FormatAlignCenter; - public const string FormatAlignJustify = Material.Filled.FormatAlignJustify; - public const string FormatAlignLeft = Material.Filled.FormatAlignLeft; - public const string FormatAlignRight = Material.Filled.FormatAlignRight; - public const string FormatBold = Material.Filled.FormatBold; - public const string FormatClear = Material.Filled.FormatClear; - public const string FormatColorFill = Material.Filled.FormatColorFill; - public const string FormatColorReset = Material.Filled.FormatColorReset; - public const string FormatColorText = Material.Filled.FormatColorText; - public const string FormatIndentDecrease = Material.Filled.FormatIndentDecrease; - public const string FormatIndentIncrease = Material.Filled.FormatIndentIncrease; - public const string FormatItalic = Material.Filled.FormatItalic; - public const string FormatLineSpacing = Material.Filled.FormatLineSpacing; - public const string FormatListBulleted = Material.Filled.FormatListBulleted; - public const string FormatListNumbered = Material.Filled.FormatListNumbered; - public const string FormatListNumberedRtl = Material.Filled.FormatListNumberedRtl; - public const string FormatOverline = Material.Filled.FormatOverline; - public const string FormatPaint = Material.Filled.FormatPaint; - public const string FormatQuote = Material.Filled.FormatQuote; - public const string FormatShapes = Material.Filled.FormatShapes; - public const string FormatSize = Material.Filled.FormatSize; - public const string FormatStrikethrough = Material.Filled.FormatStrikethrough; - public const string FormatTextdirectionLToR = Material.Filled.FormatTextdirectionLToR; - public const string FormatTextdirectionRToL = Material.Filled.FormatTextdirectionRToL; - public const string FormatUnderlined = Material.Filled.FormatUnderlined; - public const string Fort = Material.Filled.Fort; - public const string Forum = Material.Filled.Forum; - public const string Forward = Material.Filled.Forward; - public const string Forward10 = Material.Filled.Forward10; - public const string Forward30 = Material.Filled.Forward30; - public const string Forward5 = Material.Filled.Forward5; - public const string ForwardToInbox = Material.Filled.ForwardToInbox; - public const string Foundation = Material.Filled.Foundation; - public const string FreeBreakfast = Material.Filled.FreeBreakfast; - public const string FreeCancellation = Material.Filled.FreeCancellation; - public const string FrontHand = Material.Filled.FrontHand; - public const string Fullscreen = Material.Filled.Fullscreen; - public const string FullscreenExit = Material.Filled.FullscreenExit; - public const string Functions = Material.Filled.Functions; - public const string GMobiledata = Material.Filled.GMobiledata; - public const string GTranslate = Material.Filled.GTranslate; - public const string Gamepad = Material.Filled.Gamepad; - public const string Games = Material.Filled.Games; - public const string Garage = Material.Filled.Garage; - public const string Gavel = Material.Filled.Gavel; - public const string GeneratingTokens = Material.Filled.GeneratingTokens; - public const string Gesture = Material.Filled.Gesture; - public const string GetApp = Material.Filled.GetApp; - public const string Gif = Material.Filled.Gif; - public const string GifBox = Material.Filled.GifBox; - public const string Girl = Material.Filled.Girl; - public const string Gite = Material.Filled.Gite; - public const string GolfCourse = Material.Filled.GolfCourse; - public const string GppBad = Material.Filled.GppBad; - public const string GppGood = Material.Filled.GppGood; - public const string GppMaybe = Material.Filled.GppMaybe; - public const string GpsFixed = Material.Filled.GpsFixed; - public const string GpsNotFixed = Material.Filled.GpsNotFixed; - public const string GpsOff = Material.Filled.GpsOff; - public const string Grade = Material.Filled.Grade; - public const string Gradient = Material.Filled.Gradient; - public const string Grading = Material.Filled.Grading; - public const string Grain = Material.Filled.Grain; - public const string GraphicEq = Material.Filled.GraphicEq; - public const string Grass = Material.Filled.Grass; - public const string Grid3x3 = Material.Filled.Grid3x3; - public const string Grid4x4 = Material.Filled.Grid4x4; - public const string GridGoldenratio = Material.Filled.GridGoldenratio; - public const string GridOff = Material.Filled.GridOff; - public const string GridOn = Material.Filled.GridOn; - public const string GridView = Material.Filled.GridView; - public const string Group = Material.Filled.Group; - public const string GroupAdd = Material.Filled.GroupAdd; - public const string GroupOff = Material.Filled.GroupOff; - public const string GroupRemove = Material.Filled.GroupRemove; - public const string GroupWork = Material.Filled.GroupWork; - public const string Groups = Material.Filled.Groups; - public const string HMobiledata = Material.Filled.HMobiledata; - public const string HPlusMobiledata = Material.Filled.HPlusMobiledata; - public const string Hail = Material.Filled.Hail; - public const string Handshake = Material.Filled.Handshake; - public const string Handyman = Material.Filled.Handyman; - public const string Hardware = Material.Filled.Hardware; - public const string Hd = Material.Filled.Hd; - public const string HdrAuto = Material.Filled.HdrAuto; - public const string HdrAutoSelect = Material.Filled.HdrAutoSelect; - public const string HdrEnhancedSelect = Material.Filled.HdrEnhancedSelect; - public const string HdrOff = Material.Filled.HdrOff; - public const string HdrOffSelect = Material.Filled.HdrOffSelect; - public const string HdrOn = Material.Filled.HdrOn; - public const string HdrOnSelect = Material.Filled.HdrOnSelect; - public const string HdrPlus = Material.Filled.HdrPlus; - public const string HdrStrong = Material.Filled.HdrStrong; - public const string HdrWeak = Material.Filled.HdrWeak; - public const string Headphones = Material.Filled.Headphones; - public const string HeadphonesBattery = Material.Filled.HeadphonesBattery; - public const string Headset = Material.Filled.Headset; - public const string HeadsetMic = Material.Filled.HeadsetMic; - public const string HeadsetOff = Material.Filled.HeadsetOff; - public const string Healing = Material.Filled.Healing; - public const string HealthAndSafety = Material.Filled.HealthAndSafety; - public const string Hearing = Material.Filled.Hearing; - public const string HearingDisabled = Material.Filled.HearingDisabled; - public const string HeartBroken = Material.Filled.HeartBroken; - public const string Height = Material.Filled.Height; - public const string Help = Material.Filled.Help; - public const string HelpCenter = Material.Filled.HelpCenter; - public const string HelpOutline = Material.Filled.HelpOutline; - public const string Hevc = Material.Filled.Hevc; - public const string Hexagon = Material.Filled.Hexagon; - public const string HideImage = Material.Filled.HideImage; - public const string HideSource = Material.Filled.HideSource; - public const string HighQuality = Material.Filled.HighQuality; - public const string Highlight = Material.Filled.Highlight; - public const string HighlightAlt = Material.Filled.HighlightAlt; - public const string HighlightOff = Material.Filled.HighlightOff; - public const string Hiking = Material.Filled.Hiking; - public const string History = Material.Filled.History; - public const string HistoryEdu = Material.Filled.HistoryEdu; - public const string HistoryToggleOff = Material.Filled.HistoryToggleOff; - public const string Hive = Material.Filled.Hive; - public const string Hls = Material.Filled.Hls; - public const string HlsOff = Material.Filled.HlsOff; - public const string HolidayVillage = Material.Filled.HolidayVillage; - public const string Home = Material.Filled.Home; - public const string HomeMax = Material.Filled.HomeMax; - public const string HomeMini = Material.Filled.HomeMini; - public const string HomeRepairService = Material.Filled.HomeRepairService; - public const string HomeWork = Material.Filled.HomeWork; - public const string HorizontalDistribute = Material.Filled.HorizontalDistribute; - public const string HorizontalRule = Material.Filled.HorizontalRule; - public const string HorizontalSplit = Material.Filled.HorizontalSplit; - public const string HotTub = Material.Filled.HotTub; - public const string Hotel = Material.Filled.Hotel; - public const string HotelClass = Material.Filled.HotelClass; - public const string HourglassBottom = Material.Filled.HourglassBottom; - public const string HourglassDisabled = Material.Filled.HourglassDisabled; - public const string HourglassEmpty = Material.Filled.HourglassEmpty; - public const string HourglassFull = Material.Filled.HourglassFull; - public const string HourglassTop = Material.Filled.HourglassTop; - public const string House = Material.Filled.House; - public const string HouseSiding = Material.Filled.HouseSiding; - public const string Houseboat = Material.Filled.Houseboat; - public const string HowToReg = Material.Filled.HowToReg; - public const string HowToVote = Material.Filled.HowToVote; - public const string Html = Material.Filled.Html; - public const string Http = Material.Filled.Http; - public const string Https = Material.Filled.Https; - public const string Hub = Material.Filled.Hub; - public const string Hvac = Material.Filled.Hvac; - public const string IceSkating = Material.Filled.IceSkating; - public const string Icecream = Material.Filled.Icecream; - public const string Image = Material.Filled.Image; - public const string ImageAspectRatio = Material.Filled.ImageAspectRatio; - public const string ImageNotSupported = Material.Filled.ImageNotSupported; - public const string ImageSearch = Material.Filled.ImageSearch; - public const string ImagesearchRoller = Material.Filled.ImagesearchRoller; - public const string ImportContacts = Material.Filled.ImportContacts; - public const string ImportExport = Material.Filled.ImportExport; - public const string ImportantDevices = Material.Filled.ImportantDevices; - public const string Inbox = Material.Filled.Inbox; - public const string IncompleteCircle = Material.Filled.IncompleteCircle; - public const string IndeterminateCheckBox = Material.Filled.IndeterminateCheckBox; - public const string Info = Material.Filled.Info; - public const string Input = Material.Filled.Input; - public const string InsertChart = Material.Filled.InsertChart; - public const string InsertChartOutlined = Material.Filled.InsertChartOutlined; - public const string InsertComment = Material.Filled.InsertComment; - public const string InsertDriveFile = Material.Filled.InsertDriveFile; - public const string InsertEmoticon = Material.Filled.InsertEmoticon; - public const string InsertInvitation = Material.Filled.InsertInvitation; - public const string InsertLink = Material.Filled.InsertLink; - public const string InsertPageBreak = Material.Filled.InsertPageBreak; - public const string InsertPhoto = Material.Filled.InsertPhoto; - public const string Insights = Material.Filled.Insights; - public const string InstallDesktop = Material.Filled.InstallDesktop; - public const string InstallMobile = Material.Filled.InstallMobile; - public const string IntegrationInstructions = Material.Filled.IntegrationInstructions; - public const string Interests = Material.Filled.Interests; - public const string InterpreterMode = Material.Filled.InterpreterMode; - public const string Inventory = Material.Filled.Inventory; - public const string Inventory2 = Material.Filled.Inventory2; - public const string InvertColors = Material.Filled.InvertColors; - public const string InvertColorsOff = Material.Filled.InvertColorsOff; - public const string IosShare = Material.Filled.IosShare; - public const string Iron = Material.Filled.Iron; - public const string Iso = Material.Filled.Iso; - public const string Javascript = Material.Filled.Javascript; - public const string JoinFull = Material.Filled.JoinFull; - public const string JoinInner = Material.Filled.JoinInner; - public const string JoinLeft = Material.Filled.JoinLeft; - public const string JoinRight = Material.Filled.JoinRight; - public const string Kayaking = Material.Filled.Kayaking; - public const string KebabDining = Material.Filled.KebabDining; - public const string Key = Material.Filled.Key; - public const string KeyOff = Material.Filled.KeyOff; - public const string Keyboard = Material.Filled.Keyboard; - public const string KeyboardAlt = Material.Filled.KeyboardAlt; - public const string KeyboardArrowDown = Material.Filled.KeyboardArrowDown; - public const string KeyboardArrowLeft = Material.Filled.KeyboardArrowLeft; - public const string KeyboardArrowRight = Material.Filled.KeyboardArrowRight; - public const string KeyboardArrowUp = Material.Filled.KeyboardArrowUp; - public const string KeyboardBackspace = Material.Filled.KeyboardBackspace; - public const string KeyboardCapslock = Material.Filled.KeyboardCapslock; - public const string KeyboardCommandKey = Material.Filled.KeyboardCommandKey; - public const string KeyboardControlKey = Material.Filled.KeyboardControlKey; - public const string KeyboardDoubleArrowDown = Material.Filled.KeyboardDoubleArrowDown; - public const string KeyboardDoubleArrowLeft = Material.Filled.KeyboardDoubleArrowLeft; - public const string KeyboardDoubleArrowRight = Material.Filled.KeyboardDoubleArrowRight; - public const string KeyboardDoubleArrowUp = Material.Filled.KeyboardDoubleArrowUp; - public const string KeyboardHide = Material.Filled.KeyboardHide; - public const string KeyboardOptionKey = Material.Filled.KeyboardOptionKey; - public const string KeyboardReturn = Material.Filled.KeyboardReturn; - public const string KeyboardTab = Material.Filled.KeyboardTab; - public const string KeyboardVoice = Material.Filled.KeyboardVoice; - public const string KingBed = Material.Filled.KingBed; - public const string Kitchen = Material.Filled.Kitchen; - public const string Kitesurfing = Material.Filled.Kitesurfing; - public const string Label = Material.Filled.Label; - public const string LabelImportant = Material.Filled.LabelImportant; - public const string LabelOff = Material.Filled.LabelOff; - public const string Lan = Material.Filled.Lan; - public const string Landscape = Material.Filled.Landscape; - public const string Landslide = Material.Filled.Landslide; - public const string Language = Material.Filled.Language; - public const string Laptop = Material.Filled.Laptop; - public const string LaptopChromebook = Material.Filled.LaptopChromebook; - public const string LaptopMac = Material.Filled.LaptopMac; - public const string LaptopWindows = Material.Filled.LaptopWindows; - public const string LastPage = Material.Filled.LastPage; - public const string Launch = Material.Filled.Launch; - public const string Layers = Material.Filled.Layers; - public const string LayersClear = Material.Filled.LayersClear; - public const string Leaderboard = Material.Filled.Leaderboard; - public const string LeakAdd = Material.Filled.LeakAdd; - public const string LeakRemove = Material.Filled.LeakRemove; - public const string LegendToggle = Material.Filled.LegendToggle; - public const string Lens = Material.Filled.Lens; - public const string LensBlur = Material.Filled.LensBlur; - public const string LibraryAdd = Material.Filled.LibraryAdd; - public const string LibraryAddCheck = Material.Filled.LibraryAddCheck; - public const string LibraryBooks = Material.Filled.LibraryBooks; - public const string LibraryMusic = Material.Filled.LibraryMusic; - public const string Light = Material.Filled.Light; - public const string LightMode = Material.Filled.LightMode; - public const string Lightbulb = Material.Filled.Lightbulb; - public const string LightbulbCircle = Material.Filled.LightbulbCircle; - public const string LineAxis = Material.Filled.LineAxis; - public const string LineStyle = Material.Filled.LineStyle; - public const string LineWeight = Material.Filled.LineWeight; - public const string LinearScale = Material.Filled.LinearScale; - public const string Link = Material.Filled.Link; - public const string LinkOff = Material.Filled.LinkOff; - public const string LinkedCamera = Material.Filled.LinkedCamera; - public const string Liquor = Material.Filled.Liquor; - public const string List = Material.Filled.List; - public const string ListAlt = Material.Filled.ListAlt; - public const string LiveHelp = Material.Filled.LiveHelp; - public const string LiveTv = Material.Filled.LiveTv; - public const string Living = Material.Filled.Living; - public const string LocalActivity = Material.Filled.LocalActivity; - public const string LocalAirport = Material.Filled.LocalAirport; - public const string LocalAtm = Material.Filled.LocalAtm; - public const string LocalBar = Material.Filled.LocalBar; - public const string LocalCafe = Material.Filled.LocalCafe; - public const string LocalCarWash = Material.Filled.LocalCarWash; - public const string LocalConvenienceStore = Material.Filled.LocalConvenienceStore; - public const string LocalDining = Material.Filled.LocalDining; - public const string LocalDrink = Material.Filled.LocalDrink; - public const string LocalFireDepartment = Material.Filled.LocalFireDepartment; - public const string LocalFlorist = Material.Filled.LocalFlorist; - public const string LocalGasStation = Material.Filled.LocalGasStation; - public const string LocalGroceryStore = Material.Filled.LocalGroceryStore; - public const string LocalHospital = Material.Filled.LocalHospital; - public const string LocalHotel = Material.Filled.LocalHotel; - public const string LocalLaundryService = Material.Filled.LocalLaundryService; - public const string LocalLibrary = Material.Filled.LocalLibrary; - public const string LocalMall = Material.Filled.LocalMall; - public const string LocalMovies = Material.Filled.LocalMovies; - public const string LocalOffer = Material.Filled.LocalOffer; - public const string LocalParking = Material.Filled.LocalParking; - public const string LocalPharmacy = Material.Filled.LocalPharmacy; - public const string LocalPhone = Material.Filled.LocalPhone; - public const string LocalPizza = Material.Filled.LocalPizza; - public const string LocalPlay = Material.Filled.LocalPlay; - public const string LocalPolice = Material.Filled.LocalPolice; - public const string LocalPostOffice = Material.Filled.LocalPostOffice; - public const string LocalPrintshop = Material.Filled.LocalPrintshop; - public const string LocalSee = Material.Filled.LocalSee; - public const string LocalShipping = Material.Filled.LocalShipping; - public const string LocalTaxi = Material.Filled.LocalTaxi; - public const string LocationCity = Material.Filled.LocationCity; - public const string LocationDisabled = Material.Filled.LocationDisabled; - public const string LocationOff = Material.Filled.LocationOff; - public const string LocationOn = Material.Filled.LocationOn; - public const string LocationSearching = Material.Filled.LocationSearching; - public const string Lock = Material.Filled.Lock; - public const string LockClock = Material.Filled.LockClock; - public const string LockOpen = Material.Filled.LockOpen; - public const string LockReset = Material.Filled.LockReset; - public const string Login = Material.Filled.Login; - public const string LogoDev = Material.Filled.LogoDev; - public const string Logout = Material.Filled.Logout; - public const string Looks = Material.Filled.Looks; - public const string Looks3 = Material.Filled.Looks3; - public const string Looks4 = Material.Filled.Looks4; - public const string Looks5 = Material.Filled.Looks5; - public const string Looks6 = Material.Filled.Looks6; - public const string LooksOne = Material.Filled.LooksOne; - public const string LooksTwo = Material.Filled.LooksTwo; - public const string Loop = Material.Filled.Loop; - public const string Loupe = Material.Filled.Loupe; - public const string LowPriority = Material.Filled.LowPriority; - public const string Loyalty = Material.Filled.Loyalty; - public const string LteMobiledata = Material.Filled.LteMobiledata; - public const string LtePlusMobiledata = Material.Filled.LtePlusMobiledata; - public const string Luggage = Material.Filled.Luggage; - public const string LunchDining = Material.Filled.LunchDining; - public const string Mail = Material.Filled.Mail; - public const string MailOutline = Material.Filled.MailOutline; - public const string Male = Material.Filled.Male; - public const string Man = Material.Filled.Man; - public const string ManageAccounts = Material.Filled.ManageAccounts; - public const string ManageHistory = Material.Filled.ManageHistory; - public const string ManageSearch = Material.Filled.ManageSearch; - public const string Map = Material.Filled.Map; - public const string MapsHomeWork = Material.Filled.MapsHomeWork; - public const string MapsUgc = Material.Filled.MapsUgc; - public const string Margin = Material.Filled.Margin; - public const string MarkAsUnread = Material.Filled.MarkAsUnread; - public const string MarkChatRead = Material.Filled.MarkChatRead; - public const string MarkChatUnread = Material.Filled.MarkChatUnread; - public const string MarkEmailRead = Material.Filled.MarkEmailRead; - public const string MarkEmailUnread = Material.Filled.MarkEmailUnread; - public const string MarkUnreadChatAlt = Material.Filled.MarkUnreadChatAlt; - public const string Markunread = Material.Filled.Markunread; - public const string MarkunreadMailbox = Material.Filled.MarkunreadMailbox; - public const string Masks = Material.Filled.Masks; - public const string Maximize = Material.Filled.Maximize; - public const string MediaBluetoothOff = Material.Filled.MediaBluetoothOff; - public const string MediaBluetoothOn = Material.Filled.MediaBluetoothOn; - public const string Mediation = Material.Filled.Mediation; - public const string MedicalInformation = Material.Filled.MedicalInformation; - public const string MedicalServices = Material.Filled.MedicalServices; - public const string Medication = Material.Filled.Medication; - public const string MedicationLiquid = Material.Filled.MedicationLiquid; - public const string MeetingRoom = Material.Filled.MeetingRoom; - public const string Memory = Material.Filled.Memory; - public const string Menu = Material.Filled.Menu; - public const string MenuBook = Material.Filled.MenuBook; - public const string MenuOpen = Material.Filled.MenuOpen; - public const string Merge = Material.Filled.Merge; - public const string MergeType = Material.Filled.MergeType; - public const string Message = Material.Filled.Message; - public const string Mic = Material.Filled.Mic; - public const string MicExternalOff = Material.Filled.MicExternalOff; - public const string MicExternalOn = Material.Filled.MicExternalOn; - public const string MicNone = Material.Filled.MicNone; - public const string MicOff = Material.Filled.MicOff; - public const string Microwave = Material.Filled.Microwave; - public const string MilitaryTech = Material.Filled.MilitaryTech; - public const string Minimize = Material.Filled.Minimize; - public const string MinorCrash = Material.Filled.MinorCrash; - public const string MiscellaneousServices = Material.Filled.MiscellaneousServices; - public const string MissedVideoCall = Material.Filled.MissedVideoCall; - public const string Mms = Material.Filled.Mms; - public const string MobileFriendly = Material.Filled.MobileFriendly; - public const string MobileOff = Material.Filled.MobileOff; - public const string MobileScreenShare = Material.Filled.MobileScreenShare; - public const string MobiledataOff = Material.Filled.MobiledataOff; - public const string Mode = Material.Filled.Mode; - public const string ModeComment = Material.Filled.ModeComment; - public const string ModeEdit = Material.Filled.ModeEdit; - public const string ModeEditOutline = Material.Filled.ModeEditOutline; - public const string ModeNight = Material.Filled.ModeNight; - public const string ModeOfTravel = Material.Filled.ModeOfTravel; - public const string ModeStandby = Material.Filled.ModeStandby; - public const string ModelTraining = Material.Filled.ModelTraining; - public const string MonetizationOn = Material.Filled.MonetizationOn; - public const string Money = Material.Filled.Money; - public const string MoneyOff = Material.Filled.MoneyOff; - public const string MoneyOffCsred = Material.Filled.MoneyOffCsred; - public const string Monitor = Material.Filled.Monitor; - public const string MonitorHeart = Material.Filled.MonitorHeart; - public const string MonitorWeight = Material.Filled.MonitorWeight; - public const string MonochromePhotos = Material.Filled.MonochromePhotos; - public const string Mood = Material.Filled.Mood; - public const string MoodBad = Material.Filled.MoodBad; - public const string Moped = Material.Filled.Moped; - public const string More = Material.Filled.More; - public const string MoreHoriz = Material.Filled.MoreHoriz; - public const string MoreTime = Material.Filled.MoreTime; - public const string MoreVert = Material.Filled.MoreVert; - public const string Mosque = Material.Filled.Mosque; - public const string MotionPhotosAuto = Material.Filled.MotionPhotosAuto; - public const string MotionPhotosOff = Material.Filled.MotionPhotosOff; - public const string MotionPhotosOn = Material.Filled.MotionPhotosOn; - public const string MotionPhotosPause = Material.Filled.MotionPhotosPause; - public const string MotionPhotosPaused = Material.Filled.MotionPhotosPaused; - public const string Mouse = Material.Filled.Mouse; - public const string MoveDown = Material.Filled.MoveDown; - public const string MoveToInbox = Material.Filled.MoveToInbox; - public const string MoveUp = Material.Filled.MoveUp; - public const string Movie = Material.Filled.Movie; - public const string MovieCreation = Material.Filled.MovieCreation; - public const string MovieFilter = Material.Filled.MovieFilter; - public const string Moving = Material.Filled.Moving; - public const string Mp = Material.Filled.Mp; - public const string MultilineChart = Material.Filled.MultilineChart; - public const string MultipleStop = Material.Filled.MultipleStop; - public const string Museum = Material.Filled.Museum; - public const string MusicNote = Material.Filled.MusicNote; - public const string MusicOff = Material.Filled.MusicOff; - public const string MusicVideo = Material.Filled.MusicVideo; - public const string MyLocation = Material.Filled.MyLocation; - public const string Nat = Material.Filled.Nat; - public const string Nature = Material.Filled.Nature; - public const string NaturePeople = Material.Filled.NaturePeople; - public const string NavigateBefore = Material.Filled.NavigateBefore; - public const string NavigateNext = Material.Filled.NavigateNext; - public const string Navigation = Material.Filled.Navigation; - public const string NearMe = Material.Filled.NearMe; - public const string NearMeDisabled = Material.Filled.NearMeDisabled; - public const string NearbyError = Material.Filled.NearbyError; - public const string NearbyOff = Material.Filled.NearbyOff; - public const string NetworkCell = Material.Filled.NetworkCell; - public const string NetworkCheck = Material.Filled.NetworkCheck; - public const string NetworkLocked = Material.Filled.NetworkLocked; - public const string NetworkPing = Material.Filled.NetworkPing; - public const string NetworkWifi = Material.Filled.NetworkWifi; - public const string NetworkWifi1Bar = Material.Filled.NetworkWifi1Bar; - public const string NetworkWifi2Bar = Material.Filled.NetworkWifi2Bar; - public const string NetworkWifi3Bar = Material.Filled.NetworkWifi3Bar; - public const string NewLabel = Material.Filled.NewLabel; - public const string NewReleases = Material.Filled.NewReleases; - public const string Newspaper = Material.Filled.Newspaper; - public const string NextPlan = Material.Filled.NextPlan; - public const string NextWeek = Material.Filled.NextWeek; - public const string Nfc = Material.Filled.Nfc; - public const string NightShelter = Material.Filled.NightShelter; - public const string Nightlife = Material.Filled.Nightlife; - public const string Nightlight = Material.Filled.Nightlight; - public const string NightlightRound = Material.Filled.NightlightRound; - public const string NightsStay = Material.Filled.NightsStay; - public const string NoAccounts = Material.Filled.NoAccounts; - public const string NoBackpack = Material.Filled.NoBackpack; - public const string NoCell = Material.Filled.NoCell; - public const string NoCrash = Material.Filled.NoCrash; - public const string NoDrinks = Material.Filled.NoDrinks; - public const string NoEncryption = Material.Filled.NoEncryption; - public const string NoEncryptionGmailerrorred = Material.Filled.NoEncryptionGmailerrorred; - public const string NoFlash = Material.Filled.NoFlash; - public const string NoFood = Material.Filled.NoFood; - public const string NoLuggage = Material.Filled.NoLuggage; - public const string NoMeals = Material.Filled.NoMeals; - public const string NoMeetingRoom = Material.Filled.NoMeetingRoom; - public const string NoPhotography = Material.Filled.NoPhotography; - public const string NoSim = Material.Filled.NoSim; - public const string NoStroller = Material.Filled.NoStroller; - public const string NoTransfer = Material.Filled.NoTransfer; - public const string NoiseAware = Material.Filled.NoiseAware; - public const string NoiseControlOff = Material.Filled.NoiseControlOff; - public const string NordicWalking = Material.Filled.NordicWalking; - public const string North = Material.Filled.North; - public const string NorthEast = Material.Filled.NorthEast; - public const string NorthWest = Material.Filled.NorthWest; - public const string NotAccessible = Material.Filled.NotAccessible; - public const string NotInterested = Material.Filled.NotInterested; - public const string NotListedLocation = Material.Filled.NotListedLocation; - public const string NotStarted = Material.Filled.NotStarted; - public const string Note = Material.Filled.Note; - public const string NoteAdd = Material.Filled.NoteAdd; - public const string NoteAlt = Material.Filled.NoteAlt; - public const string Notes = Material.Filled.Notes; - public const string NotificationAdd = Material.Filled.NotificationAdd; - public const string NotificationImportant = Material.Filled.NotificationImportant; - public const string Notifications = Material.Filled.Notifications; - public const string NotificationsActive = Material.Filled.NotificationsActive; - public const string NotificationsNone = Material.Filled.NotificationsNone; - public const string NotificationsOff = Material.Filled.NotificationsOff; - public const string NotificationsPaused = Material.Filled.NotificationsPaused; - public const string Numbers = Material.Filled.Numbers; - public const string OfflineBolt = Material.Filled.OfflineBolt; - public const string OfflinePin = Material.Filled.OfflinePin; - public const string OfflineShare = Material.Filled.OfflineShare; - public const string OnDeviceTraining = Material.Filled.OnDeviceTraining; - public const string OndemandVideo = Material.Filled.OndemandVideo; - public const string OnlinePrediction = Material.Filled.OnlinePrediction; - public const string Opacity = Material.Filled.Opacity; - public const string OpenInBrowser = Material.Filled.OpenInBrowser; - public const string OpenInFull = Material.Filled.OpenInFull; - public const string OpenInNew = Material.Filled.OpenInNew; - public const string OpenInNewOff = Material.Filled.OpenInNewOff; - public const string OpenWith = Material.Filled.OpenWith; - public const string OtherHouses = Material.Filled.OtherHouses; - public const string Outbound = Material.Filled.Outbound; - public const string Outbox = Material.Filled.Outbox; - public const string OutdoorGrill = Material.Filled.OutdoorGrill; - public const string Outlet = Material.Filled.Outlet; - public const string OutlinedFlag = Material.Filled.OutlinedFlag; - public const string Output = Material.Filled.Output; - public const string Padding = Material.Filled.Padding; - public const string Pages = Material.Filled.Pages; - public const string Pageview = Material.Filled.Pageview; - public const string Paid = Material.Filled.Paid; - public const string Palette = Material.Filled.Palette; - public const string PanTool = Material.Filled.PanTool; - public const string PanToolAlt = Material.Filled.PanToolAlt; - public const string Panorama = Material.Filled.Panorama; - public const string PanoramaFishEye = Material.Filled.PanoramaFishEye; - public const string PanoramaHorizontal = Material.Filled.PanoramaHorizontal; - public const string PanoramaHorizontalSelect = Material.Filled.PanoramaHorizontalSelect; - public const string PanoramaPhotosphere = Material.Filled.PanoramaPhotosphere; - public const string PanoramaPhotosphereSelect = Material.Filled.PanoramaPhotosphereSelect; - public const string PanoramaVertical = Material.Filled.PanoramaVertical; - public const string PanoramaVerticalSelect = Material.Filled.PanoramaVerticalSelect; - public const string PanoramaWideAngle = Material.Filled.PanoramaWideAngle; - public const string PanoramaWideAngleSelect = Material.Filled.PanoramaWideAngleSelect; - public const string Paragliding = Material.Filled.Paragliding; - public const string Park = Material.Filled.Park; - public const string PartyMode = Material.Filled.PartyMode; - public const string Password = Material.Filled.Password; - public const string Pattern = Material.Filled.Pattern; - public const string Pause = Material.Filled.Pause; - public const string PauseCircle = Material.Filled.PauseCircle; - public const string PauseCircleFilled = Material.Filled.PauseCircleFilled; - public const string PauseCircleOutline = Material.Filled.PauseCircleOutline; - public const string PausePresentation = Material.Filled.PausePresentation; - public const string Payment = Material.Filled.Payment; - public const string Payments = Material.Filled.Payments; - public const string PedalBike = Material.Filled.PedalBike; - public const string Pending = Material.Filled.Pending; - public const string PendingActions = Material.Filled.PendingActions; - public const string Pentagon = Material.Filled.Pentagon; - public const string People = Material.Filled.People; - public const string PeopleAlt = Material.Filled.PeopleAlt; - public const string PeopleOutline = Material.Filled.PeopleOutline; - public const string Percent = Material.Filled.Percent; - public const string PermCameraMic = Material.Filled.PermCameraMic; - public const string PermContactCalendar = Material.Filled.PermContactCalendar; - public const string PermDataSetting = Material.Filled.PermDataSetting; - public const string PermDeviceInformation = Material.Filled.PermDeviceInformation; - public const string PermIdentity = Material.Filled.PermIdentity; - public const string PermMedia = Material.Filled.PermMedia; - public const string PermPhoneMsg = Material.Filled.PermPhoneMsg; - public const string PermScanWifi = Material.Filled.PermScanWifi; - public const string Person = Material.Filled.Person; - public const string PersonAdd = Material.Filled.PersonAdd; - public const string PersonAddAlt = Material.Filled.PersonAddAlt; - public const string PersonAddAlt1 = Material.Filled.PersonAddAlt1; - public const string PersonAddDisabled = Material.Filled.PersonAddDisabled; - public const string PersonOff = Material.Filled.PersonOff; - public const string PersonOutline = Material.Filled.PersonOutline; - public const string PersonPin = Material.Filled.PersonPin; - public const string PersonPinCircle = Material.Filled.PersonPinCircle; - public const string PersonRemove = Material.Filled.PersonRemove; - public const string PersonRemoveAlt1 = Material.Filled.PersonRemoveAlt1; - public const string PersonSearch = Material.Filled.PersonSearch; - public const string PersonalInjury = Material.Filled.PersonalInjury; - public const string PersonalVideo = Material.Filled.PersonalVideo; - public const string PestControl = Material.Filled.PestControl; - public const string PestControlRodent = Material.Filled.PestControlRodent; - public const string Pets = Material.Filled.Pets; - public const string Phishing = Material.Filled.Phishing; - public const string Phone = Material.Filled.Phone; - public const string PhoneAndroid = Material.Filled.PhoneAndroid; - public const string PhoneBluetoothSpeaker = Material.Filled.PhoneBluetoothSpeaker; - public const string PhoneCallback = Material.Filled.PhoneCallback; - public const string PhoneDisabled = Material.Filled.PhoneDisabled; - public const string PhoneEnabled = Material.Filled.PhoneEnabled; - public const string PhoneForwarded = Material.Filled.PhoneForwarded; - public const string PhoneInTalk = Material.Filled.PhoneInTalk; - public const string PhoneIphone = Material.Filled.PhoneIphone; - public const string PhoneLocked = Material.Filled.PhoneLocked; - public const string PhoneMissed = Material.Filled.PhoneMissed; - public const string PhonePaused = Material.Filled.PhonePaused; - public const string Phonelink = Material.Filled.Phonelink; - public const string PhonelinkErase = Material.Filled.PhonelinkErase; - public const string PhonelinkLock = Material.Filled.PhonelinkLock; - public const string PhonelinkOff = Material.Filled.PhonelinkOff; - public const string PhonelinkRing = Material.Filled.PhonelinkRing; - public const string PhonelinkSetup = Material.Filled.PhonelinkSetup; - public const string Photo = Material.Filled.Photo; - public const string PhotoAlbum = Material.Filled.PhotoAlbum; - public const string PhotoCamera = Material.Filled.PhotoCamera; - public const string PhotoCameraBack = Material.Filled.PhotoCameraBack; - public const string PhotoCameraFront = Material.Filled.PhotoCameraFront; - public const string PhotoFilter = Material.Filled.PhotoFilter; - public const string PhotoLibrary = Material.Filled.PhotoLibrary; - public const string PhotoSizeSelectActual = Material.Filled.PhotoSizeSelectActual; - public const string PhotoSizeSelectLarge = Material.Filled.PhotoSizeSelectLarge; - public const string PhotoSizeSelectSmall = Material.Filled.PhotoSizeSelectSmall; - public const string Php = Material.Filled.Php; - public const string Piano = Material.Filled.Piano; - public const string PianoOff = Material.Filled.PianoOff; - public const string PictureAsPdf = Material.Filled.PictureAsPdf; - public const string PictureInPicture = Material.Filled.PictureInPicture; - public const string PictureInPictureAlt = Material.Filled.PictureInPictureAlt; - public const string PieChart = Material.Filled.PieChart; - public const string PieChartOutline = Material.Filled.PieChartOutline; - public const string Pin = Material.Filled.Pin; - public const string PinDrop = Material.Filled.PinDrop; - public const string PinEnd = Material.Filled.PinEnd; - public const string PinInvoke = Material.Filled.PinInvoke; - public const string Pinch = Material.Filled.Pinch; - public const string PivotTableChart = Material.Filled.PivotTableChart; - public const string Pix = Material.Filled.Pix; - public const string Place = Material.Filled.Place; - public const string Plagiarism = Material.Filled.Plagiarism; - public const string PlayArrow = Material.Filled.PlayArrow; - public const string PlayCircle = Material.Filled.PlayCircle; - public const string PlayCircleFilled = Material.Filled.PlayCircleFilled; - public const string PlayCircleOutline = Material.Filled.PlayCircleOutline; - public const string PlayDisabled = Material.Filled.PlayDisabled; - public const string PlayForWork = Material.Filled.PlayForWork; - public const string PlayLesson = Material.Filled.PlayLesson; - public const string PlaylistAdd = Material.Filled.PlaylistAdd; - public const string PlaylistAddCheck = Material.Filled.PlaylistAddCheck; - public const string PlaylistAddCheckCircle = Material.Filled.PlaylistAddCheckCircle; - public const string PlaylistAddCircle = Material.Filled.PlaylistAddCircle; - public const string PlaylistPlay = Material.Filled.PlaylistPlay; - public const string PlaylistRemove = Material.Filled.PlaylistRemove; - public const string Plumbing = Material.Filled.Plumbing; - public const string PlusOne = Material.Filled.PlusOne; - public const string Podcasts = Material.Filled.Podcasts; - public const string PointOfSale = Material.Filled.PointOfSale; - public const string Policy = Material.Filled.Policy; - public const string Poll = Material.Filled.Poll; - public const string Polyline = Material.Filled.Polyline; - public const string Polymer = Material.Filled.Polymer; - public const string Pool = Material.Filled.Pool; - public const string PortableWifiOff = Material.Filled.PortableWifiOff; - public const string Portrait = Material.Filled.Portrait; - public const string PostAdd = Material.Filled.PostAdd; - public const string Power = Material.Filled.Power; - public const string PowerInput = Material.Filled.PowerInput; - public const string PowerOff = Material.Filled.PowerOff; - public const string PowerSettingsNew = Material.Filled.PowerSettingsNew; - public const string PrecisionManufacturing = Material.Filled.PrecisionManufacturing; - public const string PregnantWoman = Material.Filled.PregnantWoman; - public const string PresentToAll = Material.Filled.PresentToAll; - public const string Preview = Material.Filled.Preview; - public const string PriceChange = Material.Filled.PriceChange; - public const string PriceCheck = Material.Filled.PriceCheck; - public const string Print = Material.Filled.Print; - public const string PrintDisabled = Material.Filled.PrintDisabled; - public const string PriorityHigh = Material.Filled.PriorityHigh; - public const string PrivacyTip = Material.Filled.PrivacyTip; - public const string PrivateConnectivity = Material.Filled.PrivateConnectivity; - public const string ProductionQuantityLimits = Material.Filled.ProductionQuantityLimits; - public const string Psychology = Material.Filled.Psychology; - public const string Public = Material.Filled.Public; - public const string PublicOff = Material.Filled.PublicOff; - public const string Publish = Material.Filled.Publish; - public const string PublishedWithChanges = Material.Filled.PublishedWithChanges; - public const string PunchClock = Material.Filled.PunchClock; - public const string PushPin = Material.Filled.PushPin; - public const string QrCode = Material.Filled.QrCode; - public const string QrCode2 = Material.Filled.QrCode2; - public const string QrCodeScanner = Material.Filled.QrCodeScanner; - public const string QueryBuilder = Material.Filled.QueryBuilder; - public const string QueryStats = Material.Filled.QueryStats; - public const string QuestionAnswer = Material.Filled.QuestionAnswer; - public const string QuestionMark = Material.Filled.QuestionMark; - public const string Queue = Material.Filled.Queue; - public const string QueueMusic = Material.Filled.QueueMusic; - public const string QueuePlayNext = Material.Filled.QueuePlayNext; - public const string Quickreply = Material.Filled.Quickreply; - public const string Quiz = Material.Filled.Quiz; - public const string RMobiledata = Material.Filled.RMobiledata; - public const string Radar = Material.Filled.Radar; - public const string Radio = Material.Filled.Radio; - public const string RadioButtonChecked = Material.Filled.RadioButtonChecked; - public const string RadioButtonUnchecked = Material.Filled.RadioButtonUnchecked; - public const string RailwayAlert = Material.Filled.RailwayAlert; - public const string RamenDining = Material.Filled.RamenDining; - public const string RampLeft = Material.Filled.RampLeft; - public const string RampRight = Material.Filled.RampRight; - public const string RateReview = Material.Filled.RateReview; - public const string RawOff = Material.Filled.RawOff; - public const string RawOn = Material.Filled.RawOn; - public const string ReadMore = Material.Filled.ReadMore; - public const string RealEstateAgent = Material.Filled.RealEstateAgent; - public const string Receipt = Material.Filled.Receipt; - public const string ReceiptLong = Material.Filled.ReceiptLong; - public const string RecentActors = Material.Filled.RecentActors; - public const string Recommend = Material.Filled.Recommend; - public const string RecordVoiceOver = Material.Filled.RecordVoiceOver; - public const string Rectangle = Material.Filled.Rectangle; - public const string Recycling = Material.Filled.Recycling; - public const string Redeem = Material.Filled.Redeem; - public const string Redo = Material.Filled.Redo; - public const string ReduceCapacity = Material.Filled.ReduceCapacity; - public const string Refresh = Material.Filled.Refresh; - public const string RememberMe = Material.Filled.RememberMe; - public const string Remove = Material.Filled.Remove; - public const string RemoveCircle = Material.Filled.RemoveCircle; - public const string RemoveCircleOutline = Material.Filled.RemoveCircleOutline; - public const string RemoveDone = Material.Filled.RemoveDone; - public const string RemoveFromQueue = Material.Filled.RemoveFromQueue; - public const string RemoveModerator = Material.Filled.RemoveModerator; - public const string RemoveRedEye = Material.Filled.RemoveRedEye; - public const string RemoveRoad = Material.Filled.RemoveRoad; - public const string RemoveShoppingCart = Material.Filled.RemoveShoppingCart; - public const string Reorder = Material.Filled.Reorder; - public const string Repeat = Material.Filled.Repeat; - public const string RepeatOn = Material.Filled.RepeatOn; - public const string RepeatOne = Material.Filled.RepeatOne; - public const string RepeatOneOn = Material.Filled.RepeatOneOn; - public const string Replay = Material.Filled.Replay; - public const string Replay10 = Material.Filled.Replay10; - public const string Replay30 = Material.Filled.Replay30; - public const string Replay5 = Material.Filled.Replay5; - public const string ReplayCircleFilled = Material.Filled.ReplayCircleFilled; - public const string Reply = Material.Filled.Reply; - public const string ReplyAll = Material.Filled.ReplyAll; - public const string Report = Material.Filled.Report; - public const string ReportGmailerrorred = Material.Filled.ReportGmailerrorred; - public const string ReportOff = Material.Filled.ReportOff; - public const string ReportProblem = Material.Filled.ReportProblem; - public const string RequestPage = Material.Filled.RequestPage; - public const string RequestQuote = Material.Filled.RequestQuote; - public const string ResetTv = Material.Filled.ResetTv; - public const string RestartAlt = Material.Filled.RestartAlt; - public const string Restaurant = Material.Filled.Restaurant; - public const string RestaurantMenu = Material.Filled.RestaurantMenu; - public const string Restore = Material.Filled.Restore; - public const string RestoreFromTrash = Material.Filled.RestoreFromTrash; - public const string RestorePage = Material.Filled.RestorePage; - public const string Reviews = Material.Filled.Reviews; - public const string RiceBowl = Material.Filled.RiceBowl; - public const string RingVolume = Material.Filled.RingVolume; - public const string Rocket = Material.Filled.Rocket; - public const string RocketLaunch = Material.Filled.RocketLaunch; - public const string RollerSkating = Material.Filled.RollerSkating; - public const string Roofing = Material.Filled.Roofing; - public const string Room = Material.Filled.Room; - public const string RoomPreferences = Material.Filled.RoomPreferences; - public const string RoomService = Material.Filled.RoomService; - public const string Rotate90DegreesCcw = Material.Filled.Rotate90DegreesCcw; - public const string Rotate90DegreesCw = Material.Filled.Rotate90DegreesCw; - public const string RotateLeft = Material.Filled.RotateLeft; - public const string RotateRight = Material.Filled.RotateRight; - public const string RoundaboutLeft = Material.Filled.RoundaboutLeft; - public const string RoundaboutRight = Material.Filled.RoundaboutRight; - public const string RoundedCorner = Material.Filled.RoundedCorner; - public const string Route = Material.Filled.Route; - public const string Router = Material.Filled.Router; - public const string Rowing = Material.Filled.Rowing; - public const string RssFeed = Material.Filled.RssFeed; - public const string Rsvp = Material.Filled.Rsvp; - public const string Rtt = Material.Filled.Rtt; - public const string Rule = Material.Filled.Rule; - public const string RuleFolder = Material.Filled.RuleFolder; - public const string RunCircle = Material.Filled.RunCircle; - public const string RunningWithErrors = Material.Filled.RunningWithErrors; - public const string RvHookup = Material.Filled.RvHookup; - public const string SafetyCheck = Material.Filled.SafetyCheck; - public const string SafetyDivider = Material.Filled.SafetyDivider; - public const string Sailing = Material.Filled.Sailing; - public const string Sanitizer = Material.Filled.Sanitizer; - public const string Satellite = Material.Filled.Satellite; - public const string SatelliteAlt = Material.Filled.SatelliteAlt; - public const string Save = Material.Filled.Save; - public const string SaveAlt = Material.Filled.SaveAlt; - public const string SaveAs = Material.Filled.SaveAs; - public const string SavedSearch = Material.Filled.SavedSearch; - public const string Savings = Material.Filled.Savings; - public const string Scale = Material.Filled.Scale; - public const string Scanner = Material.Filled.Scanner; - public const string ScatterPlot = Material.Filled.ScatterPlot; - public const string Schedule = Material.Filled.Schedule; - public const string ScheduleSend = Material.Filled.ScheduleSend; - public const string Schema = Material.Filled.Schema; - public const string School = Material.Filled.School; - public const string Science = Material.Filled.Science; - public const string Score = Material.Filled.Score; - public const string Scoreboard = Material.Filled.Scoreboard; - public const string ScreenLockLandscape = Material.Filled.ScreenLockLandscape; - public const string ScreenLockPortrait = Material.Filled.ScreenLockPortrait; - public const string ScreenLockRotation = Material.Filled.ScreenLockRotation; - public const string ScreenRotation = Material.Filled.ScreenRotation; - public const string ScreenRotationAlt = Material.Filled.ScreenRotationAlt; - public const string ScreenSearchDesktop = Material.Filled.ScreenSearchDesktop; - public const string ScreenShare = Material.Filled.ScreenShare; - public const string Screenshot = Material.Filled.Screenshot; - public const string ScubaDiving = Material.Filled.ScubaDiving; - public const string Sd = Material.Filled.Sd; - public const string SdCard = Material.Filled.SdCard; - public const string SdCardAlert = Material.Filled.SdCardAlert; - public const string SdStorage = Material.Filled.SdStorage; - public const string Search = Material.Filled.Search; - public const string SearchOff = Material.Filled.SearchOff; - public const string Security = Material.Filled.Security; - public const string SecurityUpdate = Material.Filled.SecurityUpdate; - public const string SecurityUpdateGood = Material.Filled.SecurityUpdateGood; - public const string SecurityUpdateWarning = Material.Filled.SecurityUpdateWarning; - public const string Segment = Material.Filled.Segment; - public const string SelectAll = Material.Filled.SelectAll; - public const string SelfImprovement = Material.Filled.SelfImprovement; - public const string Sell = Material.Filled.Sell; - public const string Send = Material.Filled.Send; - public const string SendAndArchive = Material.Filled.SendAndArchive; - public const string SendTimeExtension = Material.Filled.SendTimeExtension; - public const string SendToMobile = Material.Filled.SendToMobile; - public const string SensorDoor = Material.Filled.SensorDoor; - public const string SensorWindow = Material.Filled.SensorWindow; - public const string Sensors = Material.Filled.Sensors; - public const string SensorsOff = Material.Filled.SensorsOff; - public const string SentimentDissatisfied = Material.Filled.SentimentDissatisfied; - public const string SentimentNeutral = Material.Filled.SentimentNeutral; - public const string SentimentSatisfied = Material.Filled.SentimentSatisfied; - public const string SentimentSatisfiedAlt = Material.Filled.SentimentSatisfiedAlt; - public const string SentimentVeryDissatisfied = Material.Filled.SentimentVeryDissatisfied; - public const string SentimentVerySatisfied = Material.Filled.SentimentVerySatisfied; - public const string SetMeal = Material.Filled.SetMeal; - public const string Settings = Material.Filled.Settings; - public const string SettingsAccessibility = Material.Filled.SettingsAccessibility; - public const string SettingsApplications = Material.Filled.SettingsApplications; - public const string SettingsBackupRestore = Material.Filled.SettingsBackupRestore; - public const string SettingsBluetooth = Material.Filled.SettingsBluetooth; - public const string SettingsBrightness = Material.Filled.SettingsBrightness; - public const string SettingsCell = Material.Filled.SettingsCell; - public const string SettingsEthernet = Material.Filled.SettingsEthernet; - public const string SettingsInputAntenna = Material.Filled.SettingsInputAntenna; - public const string SettingsInputComponent = Material.Filled.SettingsInputComponent; - public const string SettingsInputComposite = Material.Filled.SettingsInputComposite; - public const string SettingsInputHdmi = Material.Filled.SettingsInputHdmi; - public const string SettingsInputSvideo = Material.Filled.SettingsInputSvideo; - public const string SettingsOverscan = Material.Filled.SettingsOverscan; - public const string SettingsPhone = Material.Filled.SettingsPhone; - public const string SettingsPower = Material.Filled.SettingsPower; - public const string SettingsRemote = Material.Filled.SettingsRemote; - public const string SettingsSuggest = Material.Filled.SettingsSuggest; - public const string SettingsSystemDaydream = Material.Filled.SettingsSystemDaydream; - public const string SettingsVoice = Material.Filled.SettingsVoice; - public const string SevereCold = Material.Filled.SevereCold; - public const string Share = Material.Filled.Share; - public const string ShareLocation = Material.Filled.ShareLocation; - public const string Shield = Material.Filled.Shield; - public const string ShieldMoon = Material.Filled.ShieldMoon; - public const string Shop = Material.Filled.Shop; - public const string Shop2 = Material.Filled.Shop2; - public const string ShopTwo = Material.Filled.ShopTwo; - public const string ShoppingBag = Material.Filled.ShoppingBag; - public const string ShoppingBasket = Material.Filled.ShoppingBasket; - public const string ShoppingCart = Material.Filled.ShoppingCart; - public const string ShoppingCartCheckout = Material.Filled.ShoppingCartCheckout; - public const string ShortText = Material.Filled.ShortText; - public const string Shortcut = Material.Filled.Shortcut; - public const string ShowChart = Material.Filled.ShowChart; - public const string Shower = Material.Filled.Shower; - public const string Shuffle = Material.Filled.Shuffle; - public const string ShuffleOn = Material.Filled.ShuffleOn; - public const string ShutterSpeed = Material.Filled.ShutterSpeed; - public const string Sick = Material.Filled.Sick; - public const string SignLanguage = Material.Filled.SignLanguage; - public const string SignalCellular0Bar = Material.Filled.SignalCellular0Bar; - public const string SignalCellular4Bar = Material.Filled.SignalCellular4Bar; - public const string SignalCellularAlt = Material.Filled.SignalCellularAlt; - public const string SignalCellularAlt1Bar = Material.Filled.SignalCellularAlt1Bar; - public const string SignalCellularAlt2Bar = Material.Filled.SignalCellularAlt2Bar; - public const string SignalCellularConnectedNoInternet0Bar = Material.Filled.SignalCellularConnectedNoInternet0Bar; - public const string SignalCellularConnectedNoInternet4Bar = Material.Filled.SignalCellularConnectedNoInternet4Bar; - public const string SignalCellularNoSim = Material.Filled.SignalCellularNoSim; - public const string SignalCellularNodata = Material.Filled.SignalCellularNodata; - public const string SignalCellularNull = Material.Filled.SignalCellularNull; - public const string SignalCellularOff = Material.Filled.SignalCellularOff; - public const string SignalWifi0Bar = Material.Filled.SignalWifi0Bar; - public const string SignalWifi4Bar = Material.Filled.SignalWifi4Bar; - public const string SignalWifi4BarLock = Material.Filled.SignalWifi4BarLock; - public const string SignalWifiBad = Material.Filled.SignalWifiBad; - public const string SignalWifiConnectedNoInternet4 = Material.Filled.SignalWifiConnectedNoInternet4; - public const string SignalWifiOff = Material.Filled.SignalWifiOff; - public const string SignalWifiStatusbar4Bar = Material.Filled.SignalWifiStatusbar4Bar; - public const string SignalWifiStatusbarConnectedNoInternet4 = Material.Filled.SignalWifiStatusbarConnectedNoInternet4; - public const string SignalWifiStatusbarNull = Material.Filled.SignalWifiStatusbarNull; - public const string Signpost = Material.Filled.Signpost; - public const string SimCard = Material.Filled.SimCard; - public const string SimCardAlert = Material.Filled.SimCardAlert; - public const string SimCardDownload = Material.Filled.SimCardDownload; - public const string SingleBed = Material.Filled.SingleBed; - public const string Sip = Material.Filled.Sip; - public const string Skateboarding = Material.Filled.Skateboarding; - public const string SkipNext = Material.Filled.SkipNext; - public const string SkipPrevious = Material.Filled.SkipPrevious; - public const string Sledding = Material.Filled.Sledding; - public const string Slideshow = Material.Filled.Slideshow; - public const string SlowMotionVideo = Material.Filled.SlowMotionVideo; - public const string SmartButton = Material.Filled.SmartButton; - public const string SmartDisplay = Material.Filled.SmartDisplay; - public const string SmartScreen = Material.Filled.SmartScreen; - public const string SmartToy = Material.Filled.SmartToy; - public const string Smartphone = Material.Filled.Smartphone; - public const string SmokeFree = Material.Filled.SmokeFree; - public const string SmokingRooms = Material.Filled.SmokingRooms; - public const string Sms = Material.Filled.Sms; - public const string SmsFailed = Material.Filled.SmsFailed; - public const string SnippetFolder = Material.Filled.SnippetFolder; - public const string Snooze = Material.Filled.Snooze; - public const string Snowboarding = Material.Filled.Snowboarding; - public const string Snowmobile = Material.Filled.Snowmobile; - public const string Snowshoeing = Material.Filled.Snowshoeing; - public const string Soap = Material.Filled.Soap; - public const string SocialDistance = Material.Filled.SocialDistance; - public const string Sort = Material.Filled.Sort; - public const string SortByAlpha = Material.Filled.SortByAlpha; - public const string Sos = Material.Filled.Sos; - public const string SoupKitchen = Material.Filled.SoupKitchen; - public const string Source = Material.Filled.Source; - public const string South = Material.Filled.South; - public const string SouthAmerica = Material.Filled.SouthAmerica; - public const string SouthEast = Material.Filled.SouthEast; - public const string SouthWest = Material.Filled.SouthWest; - public const string Spa = Material.Filled.Spa; - public const string SpaceBar = Material.Filled.SpaceBar; - public const string SpaceDashboard = Material.Filled.SpaceDashboard; - public const string SpatialAudio = Material.Filled.SpatialAudio; - public const string SpatialAudioOff = Material.Filled.SpatialAudioOff; - public const string SpatialTracking = Material.Filled.SpatialTracking; - public const string Speaker = Material.Filled.Speaker; - public const string SpeakerGroup = Material.Filled.SpeakerGroup; - public const string SpeakerNotes = Material.Filled.SpeakerNotes; - public const string SpeakerNotesOff = Material.Filled.SpeakerNotesOff; - public const string SpeakerPhone = Material.Filled.SpeakerPhone; - public const string Speed = Material.Filled.Speed; - public const string Spellcheck = Material.Filled.Spellcheck; - public const string Splitscreen = Material.Filled.Splitscreen; - public const string Spoke = Material.Filled.Spoke; - public const string Sports = Material.Filled.Sports; - public const string SportsBar = Material.Filled.SportsBar; - public const string SportsBaseball = Material.Filled.SportsBaseball; - public const string SportsBasketball = Material.Filled.SportsBasketball; - public const string SportsCricket = Material.Filled.SportsCricket; - public const string SportsEsports = Material.Filled.SportsEsports; - public const string SportsFootball = Material.Filled.SportsFootball; - public const string SportsGolf = Material.Filled.SportsGolf; - public const string SportsGymnastics = Material.Filled.SportsGymnastics; - public const string SportsHandball = Material.Filled.SportsHandball; - public const string SportsHockey = Material.Filled.SportsHockey; - public const string SportsKabaddi = Material.Filled.SportsKabaddi; - public const string SportsMartialArts = Material.Filled.SportsMartialArts; - public const string SportsMma = Material.Filled.SportsMma; - public const string SportsMotorsports = Material.Filled.SportsMotorsports; - public const string SportsRugby = Material.Filled.SportsRugby; - public const string SportsScore = Material.Filled.SportsScore; - public const string SportsSoccer = Material.Filled.SportsSoccer; - public const string SportsTennis = Material.Filled.SportsTennis; - public const string SportsVolleyball = Material.Filled.SportsVolleyball; - public const string Square = Material.Filled.Square; - public const string SquareFoot = Material.Filled.SquareFoot; - public const string SsidChart = Material.Filled.SsidChart; - public const string StackedBarChart = Material.Filled.StackedBarChart; - public const string StackedLineChart = Material.Filled.StackedLineChart; - public const string Stadium = Material.Filled.Stadium; - public const string Stairs = Material.Filled.Stairs; - public const string Star = Material.Filled.Star; - public const string StarBorder = Material.Filled.StarBorder; - public const string StarBorderPurple500 = Material.Filled.StarBorderPurple500; - public const string StarHalf = Material.Filled.StarHalf; - public const string StarOutline = Material.Filled.StarOutline; - public const string StarPurple500 = Material.Filled.StarPurple500; - public const string StarRate = Material.Filled.StarRate; - public const string Stars = Material.Filled.Stars; - public const string Start = Material.Filled.Start; - public const string StayCurrentLandscape = Material.Filled.StayCurrentLandscape; - public const string StayCurrentPortrait = Material.Filled.StayCurrentPortrait; - public const string StayPrimaryLandscape = Material.Filled.StayPrimaryLandscape; - public const string StayPrimaryPortrait = Material.Filled.StayPrimaryPortrait; - public const string StickyNote2 = Material.Filled.StickyNote2; - public const string Stop = Material.Filled.Stop; - public const string StopCircle = Material.Filled.StopCircle; - public const string StopScreenShare = Material.Filled.StopScreenShare; - public const string Storage = Material.Filled.Storage; - public const string Store = Material.Filled.Store; - public const string StoreMallDirectory = Material.Filled.StoreMallDirectory; - public const string Storefront = Material.Filled.Storefront; - public const string Storm = Material.Filled.Storm; - public const string Straight = Material.Filled.Straight; - public const string Straighten = Material.Filled.Straighten; - public const string Stream = Material.Filled.Stream; - public const string Streetview = Material.Filled.Streetview; - public const string StrikethroughS = Material.Filled.StrikethroughS; - public const string Stroller = Material.Filled.Stroller; - public const string Style = Material.Filled.Style; - public const string SubdirectoryArrowLeft = Material.Filled.SubdirectoryArrowLeft; - public const string SubdirectoryArrowRight = Material.Filled.SubdirectoryArrowRight; - public const string Subject = Material.Filled.Subject; - public const string Subscript = Material.Filled.Subscript; - public const string Subscriptions = Material.Filled.Subscriptions; - public const string Subtitles = Material.Filled.Subtitles; - public const string SubtitlesOff = Material.Filled.SubtitlesOff; - public const string Subway = Material.Filled.Subway; - public const string Summarize = Material.Filled.Summarize; - public const string Superscript = Material.Filled.Superscript; - public const string SupervisedUserCircle = Material.Filled.SupervisedUserCircle; - public const string SupervisorAccount = Material.Filled.SupervisorAccount; - public const string Support = Material.Filled.Support; - public const string SupportAgent = Material.Filled.SupportAgent; - public const string Surfing = Material.Filled.Surfing; - public const string SurroundSound = Material.Filled.SurroundSound; - public const string SwapCalls = Material.Filled.SwapCalls; - public const string SwapHoriz = Material.Filled.SwapHoriz; - public const string SwapHorizontalCircle = Material.Filled.SwapHorizontalCircle; - public const string SwapVert = Material.Filled.SwapVert; - public const string SwapVerticalCircle = Material.Filled.SwapVerticalCircle; - public const string Swipe = Material.Filled.Swipe; - public const string SwipeDown = Material.Filled.SwipeDown; - public const string SwipeDownAlt = Material.Filled.SwipeDownAlt; - public const string SwipeLeft = Material.Filled.SwipeLeft; - public const string SwipeLeftAlt = Material.Filled.SwipeLeftAlt; - public const string SwipeRight = Material.Filled.SwipeRight; - public const string SwipeRightAlt = Material.Filled.SwipeRightAlt; - public const string SwipeUp = Material.Filled.SwipeUp; - public const string SwipeUpAlt = Material.Filled.SwipeUpAlt; - public const string SwipeVertical = Material.Filled.SwipeVertical; - public const string SwitchAccessShortcut = Material.Filled.SwitchAccessShortcut; - public const string SwitchAccessShortcutAdd = Material.Filled.SwitchAccessShortcutAdd; - public const string SwitchAccount = Material.Filled.SwitchAccount; - public const string SwitchCamera = Material.Filled.SwitchCamera; - public const string SwitchLeft = Material.Filled.SwitchLeft; - public const string SwitchRight = Material.Filled.SwitchRight; - public const string SwitchVideo = Material.Filled.SwitchVideo; - public const string Synagogue = Material.Filled.Synagogue; - public const string Sync = Material.Filled.Sync; - public const string SyncAlt = Material.Filled.SyncAlt; - public const string SyncDisabled = Material.Filled.SyncDisabled; - public const string SyncLock = Material.Filled.SyncLock; - public const string SyncProblem = Material.Filled.SyncProblem; - public const string SystemSecurityUpdate = Material.Filled.SystemSecurityUpdate; - public const string SystemSecurityUpdateGood = Material.Filled.SystemSecurityUpdateGood; - public const string SystemSecurityUpdateWarning = Material.Filled.SystemSecurityUpdateWarning; - public const string SystemUpdate = Material.Filled.SystemUpdate; - public const string SystemUpdateAlt = Material.Filled.SystemUpdateAlt; - public const string Tab = Material.Filled.Tab; - public const string TabUnselected = Material.Filled.TabUnselected; - public const string TableBar = Material.Filled.TableBar; - public const string TableChart = Material.Filled.TableChart; - public const string TableRestaurant = Material.Filled.TableRestaurant; - public const string TableRows = Material.Filled.TableRows; - public const string TableView = Material.Filled.TableView; - public const string Tablet = Material.Filled.Tablet; - public const string TabletAndroid = Material.Filled.TabletAndroid; - public const string TabletMac = Material.Filled.TabletMac; - public const string Tag = Material.Filled.Tag; - public const string TagFaces = Material.Filled.TagFaces; - public const string TakeoutDining = Material.Filled.TakeoutDining; - public const string TapAndPlay = Material.Filled.TapAndPlay; - public const string Tapas = Material.Filled.Tapas; - public const string Task = Material.Filled.Task; - public const string TaskAlt = Material.Filled.TaskAlt; - public const string TaxiAlert = Material.Filled.TaxiAlert; - public const string TempleBuddhist = Material.Filled.TempleBuddhist; - public const string TempleHindu = Material.Filled.TempleHindu; - public const string Terminal = Material.Filled.Terminal; - public const string Terrain = Material.Filled.Terrain; - public const string TextDecrease = Material.Filled.TextDecrease; - public const string TextFields = Material.Filled.TextFields; - public const string TextFormat = Material.Filled.TextFormat; - public const string TextIncrease = Material.Filled.TextIncrease; - public const string TextRotateUp = Material.Filled.TextRotateUp; - public const string TextRotateVertical = Material.Filled.TextRotateVertical; - public const string TextRotationAngledown = Material.Filled.TextRotationAngledown; - public const string TextRotationAngleup = Material.Filled.TextRotationAngleup; - public const string TextRotationDown = Material.Filled.TextRotationDown; - public const string TextRotationNone = Material.Filled.TextRotationNone; - public const string TextSnippet = Material.Filled.TextSnippet; - public const string Textsms = Material.Filled.Textsms; - public const string Texture = Material.Filled.Texture; - public const string TheaterComedy = Material.Filled.TheaterComedy; - public const string Theaters = Material.Filled.Theaters; - public const string Thermostat = Material.Filled.Thermostat; - public const string ThermostatAuto = Material.Filled.ThermostatAuto; - public const string ThumbDown = Material.Filled.ThumbDown; - public const string ThumbDownAlt = Material.Filled.ThumbDownAlt; - public const string ThumbDownOffAlt = Material.Filled.ThumbDownOffAlt; - public const string ThumbUp = Material.Filled.ThumbUp; - public const string ThumbUpAlt = Material.Filled.ThumbUpAlt; - public const string ThumbUpOffAlt = Material.Filled.ThumbUpOffAlt; - public const string ThumbsUpDown = Material.Filled.ThumbsUpDown; - public const string Thunderstorm = Material.Filled.Thunderstorm; - public const string TimeToLeave = Material.Filled.TimeToLeave; - public const string Timelapse = Material.Filled.Timelapse; - public const string Timeline = Material.Filled.Timeline; - public const string Timer = Material.Filled.Timer; - public const string Timer10 = Material.Filled.Timer10; - public const string Timer10Select = Material.Filled.Timer10Select; - public const string Timer3 = Material.Filled.Timer3; - public const string Timer3Select = Material.Filled.Timer3Select; - public const string TimerOff = Material.Filled.TimerOff; - public const string TipsAndUpdates = Material.Filled.TipsAndUpdates; - public const string TireRepair = Material.Filled.TireRepair; - public const string Title = Material.Filled.Title; - public const string Toc = Material.Filled.Toc; - public const string Today = Material.Filled.Today; - public const string ToggleOff = Material.Filled.ToggleOff; - public const string ToggleOn = Material.Filled.ToggleOn; - public const string Token = Material.Filled.Token; - public const string Toll = Material.Filled.Toll; - public const string Tonality = Material.Filled.Tonality; - public const string Topic = Material.Filled.Topic; - public const string TouchApp = Material.Filled.TouchApp; - public const string Tour = Material.Filled.Tour; - public const string Toys = Material.Filled.Toys; - public const string TrackChanges = Material.Filled.TrackChanges; - public const string Traffic = Material.Filled.Traffic; - public const string Train = Material.Filled.Train; - public const string Tram = Material.Filled.Tram; - public const string TransferWithinAStation = Material.Filled.TransferWithinAStation; - public const string Transform = Material.Filled.Transform; - public const string Transgender = Material.Filled.Transgender; - public const string TransitEnterexit = Material.Filled.TransitEnterexit; - public const string Translate = Material.Filled.Translate; - public const string TravelExplore = Material.Filled.TravelExplore; - public const string TrendingDown = Material.Filled.TrendingDown; - public const string TrendingFlat = Material.Filled.TrendingFlat; - public const string TrendingUp = Material.Filled.TrendingUp; - public const string TripOrigin = Material.Filled.TripOrigin; - public const string Try = Material.Filled.Try; - public const string Tsunami = Material.Filled.Tsunami; - public const string Tty = Material.Filled.Tty; - public const string Tune = Material.Filled.Tune; - public const string Tungsten = Material.Filled.Tungsten; - public const string TurnLeft = Material.Filled.TurnLeft; - public const string TurnRight = Material.Filled.TurnRight; - public const string TurnSharpLeft = Material.Filled.TurnSharpLeft; - public const string TurnSharpRight = Material.Filled.TurnSharpRight; - public const string TurnSlightLeft = Material.Filled.TurnSlightLeft; - public const string TurnSlightRight = Material.Filled.TurnSlightRight; - public const string TurnedIn = Material.Filled.TurnedIn; - public const string TurnedInNot = Material.Filled.TurnedInNot; - public const string Tv = Material.Filled.Tv; - public const string TvOff = Material.Filled.TvOff; - public const string TwoWheeler = Material.Filled.TwoWheeler; - public const string UTurnLeft = Material.Filled.UTurnLeft; - public const string UTurnRight = Material.Filled.UTurnRight; - public const string Umbrella = Material.Filled.Umbrella; - public const string Unarchive = Material.Filled.Unarchive; - public const string Undo = Material.Filled.Undo; - public const string UnfoldLess = Material.Filled.UnfoldLess; - public const string UnfoldMore = Material.Filled.UnfoldMore; - public const string Unpublished = Material.Filled.Unpublished; - public const string Unsubscribe = Material.Filled.Unsubscribe; - public const string Upcoming = Material.Filled.Upcoming; - public const string Update = Material.Filled.Update; - public const string UpdateDisabled = Material.Filled.UpdateDisabled; - public const string Upgrade = Material.Filled.Upgrade; - public const string Upload = Material.Filled.Upload; - public const string UploadFile = Material.Filled.UploadFile; - public const string Usb = Material.Filled.Usb; - public const string UsbOff = Material.Filled.UsbOff; - public const string Vaccines = Material.Filled.Vaccines; - public const string VapeFree = Material.Filled.VapeFree; - public const string VapingRooms = Material.Filled.VapingRooms; - public const string Verified = Material.Filled.Verified; - public const string VerifiedUser = Material.Filled.VerifiedUser; - public const string VerticalAlignBottom = Material.Filled.VerticalAlignBottom; - public const string VerticalAlignCenter = Material.Filled.VerticalAlignCenter; - public const string VerticalAlignTop = Material.Filled.VerticalAlignTop; - public const string VerticalDistribute = Material.Filled.VerticalDistribute; - public const string VerticalSplit = Material.Filled.VerticalSplit; - public const string Vibration = Material.Filled.Vibration; - public const string VideoCall = Material.Filled.VideoCall; - public const string VideoCameraBack = Material.Filled.VideoCameraBack; - public const string VideoCameraFront = Material.Filled.VideoCameraFront; - public const string VideoFile = Material.Filled.VideoFile; - public const string VideoLabel = Material.Filled.VideoLabel; - public const string VideoLibrary = Material.Filled.VideoLibrary; - public const string VideoSettings = Material.Filled.VideoSettings; - public const string VideoStable = Material.Filled.VideoStable; - public const string Videocam = Material.Filled.Videocam; - public const string VideocamOff = Material.Filled.VideocamOff; - public const string VideogameAsset = Material.Filled.VideogameAsset; - public const string VideogameAssetOff = Material.Filled.VideogameAssetOff; - public const string ViewAgenda = Material.Filled.ViewAgenda; - public const string ViewArray = Material.Filled.ViewArray; - public const string ViewCarousel = Material.Filled.ViewCarousel; - public const string ViewColumn = Material.Filled.ViewColumn; - public const string ViewComfy = Material.Filled.ViewComfy; - public const string ViewComfyAlt = Material.Filled.ViewComfyAlt; - public const string ViewCompact = Material.Filled.ViewCompact; - public const string ViewCompactAlt = Material.Filled.ViewCompactAlt; - public const string ViewCozy = Material.Filled.ViewCozy; - public const string ViewDay = Material.Filled.ViewDay; - public const string ViewHeadline = Material.Filled.ViewHeadline; - public const string ViewInAr = Material.Filled.ViewInAr; - public const string ViewKanban = Material.Filled.ViewKanban; - public const string ViewList = Material.Filled.ViewList; - public const string ViewModule = Material.Filled.ViewModule; - public const string ViewQuilt = Material.Filled.ViewQuilt; - public const string ViewSidebar = Material.Filled.ViewSidebar; - public const string ViewStream = Material.Filled.ViewStream; - public const string ViewTimeline = Material.Filled.ViewTimeline; - public const string ViewWeek = Material.Filled.ViewWeek; - public const string Vignette = Material.Filled.Vignette; - public const string Villa = Material.Filled.Villa; - public const string Visibility = Material.Filled.Visibility; - public const string VisibilityOff = Material.Filled.VisibilityOff; - public const string VoiceChat = Material.Filled.VoiceChat; - public const string VoiceOverOff = Material.Filled.VoiceOverOff; - public const string Voicemail = Material.Filled.Voicemail; - public const string Volcano = Material.Filled.Volcano; - public const string VolumeDown = Material.Filled.VolumeDown; - public const string VolumeMute = Material.Filled.VolumeMute; - public const string VolumeOff = Material.Filled.VolumeOff; - public const string VolumeUp = Material.Filled.VolumeUp; - public const string VolunteerActivism = Material.Filled.VolunteerActivism; - public const string VpnKey = Material.Filled.VpnKey; - public const string VpnKeyOff = Material.Filled.VpnKeyOff; - public const string VpnLock = Material.Filled.VpnLock; - public const string Vrpano = Material.Filled.Vrpano; - public const string Wallpaper = Material.Filled.Wallpaper; - public const string Warehouse = Material.Filled.Warehouse; - public const string Warning = Material.Filled.Warning; - public const string WarningAmber = Material.Filled.WarningAmber; - public const string Wash = Material.Filled.Wash; - public const string Watch = Material.Filled.Watch; - public const string WatchLater = Material.Filled.WatchLater; - public const string WatchOff = Material.Filled.WatchOff; - public const string Water = Material.Filled.Water; - public const string WaterDamage = Material.Filled.WaterDamage; - public const string WaterDrop = Material.Filled.WaterDrop; - public const string WaterfallChart = Material.Filled.WaterfallChart; - public const string Waves = Material.Filled.Waves; - public const string WavingHand = Material.Filled.WavingHand; - public const string WbAuto = Material.Filled.WbAuto; - public const string WbCloudy = Material.Filled.WbCloudy; - public const string WbIncandescent = Material.Filled.WbIncandescent; - public const string WbIridescent = Material.Filled.WbIridescent; - public const string WbShade = Material.Filled.WbShade; - public const string WbSunny = Material.Filled.WbSunny; - public const string WbTwilight = Material.Filled.WbTwilight; - public const string Wc = Material.Filled.Wc; - public const string Web = Material.Filled.Web; - public const string WebAsset = Material.Filled.WebAsset; - public const string WebAssetOff = Material.Filled.WebAssetOff; - public const string Webhook = Material.Filled.Webhook; - public const string Weekend = Material.Filled.Weekend; - public const string West = Material.Filled.West; - public const string Whatsapp = Material.Filled.Whatsapp; - public const string Whatshot = Material.Filled.Whatshot; - public const string WheelchairPickup = Material.Filled.WheelchairPickup; - public const string WhereToVote = Material.Filled.WhereToVote; - public const string Widgets = Material.Filled.Widgets; - public const string Wifi = Material.Filled.Wifi; - public const string Wifi1Bar = Material.Filled.Wifi1Bar; - public const string Wifi2Bar = Material.Filled.Wifi2Bar; - public const string WifiCalling = Material.Filled.WifiCalling; - public const string WifiCalling3 = Material.Filled.WifiCalling3; - public const string WifiChannel = Material.Filled.WifiChannel; - public const string WifiFind = Material.Filled.WifiFind; - public const string WifiLock = Material.Filled.WifiLock; - public const string WifiOff = Material.Filled.WifiOff; - public const string WifiPassword = Material.Filled.WifiPassword; - public const string WifiProtectedSetup = Material.Filled.WifiProtectedSetup; - public const string WifiTethering = Material.Filled.WifiTethering; - public const string WifiTetheringError = Material.Filled.WifiTetheringError; - public const string WifiTetheringOff = Material.Filled.WifiTetheringOff; - public const string Window = Material.Filled.Window; - public const string WineBar = Material.Filled.WineBar; - public const string Woman = Material.Filled.Woman; - public const string Work = Material.Filled.Work; - public const string WorkOff = Material.Filled.WorkOff; - public const string WorkOutline = Material.Filled.WorkOutline; - public const string WorkspacePremium = Material.Filled.WorkspacePremium; - public const string Workspaces = Material.Filled.Workspaces; - public const string WrapText = Material.Filled.WrapText; - public const string WrongLocation = Material.Filled.WrongLocation; - public const string Wysiwyg = Material.Filled.Wysiwyg; - public const string Yard = Material.Filled.Yard; - public const string YoutubeSearchedFor = Material.Filled.YoutubeSearchedFor; - public const string ZoomIn = Material.Filled.ZoomIn; - public const string ZoomInMap = Material.Filled.ZoomInMap; - public const string ZoomOut = Material.Filled.ZoomOut; - public const string ZoomOutMap = Material.Filled.ZoomOutMap; - } - } -} diff --git a/src/Connected.Components/Icons/Obsolete/Outlined.cs b/src/Connected.Components/Icons/Obsolete/Outlined.cs deleted file mode 100644 index 0f56fe0..0000000 --- a/src/Connected.Components/Icons/Obsolete/Outlined.cs +++ /dev/null @@ -1,2074 +0,0 @@ -/* - * This file was auto-generated by Update-MudIcons.ps1 - * 2022.02.01_04:17:46 - */ - -using System.Diagnostics.CodeAnalysis; - -namespace Connected -{ - public partial class Icons - { - [ExcludeFromCodeCoverage] - public partial class Outlined - { - public const string _10k = Material.Outlined._10k; - public const string _10mp = Material.Outlined._10mp; - public const string _11mp = Material.Outlined._11mp; - public const string _123 = Material.Outlined._123; - public const string _12mp = Material.Outlined._12mp; - public const string _13mp = Material.Outlined._13mp; - public const string _14mp = Material.Outlined._14mp; - public const string _15mp = Material.Outlined._15mp; - public const string _16mp = Material.Outlined._16mp; - public const string _17mp = Material.Outlined._17mp; - public const string _18mp = Material.Outlined._18mp; - public const string _19mp = Material.Outlined._19mp; - public const string _1k = Material.Outlined._1k; - public const string _1kPlus = Material.Outlined._1kPlus; - public const string _1xMobiledata = Material.Outlined._1xMobiledata; - public const string _20mp = Material.Outlined._20mp; - public const string _21mp = Material.Outlined._21mp; - public const string _22mp = Material.Outlined._22mp; - public const string _23mp = Material.Outlined._23mp; - public const string _24mp = Material.Outlined._24mp; - public const string _2k = Material.Outlined._2k; - public const string _2kPlus = Material.Outlined._2kPlus; - public const string _2mp = Material.Outlined._2mp; - public const string _30fps = Material.Outlined._30fps; - public const string _30fpsSelect = Material.Outlined._30fpsSelect; - public const string _360 = Material.Outlined._360; - public const string _3dRotation = Material.Outlined._3dRotation; - public const string _3gMobiledata = Material.Outlined._3gMobiledata; - public const string _3k = Material.Outlined._3k; - public const string _3kPlus = Material.Outlined._3kPlus; - public const string _3mp = Material.Outlined._3mp; - public const string _3p = Material.Outlined._3p; - public const string _4gMobiledata = Material.Outlined._4gMobiledata; - public const string _4gPlusMobiledata = Material.Outlined._4gPlusMobiledata; - public const string _4k = Material.Outlined._4k; - public const string _4kPlus = Material.Outlined._4kPlus; - public const string _4mp = Material.Outlined._4mp; - public const string _5g = Material.Outlined._5g; - public const string _5k = Material.Outlined._5k; - public const string _5kPlus = Material.Outlined._5kPlus; - public const string _5mp = Material.Outlined._5mp; - public const string _60fps = Material.Outlined._60fps; - public const string _60fpsSelect = Material.Outlined._60fpsSelect; - public const string _6FtApart = Material.Outlined._6FtApart; - public const string _6k = Material.Outlined._6k; - public const string _6kPlus = Material.Outlined._6kPlus; - public const string _6mp = Material.Outlined._6mp; - public const string _7k = Material.Outlined._7k; - public const string _7kPlus = Material.Outlined._7kPlus; - public const string _7mp = Material.Outlined._7mp; - public const string _8k = Material.Outlined._8k; - public const string _8kPlus = Material.Outlined._8kPlus; - public const string _8mp = Material.Outlined._8mp; - public const string _9k = Material.Outlined._9k; - public const string _9kPlus = Material.Outlined._9kPlus; - public const string _9mp = Material.Outlined._9mp; - public const string Abc = Material.Outlined.Abc; - public const string AcUnit = Material.Outlined.AcUnit; - public const string AccessAlarm = Material.Outlined.AccessAlarm; - public const string AccessAlarms = Material.Outlined.AccessAlarms; - public const string AccessTime = Material.Outlined.AccessTime; - public const string AccessTimeFilled = Material.Outlined.AccessTimeFilled; - public const string Accessibility = Material.Outlined.Accessibility; - public const string AccessibilityNew = Material.Outlined.AccessibilityNew; - public const string Accessible = Material.Outlined.Accessible; - public const string AccessibleForward = Material.Outlined.AccessibleForward; - public const string AccountBalance = Material.Outlined.AccountBalance; - public const string AccountBalanceWallet = Material.Outlined.AccountBalanceWallet; - public const string AccountBox = Material.Outlined.AccountBox; - public const string AccountCircle = Material.Outlined.AccountCircle; - public const string AccountTree = Material.Outlined.AccountTree; - public const string AdUnits = Material.Outlined.AdUnits; - public const string Adb = Material.Outlined.Adb; - public const string Add = Material.Outlined.Add; - public const string AddAPhoto = Material.Outlined.AddAPhoto; - public const string AddAlarm = Material.Outlined.AddAlarm; - public const string AddAlert = Material.Outlined.AddAlert; - public const string AddBox = Material.Outlined.AddBox; - public const string AddBusiness = Material.Outlined.AddBusiness; - public const string AddCard = Material.Outlined.AddCard; - public const string AddChart = Material.Outlined.AddChart; - public const string AddCircle = Material.Outlined.AddCircle; - public const string AddCircleOutline = Material.Outlined.AddCircleOutline; - public const string AddComment = Material.Outlined.AddComment; - public const string AddIcCall = Material.Outlined.AddIcCall; - public const string AddLink = Material.Outlined.AddLink; - public const string AddLocation = Material.Outlined.AddLocation; - public const string AddLocationAlt = Material.Outlined.AddLocationAlt; - public const string AddModerator = Material.Outlined.AddModerator; - public const string AddPhotoAlternate = Material.Outlined.AddPhotoAlternate; - public const string AddReaction = Material.Outlined.AddReaction; - public const string AddRoad = Material.Outlined.AddRoad; - public const string AddShoppingCart = Material.Outlined.AddShoppingCart; - public const string AddTask = Material.Outlined.AddTask; - public const string AddToDrive = Material.Outlined.AddToDrive; - public const string AddToHomeScreen = Material.Outlined.AddToHomeScreen; - public const string AddToPhotos = Material.Outlined.AddToPhotos; - public const string AddToQueue = Material.Outlined.AddToQueue; - public const string Addchart = Material.Outlined.Addchart; - public const string AdfScanner = Material.Outlined.AdfScanner; - public const string Adjust = Material.Outlined.Adjust; - public const string AdminPanelSettings = Material.Outlined.AdminPanelSettings; - public const string AdsClick = Material.Outlined.AdsClick; - public const string Agriculture = Material.Outlined.Agriculture; - public const string Air = Material.Outlined.Air; - public const string AirlineSeatFlat = Material.Outlined.AirlineSeatFlat; - public const string AirlineSeatFlatAngled = Material.Outlined.AirlineSeatFlatAngled; - public const string AirlineSeatIndividualSuite = Material.Outlined.AirlineSeatIndividualSuite; - public const string AirlineSeatLegroomExtra = Material.Outlined.AirlineSeatLegroomExtra; - public const string AirlineSeatLegroomNormal = Material.Outlined.AirlineSeatLegroomNormal; - public const string AirlineSeatLegroomReduced = Material.Outlined.AirlineSeatLegroomReduced; - public const string AirlineSeatReclineExtra = Material.Outlined.AirlineSeatReclineExtra; - public const string AirlineSeatReclineNormal = Material.Outlined.AirlineSeatReclineNormal; - public const string AirlineStops = Material.Outlined.AirlineStops; - public const string Airlines = Material.Outlined.Airlines; - public const string AirplaneTicket = Material.Outlined.AirplaneTicket; - public const string AirplanemodeActive = Material.Outlined.AirplanemodeActive; - public const string AirplanemodeInactive = Material.Outlined.AirplanemodeInactive; - public const string Airplay = Material.Outlined.Airplay; - public const string AirportShuttle = Material.Outlined.AirportShuttle; - public const string Alarm = Material.Outlined.Alarm; - public const string AlarmAdd = Material.Outlined.AlarmAdd; - public const string AlarmOff = Material.Outlined.AlarmOff; - public const string AlarmOn = Material.Outlined.AlarmOn; - public const string Album = Material.Outlined.Album; - public const string AlignHorizontalCenter = Material.Outlined.AlignHorizontalCenter; - public const string AlignHorizontalLeft = Material.Outlined.AlignHorizontalLeft; - public const string AlignHorizontalRight = Material.Outlined.AlignHorizontalRight; - public const string AlignVerticalBottom = Material.Outlined.AlignVerticalBottom; - public const string AlignVerticalCenter = Material.Outlined.AlignVerticalCenter; - public const string AlignVerticalTop = Material.Outlined.AlignVerticalTop; - public const string AllInbox = Material.Outlined.AllInbox; - public const string AllInclusive = Material.Outlined.AllInclusive; - public const string AllOut = Material.Outlined.AllOut; - public const string AltRoute = Material.Outlined.AltRoute; - public const string AlternateEmail = Material.Outlined.AlternateEmail; - public const string Analytics = Material.Outlined.Analytics; - public const string Anchor = Material.Outlined.Anchor; - public const string Android = Material.Outlined.Android; - public const string Animation = Material.Outlined.Animation; - public const string Announcement = Material.Outlined.Announcement; - public const string Aod = Material.Outlined.Aod; - public const string Apartment = Material.Outlined.Apartment; - public const string Api = Material.Outlined.Api; - public const string AppBlocking = Material.Outlined.AppBlocking; - public const string AppRegistration = Material.Outlined.AppRegistration; - public const string AppSettingsAlt = Material.Outlined.AppSettingsAlt; - public const string AppShortcut = Material.Outlined.AppShortcut; - public const string Approval = Material.Outlined.Approval; - public const string Apps = Material.Outlined.Apps; - public const string AppsOutage = Material.Outlined.AppsOutage; - public const string Architecture = Material.Outlined.Architecture; - public const string Archive = Material.Outlined.Archive; - public const string AreaChart = Material.Outlined.AreaChart; - public const string ArrowBack = Material.Outlined.ArrowBack; - public const string ArrowBackIos = Material.Outlined.ArrowBackIos; - public const string ArrowBackIosNew = Material.Outlined.ArrowBackIosNew; - public const string ArrowCircleDown = Material.Outlined.ArrowCircleDown; - public const string ArrowCircleLeft = Material.Outlined.ArrowCircleLeft; - public const string ArrowCircleRight = Material.Outlined.ArrowCircleRight; - public const string ArrowCircleUp = Material.Outlined.ArrowCircleUp; - public const string ArrowDownward = Material.Outlined.ArrowDownward; - public const string ArrowDropDown = Material.Outlined.ArrowDropDown; - public const string ArrowDropDownCircle = Material.Outlined.ArrowDropDownCircle; - public const string ArrowDropUp = Material.Outlined.ArrowDropUp; - public const string ArrowForward = Material.Outlined.ArrowForward; - public const string ArrowForwardIos = Material.Outlined.ArrowForwardIos; - public const string ArrowLeft = Material.Outlined.ArrowLeft; - public const string ArrowRight = Material.Outlined.ArrowRight; - public const string ArrowRightAlt = Material.Outlined.ArrowRightAlt; - public const string ArrowUpward = Material.Outlined.ArrowUpward; - public const string ArtTrack = Material.Outlined.ArtTrack; - public const string Article = Material.Outlined.Article; - public const string AspectRatio = Material.Outlined.AspectRatio; - public const string Assessment = Material.Outlined.Assessment; - public const string Assignment = Material.Outlined.Assignment; - public const string AssignmentInd = Material.Outlined.AssignmentInd; - public const string AssignmentLate = Material.Outlined.AssignmentLate; - public const string AssignmentReturn = Material.Outlined.AssignmentReturn; - public const string AssignmentReturned = Material.Outlined.AssignmentReturned; - public const string AssignmentTurnedIn = Material.Outlined.AssignmentTurnedIn; - public const string Assistant = Material.Outlined.Assistant; - public const string AssistantDirection = Material.Outlined.AssistantDirection; - public const string AssistantPhoto = Material.Outlined.AssistantPhoto; - public const string AssuredWorkload = Material.Outlined.AssuredWorkload; - public const string Atm = Material.Outlined.Atm; - public const string AttachEmail = Material.Outlined.AttachEmail; - public const string AttachFile = Material.Outlined.AttachFile; - public const string AttachMoney = Material.Outlined.AttachMoney; - public const string Attachment = Material.Outlined.Attachment; - public const string Attractions = Material.Outlined.Attractions; - public const string Attribution = Material.Outlined.Attribution; - public const string AudioFile = Material.Outlined.AudioFile; - public const string Audiotrack = Material.Outlined.Audiotrack; - public const string AutoAwesome = Material.Outlined.AutoAwesome; - public const string AutoAwesomeMosaic = Material.Outlined.AutoAwesomeMosaic; - public const string AutoAwesomeMotion = Material.Outlined.AutoAwesomeMotion; - public const string AutoDelete = Material.Outlined.AutoDelete; - public const string AutoFixHigh = Material.Outlined.AutoFixHigh; - public const string AutoFixNormal = Material.Outlined.AutoFixNormal; - public const string AutoFixOff = Material.Outlined.AutoFixOff; - public const string AutoGraph = Material.Outlined.AutoGraph; - public const string AutoStories = Material.Outlined.AutoStories; - public const string AutofpsSelect = Material.Outlined.AutofpsSelect; - public const string Autorenew = Material.Outlined.Autorenew; - public const string AvTimer = Material.Outlined.AvTimer; - public const string BabyChangingStation = Material.Outlined.BabyChangingStation; - public const string BackHand = Material.Outlined.BackHand; - public const string Backpack = Material.Outlined.Backpack; - public const string Backspace = Material.Outlined.Backspace; - public const string Backup = Material.Outlined.Backup; - public const string BackupTable = Material.Outlined.BackupTable; - public const string Badge = Material.Outlined.Badge; - public const string BakeryDining = Material.Outlined.BakeryDining; - public const string Balance = Material.Outlined.Balance; - public const string Balcony = Material.Outlined.Balcony; - public const string Ballot = Material.Outlined.Ballot; - public const string BarChart = Material.Outlined.BarChart; - public const string BatchPrediction = Material.Outlined.BatchPrediction; - public const string Bathroom = Material.Outlined.Bathroom; - public const string Bathtub = Material.Outlined.Bathtub; - public const string Battery0Bar = Material.Outlined.Battery0Bar; - public const string Battery1Bar = Material.Outlined.Battery1Bar; - public const string Battery2Bar = Material.Outlined.Battery2Bar; - public const string Battery3Bar = Material.Outlined.Battery3Bar; - public const string Battery4Bar = Material.Outlined.Battery4Bar; - public const string Battery5Bar = Material.Outlined.Battery5Bar; - public const string Battery6Bar = Material.Outlined.Battery6Bar; - public const string BatteryAlert = Material.Outlined.BatteryAlert; - public const string BatteryChargingFull = Material.Outlined.BatteryChargingFull; - public const string BatteryFull = Material.Outlined.BatteryFull; - public const string BatterySaver = Material.Outlined.BatterySaver; - public const string BatteryStd = Material.Outlined.BatteryStd; - public const string BatteryUnknown = Material.Outlined.BatteryUnknown; - public const string BeachAccess = Material.Outlined.BeachAccess; - public const string Bed = Material.Outlined.Bed; - public const string BedroomBaby = Material.Outlined.BedroomBaby; - public const string BedroomChild = Material.Outlined.BedroomChild; - public const string BedroomParent = Material.Outlined.BedroomParent; - public const string Bedtime = Material.Outlined.Bedtime; - public const string BedtimeOff = Material.Outlined.BedtimeOff; - public const string Beenhere = Material.Outlined.Beenhere; - public const string Bento = Material.Outlined.Bento; - public const string BikeScooter = Material.Outlined.BikeScooter; - public const string Biotech = Material.Outlined.Biotech; - public const string Blender = Material.Outlined.Blender; - public const string Block = Material.Outlined.Block; - public const string Bloodtype = Material.Outlined.Bloodtype; - public const string Bluetooth = Material.Outlined.Bluetooth; - public const string BluetoothAudio = Material.Outlined.BluetoothAudio; - public const string BluetoothConnected = Material.Outlined.BluetoothConnected; - public const string BluetoothDisabled = Material.Outlined.BluetoothDisabled; - public const string BluetoothDrive = Material.Outlined.BluetoothDrive; - public const string BluetoothSearching = Material.Outlined.BluetoothSearching; - public const string BlurCircular = Material.Outlined.BlurCircular; - public const string BlurLinear = Material.Outlined.BlurLinear; - public const string BlurOff = Material.Outlined.BlurOff; - public const string BlurOn = Material.Outlined.BlurOn; - public const string Bolt = Material.Outlined.Bolt; - public const string Book = Material.Outlined.Book; - public const string BookOnline = Material.Outlined.BookOnline; - public const string Bookmark = Material.Outlined.Bookmark; - public const string BookmarkAdd = Material.Outlined.BookmarkAdd; - public const string BookmarkAdded = Material.Outlined.BookmarkAdded; - public const string BookmarkBorder = Material.Outlined.BookmarkBorder; - public const string BookmarkRemove = Material.Outlined.BookmarkRemove; - public const string Bookmarks = Material.Outlined.Bookmarks; - public const string BorderAll = Material.Outlined.BorderAll; - public const string BorderBottom = Material.Outlined.BorderBottom; - public const string BorderClear = Material.Outlined.BorderClear; - public const string BorderColor = Material.Outlined.BorderColor; - public const string BorderHorizontal = Material.Outlined.BorderHorizontal; - public const string BorderInner = Material.Outlined.BorderInner; - public const string BorderLeft = Material.Outlined.BorderLeft; - public const string BorderOuter = Material.Outlined.BorderOuter; - public const string BorderRight = Material.Outlined.BorderRight; - public const string BorderStyle = Material.Outlined.BorderStyle; - public const string BorderTop = Material.Outlined.BorderTop; - public const string BorderVertical = Material.Outlined.BorderVertical; - public const string Boy = Material.Outlined.Boy; - public const string BrandingWatermark = Material.Outlined.BrandingWatermark; - public const string BreakfastDining = Material.Outlined.BreakfastDining; - public const string Brightness1 = Material.Outlined.Brightness1; - public const string Brightness2 = Material.Outlined.Brightness2; - public const string Brightness3 = Material.Outlined.Brightness3; - public const string Brightness4 = Material.Outlined.Brightness4; - public const string Brightness5 = Material.Outlined.Brightness5; - public const string Brightness6 = Material.Outlined.Brightness6; - public const string Brightness7 = Material.Outlined.Brightness7; - public const string BrightnessAuto = Material.Outlined.BrightnessAuto; - public const string BrightnessHigh = Material.Outlined.BrightnessHigh; - public const string BrightnessLow = Material.Outlined.BrightnessLow; - public const string BrightnessMedium = Material.Outlined.BrightnessMedium; - public const string BrokenImage = Material.Outlined.BrokenImage; - public const string BrowseGallery = Material.Outlined.BrowseGallery; - public const string BrowserNotSupported = Material.Outlined.BrowserNotSupported; - public const string BrowserUpdated = Material.Outlined.BrowserUpdated; - public const string BrunchDining = Material.Outlined.BrunchDining; - public const string Brush = Material.Outlined.Brush; - public const string BubbleChart = Material.Outlined.BubbleChart; - public const string BugReport = Material.Outlined.BugReport; - public const string Build = Material.Outlined.Build; - public const string BuildCircle = Material.Outlined.BuildCircle; - public const string Bungalow = Material.Outlined.Bungalow; - public const string BurstMode = Material.Outlined.BurstMode; - public const string BusAlert = Material.Outlined.BusAlert; - public const string Business = Material.Outlined.Business; - public const string BusinessCenter = Material.Outlined.BusinessCenter; - public const string Cabin = Material.Outlined.Cabin; - public const string Cable = Material.Outlined.Cable; - public const string Cached = Material.Outlined.Cached; - public const string Cake = Material.Outlined.Cake; - public const string Calculate = Material.Outlined.Calculate; - public const string CalendarMonth = Material.Outlined.CalendarMonth; - public const string CalendarToday = Material.Outlined.CalendarToday; - public const string CalendarViewDay = Material.Outlined.CalendarViewDay; - public const string CalendarViewMonth = Material.Outlined.CalendarViewMonth; - public const string CalendarViewWeek = Material.Outlined.CalendarViewWeek; - public const string Call = Material.Outlined.Call; - public const string CallEnd = Material.Outlined.CallEnd; - public const string CallMade = Material.Outlined.CallMade; - public const string CallMerge = Material.Outlined.CallMerge; - public const string CallMissed = Material.Outlined.CallMissed; - public const string CallMissedOutgoing = Material.Outlined.CallMissedOutgoing; - public const string CallReceived = Material.Outlined.CallReceived; - public const string CallSplit = Material.Outlined.CallSplit; - public const string CallToAction = Material.Outlined.CallToAction; - public const string Camera = Material.Outlined.Camera; - public const string CameraAlt = Material.Outlined.CameraAlt; - public const string CameraEnhance = Material.Outlined.CameraEnhance; - public const string CameraFront = Material.Outlined.CameraFront; - public const string CameraIndoor = Material.Outlined.CameraIndoor; - public const string CameraOutdoor = Material.Outlined.CameraOutdoor; - public const string CameraRear = Material.Outlined.CameraRear; - public const string CameraRoll = Material.Outlined.CameraRoll; - public const string Cameraswitch = Material.Outlined.Cameraswitch; - public const string Campaign = Material.Outlined.Campaign; - public const string Cancel = Material.Outlined.Cancel; - public const string CancelPresentation = Material.Outlined.CancelPresentation; - public const string CancelScheduleSend = Material.Outlined.CancelScheduleSend; - public const string CandlestickChart = Material.Outlined.CandlestickChart; - public const string CarCrash = Material.Outlined.CarCrash; - public const string CarRental = Material.Outlined.CarRental; - public const string CarRepair = Material.Outlined.CarRepair; - public const string CardGiftcard = Material.Outlined.CardGiftcard; - public const string CardMembership = Material.Outlined.CardMembership; - public const string CardTravel = Material.Outlined.CardTravel; - public const string Carpenter = Material.Outlined.Carpenter; - public const string Cases = Material.Outlined.Cases; - public const string Casino = Material.Outlined.Casino; - public const string Cast = Material.Outlined.Cast; - public const string CastConnected = Material.Outlined.CastConnected; - public const string CastForEducation = Material.Outlined.CastForEducation; - public const string Castle = Material.Outlined.Castle; - public const string CatchingPokemon = Material.Outlined.CatchingPokemon; - public const string Category = Material.Outlined.Category; - public const string Celebration = Material.Outlined.Celebration; - public const string CellTower = Material.Outlined.CellTower; - public const string CellWifi = Material.Outlined.CellWifi; - public const string CenterFocusStrong = Material.Outlined.CenterFocusStrong; - public const string CenterFocusWeak = Material.Outlined.CenterFocusWeak; - public const string Chair = Material.Outlined.Chair; - public const string ChairAlt = Material.Outlined.ChairAlt; - public const string Chalet = Material.Outlined.Chalet; - public const string ChangeCircle = Material.Outlined.ChangeCircle; - public const string ChangeHistory = Material.Outlined.ChangeHistory; - public const string ChargingStation = Material.Outlined.ChargingStation; - public const string Chat = Material.Outlined.Chat; - public const string ChatBubble = Material.Outlined.ChatBubble; - public const string ChatBubbleOutline = Material.Outlined.ChatBubbleOutline; - public const string Check = Material.Outlined.Check; - public const string CheckBox = Material.Outlined.CheckBox; - public const string CheckBoxOutlineBlank = Material.Outlined.CheckBoxOutlineBlank; - public const string CheckCircle = Material.Outlined.CheckCircle; - public const string CheckCircleOutline = Material.Outlined.CheckCircleOutline; - public const string Checklist = Material.Outlined.Checklist; - public const string ChecklistRtl = Material.Outlined.ChecklistRtl; - public const string Checkroom = Material.Outlined.Checkroom; - public const string ChevronLeft = Material.Outlined.ChevronLeft; - public const string ChevronRight = Material.Outlined.ChevronRight; - public const string ChildCare = Material.Outlined.ChildCare; - public const string ChildFriendly = Material.Outlined.ChildFriendly; - public const string ChromeReaderMode = Material.Outlined.ChromeReaderMode; - public const string Church = Material.Outlined.Church; - public const string Circle = Material.Outlined.Circle; - public const string CircleNotifications = Material.Outlined.CircleNotifications; - public const string Class = Material.Outlined.Class; - public const string CleanHands = Material.Outlined.CleanHands; - public const string CleaningServices = Material.Outlined.CleaningServices; - public const string Clear = Material.Outlined.Clear; - public const string ClearAll = Material.Outlined.ClearAll; - public const string Close = Material.Outlined.Close; - public const string CloseFullscreen = Material.Outlined.CloseFullscreen; - public const string ClosedCaption = Material.Outlined.ClosedCaption; - public const string ClosedCaptionDisabled = Material.Outlined.ClosedCaptionDisabled; - public const string ClosedCaptionOff = Material.Outlined.ClosedCaptionOff; - public const string Cloud = Material.Outlined.Cloud; - public const string CloudCircle = Material.Outlined.CloudCircle; - public const string CloudDone = Material.Outlined.CloudDone; - public const string CloudDownload = Material.Outlined.CloudDownload; - public const string CloudOff = Material.Outlined.CloudOff; - public const string CloudQueue = Material.Outlined.CloudQueue; - public const string CloudSync = Material.Outlined.CloudSync; - public const string CloudUpload = Material.Outlined.CloudUpload; - public const string Co2 = Material.Outlined.Co2; - public const string CoPresent = Material.Outlined.CoPresent; - public const string Code = Material.Outlined.Code; - public const string CodeOff = Material.Outlined.CodeOff; - public const string Coffee = Material.Outlined.Coffee; - public const string CoffeeMaker = Material.Outlined.CoffeeMaker; - public const string Collections = Material.Outlined.Collections; - public const string CollectionsBookmark = Material.Outlined.CollectionsBookmark; - public const string ColorLens = Material.Outlined.ColorLens; - public const string Colorize = Material.Outlined.Colorize; - public const string Comment = Material.Outlined.Comment; - public const string CommentBank = Material.Outlined.CommentBank; - public const string CommentsDisabled = Material.Outlined.CommentsDisabled; - public const string Commit = Material.Outlined.Commit; - public const string Commute = Material.Outlined.Commute; - public const string Compare = Material.Outlined.Compare; - public const string CompareArrows = Material.Outlined.CompareArrows; - public const string CompassCalibration = Material.Outlined.CompassCalibration; - public const string Compost = Material.Outlined.Compost; - public const string Compress = Material.Outlined.Compress; - public const string Computer = Material.Outlined.Computer; - public const string ConfirmationNumber = Material.Outlined.ConfirmationNumber; - public const string ConnectWithoutContact = Material.Outlined.ConnectWithoutContact; - public const string ConnectedTv = Material.Outlined.ConnectedTv; - public const string ConnectingAirports = Material.Outlined.ConnectingAirports; - public const string Construction = Material.Outlined.Construction; - public const string ContactMail = Material.Outlined.ContactMail; - public const string ContactPage = Material.Outlined.ContactPage; - public const string ContactPhone = Material.Outlined.ContactPhone; - public const string ContactSupport = Material.Outlined.ContactSupport; - public const string Contactless = Material.Outlined.Contactless; - public const string Contacts = Material.Outlined.Contacts; - public const string ContentCopy = Material.Outlined.ContentCopy; - public const string ContentCut = Material.Outlined.ContentCut; - public const string ContentPaste = Material.Outlined.ContentPaste; - public const string ContentPasteGo = Material.Outlined.ContentPasteGo; - public const string ContentPasteOff = Material.Outlined.ContentPasteOff; - public const string ContentPasteSearch = Material.Outlined.ContentPasteSearch; - public const string Contrast = Material.Outlined.Contrast; - public const string ControlCamera = Material.Outlined.ControlCamera; - public const string ControlPoint = Material.Outlined.ControlPoint; - public const string ControlPointDuplicate = Material.Outlined.ControlPointDuplicate; - public const string Cookie = Material.Outlined.Cookie; - public const string CopyAll = Material.Outlined.CopyAll; - public const string Copyright = Material.Outlined.Copyright; - public const string Coronavirus = Material.Outlined.Coronavirus; - public const string CorporateFare = Material.Outlined.CorporateFare; - public const string Cottage = Material.Outlined.Cottage; - public const string Countertops = Material.Outlined.Countertops; - public const string Create = Material.Outlined.Create; - public const string CreateNewFolder = Material.Outlined.CreateNewFolder; - public const string CreditCard = Material.Outlined.CreditCard; - public const string CreditCardOff = Material.Outlined.CreditCardOff; - public const string CreditScore = Material.Outlined.CreditScore; - public const string Crib = Material.Outlined.Crib; - public const string CrisisAlert = Material.Outlined.CrisisAlert; - public const string Crop = Material.Outlined.Crop; - public const string Crop169 = Material.Outlined.Crop169; - public const string Crop32 = Material.Outlined.Crop32; - public const string Crop54 = Material.Outlined.Crop54; - public const string Crop75 = Material.Outlined.Crop75; - public const string CropDin = Material.Outlined.CropDin; - public const string CropFree = Material.Outlined.CropFree; - public const string CropLandscape = Material.Outlined.CropLandscape; - public const string CropOriginal = Material.Outlined.CropOriginal; - public const string CropPortrait = Material.Outlined.CropPortrait; - public const string CropRotate = Material.Outlined.CropRotate; - public const string CropSquare = Material.Outlined.CropSquare; - public const string CrueltyFree = Material.Outlined.CrueltyFree; - public const string Css = Material.Outlined.Css; - public const string CurrencyBitcoin = Material.Outlined.CurrencyBitcoin; - public const string CurrencyExchange = Material.Outlined.CurrencyExchange; - public const string CurrencyFranc = Material.Outlined.CurrencyFranc; - public const string CurrencyLira = Material.Outlined.CurrencyLira; - public const string CurrencyPound = Material.Outlined.CurrencyPound; - public const string CurrencyRuble = Material.Outlined.CurrencyRuble; - public const string CurrencyRupee = Material.Outlined.CurrencyRupee; - public const string CurrencyYen = Material.Outlined.CurrencyYen; - public const string CurrencyYuan = Material.Outlined.CurrencyYuan; - public const string Cyclone = Material.Outlined.Cyclone; - public const string Dangerous = Material.Outlined.Dangerous; - public const string DarkMode = Material.Outlined.DarkMode; - public const string Dashboard = Material.Outlined.Dashboard; - public const string DashboardCustomize = Material.Outlined.DashboardCustomize; - public const string DataArray = Material.Outlined.DataArray; - public const string DataExploration = Material.Outlined.DataExploration; - public const string DataObject = Material.Outlined.DataObject; - public const string DataSaverOff = Material.Outlined.DataSaverOff; - public const string DataSaverOn = Material.Outlined.DataSaverOn; - public const string DataThresholding = Material.Outlined.DataThresholding; - public const string DataUsage = Material.Outlined.DataUsage; - public const string DateRange = Material.Outlined.DateRange; - public const string Deblur = Material.Outlined.Deblur; - public const string Deck = Material.Outlined.Deck; - public const string Dehaze = Material.Outlined.Dehaze; - public const string Delete = Material.Outlined.Delete; - public const string DeleteForever = Material.Outlined.DeleteForever; - public const string DeleteOutline = Material.Outlined.DeleteOutline; - public const string DeleteSweep = Material.Outlined.DeleteSweep; - public const string DeliveryDining = Material.Outlined.DeliveryDining; - public const string DensityLarge = Material.Outlined.DensityLarge; - public const string DensityMedium = Material.Outlined.DensityMedium; - public const string DensitySmall = Material.Outlined.DensitySmall; - public const string DepartureBoard = Material.Outlined.DepartureBoard; - public const string Description = Material.Outlined.Description; - public const string Deselect = Material.Outlined.Deselect; - public const string DesignServices = Material.Outlined.DesignServices; - public const string DesktopAccessDisabled = Material.Outlined.DesktopAccessDisabled; - public const string DesktopMac = Material.Outlined.DesktopMac; - public const string DesktopWindows = Material.Outlined.DesktopWindows; - public const string Details = Material.Outlined.Details; - public const string DeveloperBoard = Material.Outlined.DeveloperBoard; - public const string DeveloperBoardOff = Material.Outlined.DeveloperBoardOff; - public const string DeveloperMode = Material.Outlined.DeveloperMode; - public const string DeviceHub = Material.Outlined.DeviceHub; - public const string DeviceThermostat = Material.Outlined.DeviceThermostat; - public const string DeviceUnknown = Material.Outlined.DeviceUnknown; - public const string Devices = Material.Outlined.Devices; - public const string DevicesFold = Material.Outlined.DevicesFold; - public const string DevicesOther = Material.Outlined.DevicesOther; - public const string DialerSip = Material.Outlined.DialerSip; - public const string Dialpad = Material.Outlined.Dialpad; - public const string Diamond = Material.Outlined.Diamond; - public const string Difference = Material.Outlined.Difference; - public const string Dining = Material.Outlined.Dining; - public const string DinnerDining = Material.Outlined.DinnerDining; - public const string Directions = Material.Outlined.Directions; - public const string DirectionsBike = Material.Outlined.DirectionsBike; - public const string DirectionsBoat = Material.Outlined.DirectionsBoat; - public const string DirectionsBoatFilled = Material.Outlined.DirectionsBoatFilled; - public const string DirectionsBus = Material.Outlined.DirectionsBus; - public const string DirectionsBusFilled = Material.Outlined.DirectionsBusFilled; - public const string DirectionsCar = Material.Outlined.DirectionsCar; - public const string DirectionsCarFilled = Material.Outlined.DirectionsCarFilled; - public const string DirectionsOff = Material.Outlined.DirectionsOff; - public const string DirectionsRailway = Material.Outlined.DirectionsRailway; - public const string DirectionsRailwayFilled = Material.Outlined.DirectionsRailwayFilled; - public const string DirectionsRun = Material.Outlined.DirectionsRun; - public const string DirectionsSubway = Material.Outlined.DirectionsSubway; - public const string DirectionsSubwayFilled = Material.Outlined.DirectionsSubwayFilled; - public const string DirectionsTransit = Material.Outlined.DirectionsTransit; - public const string DirectionsTransitFilled = Material.Outlined.DirectionsTransitFilled; - public const string DirectionsWalk = Material.Outlined.DirectionsWalk; - public const string DirtyLens = Material.Outlined.DirtyLens; - public const string DisabledByDefault = Material.Outlined.DisabledByDefault; - public const string DisabledVisible = Material.Outlined.DisabledVisible; - public const string DiscFull = Material.Outlined.DiscFull; - public const string Discount = Material.Outlined.Discount; - public const string DisplaySettings = Material.Outlined.DisplaySettings; - public const string Dns = Material.Outlined.Dns; - public const string DoDisturb = Material.Outlined.DoDisturb; - public const string DoDisturbAlt = Material.Outlined.DoDisturbAlt; - public const string DoDisturbOff = Material.Outlined.DoDisturbOff; - public const string DoDisturbOn = Material.Outlined.DoDisturbOn; - public const string DoNotDisturb = Material.Outlined.DoNotDisturb; - public const string DoNotDisturbAlt = Material.Outlined.DoNotDisturbAlt; - public const string DoNotDisturbOff = Material.Outlined.DoNotDisturbOff; - public const string DoNotDisturbOn = Material.Outlined.DoNotDisturbOn; - public const string DoNotDisturbOnTotalSilence = Material.Outlined.DoNotDisturbOnTotalSilence; - public const string DoNotStep = Material.Outlined.DoNotStep; - public const string DoNotTouch = Material.Outlined.DoNotTouch; - public const string Dock = Material.Outlined.Dock; - public const string DocumentScanner = Material.Outlined.DocumentScanner; - public const string Domain = Material.Outlined.Domain; - public const string DomainAdd = Material.Outlined.DomainAdd; - public const string DomainDisabled = Material.Outlined.DomainDisabled; - public const string DomainVerification = Material.Outlined.DomainVerification; - public const string Done = Material.Outlined.Done; - public const string DoneAll = Material.Outlined.DoneAll; - public const string DoneOutline = Material.Outlined.DoneOutline; - public const string DonutLarge = Material.Outlined.DonutLarge; - public const string DonutSmall = Material.Outlined.DonutSmall; - public const string DoorBack = Material.Outlined.DoorBack; - public const string DoorFront = Material.Outlined.DoorFront; - public const string DoorSliding = Material.Outlined.DoorSliding; - public const string Doorbell = Material.Outlined.Doorbell; - public const string DoubleArrow = Material.Outlined.DoubleArrow; - public const string DownhillSkiing = Material.Outlined.DownhillSkiing; - public const string Download = Material.Outlined.Download; - public const string DownloadDone = Material.Outlined.DownloadDone; - public const string DownloadForOffline = Material.Outlined.DownloadForOffline; - public const string Downloading = Material.Outlined.Downloading; - public const string Drafts = Material.Outlined.Drafts; - public const string DragHandle = Material.Outlined.DragHandle; - public const string DragIndicator = Material.Outlined.DragIndicator; - public const string Draw = Material.Outlined.Draw; - public const string DriveEta = Material.Outlined.DriveEta; - public const string DriveFileMove = Material.Outlined.DriveFileMove; - public const string DriveFileMoveRtl = Material.Outlined.DriveFileMoveRtl; - public const string DriveFileRenameOutline = Material.Outlined.DriveFileRenameOutline; - public const string DriveFolderUpload = Material.Outlined.DriveFolderUpload; - public const string Dry = Material.Outlined.Dry; - public const string DryCleaning = Material.Outlined.DryCleaning; - public const string Duo = Material.Outlined.Duo; - public const string Dvr = Material.Outlined.Dvr; - public const string DynamicFeed = Material.Outlined.DynamicFeed; - public const string DynamicForm = Material.Outlined.DynamicForm; - public const string EMobiledata = Material.Outlined.EMobiledata; - public const string Earbuds = Material.Outlined.Earbuds; - public const string EarbudsBattery = Material.Outlined.EarbudsBattery; - public const string East = Material.Outlined.East; - public const string EdgesensorHigh = Material.Outlined.EdgesensorHigh; - public const string EdgesensorLow = Material.Outlined.EdgesensorLow; - public const string Edit = Material.Outlined.Edit; - public const string EditAttributes = Material.Outlined.EditAttributes; - public const string EditCalendar = Material.Outlined.EditCalendar; - public const string EditLocation = Material.Outlined.EditLocation; - public const string EditLocationAlt = Material.Outlined.EditLocationAlt; - public const string EditNote = Material.Outlined.EditNote; - public const string EditNotifications = Material.Outlined.EditNotifications; - public const string EditOff = Material.Outlined.EditOff; - public const string EditRoad = Material.Outlined.EditRoad; - public const string Egg = Material.Outlined.Egg; - public const string EggAlt = Material.Outlined.EggAlt; - public const string Eject = Material.Outlined.Eject; - public const string Elderly = Material.Outlined.Elderly; - public const string ElderlyWoman = Material.Outlined.ElderlyWoman; - public const string ElectricBike = Material.Outlined.ElectricBike; - public const string ElectricCar = Material.Outlined.ElectricCar; - public const string ElectricMoped = Material.Outlined.ElectricMoped; - public const string ElectricRickshaw = Material.Outlined.ElectricRickshaw; - public const string ElectricScooter = Material.Outlined.ElectricScooter; - public const string ElectricalServices = Material.Outlined.ElectricalServices; - public const string Elevator = Material.Outlined.Elevator; - public const string Email = Material.Outlined.Email; - public const string Emergency = Material.Outlined.Emergency; - public const string EmergencyRecording = Material.Outlined.EmergencyRecording; - public const string EmergencyShare = Material.Outlined.EmergencyShare; - public const string EmojiEmotions = Material.Outlined.EmojiEmotions; - public const string EmojiEvents = Material.Outlined.EmojiEvents; - public const string EmojiFoodBeverage = Material.Outlined.EmojiFoodBeverage; - public const string EmojiNature = Material.Outlined.EmojiNature; - public const string EmojiObjects = Material.Outlined.EmojiObjects; - public const string EmojiPeople = Material.Outlined.EmojiPeople; - public const string EmojiSymbols = Material.Outlined.EmojiSymbols; - public const string EmojiTransportation = Material.Outlined.EmojiTransportation; - public const string Engineering = Material.Outlined.Engineering; - public const string EnhancedEncryption = Material.Outlined.EnhancedEncryption; - public const string Equalizer = Material.Outlined.Equalizer; - public const string Error = Material.Outlined.Error; - public const string ErrorOutline = Material.Outlined.ErrorOutline; - public const string Escalator = Material.Outlined.Escalator; - public const string EscalatorWarning = Material.Outlined.EscalatorWarning; - public const string Euro = Material.Outlined.Euro; - public const string EuroSymbol = Material.Outlined.EuroSymbol; - public const string EvStation = Material.Outlined.EvStation; - public const string Event = Material.Outlined.Event; - public const string EventAvailable = Material.Outlined.EventAvailable; - public const string EventBusy = Material.Outlined.EventBusy; - public const string EventNote = Material.Outlined.EventNote; - public const string EventRepeat = Material.Outlined.EventRepeat; - public const string EventSeat = Material.Outlined.EventSeat; - public const string ExitToApp = Material.Outlined.ExitToApp; - public const string Expand = Material.Outlined.Expand; - public const string ExpandCircleDown = Material.Outlined.ExpandCircleDown; - public const string ExpandLess = Material.Outlined.ExpandLess; - public const string ExpandMore = Material.Outlined.ExpandMore; - public const string Explicit = Material.Outlined.Explicit; - public const string Explore = Material.Outlined.Explore; - public const string ExploreOff = Material.Outlined.ExploreOff; - public const string Exposure = Material.Outlined.Exposure; - public const string ExposureNeg1 = Material.Outlined.ExposureNeg1; - public const string ExposureNeg2 = Material.Outlined.ExposureNeg2; - public const string ExposurePlus1 = Material.Outlined.ExposurePlus1; - public const string ExposurePlus2 = Material.Outlined.ExposurePlus2; - public const string ExposureZero = Material.Outlined.ExposureZero; - public const string Extension = Material.Outlined.Extension; - public const string ExtensionOff = Material.Outlined.ExtensionOff; - public const string Face = Material.Outlined.Face; - public const string FaceRetouchingNatural = Material.Outlined.FaceRetouchingNatural; - public const string FaceRetouchingOff = Material.Outlined.FaceRetouchingOff; - public const string FactCheck = Material.Outlined.FactCheck; - public const string Factory = Material.Outlined.Factory; - public const string FamilyRestroom = Material.Outlined.FamilyRestroom; - public const string FastForward = Material.Outlined.FastForward; - public const string FastRewind = Material.Outlined.FastRewind; - public const string Fastfood = Material.Outlined.Fastfood; - public const string Favorite = Material.Outlined.Favorite; - public const string FavoriteBorder = Material.Outlined.FavoriteBorder; - public const string Fax = Material.Outlined.Fax; - public const string FeaturedPlayList = Material.Outlined.FeaturedPlayList; - public const string FeaturedVideo = Material.Outlined.FeaturedVideo; - public const string Feed = Material.Outlined.Feed; - public const string Feedback = Material.Outlined.Feedback; - public const string Female = Material.Outlined.Female; - public const string Fence = Material.Outlined.Fence; - public const string Festival = Material.Outlined.Festival; - public const string FiberDvr = Material.Outlined.FiberDvr; - public const string FiberManualRecord = Material.Outlined.FiberManualRecord; - public const string FiberNew = Material.Outlined.FiberNew; - public const string FiberPin = Material.Outlined.FiberPin; - public const string FiberSmartRecord = Material.Outlined.FiberSmartRecord; - public const string FileCopy = Material.Outlined.FileCopy; - public const string FileDownload = Material.Outlined.FileDownload; - public const string FileDownloadDone = Material.Outlined.FileDownloadDone; - public const string FileDownloadOff = Material.Outlined.FileDownloadOff; - public const string FileOpen = Material.Outlined.FileOpen; - public const string FilePresent = Material.Outlined.FilePresent; - public const string FileUpload = Material.Outlined.FileUpload; - public const string Filter = Material.Outlined.Filter; - public const string Filter1 = Material.Outlined.Filter1; - public const string Filter2 = Material.Outlined.Filter2; - public const string Filter3 = Material.Outlined.Filter3; - public const string Filter4 = Material.Outlined.Filter4; - public const string Filter5 = Material.Outlined.Filter5; - public const string Filter6 = Material.Outlined.Filter6; - public const string Filter7 = Material.Outlined.Filter7; - public const string Filter8 = Material.Outlined.Filter8; - public const string Filter9 = Material.Outlined.Filter9; - public const string Filter9Plus = Material.Outlined.Filter9Plus; - public const string FilterAlt = Material.Outlined.FilterAlt; - public const string FilterAltOff = Material.Outlined.FilterAltOff; - public const string FilterBAndW = Material.Outlined.FilterBAndW; - public const string FilterCenterFocus = Material.Outlined.FilterCenterFocus; - public const string FilterDrama = Material.Outlined.FilterDrama; - public const string FilterFrames = Material.Outlined.FilterFrames; - public const string FilterHdr = Material.Outlined.FilterHdr; - public const string FilterList = Material.Outlined.FilterList; - public const string FilterListOff = Material.Outlined.FilterListOff; - public const string FilterNone = Material.Outlined.FilterNone; - public const string FilterTiltShift = Material.Outlined.FilterTiltShift; - public const string FilterVintage = Material.Outlined.FilterVintage; - public const string FindInPage = Material.Outlined.FindInPage; - public const string FindReplace = Material.Outlined.FindReplace; - public const string Fingerprint = Material.Outlined.Fingerprint; - public const string FireExtinguisher = Material.Outlined.FireExtinguisher; - public const string Fireplace = Material.Outlined.Fireplace; - public const string FirstPage = Material.Outlined.FirstPage; - public const string FitScreen = Material.Outlined.FitScreen; - public const string Fitbit = Material.Outlined.Fitbit; - public const string FitnessCenter = Material.Outlined.FitnessCenter; - public const string Flag = Material.Outlined.Flag; - public const string FlagCircle = Material.Outlined.FlagCircle; - public const string Flaky = Material.Outlined.Flaky; - public const string Flare = Material.Outlined.Flare; - public const string FlashAuto = Material.Outlined.FlashAuto; - public const string FlashOff = Material.Outlined.FlashOff; - public const string FlashOn = Material.Outlined.FlashOn; - public const string FlashlightOff = Material.Outlined.FlashlightOff; - public const string FlashlightOn = Material.Outlined.FlashlightOn; - public const string Flatware = Material.Outlined.Flatware; - public const string Flight = Material.Outlined.Flight; - public const string FlightClass = Material.Outlined.FlightClass; - public const string FlightLand = Material.Outlined.FlightLand; - public const string FlightTakeoff = Material.Outlined.FlightTakeoff; - public const string Flip = Material.Outlined.Flip; - public const string FlipCameraAndroid = Material.Outlined.FlipCameraAndroid; - public const string FlipCameraIos = Material.Outlined.FlipCameraIos; - public const string FlipToBack = Material.Outlined.FlipToBack; - public const string FlipToFront = Material.Outlined.FlipToFront; - public const string Flood = Material.Outlined.Flood; - public const string Flourescent = Material.Outlined.Flourescent; - public const string FlutterDash = Material.Outlined.FlutterDash; - public const string FmdBad = Material.Outlined.FmdBad; - public const string FmdGood = Material.Outlined.FmdGood; - public const string Folder = Material.Outlined.Folder; - public const string FolderCopy = Material.Outlined.FolderCopy; - public const string FolderDelete = Material.Outlined.FolderDelete; - public const string FolderOff = Material.Outlined.FolderOff; - public const string FolderOpen = Material.Outlined.FolderOpen; - public const string FolderShared = Material.Outlined.FolderShared; - public const string FolderSpecial = Material.Outlined.FolderSpecial; - public const string FolderZip = Material.Outlined.FolderZip; - public const string FollowTheSigns = Material.Outlined.FollowTheSigns; - public const string FontDownload = Material.Outlined.FontDownload; - public const string FontDownloadOff = Material.Outlined.FontDownloadOff; - public const string FoodBank = Material.Outlined.FoodBank; - public const string Forest = Material.Outlined.Forest; - public const string ForkLeft = Material.Outlined.ForkLeft; - public const string ForkRight = Material.Outlined.ForkRight; - public const string FormatAlignCenter = Material.Outlined.FormatAlignCenter; - public const string FormatAlignJustify = Material.Outlined.FormatAlignJustify; - public const string FormatAlignLeft = Material.Outlined.FormatAlignLeft; - public const string FormatAlignRight = Material.Outlined.FormatAlignRight; - public const string FormatBold = Material.Outlined.FormatBold; - public const string FormatClear = Material.Outlined.FormatClear; - public const string FormatColorFill = Material.Outlined.FormatColorFill; - public const string FormatColorReset = Material.Outlined.FormatColorReset; - public const string FormatColorText = Material.Outlined.FormatColorText; - public const string FormatIndentDecrease = Material.Outlined.FormatIndentDecrease; - public const string FormatIndentIncrease = Material.Outlined.FormatIndentIncrease; - public const string FormatItalic = Material.Outlined.FormatItalic; - public const string FormatLineSpacing = Material.Outlined.FormatLineSpacing; - public const string FormatListBulleted = Material.Outlined.FormatListBulleted; - public const string FormatListNumbered = Material.Outlined.FormatListNumbered; - public const string FormatListNumberedRtl = Material.Outlined.FormatListNumberedRtl; - public const string FormatOverline = Material.Outlined.FormatOverline; - public const string FormatPaint = Material.Outlined.FormatPaint; - public const string FormatQuote = Material.Outlined.FormatQuote; - public const string FormatShapes = Material.Outlined.FormatShapes; - public const string FormatSize = Material.Outlined.FormatSize; - public const string FormatStrikethrough = Material.Outlined.FormatStrikethrough; - public const string FormatTextdirectionLToR = Material.Outlined.FormatTextdirectionLToR; - public const string FormatTextdirectionRToL = Material.Outlined.FormatTextdirectionRToL; - public const string FormatUnderlined = Material.Outlined.FormatUnderlined; - public const string Fort = Material.Outlined.Fort; - public const string Forum = Material.Outlined.Forum; - public const string Forward = Material.Outlined.Forward; - public const string Forward10 = Material.Outlined.Forward10; - public const string Forward30 = Material.Outlined.Forward30; - public const string Forward5 = Material.Outlined.Forward5; - public const string ForwardToInbox = Material.Outlined.ForwardToInbox; - public const string Foundation = Material.Outlined.Foundation; - public const string FreeBreakfast = Material.Outlined.FreeBreakfast; - public const string FreeCancellation = Material.Outlined.FreeCancellation; - public const string FrontHand = Material.Outlined.FrontHand; - public const string Fullscreen = Material.Outlined.Fullscreen; - public const string FullscreenExit = Material.Outlined.FullscreenExit; - public const string Functions = Material.Outlined.Functions; - public const string GMobiledata = Material.Outlined.GMobiledata; - public const string GTranslate = Material.Outlined.GTranslate; - public const string Gamepad = Material.Outlined.Gamepad; - public const string Games = Material.Outlined.Games; - public const string Garage = Material.Outlined.Garage; - public const string Gavel = Material.Outlined.Gavel; - public const string GeneratingTokens = Material.Outlined.GeneratingTokens; - public const string Gesture = Material.Outlined.Gesture; - public const string GetApp = Material.Outlined.GetApp; - public const string Gif = Material.Outlined.Gif; - public const string GifBox = Material.Outlined.GifBox; - public const string Girl = Material.Outlined.Girl; - public const string Gite = Material.Outlined.Gite; - public const string GolfCourse = Material.Outlined.GolfCourse; - public const string GppBad = Material.Outlined.GppBad; - public const string GppGood = Material.Outlined.GppGood; - public const string GppMaybe = Material.Outlined.GppMaybe; - public const string GpsFixed = Material.Outlined.GpsFixed; - public const string GpsNotFixed = Material.Outlined.GpsNotFixed; - public const string GpsOff = Material.Outlined.GpsOff; - public const string Grade = Material.Outlined.Grade; - public const string Gradient = Material.Outlined.Gradient; - public const string Grading = Material.Outlined.Grading; - public const string Grain = Material.Outlined.Grain; - public const string GraphicEq = Material.Outlined.GraphicEq; - public const string Grass = Material.Outlined.Grass; - public const string Grid3x3 = Material.Outlined.Grid3x3; - public const string Grid4x4 = Material.Outlined.Grid4x4; - public const string GridGoldenratio = Material.Outlined.GridGoldenratio; - public const string GridOff = Material.Outlined.GridOff; - public const string GridOn = Material.Outlined.GridOn; - public const string GridView = Material.Outlined.GridView; - public const string Group = Material.Outlined.Group; - public const string GroupAdd = Material.Outlined.GroupAdd; - public const string GroupOff = Material.Outlined.GroupOff; - public const string GroupRemove = Material.Outlined.GroupRemove; - public const string GroupWork = Material.Outlined.GroupWork; - public const string Groups = Material.Outlined.Groups; - public const string HMobiledata = Material.Outlined.HMobiledata; - public const string HPlusMobiledata = Material.Outlined.HPlusMobiledata; - public const string Hail = Material.Outlined.Hail; - public const string Handshake = Material.Outlined.Handshake; - public const string Handyman = Material.Outlined.Handyman; - public const string Hardware = Material.Outlined.Hardware; - public const string Hd = Material.Outlined.Hd; - public const string HdrAuto = Material.Outlined.HdrAuto; - public const string HdrAutoSelect = Material.Outlined.HdrAutoSelect; - public const string HdrEnhancedSelect = Material.Outlined.HdrEnhancedSelect; - public const string HdrOff = Material.Outlined.HdrOff; - public const string HdrOffSelect = Material.Outlined.HdrOffSelect; - public const string HdrOn = Material.Outlined.HdrOn; - public const string HdrOnSelect = Material.Outlined.HdrOnSelect; - public const string HdrPlus = Material.Outlined.HdrPlus; - public const string HdrStrong = Material.Outlined.HdrStrong; - public const string HdrWeak = Material.Outlined.HdrWeak; - public const string Headphones = Material.Outlined.Headphones; - public const string HeadphonesBattery = Material.Outlined.HeadphonesBattery; - public const string Headset = Material.Outlined.Headset; - public const string HeadsetMic = Material.Outlined.HeadsetMic; - public const string HeadsetOff = Material.Outlined.HeadsetOff; - public const string Healing = Material.Outlined.Healing; - public const string HealthAndSafety = Material.Outlined.HealthAndSafety; - public const string Hearing = Material.Outlined.Hearing; - public const string HearingDisabled = Material.Outlined.HearingDisabled; - public const string HeartBroken = Material.Outlined.HeartBroken; - public const string Height = Material.Outlined.Height; - public const string Help = Material.Outlined.Help; - public const string HelpCenter = Material.Outlined.HelpCenter; - public const string HelpOutline = Material.Outlined.HelpOutline; - public const string Hevc = Material.Outlined.Hevc; - public const string Hexagon = Material.Outlined.Hexagon; - public const string HideImage = Material.Outlined.HideImage; - public const string HideSource = Material.Outlined.HideSource; - public const string HighQuality = Material.Outlined.HighQuality; - public const string Highlight = Material.Outlined.Highlight; - public const string HighlightAlt = Material.Outlined.HighlightAlt; - public const string HighlightOff = Material.Outlined.HighlightOff; - public const string Hiking = Material.Outlined.Hiking; - public const string History = Material.Outlined.History; - public const string HistoryEdu = Material.Outlined.HistoryEdu; - public const string HistoryToggleOff = Material.Outlined.HistoryToggleOff; - public const string Hive = Material.Outlined.Hive; - public const string Hls = Material.Outlined.Hls; - public const string HlsOff = Material.Outlined.HlsOff; - public const string HolidayVillage = Material.Outlined.HolidayVillage; - public const string Home = Material.Outlined.Home; - public const string HomeMax = Material.Outlined.HomeMax; - public const string HomeMini = Material.Outlined.HomeMini; - public const string HomeRepairService = Material.Outlined.HomeRepairService; - public const string HomeWork = Material.Outlined.HomeWork; - public const string HorizontalDistribute = Material.Outlined.HorizontalDistribute; - public const string HorizontalRule = Material.Outlined.HorizontalRule; - public const string HorizontalSplit = Material.Outlined.HorizontalSplit; - public const string HotTub = Material.Outlined.HotTub; - public const string Hotel = Material.Outlined.Hotel; - public const string HotelClass = Material.Outlined.HotelClass; - public const string HourglassBottom = Material.Outlined.HourglassBottom; - public const string HourglassDisabled = Material.Outlined.HourglassDisabled; - public const string HourglassEmpty = Material.Outlined.HourglassEmpty; - public const string HourglassFull = Material.Outlined.HourglassFull; - public const string HourglassTop = Material.Outlined.HourglassTop; - public const string House = Material.Outlined.House; - public const string HouseSiding = Material.Outlined.HouseSiding; - public const string Houseboat = Material.Outlined.Houseboat; - public const string HowToReg = Material.Outlined.HowToReg; - public const string HowToVote = Material.Outlined.HowToVote; - public const string Html = Material.Outlined.Html; - public const string Http = Material.Outlined.Http; - public const string Https = Material.Outlined.Https; - public const string Hub = Material.Outlined.Hub; - public const string Hvac = Material.Outlined.Hvac; - public const string IceSkating = Material.Outlined.IceSkating; - public const string Icecream = Material.Outlined.Icecream; - public const string Image = Material.Outlined.Image; - public const string ImageAspectRatio = Material.Outlined.ImageAspectRatio; - public const string ImageNotSupported = Material.Outlined.ImageNotSupported; - public const string ImageSearch = Material.Outlined.ImageSearch; - public const string ImagesearchRoller = Material.Outlined.ImagesearchRoller; - public const string ImportContacts = Material.Outlined.ImportContacts; - public const string ImportExport = Material.Outlined.ImportExport; - public const string ImportantDevices = Material.Outlined.ImportantDevices; - public const string Inbox = Material.Outlined.Inbox; - public const string IncompleteCircle = Material.Outlined.IncompleteCircle; - public const string IndeterminateCheckBox = Material.Outlined.IndeterminateCheckBox; - public const string Info = Material.Outlined.Info; - public const string Input = Material.Outlined.Input; - public const string InsertChart = Material.Outlined.InsertChart; - public const string InsertChartOutlined = Material.Outlined.InsertChartOutlined; - public const string InsertComment = Material.Outlined.InsertComment; - public const string InsertDriveFile = Material.Outlined.InsertDriveFile; - public const string InsertEmoticon = Material.Outlined.InsertEmoticon; - public const string InsertInvitation = Material.Outlined.InsertInvitation; - public const string InsertLink = Material.Outlined.InsertLink; - public const string InsertPageBreak = Material.Outlined.InsertPageBreak; - public const string InsertPhoto = Material.Outlined.InsertPhoto; - public const string Insights = Material.Outlined.Insights; - public const string InstallDesktop = Material.Outlined.InstallDesktop; - public const string InstallMobile = Material.Outlined.InstallMobile; - public const string IntegrationInstructions = Material.Outlined.IntegrationInstructions; - public const string Interests = Material.Outlined.Interests; - public const string InterpreterMode = Material.Outlined.InterpreterMode; - public const string Inventory = Material.Outlined.Inventory; - public const string Inventory2 = Material.Outlined.Inventory2; - public const string InvertColors = Material.Outlined.InvertColors; - public const string InvertColorsOff = Material.Outlined.InvertColorsOff; - public const string IosShare = Material.Outlined.IosShare; - public const string Iron = Material.Outlined.Iron; - public const string Iso = Material.Outlined.Iso; - public const string Javascript = Material.Outlined.Javascript; - public const string JoinFull = Material.Outlined.JoinFull; - public const string JoinInner = Material.Outlined.JoinInner; - public const string JoinLeft = Material.Outlined.JoinLeft; - public const string JoinRight = Material.Outlined.JoinRight; - public const string Kayaking = Material.Outlined.Kayaking; - public const string KebabDining = Material.Outlined.KebabDining; - public const string Key = Material.Outlined.Key; - public const string KeyOff = Material.Outlined.KeyOff; - public const string Keyboard = Material.Outlined.Keyboard; - public const string KeyboardAlt = Material.Outlined.KeyboardAlt; - public const string KeyboardArrowDown = Material.Outlined.KeyboardArrowDown; - public const string KeyboardArrowLeft = Material.Outlined.KeyboardArrowLeft; - public const string KeyboardArrowRight = Material.Outlined.KeyboardArrowRight; - public const string KeyboardArrowUp = Material.Outlined.KeyboardArrowUp; - public const string KeyboardBackspace = Material.Outlined.KeyboardBackspace; - public const string KeyboardCapslock = Material.Outlined.KeyboardCapslock; - public const string KeyboardCommandKey = Material.Outlined.KeyboardCommandKey; - public const string KeyboardControlKey = Material.Outlined.KeyboardControlKey; - public const string KeyboardDoubleArrowDown = Material.Outlined.KeyboardDoubleArrowDown; - public const string KeyboardDoubleArrowLeft = Material.Outlined.KeyboardDoubleArrowLeft; - public const string KeyboardDoubleArrowRight = Material.Outlined.KeyboardDoubleArrowRight; - public const string KeyboardDoubleArrowUp = Material.Outlined.KeyboardDoubleArrowUp; - public const string KeyboardHide = Material.Outlined.KeyboardHide; - public const string KeyboardOptionKey = Material.Outlined.KeyboardOptionKey; - public const string KeyboardReturn = Material.Outlined.KeyboardReturn; - public const string KeyboardTab = Material.Outlined.KeyboardTab; - public const string KeyboardVoice = Material.Outlined.KeyboardVoice; - public const string KingBed = Material.Outlined.KingBed; - public const string Kitchen = Material.Outlined.Kitchen; - public const string Kitesurfing = Material.Outlined.Kitesurfing; - public const string Label = Material.Outlined.Label; - public const string LabelImportant = Material.Outlined.LabelImportant; - public const string LabelOff = Material.Outlined.LabelOff; - public const string Lan = Material.Outlined.Lan; - public const string Landscape = Material.Outlined.Landscape; - public const string Landslide = Material.Outlined.Landslide; - public const string Language = Material.Outlined.Language; - public const string Laptop = Material.Outlined.Laptop; - public const string LaptopChromebook = Material.Outlined.LaptopChromebook; - public const string LaptopMac = Material.Outlined.LaptopMac; - public const string LaptopWindows = Material.Outlined.LaptopWindows; - public const string LastPage = Material.Outlined.LastPage; - public const string Launch = Material.Outlined.Launch; - public const string Layers = Material.Outlined.Layers; - public const string LayersClear = Material.Outlined.LayersClear; - public const string Leaderboard = Material.Outlined.Leaderboard; - public const string LeakAdd = Material.Outlined.LeakAdd; - public const string LeakRemove = Material.Outlined.LeakRemove; - public const string LegendToggle = Material.Outlined.LegendToggle; - public const string Lens = Material.Outlined.Lens; - public const string LensBlur = Material.Outlined.LensBlur; - public const string LibraryAdd = Material.Outlined.LibraryAdd; - public const string LibraryAddCheck = Material.Outlined.LibraryAddCheck; - public const string LibraryBooks = Material.Outlined.LibraryBooks; - public const string LibraryMusic = Material.Outlined.LibraryMusic; - public const string Light = Material.Outlined.Light; - public const string LightMode = Material.Outlined.LightMode; - public const string Lightbulb = Material.Outlined.Lightbulb; - public const string LightbulbCircle = Material.Outlined.LightbulbCircle; - public const string LineAxis = Material.Outlined.LineAxis; - public const string LineStyle = Material.Outlined.LineStyle; - public const string LineWeight = Material.Outlined.LineWeight; - public const string LinearScale = Material.Outlined.LinearScale; - public const string Link = Material.Outlined.Link; - public const string LinkOff = Material.Outlined.LinkOff; - public const string LinkedCamera = Material.Outlined.LinkedCamera; - public const string Liquor = Material.Outlined.Liquor; - public const string List = Material.Outlined.List; - public const string ListAlt = Material.Outlined.ListAlt; - public const string LiveHelp = Material.Outlined.LiveHelp; - public const string LiveTv = Material.Outlined.LiveTv; - public const string Living = Material.Outlined.Living; - public const string LocalActivity = Material.Outlined.LocalActivity; - public const string LocalAirport = Material.Outlined.LocalAirport; - public const string LocalAtm = Material.Outlined.LocalAtm; - public const string LocalBar = Material.Outlined.LocalBar; - public const string LocalCafe = Material.Outlined.LocalCafe; - public const string LocalCarWash = Material.Outlined.LocalCarWash; - public const string LocalConvenienceStore = Material.Outlined.LocalConvenienceStore; - public const string LocalDining = Material.Outlined.LocalDining; - public const string LocalDrink = Material.Outlined.LocalDrink; - public const string LocalFireDepartment = Material.Outlined.LocalFireDepartment; - public const string LocalFlorist = Material.Outlined.LocalFlorist; - public const string LocalGasStation = Material.Outlined.LocalGasStation; - public const string LocalGroceryStore = Material.Outlined.LocalGroceryStore; - public const string LocalHospital = Material.Outlined.LocalHospital; - public const string LocalHotel = Material.Outlined.LocalHotel; - public const string LocalLaundryService = Material.Outlined.LocalLaundryService; - public const string LocalLibrary = Material.Outlined.LocalLibrary; - public const string LocalMall = Material.Outlined.LocalMall; - public const string LocalMovies = Material.Outlined.LocalMovies; - public const string LocalOffer = Material.Outlined.LocalOffer; - public const string LocalParking = Material.Outlined.LocalParking; - public const string LocalPharmacy = Material.Outlined.LocalPharmacy; - public const string LocalPhone = Material.Outlined.LocalPhone; - public const string LocalPizza = Material.Outlined.LocalPizza; - public const string LocalPlay = Material.Outlined.LocalPlay; - public const string LocalPolice = Material.Outlined.LocalPolice; - public const string LocalPostOffice = Material.Outlined.LocalPostOffice; - public const string LocalPrintshop = Material.Outlined.LocalPrintshop; - public const string LocalSee = Material.Outlined.LocalSee; - public const string LocalShipping = Material.Outlined.LocalShipping; - public const string LocalTaxi = Material.Outlined.LocalTaxi; - public const string LocationCity = Material.Outlined.LocationCity; - public const string LocationDisabled = Material.Outlined.LocationDisabled; - public const string LocationOff = Material.Outlined.LocationOff; - public const string LocationOn = Material.Outlined.LocationOn; - public const string LocationSearching = Material.Outlined.LocationSearching; - public const string Lock = Material.Outlined.Lock; - public const string LockClock = Material.Outlined.LockClock; - public const string LockOpen = Material.Outlined.LockOpen; - public const string LockReset = Material.Outlined.LockReset; - public const string Login = Material.Outlined.Login; - public const string LogoDev = Material.Outlined.LogoDev; - public const string Logout = Material.Outlined.Logout; - public const string Looks = Material.Outlined.Looks; - public const string Looks3 = Material.Outlined.Looks3; - public const string Looks4 = Material.Outlined.Looks4; - public const string Looks5 = Material.Outlined.Looks5; - public const string Looks6 = Material.Outlined.Looks6; - public const string LooksOne = Material.Outlined.LooksOne; - public const string LooksTwo = Material.Outlined.LooksTwo; - public const string Loop = Material.Outlined.Loop; - public const string Loupe = Material.Outlined.Loupe; - public const string LowPriority = Material.Outlined.LowPriority; - public const string Loyalty = Material.Outlined.Loyalty; - public const string LteMobiledata = Material.Outlined.LteMobiledata; - public const string LtePlusMobiledata = Material.Outlined.LtePlusMobiledata; - public const string Luggage = Material.Outlined.Luggage; - public const string LunchDining = Material.Outlined.LunchDining; - public const string Mail = Material.Outlined.Mail; - public const string MailOutline = Material.Outlined.MailOutline; - public const string Male = Material.Outlined.Male; - public const string Man = Material.Outlined.Man; - public const string ManageAccounts = Material.Outlined.ManageAccounts; - public const string ManageHistory = Material.Outlined.ManageHistory; - public const string ManageSearch = Material.Outlined.ManageSearch; - public const string Map = Material.Outlined.Map; - public const string MapsHomeWork = Material.Outlined.MapsHomeWork; - public const string MapsUgc = Material.Outlined.MapsUgc; - public const string Margin = Material.Outlined.Margin; - public const string MarkAsUnread = Material.Outlined.MarkAsUnread; - public const string MarkChatRead = Material.Outlined.MarkChatRead; - public const string MarkChatUnread = Material.Outlined.MarkChatUnread; - public const string MarkEmailRead = Material.Outlined.MarkEmailRead; - public const string MarkEmailUnread = Material.Outlined.MarkEmailUnread; - public const string MarkUnreadChatAlt = Material.Outlined.MarkUnreadChatAlt; - public const string Markunread = Material.Outlined.Markunread; - public const string MarkunreadMailbox = Material.Outlined.MarkunreadMailbox; - public const string Masks = Material.Outlined.Masks; - public const string Maximize = Material.Outlined.Maximize; - public const string MediaBluetoothOff = Material.Outlined.MediaBluetoothOff; - public const string MediaBluetoothOn = Material.Outlined.MediaBluetoothOn; - public const string Mediation = Material.Outlined.Mediation; - public const string MedicalInformation = Material.Outlined.MedicalInformation; - public const string MedicalServices = Material.Outlined.MedicalServices; - public const string Medication = Material.Outlined.Medication; - public const string MedicationLiquid = Material.Outlined.MedicationLiquid; - public const string MeetingRoom = Material.Outlined.MeetingRoom; - public const string Memory = Material.Outlined.Memory; - public const string Menu = Material.Outlined.Menu; - public const string MenuBook = Material.Outlined.MenuBook; - public const string MenuOpen = Material.Outlined.MenuOpen; - public const string Merge = Material.Outlined.Merge; - public const string MergeType = Material.Outlined.MergeType; - public const string Message = Material.Outlined.Message; - public const string Mic = Material.Outlined.Mic; - public const string MicExternalOff = Material.Outlined.MicExternalOff; - public const string MicExternalOn = Material.Outlined.MicExternalOn; - public const string MicNone = Material.Outlined.MicNone; - public const string MicOff = Material.Outlined.MicOff; - public const string Microwave = Material.Outlined.Microwave; - public const string MilitaryTech = Material.Outlined.MilitaryTech; - public const string Minimize = Material.Outlined.Minimize; - public const string MinorCrash = Material.Outlined.MinorCrash; - public const string MiscellaneousServices = Material.Outlined.MiscellaneousServices; - public const string MissedVideoCall = Material.Outlined.MissedVideoCall; - public const string Mms = Material.Outlined.Mms; - public const string MobileFriendly = Material.Outlined.MobileFriendly; - public const string MobileOff = Material.Outlined.MobileOff; - public const string MobileScreenShare = Material.Outlined.MobileScreenShare; - public const string MobiledataOff = Material.Outlined.MobiledataOff; - public const string Mode = Material.Outlined.Mode; - public const string ModeComment = Material.Outlined.ModeComment; - public const string ModeEdit = Material.Outlined.ModeEdit; - public const string ModeEditOutline = Material.Outlined.ModeEditOutline; - public const string ModeNight = Material.Outlined.ModeNight; - public const string ModeOfTravel = Material.Outlined.ModeOfTravel; - public const string ModeStandby = Material.Outlined.ModeStandby; - public const string ModelTraining = Material.Outlined.ModelTraining; - public const string MonetizationOn = Material.Outlined.MonetizationOn; - public const string Money = Material.Outlined.Money; - public const string MoneyOff = Material.Outlined.MoneyOff; - public const string MoneyOffCsred = Material.Outlined.MoneyOffCsred; - public const string Monitor = Material.Outlined.Monitor; - public const string MonitorHeart = Material.Outlined.MonitorHeart; - public const string MonitorWeight = Material.Outlined.MonitorWeight; - public const string MonochromePhotos = Material.Outlined.MonochromePhotos; - public const string Mood = Material.Outlined.Mood; - public const string MoodBad = Material.Outlined.MoodBad; - public const string Moped = Material.Outlined.Moped; - public const string More = Material.Outlined.More; - public const string MoreHoriz = Material.Outlined.MoreHoriz; - public const string MoreTime = Material.Outlined.MoreTime; - public const string MoreVert = Material.Outlined.MoreVert; - public const string Mosque = Material.Outlined.Mosque; - public const string MotionPhotosAuto = Material.Outlined.MotionPhotosAuto; - public const string MotionPhotosOff = Material.Outlined.MotionPhotosOff; - public const string MotionPhotosOn = Material.Outlined.MotionPhotosOn; - public const string MotionPhotosPause = Material.Outlined.MotionPhotosPause; - public const string MotionPhotosPaused = Material.Outlined.MotionPhotosPaused; - public const string Mouse = Material.Outlined.Mouse; - public const string MoveDown = Material.Outlined.MoveDown; - public const string MoveToInbox = Material.Outlined.MoveToInbox; - public const string MoveUp = Material.Outlined.MoveUp; - public const string Movie = Material.Outlined.Movie; - public const string MovieCreation = Material.Outlined.MovieCreation; - public const string MovieFilter = Material.Outlined.MovieFilter; - public const string Moving = Material.Outlined.Moving; - public const string Mp = Material.Outlined.Mp; - public const string MultilineChart = Material.Outlined.MultilineChart; - public const string MultipleStop = Material.Outlined.MultipleStop; - public const string Museum = Material.Outlined.Museum; - public const string MusicNote = Material.Outlined.MusicNote; - public const string MusicOff = Material.Outlined.MusicOff; - public const string MusicVideo = Material.Outlined.MusicVideo; - public const string MyLocation = Material.Outlined.MyLocation; - public const string Nat = Material.Outlined.Nat; - public const string Nature = Material.Outlined.Nature; - public const string NaturePeople = Material.Outlined.NaturePeople; - public const string NavigateBefore = Material.Outlined.NavigateBefore; - public const string NavigateNext = Material.Outlined.NavigateNext; - public const string Navigation = Material.Outlined.Navigation; - public const string NearMe = Material.Outlined.NearMe; - public const string NearMeDisabled = Material.Outlined.NearMeDisabled; - public const string NearbyError = Material.Outlined.NearbyError; - public const string NearbyOff = Material.Outlined.NearbyOff; - public const string NetworkCell = Material.Outlined.NetworkCell; - public const string NetworkCheck = Material.Outlined.NetworkCheck; - public const string NetworkLocked = Material.Outlined.NetworkLocked; - public const string NetworkPing = Material.Outlined.NetworkPing; - public const string NetworkWifi = Material.Outlined.NetworkWifi; - public const string NetworkWifi1Bar = Material.Outlined.NetworkWifi1Bar; - public const string NetworkWifi2Bar = Material.Outlined.NetworkWifi2Bar; - public const string NetworkWifi3Bar = Material.Outlined.NetworkWifi3Bar; - public const string NewLabel = Material.Outlined.NewLabel; - public const string NewReleases = Material.Outlined.NewReleases; - public const string Newspaper = Material.Outlined.Newspaper; - public const string NextPlan = Material.Outlined.NextPlan; - public const string NextWeek = Material.Outlined.NextWeek; - public const string Nfc = Material.Outlined.Nfc; - public const string NightShelter = Material.Outlined.NightShelter; - public const string Nightlife = Material.Outlined.Nightlife; - public const string Nightlight = Material.Outlined.Nightlight; - public const string NightlightRound = Material.Outlined.NightlightRound; - public const string NightsStay = Material.Outlined.NightsStay; - public const string NoAccounts = Material.Outlined.NoAccounts; - public const string NoBackpack = Material.Outlined.NoBackpack; - public const string NoCell = Material.Outlined.NoCell; - public const string NoCrash = Material.Outlined.NoCrash; - public const string NoDrinks = Material.Outlined.NoDrinks; - public const string NoEncryption = Material.Outlined.NoEncryption; - public const string NoEncryptionGmailerrorred = Material.Outlined.NoEncryptionGmailerrorred; - public const string NoFlash = Material.Outlined.NoFlash; - public const string NoFood = Material.Outlined.NoFood; - public const string NoLuggage = Material.Outlined.NoLuggage; - public const string NoMeals = Material.Outlined.NoMeals; - public const string NoMeetingRoom = Material.Outlined.NoMeetingRoom; - public const string NoPhotography = Material.Outlined.NoPhotography; - public const string NoSim = Material.Outlined.NoSim; - public const string NoStroller = Material.Outlined.NoStroller; - public const string NoTransfer = Material.Outlined.NoTransfer; - public const string NoiseAware = Material.Outlined.NoiseAware; - public const string NoiseControlOff = Material.Outlined.NoiseControlOff; - public const string NordicWalking = Material.Outlined.NordicWalking; - public const string North = Material.Outlined.North; - public const string NorthEast = Material.Outlined.NorthEast; - public const string NorthWest = Material.Outlined.NorthWest; - public const string NotAccessible = Material.Outlined.NotAccessible; - public const string NotInterested = Material.Outlined.NotInterested; - public const string NotListedLocation = Material.Outlined.NotListedLocation; - public const string NotStarted = Material.Outlined.NotStarted; - public const string Note = Material.Outlined.Note; - public const string NoteAdd = Material.Outlined.NoteAdd; - public const string NoteAlt = Material.Outlined.NoteAlt; - public const string Notes = Material.Outlined.Notes; - public const string NotificationAdd = Material.Outlined.NotificationAdd; - public const string NotificationImportant = Material.Outlined.NotificationImportant; - public const string Notifications = Material.Outlined.Notifications; - public const string NotificationsActive = Material.Outlined.NotificationsActive; - public const string NotificationsNone = Material.Outlined.NotificationsNone; - public const string NotificationsOff = Material.Outlined.NotificationsOff; - public const string NotificationsPaused = Material.Outlined.NotificationsPaused; - public const string Numbers = Material.Outlined.Numbers; - public const string OfflineBolt = Material.Outlined.OfflineBolt; - public const string OfflinePin = Material.Outlined.OfflinePin; - public const string OfflineShare = Material.Outlined.OfflineShare; - public const string OnDeviceTraining = Material.Outlined.OnDeviceTraining; - public const string OndemandVideo = Material.Outlined.OndemandVideo; - public const string OnlinePrediction = Material.Outlined.OnlinePrediction; - public const string Opacity = Material.Outlined.Opacity; - public const string OpenInBrowser = Material.Outlined.OpenInBrowser; - public const string OpenInFull = Material.Outlined.OpenInFull; - public const string OpenInNew = Material.Outlined.OpenInNew; - public const string OpenInNewOff = Material.Outlined.OpenInNewOff; - public const string OpenWith = Material.Outlined.OpenWith; - public const string OtherHouses = Material.Outlined.OtherHouses; - public const string Outbound = Material.Outlined.Outbound; - public const string Outbox = Material.Outlined.Outbox; - public const string OutdoorGrill = Material.Outlined.OutdoorGrill; - public const string Outlet = Material.Outlined.Outlet; - public const string OutlinedFlag = Material.Outlined.OutlinedFlag; - public const string Output = Material.Outlined.Output; - public const string Padding = Material.Outlined.Padding; - public const string Pages = Material.Outlined.Pages; - public const string Pageview = Material.Outlined.Pageview; - public const string Paid = Material.Outlined.Paid; - public const string Palette = Material.Outlined.Palette; - public const string PanTool = Material.Outlined.PanTool; - public const string PanToolAlt = Material.Outlined.PanToolAlt; - public const string Panorama = Material.Outlined.Panorama; - public const string PanoramaFishEye = Material.Outlined.PanoramaFishEye; - public const string PanoramaHorizontal = Material.Outlined.PanoramaHorizontal; - public const string PanoramaHorizontalSelect = Material.Outlined.PanoramaHorizontalSelect; - public const string PanoramaPhotosphere = Material.Outlined.PanoramaPhotosphere; - public const string PanoramaPhotosphereSelect = Material.Outlined.PanoramaPhotosphereSelect; - public const string PanoramaVertical = Material.Outlined.PanoramaVertical; - public const string PanoramaVerticalSelect = Material.Outlined.PanoramaVerticalSelect; - public const string PanoramaWideAngle = Material.Outlined.PanoramaWideAngle; - public const string PanoramaWideAngleSelect = Material.Outlined.PanoramaWideAngleSelect; - public const string Paragliding = Material.Outlined.Paragliding; - public const string Park = Material.Outlined.Park; - public const string PartyMode = Material.Outlined.PartyMode; - public const string Password = Material.Outlined.Password; - public const string Pattern = Material.Outlined.Pattern; - public const string Pause = Material.Outlined.Pause; - public const string PauseCircle = Material.Outlined.PauseCircle; - public const string PauseCircleFilled = Material.Outlined.PauseCircleFilled; - public const string PauseCircleOutline = Material.Outlined.PauseCircleOutline; - public const string PausePresentation = Material.Outlined.PausePresentation; - public const string Payment = Material.Outlined.Payment; - public const string Payments = Material.Outlined.Payments; - public const string PedalBike = Material.Outlined.PedalBike; - public const string Pending = Material.Outlined.Pending; - public const string PendingActions = Material.Outlined.PendingActions; - public const string Pentagon = Material.Outlined.Pentagon; - public const string People = Material.Outlined.People; - public const string PeopleAlt = Material.Outlined.PeopleAlt; - public const string PeopleOutline = Material.Outlined.PeopleOutline; - public const string Percent = Material.Outlined.Percent; - public const string PermCameraMic = Material.Outlined.PermCameraMic; - public const string PermContactCalendar = Material.Outlined.PermContactCalendar; - public const string PermDataSetting = Material.Outlined.PermDataSetting; - public const string PermDeviceInformation = Material.Outlined.PermDeviceInformation; - public const string PermIdentity = Material.Outlined.PermIdentity; - public const string PermMedia = Material.Outlined.PermMedia; - public const string PermPhoneMsg = Material.Outlined.PermPhoneMsg; - public const string PermScanWifi = Material.Outlined.PermScanWifi; - public const string Person = Material.Outlined.Person; - public const string PersonAdd = Material.Outlined.PersonAdd; - public const string PersonAddAlt = Material.Outlined.PersonAddAlt; - public const string PersonAddAlt1 = Material.Outlined.PersonAddAlt1; - public const string PersonAddDisabled = Material.Outlined.PersonAddDisabled; - public const string PersonOff = Material.Outlined.PersonOff; - public const string PersonOutline = Material.Outlined.PersonOutline; - public const string PersonPin = Material.Outlined.PersonPin; - public const string PersonPinCircle = Material.Outlined.PersonPinCircle; - public const string PersonRemove = Material.Outlined.PersonRemove; - public const string PersonRemoveAlt1 = Material.Outlined.PersonRemoveAlt1; - public const string PersonSearch = Material.Outlined.PersonSearch; - public const string PersonalInjury = Material.Outlined.PersonalInjury; - public const string PersonalVideo = Material.Outlined.PersonalVideo; - public const string PestControl = Material.Outlined.PestControl; - public const string PestControlRodent = Material.Outlined.PestControlRodent; - public const string Pets = Material.Outlined.Pets; - public const string Phishing = Material.Outlined.Phishing; - public const string Phone = Material.Outlined.Phone; - public const string PhoneAndroid = Material.Outlined.PhoneAndroid; - public const string PhoneBluetoothSpeaker = Material.Outlined.PhoneBluetoothSpeaker; - public const string PhoneCallback = Material.Outlined.PhoneCallback; - public const string PhoneDisabled = Material.Outlined.PhoneDisabled; - public const string PhoneEnabled = Material.Outlined.PhoneEnabled; - public const string PhoneForwarded = Material.Outlined.PhoneForwarded; - public const string PhoneInTalk = Material.Outlined.PhoneInTalk; - public const string PhoneIphone = Material.Outlined.PhoneIphone; - public const string PhoneLocked = Material.Outlined.PhoneLocked; - public const string PhoneMissed = Material.Outlined.PhoneMissed; - public const string PhonePaused = Material.Outlined.PhonePaused; - public const string Phonelink = Material.Outlined.Phonelink; - public const string PhonelinkErase = Material.Outlined.PhonelinkErase; - public const string PhonelinkLock = Material.Outlined.PhonelinkLock; - public const string PhonelinkOff = Material.Outlined.PhonelinkOff; - public const string PhonelinkRing = Material.Outlined.PhonelinkRing; - public const string PhonelinkSetup = Material.Outlined.PhonelinkSetup; - public const string Photo = Material.Outlined.Photo; - public const string PhotoAlbum = Material.Outlined.PhotoAlbum; - public const string PhotoCamera = Material.Outlined.PhotoCamera; - public const string PhotoCameraBack = Material.Outlined.PhotoCameraBack; - public const string PhotoCameraFront = Material.Outlined.PhotoCameraFront; - public const string PhotoFilter = Material.Outlined.PhotoFilter; - public const string PhotoLibrary = Material.Outlined.PhotoLibrary; - public const string PhotoSizeSelectActual = Material.Outlined.PhotoSizeSelectActual; - public const string PhotoSizeSelectLarge = Material.Outlined.PhotoSizeSelectLarge; - public const string PhotoSizeSelectSmall = Material.Outlined.PhotoSizeSelectSmall; - public const string Php = Material.Outlined.Php; - public const string Piano = Material.Outlined.Piano; - public const string PianoOff = Material.Outlined.PianoOff; - public const string PictureAsPdf = Material.Outlined.PictureAsPdf; - public const string PictureInPicture = Material.Outlined.PictureInPicture; - public const string PictureInPictureAlt = Material.Outlined.PictureInPictureAlt; - public const string PieChart = Material.Outlined.PieChart; - public const string PieChartOutline = Material.Outlined.PieChartOutline; - public const string Pin = Material.Outlined.Pin; - public const string PinDrop = Material.Outlined.PinDrop; - public const string PinEnd = Material.Outlined.PinEnd; - public const string PinInvoke = Material.Outlined.PinInvoke; - public const string Pinch = Material.Outlined.Pinch; - public const string PivotTableChart = Material.Outlined.PivotTableChart; - public const string Pix = Material.Outlined.Pix; - public const string Place = Material.Outlined.Place; - public const string Plagiarism = Material.Outlined.Plagiarism; - public const string PlayArrow = Material.Outlined.PlayArrow; - public const string PlayCircle = Material.Outlined.PlayCircle; - public const string PlayCircleFilled = Material.Outlined.PlayCircleFilled; - public const string PlayCircleOutline = Material.Outlined.PlayCircleOutline; - public const string PlayDisabled = Material.Outlined.PlayDisabled; - public const string PlayForWork = Material.Outlined.PlayForWork; - public const string PlayLesson = Material.Outlined.PlayLesson; - public const string PlaylistAdd = Material.Outlined.PlaylistAdd; - public const string PlaylistAddCheck = Material.Outlined.PlaylistAddCheck; - public const string PlaylistAddCheckCircle = Material.Outlined.PlaylistAddCheckCircle; - public const string PlaylistAddCircle = Material.Outlined.PlaylistAddCircle; - public const string PlaylistPlay = Material.Outlined.PlaylistPlay; - public const string PlaylistRemove = Material.Outlined.PlaylistRemove; - public const string Plumbing = Material.Outlined.Plumbing; - public const string PlusOne = Material.Outlined.PlusOne; - public const string Podcasts = Material.Outlined.Podcasts; - public const string PointOfSale = Material.Outlined.PointOfSale; - public const string Policy = Material.Outlined.Policy; - public const string Poll = Material.Outlined.Poll; - public const string Polyline = Material.Outlined.Polyline; - public const string Polymer = Material.Outlined.Polymer; - public const string Pool = Material.Outlined.Pool; - public const string PortableWifiOff = Material.Outlined.PortableWifiOff; - public const string Portrait = Material.Outlined.Portrait; - public const string PostAdd = Material.Outlined.PostAdd; - public const string Power = Material.Outlined.Power; - public const string PowerInput = Material.Outlined.PowerInput; - public const string PowerOff = Material.Outlined.PowerOff; - public const string PowerSettingsNew = Material.Outlined.PowerSettingsNew; - public const string PrecisionManufacturing = Material.Outlined.PrecisionManufacturing; - public const string PregnantWoman = Material.Outlined.PregnantWoman; - public const string PresentToAll = Material.Outlined.PresentToAll; - public const string Preview = Material.Outlined.Preview; - public const string PriceChange = Material.Outlined.PriceChange; - public const string PriceCheck = Material.Outlined.PriceCheck; - public const string Print = Material.Outlined.Print; - public const string PrintDisabled = Material.Outlined.PrintDisabled; - public const string PriorityHigh = Material.Outlined.PriorityHigh; - public const string PrivacyTip = Material.Outlined.PrivacyTip; - public const string PrivateConnectivity = Material.Outlined.PrivateConnectivity; - public const string ProductionQuantityLimits = Material.Outlined.ProductionQuantityLimits; - public const string Psychology = Material.Outlined.Psychology; - public const string Public = Material.Outlined.Public; - public const string PublicOff = Material.Outlined.PublicOff; - public const string Publish = Material.Outlined.Publish; - public const string PublishedWithChanges = Material.Outlined.PublishedWithChanges; - public const string PunchClock = Material.Outlined.PunchClock; - public const string PushPin = Material.Outlined.PushPin; - public const string QrCode = Material.Outlined.QrCode; - public const string QrCode2 = Material.Outlined.QrCode2; - public const string QrCodeScanner = Material.Outlined.QrCodeScanner; - public const string QueryBuilder = Material.Outlined.QueryBuilder; - public const string QueryStats = Material.Outlined.QueryStats; - public const string QuestionAnswer = Material.Outlined.QuestionAnswer; - public const string QuestionMark = Material.Outlined.QuestionMark; - public const string Queue = Material.Outlined.Queue; - public const string QueueMusic = Material.Outlined.QueueMusic; - public const string QueuePlayNext = Material.Outlined.QueuePlayNext; - public const string Quickreply = Material.Outlined.Quickreply; - public const string Quiz = Material.Outlined.Quiz; - public const string RMobiledata = Material.Outlined.RMobiledata; - public const string Radar = Material.Outlined.Radar; - public const string Radio = Material.Outlined.Radio; - public const string RadioButtonChecked = Material.Outlined.RadioButtonChecked; - public const string RadioButtonUnchecked = Material.Outlined.RadioButtonUnchecked; - public const string RailwayAlert = Material.Outlined.RailwayAlert; - public const string RamenDining = Material.Outlined.RamenDining; - public const string RampLeft = Material.Outlined.RampLeft; - public const string RampRight = Material.Outlined.RampRight; - public const string RateReview = Material.Outlined.RateReview; - public const string RawOff = Material.Outlined.RawOff; - public const string RawOn = Material.Outlined.RawOn; - public const string ReadMore = Material.Outlined.ReadMore; - public const string RealEstateAgent = Material.Outlined.RealEstateAgent; - public const string Receipt = Material.Outlined.Receipt; - public const string ReceiptLong = Material.Outlined.ReceiptLong; - public const string RecentActors = Material.Outlined.RecentActors; - public const string Recommend = Material.Outlined.Recommend; - public const string RecordVoiceOver = Material.Outlined.RecordVoiceOver; - public const string Rectangle = Material.Outlined.Rectangle; - public const string Recycling = Material.Outlined.Recycling; - public const string Redeem = Material.Outlined.Redeem; - public const string Redo = Material.Outlined.Redo; - public const string ReduceCapacity = Material.Outlined.ReduceCapacity; - public const string Refresh = Material.Outlined.Refresh; - public const string RememberMe = Material.Outlined.RememberMe; - public const string Remove = Material.Outlined.Remove; - public const string RemoveCircle = Material.Outlined.RemoveCircle; - public const string RemoveCircleOutline = Material.Outlined.RemoveCircleOutline; - public const string RemoveDone = Material.Outlined.RemoveDone; - public const string RemoveFromQueue = Material.Outlined.RemoveFromQueue; - public const string RemoveModerator = Material.Outlined.RemoveModerator; - public const string RemoveRedEye = Material.Outlined.RemoveRedEye; - public const string RemoveRoad = Material.Outlined.RemoveRoad; - public const string RemoveShoppingCart = Material.Outlined.RemoveShoppingCart; - public const string Reorder = Material.Outlined.Reorder; - public const string Repeat = Material.Outlined.Repeat; - public const string RepeatOn = Material.Outlined.RepeatOn; - public const string RepeatOne = Material.Outlined.RepeatOne; - public const string RepeatOneOn = Material.Outlined.RepeatOneOn; - public const string Replay = Material.Outlined.Replay; - public const string Replay10 = Material.Outlined.Replay10; - public const string Replay30 = Material.Outlined.Replay30; - public const string Replay5 = Material.Outlined.Replay5; - public const string ReplayCircleFilled = Material.Outlined.ReplayCircleFilled; - public const string Reply = Material.Outlined.Reply; - public const string ReplyAll = Material.Outlined.ReplyAll; - public const string Report = Material.Outlined.Report; - public const string ReportGmailerrorred = Material.Outlined.ReportGmailerrorred; - public const string ReportOff = Material.Outlined.ReportOff; - public const string ReportProblem = Material.Outlined.ReportProblem; - public const string RequestPage = Material.Outlined.RequestPage; - public const string RequestQuote = Material.Outlined.RequestQuote; - public const string ResetTv = Material.Outlined.ResetTv; - public const string RestartAlt = Material.Outlined.RestartAlt; - public const string Restaurant = Material.Outlined.Restaurant; - public const string RestaurantMenu = Material.Outlined.RestaurantMenu; - public const string Restore = Material.Outlined.Restore; - public const string RestoreFromTrash = Material.Outlined.RestoreFromTrash; - public const string RestorePage = Material.Outlined.RestorePage; - public const string Reviews = Material.Outlined.Reviews; - public const string RiceBowl = Material.Outlined.RiceBowl; - public const string RingVolume = Material.Outlined.RingVolume; - public const string Rocket = Material.Outlined.Rocket; - public const string RocketLaunch = Material.Outlined.RocketLaunch; - public const string RollerSkating = Material.Outlined.RollerSkating; - public const string Roofing = Material.Outlined.Roofing; - public const string Room = Material.Outlined.Room; - public const string RoomPreferences = Material.Outlined.RoomPreferences; - public const string RoomService = Material.Outlined.RoomService; - public const string Rotate90DegreesCcw = Material.Outlined.Rotate90DegreesCcw; - public const string Rotate90DegreesCw = Material.Outlined.Rotate90DegreesCw; - public const string RotateLeft = Material.Outlined.RotateLeft; - public const string RotateRight = Material.Outlined.RotateRight; - public const string RoundaboutLeft = Material.Outlined.RoundaboutLeft; - public const string RoundaboutRight = Material.Outlined.RoundaboutRight; - public const string RoundedCorner = Material.Outlined.RoundedCorner; - public const string Route = Material.Outlined.Route; - public const string Router = Material.Outlined.Router; - public const string Rowing = Material.Outlined.Rowing; - public const string RssFeed = Material.Outlined.RssFeed; - public const string Rsvp = Material.Outlined.Rsvp; - public const string Rtt = Material.Outlined.Rtt; - public const string Rule = Material.Outlined.Rule; - public const string RuleFolder = Material.Outlined.RuleFolder; - public const string RunCircle = Material.Outlined.RunCircle; - public const string RunningWithErrors = Material.Outlined.RunningWithErrors; - public const string RvHookup = Material.Outlined.RvHookup; - public const string SafetyCheck = Material.Outlined.SafetyCheck; - public const string SafetyDivider = Material.Outlined.SafetyDivider; - public const string Sailing = Material.Outlined.Sailing; - public const string Sanitizer = Material.Outlined.Sanitizer; - public const string Satellite = Material.Outlined.Satellite; - public const string SatelliteAlt = Material.Outlined.SatelliteAlt; - public const string Save = Material.Outlined.Save; - public const string SaveAlt = Material.Outlined.SaveAlt; - public const string SaveAs = Material.Outlined.SaveAs; - public const string SavedSearch = Material.Outlined.SavedSearch; - public const string Savings = Material.Outlined.Savings; - public const string Scale = Material.Outlined.Scale; - public const string Scanner = Material.Outlined.Scanner; - public const string ScatterPlot = Material.Outlined.ScatterPlot; - public const string Schedule = Material.Outlined.Schedule; - public const string ScheduleSend = Material.Outlined.ScheduleSend; - public const string Schema = Material.Outlined.Schema; - public const string School = Material.Outlined.School; - public const string Science = Material.Outlined.Science; - public const string Score = Material.Outlined.Score; - public const string Scoreboard = Material.Outlined.Scoreboard; - public const string ScreenLockLandscape = Material.Outlined.ScreenLockLandscape; - public const string ScreenLockPortrait = Material.Outlined.ScreenLockPortrait; - public const string ScreenLockRotation = Material.Outlined.ScreenLockRotation; - public const string ScreenRotation = Material.Outlined.ScreenRotation; - public const string ScreenRotationAlt = Material.Outlined.ScreenRotationAlt; - public const string ScreenSearchDesktop = Material.Outlined.ScreenSearchDesktop; - public const string ScreenShare = Material.Outlined.ScreenShare; - public const string Screenshot = Material.Outlined.Screenshot; - public const string ScubaDiving = Material.Outlined.ScubaDiving; - public const string Sd = Material.Outlined.Sd; - public const string SdCard = Material.Outlined.SdCard; - public const string SdCardAlert = Material.Outlined.SdCardAlert; - public const string SdStorage = Material.Outlined.SdStorage; - public const string Search = Material.Outlined.Search; - public const string SearchOff = Material.Outlined.SearchOff; - public const string Security = Material.Outlined.Security; - public const string SecurityUpdate = Material.Outlined.SecurityUpdate; - public const string SecurityUpdateGood = Material.Outlined.SecurityUpdateGood; - public const string SecurityUpdateWarning = Material.Outlined.SecurityUpdateWarning; - public const string Segment = Material.Outlined.Segment; - public const string SelectAll = Material.Outlined.SelectAll; - public const string SelfImprovement = Material.Outlined.SelfImprovement; - public const string Sell = Material.Outlined.Sell; - public const string Send = Material.Outlined.Send; - public const string SendAndArchive = Material.Outlined.SendAndArchive; - public const string SendTimeExtension = Material.Outlined.SendTimeExtension; - public const string SendToMobile = Material.Outlined.SendToMobile; - public const string SensorDoor = Material.Outlined.SensorDoor; - public const string SensorWindow = Material.Outlined.SensorWindow; - public const string Sensors = Material.Outlined.Sensors; - public const string SensorsOff = Material.Outlined.SensorsOff; - public const string SentimentDissatisfied = Material.Outlined.SentimentDissatisfied; - public const string SentimentNeutral = Material.Outlined.SentimentNeutral; - public const string SentimentSatisfied = Material.Outlined.SentimentSatisfied; - public const string SentimentSatisfiedAlt = Material.Outlined.SentimentSatisfiedAlt; - public const string SentimentVeryDissatisfied = Material.Outlined.SentimentVeryDissatisfied; - public const string SentimentVerySatisfied = Material.Outlined.SentimentVerySatisfied; - public const string SetMeal = Material.Outlined.SetMeal; - public const string Settings = Material.Outlined.Settings; - public const string SettingsAccessibility = Material.Outlined.SettingsAccessibility; - public const string SettingsApplications = Material.Outlined.SettingsApplications; - public const string SettingsBackupRestore = Material.Outlined.SettingsBackupRestore; - public const string SettingsBluetooth = Material.Outlined.SettingsBluetooth; - public const string SettingsBrightness = Material.Outlined.SettingsBrightness; - public const string SettingsCell = Material.Outlined.SettingsCell; - public const string SettingsEthernet = Material.Outlined.SettingsEthernet; - public const string SettingsInputAntenna = Material.Outlined.SettingsInputAntenna; - public const string SettingsInputComponent = Material.Outlined.SettingsInputComponent; - public const string SettingsInputComposite = Material.Outlined.SettingsInputComposite; - public const string SettingsInputHdmi = Material.Outlined.SettingsInputHdmi; - public const string SettingsInputSvideo = Material.Outlined.SettingsInputSvideo; - public const string SettingsOverscan = Material.Outlined.SettingsOverscan; - public const string SettingsPhone = Material.Outlined.SettingsPhone; - public const string SettingsPower = Material.Outlined.SettingsPower; - public const string SettingsRemote = Material.Outlined.SettingsRemote; - public const string SettingsSuggest = Material.Outlined.SettingsSuggest; - public const string SettingsSystemDaydream = Material.Outlined.SettingsSystemDaydream; - public const string SettingsVoice = Material.Outlined.SettingsVoice; - public const string SevereCold = Material.Outlined.SevereCold; - public const string Share = Material.Outlined.Share; - public const string ShareLocation = Material.Outlined.ShareLocation; - public const string Shield = Material.Outlined.Shield; - public const string ShieldMoon = Material.Outlined.ShieldMoon; - public const string Shop = Material.Outlined.Shop; - public const string Shop2 = Material.Outlined.Shop2; - public const string ShopTwo = Material.Outlined.ShopTwo; - public const string ShoppingBag = Material.Outlined.ShoppingBag; - public const string ShoppingBasket = Material.Outlined.ShoppingBasket; - public const string ShoppingCart = Material.Outlined.ShoppingCart; - public const string ShoppingCartCheckout = Material.Outlined.ShoppingCartCheckout; - public const string ShortText = Material.Outlined.ShortText; - public const string Shortcut = Material.Outlined.Shortcut; - public const string ShowChart = Material.Outlined.ShowChart; - public const string Shower = Material.Outlined.Shower; - public const string Shuffle = Material.Outlined.Shuffle; - public const string ShuffleOn = Material.Outlined.ShuffleOn; - public const string ShutterSpeed = Material.Outlined.ShutterSpeed; - public const string Sick = Material.Outlined.Sick; - public const string SignLanguage = Material.Outlined.SignLanguage; - public const string SignalCellular0Bar = Material.Outlined.SignalCellular0Bar; - public const string SignalCellular4Bar = Material.Outlined.SignalCellular4Bar; - public const string SignalCellularAlt = Material.Outlined.SignalCellularAlt; - public const string SignalCellularAlt1Bar = Material.Outlined.SignalCellularAlt1Bar; - public const string SignalCellularAlt2Bar = Material.Outlined.SignalCellularAlt2Bar; - - public const string SignalCellularConnectedNoInternet0Bar = - Material.Outlined.SignalCellularConnectedNoInternet0Bar; - - public const string SignalCellularConnectedNoInternet4Bar = - Material.Outlined.SignalCellularConnectedNoInternet4Bar; - - public const string SignalCellularNoSim = Material.Outlined.SignalCellularNoSim; - public const string SignalCellularNodata = Material.Outlined.SignalCellularNodata; - public const string SignalCellularNull = Material.Outlined.SignalCellularNull; - public const string SignalCellularOff = Material.Outlined.SignalCellularOff; - public const string SignalWifi0Bar = Material.Outlined.SignalWifi0Bar; - public const string SignalWifi4Bar = Material.Outlined.SignalWifi4Bar; - public const string SignalWifi4BarLock = Material.Outlined.SignalWifi4BarLock; - public const string SignalWifiBad = Material.Outlined.SignalWifiBad; - public const string SignalWifiConnectedNoInternet4 = Material.Outlined.SignalWifiConnectedNoInternet4; - public const string SignalWifiOff = Material.Outlined.SignalWifiOff; - public const string SignalWifiStatusbar4Bar = Material.Outlined.SignalWifiStatusbar4Bar; - - public const string SignalWifiStatusbarConnectedNoInternet4 = - Material.Outlined.SignalWifiStatusbarConnectedNoInternet4; - - public const string SignalWifiStatusbarNull = Material.Outlined.SignalWifiStatusbarNull; - public const string Signpost = Material.Outlined.Signpost; - public const string SimCard = Material.Outlined.SimCard; - public const string SimCardAlert = Material.Outlined.SimCardAlert; - public const string SimCardDownload = Material.Outlined.SimCardDownload; - public const string SingleBed = Material.Outlined.SingleBed; - public const string Sip = Material.Outlined.Sip; - public const string Skateboarding = Material.Outlined.Skateboarding; - public const string SkipNext = Material.Outlined.SkipNext; - public const string SkipPrevious = Material.Outlined.SkipPrevious; - public const string Sledding = Material.Outlined.Sledding; - public const string Slideshow = Material.Outlined.Slideshow; - public const string SlowMotionVideo = Material.Outlined.SlowMotionVideo; - public const string SmartButton = Material.Outlined.SmartButton; - public const string SmartDisplay = Material.Outlined.SmartDisplay; - public const string SmartScreen = Material.Outlined.SmartScreen; - public const string SmartToy = Material.Outlined.SmartToy; - public const string Smartphone = Material.Outlined.Smartphone; - public const string SmokeFree = Material.Outlined.SmokeFree; - public const string SmokingRooms = Material.Outlined.SmokingRooms; - public const string Sms = Material.Outlined.Sms; - public const string SmsFailed = Material.Outlined.SmsFailed; - public const string SnippetFolder = Material.Outlined.SnippetFolder; - public const string Snooze = Material.Outlined.Snooze; - public const string Snowboarding = Material.Outlined.Snowboarding; - public const string Snowmobile = Material.Outlined.Snowmobile; - public const string Snowshoeing = Material.Outlined.Snowshoeing; - public const string Soap = Material.Outlined.Soap; - public const string SocialDistance = Material.Outlined.SocialDistance; - public const string Sort = Material.Outlined.Sort; - public const string SortByAlpha = Material.Outlined.SortByAlpha; - public const string Sos = Material.Outlined.Sos; - public const string SoupKitchen = Material.Outlined.SoupKitchen; - public const string Source = Material.Outlined.Source; - public const string South = Material.Outlined.South; - public const string SouthAmerica = Material.Outlined.SouthAmerica; - public const string SouthEast = Material.Outlined.SouthEast; - public const string SouthWest = Material.Outlined.SouthWest; - public const string Spa = Material.Outlined.Spa; - public const string SpaceBar = Material.Outlined.SpaceBar; - public const string SpaceDashboard = Material.Outlined.SpaceDashboard; - public const string SpatialAudio = Material.Outlined.SpatialAudio; - public const string SpatialAudioOff = Material.Outlined.SpatialAudioOff; - public const string SpatialTracking = Material.Outlined.SpatialTracking; - public const string Speaker = Material.Outlined.Speaker; - public const string SpeakerGroup = Material.Outlined.SpeakerGroup; - public const string SpeakerNotes = Material.Outlined.SpeakerNotes; - public const string SpeakerNotesOff = Material.Outlined.SpeakerNotesOff; - public const string SpeakerPhone = Material.Outlined.SpeakerPhone; - public const string Speed = Material.Outlined.Speed; - public const string Spellcheck = Material.Outlined.Spellcheck; - public const string Splitscreen = Material.Outlined.Splitscreen; - public const string Spoke = Material.Outlined.Spoke; - public const string Sports = Material.Outlined.Sports; - public const string SportsBar = Material.Outlined.SportsBar; - public const string SportsBaseball = Material.Outlined.SportsBaseball; - public const string SportsBasketball = Material.Outlined.SportsBasketball; - public const string SportsCricket = Material.Outlined.SportsCricket; - public const string SportsEsports = Material.Outlined.SportsEsports; - public const string SportsFootball = Material.Outlined.SportsFootball; - public const string SportsGolf = Material.Outlined.SportsGolf; - public const string SportsGymnastics = Material.Outlined.SportsGymnastics; - public const string SportsHandball = Material.Outlined.SportsHandball; - public const string SportsHockey = Material.Outlined.SportsHockey; - public const string SportsKabaddi = Material.Outlined.SportsKabaddi; - public const string SportsMartialArts = Material.Outlined.SportsMartialArts; - public const string SportsMma = Material.Outlined.SportsMma; - public const string SportsMotorsports = Material.Outlined.SportsMotorsports; - public const string SportsRugby = Material.Outlined.SportsRugby; - public const string SportsScore = Material.Outlined.SportsScore; - public const string SportsSoccer = Material.Outlined.SportsSoccer; - public const string SportsTennis = Material.Outlined.SportsTennis; - public const string SportsVolleyball = Material.Outlined.SportsVolleyball; - public const string Square = Material.Outlined.Square; - public const string SquareFoot = Material.Outlined.SquareFoot; - public const string SsidChart = Material.Outlined.SsidChart; - public const string StackedBarChart = Material.Outlined.StackedBarChart; - public const string StackedLineChart = Material.Outlined.StackedLineChart; - public const string Stadium = Material.Outlined.Stadium; - public const string Stairs = Material.Outlined.Stairs; - public const string Star = Material.Outlined.Star; - public const string StarBorder = Material.Outlined.StarBorder; - public const string StarBorderPurple500 = Material.Outlined.StarBorderPurple500; - public const string StarHalf = Material.Outlined.StarHalf; - public const string StarOutline = Material.Outlined.StarOutline; - public const string StarPurple500 = Material.Outlined.StarPurple500; - public const string StarRate = Material.Outlined.StarRate; - public const string Stars = Material.Outlined.Stars; - public const string Start = Material.Outlined.Start; - public const string StayCurrentLandscape = Material.Outlined.StayCurrentLandscape; - public const string StayCurrentPortrait = Material.Outlined.StayCurrentPortrait; - public const string StayPrimaryLandscape = Material.Outlined.StayPrimaryLandscape; - public const string StayPrimaryPortrait = Material.Outlined.StayPrimaryPortrait; - public const string StickyNote2 = Material.Outlined.StickyNote2; - public const string Stop = Material.Outlined.Stop; - public const string StopCircle = Material.Outlined.StopCircle; - public const string StopScreenShare = Material.Outlined.StopScreenShare; - public const string Storage = Material.Outlined.Storage; - public const string Store = Material.Outlined.Store; - public const string StoreMallDirectory = Material.Outlined.StoreMallDirectory; - public const string Storefront = Material.Outlined.Storefront; - public const string Storm = Material.Outlined.Storm; - public const string Straight = Material.Outlined.Straight; - public const string Straighten = Material.Outlined.Straighten; - public const string Stream = Material.Outlined.Stream; - public const string Streetview = Material.Outlined.Streetview; - public const string StrikethroughS = Material.Outlined.StrikethroughS; - public const string Stroller = Material.Outlined.Stroller; - public const string Style = Material.Outlined.Style; - public const string SubdirectoryArrowLeft = Material.Outlined.SubdirectoryArrowLeft; - public const string SubdirectoryArrowRight = Material.Outlined.SubdirectoryArrowRight; - public const string Subject = Material.Outlined.Subject; - public const string Subscript = Material.Outlined.Subscript; - public const string Subscriptions = Material.Outlined.Subscriptions; - public const string Subtitles = Material.Outlined.Subtitles; - public const string SubtitlesOff = Material.Outlined.SubtitlesOff; - public const string Subway = Material.Outlined.Subway; - public const string Summarize = Material.Outlined.Summarize; - public const string Superscript = Material.Outlined.Superscript; - public const string SupervisedUserCircle = Material.Outlined.SupervisedUserCircle; - public const string SupervisorAccount = Material.Outlined.SupervisorAccount; - public const string Support = Material.Outlined.Support; - public const string SupportAgent = Material.Outlined.SupportAgent; - public const string Surfing = Material.Outlined.Surfing; - public const string SurroundSound = Material.Outlined.SurroundSound; - public const string SwapCalls = Material.Outlined.SwapCalls; - public const string SwapHoriz = Material.Outlined.SwapHoriz; - public const string SwapHorizontalCircle = Material.Outlined.SwapHorizontalCircle; - public const string SwapVert = Material.Outlined.SwapVert; - public const string SwapVerticalCircle = Material.Outlined.SwapVerticalCircle; - public const string Swipe = Material.Outlined.Swipe; - public const string SwipeDown = Material.Outlined.SwipeDown; - public const string SwipeDownAlt = Material.Outlined.SwipeDownAlt; - public const string SwipeLeft = Material.Outlined.SwipeLeft; - public const string SwipeLeftAlt = Material.Outlined.SwipeLeftAlt; - public const string SwipeRight = Material.Outlined.SwipeRight; - public const string SwipeRightAlt = Material.Outlined.SwipeRightAlt; - public const string SwipeUp = Material.Outlined.SwipeUp; - public const string SwipeUpAlt = Material.Outlined.SwipeUpAlt; - public const string SwipeVertical = Material.Outlined.SwipeVertical; - public const string SwitchAccessShortcut = Material.Outlined.SwitchAccessShortcut; - public const string SwitchAccessShortcutAdd = Material.Outlined.SwitchAccessShortcutAdd; - public const string SwitchAccount = Material.Outlined.SwitchAccount; - public const string SwitchCamera = Material.Outlined.SwitchCamera; - public const string SwitchLeft = Material.Outlined.SwitchLeft; - public const string SwitchRight = Material.Outlined.SwitchRight; - public const string SwitchVideo = Material.Outlined.SwitchVideo; - public const string Synagogue = Material.Outlined.Synagogue; - public const string Sync = Material.Outlined.Sync; - public const string SyncAlt = Material.Outlined.SyncAlt; - public const string SyncDisabled = Material.Outlined.SyncDisabled; - public const string SyncLock = Material.Outlined.SyncLock; - public const string SyncProblem = Material.Outlined.SyncProblem; - public const string SystemSecurityUpdate = Material.Outlined.SystemSecurityUpdate; - public const string SystemSecurityUpdateGood = Material.Outlined.SystemSecurityUpdateGood; - public const string SystemSecurityUpdateWarning = Material.Outlined.SystemSecurityUpdateWarning; - public const string SystemUpdate = Material.Outlined.SystemUpdate; - public const string SystemUpdateAlt = Material.Outlined.SystemUpdateAlt; - public const string Tab = Material.Outlined.Tab; - public const string TabUnselected = Material.Outlined.TabUnselected; - public const string TableBar = Material.Outlined.TableBar; - public const string TableChart = Material.Outlined.TableChart; - public const string TableRestaurant = Material.Outlined.TableRestaurant; - public const string TableRows = Material.Outlined.TableRows; - public const string TableView = Material.Outlined.TableView; - public const string Tablet = Material.Outlined.Tablet; - public const string TabletAndroid = Material.Outlined.TabletAndroid; - public const string TabletMac = Material.Outlined.TabletMac; - public const string Tag = Material.Outlined.Tag; - public const string TagFaces = Material.Outlined.TagFaces; - public const string TakeoutDining = Material.Outlined.TakeoutDining; - public const string TapAndPlay = Material.Outlined.TapAndPlay; - public const string Tapas = Material.Outlined.Tapas; - public const string Task = Material.Outlined.Task; - public const string TaskAlt = Material.Outlined.TaskAlt; - public const string TaxiAlert = Material.Outlined.TaxiAlert; - public const string TempleBuddhist = Material.Outlined.TempleBuddhist; - public const string TempleHindu = Material.Outlined.TempleHindu; - public const string Terminal = Material.Outlined.Terminal; - public const string Terrain = Material.Outlined.Terrain; - public const string TextDecrease = Material.Outlined.TextDecrease; - public const string TextFields = Material.Outlined.TextFields; - public const string TextFormat = Material.Outlined.TextFormat; - public const string TextIncrease = Material.Outlined.TextIncrease; - public const string TextRotateUp = Material.Outlined.TextRotateUp; - public const string TextRotateVertical = Material.Outlined.TextRotateVertical; - public const string TextRotationAngledown = Material.Outlined.TextRotationAngledown; - public const string TextRotationAngleup = Material.Outlined.TextRotationAngleup; - public const string TextRotationDown = Material.Outlined.TextRotationDown; - public const string TextRotationNone = Material.Outlined.TextRotationNone; - public const string TextSnippet = Material.Outlined.TextSnippet; - public const string Textsms = Material.Outlined.Textsms; - public const string Texture = Material.Outlined.Texture; - public const string TheaterComedy = Material.Outlined.TheaterComedy; - public const string Theaters = Material.Outlined.Theaters; - public const string Thermostat = Material.Outlined.Thermostat; - public const string ThermostatAuto = Material.Outlined.ThermostatAuto; - public const string ThumbDown = Material.Outlined.ThumbDown; - public const string ThumbDownAlt = Material.Outlined.ThumbDownAlt; - public const string ThumbDownOffAlt = Material.Outlined.ThumbDownOffAlt; - public const string ThumbUp = Material.Outlined.ThumbUp; - public const string ThumbUpAlt = Material.Outlined.ThumbUpAlt; - public const string ThumbUpOffAlt = Material.Outlined.ThumbUpOffAlt; - public const string ThumbsUpDown = Material.Outlined.ThumbsUpDown; - public const string Thunderstorm = Material.Outlined.Thunderstorm; - public const string TimeToLeave = Material.Outlined.TimeToLeave; - public const string Timelapse = Material.Outlined.Timelapse; - public const string Timeline = Material.Outlined.Timeline; - public const string Timer = Material.Outlined.Timer; - public const string Timer10 = Material.Outlined.Timer10; - public const string Timer10Select = Material.Outlined.Timer10Select; - public const string Timer3 = Material.Outlined.Timer3; - public const string Timer3Select = Material.Outlined.Timer3Select; - public const string TimerOff = Material.Outlined.TimerOff; - public const string TipsAndUpdates = Material.Outlined.TipsAndUpdates; - public const string TireRepair = Material.Outlined.TireRepair; - public const string Title = Material.Outlined.Title; - public const string Toc = Material.Outlined.Toc; - public const string Today = Material.Outlined.Today; - public const string ToggleOff = Material.Outlined.ToggleOff; - public const string ToggleOn = Material.Outlined.ToggleOn; - public const string Token = Material.Outlined.Token; - public const string Toll = Material.Outlined.Toll; - public const string Tonality = Material.Outlined.Tonality; - public const string Topic = Material.Outlined.Topic; - public const string TouchApp = Material.Outlined.TouchApp; - public const string Tour = Material.Outlined.Tour; - public const string Toys = Material.Outlined.Toys; - public const string TrackChanges = Material.Outlined.TrackChanges; - public const string Traffic = Material.Outlined.Traffic; - public const string Train = Material.Outlined.Train; - public const string Tram = Material.Outlined.Tram; - public const string TransferWithinAStation = Material.Outlined.TransferWithinAStation; - public const string Transform = Material.Outlined.Transform; - public const string Transgender = Material.Outlined.Transgender; - public const string TransitEnterexit = Material.Outlined.TransitEnterexit; - public const string Translate = Material.Outlined.Translate; - public const string TravelExplore = Material.Outlined.TravelExplore; - public const string TrendingDown = Material.Outlined.TrendingDown; - public const string TrendingFlat = Material.Outlined.TrendingFlat; - public const string TrendingUp = Material.Outlined.TrendingUp; - public const string TripOrigin = Material.Outlined.TripOrigin; - public const string Try = Material.Outlined.Try; - public const string Tsunami = Material.Outlined.Tsunami; - public const string Tty = Material.Outlined.Tty; - public const string Tune = Material.Outlined.Tune; - public const string Tungsten = Material.Outlined.Tungsten; - public const string TurnLeft = Material.Outlined.TurnLeft; - public const string TurnRight = Material.Outlined.TurnRight; - public const string TurnSharpLeft = Material.Outlined.TurnSharpLeft; - public const string TurnSharpRight = Material.Outlined.TurnSharpRight; - public const string TurnSlightLeft = Material.Outlined.TurnSlightLeft; - public const string TurnSlightRight = Material.Outlined.TurnSlightRight; - public const string TurnedIn = Material.Outlined.TurnedIn; - public const string TurnedInNot = Material.Outlined.TurnedInNot; - public const string Tv = Material.Outlined.Tv; - public const string TvOff = Material.Outlined.TvOff; - public const string TwoWheeler = Material.Outlined.TwoWheeler; - public const string UTurnLeft = Material.Outlined.UTurnLeft; - public const string UTurnRight = Material.Outlined.UTurnRight; - public const string Umbrella = Material.Outlined.Umbrella; - public const string Unarchive = Material.Outlined.Unarchive; - public const string Undo = Material.Outlined.Undo; - public const string UnfoldLess = Material.Outlined.UnfoldLess; - public const string UnfoldMore = Material.Outlined.UnfoldMore; - public const string Unpublished = Material.Outlined.Unpublished; - public const string Unsubscribe = Material.Outlined.Unsubscribe; - public const string Upcoming = Material.Outlined.Upcoming; - public const string Update = Material.Outlined.Update; - public const string UpdateDisabled = Material.Outlined.UpdateDisabled; - public const string Upgrade = Material.Outlined.Upgrade; - public const string Upload = Material.Outlined.Upload; - public const string UploadFile = Material.Outlined.UploadFile; - public const string Usb = Material.Outlined.Usb; - public const string UsbOff = Material.Outlined.UsbOff; - public const string Vaccines = Material.Outlined.Vaccines; - public const string VapeFree = Material.Outlined.VapeFree; - public const string VapingRooms = Material.Outlined.VapingRooms; - public const string Verified = Material.Outlined.Verified; - public const string VerifiedUser = Material.Outlined.VerifiedUser; - public const string VerticalAlignBottom = Material.Outlined.VerticalAlignBottom; - public const string VerticalAlignCenter = Material.Outlined.VerticalAlignCenter; - public const string VerticalAlignTop = Material.Outlined.VerticalAlignTop; - public const string VerticalDistribute = Material.Outlined.VerticalDistribute; - public const string VerticalSplit = Material.Outlined.VerticalSplit; - public const string Vibration = Material.Outlined.Vibration; - public const string VideoCall = Material.Outlined.VideoCall; - public const string VideoCameraBack = Material.Outlined.VideoCameraBack; - public const string VideoCameraFront = Material.Outlined.VideoCameraFront; - public const string VideoFile = Material.Outlined.VideoFile; - public const string VideoLabel = Material.Outlined.VideoLabel; - public const string VideoLibrary = Material.Outlined.VideoLibrary; - public const string VideoSettings = Material.Outlined.VideoSettings; - public const string VideoStable = Material.Outlined.VideoStable; - public const string Videocam = Material.Outlined.Videocam; - public const string VideocamOff = Material.Outlined.VideocamOff; - public const string VideogameAsset = Material.Outlined.VideogameAsset; - public const string VideogameAssetOff = Material.Outlined.VideogameAssetOff; - public const string ViewAgenda = Material.Outlined.ViewAgenda; - public const string ViewArray = Material.Outlined.ViewArray; - public const string ViewCarousel = Material.Outlined.ViewCarousel; - public const string ViewColumn = Material.Outlined.ViewColumn; - public const string ViewComfy = Material.Outlined.ViewComfy; - public const string ViewComfyAlt = Material.Outlined.ViewComfyAlt; - public const string ViewCompact = Material.Outlined.ViewCompact; - public const string ViewCompactAlt = Material.Outlined.ViewCompactAlt; - public const string ViewCozy = Material.Outlined.ViewCozy; - public const string ViewDay = Material.Outlined.ViewDay; - public const string ViewHeadline = Material.Outlined.ViewHeadline; - public const string ViewInAr = Material.Outlined.ViewInAr; - public const string ViewKanban = Material.Outlined.ViewKanban; - public const string ViewList = Material.Outlined.ViewList; - public const string ViewModule = Material.Outlined.ViewModule; - public const string ViewQuilt = Material.Outlined.ViewQuilt; - public const string ViewSidebar = Material.Outlined.ViewSidebar; - public const string ViewStream = Material.Outlined.ViewStream; - public const string ViewTimeline = Material.Outlined.ViewTimeline; - public const string ViewWeek = Material.Outlined.ViewWeek; - public const string Vignette = Material.Outlined.Vignette; - public const string Villa = Material.Outlined.Villa; - public const string Visibility = Material.Outlined.Visibility; - public const string VisibilityOff = Material.Outlined.VisibilityOff; - public const string VoiceChat = Material.Outlined.VoiceChat; - public const string VoiceOverOff = Material.Outlined.VoiceOverOff; - public const string Voicemail = Material.Outlined.Voicemail; - public const string Volcano = Material.Outlined.Volcano; - public const string VolumeDown = Material.Outlined.VolumeDown; - public const string VolumeMute = Material.Outlined.VolumeMute; - public const string VolumeOff = Material.Outlined.VolumeOff; - public const string VolumeUp = Material.Outlined.VolumeUp; - public const string VolunteerActivism = Material.Outlined.VolunteerActivism; - public const string VpnKey = Material.Outlined.VpnKey; - public const string VpnKeyOff = Material.Outlined.VpnKeyOff; - public const string VpnLock = Material.Outlined.VpnLock; - public const string Vrpano = Material.Outlined.Vrpano; - public const string Wallpaper = Material.Outlined.Wallpaper; - public const string Warehouse = Material.Outlined.Warehouse; - public const string Warning = Material.Outlined.Warning; - public const string WarningAmber = Material.Outlined.WarningAmber; - public const string Wash = Material.Outlined.Wash; - public const string Watch = Material.Outlined.Watch; - public const string WatchLater = Material.Outlined.WatchLater; - public const string WatchOff = Material.Outlined.WatchOff; - public const string Water = Material.Outlined.Water; - public const string WaterDamage = Material.Outlined.WaterDamage; - public const string WaterDrop = Material.Outlined.WaterDrop; - public const string WaterfallChart = Material.Outlined.WaterfallChart; - public const string Waves = Material.Outlined.Waves; - public const string WavingHand = Material.Outlined.WavingHand; - public const string WbAuto = Material.Outlined.WbAuto; - public const string WbCloudy = Material.Outlined.WbCloudy; - public const string WbIncandescent = Material.Outlined.WbIncandescent; - public const string WbIridescent = Material.Outlined.WbIridescent; - public const string WbShade = Material.Outlined.WbShade; - public const string WbSunny = Material.Outlined.WbSunny; - public const string WbTwilight = Material.Outlined.WbTwilight; - public const string Wc = Material.Outlined.Wc; - public const string Web = Material.Outlined.Web; - public const string WebAsset = Material.Outlined.WebAsset; - public const string WebAssetOff = Material.Outlined.WebAssetOff; - public const string Webhook = Material.Outlined.Webhook; - public const string Weekend = Material.Outlined.Weekend; - public const string West = Material.Outlined.West; - public const string Whatsapp = Material.Outlined.Whatsapp; - public const string Whatshot = Material.Outlined.Whatshot; - public const string WheelchairPickup = Material.Outlined.WheelchairPickup; - public const string WhereToVote = Material.Outlined.WhereToVote; - public const string Widgets = Material.Outlined.Widgets; - public const string Wifi = Material.Outlined.Wifi; - public const string Wifi1Bar = Material.Outlined.Wifi1Bar; - public const string Wifi2Bar = Material.Outlined.Wifi2Bar; - public const string WifiCalling = Material.Outlined.WifiCalling; - public const string WifiCalling3 = Material.Outlined.WifiCalling3; - public const string WifiChannel = Material.Outlined.WifiChannel; - public const string WifiFind = Material.Outlined.WifiFind; - public const string WifiLock = Material.Outlined.WifiLock; - public const string WifiOff = Material.Outlined.WifiOff; - public const string WifiPassword = Material.Outlined.WifiPassword; - public const string WifiProtectedSetup = Material.Outlined.WifiProtectedSetup; - public const string WifiTethering = Material.Outlined.WifiTethering; - public const string WifiTetheringError = Material.Outlined.WifiTetheringError; - public const string WifiTetheringOff = Material.Outlined.WifiTetheringOff; - public const string Window = Material.Outlined.Window; - public const string WineBar = Material.Outlined.WineBar; - public const string Woman = Material.Outlined.Woman; - public const string Work = Material.Outlined.Work; - public const string WorkOff = Material.Outlined.WorkOff; - public const string WorkOutline = Material.Outlined.WorkOutline; - public const string WorkspacePremium = Material.Outlined.WorkspacePremium; - public const string Workspaces = Material.Outlined.Workspaces; - public const string WrapText = Material.Outlined.WrapText; - public const string WrongLocation = Material.Outlined.WrongLocation; - public const string Wysiwyg = Material.Outlined.Wysiwyg; - public const string Yard = Material.Outlined.Yard; - public const string YoutubeSearchedFor = Material.Outlined.YoutubeSearchedFor; - public const string ZoomIn = Material.Outlined.ZoomIn; - public const string ZoomInMap = Material.Outlined.ZoomInMap; - public const string ZoomOut = Material.Outlined.ZoomOut; - public const string ZoomOutMap = Material.Outlined.ZoomOutMap; - } - } -} diff --git a/src/Connected.Components/Icons/Obsolete/Rounded.cs b/src/Connected.Components/Icons/Obsolete/Rounded.cs deleted file mode 100644 index d49f31c..0000000 --- a/src/Connected.Components/Icons/Obsolete/Rounded.cs +++ /dev/null @@ -1,2074 +0,0 @@ -/* - * This file was auto-generated by Update-MudIcons.ps1 - * 2022.02.01_04:17:46 - */ - -using System.Diagnostics.CodeAnalysis; - -namespace Connected -{ - public partial class Icons - { - [ExcludeFromCodeCoverage] - public partial class Rounded - { - public const string _10k = Material.Rounded._10k; - public const string _10mp = Material.Rounded._10mp; - public const string _11mp = Material.Rounded._11mp; - public const string _123 = Material.Rounded._123; - public const string _12mp = Material.Rounded._12mp; - public const string _13mp = Material.Rounded._13mp; - public const string _14mp = Material.Rounded._14mp; - public const string _15mp = Material.Rounded._15mp; - public const string _16mp = Material.Rounded._16mp; - public const string _17mp = Material.Rounded._17mp; - public const string _18mp = Material.Rounded._18mp; - public const string _19mp = Material.Rounded._19mp; - public const string _1k = Material.Rounded._1k; - public const string _1kPlus = Material.Rounded._1kPlus; - public const string _1xMobiledata = Material.Rounded._1xMobiledata; - public const string _20mp = Material.Rounded._20mp; - public const string _21mp = Material.Rounded._21mp; - public const string _22mp = Material.Rounded._22mp; - public const string _23mp = Material.Rounded._23mp; - public const string _24mp = Material.Rounded._24mp; - public const string _2k = Material.Rounded._2k; - public const string _2kPlus = Material.Rounded._2kPlus; - public const string _2mp = Material.Rounded._2mp; - public const string _30fps = Material.Rounded._30fps; - public const string _30fpsSelect = Material.Rounded._30fpsSelect; - public const string _360 = Material.Rounded._360; - public const string _3dRotation = Material.Rounded._3dRotation; - public const string _3gMobiledata = Material.Rounded._3gMobiledata; - public const string _3k = Material.Rounded._3k; - public const string _3kPlus = Material.Rounded._3kPlus; - public const string _3mp = Material.Rounded._3mp; - public const string _3p = Material.Rounded._3p; - public const string _4gMobiledata = Material.Rounded._4gMobiledata; - public const string _4gPlusMobiledata = Material.Rounded._4gPlusMobiledata; - public const string _4k = Material.Rounded._4k; - public const string _4kPlus = Material.Rounded._4kPlus; - public const string _4mp = Material.Rounded._4mp; - public const string _5g = Material.Rounded._5g; - public const string _5k = Material.Rounded._5k; - public const string _5kPlus = Material.Rounded._5kPlus; - public const string _5mp = Material.Rounded._5mp; - public const string _60fps = Material.Rounded._60fps; - public const string _60fpsSelect = Material.Rounded._60fpsSelect; - public const string _6FtApart = Material.Rounded._6FtApart; - public const string _6k = Material.Rounded._6k; - public const string _6kPlus = Material.Rounded._6kPlus; - public const string _6mp = Material.Rounded._6mp; - public const string _7k = Material.Rounded._7k; - public const string _7kPlus = Material.Rounded._7kPlus; - public const string _7mp = Material.Rounded._7mp; - public const string _8k = Material.Rounded._8k; - public const string _8kPlus = Material.Rounded._8kPlus; - public const string _8mp = Material.Rounded._8mp; - public const string _9k = Material.Rounded._9k; - public const string _9kPlus = Material.Rounded._9kPlus; - public const string _9mp = Material.Rounded._9mp; - public const string Abc = Material.Rounded.Abc; - public const string AcUnit = Material.Rounded.AcUnit; - public const string AccessAlarm = Material.Rounded.AccessAlarm; - public const string AccessAlarms = Material.Rounded.AccessAlarms; - public const string AccessTime = Material.Rounded.AccessTime; - public const string AccessTimeFilled = Material.Rounded.AccessTimeFilled; - public const string Accessibility = Material.Rounded.Accessibility; - public const string AccessibilityNew = Material.Rounded.AccessibilityNew; - public const string Accessible = Material.Rounded.Accessible; - public const string AccessibleForward = Material.Rounded.AccessibleForward; - public const string AccountBalance = Material.Rounded.AccountBalance; - public const string AccountBalanceWallet = Material.Rounded.AccountBalanceWallet; - public const string AccountBox = Material.Rounded.AccountBox; - public const string AccountCircle = Material.Rounded.AccountCircle; - public const string AccountTree = Material.Rounded.AccountTree; - public const string AdUnits = Material.Rounded.AdUnits; - public const string Adb = Material.Rounded.Adb; - public const string Add = Material.Rounded.Add; - public const string AddAPhoto = Material.Rounded.AddAPhoto; - public const string AddAlarm = Material.Rounded.AddAlarm; - public const string AddAlert = Material.Rounded.AddAlert; - public const string AddBox = Material.Rounded.AddBox; - public const string AddBusiness = Material.Rounded.AddBusiness; - public const string AddCard = Material.Rounded.AddCard; - public const string AddChart = Material.Rounded.AddChart; - public const string AddCircle = Material.Rounded.AddCircle; - public const string AddCircleOutline = Material.Rounded.AddCircleOutline; - public const string AddComment = Material.Rounded.AddComment; - public const string AddIcCall = Material.Rounded.AddIcCall; - public const string AddLink = Material.Rounded.AddLink; - public const string AddLocation = Material.Rounded.AddLocation; - public const string AddLocationAlt = Material.Rounded.AddLocationAlt; - public const string AddModerator = Material.Rounded.AddModerator; - public const string AddPhotoAlternate = Material.Rounded.AddPhotoAlternate; - public const string AddReaction = Material.Rounded.AddReaction; - public const string AddRoad = Material.Rounded.AddRoad; - public const string AddShoppingCart = Material.Rounded.AddShoppingCart; - public const string AddTask = Material.Rounded.AddTask; - public const string AddToDrive = Material.Rounded.AddToDrive; - public const string AddToHomeScreen = Material.Rounded.AddToHomeScreen; - public const string AddToPhotos = Material.Rounded.AddToPhotos; - public const string AddToQueue = Material.Rounded.AddToQueue; - public const string Addchart = Material.Rounded.Addchart; - public const string AdfScanner = Material.Rounded.AdfScanner; - public const string Adjust = Material.Rounded.Adjust; - public const string AdminPanelSettings = Material.Rounded.AdminPanelSettings; - public const string AdsClick = Material.Rounded.AdsClick; - public const string Agriculture = Material.Rounded.Agriculture; - public const string Air = Material.Rounded.Air; - public const string AirlineSeatFlat = Material.Rounded.AirlineSeatFlat; - public const string AirlineSeatFlatAngled = Material.Rounded.AirlineSeatFlatAngled; - public const string AirlineSeatIndividualSuite = Material.Rounded.AirlineSeatIndividualSuite; - public const string AirlineSeatLegroomExtra = Material.Rounded.AirlineSeatLegroomExtra; - public const string AirlineSeatLegroomNormal = Material.Rounded.AirlineSeatLegroomNormal; - public const string AirlineSeatLegroomReduced = Material.Rounded.AirlineSeatLegroomReduced; - public const string AirlineSeatReclineExtra = Material.Rounded.AirlineSeatReclineExtra; - public const string AirlineSeatReclineNormal = Material.Rounded.AirlineSeatReclineNormal; - public const string AirlineStops = Material.Rounded.AirlineStops; - public const string Airlines = Material.Rounded.Airlines; - public const string AirplaneTicket = Material.Rounded.AirplaneTicket; - public const string AirplanemodeActive = Material.Rounded.AirplanemodeActive; - public const string AirplanemodeInactive = Material.Rounded.AirplanemodeInactive; - public const string Airplay = Material.Rounded.Airplay; - public const string AirportShuttle = Material.Rounded.AirportShuttle; - public const string Alarm = Material.Rounded.Alarm; - public const string AlarmAdd = Material.Rounded.AlarmAdd; - public const string AlarmOff = Material.Rounded.AlarmOff; - public const string AlarmOn = Material.Rounded.AlarmOn; - public const string Album = Material.Rounded.Album; - public const string AlignHorizontalCenter = Material.Rounded.AlignHorizontalCenter; - public const string AlignHorizontalLeft = Material.Rounded.AlignHorizontalLeft; - public const string AlignHorizontalRight = Material.Rounded.AlignHorizontalRight; - public const string AlignVerticalBottom = Material.Rounded.AlignVerticalBottom; - public const string AlignVerticalCenter = Material.Rounded.AlignVerticalCenter; - public const string AlignVerticalTop = Material.Rounded.AlignVerticalTop; - public const string AllInbox = Material.Rounded.AllInbox; - public const string AllInclusive = Material.Rounded.AllInclusive; - public const string AllOut = Material.Rounded.AllOut; - public const string AltRoute = Material.Rounded.AltRoute; - public const string AlternateEmail = Material.Rounded.AlternateEmail; - public const string Analytics = Material.Rounded.Analytics; - public const string Anchor = Material.Rounded.Anchor; - public const string Android = Material.Rounded.Android; - public const string Animation = Material.Rounded.Animation; - public const string Announcement = Material.Rounded.Announcement; - public const string Aod = Material.Rounded.Aod; - public const string Apartment = Material.Rounded.Apartment; - public const string Api = Material.Rounded.Api; - public const string AppBlocking = Material.Rounded.AppBlocking; - public const string AppRegistration = Material.Rounded.AppRegistration; - public const string AppSettingsAlt = Material.Rounded.AppSettingsAlt; - public const string AppShortcut = Material.Rounded.AppShortcut; - public const string Approval = Material.Rounded.Approval; - public const string Apps = Material.Rounded.Apps; - public const string AppsOutage = Material.Rounded.AppsOutage; - public const string Architecture = Material.Rounded.Architecture; - public const string Archive = Material.Rounded.Archive; - public const string AreaChart = Material.Rounded.AreaChart; - public const string ArrowBack = Material.Rounded.ArrowBack; - public const string ArrowBackIos = Material.Rounded.ArrowBackIos; - public const string ArrowBackIosNew = Material.Rounded.ArrowBackIosNew; - public const string ArrowCircleDown = Material.Rounded.ArrowCircleDown; - public const string ArrowCircleLeft = Material.Rounded.ArrowCircleLeft; - public const string ArrowCircleRight = Material.Rounded.ArrowCircleRight; - public const string ArrowCircleUp = Material.Rounded.ArrowCircleUp; - public const string ArrowDownward = Material.Rounded.ArrowDownward; - public const string ArrowDropDown = Material.Rounded.ArrowDropDown; - public const string ArrowDropDownCircle = Material.Rounded.ArrowDropDownCircle; - public const string ArrowDropUp = Material.Rounded.ArrowDropUp; - public const string ArrowForward = Material.Rounded.ArrowForward; - public const string ArrowForwardIos = Material.Rounded.ArrowForwardIos; - public const string ArrowLeft = Material.Rounded.ArrowLeft; - public const string ArrowRight = Material.Rounded.ArrowRight; - public const string ArrowRightAlt = Material.Rounded.ArrowRightAlt; - public const string ArrowUpward = Material.Rounded.ArrowUpward; - public const string ArtTrack = Material.Rounded.ArtTrack; - public const string Article = Material.Rounded.Article; - public const string AspectRatio = Material.Rounded.AspectRatio; - public const string Assessment = Material.Rounded.Assessment; - public const string Assignment = Material.Rounded.Assignment; - public const string AssignmentInd = Material.Rounded.AssignmentInd; - public const string AssignmentLate = Material.Rounded.AssignmentLate; - public const string AssignmentReturn = Material.Rounded.AssignmentReturn; - public const string AssignmentReturned = Material.Rounded.AssignmentReturned; - public const string AssignmentTurnedIn = Material.Rounded.AssignmentTurnedIn; - public const string Assistant = Material.Rounded.Assistant; - public const string AssistantDirection = Material.Rounded.AssistantDirection; - public const string AssistantPhoto = Material.Rounded.AssistantPhoto; - public const string AssuredWorkload = Material.Rounded.AssuredWorkload; - public const string Atm = Material.Rounded.Atm; - public const string AttachEmail = Material.Rounded.AttachEmail; - public const string AttachFile = Material.Rounded.AttachFile; - public const string AttachMoney = Material.Rounded.AttachMoney; - public const string Attachment = Material.Rounded.Attachment; - public const string Attractions = Material.Rounded.Attractions; - public const string Attribution = Material.Rounded.Attribution; - public const string AudioFile = Material.Rounded.AudioFile; - public const string Audiotrack = Material.Rounded.Audiotrack; - public const string AutoAwesome = Material.Rounded.AutoAwesome; - public const string AutoAwesomeMosaic = Material.Rounded.AutoAwesomeMosaic; - public const string AutoAwesomeMotion = Material.Rounded.AutoAwesomeMotion; - public const string AutoDelete = Material.Rounded.AutoDelete; - public const string AutoFixHigh = Material.Rounded.AutoFixHigh; - public const string AutoFixNormal = Material.Rounded.AutoFixNormal; - public const string AutoFixOff = Material.Rounded.AutoFixOff; - public const string AutoGraph = Material.Rounded.AutoGraph; - public const string AutoStories = Material.Rounded.AutoStories; - public const string AutofpsSelect = Material.Rounded.AutofpsSelect; - public const string Autorenew = Material.Rounded.Autorenew; - public const string AvTimer = Material.Rounded.AvTimer; - public const string BabyChangingStation = Material.Rounded.BabyChangingStation; - public const string BackHand = Material.Rounded.BackHand; - public const string Backpack = Material.Rounded.Backpack; - public const string Backspace = Material.Rounded.Backspace; - public const string Backup = Material.Rounded.Backup; - public const string BackupTable = Material.Rounded.BackupTable; - public const string Badge = Material.Rounded.Badge; - public const string BakeryDining = Material.Rounded.BakeryDining; - public const string Balance = Material.Rounded.Balance; - public const string Balcony = Material.Rounded.Balcony; - public const string Ballot = Material.Rounded.Ballot; - public const string BarChart = Material.Rounded.BarChart; - public const string BatchPrediction = Material.Rounded.BatchPrediction; - public const string Bathroom = Material.Rounded.Bathroom; - public const string Bathtub = Material.Rounded.Bathtub; - public const string Battery0Bar = Material.Rounded.Battery0Bar; - public const string Battery1Bar = Material.Rounded.Battery1Bar; - public const string Battery2Bar = Material.Rounded.Battery2Bar; - public const string Battery3Bar = Material.Rounded.Battery3Bar; - public const string Battery4Bar = Material.Rounded.Battery4Bar; - public const string Battery5Bar = Material.Rounded.Battery5Bar; - public const string Battery6Bar = Material.Rounded.Battery6Bar; - public const string BatteryAlert = Material.Rounded.BatteryAlert; - public const string BatteryChargingFull = Material.Rounded.BatteryChargingFull; - public const string BatteryFull = Material.Rounded.BatteryFull; - public const string BatterySaver = Material.Rounded.BatterySaver; - public const string BatteryStd = Material.Rounded.BatteryStd; - public const string BatteryUnknown = Material.Rounded.BatteryUnknown; - public const string BeachAccess = Material.Rounded.BeachAccess; - public const string Bed = Material.Rounded.Bed; - public const string BedroomBaby = Material.Rounded.BedroomBaby; - public const string BedroomChild = Material.Rounded.BedroomChild; - public const string BedroomParent = Material.Rounded.BedroomParent; - public const string Bedtime = Material.Rounded.Bedtime; - public const string BedtimeOff = Material.Rounded.BedtimeOff; - public const string Beenhere = Material.Rounded.Beenhere; - public const string Bento = Material.Rounded.Bento; - public const string BikeScooter = Material.Rounded.BikeScooter; - public const string Biotech = Material.Rounded.Biotech; - public const string Blender = Material.Rounded.Blender; - public const string Block = Material.Rounded.Block; - public const string Bloodtype = Material.Rounded.Bloodtype; - public const string Bluetooth = Material.Rounded.Bluetooth; - public const string BluetoothAudio = Material.Rounded.BluetoothAudio; - public const string BluetoothConnected = Material.Rounded.BluetoothConnected; - public const string BluetoothDisabled = Material.Rounded.BluetoothDisabled; - public const string BluetoothDrive = Material.Rounded.BluetoothDrive; - public const string BluetoothSearching = Material.Rounded.BluetoothSearching; - public const string BlurCircular = Material.Rounded.BlurCircular; - public const string BlurLinear = Material.Rounded.BlurLinear; - public const string BlurOff = Material.Rounded.BlurOff; - public const string BlurOn = Material.Rounded.BlurOn; - public const string Bolt = Material.Rounded.Bolt; - public const string Book = Material.Rounded.Book; - public const string BookOnline = Material.Rounded.BookOnline; - public const string Bookmark = Material.Rounded.Bookmark; - public const string BookmarkAdd = Material.Rounded.BookmarkAdd; - public const string BookmarkAdded = Material.Rounded.BookmarkAdded; - public const string BookmarkBorder = Material.Rounded.BookmarkBorder; - public const string BookmarkRemove = Material.Rounded.BookmarkRemove; - public const string Bookmarks = Material.Rounded.Bookmarks; - public const string BorderAll = Material.Rounded.BorderAll; - public const string BorderBottom = Material.Rounded.BorderBottom; - public const string BorderClear = Material.Rounded.BorderClear; - public const string BorderColor = Material.Rounded.BorderColor; - public const string BorderHorizontal = Material.Rounded.BorderHorizontal; - public const string BorderInner = Material.Rounded.BorderInner; - public const string BorderLeft = Material.Rounded.BorderLeft; - public const string BorderOuter = Material.Rounded.BorderOuter; - public const string BorderRight = Material.Rounded.BorderRight; - public const string BorderStyle = Material.Rounded.BorderStyle; - public const string BorderTop = Material.Rounded.BorderTop; - public const string BorderVertical = Material.Rounded.BorderVertical; - public const string Boy = Material.Rounded.Boy; - public const string BrandingWatermark = Material.Rounded.BrandingWatermark; - public const string BreakfastDining = Material.Rounded.BreakfastDining; - public const string Brightness1 = Material.Rounded.Brightness1; - public const string Brightness2 = Material.Rounded.Brightness2; - public const string Brightness3 = Material.Rounded.Brightness3; - public const string Brightness4 = Material.Rounded.Brightness4; - public const string Brightness5 = Material.Rounded.Brightness5; - public const string Brightness6 = Material.Rounded.Brightness6; - public const string Brightness7 = Material.Rounded.Brightness7; - public const string BrightnessAuto = Material.Rounded.BrightnessAuto; - public const string BrightnessHigh = Material.Rounded.BrightnessHigh; - public const string BrightnessLow = Material.Rounded.BrightnessLow; - public const string BrightnessMedium = Material.Rounded.BrightnessMedium; - public const string BrokenImage = Material.Rounded.BrokenImage; - public const string BrowseGallery = Material.Rounded.BrowseGallery; - public const string BrowserNotSupported = Material.Rounded.BrowserNotSupported; - public const string BrowserUpdated = Material.Rounded.BrowserUpdated; - public const string BrunchDining = Material.Rounded.BrunchDining; - public const string Brush = Material.Rounded.Brush; - public const string BubbleChart = Material.Rounded.BubbleChart; - public const string BugReport = Material.Rounded.BugReport; - public const string Build = Material.Rounded.Build; - public const string BuildCircle = Material.Rounded.BuildCircle; - public const string Bungalow = Material.Rounded.Bungalow; - public const string BurstMode = Material.Rounded.BurstMode; - public const string BusAlert = Material.Rounded.BusAlert; - public const string Business = Material.Rounded.Business; - public const string BusinessCenter = Material.Rounded.BusinessCenter; - public const string Cabin = Material.Rounded.Cabin; - public const string Cable = Material.Rounded.Cable; - public const string Cached = Material.Rounded.Cached; - public const string Cake = Material.Rounded.Cake; - public const string Calculate = Material.Rounded.Calculate; - public const string CalendarMonth = Material.Rounded.CalendarMonth; - public const string CalendarToday = Material.Rounded.CalendarToday; - public const string CalendarViewDay = Material.Rounded.CalendarViewDay; - public const string CalendarViewMonth = Material.Rounded.CalendarViewMonth; - public const string CalendarViewWeek = Material.Rounded.CalendarViewWeek; - public const string Call = Material.Rounded.Call; - public const string CallEnd = Material.Rounded.CallEnd; - public const string CallMade = Material.Rounded.CallMade; - public const string CallMerge = Material.Rounded.CallMerge; - public const string CallMissed = Material.Rounded.CallMissed; - public const string CallMissedOutgoing = Material.Rounded.CallMissedOutgoing; - public const string CallReceived = Material.Rounded.CallReceived; - public const string CallSplit = Material.Rounded.CallSplit; - public const string CallToAction = Material.Rounded.CallToAction; - public const string Camera = Material.Rounded.Camera; - public const string CameraAlt = Material.Rounded.CameraAlt; - public const string CameraEnhance = Material.Rounded.CameraEnhance; - public const string CameraFront = Material.Rounded.CameraFront; - public const string CameraIndoor = Material.Rounded.CameraIndoor; - public const string CameraOutdoor = Material.Rounded.CameraOutdoor; - public const string CameraRear = Material.Rounded.CameraRear; - public const string CameraRoll = Material.Rounded.CameraRoll; - public const string Cameraswitch = Material.Rounded.Cameraswitch; - public const string Campaign = Material.Rounded.Campaign; - public const string Cancel = Material.Rounded.Cancel; - public const string CancelPresentation = Material.Rounded.CancelPresentation; - public const string CancelScheduleSend = Material.Rounded.CancelScheduleSend; - public const string CandlestickChart = Material.Rounded.CandlestickChart; - public const string CarCrash = Material.Rounded.CarCrash; - public const string CarRental = Material.Rounded.CarRental; - public const string CarRepair = Material.Rounded.CarRepair; - public const string CardGiftcard = Material.Rounded.CardGiftcard; - public const string CardMembership = Material.Rounded.CardMembership; - public const string CardTravel = Material.Rounded.CardTravel; - public const string Carpenter = Material.Rounded.Carpenter; - public const string Cases = Material.Rounded.Cases; - public const string Casino = Material.Rounded.Casino; - public const string Cast = Material.Rounded.Cast; - public const string CastConnected = Material.Rounded.CastConnected; - public const string CastForEducation = Material.Rounded.CastForEducation; - public const string Castle = Material.Rounded.Castle; - public const string CatchingPokemon = Material.Rounded.CatchingPokemon; - public const string Category = Material.Rounded.Category; - public const string Celebration = Material.Rounded.Celebration; - public const string CellTower = Material.Rounded.CellTower; - public const string CellWifi = Material.Rounded.CellWifi; - public const string CenterFocusStrong = Material.Rounded.CenterFocusStrong; - public const string CenterFocusWeak = Material.Rounded.CenterFocusWeak; - public const string Chair = Material.Rounded.Chair; - public const string ChairAlt = Material.Rounded.ChairAlt; - public const string Chalet = Material.Rounded.Chalet; - public const string ChangeCircle = Material.Rounded.ChangeCircle; - public const string ChangeHistory = Material.Rounded.ChangeHistory; - public const string ChargingStation = Material.Rounded.ChargingStation; - public const string Chat = Material.Rounded.Chat; - public const string ChatBubble = Material.Rounded.ChatBubble; - public const string ChatBubbleOutline = Material.Rounded.ChatBubbleOutline; - public const string Check = Material.Rounded.Check; - public const string CheckBox = Material.Rounded.CheckBox; - public const string CheckBoxOutlineBlank = Material.Rounded.CheckBoxOutlineBlank; - public const string CheckCircle = Material.Rounded.CheckCircle; - public const string CheckCircleOutline = Material.Rounded.CheckCircleOutline; - public const string Checklist = Material.Rounded.Checklist; - public const string ChecklistRtl = Material.Rounded.ChecklistRtl; - public const string Checkroom = Material.Rounded.Checkroom; - public const string ChevronLeft = Material.Rounded.ChevronLeft; - public const string ChevronRight = Material.Rounded.ChevronRight; - public const string ChildCare = Material.Rounded.ChildCare; - public const string ChildFriendly = Material.Rounded.ChildFriendly; - public const string ChromeReaderMode = Material.Rounded.ChromeReaderMode; - public const string Church = Material.Rounded.Church; - public const string Circle = Material.Rounded.Circle; - public const string CircleNotifications = Material.Rounded.CircleNotifications; - public const string Class = Material.Rounded.Class; - public const string CleanHands = Material.Rounded.CleanHands; - public const string CleaningServices = Material.Rounded.CleaningServices; - public const string Clear = Material.Rounded.Clear; - public const string ClearAll = Material.Rounded.ClearAll; - public const string Close = Material.Rounded.Close; - public const string CloseFullscreen = Material.Rounded.CloseFullscreen; - public const string ClosedCaption = Material.Rounded.ClosedCaption; - public const string ClosedCaptionDisabled = Material.Rounded.ClosedCaptionDisabled; - public const string ClosedCaptionOff = Material.Rounded.ClosedCaptionOff; - public const string Cloud = Material.Rounded.Cloud; - public const string CloudCircle = Material.Rounded.CloudCircle; - public const string CloudDone = Material.Rounded.CloudDone; - public const string CloudDownload = Material.Rounded.CloudDownload; - public const string CloudOff = Material.Rounded.CloudOff; - public const string CloudQueue = Material.Rounded.CloudQueue; - public const string CloudSync = Material.Rounded.CloudSync; - public const string CloudUpload = Material.Rounded.CloudUpload; - public const string Co2 = Material.Rounded.Co2; - public const string CoPresent = Material.Rounded.CoPresent; - public const string Code = Material.Rounded.Code; - public const string CodeOff = Material.Rounded.CodeOff; - public const string Coffee = Material.Rounded.Coffee; - public const string CoffeeMaker = Material.Rounded.CoffeeMaker; - public const string Collections = Material.Rounded.Collections; - public const string CollectionsBookmark = Material.Rounded.CollectionsBookmark; - public const string ColorLens = Material.Rounded.ColorLens; - public const string Colorize = Material.Rounded.Colorize; - public const string Comment = Material.Rounded.Comment; - public const string CommentBank = Material.Rounded.CommentBank; - public const string CommentsDisabled = Material.Rounded.CommentsDisabled; - public const string Commit = Material.Rounded.Commit; - public const string Commute = Material.Rounded.Commute; - public const string Compare = Material.Rounded.Compare; - public const string CompareArrows = Material.Rounded.CompareArrows; - public const string CompassCalibration = Material.Rounded.CompassCalibration; - public const string Compost = Material.Rounded.Compost; - public const string Compress = Material.Rounded.Compress; - public const string Computer = Material.Rounded.Computer; - public const string ConfirmationNumber = Material.Rounded.ConfirmationNumber; - public const string ConnectWithoutContact = Material.Rounded.ConnectWithoutContact; - public const string ConnectedTv = Material.Rounded.ConnectedTv; - public const string ConnectingAirports = Material.Rounded.ConnectingAirports; - public const string Construction = Material.Rounded.Construction; - public const string ContactMail = Material.Rounded.ContactMail; - public const string ContactPage = Material.Rounded.ContactPage; - public const string ContactPhone = Material.Rounded.ContactPhone; - public const string ContactSupport = Material.Rounded.ContactSupport; - public const string Contactless = Material.Rounded.Contactless; - public const string Contacts = Material.Rounded.Contacts; - public const string ContentCopy = Material.Rounded.ContentCopy; - public const string ContentCut = Material.Rounded.ContentCut; - public const string ContentPaste = Material.Rounded.ContentPaste; - public const string ContentPasteGo = Material.Rounded.ContentPasteGo; - public const string ContentPasteOff = Material.Rounded.ContentPasteOff; - public const string ContentPasteSearch = Material.Rounded.ContentPasteSearch; - public const string Contrast = Material.Rounded.Contrast; - public const string ControlCamera = Material.Rounded.ControlCamera; - public const string ControlPoint = Material.Rounded.ControlPoint; - public const string ControlPointDuplicate = Material.Rounded.ControlPointDuplicate; - public const string Cookie = Material.Rounded.Cookie; - public const string CopyAll = Material.Rounded.CopyAll; - public const string Copyright = Material.Rounded.Copyright; - public const string Coronavirus = Material.Rounded.Coronavirus; - public const string CorporateFare = Material.Rounded.CorporateFare; - public const string Cottage = Material.Rounded.Cottage; - public const string Countertops = Material.Rounded.Countertops; - public const string Create = Material.Rounded.Create; - public const string CreateNewFolder = Material.Rounded.CreateNewFolder; - public const string CreditCard = Material.Rounded.CreditCard; - public const string CreditCardOff = Material.Rounded.CreditCardOff; - public const string CreditScore = Material.Rounded.CreditScore; - public const string Crib = Material.Rounded.Crib; - public const string CrisisAlert = Material.Rounded.CrisisAlert; - public const string Crop = Material.Rounded.Crop; - public const string Crop169 = Material.Rounded.Crop169; - public const string Crop32 = Material.Rounded.Crop32; - public const string Crop54 = Material.Rounded.Crop54; - public const string Crop75 = Material.Rounded.Crop75; - public const string CropDin = Material.Rounded.CropDin; - public const string CropFree = Material.Rounded.CropFree; - public const string CropLandscape = Material.Rounded.CropLandscape; - public const string CropOriginal = Material.Rounded.CropOriginal; - public const string CropPortrait = Material.Rounded.CropPortrait; - public const string CropRotate = Material.Rounded.CropRotate; - public const string CropSquare = Material.Rounded.CropSquare; - public const string CrueltyFree = Material.Rounded.CrueltyFree; - public const string Css = Material.Rounded.Css; - public const string CurrencyBitcoin = Material.Rounded.CurrencyBitcoin; - public const string CurrencyExchange = Material.Rounded.CurrencyExchange; - public const string CurrencyFranc = Material.Rounded.CurrencyFranc; - public const string CurrencyLira = Material.Rounded.CurrencyLira; - public const string CurrencyPound = Material.Rounded.CurrencyPound; - public const string CurrencyRuble = Material.Rounded.CurrencyRuble; - public const string CurrencyRupee = Material.Rounded.CurrencyRupee; - public const string CurrencyYen = Material.Rounded.CurrencyYen; - public const string CurrencyYuan = Material.Rounded.CurrencyYuan; - public const string Cyclone = Material.Rounded.Cyclone; - public const string Dangerous = Material.Rounded.Dangerous; - public const string DarkMode = Material.Rounded.DarkMode; - public const string Dashboard = Material.Rounded.Dashboard; - public const string DashboardCustomize = Material.Rounded.DashboardCustomize; - public const string DataArray = Material.Rounded.DataArray; - public const string DataExploration = Material.Rounded.DataExploration; - public const string DataObject = Material.Rounded.DataObject; - public const string DataSaverOff = Material.Rounded.DataSaverOff; - public const string DataSaverOn = Material.Rounded.DataSaverOn; - public const string DataThresholding = Material.Rounded.DataThresholding; - public const string DataUsage = Material.Rounded.DataUsage; - public const string DateRange = Material.Rounded.DateRange; - public const string Deblur = Material.Rounded.Deblur; - public const string Deck = Material.Rounded.Deck; - public const string Dehaze = Material.Rounded.Dehaze; - public const string Delete = Material.Rounded.Delete; - public const string DeleteForever = Material.Rounded.DeleteForever; - public const string DeleteOutline = Material.Rounded.DeleteOutline; - public const string DeleteSweep = Material.Rounded.DeleteSweep; - public const string DeliveryDining = Material.Rounded.DeliveryDining; - public const string DensityLarge = Material.Rounded.DensityLarge; - public const string DensityMedium = Material.Rounded.DensityMedium; - public const string DensitySmall = Material.Rounded.DensitySmall; - public const string DepartureBoard = Material.Rounded.DepartureBoard; - public const string Description = Material.Rounded.Description; - public const string Deselect = Material.Rounded.Deselect; - public const string DesignServices = Material.Rounded.DesignServices; - public const string DesktopAccessDisabled = Material.Rounded.DesktopAccessDisabled; - public const string DesktopMac = Material.Rounded.DesktopMac; - public const string DesktopWindows = Material.Rounded.DesktopWindows; - public const string Details = Material.Rounded.Details; - public const string DeveloperBoard = Material.Rounded.DeveloperBoard; - public const string DeveloperBoardOff = Material.Rounded.DeveloperBoardOff; - public const string DeveloperMode = Material.Rounded.DeveloperMode; - public const string DeviceHub = Material.Rounded.DeviceHub; - public const string DeviceThermostat = Material.Rounded.DeviceThermostat; - public const string DeviceUnknown = Material.Rounded.DeviceUnknown; - public const string Devices = Material.Rounded.Devices; - public const string DevicesFold = Material.Rounded.DevicesFold; - public const string DevicesOther = Material.Rounded.DevicesOther; - public const string DialerSip = Material.Rounded.DialerSip; - public const string Dialpad = Material.Rounded.Dialpad; - public const string Diamond = Material.Rounded.Diamond; - public const string Difference = Material.Rounded.Difference; - public const string Dining = Material.Rounded.Dining; - public const string DinnerDining = Material.Rounded.DinnerDining; - public const string Directions = Material.Rounded.Directions; - public const string DirectionsBike = Material.Rounded.DirectionsBike; - public const string DirectionsBoat = Material.Rounded.DirectionsBoat; - public const string DirectionsBoatFilled = Material.Rounded.DirectionsBoatFilled; - public const string DirectionsBus = Material.Rounded.DirectionsBus; - public const string DirectionsBusFilled = Material.Rounded.DirectionsBusFilled; - public const string DirectionsCar = Material.Rounded.DirectionsCar; - public const string DirectionsCarFilled = Material.Rounded.DirectionsCarFilled; - public const string DirectionsOff = Material.Rounded.DirectionsOff; - public const string DirectionsRailway = Material.Rounded.DirectionsRailway; - public const string DirectionsRailwayFilled = Material.Rounded.DirectionsRailwayFilled; - public const string DirectionsRun = Material.Rounded.DirectionsRun; - public const string DirectionsSubway = Material.Rounded.DirectionsSubway; - public const string DirectionsSubwayFilled = Material.Rounded.DirectionsSubwayFilled; - public const string DirectionsTransit = Material.Rounded.DirectionsTransit; - public const string DirectionsTransitFilled = Material.Rounded.DirectionsTransitFilled; - public const string DirectionsWalk = Material.Rounded.DirectionsWalk; - public const string DirtyLens = Material.Rounded.DirtyLens; - public const string DisabledByDefault = Material.Rounded.DisabledByDefault; - public const string DisabledVisible = Material.Rounded.DisabledVisible; - public const string DiscFull = Material.Rounded.DiscFull; - public const string Discount = Material.Rounded.Discount; - public const string DisplaySettings = Material.Rounded.DisplaySettings; - public const string Dns = Material.Rounded.Dns; - public const string DoDisturb = Material.Rounded.DoDisturb; - public const string DoDisturbAlt = Material.Rounded.DoDisturbAlt; - public const string DoDisturbOff = Material.Rounded.DoDisturbOff; - public const string DoDisturbOn = Material.Rounded.DoDisturbOn; - public const string DoNotDisturb = Material.Rounded.DoNotDisturb; - public const string DoNotDisturbAlt = Material.Rounded.DoNotDisturbAlt; - public const string DoNotDisturbOff = Material.Rounded.DoNotDisturbOff; - public const string DoNotDisturbOn = Material.Rounded.DoNotDisturbOn; - public const string DoNotDisturbOnTotalSilence = Material.Rounded.DoNotDisturbOnTotalSilence; - public const string DoNotStep = Material.Rounded.DoNotStep; - public const string DoNotTouch = Material.Rounded.DoNotTouch; - public const string Dock = Material.Rounded.Dock; - public const string DocumentScanner = Material.Rounded.DocumentScanner; - public const string Domain = Material.Rounded.Domain; - public const string DomainAdd = Material.Rounded.DomainAdd; - public const string DomainDisabled = Material.Rounded.DomainDisabled; - public const string DomainVerification = Material.Rounded.DomainVerification; - public const string Done = Material.Rounded.Done; - public const string DoneAll = Material.Rounded.DoneAll; - public const string DoneOutline = Material.Rounded.DoneOutline; - public const string DonutLarge = Material.Rounded.DonutLarge; - public const string DonutSmall = Material.Rounded.DonutSmall; - public const string DoorBack = Material.Rounded.DoorBack; - public const string DoorFront = Material.Rounded.DoorFront; - public const string DoorSliding = Material.Rounded.DoorSliding; - public const string Doorbell = Material.Rounded.Doorbell; - public const string DoubleArrow = Material.Rounded.DoubleArrow; - public const string DownhillSkiing = Material.Rounded.DownhillSkiing; - public const string Download = Material.Rounded.Download; - public const string DownloadDone = Material.Rounded.DownloadDone; - public const string DownloadForOffline = Material.Rounded.DownloadForOffline; - public const string Downloading = Material.Rounded.Downloading; - public const string Drafts = Material.Rounded.Drafts; - public const string DragHandle = Material.Rounded.DragHandle; - public const string DragIndicator = Material.Rounded.DragIndicator; - public const string Draw = Material.Rounded.Draw; - public const string DriveEta = Material.Rounded.DriveEta; - public const string DriveFileMove = Material.Rounded.DriveFileMove; - public const string DriveFileMoveRtl = Material.Rounded.DriveFileMoveRtl; - public const string DriveFileRenameOutline = Material.Rounded.DriveFileRenameOutline; - public const string DriveFolderUpload = Material.Rounded.DriveFolderUpload; - public const string Dry = Material.Rounded.Dry; - public const string DryCleaning = Material.Rounded.DryCleaning; - public const string Duo = Material.Rounded.Duo; - public const string Dvr = Material.Rounded.Dvr; - public const string DynamicFeed = Material.Rounded.DynamicFeed; - public const string DynamicForm = Material.Rounded.DynamicForm; - public const string EMobiledata = Material.Rounded.EMobiledata; - public const string Earbuds = Material.Rounded.Earbuds; - public const string EarbudsBattery = Material.Rounded.EarbudsBattery; - public const string East = Material.Rounded.East; - public const string EdgesensorHigh = Material.Rounded.EdgesensorHigh; - public const string EdgesensorLow = Material.Rounded.EdgesensorLow; - public const string Edit = Material.Rounded.Edit; - public const string EditAttributes = Material.Rounded.EditAttributes; - public const string EditCalendar = Material.Rounded.EditCalendar; - public const string EditLocation = Material.Rounded.EditLocation; - public const string EditLocationAlt = Material.Rounded.EditLocationAlt; - public const string EditNote = Material.Rounded.EditNote; - public const string EditNotifications = Material.Rounded.EditNotifications; - public const string EditOff = Material.Rounded.EditOff; - public const string EditRoad = Material.Rounded.EditRoad; - public const string Egg = Material.Rounded.Egg; - public const string EggAlt = Material.Rounded.EggAlt; - public const string Eject = Material.Rounded.Eject; - public const string Elderly = Material.Rounded.Elderly; - public const string ElderlyWoman = Material.Rounded.ElderlyWoman; - public const string ElectricBike = Material.Rounded.ElectricBike; - public const string ElectricCar = Material.Rounded.ElectricCar; - public const string ElectricMoped = Material.Rounded.ElectricMoped; - public const string ElectricRickshaw = Material.Rounded.ElectricRickshaw; - public const string ElectricScooter = Material.Rounded.ElectricScooter; - public const string ElectricalServices = Material.Rounded.ElectricalServices; - public const string Elevator = Material.Rounded.Elevator; - public const string Email = Material.Rounded.Email; - public const string Emergency = Material.Rounded.Emergency; - public const string EmergencyRecording = Material.Rounded.EmergencyRecording; - public const string EmergencyShare = Material.Rounded.EmergencyShare; - public const string EmojiEmotions = Material.Rounded.EmojiEmotions; - public const string EmojiEvents = Material.Rounded.EmojiEvents; - public const string EmojiFoodBeverage = Material.Rounded.EmojiFoodBeverage; - public const string EmojiNature = Material.Rounded.EmojiNature; - public const string EmojiObjects = Material.Rounded.EmojiObjects; - public const string EmojiPeople = Material.Rounded.EmojiPeople; - public const string EmojiSymbols = Material.Rounded.EmojiSymbols; - public const string EmojiTransportation = Material.Rounded.EmojiTransportation; - public const string Engineering = Material.Rounded.Engineering; - public const string EnhancedEncryption = Material.Rounded.EnhancedEncryption; - public const string Equalizer = Material.Rounded.Equalizer; - public const string Error = Material.Rounded.Error; - public const string ErrorOutline = Material.Rounded.ErrorOutline; - public const string Escalator = Material.Rounded.Escalator; - public const string EscalatorWarning = Material.Rounded.EscalatorWarning; - public const string Euro = Material.Rounded.Euro; - public const string EuroSymbol = Material.Rounded.EuroSymbol; - public const string EvStation = Material.Rounded.EvStation; - public const string Event = Material.Rounded.Event; - public const string EventAvailable = Material.Rounded.EventAvailable; - public const string EventBusy = Material.Rounded.EventBusy; - public const string EventNote = Material.Rounded.EventNote; - public const string EventRepeat = Material.Rounded.EventRepeat; - public const string EventSeat = Material.Rounded.EventSeat; - public const string ExitToApp = Material.Rounded.ExitToApp; - public const string Expand = Material.Rounded.Expand; - public const string ExpandCircleDown = Material.Rounded.ExpandCircleDown; - public const string ExpandLess = Material.Rounded.ExpandLess; - public const string ExpandMore = Material.Rounded.ExpandMore; - public const string Explicit = Material.Rounded.Explicit; - public const string Explore = Material.Rounded.Explore; - public const string ExploreOff = Material.Rounded.ExploreOff; - public const string Exposure = Material.Rounded.Exposure; - public const string ExposureNeg1 = Material.Rounded.ExposureNeg1; - public const string ExposureNeg2 = Material.Rounded.ExposureNeg2; - public const string ExposurePlus1 = Material.Rounded.ExposurePlus1; - public const string ExposurePlus2 = Material.Rounded.ExposurePlus2; - public const string ExposureZero = Material.Rounded.ExposureZero; - public const string Extension = Material.Rounded.Extension; - public const string ExtensionOff = Material.Rounded.ExtensionOff; - public const string Face = Material.Rounded.Face; - public const string FaceRetouchingNatural = Material.Rounded.FaceRetouchingNatural; - public const string FaceRetouchingOff = Material.Rounded.FaceRetouchingOff; - public const string FactCheck = Material.Rounded.FactCheck; - public const string Factory = Material.Rounded.Factory; - public const string FamilyRestroom = Material.Rounded.FamilyRestroom; - public const string FastForward = Material.Rounded.FastForward; - public const string FastRewind = Material.Rounded.FastRewind; - public const string Fastfood = Material.Rounded.Fastfood; - public const string Favorite = Material.Rounded.Favorite; - public const string FavoriteBorder = Material.Rounded.FavoriteBorder; - public const string Fax = Material.Rounded.Fax; - public const string FeaturedPlayList = Material.Rounded.FeaturedPlayList; - public const string FeaturedVideo = Material.Rounded.FeaturedVideo; - public const string Feed = Material.Rounded.Feed; - public const string Feedback = Material.Rounded.Feedback; - public const string Female = Material.Rounded.Female; - public const string Fence = Material.Rounded.Fence; - public const string Festival = Material.Rounded.Festival; - public const string FiberDvr = Material.Rounded.FiberDvr; - public const string FiberManualRecord = Material.Rounded.FiberManualRecord; - public const string FiberNew = Material.Rounded.FiberNew; - public const string FiberPin = Material.Rounded.FiberPin; - public const string FiberSmartRecord = Material.Rounded.FiberSmartRecord; - public const string FileCopy = Material.Rounded.FileCopy; - public const string FileDownload = Material.Rounded.FileDownload; - public const string FileDownloadDone = Material.Rounded.FileDownloadDone; - public const string FileDownloadOff = Material.Rounded.FileDownloadOff; - public const string FileOpen = Material.Rounded.FileOpen; - public const string FilePresent = Material.Rounded.FilePresent; - public const string FileUpload = Material.Rounded.FileUpload; - public const string Filter = Material.Rounded.Filter; - public const string Filter1 = Material.Rounded.Filter1; - public const string Filter2 = Material.Rounded.Filter2; - public const string Filter3 = Material.Rounded.Filter3; - public const string Filter4 = Material.Rounded.Filter4; - public const string Filter5 = Material.Rounded.Filter5; - public const string Filter6 = Material.Rounded.Filter6; - public const string Filter7 = Material.Rounded.Filter7; - public const string Filter8 = Material.Rounded.Filter8; - public const string Filter9 = Material.Rounded.Filter9; - public const string Filter9Plus = Material.Rounded.Filter9Plus; - public const string FilterAlt = Material.Rounded.FilterAlt; - public const string FilterAltOff = Material.Rounded.FilterAltOff; - public const string FilterBAndW = Material.Rounded.FilterBAndW; - public const string FilterCenterFocus = Material.Rounded.FilterCenterFocus; - public const string FilterDrama = Material.Rounded.FilterDrama; - public const string FilterFrames = Material.Rounded.FilterFrames; - public const string FilterHdr = Material.Rounded.FilterHdr; - public const string FilterList = Material.Rounded.FilterList; - public const string FilterListOff = Material.Rounded.FilterListOff; - public const string FilterNone = Material.Rounded.FilterNone; - public const string FilterTiltShift = Material.Rounded.FilterTiltShift; - public const string FilterVintage = Material.Rounded.FilterVintage; - public const string FindInPage = Material.Rounded.FindInPage; - public const string FindReplace = Material.Rounded.FindReplace; - public const string Fingerprint = Material.Rounded.Fingerprint; - public const string FireExtinguisher = Material.Rounded.FireExtinguisher; - public const string Fireplace = Material.Rounded.Fireplace; - public const string FirstPage = Material.Rounded.FirstPage; - public const string FitScreen = Material.Rounded.FitScreen; - public const string Fitbit = Material.Rounded.Fitbit; - public const string FitnessCenter = Material.Rounded.FitnessCenter; - public const string Flag = Material.Rounded.Flag; - public const string FlagCircle = Material.Rounded.FlagCircle; - public const string Flaky = Material.Rounded.Flaky; - public const string Flare = Material.Rounded.Flare; - public const string FlashAuto = Material.Rounded.FlashAuto; - public const string FlashOff = Material.Rounded.FlashOff; - public const string FlashOn = Material.Rounded.FlashOn; - public const string FlashlightOff = Material.Rounded.FlashlightOff; - public const string FlashlightOn = Material.Rounded.FlashlightOn; - public const string Flatware = Material.Rounded.Flatware; - public const string Flight = Material.Rounded.Flight; - public const string FlightClass = Material.Rounded.FlightClass; - public const string FlightLand = Material.Rounded.FlightLand; - public const string FlightTakeoff = Material.Rounded.FlightTakeoff; - public const string Flip = Material.Rounded.Flip; - public const string FlipCameraAndroid = Material.Rounded.FlipCameraAndroid; - public const string FlipCameraIos = Material.Rounded.FlipCameraIos; - public const string FlipToBack = Material.Rounded.FlipToBack; - public const string FlipToFront = Material.Rounded.FlipToFront; - public const string Flood = Material.Rounded.Flood; - public const string Flourescent = Material.Rounded.Flourescent; - public const string FlutterDash = Material.Rounded.FlutterDash; - public const string FmdBad = Material.Rounded.FmdBad; - public const string FmdGood = Material.Rounded.FmdGood; - public const string Folder = Material.Rounded.Folder; - public const string FolderCopy = Material.Rounded.FolderCopy; - public const string FolderDelete = Material.Rounded.FolderDelete; - public const string FolderOff = Material.Rounded.FolderOff; - public const string FolderOpen = Material.Rounded.FolderOpen; - public const string FolderShared = Material.Rounded.FolderShared; - public const string FolderSpecial = Material.Rounded.FolderSpecial; - public const string FolderZip = Material.Rounded.FolderZip; - public const string FollowTheSigns = Material.Rounded.FollowTheSigns; - public const string FontDownload = Material.Rounded.FontDownload; - public const string FontDownloadOff = Material.Rounded.FontDownloadOff; - public const string FoodBank = Material.Rounded.FoodBank; - public const string Forest = Material.Rounded.Forest; - public const string ForkLeft = Material.Rounded.ForkLeft; - public const string ForkRight = Material.Rounded.ForkRight; - public const string FormatAlignCenter = Material.Rounded.FormatAlignCenter; - public const string FormatAlignJustify = Material.Rounded.FormatAlignJustify; - public const string FormatAlignLeft = Material.Rounded.FormatAlignLeft; - public const string FormatAlignRight = Material.Rounded.FormatAlignRight; - public const string FormatBold = Material.Rounded.FormatBold; - public const string FormatClear = Material.Rounded.FormatClear; - public const string FormatColorFill = Material.Rounded.FormatColorFill; - public const string FormatColorReset = Material.Rounded.FormatColorReset; - public const string FormatColorText = Material.Rounded.FormatColorText; - public const string FormatIndentDecrease = Material.Rounded.FormatIndentDecrease; - public const string FormatIndentIncrease = Material.Rounded.FormatIndentIncrease; - public const string FormatItalic = Material.Rounded.FormatItalic; - public const string FormatLineSpacing = Material.Rounded.FormatLineSpacing; - public const string FormatListBulleted = Material.Rounded.FormatListBulleted; - public const string FormatListNumbered = Material.Rounded.FormatListNumbered; - public const string FormatListNumberedRtl = Material.Rounded.FormatListNumberedRtl; - public const string FormatOverline = Material.Rounded.FormatOverline; - public const string FormatPaint = Material.Rounded.FormatPaint; - public const string FormatQuote = Material.Rounded.FormatQuote; - public const string FormatShapes = Material.Rounded.FormatShapes; - public const string FormatSize = Material.Rounded.FormatSize; - public const string FormatStrikethrough = Material.Rounded.FormatStrikethrough; - public const string FormatTextdirectionLToR = Material.Rounded.FormatTextdirectionLToR; - public const string FormatTextdirectionRToL = Material.Rounded.FormatTextdirectionRToL; - public const string FormatUnderlined = Material.Rounded.FormatUnderlined; - public const string Fort = Material.Rounded.Fort; - public const string Forum = Material.Rounded.Forum; - public const string Forward = Material.Rounded.Forward; - public const string Forward10 = Material.Rounded.Forward10; - public const string Forward30 = Material.Rounded.Forward30; - public const string Forward5 = Material.Rounded.Forward5; - public const string ForwardToInbox = Material.Rounded.ForwardToInbox; - public const string Foundation = Material.Rounded.Foundation; - public const string FreeBreakfast = Material.Rounded.FreeBreakfast; - public const string FreeCancellation = Material.Rounded.FreeCancellation; - public const string FrontHand = Material.Rounded.FrontHand; - public const string Fullscreen = Material.Rounded.Fullscreen; - public const string FullscreenExit = Material.Rounded.FullscreenExit; - public const string Functions = Material.Rounded.Functions; - public const string GMobiledata = Material.Rounded.GMobiledata; - public const string GTranslate = Material.Rounded.GTranslate; - public const string Gamepad = Material.Rounded.Gamepad; - public const string Games = Material.Rounded.Games; - public const string Garage = Material.Rounded.Garage; - public const string Gavel = Material.Rounded.Gavel; - public const string GeneratingTokens = Material.Rounded.GeneratingTokens; - public const string Gesture = Material.Rounded.Gesture; - public const string GetApp = Material.Rounded.GetApp; - public const string Gif = Material.Rounded.Gif; - public const string GifBox = Material.Rounded.GifBox; - public const string Girl = Material.Rounded.Girl; - public const string Gite = Material.Rounded.Gite; - public const string GolfCourse = Material.Rounded.GolfCourse; - public const string GppBad = Material.Rounded.GppBad; - public const string GppGood = Material.Rounded.GppGood; - public const string GppMaybe = Material.Rounded.GppMaybe; - public const string GpsFixed = Material.Rounded.GpsFixed; - public const string GpsNotFixed = Material.Rounded.GpsNotFixed; - public const string GpsOff = Material.Rounded.GpsOff; - public const string Grade = Material.Rounded.Grade; - public const string Gradient = Material.Rounded.Gradient; - public const string Grading = Material.Rounded.Grading; - public const string Grain = Material.Rounded.Grain; - public const string GraphicEq = Material.Rounded.GraphicEq; - public const string Grass = Material.Rounded.Grass; - public const string Grid3x3 = Material.Rounded.Grid3x3; - public const string Grid4x4 = Material.Rounded.Grid4x4; - public const string GridGoldenratio = Material.Rounded.GridGoldenratio; - public const string GridOff = Material.Rounded.GridOff; - public const string GridOn = Material.Rounded.GridOn; - public const string GridView = Material.Rounded.GridView; - public const string Group = Material.Rounded.Group; - public const string GroupAdd = Material.Rounded.GroupAdd; - public const string GroupOff = Material.Rounded.GroupOff; - public const string GroupRemove = Material.Rounded.GroupRemove; - public const string GroupWork = Material.Rounded.GroupWork; - public const string Groups = Material.Rounded.Groups; - public const string HMobiledata = Material.Rounded.HMobiledata; - public const string HPlusMobiledata = Material.Rounded.HPlusMobiledata; - public const string Hail = Material.Rounded.Hail; - public const string Handshake = Material.Rounded.Handshake; - public const string Handyman = Material.Rounded.Handyman; - public const string Hardware = Material.Rounded.Hardware; - public const string Hd = Material.Rounded.Hd; - public const string HdrAuto = Material.Rounded.HdrAuto; - public const string HdrAutoSelect = Material.Rounded.HdrAutoSelect; - public const string HdrEnhancedSelect = Material.Rounded.HdrEnhancedSelect; - public const string HdrOff = Material.Rounded.HdrOff; - public const string HdrOffSelect = Material.Rounded.HdrOffSelect; - public const string HdrOn = Material.Rounded.HdrOn; - public const string HdrOnSelect = Material.Rounded.HdrOnSelect; - public const string HdrPlus = Material.Rounded.HdrPlus; - public const string HdrStrong = Material.Rounded.HdrStrong; - public const string HdrWeak = Material.Rounded.HdrWeak; - public const string Headphones = Material.Rounded.Headphones; - public const string HeadphonesBattery = Material.Rounded.HeadphonesBattery; - public const string Headset = Material.Rounded.Headset; - public const string HeadsetMic = Material.Rounded.HeadsetMic; - public const string HeadsetOff = Material.Rounded.HeadsetOff; - public const string Healing = Material.Rounded.Healing; - public const string HealthAndSafety = Material.Rounded.HealthAndSafety; - public const string Hearing = Material.Rounded.Hearing; - public const string HearingDisabled = Material.Rounded.HearingDisabled; - public const string HeartBroken = Material.Rounded.HeartBroken; - public const string Height = Material.Rounded.Height; - public const string Help = Material.Rounded.Help; - public const string HelpCenter = Material.Rounded.HelpCenter; - public const string HelpOutline = Material.Rounded.HelpOutline; - public const string Hevc = Material.Rounded.Hevc; - public const string Hexagon = Material.Rounded.Hexagon; - public const string HideImage = Material.Rounded.HideImage; - public const string HideSource = Material.Rounded.HideSource; - public const string HighQuality = Material.Rounded.HighQuality; - public const string Highlight = Material.Rounded.Highlight; - public const string HighlightAlt = Material.Rounded.HighlightAlt; - public const string HighlightOff = Material.Rounded.HighlightOff; - public const string Hiking = Material.Rounded.Hiking; - public const string History = Material.Rounded.History; - public const string HistoryEdu = Material.Rounded.HistoryEdu; - public const string HistoryToggleOff = Material.Rounded.HistoryToggleOff; - public const string Hive = Material.Rounded.Hive; - public const string Hls = Material.Rounded.Hls; - public const string HlsOff = Material.Rounded.HlsOff; - public const string HolidayVillage = Material.Rounded.HolidayVillage; - public const string Home = Material.Rounded.Home; - public const string HomeMax = Material.Rounded.HomeMax; - public const string HomeMini = Material.Rounded.HomeMini; - public const string HomeRepairService = Material.Rounded.HomeRepairService; - public const string HomeWork = Material.Rounded.HomeWork; - public const string HorizontalDistribute = Material.Rounded.HorizontalDistribute; - public const string HorizontalRule = Material.Rounded.HorizontalRule; - public const string HorizontalSplit = Material.Rounded.HorizontalSplit; - public const string HotTub = Material.Rounded.HotTub; - public const string Hotel = Material.Rounded.Hotel; - public const string HotelClass = Material.Rounded.HotelClass; - public const string HourglassBottom = Material.Rounded.HourglassBottom; - public const string HourglassDisabled = Material.Rounded.HourglassDisabled; - public const string HourglassEmpty = Material.Rounded.HourglassEmpty; - public const string HourglassFull = Material.Rounded.HourglassFull; - public const string HourglassTop = Material.Rounded.HourglassTop; - public const string House = Material.Rounded.House; - public const string HouseSiding = Material.Rounded.HouseSiding; - public const string Houseboat = Material.Rounded.Houseboat; - public const string HowToReg = Material.Rounded.HowToReg; - public const string HowToVote = Material.Rounded.HowToVote; - public const string Html = Material.Rounded.Html; - public const string Http = Material.Rounded.Http; - public const string Https = Material.Rounded.Https; - public const string Hub = Material.Rounded.Hub; - public const string Hvac = Material.Rounded.Hvac; - public const string IceSkating = Material.Rounded.IceSkating; - public const string Icecream = Material.Rounded.Icecream; - public const string Image = Material.Rounded.Image; - public const string ImageAspectRatio = Material.Rounded.ImageAspectRatio; - public const string ImageNotSupported = Material.Rounded.ImageNotSupported; - public const string ImageSearch = Material.Rounded.ImageSearch; - public const string ImagesearchRoller = Material.Rounded.ImagesearchRoller; - public const string ImportContacts = Material.Rounded.ImportContacts; - public const string ImportExport = Material.Rounded.ImportExport; - public const string ImportantDevices = Material.Rounded.ImportantDevices; - public const string Inbox = Material.Rounded.Inbox; - public const string IncompleteCircle = Material.Rounded.IncompleteCircle; - public const string IndeterminateCheckBox = Material.Rounded.IndeterminateCheckBox; - public const string Info = Material.Rounded.Info; - public const string Input = Material.Rounded.Input; - public const string InsertChart = Material.Rounded.InsertChart; - public const string InsertChartOutlined = Material.Rounded.InsertChartOutlined; - public const string InsertComment = Material.Rounded.InsertComment; - public const string InsertDriveFile = Material.Rounded.InsertDriveFile; - public const string InsertEmoticon = Material.Rounded.InsertEmoticon; - public const string InsertInvitation = Material.Rounded.InsertInvitation; - public const string InsertLink = Material.Rounded.InsertLink; - public const string InsertPageBreak = Material.Rounded.InsertPageBreak; - public const string InsertPhoto = Material.Rounded.InsertPhoto; - public const string Insights = Material.Rounded.Insights; - public const string InstallDesktop = Material.Rounded.InstallDesktop; - public const string InstallMobile = Material.Rounded.InstallMobile; - public const string IntegrationInstructions = Material.Rounded.IntegrationInstructions; - public const string Interests = Material.Rounded.Interests; - public const string InterpreterMode = Material.Rounded.InterpreterMode; - public const string Inventory = Material.Rounded.Inventory; - public const string Inventory2 = Material.Rounded.Inventory2; - public const string InvertColors = Material.Rounded.InvertColors; - public const string InvertColorsOff = Material.Rounded.InvertColorsOff; - public const string IosShare = Material.Rounded.IosShare; - public const string Iron = Material.Rounded.Iron; - public const string Iso = Material.Rounded.Iso; - public const string Javascript = Material.Rounded.Javascript; - public const string JoinFull = Material.Rounded.JoinFull; - public const string JoinInner = Material.Rounded.JoinInner; - public const string JoinLeft = Material.Rounded.JoinLeft; - public const string JoinRight = Material.Rounded.JoinRight; - public const string Kayaking = Material.Rounded.Kayaking; - public const string KebabDining = Material.Rounded.KebabDining; - public const string Key = Material.Rounded.Key; - public const string KeyOff = Material.Rounded.KeyOff; - public const string Keyboard = Material.Rounded.Keyboard; - public const string KeyboardAlt = Material.Rounded.KeyboardAlt; - public const string KeyboardArrowDown = Material.Rounded.KeyboardArrowDown; - public const string KeyboardArrowLeft = Material.Rounded.KeyboardArrowLeft; - public const string KeyboardArrowRight = Material.Rounded.KeyboardArrowRight; - public const string KeyboardArrowUp = Material.Rounded.KeyboardArrowUp; - public const string KeyboardBackspace = Material.Rounded.KeyboardBackspace; - public const string KeyboardCapslock = Material.Rounded.KeyboardCapslock; - public const string KeyboardCommandKey = Material.Rounded.KeyboardCommandKey; - public const string KeyboardControlKey = Material.Rounded.KeyboardControlKey; - public const string KeyboardDoubleArrowDown = Material.Rounded.KeyboardDoubleArrowDown; - public const string KeyboardDoubleArrowLeft = Material.Rounded.KeyboardDoubleArrowLeft; - public const string KeyboardDoubleArrowRight = Material.Rounded.KeyboardDoubleArrowRight; - public const string KeyboardDoubleArrowUp = Material.Rounded.KeyboardDoubleArrowUp; - public const string KeyboardHide = Material.Rounded.KeyboardHide; - public const string KeyboardOptionKey = Material.Rounded.KeyboardOptionKey; - public const string KeyboardReturn = Material.Rounded.KeyboardReturn; - public const string KeyboardTab = Material.Rounded.KeyboardTab; - public const string KeyboardVoice = Material.Rounded.KeyboardVoice; - public const string KingBed = Material.Rounded.KingBed; - public const string Kitchen = Material.Rounded.Kitchen; - public const string Kitesurfing = Material.Rounded.Kitesurfing; - public const string Label = Material.Rounded.Label; - public const string LabelImportant = Material.Rounded.LabelImportant; - public const string LabelOff = Material.Rounded.LabelOff; - public const string Lan = Material.Rounded.Lan; - public const string Landscape = Material.Rounded.Landscape; - public const string Landslide = Material.Rounded.Landslide; - public const string Language = Material.Rounded.Language; - public const string Laptop = Material.Rounded.Laptop; - public const string LaptopChromebook = Material.Rounded.LaptopChromebook; - public const string LaptopMac = Material.Rounded.LaptopMac; - public const string LaptopWindows = Material.Rounded.LaptopWindows; - public const string LastPage = Material.Rounded.LastPage; - public const string Launch = Material.Rounded.Launch; - public const string Layers = Material.Rounded.Layers; - public const string LayersClear = Material.Rounded.LayersClear; - public const string Leaderboard = Material.Rounded.Leaderboard; - public const string LeakAdd = Material.Rounded.LeakAdd; - public const string LeakRemove = Material.Rounded.LeakRemove; - public const string LegendToggle = Material.Rounded.LegendToggle; - public const string Lens = Material.Rounded.Lens; - public const string LensBlur = Material.Rounded.LensBlur; - public const string LibraryAdd = Material.Rounded.LibraryAdd; - public const string LibraryAddCheck = Material.Rounded.LibraryAddCheck; - public const string LibraryBooks = Material.Rounded.LibraryBooks; - public const string LibraryMusic = Material.Rounded.LibraryMusic; - public const string Light = Material.Rounded.Light; - public const string LightMode = Material.Rounded.LightMode; - public const string Lightbulb = Material.Rounded.Lightbulb; - public const string LightbulbCircle = Material.Rounded.LightbulbCircle; - public const string LineAxis = Material.Rounded.LineAxis; - public const string LineStyle = Material.Rounded.LineStyle; - public const string LineWeight = Material.Rounded.LineWeight; - public const string LinearScale = Material.Rounded.LinearScale; - public const string Link = Material.Rounded.Link; - public const string LinkOff = Material.Rounded.LinkOff; - public const string LinkedCamera = Material.Rounded.LinkedCamera; - public const string Liquor = Material.Rounded.Liquor; - public const string List = Material.Rounded.List; - public const string ListAlt = Material.Rounded.ListAlt; - public const string LiveHelp = Material.Rounded.LiveHelp; - public const string LiveTv = Material.Rounded.LiveTv; - public const string Living = Material.Rounded.Living; - public const string LocalActivity = Material.Rounded.LocalActivity; - public const string LocalAirport = Material.Rounded.LocalAirport; - public const string LocalAtm = Material.Rounded.LocalAtm; - public const string LocalBar = Material.Rounded.LocalBar; - public const string LocalCafe = Material.Rounded.LocalCafe; - public const string LocalCarWash = Material.Rounded.LocalCarWash; - public const string LocalConvenienceStore = Material.Rounded.LocalConvenienceStore; - public const string LocalDining = Material.Rounded.LocalDining; - public const string LocalDrink = Material.Rounded.LocalDrink; - public const string LocalFireDepartment = Material.Rounded.LocalFireDepartment; - public const string LocalFlorist = Material.Rounded.LocalFlorist; - public const string LocalGasStation = Material.Rounded.LocalGasStation; - public const string LocalGroceryStore = Material.Rounded.LocalGroceryStore; - public const string LocalHospital = Material.Rounded.LocalHospital; - public const string LocalHotel = Material.Rounded.LocalHotel; - public const string LocalLaundryService = Material.Rounded.LocalLaundryService; - public const string LocalLibrary = Material.Rounded.LocalLibrary; - public const string LocalMall = Material.Rounded.LocalMall; - public const string LocalMovies = Material.Rounded.LocalMovies; - public const string LocalOffer = Material.Rounded.LocalOffer; - public const string LocalParking = Material.Rounded.LocalParking; - public const string LocalPharmacy = Material.Rounded.LocalPharmacy; - public const string LocalPhone = Material.Rounded.LocalPhone; - public const string LocalPizza = Material.Rounded.LocalPizza; - public const string LocalPlay = Material.Rounded.LocalPlay; - public const string LocalPolice = Material.Rounded.LocalPolice; - public const string LocalPostOffice = Material.Rounded.LocalPostOffice; - public const string LocalPrintshop = Material.Rounded.LocalPrintshop; - public const string LocalSee = Material.Rounded.LocalSee; - public const string LocalShipping = Material.Rounded.LocalShipping; - public const string LocalTaxi = Material.Rounded.LocalTaxi; - public const string LocationCity = Material.Rounded.LocationCity; - public const string LocationDisabled = Material.Rounded.LocationDisabled; - public const string LocationOff = Material.Rounded.LocationOff; - public const string LocationOn = Material.Rounded.LocationOn; - public const string LocationSearching = Material.Rounded.LocationSearching; - public const string Lock = Material.Rounded.Lock; - public const string LockClock = Material.Rounded.LockClock; - public const string LockOpen = Material.Rounded.LockOpen; - public const string LockReset = Material.Rounded.LockReset; - public const string Login = Material.Rounded.Login; - public const string LogoDev = Material.Rounded.LogoDev; - public const string Logout = Material.Rounded.Logout; - public const string Looks = Material.Rounded.Looks; - public const string Looks3 = Material.Rounded.Looks3; - public const string Looks4 = Material.Rounded.Looks4; - public const string Looks5 = Material.Rounded.Looks5; - public const string Looks6 = Material.Rounded.Looks6; - public const string LooksOne = Material.Rounded.LooksOne; - public const string LooksTwo = Material.Rounded.LooksTwo; - public const string Loop = Material.Rounded.Loop; - public const string Loupe = Material.Rounded.Loupe; - public const string LowPriority = Material.Rounded.LowPriority; - public const string Loyalty = Material.Rounded.Loyalty; - public const string LteMobiledata = Material.Rounded.LteMobiledata; - public const string LtePlusMobiledata = Material.Rounded.LtePlusMobiledata; - public const string Luggage = Material.Rounded.Luggage; - public const string LunchDining = Material.Rounded.LunchDining; - public const string Mail = Material.Rounded.Mail; - public const string MailOutline = Material.Rounded.MailOutline; - public const string Male = Material.Rounded.Male; - public const string Man = Material.Rounded.Man; - public const string ManageAccounts = Material.Rounded.ManageAccounts; - public const string ManageHistory = Material.Rounded.ManageHistory; - public const string ManageSearch = Material.Rounded.ManageSearch; - public const string Map = Material.Rounded.Map; - public const string MapsHomeWork = Material.Rounded.MapsHomeWork; - public const string MapsUgc = Material.Rounded.MapsUgc; - public const string Margin = Material.Rounded.Margin; - public const string MarkAsUnread = Material.Rounded.MarkAsUnread; - public const string MarkChatRead = Material.Rounded.MarkChatRead; - public const string MarkChatUnread = Material.Rounded.MarkChatUnread; - public const string MarkEmailRead = Material.Rounded.MarkEmailRead; - public const string MarkEmailUnread = Material.Rounded.MarkEmailUnread; - public const string MarkUnreadChatAlt = Material.Rounded.MarkUnreadChatAlt; - public const string Markunread = Material.Rounded.Markunread; - public const string MarkunreadMailbox = Material.Rounded.MarkunreadMailbox; - public const string Masks = Material.Rounded.Masks; - public const string Maximize = Material.Rounded.Maximize; - public const string MediaBluetoothOff = Material.Rounded.MediaBluetoothOff; - public const string MediaBluetoothOn = Material.Rounded.MediaBluetoothOn; - public const string Mediation = Material.Rounded.Mediation; - public const string MedicalInformation = Material.Rounded.MedicalInformation; - public const string MedicalServices = Material.Rounded.MedicalServices; - public const string Medication = Material.Rounded.Medication; - public const string MedicationLiquid = Material.Rounded.MedicationLiquid; - public const string MeetingRoom = Material.Rounded.MeetingRoom; - public const string Memory = Material.Rounded.Memory; - public const string Menu = Material.Rounded.Menu; - public const string MenuBook = Material.Rounded.MenuBook; - public const string MenuOpen = Material.Rounded.MenuOpen; - public const string Merge = Material.Rounded.Merge; - public const string MergeType = Material.Rounded.MergeType; - public const string Message = Material.Rounded.Message; - public const string Mic = Material.Rounded.Mic; - public const string MicExternalOff = Material.Rounded.MicExternalOff; - public const string MicExternalOn = Material.Rounded.MicExternalOn; - public const string MicNone = Material.Rounded.MicNone; - public const string MicOff = Material.Rounded.MicOff; - public const string Microwave = Material.Rounded.Microwave; - public const string MilitaryTech = Material.Rounded.MilitaryTech; - public const string Minimize = Material.Rounded.Minimize; - public const string MinorCrash = Material.Rounded.MinorCrash; - public const string MiscellaneousServices = Material.Rounded.MiscellaneousServices; - public const string MissedVideoCall = Material.Rounded.MissedVideoCall; - public const string Mms = Material.Rounded.Mms; - public const string MobileFriendly = Material.Rounded.MobileFriendly; - public const string MobileOff = Material.Rounded.MobileOff; - public const string MobileScreenShare = Material.Rounded.MobileScreenShare; - public const string MobiledataOff = Material.Rounded.MobiledataOff; - public const string Mode = Material.Rounded.Mode; - public const string ModeComment = Material.Rounded.ModeComment; - public const string ModeEdit = Material.Rounded.ModeEdit; - public const string ModeEditOutline = Material.Rounded.ModeEditOutline; - public const string ModeNight = Material.Rounded.ModeNight; - public const string ModeOfTravel = Material.Rounded.ModeOfTravel; - public const string ModeStandby = Material.Rounded.ModeStandby; - public const string ModelTraining = Material.Rounded.ModelTraining; - public const string MonetizationOn = Material.Rounded.MonetizationOn; - public const string Money = Material.Rounded.Money; - public const string MoneyOff = Material.Rounded.MoneyOff; - public const string MoneyOffCsred = Material.Rounded.MoneyOffCsred; - public const string Monitor = Material.Rounded.Monitor; - public const string MonitorHeart = Material.Rounded.MonitorHeart; - public const string MonitorWeight = Material.Rounded.MonitorWeight; - public const string MonochromePhotos = Material.Rounded.MonochromePhotos; - public const string Mood = Material.Rounded.Mood; - public const string MoodBad = Material.Rounded.MoodBad; - public const string Moped = Material.Rounded.Moped; - public const string More = Material.Rounded.More; - public const string MoreHoriz = Material.Rounded.MoreHoriz; - public const string MoreTime = Material.Rounded.MoreTime; - public const string MoreVert = Material.Rounded.MoreVert; - public const string Mosque = Material.Rounded.Mosque; - public const string MotionPhotosAuto = Material.Rounded.MotionPhotosAuto; - public const string MotionPhotosOff = Material.Rounded.MotionPhotosOff; - public const string MotionPhotosOn = Material.Rounded.MotionPhotosOn; - public const string MotionPhotosPause = Material.Rounded.MotionPhotosPause; - public const string MotionPhotosPaused = Material.Rounded.MotionPhotosPaused; - public const string Mouse = Material.Rounded.Mouse; - public const string MoveDown = Material.Rounded.MoveDown; - public const string MoveToInbox = Material.Rounded.MoveToInbox; - public const string MoveUp = Material.Rounded.MoveUp; - public const string Movie = Material.Rounded.Movie; - public const string MovieCreation = Material.Rounded.MovieCreation; - public const string MovieFilter = Material.Rounded.MovieFilter; - public const string Moving = Material.Rounded.Moving; - public const string Mp = Material.Rounded.Mp; - public const string MultilineChart = Material.Rounded.MultilineChart; - public const string MultipleStop = Material.Rounded.MultipleStop; - public const string Museum = Material.Rounded.Museum; - public const string MusicNote = Material.Rounded.MusicNote; - public const string MusicOff = Material.Rounded.MusicOff; - public const string MusicVideo = Material.Rounded.MusicVideo; - public const string MyLocation = Material.Rounded.MyLocation; - public const string Nat = Material.Rounded.Nat; - public const string Nature = Material.Rounded.Nature; - public const string NaturePeople = Material.Rounded.NaturePeople; - public const string NavigateBefore = Material.Rounded.NavigateBefore; - public const string NavigateNext = Material.Rounded.NavigateNext; - public const string Navigation = Material.Rounded.Navigation; - public const string NearMe = Material.Rounded.NearMe; - public const string NearMeDisabled = Material.Rounded.NearMeDisabled; - public const string NearbyError = Material.Rounded.NearbyError; - public const string NearbyOff = Material.Rounded.NearbyOff; - public const string NetworkCell = Material.Rounded.NetworkCell; - public const string NetworkCheck = Material.Rounded.NetworkCheck; - public const string NetworkLocked = Material.Rounded.NetworkLocked; - public const string NetworkPing = Material.Rounded.NetworkPing; - public const string NetworkWifi = Material.Rounded.NetworkWifi; - public const string NetworkWifi1Bar = Material.Rounded.NetworkWifi1Bar; - public const string NetworkWifi2Bar = Material.Rounded.NetworkWifi2Bar; - public const string NetworkWifi3Bar = Material.Rounded.NetworkWifi3Bar; - public const string NewLabel = Material.Rounded.NewLabel; - public const string NewReleases = Material.Rounded.NewReleases; - public const string Newspaper = Material.Rounded.Newspaper; - public const string NextPlan = Material.Rounded.NextPlan; - public const string NextWeek = Material.Rounded.NextWeek; - public const string Nfc = Material.Rounded.Nfc; - public const string NightShelter = Material.Rounded.NightShelter; - public const string Nightlife = Material.Rounded.Nightlife; - public const string Nightlight = Material.Rounded.Nightlight; - public const string NightlightRound = Material.Rounded.NightlightRound; - public const string NightsStay = Material.Rounded.NightsStay; - public const string NoAccounts = Material.Rounded.NoAccounts; - public const string NoBackpack = Material.Rounded.NoBackpack; - public const string NoCell = Material.Rounded.NoCell; - public const string NoCrash = Material.Rounded.NoCrash; - public const string NoDrinks = Material.Rounded.NoDrinks; - public const string NoEncryption = Material.Rounded.NoEncryption; - public const string NoEncryptionGmailerrorred = Material.Rounded.NoEncryptionGmailerrorred; - public const string NoFlash = Material.Rounded.NoFlash; - public const string NoFood = Material.Rounded.NoFood; - public const string NoLuggage = Material.Rounded.NoLuggage; - public const string NoMeals = Material.Rounded.NoMeals; - public const string NoMeetingRoom = Material.Rounded.NoMeetingRoom; - public const string NoPhotography = Material.Rounded.NoPhotography; - public const string NoSim = Material.Rounded.NoSim; - public const string NoStroller = Material.Rounded.NoStroller; - public const string NoTransfer = Material.Rounded.NoTransfer; - public const string NoiseAware = Material.Rounded.NoiseAware; - public const string NoiseControlOff = Material.Rounded.NoiseControlOff; - public const string NordicWalking = Material.Rounded.NordicWalking; - public const string North = Material.Rounded.North; - public const string NorthEast = Material.Rounded.NorthEast; - public const string NorthWest = Material.Rounded.NorthWest; - public const string NotAccessible = Material.Rounded.NotAccessible; - public const string NotInterested = Material.Rounded.NotInterested; - public const string NotListedLocation = Material.Rounded.NotListedLocation; - public const string NotStarted = Material.Rounded.NotStarted; - public const string Note = Material.Rounded.Note; - public const string NoteAdd = Material.Rounded.NoteAdd; - public const string NoteAlt = Material.Rounded.NoteAlt; - public const string Notes = Material.Rounded.Notes; - public const string NotificationAdd = Material.Rounded.NotificationAdd; - public const string NotificationImportant = Material.Rounded.NotificationImportant; - public const string Notifications = Material.Rounded.Notifications; - public const string NotificationsActive = Material.Rounded.NotificationsActive; - public const string NotificationsNone = Material.Rounded.NotificationsNone; - public const string NotificationsOff = Material.Rounded.NotificationsOff; - public const string NotificationsPaused = Material.Rounded.NotificationsPaused; - public const string Numbers = Material.Rounded.Numbers; - public const string OfflineBolt = Material.Rounded.OfflineBolt; - public const string OfflinePin = Material.Rounded.OfflinePin; - public const string OfflineShare = Material.Rounded.OfflineShare; - public const string OnDeviceTraining = Material.Rounded.OnDeviceTraining; - public const string OndemandVideo = Material.Rounded.OndemandVideo; - public const string OnlinePrediction = Material.Rounded.OnlinePrediction; - public const string Opacity = Material.Rounded.Opacity; - public const string OpenInBrowser = Material.Rounded.OpenInBrowser; - public const string OpenInFull = Material.Rounded.OpenInFull; - public const string OpenInNew = Material.Rounded.OpenInNew; - public const string OpenInNewOff = Material.Rounded.OpenInNewOff; - public const string OpenWith = Material.Rounded.OpenWith; - public const string OtherHouses = Material.Rounded.OtherHouses; - public const string Outbound = Material.Rounded.Outbound; - public const string Outbox = Material.Rounded.Outbox; - public const string OutdoorGrill = Material.Rounded.OutdoorGrill; - public const string Outlet = Material.Rounded.Outlet; - public const string OutlinedFlag = Material.Rounded.OutlinedFlag; - public const string Output = Material.Rounded.Output; - public const string Padding = Material.Rounded.Padding; - public const string Pages = Material.Rounded.Pages; - public const string Pageview = Material.Rounded.Pageview; - public const string Paid = Material.Rounded.Paid; - public const string Palette = Material.Rounded.Palette; - public const string PanTool = Material.Rounded.PanTool; - public const string PanToolAlt = Material.Rounded.PanToolAlt; - public const string Panorama = Material.Rounded.Panorama; - public const string PanoramaFishEye = Material.Rounded.PanoramaFishEye; - public const string PanoramaHorizontal = Material.Rounded.PanoramaHorizontal; - public const string PanoramaHorizontalSelect = Material.Rounded.PanoramaHorizontalSelect; - public const string PanoramaPhotosphere = Material.Rounded.PanoramaPhotosphere; - public const string PanoramaPhotosphereSelect = Material.Rounded.PanoramaPhotosphereSelect; - public const string PanoramaVertical = Material.Rounded.PanoramaVertical; - public const string PanoramaVerticalSelect = Material.Rounded.PanoramaVerticalSelect; - public const string PanoramaWideAngle = Material.Rounded.PanoramaWideAngle; - public const string PanoramaWideAngleSelect = Material.Rounded.PanoramaWideAngleSelect; - public const string Paragliding = Material.Rounded.Paragliding; - public const string Park = Material.Rounded.Park; - public const string PartyMode = Material.Rounded.PartyMode; - public const string Password = Material.Rounded.Password; - public const string Pattern = Material.Rounded.Pattern; - public const string Pause = Material.Rounded.Pause; - public const string PauseCircle = Material.Rounded.PauseCircle; - public const string PauseCircleFilled = Material.Rounded.PauseCircleFilled; - public const string PauseCircleOutline = Material.Rounded.PauseCircleOutline; - public const string PausePresentation = Material.Rounded.PausePresentation; - public const string Payment = Material.Rounded.Payment; - public const string Payments = Material.Rounded.Payments; - public const string PedalBike = Material.Rounded.PedalBike; - public const string Pending = Material.Rounded.Pending; - public const string PendingActions = Material.Rounded.PendingActions; - public const string Pentagon = Material.Rounded.Pentagon; - public const string People = Material.Rounded.People; - public const string PeopleAlt = Material.Rounded.PeopleAlt; - public const string PeopleOutline = Material.Rounded.PeopleOutline; - public const string Percent = Material.Rounded.Percent; - public const string PermCameraMic = Material.Rounded.PermCameraMic; - public const string PermContactCalendar = Material.Rounded.PermContactCalendar; - public const string PermDataSetting = Material.Rounded.PermDataSetting; - public const string PermDeviceInformation = Material.Rounded.PermDeviceInformation; - public const string PermIdentity = Material.Rounded.PermIdentity; - public const string PermMedia = Material.Rounded.PermMedia; - public const string PermPhoneMsg = Material.Rounded.PermPhoneMsg; - public const string PermScanWifi = Material.Rounded.PermScanWifi; - public const string Person = Material.Rounded.Person; - public const string PersonAdd = Material.Rounded.PersonAdd; - public const string PersonAddAlt = Material.Rounded.PersonAddAlt; - public const string PersonAddAlt1 = Material.Rounded.PersonAddAlt1; - public const string PersonAddDisabled = Material.Rounded.PersonAddDisabled; - public const string PersonOff = Material.Rounded.PersonOff; - public const string PersonOutline = Material.Rounded.PersonOutline; - public const string PersonPin = Material.Rounded.PersonPin; - public const string PersonPinCircle = Material.Rounded.PersonPinCircle; - public const string PersonRemove = Material.Rounded.PersonRemove; - public const string PersonRemoveAlt1 = Material.Rounded.PersonRemoveAlt1; - public const string PersonSearch = Material.Rounded.PersonSearch; - public const string PersonalInjury = Material.Rounded.PersonalInjury; - public const string PersonalVideo = Material.Rounded.PersonalVideo; - public const string PestControl = Material.Rounded.PestControl; - public const string PestControlRodent = Material.Rounded.PestControlRodent; - public const string Pets = Material.Rounded.Pets; - public const string Phishing = Material.Rounded.Phishing; - public const string Phone = Material.Rounded.Phone; - public const string PhoneAndroid = Material.Rounded.PhoneAndroid; - public const string PhoneBluetoothSpeaker = Material.Rounded.PhoneBluetoothSpeaker; - public const string PhoneCallback = Material.Rounded.PhoneCallback; - public const string PhoneDisabled = Material.Rounded.PhoneDisabled; - public const string PhoneEnabled = Material.Rounded.PhoneEnabled; - public const string PhoneForwarded = Material.Rounded.PhoneForwarded; - public const string PhoneInTalk = Material.Rounded.PhoneInTalk; - public const string PhoneIphone = Material.Rounded.PhoneIphone; - public const string PhoneLocked = Material.Rounded.PhoneLocked; - public const string PhoneMissed = Material.Rounded.PhoneMissed; - public const string PhonePaused = Material.Rounded.PhonePaused; - public const string Phonelink = Material.Rounded.Phonelink; - public const string PhonelinkErase = Material.Rounded.PhonelinkErase; - public const string PhonelinkLock = Material.Rounded.PhonelinkLock; - public const string PhonelinkOff = Material.Rounded.PhonelinkOff; - public const string PhonelinkRing = Material.Rounded.PhonelinkRing; - public const string PhonelinkSetup = Material.Rounded.PhonelinkSetup; - public const string Photo = Material.Rounded.Photo; - public const string PhotoAlbum = Material.Rounded.PhotoAlbum; - public const string PhotoCamera = Material.Rounded.PhotoCamera; - public const string PhotoCameraBack = Material.Rounded.PhotoCameraBack; - public const string PhotoCameraFront = Material.Rounded.PhotoCameraFront; - public const string PhotoFilter = Material.Rounded.PhotoFilter; - public const string PhotoLibrary = Material.Rounded.PhotoLibrary; - public const string PhotoSizeSelectActual = Material.Rounded.PhotoSizeSelectActual; - public const string PhotoSizeSelectLarge = Material.Rounded.PhotoSizeSelectLarge; - public const string PhotoSizeSelectSmall = Material.Rounded.PhotoSizeSelectSmall; - public const string Php = Material.Rounded.Php; - public const string Piano = Material.Rounded.Piano; - public const string PianoOff = Material.Rounded.PianoOff; - public const string PictureAsPdf = Material.Rounded.PictureAsPdf; - public const string PictureInPicture = Material.Rounded.PictureInPicture; - public const string PictureInPictureAlt = Material.Rounded.PictureInPictureAlt; - public const string PieChart = Material.Rounded.PieChart; - public const string PieChartOutline = Material.Rounded.PieChartOutline; - public const string Pin = Material.Rounded.Pin; - public const string PinDrop = Material.Rounded.PinDrop; - public const string PinEnd = Material.Rounded.PinEnd; - public const string PinInvoke = Material.Rounded.PinInvoke; - public const string Pinch = Material.Rounded.Pinch; - public const string PivotTableChart = Material.Rounded.PivotTableChart; - public const string Pix = Material.Rounded.Pix; - public const string Place = Material.Rounded.Place; - public const string Plagiarism = Material.Rounded.Plagiarism; - public const string PlayArrow = Material.Rounded.PlayArrow; - public const string PlayCircle = Material.Rounded.PlayCircle; - public const string PlayCircleFilled = Material.Rounded.PlayCircleFilled; - public const string PlayCircleOutline = Material.Rounded.PlayCircleOutline; - public const string PlayDisabled = Material.Rounded.PlayDisabled; - public const string PlayForWork = Material.Rounded.PlayForWork; - public const string PlayLesson = Material.Rounded.PlayLesson; - public const string PlaylistAdd = Material.Rounded.PlaylistAdd; - public const string PlaylistAddCheck = Material.Rounded.PlaylistAddCheck; - public const string PlaylistAddCheckCircle = Material.Rounded.PlaylistAddCheckCircle; - public const string PlaylistAddCircle = Material.Rounded.PlaylistAddCircle; - public const string PlaylistPlay = Material.Rounded.PlaylistPlay; - public const string PlaylistRemove = Material.Rounded.PlaylistRemove; - public const string Plumbing = Material.Rounded.Plumbing; - public const string PlusOne = Material.Rounded.PlusOne; - public const string Podcasts = Material.Rounded.Podcasts; - public const string PointOfSale = Material.Rounded.PointOfSale; - public const string Policy = Material.Rounded.Policy; - public const string Poll = Material.Rounded.Poll; - public const string Polyline = Material.Rounded.Polyline; - public const string Polymer = Material.Rounded.Polymer; - public const string Pool = Material.Rounded.Pool; - public const string PortableWifiOff = Material.Rounded.PortableWifiOff; - public const string Portrait = Material.Rounded.Portrait; - public const string PostAdd = Material.Rounded.PostAdd; - public const string Power = Material.Rounded.Power; - public const string PowerInput = Material.Rounded.PowerInput; - public const string PowerOff = Material.Rounded.PowerOff; - public const string PowerSettingsNew = Material.Rounded.PowerSettingsNew; - public const string PrecisionManufacturing = Material.Rounded.PrecisionManufacturing; - public const string PregnantWoman = Material.Rounded.PregnantWoman; - public const string PresentToAll = Material.Rounded.PresentToAll; - public const string Preview = Material.Rounded.Preview; - public const string PriceChange = Material.Rounded.PriceChange; - public const string PriceCheck = Material.Rounded.PriceCheck; - public const string Print = Material.Rounded.Print; - public const string PrintDisabled = Material.Rounded.PrintDisabled; - public const string PriorityHigh = Material.Rounded.PriorityHigh; - public const string PrivacyTip = Material.Rounded.PrivacyTip; - public const string PrivateConnectivity = Material.Rounded.PrivateConnectivity; - public const string ProductionQuantityLimits = Material.Rounded.ProductionQuantityLimits; - public const string Psychology = Material.Rounded.Psychology; - public const string Public = Material.Rounded.Public; - public const string PublicOff = Material.Rounded.PublicOff; - public const string Publish = Material.Rounded.Publish; - public const string PublishedWithChanges = Material.Rounded.PublishedWithChanges; - public const string PunchClock = Material.Rounded.PunchClock; - public const string PushPin = Material.Rounded.PushPin; - public const string QrCode = Material.Rounded.QrCode; - public const string QrCode2 = Material.Rounded.QrCode2; - public const string QrCodeScanner = Material.Rounded.QrCodeScanner; - public const string QueryBuilder = Material.Rounded.QueryBuilder; - public const string QueryStats = Material.Rounded.QueryStats; - public const string QuestionAnswer = Material.Rounded.QuestionAnswer; - public const string QuestionMark = Material.Rounded.QuestionMark; - public const string Queue = Material.Rounded.Queue; - public const string QueueMusic = Material.Rounded.QueueMusic; - public const string QueuePlayNext = Material.Rounded.QueuePlayNext; - public const string Quickreply = Material.Rounded.Quickreply; - public const string Quiz = Material.Rounded.Quiz; - public const string RMobiledata = Material.Rounded.RMobiledata; - public const string Radar = Material.Rounded.Radar; - public const string Radio = Material.Rounded.Radio; - public const string RadioButtonChecked = Material.Rounded.RadioButtonChecked; - public const string RadioButtonUnchecked = Material.Rounded.RadioButtonUnchecked; - public const string RailwayAlert = Material.Rounded.RailwayAlert; - public const string RamenDining = Material.Rounded.RamenDining; - public const string RampLeft = Material.Rounded.RampLeft; - public const string RampRight = Material.Rounded.RampRight; - public const string RateReview = Material.Rounded.RateReview; - public const string RawOff = Material.Rounded.RawOff; - public const string RawOn = Material.Rounded.RawOn; - public const string ReadMore = Material.Rounded.ReadMore; - public const string RealEstateAgent = Material.Rounded.RealEstateAgent; - public const string Receipt = Material.Rounded.Receipt; - public const string ReceiptLong = Material.Rounded.ReceiptLong; - public const string RecentActors = Material.Rounded.RecentActors; - public const string Recommend = Material.Rounded.Recommend; - public const string RecordVoiceOver = Material.Rounded.RecordVoiceOver; - public const string Rectangle = Material.Rounded.Rectangle; - public const string Recycling = Material.Rounded.Recycling; - public const string Redeem = Material.Rounded.Redeem; - public const string Redo = Material.Rounded.Redo; - public const string ReduceCapacity = Material.Rounded.ReduceCapacity; - public const string Refresh = Material.Rounded.Refresh; - public const string RememberMe = Material.Rounded.RememberMe; - public const string Remove = Material.Rounded.Remove; - public const string RemoveCircle = Material.Rounded.RemoveCircle; - public const string RemoveCircleOutline = Material.Rounded.RemoveCircleOutline; - public const string RemoveDone = Material.Rounded.RemoveDone; - public const string RemoveFromQueue = Material.Rounded.RemoveFromQueue; - public const string RemoveModerator = Material.Rounded.RemoveModerator; - public const string RemoveRedEye = Material.Rounded.RemoveRedEye; - public const string RemoveRoad = Material.Rounded.RemoveRoad; - public const string RemoveShoppingCart = Material.Rounded.RemoveShoppingCart; - public const string Reorder = Material.Rounded.Reorder; - public const string Repeat = Material.Rounded.Repeat; - public const string RepeatOn = Material.Rounded.RepeatOn; - public const string RepeatOne = Material.Rounded.RepeatOne; - public const string RepeatOneOn = Material.Rounded.RepeatOneOn; - public const string Replay = Material.Rounded.Replay; - public const string Replay10 = Material.Rounded.Replay10; - public const string Replay30 = Material.Rounded.Replay30; - public const string Replay5 = Material.Rounded.Replay5; - public const string ReplayCircleFilled = Material.Rounded.ReplayCircleFilled; - public const string Reply = Material.Rounded.Reply; - public const string ReplyAll = Material.Rounded.ReplyAll; - public const string Report = Material.Rounded.Report; - public const string ReportGmailerrorred = Material.Rounded.ReportGmailerrorred; - public const string ReportOff = Material.Rounded.ReportOff; - public const string ReportProblem = Material.Rounded.ReportProblem; - public const string RequestPage = Material.Rounded.RequestPage; - public const string RequestQuote = Material.Rounded.RequestQuote; - public const string ResetTv = Material.Rounded.ResetTv; - public const string RestartAlt = Material.Rounded.RestartAlt; - public const string Restaurant = Material.Rounded.Restaurant; - public const string RestaurantMenu = Material.Rounded.RestaurantMenu; - public const string Restore = Material.Rounded.Restore; - public const string RestoreFromTrash = Material.Rounded.RestoreFromTrash; - public const string RestorePage = Material.Rounded.RestorePage; - public const string Reviews = Material.Rounded.Reviews; - public const string RiceBowl = Material.Rounded.RiceBowl; - public const string RingVolume = Material.Rounded.RingVolume; - public const string Rocket = Material.Rounded.Rocket; - public const string RocketLaunch = Material.Rounded.RocketLaunch; - public const string RollerSkating = Material.Rounded.RollerSkating; - public const string Roofing = Material.Rounded.Roofing; - public const string Room = Material.Rounded.Room; - public const string RoomPreferences = Material.Rounded.RoomPreferences; - public const string RoomService = Material.Rounded.RoomService; - public const string Rotate90DegreesCcw = Material.Rounded.Rotate90DegreesCcw; - public const string Rotate90DegreesCw = Material.Rounded.Rotate90DegreesCw; - public const string RotateLeft = Material.Rounded.RotateLeft; - public const string RotateRight = Material.Rounded.RotateRight; - public const string RoundaboutLeft = Material.Rounded.RoundaboutLeft; - public const string RoundaboutRight = Material.Rounded.RoundaboutRight; - public const string RoundedCorner = Material.Rounded.RoundedCorner; - public const string Route = Material.Rounded.Route; - public const string Router = Material.Rounded.Router; - public const string Rowing = Material.Rounded.Rowing; - public const string RssFeed = Material.Rounded.RssFeed; - public const string Rsvp = Material.Rounded.Rsvp; - public const string Rtt = Material.Rounded.Rtt; - public const string Rule = Material.Rounded.Rule; - public const string RuleFolder = Material.Rounded.RuleFolder; - public const string RunCircle = Material.Rounded.RunCircle; - public const string RunningWithErrors = Material.Rounded.RunningWithErrors; - public const string RvHookup = Material.Rounded.RvHookup; - public const string SafetyCheck = Material.Rounded.SafetyCheck; - public const string SafetyDivider = Material.Rounded.SafetyDivider; - public const string Sailing = Material.Rounded.Sailing; - public const string Sanitizer = Material.Rounded.Sanitizer; - public const string Satellite = Material.Rounded.Satellite; - public const string SatelliteAlt = Material.Rounded.SatelliteAlt; - public const string Save = Material.Rounded.Save; - public const string SaveAlt = Material.Rounded.SaveAlt; - public const string SaveAs = Material.Rounded.SaveAs; - public const string SavedSearch = Material.Rounded.SavedSearch; - public const string Savings = Material.Rounded.Savings; - public const string Scale = Material.Rounded.Scale; - public const string Scanner = Material.Rounded.Scanner; - public const string ScatterPlot = Material.Rounded.ScatterPlot; - public const string Schedule = Material.Rounded.Schedule; - public const string ScheduleSend = Material.Rounded.ScheduleSend; - public const string Schema = Material.Rounded.Schema; - public const string School = Material.Rounded.School; - public const string Science = Material.Rounded.Science; - public const string Score = Material.Rounded.Score; - public const string Scoreboard = Material.Rounded.Scoreboard; - public const string ScreenLockLandscape = Material.Rounded.ScreenLockLandscape; - public const string ScreenLockPortrait = Material.Rounded.ScreenLockPortrait; - public const string ScreenLockRotation = Material.Rounded.ScreenLockRotation; - public const string ScreenRotation = Material.Rounded.ScreenRotation; - public const string ScreenRotationAlt = Material.Rounded.ScreenRotationAlt; - public const string ScreenSearchDesktop = Material.Rounded.ScreenSearchDesktop; - public const string ScreenShare = Material.Rounded.ScreenShare; - public const string Screenshot = Material.Rounded.Screenshot; - public const string ScubaDiving = Material.Rounded.ScubaDiving; - public const string Sd = Material.Rounded.Sd; - public const string SdCard = Material.Rounded.SdCard; - public const string SdCardAlert = Material.Rounded.SdCardAlert; - public const string SdStorage = Material.Rounded.SdStorage; - public const string Search = Material.Rounded.Search; - public const string SearchOff = Material.Rounded.SearchOff; - public const string Security = Material.Rounded.Security; - public const string SecurityUpdate = Material.Rounded.SecurityUpdate; - public const string SecurityUpdateGood = Material.Rounded.SecurityUpdateGood; - public const string SecurityUpdateWarning = Material.Rounded.SecurityUpdateWarning; - public const string Segment = Material.Rounded.Segment; - public const string SelectAll = Material.Rounded.SelectAll; - public const string SelfImprovement = Material.Rounded.SelfImprovement; - public const string Sell = Material.Rounded.Sell; - public const string Send = Material.Rounded.Send; - public const string SendAndArchive = Material.Rounded.SendAndArchive; - public const string SendTimeExtension = Material.Rounded.SendTimeExtension; - public const string SendToMobile = Material.Rounded.SendToMobile; - public const string SensorDoor = Material.Rounded.SensorDoor; - public const string SensorWindow = Material.Rounded.SensorWindow; - public const string Sensors = Material.Rounded.Sensors; - public const string SensorsOff = Material.Rounded.SensorsOff; - public const string SentimentDissatisfied = Material.Rounded.SentimentDissatisfied; - public const string SentimentNeutral = Material.Rounded.SentimentNeutral; - public const string SentimentSatisfied = Material.Rounded.SentimentSatisfied; - public const string SentimentSatisfiedAlt = Material.Rounded.SentimentSatisfiedAlt; - public const string SentimentVeryDissatisfied = Material.Rounded.SentimentVeryDissatisfied; - public const string SentimentVerySatisfied = Material.Rounded.SentimentVerySatisfied; - public const string SetMeal = Material.Rounded.SetMeal; - public const string Settings = Material.Rounded.Settings; - public const string SettingsAccessibility = Material.Rounded.SettingsAccessibility; - public const string SettingsApplications = Material.Rounded.SettingsApplications; - public const string SettingsBackupRestore = Material.Rounded.SettingsBackupRestore; - public const string SettingsBluetooth = Material.Rounded.SettingsBluetooth; - public const string SettingsBrightness = Material.Rounded.SettingsBrightness; - public const string SettingsCell = Material.Rounded.SettingsCell; - public const string SettingsEthernet = Material.Rounded.SettingsEthernet; - public const string SettingsInputAntenna = Material.Rounded.SettingsInputAntenna; - public const string SettingsInputComponent = Material.Rounded.SettingsInputComponent; - public const string SettingsInputComposite = Material.Rounded.SettingsInputComposite; - public const string SettingsInputHdmi = Material.Rounded.SettingsInputHdmi; - public const string SettingsInputSvideo = Material.Rounded.SettingsInputSvideo; - public const string SettingsOverscan = Material.Rounded.SettingsOverscan; - public const string SettingsPhone = Material.Rounded.SettingsPhone; - public const string SettingsPower = Material.Rounded.SettingsPower; - public const string SettingsRemote = Material.Rounded.SettingsRemote; - public const string SettingsSuggest = Material.Rounded.SettingsSuggest; - public const string SettingsSystemDaydream = Material.Rounded.SettingsSystemDaydream; - public const string SettingsVoice = Material.Rounded.SettingsVoice; - public const string SevereCold = Material.Rounded.SevereCold; - public const string Share = Material.Rounded.Share; - public const string ShareLocation = Material.Rounded.ShareLocation; - public const string Shield = Material.Rounded.Shield; - public const string ShieldMoon = Material.Rounded.ShieldMoon; - public const string Shop = Material.Rounded.Shop; - public const string Shop2 = Material.Rounded.Shop2; - public const string ShopTwo = Material.Rounded.ShopTwo; - public const string ShoppingBag = Material.Rounded.ShoppingBag; - public const string ShoppingBasket = Material.Rounded.ShoppingBasket; - public const string ShoppingCart = Material.Rounded.ShoppingCart; - public const string ShoppingCartCheckout = Material.Rounded.ShoppingCartCheckout; - public const string ShortText = Material.Rounded.ShortText; - public const string Shortcut = Material.Rounded.Shortcut; - public const string ShowChart = Material.Rounded.ShowChart; - public const string Shower = Material.Rounded.Shower; - public const string Shuffle = Material.Rounded.Shuffle; - public const string ShuffleOn = Material.Rounded.ShuffleOn; - public const string ShutterSpeed = Material.Rounded.ShutterSpeed; - public const string Sick = Material.Rounded.Sick; - public const string SignLanguage = Material.Rounded.SignLanguage; - public const string SignalCellular0Bar = Material.Rounded.SignalCellular0Bar; - public const string SignalCellular4Bar = Material.Rounded.SignalCellular4Bar; - public const string SignalCellularAlt = Material.Rounded.SignalCellularAlt; - public const string SignalCellularAlt1Bar = Material.Rounded.SignalCellularAlt1Bar; - public const string SignalCellularAlt2Bar = Material.Rounded.SignalCellularAlt2Bar; - - public const string SignalCellularConnectedNoInternet0Bar = - Material.Rounded.SignalCellularConnectedNoInternet0Bar; - - public const string SignalCellularConnectedNoInternet4Bar = - Material.Rounded.SignalCellularConnectedNoInternet4Bar; - - public const string SignalCellularNoSim = Material.Rounded.SignalCellularNoSim; - public const string SignalCellularNodata = Material.Rounded.SignalCellularNodata; - public const string SignalCellularNull = Material.Rounded.SignalCellularNull; - public const string SignalCellularOff = Material.Rounded.SignalCellularOff; - public const string SignalWifi0Bar = Material.Rounded.SignalWifi0Bar; - public const string SignalWifi4Bar = Material.Rounded.SignalWifi4Bar; - public const string SignalWifi4BarLock = Material.Rounded.SignalWifi4BarLock; - public const string SignalWifiBad = Material.Rounded.SignalWifiBad; - public const string SignalWifiConnectedNoInternet4 = Material.Rounded.SignalWifiConnectedNoInternet4; - public const string SignalWifiOff = Material.Rounded.SignalWifiOff; - public const string SignalWifiStatusbar4Bar = Material.Rounded.SignalWifiStatusbar4Bar; - - public const string SignalWifiStatusbarConnectedNoInternet4 = - Material.Rounded.SignalWifiStatusbarConnectedNoInternet4; - - public const string SignalWifiStatusbarNull = Material.Rounded.SignalWifiStatusbarNull; - public const string Signpost = Material.Rounded.Signpost; - public const string SimCard = Material.Rounded.SimCard; - public const string SimCardAlert = Material.Rounded.SimCardAlert; - public const string SimCardDownload = Material.Rounded.SimCardDownload; - public const string SingleBed = Material.Rounded.SingleBed; - public const string Sip = Material.Rounded.Sip; - public const string Skateboarding = Material.Rounded.Skateboarding; - public const string SkipNext = Material.Rounded.SkipNext; - public const string SkipPrevious = Material.Rounded.SkipPrevious; - public const string Sledding = Material.Rounded.Sledding; - public const string Slideshow = Material.Rounded.Slideshow; - public const string SlowMotionVideo = Material.Rounded.SlowMotionVideo; - public const string SmartButton = Material.Rounded.SmartButton; - public const string SmartDisplay = Material.Rounded.SmartDisplay; - public const string SmartScreen = Material.Rounded.SmartScreen; - public const string SmartToy = Material.Rounded.SmartToy; - public const string Smartphone = Material.Rounded.Smartphone; - public const string SmokeFree = Material.Rounded.SmokeFree; - public const string SmokingRooms = Material.Rounded.SmokingRooms; - public const string Sms = Material.Rounded.Sms; - public const string SmsFailed = Material.Rounded.SmsFailed; - public const string SnippetFolder = Material.Rounded.SnippetFolder; - public const string Snooze = Material.Rounded.Snooze; - public const string Snowboarding = Material.Rounded.Snowboarding; - public const string Snowmobile = Material.Rounded.Snowmobile; - public const string Snowshoeing = Material.Rounded.Snowshoeing; - public const string Soap = Material.Rounded.Soap; - public const string SocialDistance = Material.Rounded.SocialDistance; - public const string Sort = Material.Rounded.Sort; - public const string SortByAlpha = Material.Rounded.SortByAlpha; - public const string Sos = Material.Rounded.Sos; - public const string SoupKitchen = Material.Rounded.SoupKitchen; - public const string Source = Material.Rounded.Source; - public const string South = Material.Rounded.South; - public const string SouthAmerica = Material.Rounded.SouthAmerica; - public const string SouthEast = Material.Rounded.SouthEast; - public const string SouthWest = Material.Rounded.SouthWest; - public const string Spa = Material.Rounded.Spa; - public const string SpaceBar = Material.Rounded.SpaceBar; - public const string SpaceDashboard = Material.Rounded.SpaceDashboard; - public const string SpatialAudio = Material.Rounded.SpatialAudio; - public const string SpatialAudioOff = Material.Rounded.SpatialAudioOff; - public const string SpatialTracking = Material.Rounded.SpatialTracking; - public const string Speaker = Material.Rounded.Speaker; - public const string SpeakerGroup = Material.Rounded.SpeakerGroup; - public const string SpeakerNotes = Material.Rounded.SpeakerNotes; - public const string SpeakerNotesOff = Material.Rounded.SpeakerNotesOff; - public const string SpeakerPhone = Material.Rounded.SpeakerPhone; - public const string Speed = Material.Rounded.Speed; - public const string Spellcheck = Material.Rounded.Spellcheck; - public const string Splitscreen = Material.Rounded.Splitscreen; - public const string Spoke = Material.Rounded.Spoke; - public const string Sports = Material.Rounded.Sports; - public const string SportsBar = Material.Rounded.SportsBar; - public const string SportsBaseball = Material.Rounded.SportsBaseball; - public const string SportsBasketball = Material.Rounded.SportsBasketball; - public const string SportsCricket = Material.Rounded.SportsCricket; - public const string SportsEsports = Material.Rounded.SportsEsports; - public const string SportsFootball = Material.Rounded.SportsFootball; - public const string SportsGolf = Material.Rounded.SportsGolf; - public const string SportsGymnastics = Material.Rounded.SportsGymnastics; - public const string SportsHandball = Material.Rounded.SportsHandball; - public const string SportsHockey = Material.Rounded.SportsHockey; - public const string SportsKabaddi = Material.Rounded.SportsKabaddi; - public const string SportsMartialArts = Material.Rounded.SportsMartialArts; - public const string SportsMma = Material.Rounded.SportsMma; - public const string SportsMotorsports = Material.Rounded.SportsMotorsports; - public const string SportsRugby = Material.Rounded.SportsRugby; - public const string SportsScore = Material.Rounded.SportsScore; - public const string SportsSoccer = Material.Rounded.SportsSoccer; - public const string SportsTennis = Material.Rounded.SportsTennis; - public const string SportsVolleyball = Material.Rounded.SportsVolleyball; - public const string Square = Material.Rounded.Square; - public const string SquareFoot = Material.Rounded.SquareFoot; - public const string SsidChart = Material.Rounded.SsidChart; - public const string StackedBarChart = Material.Rounded.StackedBarChart; - public const string StackedLineChart = Material.Rounded.StackedLineChart; - public const string Stadium = Material.Rounded.Stadium; - public const string Stairs = Material.Rounded.Stairs; - public const string Star = Material.Rounded.Star; - public const string StarBorder = Material.Rounded.StarBorder; - public const string StarBorderPurple500 = Material.Rounded.StarBorderPurple500; - public const string StarHalf = Material.Rounded.StarHalf; - public const string StarOutline = Material.Rounded.StarOutline; - public const string StarPurple500 = Material.Rounded.StarPurple500; - public const string StarRate = Material.Rounded.StarRate; - public const string Stars = Material.Rounded.Stars; - public const string Start = Material.Rounded.Start; - public const string StayCurrentLandscape = Material.Rounded.StayCurrentLandscape; - public const string StayCurrentPortrait = Material.Rounded.StayCurrentPortrait; - public const string StayPrimaryLandscape = Material.Rounded.StayPrimaryLandscape; - public const string StayPrimaryPortrait = Material.Rounded.StayPrimaryPortrait; - public const string StickyNote2 = Material.Rounded.StickyNote2; - public const string Stop = Material.Rounded.Stop; - public const string StopCircle = Material.Rounded.StopCircle; - public const string StopScreenShare = Material.Rounded.StopScreenShare; - public const string Storage = Material.Rounded.Storage; - public const string Store = Material.Rounded.Store; - public const string StoreMallDirectory = Material.Rounded.StoreMallDirectory; - public const string Storefront = Material.Rounded.Storefront; - public const string Storm = Material.Rounded.Storm; - public const string Straight = Material.Rounded.Straight; - public const string Straighten = Material.Rounded.Straighten; - public const string Stream = Material.Rounded.Stream; - public const string Streetview = Material.Rounded.Streetview; - public const string StrikethroughS = Material.Rounded.StrikethroughS; - public const string Stroller = Material.Rounded.Stroller; - public const string Style = Material.Rounded.Style; - public const string SubdirectoryArrowLeft = Material.Rounded.SubdirectoryArrowLeft; - public const string SubdirectoryArrowRight = Material.Rounded.SubdirectoryArrowRight; - public const string Subject = Material.Rounded.Subject; - public const string Subscript = Material.Rounded.Subscript; - public const string Subscriptions = Material.Rounded.Subscriptions; - public const string Subtitles = Material.Rounded.Subtitles; - public const string SubtitlesOff = Material.Rounded.SubtitlesOff; - public const string Subway = Material.Rounded.Subway; - public const string Summarize = Material.Rounded.Summarize; - public const string Superscript = Material.Rounded.Superscript; - public const string SupervisedUserCircle = Material.Rounded.SupervisedUserCircle; - public const string SupervisorAccount = Material.Rounded.SupervisorAccount; - public const string Support = Material.Rounded.Support; - public const string SupportAgent = Material.Rounded.SupportAgent; - public const string Surfing = Material.Rounded.Surfing; - public const string SurroundSound = Material.Rounded.SurroundSound; - public const string SwapCalls = Material.Rounded.SwapCalls; - public const string SwapHoriz = Material.Rounded.SwapHoriz; - public const string SwapHorizontalCircle = Material.Rounded.SwapHorizontalCircle; - public const string SwapVert = Material.Rounded.SwapVert; - public const string SwapVerticalCircle = Material.Rounded.SwapVerticalCircle; - public const string Swipe = Material.Rounded.Swipe; - public const string SwipeDown = Material.Rounded.SwipeDown; - public const string SwipeDownAlt = Material.Rounded.SwipeDownAlt; - public const string SwipeLeft = Material.Rounded.SwipeLeft; - public const string SwipeLeftAlt = Material.Rounded.SwipeLeftAlt; - public const string SwipeRight = Material.Rounded.SwipeRight; - public const string SwipeRightAlt = Material.Rounded.SwipeRightAlt; - public const string SwipeUp = Material.Rounded.SwipeUp; - public const string SwipeUpAlt = Material.Rounded.SwipeUpAlt; - public const string SwipeVertical = Material.Rounded.SwipeVertical; - public const string SwitchAccessShortcut = Material.Rounded.SwitchAccessShortcut; - public const string SwitchAccessShortcutAdd = Material.Rounded.SwitchAccessShortcutAdd; - public const string SwitchAccount = Material.Rounded.SwitchAccount; - public const string SwitchCamera = Material.Rounded.SwitchCamera; - public const string SwitchLeft = Material.Rounded.SwitchLeft; - public const string SwitchRight = Material.Rounded.SwitchRight; - public const string SwitchVideo = Material.Rounded.SwitchVideo; - public const string Synagogue = Material.Rounded.Synagogue; - public const string Sync = Material.Rounded.Sync; - public const string SyncAlt = Material.Rounded.SyncAlt; - public const string SyncDisabled = Material.Rounded.SyncDisabled; - public const string SyncLock = Material.Rounded.SyncLock; - public const string SyncProblem = Material.Rounded.SyncProblem; - public const string SystemSecurityUpdate = Material.Rounded.SystemSecurityUpdate; - public const string SystemSecurityUpdateGood = Material.Rounded.SystemSecurityUpdateGood; - public const string SystemSecurityUpdateWarning = Material.Rounded.SystemSecurityUpdateWarning; - public const string SystemUpdate = Material.Rounded.SystemUpdate; - public const string SystemUpdateAlt = Material.Rounded.SystemUpdateAlt; - public const string Tab = Material.Rounded.Tab; - public const string TabUnselected = Material.Rounded.TabUnselected; - public const string TableBar = Material.Rounded.TableBar; - public const string TableChart = Material.Rounded.TableChart; - public const string TableRestaurant = Material.Rounded.TableRestaurant; - public const string TableRows = Material.Rounded.TableRows; - public const string TableView = Material.Rounded.TableView; - public const string Tablet = Material.Rounded.Tablet; - public const string TabletAndroid = Material.Rounded.TabletAndroid; - public const string TabletMac = Material.Rounded.TabletMac; - public const string Tag = Material.Rounded.Tag; - public const string TagFaces = Material.Rounded.TagFaces; - public const string TakeoutDining = Material.Rounded.TakeoutDining; - public const string TapAndPlay = Material.Rounded.TapAndPlay; - public const string Tapas = Material.Rounded.Tapas; - public const string Task = Material.Rounded.Task; - public const string TaskAlt = Material.Rounded.TaskAlt; - public const string TaxiAlert = Material.Rounded.TaxiAlert; - public const string TempleBuddhist = Material.Rounded.TempleBuddhist; - public const string TempleHindu = Material.Rounded.TempleHindu; - public const string Terminal = Material.Rounded.Terminal; - public const string Terrain = Material.Rounded.Terrain; - public const string TextDecrease = Material.Rounded.TextDecrease; - public const string TextFields = Material.Rounded.TextFields; - public const string TextFormat = Material.Rounded.TextFormat; - public const string TextIncrease = Material.Rounded.TextIncrease; - public const string TextRotateUp = Material.Rounded.TextRotateUp; - public const string TextRotateVertical = Material.Rounded.TextRotateVertical; - public const string TextRotationAngledown = Material.Rounded.TextRotationAngledown; - public const string TextRotationAngleup = Material.Rounded.TextRotationAngleup; - public const string TextRotationDown = Material.Rounded.TextRotationDown; - public const string TextRotationNone = Material.Rounded.TextRotationNone; - public const string TextSnippet = Material.Rounded.TextSnippet; - public const string Textsms = Material.Rounded.Textsms; - public const string Texture = Material.Rounded.Texture; - public const string TheaterComedy = Material.Rounded.TheaterComedy; - public const string Theaters = Material.Rounded.Theaters; - public const string Thermostat = Material.Rounded.Thermostat; - public const string ThermostatAuto = Material.Rounded.ThermostatAuto; - public const string ThumbDown = Material.Rounded.ThumbDown; - public const string ThumbDownAlt = Material.Rounded.ThumbDownAlt; - public const string ThumbDownOffAlt = Material.Rounded.ThumbDownOffAlt; - public const string ThumbUp = Material.Rounded.ThumbUp; - public const string ThumbUpAlt = Material.Rounded.ThumbUpAlt; - public const string ThumbUpOffAlt = Material.Rounded.ThumbUpOffAlt; - public const string ThumbsUpDown = Material.Rounded.ThumbsUpDown; - public const string Thunderstorm = Material.Rounded.Thunderstorm; - public const string TimeToLeave = Material.Rounded.TimeToLeave; - public const string Timelapse = Material.Rounded.Timelapse; - public const string Timeline = Material.Rounded.Timeline; - public const string Timer = Material.Rounded.Timer; - public const string Timer10 = Material.Rounded.Timer10; - public const string Timer10Select = Material.Rounded.Timer10Select; - public const string Timer3 = Material.Rounded.Timer3; - public const string Timer3Select = Material.Rounded.Timer3Select; - public const string TimerOff = Material.Rounded.TimerOff; - public const string TipsAndUpdates = Material.Rounded.TipsAndUpdates; - public const string TireRepair = Material.Rounded.TireRepair; - public const string Title = Material.Rounded.Title; - public const string Toc = Material.Rounded.Toc; - public const string Today = Material.Rounded.Today; - public const string ToggleOff = Material.Rounded.ToggleOff; - public const string ToggleOn = Material.Rounded.ToggleOn; - public const string Token = Material.Rounded.Token; - public const string Toll = Material.Rounded.Toll; - public const string Tonality = Material.Rounded.Tonality; - public const string Topic = Material.Rounded.Topic; - public const string TouchApp = Material.Rounded.TouchApp; - public const string Tour = Material.Rounded.Tour; - public const string Toys = Material.Rounded.Toys; - public const string TrackChanges = Material.Rounded.TrackChanges; - public const string Traffic = Material.Rounded.Traffic; - public const string Train = Material.Rounded.Train; - public const string Tram = Material.Rounded.Tram; - public const string TransferWithinAStation = Material.Rounded.TransferWithinAStation; - public const string Transform = Material.Rounded.Transform; - public const string Transgender = Material.Rounded.Transgender; - public const string TransitEnterexit = Material.Rounded.TransitEnterexit; - public const string Translate = Material.Rounded.Translate; - public const string TravelExplore = Material.Rounded.TravelExplore; - public const string TrendingDown = Material.Rounded.TrendingDown; - public const string TrendingFlat = Material.Rounded.TrendingFlat; - public const string TrendingUp = Material.Rounded.TrendingUp; - public const string TripOrigin = Material.Rounded.TripOrigin; - public const string Try = Material.Rounded.Try; - public const string Tsunami = Material.Rounded.Tsunami; - public const string Tty = Material.Rounded.Tty; - public const string Tune = Material.Rounded.Tune; - public const string Tungsten = Material.Rounded.Tungsten; - public const string TurnLeft = Material.Rounded.TurnLeft; - public const string TurnRight = Material.Rounded.TurnRight; - public const string TurnSharpLeft = Material.Rounded.TurnSharpLeft; - public const string TurnSharpRight = Material.Rounded.TurnSharpRight; - public const string TurnSlightLeft = Material.Rounded.TurnSlightLeft; - public const string TurnSlightRight = Material.Rounded.TurnSlightRight; - public const string TurnedIn = Material.Rounded.TurnedIn; - public const string TurnedInNot = Material.Rounded.TurnedInNot; - public const string Tv = Material.Rounded.Tv; - public const string TvOff = Material.Rounded.TvOff; - public const string TwoWheeler = Material.Rounded.TwoWheeler; - public const string UTurnLeft = Material.Rounded.UTurnLeft; - public const string UTurnRight = Material.Rounded.UTurnRight; - public const string Umbrella = Material.Rounded.Umbrella; - public const string Unarchive = Material.Rounded.Unarchive; - public const string Undo = Material.Rounded.Undo; - public const string UnfoldLess = Material.Rounded.UnfoldLess; - public const string UnfoldMore = Material.Rounded.UnfoldMore; - public const string Unpublished = Material.Rounded.Unpublished; - public const string Unsubscribe = Material.Rounded.Unsubscribe; - public const string Upcoming = Material.Rounded.Upcoming; - public const string Update = Material.Rounded.Update; - public const string UpdateDisabled = Material.Rounded.UpdateDisabled; - public const string Upgrade = Material.Rounded.Upgrade; - public const string Upload = Material.Rounded.Upload; - public const string UploadFile = Material.Rounded.UploadFile; - public const string Usb = Material.Rounded.Usb; - public const string UsbOff = Material.Rounded.UsbOff; - public const string Vaccines = Material.Rounded.Vaccines; - public const string VapeFree = Material.Rounded.VapeFree; - public const string VapingRooms = Material.Rounded.VapingRooms; - public const string Verified = Material.Rounded.Verified; - public const string VerifiedUser = Material.Rounded.VerifiedUser; - public const string VerticalAlignBottom = Material.Rounded.VerticalAlignBottom; - public const string VerticalAlignCenter = Material.Rounded.VerticalAlignCenter; - public const string VerticalAlignTop = Material.Rounded.VerticalAlignTop; - public const string VerticalDistribute = Material.Rounded.VerticalDistribute; - public const string VerticalSplit = Material.Rounded.VerticalSplit; - public const string Vibration = Material.Rounded.Vibration; - public const string VideoCall = Material.Rounded.VideoCall; - public const string VideoCameraBack = Material.Rounded.VideoCameraBack; - public const string VideoCameraFront = Material.Rounded.VideoCameraFront; - public const string VideoFile = Material.Rounded.VideoFile; - public const string VideoLabel = Material.Rounded.VideoLabel; - public const string VideoLibrary = Material.Rounded.VideoLibrary; - public const string VideoSettings = Material.Rounded.VideoSettings; - public const string VideoStable = Material.Rounded.VideoStable; - public const string Videocam = Material.Rounded.Videocam; - public const string VideocamOff = Material.Rounded.VideocamOff; - public const string VideogameAsset = Material.Rounded.VideogameAsset; - public const string VideogameAssetOff = Material.Rounded.VideogameAssetOff; - public const string ViewAgenda = Material.Rounded.ViewAgenda; - public const string ViewArray = Material.Rounded.ViewArray; - public const string ViewCarousel = Material.Rounded.ViewCarousel; - public const string ViewColumn = Material.Rounded.ViewColumn; - public const string ViewComfy = Material.Rounded.ViewComfy; - public const string ViewComfyAlt = Material.Rounded.ViewComfyAlt; - public const string ViewCompact = Material.Rounded.ViewCompact; - public const string ViewCompactAlt = Material.Rounded.ViewCompactAlt; - public const string ViewCozy = Material.Rounded.ViewCozy; - public const string ViewDay = Material.Rounded.ViewDay; - public const string ViewHeadline = Material.Rounded.ViewHeadline; - public const string ViewInAr = Material.Rounded.ViewInAr; - public const string ViewKanban = Material.Rounded.ViewKanban; - public const string ViewList = Material.Rounded.ViewList; - public const string ViewModule = Material.Rounded.ViewModule; - public const string ViewQuilt = Material.Rounded.ViewQuilt; - public const string ViewSidebar = Material.Rounded.ViewSidebar; - public const string ViewStream = Material.Rounded.ViewStream; - public const string ViewTimeline = Material.Rounded.ViewTimeline; - public const string ViewWeek = Material.Rounded.ViewWeek; - public const string Vignette = Material.Rounded.Vignette; - public const string Villa = Material.Rounded.Villa; - public const string Visibility = Material.Rounded.Visibility; - public const string VisibilityOff = Material.Rounded.VisibilityOff; - public const string VoiceChat = Material.Rounded.VoiceChat; - public const string VoiceOverOff = Material.Rounded.VoiceOverOff; - public const string Voicemail = Material.Rounded.Voicemail; - public const string Volcano = Material.Rounded.Volcano; - public const string VolumeDown = Material.Rounded.VolumeDown; - public const string VolumeMute = Material.Rounded.VolumeMute; - public const string VolumeOff = Material.Rounded.VolumeOff; - public const string VolumeUp = Material.Rounded.VolumeUp; - public const string VolunteerActivism = Material.Rounded.VolunteerActivism; - public const string VpnKey = Material.Rounded.VpnKey; - public const string VpnKeyOff = Material.Rounded.VpnKeyOff; - public const string VpnLock = Material.Rounded.VpnLock; - public const string Vrpano = Material.Rounded.Vrpano; - public const string Wallpaper = Material.Rounded.Wallpaper; - public const string Warehouse = Material.Rounded.Warehouse; - public const string Warning = Material.Rounded.Warning; - public const string WarningAmber = Material.Rounded.WarningAmber; - public const string Wash = Material.Rounded.Wash; - public const string Watch = Material.Rounded.Watch; - public const string WatchLater = Material.Rounded.WatchLater; - public const string WatchOff = Material.Rounded.WatchOff; - public const string Water = Material.Rounded.Water; - public const string WaterDamage = Material.Rounded.WaterDamage; - public const string WaterDrop = Material.Rounded.WaterDrop; - public const string WaterfallChart = Material.Rounded.WaterfallChart; - public const string Waves = Material.Rounded.Waves; - public const string WavingHand = Material.Rounded.WavingHand; - public const string WbAuto = Material.Rounded.WbAuto; - public const string WbCloudy = Material.Rounded.WbCloudy; - public const string WbIncandescent = Material.Rounded.WbIncandescent; - public const string WbIridescent = Material.Rounded.WbIridescent; - public const string WbShade = Material.Rounded.WbShade; - public const string WbSunny = Material.Rounded.WbSunny; - public const string WbTwilight = Material.Rounded.WbTwilight; - public const string Wc = Material.Rounded.Wc; - public const string Web = Material.Rounded.Web; - public const string WebAsset = Material.Rounded.WebAsset; - public const string WebAssetOff = Material.Rounded.WebAssetOff; - public const string Webhook = Material.Rounded.Webhook; - public const string Weekend = Material.Rounded.Weekend; - public const string West = Material.Rounded.West; - public const string Whatsapp = Material.Rounded.Whatsapp; - public const string Whatshot = Material.Rounded.Whatshot; - public const string WheelchairPickup = Material.Rounded.WheelchairPickup; - public const string WhereToVote = Material.Rounded.WhereToVote; - public const string Widgets = Material.Rounded.Widgets; - public const string Wifi = Material.Rounded.Wifi; - public const string Wifi1Bar = Material.Rounded.Wifi1Bar; - public const string Wifi2Bar = Material.Rounded.Wifi2Bar; - public const string WifiCalling = Material.Rounded.WifiCalling; - public const string WifiCalling3 = Material.Rounded.WifiCalling3; - public const string WifiChannel = Material.Rounded.WifiChannel; - public const string WifiFind = Material.Rounded.WifiFind; - public const string WifiLock = Material.Rounded.WifiLock; - public const string WifiOff = Material.Rounded.WifiOff; - public const string WifiPassword = Material.Rounded.WifiPassword; - public const string WifiProtectedSetup = Material.Rounded.WifiProtectedSetup; - public const string WifiTethering = Material.Rounded.WifiTethering; - public const string WifiTetheringError = Material.Rounded.WifiTetheringError; - public const string WifiTetheringOff = Material.Rounded.WifiTetheringOff; - public const string Window = Material.Rounded.Window; - public const string WineBar = Material.Rounded.WineBar; - public const string Woman = Material.Rounded.Woman; - public const string Work = Material.Rounded.Work; - public const string WorkOff = Material.Rounded.WorkOff; - public const string WorkOutline = Material.Rounded.WorkOutline; - public const string WorkspacePremium = Material.Rounded.WorkspacePremium; - public const string Workspaces = Material.Rounded.Workspaces; - public const string WrapText = Material.Rounded.WrapText; - public const string WrongLocation = Material.Rounded.WrongLocation; - public const string Wysiwyg = Material.Rounded.Wysiwyg; - public const string Yard = Material.Rounded.Yard; - public const string YoutubeSearchedFor = Material.Rounded.YoutubeSearchedFor; - public const string ZoomIn = Material.Rounded.ZoomIn; - public const string ZoomInMap = Material.Rounded.ZoomInMap; - public const string ZoomOut = Material.Rounded.ZoomOut; - public const string ZoomOutMap = Material.Rounded.ZoomOutMap; - } - } -} diff --git a/src/Connected.Components/Icons/Obsolete/Sharp.cs b/src/Connected.Components/Icons/Obsolete/Sharp.cs deleted file mode 100644 index ffb3bc8..0000000 --- a/src/Connected.Components/Icons/Obsolete/Sharp.cs +++ /dev/null @@ -1,2074 +0,0 @@ -/* - * This file was auto-generated by Update-MudIcons.ps1 - * 2022.02.01_04:17:46 - */ - -using System.Diagnostics.CodeAnalysis; - -namespace Connected -{ - public partial class Icons - { - [ExcludeFromCodeCoverage] - public partial class Sharp - { - public const string _10k = Material.Sharp._10k; - public const string _10mp = Material.Sharp._10mp; - public const string _11mp = Material.Sharp._11mp; - public const string _123 = Material.Sharp._123; - public const string _12mp = Material.Sharp._12mp; - public const string _13mp = Material.Sharp._13mp; - public const string _14mp = Material.Sharp._14mp; - public const string _15mp = Material.Sharp._15mp; - public const string _16mp = Material.Sharp._16mp; - public const string _17mp = Material.Sharp._17mp; - public const string _18mp = Material.Sharp._18mp; - public const string _19mp = Material.Sharp._19mp; - public const string _1k = Material.Sharp._1k; - public const string _1kPlus = Material.Sharp._1kPlus; - public const string _1xMobiledata = Material.Sharp._1xMobiledata; - public const string _20mp = Material.Sharp._20mp; - public const string _21mp = Material.Sharp._21mp; - public const string _22mp = Material.Sharp._22mp; - public const string _23mp = Material.Sharp._23mp; - public const string _24mp = Material.Sharp._24mp; - public const string _2k = Material.Sharp._2k; - public const string _2kPlus = Material.Sharp._2kPlus; - public const string _2mp = Material.Sharp._2mp; - public const string _30fps = Material.Sharp._30fps; - public const string _30fpsSelect = Material.Sharp._30fpsSelect; - public const string _360 = Material.Sharp._360; - public const string _3dRotation = Material.Sharp._3dRotation; - public const string _3gMobiledata = Material.Sharp._3gMobiledata; - public const string _3k = Material.Sharp._3k; - public const string _3kPlus = Material.Sharp._3kPlus; - public const string _3mp = Material.Sharp._3mp; - public const string _3p = Material.Sharp._3p; - public const string _4gMobiledata = Material.Sharp._4gMobiledata; - public const string _4gPlusMobiledata = Material.Sharp._4gPlusMobiledata; - public const string _4k = Material.Sharp._4k; - public const string _4kPlus = Material.Sharp._4kPlus; - public const string _4mp = Material.Sharp._4mp; - public const string _5g = Material.Sharp._5g; - public const string _5k = Material.Sharp._5k; - public const string _5kPlus = Material.Sharp._5kPlus; - public const string _5mp = Material.Sharp._5mp; - public const string _60fps = Material.Sharp._60fps; - public const string _60fpsSelect = Material.Sharp._60fpsSelect; - public const string _6FtApart = Material.Sharp._6FtApart; - public const string _6k = Material.Sharp._6k; - public const string _6kPlus = Material.Sharp._6kPlus; - public const string _6mp = Material.Sharp._6mp; - public const string _7k = Material.Sharp._7k; - public const string _7kPlus = Material.Sharp._7kPlus; - public const string _7mp = Material.Sharp._7mp; - public const string _8k = Material.Sharp._8k; - public const string _8kPlus = Material.Sharp._8kPlus; - public const string _8mp = Material.Sharp._8mp; - public const string _9k = Material.Sharp._9k; - public const string _9kPlus = Material.Sharp._9kPlus; - public const string _9mp = Material.Sharp._9mp; - public const string Abc = Material.Sharp.Abc; - public const string AcUnit = Material.Sharp.AcUnit; - public const string AccessAlarm = Material.Sharp.AccessAlarm; - public const string AccessAlarms = Material.Sharp.AccessAlarms; - public const string AccessTime = Material.Sharp.AccessTime; - public const string AccessTimeFilled = Material.Sharp.AccessTimeFilled; - public const string Accessibility = Material.Sharp.Accessibility; - public const string AccessibilityNew = Material.Sharp.AccessibilityNew; - public const string Accessible = Material.Sharp.Accessible; - public const string AccessibleForward = Material.Sharp.AccessibleForward; - public const string AccountBalance = Material.Sharp.AccountBalance; - public const string AccountBalanceWallet = Material.Sharp.AccountBalanceWallet; - public const string AccountBox = Material.Sharp.AccountBox; - public const string AccountCircle = Material.Sharp.AccountCircle; - public const string AccountTree = Material.Sharp.AccountTree; - public const string AdUnits = Material.Sharp.AdUnits; - public const string Adb = Material.Sharp.Adb; - public const string Add = Material.Sharp.Add; - public const string AddAPhoto = Material.Sharp.AddAPhoto; - public const string AddAlarm = Material.Sharp.AddAlarm; - public const string AddAlert = Material.Sharp.AddAlert; - public const string AddBox = Material.Sharp.AddBox; - public const string AddBusiness = Material.Sharp.AddBusiness; - public const string AddCard = Material.Sharp.AddCard; - public const string AddChart = Material.Sharp.AddChart; - public const string AddCircle = Material.Sharp.AddCircle; - public const string AddCircleOutline = Material.Sharp.AddCircleOutline; - public const string AddComment = Material.Sharp.AddComment; - public const string AddIcCall = Material.Sharp.AddIcCall; - public const string AddLink = Material.Sharp.AddLink; - public const string AddLocation = Material.Sharp.AddLocation; - public const string AddLocationAlt = Material.Sharp.AddLocationAlt; - public const string AddModerator = Material.Sharp.AddModerator; - public const string AddPhotoAlternate = Material.Sharp.AddPhotoAlternate; - public const string AddReaction = Material.Sharp.AddReaction; - public const string AddRoad = Material.Sharp.AddRoad; - public const string AddShoppingCart = Material.Sharp.AddShoppingCart; - public const string AddTask = Material.Sharp.AddTask; - public const string AddToDrive = Material.Sharp.AddToDrive; - public const string AddToHomeScreen = Material.Sharp.AddToHomeScreen; - public const string AddToPhotos = Material.Sharp.AddToPhotos; - public const string AddToQueue = Material.Sharp.AddToQueue; - public const string Addchart = Material.Sharp.Addchart; - public const string AdfScanner = Material.Sharp.AdfScanner; - public const string Adjust = Material.Sharp.Adjust; - public const string AdminPanelSettings = Material.Sharp.AdminPanelSettings; - public const string AdsClick = Material.Sharp.AdsClick; - public const string Agriculture = Material.Sharp.Agriculture; - public const string Air = Material.Sharp.Air; - public const string AirlineSeatFlat = Material.Sharp.AirlineSeatFlat; - public const string AirlineSeatFlatAngled = Material.Sharp.AirlineSeatFlatAngled; - public const string AirlineSeatIndividualSuite = Material.Sharp.AirlineSeatIndividualSuite; - public const string AirlineSeatLegroomExtra = Material.Sharp.AirlineSeatLegroomExtra; - public const string AirlineSeatLegroomNormal = Material.Sharp.AirlineSeatLegroomNormal; - public const string AirlineSeatLegroomReduced = Material.Sharp.AirlineSeatLegroomReduced; - public const string AirlineSeatReclineExtra = Material.Sharp.AirlineSeatReclineExtra; - public const string AirlineSeatReclineNormal = Material.Sharp.AirlineSeatReclineNormal; - public const string AirlineStops = Material.Sharp.AirlineStops; - public const string Airlines = Material.Sharp.Airlines; - public const string AirplaneTicket = Material.Sharp.AirplaneTicket; - public const string AirplanemodeActive = Material.Sharp.AirplanemodeActive; - public const string AirplanemodeInactive = Material.Sharp.AirplanemodeInactive; - public const string Airplay = Material.Sharp.Airplay; - public const string AirportShuttle = Material.Sharp.AirportShuttle; - public const string Alarm = Material.Sharp.Alarm; - public const string AlarmAdd = Material.Sharp.AlarmAdd; - public const string AlarmOff = Material.Sharp.AlarmOff; - public const string AlarmOn = Material.Sharp.AlarmOn; - public const string Album = Material.Sharp.Album; - public const string AlignHorizontalCenter = Material.Sharp.AlignHorizontalCenter; - public const string AlignHorizontalLeft = Material.Sharp.AlignHorizontalLeft; - public const string AlignHorizontalRight = Material.Sharp.AlignHorizontalRight; - public const string AlignVerticalBottom = Material.Sharp.AlignVerticalBottom; - public const string AlignVerticalCenter = Material.Sharp.AlignVerticalCenter; - public const string AlignVerticalTop = Material.Sharp.AlignVerticalTop; - public const string AllInbox = Material.Sharp.AllInbox; - public const string AllInclusive = Material.Sharp.AllInclusive; - public const string AllOut = Material.Sharp.AllOut; - public const string AltRoute = Material.Sharp.AltRoute; - public const string AlternateEmail = Material.Sharp.AlternateEmail; - public const string Analytics = Material.Sharp.Analytics; - public const string Anchor = Material.Sharp.Anchor; - public const string Android = Material.Sharp.Android; - public const string Animation = Material.Sharp.Animation; - public const string Announcement = Material.Sharp.Announcement; - public const string Aod = Material.Sharp.Aod; - public const string Apartment = Material.Sharp.Apartment; - public const string Api = Material.Sharp.Api; - public const string AppBlocking = Material.Sharp.AppBlocking; - public const string AppRegistration = Material.Sharp.AppRegistration; - public const string AppSettingsAlt = Material.Sharp.AppSettingsAlt; - public const string AppShortcut = Material.Sharp.AppShortcut; - public const string Approval = Material.Sharp.Approval; - public const string Apps = Material.Sharp.Apps; - public const string AppsOutage = Material.Sharp.AppsOutage; - public const string Architecture = Material.Sharp.Architecture; - public const string Archive = Material.Sharp.Archive; - public const string AreaChart = Material.Sharp.AreaChart; - public const string ArrowBack = Material.Sharp.ArrowBack; - public const string ArrowBackIos = Material.Sharp.ArrowBackIos; - public const string ArrowBackIosNew = Material.Sharp.ArrowBackIosNew; - public const string ArrowCircleDown = Material.Sharp.ArrowCircleDown; - public const string ArrowCircleLeft = Material.Sharp.ArrowCircleLeft; - public const string ArrowCircleRight = Material.Sharp.ArrowCircleRight; - public const string ArrowCircleUp = Material.Sharp.ArrowCircleUp; - public const string ArrowDownward = Material.Sharp.ArrowDownward; - public const string ArrowDropDown = Material.Sharp.ArrowDropDown; - public const string ArrowDropDownCircle = Material.Sharp.ArrowDropDownCircle; - public const string ArrowDropUp = Material.Sharp.ArrowDropUp; - public const string ArrowForward = Material.Sharp.ArrowForward; - public const string ArrowForwardIos = Material.Sharp.ArrowForwardIos; - public const string ArrowLeft = Material.Sharp.ArrowLeft; - public const string ArrowRight = Material.Sharp.ArrowRight; - public const string ArrowRightAlt = Material.Sharp.ArrowRightAlt; - public const string ArrowUpward = Material.Sharp.ArrowUpward; - public const string ArtTrack = Material.Sharp.ArtTrack; - public const string Article = Material.Sharp.Article; - public const string AspectRatio = Material.Sharp.AspectRatio; - public const string Assessment = Material.Sharp.Assessment; - public const string Assignment = Material.Sharp.Assignment; - public const string AssignmentInd = Material.Sharp.AssignmentInd; - public const string AssignmentLate = Material.Sharp.AssignmentLate; - public const string AssignmentReturn = Material.Sharp.AssignmentReturn; - public const string AssignmentReturned = Material.Sharp.AssignmentReturned; - public const string AssignmentTurnedIn = Material.Sharp.AssignmentTurnedIn; - public const string Assistant = Material.Sharp.Assistant; - public const string AssistantDirection = Material.Sharp.AssistantDirection; - public const string AssistantPhoto = Material.Sharp.AssistantPhoto; - public const string AssuredWorkload = Material.Sharp.AssuredWorkload; - public const string Atm = Material.Sharp.Atm; - public const string AttachEmail = Material.Sharp.AttachEmail; - public const string AttachFile = Material.Sharp.AttachFile; - public const string AttachMoney = Material.Sharp.AttachMoney; - public const string Attachment = Material.Sharp.Attachment; - public const string Attractions = Material.Sharp.Attractions; - public const string Attribution = Material.Sharp.Attribution; - public const string AudioFile = Material.Sharp.AudioFile; - public const string Audiotrack = Material.Sharp.Audiotrack; - public const string AutoAwesome = Material.Sharp.AutoAwesome; - public const string AutoAwesomeMosaic = Material.Sharp.AutoAwesomeMosaic; - public const string AutoAwesomeMotion = Material.Sharp.AutoAwesomeMotion; - public const string AutoDelete = Material.Sharp.AutoDelete; - public const string AutoFixHigh = Material.Sharp.AutoFixHigh; - public const string AutoFixNormal = Material.Sharp.AutoFixNormal; - public const string AutoFixOff = Material.Sharp.AutoFixOff; - public const string AutoGraph = Material.Sharp.AutoGraph; - public const string AutoStories = Material.Sharp.AutoStories; - public const string AutofpsSelect = Material.Sharp.AutofpsSelect; - public const string Autorenew = Material.Sharp.Autorenew; - public const string AvTimer = Material.Sharp.AvTimer; - public const string BabyChangingStation = Material.Sharp.BabyChangingStation; - public const string BackHand = Material.Sharp.BackHand; - public const string Backpack = Material.Sharp.Backpack; - public const string Backspace = Material.Sharp.Backspace; - public const string Backup = Material.Sharp.Backup; - public const string BackupTable = Material.Sharp.BackupTable; - public const string Badge = Material.Sharp.Badge; - public const string BakeryDining = Material.Sharp.BakeryDining; - public const string Balance = Material.Sharp.Balance; - public const string Balcony = Material.Sharp.Balcony; - public const string Ballot = Material.Sharp.Ballot; - public const string BarChart = Material.Sharp.BarChart; - public const string BatchPrediction = Material.Sharp.BatchPrediction; - public const string Bathroom = Material.Sharp.Bathroom; - public const string Bathtub = Material.Sharp.Bathtub; - public const string Battery0Bar = Material.Sharp.Battery0Bar; - public const string Battery1Bar = Material.Sharp.Battery1Bar; - public const string Battery2Bar = Material.Sharp.Battery2Bar; - public const string Battery3Bar = Material.Sharp.Battery3Bar; - public const string Battery4Bar = Material.Sharp.Battery4Bar; - public const string Battery5Bar = Material.Sharp.Battery5Bar; - public const string Battery6Bar = Material.Sharp.Battery6Bar; - public const string BatteryAlert = Material.Sharp.BatteryAlert; - public const string BatteryChargingFull = Material.Sharp.BatteryChargingFull; - public const string BatteryFull = Material.Sharp.BatteryFull; - public const string BatterySaver = Material.Sharp.BatterySaver; - public const string BatteryStd = Material.Sharp.BatteryStd; - public const string BatteryUnknown = Material.Sharp.BatteryUnknown; - public const string BeachAccess = Material.Sharp.BeachAccess; - public const string Bed = Material.Sharp.Bed; - public const string BedroomBaby = Material.Sharp.BedroomBaby; - public const string BedroomChild = Material.Sharp.BedroomChild; - public const string BedroomParent = Material.Sharp.BedroomParent; - public const string Bedtime = Material.Sharp.Bedtime; - public const string BedtimeOff = Material.Sharp.BedtimeOff; - public const string Beenhere = Material.Sharp.Beenhere; - public const string Bento = Material.Sharp.Bento; - public const string BikeScooter = Material.Sharp.BikeScooter; - public const string Biotech = Material.Sharp.Biotech; - public const string Blender = Material.Sharp.Blender; - public const string Block = Material.Sharp.Block; - public const string Bloodtype = Material.Sharp.Bloodtype; - public const string Bluetooth = Material.Sharp.Bluetooth; - public const string BluetoothAudio = Material.Sharp.BluetoothAudio; - public const string BluetoothConnected = Material.Sharp.BluetoothConnected; - public const string BluetoothDisabled = Material.Sharp.BluetoothDisabled; - public const string BluetoothDrive = Material.Sharp.BluetoothDrive; - public const string BluetoothSearching = Material.Sharp.BluetoothSearching; - public const string BlurCircular = Material.Sharp.BlurCircular; - public const string BlurLinear = Material.Sharp.BlurLinear; - public const string BlurOff = Material.Sharp.BlurOff; - public const string BlurOn = Material.Sharp.BlurOn; - public const string Bolt = Material.Sharp.Bolt; - public const string Book = Material.Sharp.Book; - public const string BookOnline = Material.Sharp.BookOnline; - public const string Bookmark = Material.Sharp.Bookmark; - public const string BookmarkAdd = Material.Sharp.BookmarkAdd; - public const string BookmarkAdded = Material.Sharp.BookmarkAdded; - public const string BookmarkBorder = Material.Sharp.BookmarkBorder; - public const string BookmarkRemove = Material.Sharp.BookmarkRemove; - public const string Bookmarks = Material.Sharp.Bookmarks; - public const string BorderAll = Material.Sharp.BorderAll; - public const string BorderBottom = Material.Sharp.BorderBottom; - public const string BorderClear = Material.Sharp.BorderClear; - public const string BorderColor = Material.Sharp.BorderColor; - public const string BorderHorizontal = Material.Sharp.BorderHorizontal; - public const string BorderInner = Material.Sharp.BorderInner; - public const string BorderLeft = Material.Sharp.BorderLeft; - public const string BorderOuter = Material.Sharp.BorderOuter; - public const string BorderRight = Material.Sharp.BorderRight; - public const string BorderStyle = Material.Sharp.BorderStyle; - public const string BorderTop = Material.Sharp.BorderTop; - public const string BorderVertical = Material.Sharp.BorderVertical; - public const string Boy = Material.Sharp.Boy; - public const string BrandingWatermark = Material.Sharp.BrandingWatermark; - public const string BreakfastDining = Material.Sharp.BreakfastDining; - public const string Brightness1 = Material.Sharp.Brightness1; - public const string Brightness2 = Material.Sharp.Brightness2; - public const string Brightness3 = Material.Sharp.Brightness3; - public const string Brightness4 = Material.Sharp.Brightness4; - public const string Brightness5 = Material.Sharp.Brightness5; - public const string Brightness6 = Material.Sharp.Brightness6; - public const string Brightness7 = Material.Sharp.Brightness7; - public const string BrightnessAuto = Material.Sharp.BrightnessAuto; - public const string BrightnessHigh = Material.Sharp.BrightnessHigh; - public const string BrightnessLow = Material.Sharp.BrightnessLow; - public const string BrightnessMedium = Material.Sharp.BrightnessMedium; - public const string BrokenImage = Material.Sharp.BrokenImage; - public const string BrowseGallery = Material.Sharp.BrowseGallery; - public const string BrowserNotSupported = Material.Sharp.BrowserNotSupported; - public const string BrowserUpdated = Material.Sharp.BrowserUpdated; - public const string BrunchDining = Material.Sharp.BrunchDining; - public const string Brush = Material.Sharp.Brush; - public const string BubbleChart = Material.Sharp.BubbleChart; - public const string BugReport = Material.Sharp.BugReport; - public const string Build = Material.Sharp.Build; - public const string BuildCircle = Material.Sharp.BuildCircle; - public const string Bungalow = Material.Sharp.Bungalow; - public const string BurstMode = Material.Sharp.BurstMode; - public const string BusAlert = Material.Sharp.BusAlert; - public const string Business = Material.Sharp.Business; - public const string BusinessCenter = Material.Sharp.BusinessCenter; - public const string Cabin = Material.Sharp.Cabin; - public const string Cable = Material.Sharp.Cable; - public const string Cached = Material.Sharp.Cached; - public const string Cake = Material.Sharp.Cake; - public const string Calculate = Material.Sharp.Calculate; - public const string CalendarMonth = Material.Sharp.CalendarMonth; - public const string CalendarToday = Material.Sharp.CalendarToday; - public const string CalendarViewDay = Material.Sharp.CalendarViewDay; - public const string CalendarViewMonth = Material.Sharp.CalendarViewMonth; - public const string CalendarViewWeek = Material.Sharp.CalendarViewWeek; - public const string Call = Material.Sharp.Call; - public const string CallEnd = Material.Sharp.CallEnd; - public const string CallMade = Material.Sharp.CallMade; - public const string CallMerge = Material.Sharp.CallMerge; - public const string CallMissed = Material.Sharp.CallMissed; - public const string CallMissedOutgoing = Material.Sharp.CallMissedOutgoing; - public const string CallReceived = Material.Sharp.CallReceived; - public const string CallSplit = Material.Sharp.CallSplit; - public const string CallToAction = Material.Sharp.CallToAction; - public const string Camera = Material.Sharp.Camera; - public const string CameraAlt = Material.Sharp.CameraAlt; - public const string CameraEnhance = Material.Sharp.CameraEnhance; - public const string CameraFront = Material.Sharp.CameraFront; - public const string CameraIndoor = Material.Sharp.CameraIndoor; - public const string CameraOutdoor = Material.Sharp.CameraOutdoor; - public const string CameraRear = Material.Sharp.CameraRear; - public const string CameraRoll = Material.Sharp.CameraRoll; - public const string Cameraswitch = Material.Sharp.Cameraswitch; - public const string Campaign = Material.Sharp.Campaign; - public const string Cancel = Material.Sharp.Cancel; - public const string CancelPresentation = Material.Sharp.CancelPresentation; - public const string CancelScheduleSend = Material.Sharp.CancelScheduleSend; - public const string CandlestickChart = Material.Sharp.CandlestickChart; - public const string CarCrash = Material.Sharp.CarCrash; - public const string CarRental = Material.Sharp.CarRental; - public const string CarRepair = Material.Sharp.CarRepair; - public const string CardGiftcard = Material.Sharp.CardGiftcard; - public const string CardMembership = Material.Sharp.CardMembership; - public const string CardTravel = Material.Sharp.CardTravel; - public const string Carpenter = Material.Sharp.Carpenter; - public const string Cases = Material.Sharp.Cases; - public const string Casino = Material.Sharp.Casino; - public const string Cast = Material.Sharp.Cast; - public const string CastConnected = Material.Sharp.CastConnected; - public const string CastForEducation = Material.Sharp.CastForEducation; - public const string Castle = Material.Sharp.Castle; - public const string CatchingPokemon = Material.Sharp.CatchingPokemon; - public const string Category = Material.Sharp.Category; - public const string Celebration = Material.Sharp.Celebration; - public const string CellTower = Material.Sharp.CellTower; - public const string CellWifi = Material.Sharp.CellWifi; - public const string CenterFocusStrong = Material.Sharp.CenterFocusStrong; - public const string CenterFocusWeak = Material.Sharp.CenterFocusWeak; - public const string Chair = Material.Sharp.Chair; - public const string ChairAlt = Material.Sharp.ChairAlt; - public const string Chalet = Material.Sharp.Chalet; - public const string ChangeCircle = Material.Sharp.ChangeCircle; - public const string ChangeHistory = Material.Sharp.ChangeHistory; - public const string ChargingStation = Material.Sharp.ChargingStation; - public const string Chat = Material.Sharp.Chat; - public const string ChatBubble = Material.Sharp.ChatBubble; - public const string ChatBubbleOutline = Material.Sharp.ChatBubbleOutline; - public const string Check = Material.Sharp.Check; - public const string CheckBox = Material.Sharp.CheckBox; - public const string CheckBoxOutlineBlank = Material.Sharp.CheckBoxOutlineBlank; - public const string CheckCircle = Material.Sharp.CheckCircle; - public const string CheckCircleOutline = Material.Sharp.CheckCircleOutline; - public const string Checklist = Material.Sharp.Checklist; - public const string ChecklistRtl = Material.Sharp.ChecklistRtl; - public const string Checkroom = Material.Sharp.Checkroom; - public const string ChevronLeft = Material.Sharp.ChevronLeft; - public const string ChevronRight = Material.Sharp.ChevronRight; - public const string ChildCare = Material.Sharp.ChildCare; - public const string ChildFriendly = Material.Sharp.ChildFriendly; - public const string ChromeReaderMode = Material.Sharp.ChromeReaderMode; - public const string Church = Material.Sharp.Church; - public const string Circle = Material.Sharp.Circle; - public const string CircleNotifications = Material.Sharp.CircleNotifications; - public const string Class = Material.Sharp.Class; - public const string CleanHands = Material.Sharp.CleanHands; - public const string CleaningServices = Material.Sharp.CleaningServices; - public const string Clear = Material.Sharp.Clear; - public const string ClearAll = Material.Sharp.ClearAll; - public const string Close = Material.Sharp.Close; - public const string CloseFullscreen = Material.Sharp.CloseFullscreen; - public const string ClosedCaption = Material.Sharp.ClosedCaption; - public const string ClosedCaptionDisabled = Material.Sharp.ClosedCaptionDisabled; - public const string ClosedCaptionOff = Material.Sharp.ClosedCaptionOff; - public const string Cloud = Material.Sharp.Cloud; - public const string CloudCircle = Material.Sharp.CloudCircle; - public const string CloudDone = Material.Sharp.CloudDone; - public const string CloudDownload = Material.Sharp.CloudDownload; - public const string CloudOff = Material.Sharp.CloudOff; - public const string CloudQueue = Material.Sharp.CloudQueue; - public const string CloudSync = Material.Sharp.CloudSync; - public const string CloudUpload = Material.Sharp.CloudUpload; - public const string Co2 = Material.Sharp.Co2; - public const string CoPresent = Material.Sharp.CoPresent; - public const string Code = Material.Sharp.Code; - public const string CodeOff = Material.Sharp.CodeOff; - public const string Coffee = Material.Sharp.Coffee; - public const string CoffeeMaker = Material.Sharp.CoffeeMaker; - public const string Collections = Material.Sharp.Collections; - public const string CollectionsBookmark = Material.Sharp.CollectionsBookmark; - public const string ColorLens = Material.Sharp.ColorLens; - public const string Colorize = Material.Sharp.Colorize; - public const string Comment = Material.Sharp.Comment; - public const string CommentBank = Material.Sharp.CommentBank; - public const string CommentsDisabled = Material.Sharp.CommentsDisabled; - public const string Commit = Material.Sharp.Commit; - public const string Commute = Material.Sharp.Commute; - public const string Compare = Material.Sharp.Compare; - public const string CompareArrows = Material.Sharp.CompareArrows; - public const string CompassCalibration = Material.Sharp.CompassCalibration; - public const string Compost = Material.Sharp.Compost; - public const string Compress = Material.Sharp.Compress; - public const string Computer = Material.Sharp.Computer; - public const string ConfirmationNumber = Material.Sharp.ConfirmationNumber; - public const string ConnectWithoutContact = Material.Sharp.ConnectWithoutContact; - public const string ConnectedTv = Material.Sharp.ConnectedTv; - public const string ConnectingAirports = Material.Sharp.ConnectingAirports; - public const string Construction = Material.Sharp.Construction; - public const string ContactMail = Material.Sharp.ContactMail; - public const string ContactPage = Material.Sharp.ContactPage; - public const string ContactPhone = Material.Sharp.ContactPhone; - public const string ContactSupport = Material.Sharp.ContactSupport; - public const string Contactless = Material.Sharp.Contactless; - public const string Contacts = Material.Sharp.Contacts; - public const string ContentCopy = Material.Sharp.ContentCopy; - public const string ContentCut = Material.Sharp.ContentCut; - public const string ContentPaste = Material.Sharp.ContentPaste; - public const string ContentPasteGo = Material.Sharp.ContentPasteGo; - public const string ContentPasteOff = Material.Sharp.ContentPasteOff; - public const string ContentPasteSearch = Material.Sharp.ContentPasteSearch; - public const string Contrast = Material.Sharp.Contrast; - public const string ControlCamera = Material.Sharp.ControlCamera; - public const string ControlPoint = Material.Sharp.ControlPoint; - public const string ControlPointDuplicate = Material.Sharp.ControlPointDuplicate; - public const string Cookie = Material.Sharp.Cookie; - public const string CopyAll = Material.Sharp.CopyAll; - public const string Copyright = Material.Sharp.Copyright; - public const string Coronavirus = Material.Sharp.Coronavirus; - public const string CorporateFare = Material.Sharp.CorporateFare; - public const string Cottage = Material.Sharp.Cottage; - public const string Countertops = Material.Sharp.Countertops; - public const string Create = Material.Sharp.Create; - public const string CreateNewFolder = Material.Sharp.CreateNewFolder; - public const string CreditCard = Material.Sharp.CreditCard; - public const string CreditCardOff = Material.Sharp.CreditCardOff; - public const string CreditScore = Material.Sharp.CreditScore; - public const string Crib = Material.Sharp.Crib; - public const string CrisisAlert = Material.Sharp.CrisisAlert; - public const string Crop = Material.Sharp.Crop; - public const string Crop169 = Material.Sharp.Crop169; - public const string Crop32 = Material.Sharp.Crop32; - public const string Crop54 = Material.Sharp.Crop54; - public const string Crop75 = Material.Sharp.Crop75; - public const string CropDin = Material.Sharp.CropDin; - public const string CropFree = Material.Sharp.CropFree; - public const string CropLandscape = Material.Sharp.CropLandscape; - public const string CropOriginal = Material.Sharp.CropOriginal; - public const string CropPortrait = Material.Sharp.CropPortrait; - public const string CropRotate = Material.Sharp.CropRotate; - public const string CropSquare = Material.Sharp.CropSquare; - public const string CrueltyFree = Material.Sharp.CrueltyFree; - public const string Css = Material.Sharp.Css; - public const string CurrencyBitcoin = Material.Sharp.CurrencyBitcoin; - public const string CurrencyExchange = Material.Sharp.CurrencyExchange; - public const string CurrencyFranc = Material.Sharp.CurrencyFranc; - public const string CurrencyLira = Material.Sharp.CurrencyLira; - public const string CurrencyPound = Material.Sharp.CurrencyPound; - public const string CurrencyRuble = Material.Sharp.CurrencyRuble; - public const string CurrencyRupee = Material.Sharp.CurrencyRupee; - public const string CurrencyYen = Material.Sharp.CurrencyYen; - public const string CurrencyYuan = Material.Sharp.CurrencyYuan; - public const string Cyclone = Material.Sharp.Cyclone; - public const string Dangerous = Material.Sharp.Dangerous; - public const string DarkMode = Material.Sharp.DarkMode; - public const string Dashboard = Material.Sharp.Dashboard; - public const string DashboardCustomize = Material.Sharp.DashboardCustomize; - public const string DataArray = Material.Sharp.DataArray; - public const string DataExploration = Material.Sharp.DataExploration; - public const string DataObject = Material.Sharp.DataObject; - public const string DataSaverOff = Material.Sharp.DataSaverOff; - public const string DataSaverOn = Material.Sharp.DataSaverOn; - public const string DataThresholding = Material.Sharp.DataThresholding; - public const string DataUsage = Material.Sharp.DataUsage; - public const string DateRange = Material.Sharp.DateRange; - public const string Deblur = Material.Sharp.Deblur; - public const string Deck = Material.Sharp.Deck; - public const string Dehaze = Material.Sharp.Dehaze; - public const string Delete = Material.Sharp.Delete; - public const string DeleteForever = Material.Sharp.DeleteForever; - public const string DeleteOutline = Material.Sharp.DeleteOutline; - public const string DeleteSweep = Material.Sharp.DeleteSweep; - public const string DeliveryDining = Material.Sharp.DeliveryDining; - public const string DensityLarge = Material.Sharp.DensityLarge; - public const string DensityMedium = Material.Sharp.DensityMedium; - public const string DensitySmall = Material.Sharp.DensitySmall; - public const string DepartureBoard = Material.Sharp.DepartureBoard; - public const string Description = Material.Sharp.Description; - public const string Deselect = Material.Sharp.Deselect; - public const string DesignServices = Material.Sharp.DesignServices; - public const string DesktopAccessDisabled = Material.Sharp.DesktopAccessDisabled; - public const string DesktopMac = Material.Sharp.DesktopMac; - public const string DesktopWindows = Material.Sharp.DesktopWindows; - public const string Details = Material.Sharp.Details; - public const string DeveloperBoard = Material.Sharp.DeveloperBoard; - public const string DeveloperBoardOff = Material.Sharp.DeveloperBoardOff; - public const string DeveloperMode = Material.Sharp.DeveloperMode; - public const string DeviceHub = Material.Sharp.DeviceHub; - public const string DeviceThermostat = Material.Sharp.DeviceThermostat; - public const string DeviceUnknown = Material.Sharp.DeviceUnknown; - public const string Devices = Material.Sharp.Devices; - public const string DevicesFold = Material.Sharp.DevicesFold; - public const string DevicesOther = Material.Sharp.DevicesOther; - public const string DialerSip = Material.Sharp.DialerSip; - public const string Dialpad = Material.Sharp.Dialpad; - public const string Diamond = Material.Sharp.Diamond; - public const string Difference = Material.Sharp.Difference; - public const string Dining = Material.Sharp.Dining; - public const string DinnerDining = Material.Sharp.DinnerDining; - public const string Directions = Material.Sharp.Directions; - public const string DirectionsBike = Material.Sharp.DirectionsBike; - public const string DirectionsBoat = Material.Sharp.DirectionsBoat; - public const string DirectionsBoatFilled = Material.Sharp.DirectionsBoatFilled; - public const string DirectionsBus = Material.Sharp.DirectionsBus; - public const string DirectionsBusFilled = Material.Sharp.DirectionsBusFilled; - public const string DirectionsCar = Material.Sharp.DirectionsCar; - public const string DirectionsCarFilled = Material.Sharp.DirectionsCarFilled; - public const string DirectionsOff = Material.Sharp.DirectionsOff; - public const string DirectionsRailway = Material.Sharp.DirectionsRailway; - public const string DirectionsRailwayFilled = Material.Sharp.DirectionsRailwayFilled; - public const string DirectionsRun = Material.Sharp.DirectionsRun; - public const string DirectionsSubway = Material.Sharp.DirectionsSubway; - public const string DirectionsSubwayFilled = Material.Sharp.DirectionsSubwayFilled; - public const string DirectionsTransit = Material.Sharp.DirectionsTransit; - public const string DirectionsTransitFilled = Material.Sharp.DirectionsTransitFilled; - public const string DirectionsWalk = Material.Sharp.DirectionsWalk; - public const string DirtyLens = Material.Sharp.DirtyLens; - public const string DisabledByDefault = Material.Sharp.DisabledByDefault; - public const string DisabledVisible = Material.Sharp.DisabledVisible; - public const string DiscFull = Material.Sharp.DiscFull; - public const string Discount = Material.Sharp.Discount; - public const string DisplaySettings = Material.Sharp.DisplaySettings; - public const string Dns = Material.Sharp.Dns; - public const string DoDisturb = Material.Sharp.DoDisturb; - public const string DoDisturbAlt = Material.Sharp.DoDisturbAlt; - public const string DoDisturbOff = Material.Sharp.DoDisturbOff; - public const string DoDisturbOn = Material.Sharp.DoDisturbOn; - public const string DoNotDisturb = Material.Sharp.DoNotDisturb; - public const string DoNotDisturbAlt = Material.Sharp.DoNotDisturbAlt; - public const string DoNotDisturbOff = Material.Sharp.DoNotDisturbOff; - public const string DoNotDisturbOn = Material.Sharp.DoNotDisturbOn; - public const string DoNotDisturbOnTotalSilence = Material.Sharp.DoNotDisturbOnTotalSilence; - public const string DoNotStep = Material.Sharp.DoNotStep; - public const string DoNotTouch = Material.Sharp.DoNotTouch; - public const string Dock = Material.Sharp.Dock; - public const string DocumentScanner = Material.Sharp.DocumentScanner; - public const string Domain = Material.Sharp.Domain; - public const string DomainAdd = Material.Sharp.DomainAdd; - public const string DomainDisabled = Material.Sharp.DomainDisabled; - public const string DomainVerification = Material.Sharp.DomainVerification; - public const string Done = Material.Sharp.Done; - public const string DoneAll = Material.Sharp.DoneAll; - public const string DoneOutline = Material.Sharp.DoneOutline; - public const string DonutLarge = Material.Sharp.DonutLarge; - public const string DonutSmall = Material.Sharp.DonutSmall; - public const string DoorBack = Material.Sharp.DoorBack; - public const string DoorFront = Material.Sharp.DoorFront; - public const string DoorSliding = Material.Sharp.DoorSliding; - public const string Doorbell = Material.Sharp.Doorbell; - public const string DoubleArrow = Material.Sharp.DoubleArrow; - public const string DownhillSkiing = Material.Sharp.DownhillSkiing; - public const string Download = Material.Sharp.Download; - public const string DownloadDone = Material.Sharp.DownloadDone; - public const string DownloadForOffline = Material.Sharp.DownloadForOffline; - public const string Downloading = Material.Sharp.Downloading; - public const string Drafts = Material.Sharp.Drafts; - public const string DragHandle = Material.Sharp.DragHandle; - public const string DragIndicator = Material.Sharp.DragIndicator; - public const string Draw = Material.Sharp.Draw; - public const string DriveEta = Material.Sharp.DriveEta; - public const string DriveFileMove = Material.Sharp.DriveFileMove; - public const string DriveFileMoveRtl = Material.Sharp.DriveFileMoveRtl; - public const string DriveFileRenameOutline = Material.Sharp.DriveFileRenameOutline; - public const string DriveFolderUpload = Material.Sharp.DriveFolderUpload; - public const string Dry = Material.Sharp.Dry; - public const string DryCleaning = Material.Sharp.DryCleaning; - public const string Duo = Material.Sharp.Duo; - public const string Dvr = Material.Sharp.Dvr; - public const string DynamicFeed = Material.Sharp.DynamicFeed; - public const string DynamicForm = Material.Sharp.DynamicForm; - public const string EMobiledata = Material.Sharp.EMobiledata; - public const string Earbuds = Material.Sharp.Earbuds; - public const string EarbudsBattery = Material.Sharp.EarbudsBattery; - public const string East = Material.Sharp.East; - public const string EdgesensorHigh = Material.Sharp.EdgesensorHigh; - public const string EdgesensorLow = Material.Sharp.EdgesensorLow; - public const string Edit = Material.Sharp.Edit; - public const string EditAttributes = Material.Sharp.EditAttributes; - public const string EditCalendar = Material.Sharp.EditCalendar; - public const string EditLocation = Material.Sharp.EditLocation; - public const string EditLocationAlt = Material.Sharp.EditLocationAlt; - public const string EditNote = Material.Sharp.EditNote; - public const string EditNotifications = Material.Sharp.EditNotifications; - public const string EditOff = Material.Sharp.EditOff; - public const string EditRoad = Material.Sharp.EditRoad; - public const string Egg = Material.Sharp.Egg; - public const string EggAlt = Material.Sharp.EggAlt; - public const string Eject = Material.Sharp.Eject; - public const string Elderly = Material.Sharp.Elderly; - public const string ElderlyWoman = Material.Sharp.ElderlyWoman; - public const string ElectricBike = Material.Sharp.ElectricBike; - public const string ElectricCar = Material.Sharp.ElectricCar; - public const string ElectricMoped = Material.Sharp.ElectricMoped; - public const string ElectricRickshaw = Material.Sharp.ElectricRickshaw; - public const string ElectricScooter = Material.Sharp.ElectricScooter; - public const string ElectricalServices = Material.Sharp.ElectricalServices; - public const string Elevator = Material.Sharp.Elevator; - public const string Email = Material.Sharp.Email; - public const string Emergency = Material.Sharp.Emergency; - public const string EmergencyRecording = Material.Sharp.EmergencyRecording; - public const string EmergencyShare = Material.Sharp.EmergencyShare; - public const string EmojiEmotions = Material.Sharp.EmojiEmotions; - public const string EmojiEvents = Material.Sharp.EmojiEvents; - public const string EmojiFoodBeverage = Material.Sharp.EmojiFoodBeverage; - public const string EmojiNature = Material.Sharp.EmojiNature; - public const string EmojiObjects = Material.Sharp.EmojiObjects; - public const string EmojiPeople = Material.Sharp.EmojiPeople; - public const string EmojiSymbols = Material.Sharp.EmojiSymbols; - public const string EmojiTransportation = Material.Sharp.EmojiTransportation; - public const string Engineering = Material.Sharp.Engineering; - public const string EnhancedEncryption = Material.Sharp.EnhancedEncryption; - public const string Equalizer = Material.Sharp.Equalizer; - public const string Error = Material.Sharp.Error; - public const string ErrorOutline = Material.Sharp.ErrorOutline; - public const string Escalator = Material.Sharp.Escalator; - public const string EscalatorWarning = Material.Sharp.EscalatorWarning; - public const string Euro = Material.Sharp.Euro; - public const string EuroSymbol = Material.Sharp.EuroSymbol; - public const string EvStation = Material.Sharp.EvStation; - public const string Event = Material.Sharp.Event; - public const string EventAvailable = Material.Sharp.EventAvailable; - public const string EventBusy = Material.Sharp.EventBusy; - public const string EventNote = Material.Sharp.EventNote; - public const string EventRepeat = Material.Sharp.EventRepeat; - public const string EventSeat = Material.Sharp.EventSeat; - public const string ExitToApp = Material.Sharp.ExitToApp; - public const string Expand = Material.Sharp.Expand; - public const string ExpandCircleDown = Material.Sharp.ExpandCircleDown; - public const string ExpandLess = Material.Sharp.ExpandLess; - public const string ExpandMore = Material.Sharp.ExpandMore; - public const string Explicit = Material.Sharp.Explicit; - public const string Explore = Material.Sharp.Explore; - public const string ExploreOff = Material.Sharp.ExploreOff; - public const string Exposure = Material.Sharp.Exposure; - public const string ExposureNeg1 = Material.Sharp.ExposureNeg1; - public const string ExposureNeg2 = Material.Sharp.ExposureNeg2; - public const string ExposurePlus1 = Material.Sharp.ExposurePlus1; - public const string ExposurePlus2 = Material.Sharp.ExposurePlus2; - public const string ExposureZero = Material.Sharp.ExposureZero; - public const string Extension = Material.Sharp.Extension; - public const string ExtensionOff = Material.Sharp.ExtensionOff; - public const string Face = Material.Sharp.Face; - public const string FaceRetouchingNatural = Material.Sharp.FaceRetouchingNatural; - public const string FaceRetouchingOff = Material.Sharp.FaceRetouchingOff; - public const string FactCheck = Material.Sharp.FactCheck; - public const string Factory = Material.Sharp.Factory; - public const string FamilyRestroom = Material.Sharp.FamilyRestroom; - public const string FastForward = Material.Sharp.FastForward; - public const string FastRewind = Material.Sharp.FastRewind; - public const string Fastfood = Material.Sharp.Fastfood; - public const string Favorite = Material.Sharp.Favorite; - public const string FavoriteBorder = Material.Sharp.FavoriteBorder; - public const string Fax = Material.Sharp.Fax; - public const string FeaturedPlayList = Material.Sharp.FeaturedPlayList; - public const string FeaturedVideo = Material.Sharp.FeaturedVideo; - public const string Feed = Material.Sharp.Feed; - public const string Feedback = Material.Sharp.Feedback; - public const string Female = Material.Sharp.Female; - public const string Fence = Material.Sharp.Fence; - public const string Festival = Material.Sharp.Festival; - public const string FiberDvr = Material.Sharp.FiberDvr; - public const string FiberManualRecord = Material.Sharp.FiberManualRecord; - public const string FiberNew = Material.Sharp.FiberNew; - public const string FiberPin = Material.Sharp.FiberPin; - public const string FiberSmartRecord = Material.Sharp.FiberSmartRecord; - public const string FileCopy = Material.Sharp.FileCopy; - public const string FileDownload = Material.Sharp.FileDownload; - public const string FileDownloadDone = Material.Sharp.FileDownloadDone; - public const string FileDownloadOff = Material.Sharp.FileDownloadOff; - public const string FileOpen = Material.Sharp.FileOpen; - public const string FilePresent = Material.Sharp.FilePresent; - public const string FileUpload = Material.Sharp.FileUpload; - public const string Filter = Material.Sharp.Filter; - public const string Filter1 = Material.Sharp.Filter1; - public const string Filter2 = Material.Sharp.Filter2; - public const string Filter3 = Material.Sharp.Filter3; - public const string Filter4 = Material.Sharp.Filter4; - public const string Filter5 = Material.Sharp.Filter5; - public const string Filter6 = Material.Sharp.Filter6; - public const string Filter7 = Material.Sharp.Filter7; - public const string Filter8 = Material.Sharp.Filter8; - public const string Filter9 = Material.Sharp.Filter9; - public const string Filter9Plus = Material.Sharp.Filter9Plus; - public const string FilterAlt = Material.Sharp.FilterAlt; - public const string FilterAltOff = Material.Sharp.FilterAltOff; - public const string FilterBAndW = Material.Sharp.FilterBAndW; - public const string FilterCenterFocus = Material.Sharp.FilterCenterFocus; - public const string FilterDrama = Material.Sharp.FilterDrama; - public const string FilterFrames = Material.Sharp.FilterFrames; - public const string FilterHdr = Material.Sharp.FilterHdr; - public const string FilterList = Material.Sharp.FilterList; - public const string FilterListOff = Material.Sharp.FilterListOff; - public const string FilterNone = Material.Sharp.FilterNone; - public const string FilterTiltShift = Material.Sharp.FilterTiltShift; - public const string FilterVintage = Material.Sharp.FilterVintage; - public const string FindInPage = Material.Sharp.FindInPage; - public const string FindReplace = Material.Sharp.FindReplace; - public const string Fingerprint = Material.Sharp.Fingerprint; - public const string FireExtinguisher = Material.Sharp.FireExtinguisher; - public const string Fireplace = Material.Sharp.Fireplace; - public const string FirstPage = Material.Sharp.FirstPage; - public const string FitScreen = Material.Sharp.FitScreen; - public const string Fitbit = Material.Sharp.Fitbit; - public const string FitnessCenter = Material.Sharp.FitnessCenter; - public const string Flag = Material.Sharp.Flag; - public const string FlagCircle = Material.Sharp.FlagCircle; - public const string Flaky = Material.Sharp.Flaky; - public const string Flare = Material.Sharp.Flare; - public const string FlashAuto = Material.Sharp.FlashAuto; - public const string FlashOff = Material.Sharp.FlashOff; - public const string FlashOn = Material.Sharp.FlashOn; - public const string FlashlightOff = Material.Sharp.FlashlightOff; - public const string FlashlightOn = Material.Sharp.FlashlightOn; - public const string Flatware = Material.Sharp.Flatware; - public const string Flight = Material.Sharp.Flight; - public const string FlightClass = Material.Sharp.FlightClass; - public const string FlightLand = Material.Sharp.FlightLand; - public const string FlightTakeoff = Material.Sharp.FlightTakeoff; - public const string Flip = Material.Sharp.Flip; - public const string FlipCameraAndroid = Material.Sharp.FlipCameraAndroid; - public const string FlipCameraIos = Material.Sharp.FlipCameraIos; - public const string FlipToBack = Material.Sharp.FlipToBack; - public const string FlipToFront = Material.Sharp.FlipToFront; - public const string Flood = Material.Sharp.Flood; - public const string Flourescent = Material.Sharp.Flourescent; - public const string FlutterDash = Material.Sharp.FlutterDash; - public const string FmdBad = Material.Sharp.FmdBad; - public const string FmdGood = Material.Sharp.FmdGood; - public const string Folder = Material.Sharp.Folder; - public const string FolderCopy = Material.Sharp.FolderCopy; - public const string FolderDelete = Material.Sharp.FolderDelete; - public const string FolderOff = Material.Sharp.FolderOff; - public const string FolderOpen = Material.Sharp.FolderOpen; - public const string FolderShared = Material.Sharp.FolderShared; - public const string FolderSpecial = Material.Sharp.FolderSpecial; - public const string FolderZip = Material.Sharp.FolderZip; - public const string FollowTheSigns = Material.Sharp.FollowTheSigns; - public const string FontDownload = Material.Sharp.FontDownload; - public const string FontDownloadOff = Material.Sharp.FontDownloadOff; - public const string FoodBank = Material.Sharp.FoodBank; - public const string Forest = Material.Sharp.Forest; - public const string ForkLeft = Material.Sharp.ForkLeft; - public const string ForkRight = Material.Sharp.ForkRight; - public const string FormatAlignCenter = Material.Sharp.FormatAlignCenter; - public const string FormatAlignJustify = Material.Sharp.FormatAlignJustify; - public const string FormatAlignLeft = Material.Sharp.FormatAlignLeft; - public const string FormatAlignRight = Material.Sharp.FormatAlignRight; - public const string FormatBold = Material.Sharp.FormatBold; - public const string FormatClear = Material.Sharp.FormatClear; - public const string FormatColorFill = Material.Sharp.FormatColorFill; - public const string FormatColorReset = Material.Sharp.FormatColorReset; - public const string FormatColorText = Material.Sharp.FormatColorText; - public const string FormatIndentDecrease = Material.Sharp.FormatIndentDecrease; - public const string FormatIndentIncrease = Material.Sharp.FormatIndentIncrease; - public const string FormatItalic = Material.Sharp.FormatItalic; - public const string FormatLineSpacing = Material.Sharp.FormatLineSpacing; - public const string FormatListBulleted = Material.Sharp.FormatListBulleted; - public const string FormatListNumbered = Material.Sharp.FormatListNumbered; - public const string FormatListNumberedRtl = Material.Sharp.FormatListNumberedRtl; - public const string FormatOverline = Material.Sharp.FormatOverline; - public const string FormatPaint = Material.Sharp.FormatPaint; - public const string FormatQuote = Material.Sharp.FormatQuote; - public const string FormatShapes = Material.Sharp.FormatShapes; - public const string FormatSize = Material.Sharp.FormatSize; - public const string FormatStrikethrough = Material.Sharp.FormatStrikethrough; - public const string FormatTextdirectionLToR = Material.Sharp.FormatTextdirectionLToR; - public const string FormatTextdirectionRToL = Material.Sharp.FormatTextdirectionRToL; - public const string FormatUnderlined = Material.Sharp.FormatUnderlined; - public const string Fort = Material.Sharp.Fort; - public const string Forum = Material.Sharp.Forum; - public const string Forward = Material.Sharp.Forward; - public const string Forward10 = Material.Sharp.Forward10; - public const string Forward30 = Material.Sharp.Forward30; - public const string Forward5 = Material.Sharp.Forward5; - public const string ForwardToInbox = Material.Sharp.ForwardToInbox; - public const string Foundation = Material.Sharp.Foundation; - public const string FreeBreakfast = Material.Sharp.FreeBreakfast; - public const string FreeCancellation = Material.Sharp.FreeCancellation; - public const string FrontHand = Material.Sharp.FrontHand; - public const string Fullscreen = Material.Sharp.Fullscreen; - public const string FullscreenExit = Material.Sharp.FullscreenExit; - public const string Functions = Material.Sharp.Functions; - public const string GMobiledata = Material.Sharp.GMobiledata; - public const string GTranslate = Material.Sharp.GTranslate; - public const string Gamepad = Material.Sharp.Gamepad; - public const string Games = Material.Sharp.Games; - public const string Garage = Material.Sharp.Garage; - public const string Gavel = Material.Sharp.Gavel; - public const string GeneratingTokens = Material.Sharp.GeneratingTokens; - public const string Gesture = Material.Sharp.Gesture; - public const string GetApp = Material.Sharp.GetApp; - public const string Gif = Material.Sharp.Gif; - public const string GifBox = Material.Sharp.GifBox; - public const string Girl = Material.Sharp.Girl; - public const string Gite = Material.Sharp.Gite; - public const string GolfCourse = Material.Sharp.GolfCourse; - public const string GppBad = Material.Sharp.GppBad; - public const string GppGood = Material.Sharp.GppGood; - public const string GppMaybe = Material.Sharp.GppMaybe; - public const string GpsFixed = Material.Sharp.GpsFixed; - public const string GpsNotFixed = Material.Sharp.GpsNotFixed; - public const string GpsOff = Material.Sharp.GpsOff; - public const string Grade = Material.Sharp.Grade; - public const string Gradient = Material.Sharp.Gradient; - public const string Grading = Material.Sharp.Grading; - public const string Grain = Material.Sharp.Grain; - public const string GraphicEq = Material.Sharp.GraphicEq; - public const string Grass = Material.Sharp.Grass; - public const string Grid3x3 = Material.Sharp.Grid3x3; - public const string Grid4x4 = Material.Sharp.Grid4x4; - public const string GridGoldenratio = Material.Sharp.GridGoldenratio; - public const string GridOff = Material.Sharp.GridOff; - public const string GridOn = Material.Sharp.GridOn; - public const string GridView = Material.Sharp.GridView; - public const string Group = Material.Sharp.Group; - public const string GroupAdd = Material.Sharp.GroupAdd; - public const string GroupOff = Material.Sharp.GroupOff; - public const string GroupRemove = Material.Sharp.GroupRemove; - public const string GroupWork = Material.Sharp.GroupWork; - public const string Groups = Material.Sharp.Groups; - public const string HMobiledata = Material.Sharp.HMobiledata; - public const string HPlusMobiledata = Material.Sharp.HPlusMobiledata; - public const string Hail = Material.Sharp.Hail; - public const string Handshake = Material.Sharp.Handshake; - public const string Handyman = Material.Sharp.Handyman; - public const string Hardware = Material.Sharp.Hardware; - public const string Hd = Material.Sharp.Hd; - public const string HdrAuto = Material.Sharp.HdrAuto; - public const string HdrAutoSelect = Material.Sharp.HdrAutoSelect; - public const string HdrEnhancedSelect = Material.Sharp.HdrEnhancedSelect; - public const string HdrOff = Material.Sharp.HdrOff; - public const string HdrOffSelect = Material.Sharp.HdrOffSelect; - public const string HdrOn = Material.Sharp.HdrOn; - public const string HdrOnSelect = Material.Sharp.HdrOnSelect; - public const string HdrPlus = Material.Sharp.HdrPlus; - public const string HdrStrong = Material.Sharp.HdrStrong; - public const string HdrWeak = Material.Sharp.HdrWeak; - public const string Headphones = Material.Sharp.Headphones; - public const string HeadphonesBattery = Material.Sharp.HeadphonesBattery; - public const string Headset = Material.Sharp.Headset; - public const string HeadsetMic = Material.Sharp.HeadsetMic; - public const string HeadsetOff = Material.Sharp.HeadsetOff; - public const string Healing = Material.Sharp.Healing; - public const string HealthAndSafety = Material.Sharp.HealthAndSafety; - public const string Hearing = Material.Sharp.Hearing; - public const string HearingDisabled = Material.Sharp.HearingDisabled; - public const string HeartBroken = Material.Sharp.HeartBroken; - public const string Height = Material.Sharp.Height; - public const string Help = Material.Sharp.Help; - public const string HelpCenter = Material.Sharp.HelpCenter; - public const string HelpOutline = Material.Sharp.HelpOutline; - public const string Hevc = Material.Sharp.Hevc; - public const string Hexagon = Material.Sharp.Hexagon; - public const string HideImage = Material.Sharp.HideImage; - public const string HideSource = Material.Sharp.HideSource; - public const string HighQuality = Material.Sharp.HighQuality; - public const string Highlight = Material.Sharp.Highlight; - public const string HighlightAlt = Material.Sharp.HighlightAlt; - public const string HighlightOff = Material.Sharp.HighlightOff; - public const string Hiking = Material.Sharp.Hiking; - public const string History = Material.Sharp.History; - public const string HistoryEdu = Material.Sharp.HistoryEdu; - public const string HistoryToggleOff = Material.Sharp.HistoryToggleOff; - public const string Hive = Material.Sharp.Hive; - public const string Hls = Material.Sharp.Hls; - public const string HlsOff = Material.Sharp.HlsOff; - public const string HolidayVillage = Material.Sharp.HolidayVillage; - public const string Home = Material.Sharp.Home; - public const string HomeMax = Material.Sharp.HomeMax; - public const string HomeMini = Material.Sharp.HomeMini; - public const string HomeRepairService = Material.Sharp.HomeRepairService; - public const string HomeWork = Material.Sharp.HomeWork; - public const string HorizontalDistribute = Material.Sharp.HorizontalDistribute; - public const string HorizontalRule = Material.Sharp.HorizontalRule; - public const string HorizontalSplit = Material.Sharp.HorizontalSplit; - public const string HotTub = Material.Sharp.HotTub; - public const string Hotel = Material.Sharp.Hotel; - public const string HotelClass = Material.Sharp.HotelClass; - public const string HourglassBottom = Material.Sharp.HourglassBottom; - public const string HourglassDisabled = Material.Sharp.HourglassDisabled; - public const string HourglassEmpty = Material.Sharp.HourglassEmpty; - public const string HourglassFull = Material.Sharp.HourglassFull; - public const string HourglassTop = Material.Sharp.HourglassTop; - public const string House = Material.Sharp.House; - public const string HouseSiding = Material.Sharp.HouseSiding; - public const string Houseboat = Material.Sharp.Houseboat; - public const string HowToReg = Material.Sharp.HowToReg; - public const string HowToVote = Material.Sharp.HowToVote; - public const string Html = Material.Sharp.Html; - public const string Http = Material.Sharp.Http; - public const string Https = Material.Sharp.Https; - public const string Hub = Material.Sharp.Hub; - public const string Hvac = Material.Sharp.Hvac; - public const string IceSkating = Material.Sharp.IceSkating; - public const string Icecream = Material.Sharp.Icecream; - public const string Image = Material.Sharp.Image; - public const string ImageAspectRatio = Material.Sharp.ImageAspectRatio; - public const string ImageNotSupported = Material.Sharp.ImageNotSupported; - public const string ImageSearch = Material.Sharp.ImageSearch; - public const string ImagesearchRoller = Material.Sharp.ImagesearchRoller; - public const string ImportContacts = Material.Sharp.ImportContacts; - public const string ImportExport = Material.Sharp.ImportExport; - public const string ImportantDevices = Material.Sharp.ImportantDevices; - public const string Inbox = Material.Sharp.Inbox; - public const string IncompleteCircle = Material.Sharp.IncompleteCircle; - public const string IndeterminateCheckBox = Material.Sharp.IndeterminateCheckBox; - public const string Info = Material.Sharp.Info; - public const string Input = Material.Sharp.Input; - public const string InsertChart = Material.Sharp.InsertChart; - public const string InsertChartOutlined = Material.Sharp.InsertChartOutlined; - public const string InsertComment = Material.Sharp.InsertComment; - public const string InsertDriveFile = Material.Sharp.InsertDriveFile; - public const string InsertEmoticon = Material.Sharp.InsertEmoticon; - public const string InsertInvitation = Material.Sharp.InsertInvitation; - public const string InsertLink = Material.Sharp.InsertLink; - public const string InsertPageBreak = Material.Sharp.InsertPageBreak; - public const string InsertPhoto = Material.Sharp.InsertPhoto; - public const string Insights = Material.Sharp.Insights; - public const string InstallDesktop = Material.Sharp.InstallDesktop; - public const string InstallMobile = Material.Sharp.InstallMobile; - public const string IntegrationInstructions = Material.Sharp.IntegrationInstructions; - public const string Interests = Material.Sharp.Interests; - public const string InterpreterMode = Material.Sharp.InterpreterMode; - public const string Inventory = Material.Sharp.Inventory; - public const string Inventory2 = Material.Sharp.Inventory2; - public const string InvertColors = Material.Sharp.InvertColors; - public const string InvertColorsOff = Material.Sharp.InvertColorsOff; - public const string IosShare = Material.Sharp.IosShare; - public const string Iron = Material.Sharp.Iron; - public const string Iso = Material.Sharp.Iso; - public const string Javascript = Material.Sharp.Javascript; - public const string JoinFull = Material.Sharp.JoinFull; - public const string JoinInner = Material.Sharp.JoinInner; - public const string JoinLeft = Material.Sharp.JoinLeft; - public const string JoinRight = Material.Sharp.JoinRight; - public const string Kayaking = Material.Sharp.Kayaking; - public const string KebabDining = Material.Sharp.KebabDining; - public const string Key = Material.Sharp.Key; - public const string KeyOff = Material.Sharp.KeyOff; - public const string Keyboard = Material.Sharp.Keyboard; - public const string KeyboardAlt = Material.Sharp.KeyboardAlt; - public const string KeyboardArrowDown = Material.Sharp.KeyboardArrowDown; - public const string KeyboardArrowLeft = Material.Sharp.KeyboardArrowLeft; - public const string KeyboardArrowRight = Material.Sharp.KeyboardArrowRight; - public const string KeyboardArrowUp = Material.Sharp.KeyboardArrowUp; - public const string KeyboardBackspace = Material.Sharp.KeyboardBackspace; - public const string KeyboardCapslock = Material.Sharp.KeyboardCapslock; - public const string KeyboardCommandKey = Material.Sharp.KeyboardCommandKey; - public const string KeyboardControlKey = Material.Sharp.KeyboardControlKey; - public const string KeyboardDoubleArrowDown = Material.Sharp.KeyboardDoubleArrowDown; - public const string KeyboardDoubleArrowLeft = Material.Sharp.KeyboardDoubleArrowLeft; - public const string KeyboardDoubleArrowRight = Material.Sharp.KeyboardDoubleArrowRight; - public const string KeyboardDoubleArrowUp = Material.Sharp.KeyboardDoubleArrowUp; - public const string KeyboardHide = Material.Sharp.KeyboardHide; - public const string KeyboardOptionKey = Material.Sharp.KeyboardOptionKey; - public const string KeyboardReturn = Material.Sharp.KeyboardReturn; - public const string KeyboardTab = Material.Sharp.KeyboardTab; - public const string KeyboardVoice = Material.Sharp.KeyboardVoice; - public const string KingBed = Material.Sharp.KingBed; - public const string Kitchen = Material.Sharp.Kitchen; - public const string Kitesurfing = Material.Sharp.Kitesurfing; - public const string Label = Material.Sharp.Label; - public const string LabelImportant = Material.Sharp.LabelImportant; - public const string LabelOff = Material.Sharp.LabelOff; - public const string Lan = Material.Sharp.Lan; - public const string Landscape = Material.Sharp.Landscape; - public const string Landslide = Material.Sharp.Landslide; - public const string Language = Material.Sharp.Language; - public const string Laptop = Material.Sharp.Laptop; - public const string LaptopChromebook = Material.Sharp.LaptopChromebook; - public const string LaptopMac = Material.Sharp.LaptopMac; - public const string LaptopWindows = Material.Sharp.LaptopWindows; - public const string LastPage = Material.Sharp.LastPage; - public const string Launch = Material.Sharp.Launch; - public const string Layers = Material.Sharp.Layers; - public const string LayersClear = Material.Sharp.LayersClear; - public const string Leaderboard = Material.Sharp.Leaderboard; - public const string LeakAdd = Material.Sharp.LeakAdd; - public const string LeakRemove = Material.Sharp.LeakRemove; - public const string LegendToggle = Material.Sharp.LegendToggle; - public const string Lens = Material.Sharp.Lens; - public const string LensBlur = Material.Sharp.LensBlur; - public const string LibraryAdd = Material.Sharp.LibraryAdd; - public const string LibraryAddCheck = Material.Sharp.LibraryAddCheck; - public const string LibraryBooks = Material.Sharp.LibraryBooks; - public const string LibraryMusic = Material.Sharp.LibraryMusic; - public const string Light = Material.Sharp.Light; - public const string LightMode = Material.Sharp.LightMode; - public const string Lightbulb = Material.Sharp.Lightbulb; - public const string LightbulbCircle = Material.Sharp.LightbulbCircle; - public const string LineAxis = Material.Sharp.LineAxis; - public const string LineStyle = Material.Sharp.LineStyle; - public const string LineWeight = Material.Sharp.LineWeight; - public const string LinearScale = Material.Sharp.LinearScale; - public const string Link = Material.Sharp.Link; - public const string LinkOff = Material.Sharp.LinkOff; - public const string LinkedCamera = Material.Sharp.LinkedCamera; - public const string Liquor = Material.Sharp.Liquor; - public const string List = Material.Sharp.List; - public const string ListAlt = Material.Sharp.ListAlt; - public const string LiveHelp = Material.Sharp.LiveHelp; - public const string LiveTv = Material.Sharp.LiveTv; - public const string Living = Material.Sharp.Living; - public const string LocalActivity = Material.Sharp.LocalActivity; - public const string LocalAirport = Material.Sharp.LocalAirport; - public const string LocalAtm = Material.Sharp.LocalAtm; - public const string LocalBar = Material.Sharp.LocalBar; - public const string LocalCafe = Material.Sharp.LocalCafe; - public const string LocalCarWash = Material.Sharp.LocalCarWash; - public const string LocalConvenienceStore = Material.Sharp.LocalConvenienceStore; - public const string LocalDining = Material.Sharp.LocalDining; - public const string LocalDrink = Material.Sharp.LocalDrink; - public const string LocalFireDepartment = Material.Sharp.LocalFireDepartment; - public const string LocalFlorist = Material.Sharp.LocalFlorist; - public const string LocalGasStation = Material.Sharp.LocalGasStation; - public const string LocalGroceryStore = Material.Sharp.LocalGroceryStore; - public const string LocalHospital = Material.Sharp.LocalHospital; - public const string LocalHotel = Material.Sharp.LocalHotel; - public const string LocalLaundryService = Material.Sharp.LocalLaundryService; - public const string LocalLibrary = Material.Sharp.LocalLibrary; - public const string LocalMall = Material.Sharp.LocalMall; - public const string LocalMovies = Material.Sharp.LocalMovies; - public const string LocalOffer = Material.Sharp.LocalOffer; - public const string LocalParking = Material.Sharp.LocalParking; - public const string LocalPharmacy = Material.Sharp.LocalPharmacy; - public const string LocalPhone = Material.Sharp.LocalPhone; - public const string LocalPizza = Material.Sharp.LocalPizza; - public const string LocalPlay = Material.Sharp.LocalPlay; - public const string LocalPolice = Material.Sharp.LocalPolice; - public const string LocalPostOffice = Material.Sharp.LocalPostOffice; - public const string LocalPrintshop = Material.Sharp.LocalPrintshop; - public const string LocalSee = Material.Sharp.LocalSee; - public const string LocalShipping = Material.Sharp.LocalShipping; - public const string LocalTaxi = Material.Sharp.LocalTaxi; - public const string LocationCity = Material.Sharp.LocationCity; - public const string LocationDisabled = Material.Sharp.LocationDisabled; - public const string LocationOff = Material.Sharp.LocationOff; - public const string LocationOn = Material.Sharp.LocationOn; - public const string LocationSearching = Material.Sharp.LocationSearching; - public const string Lock = Material.Sharp.Lock; - public const string LockClock = Material.Sharp.LockClock; - public const string LockOpen = Material.Sharp.LockOpen; - public const string LockReset = Material.Sharp.LockReset; - public const string Login = Material.Sharp.Login; - public const string LogoDev = Material.Sharp.LogoDev; - public const string Logout = Material.Sharp.Logout; - public const string Looks = Material.Sharp.Looks; - public const string Looks3 = Material.Sharp.Looks3; - public const string Looks4 = Material.Sharp.Looks4; - public const string Looks5 = Material.Sharp.Looks5; - public const string Looks6 = Material.Sharp.Looks6; - public const string LooksOne = Material.Sharp.LooksOne; - public const string LooksTwo = Material.Sharp.LooksTwo; - public const string Loop = Material.Sharp.Loop; - public const string Loupe = Material.Sharp.Loupe; - public const string LowPriority = Material.Sharp.LowPriority; - public const string Loyalty = Material.Sharp.Loyalty; - public const string LteMobiledata = Material.Sharp.LteMobiledata; - public const string LtePlusMobiledata = Material.Sharp.LtePlusMobiledata; - public const string Luggage = Material.Sharp.Luggage; - public const string LunchDining = Material.Sharp.LunchDining; - public const string Mail = Material.Sharp.Mail; - public const string MailOutline = Material.Sharp.MailOutline; - public const string Male = Material.Sharp.Male; - public const string Man = Material.Sharp.Man; - public const string ManageAccounts = Material.Sharp.ManageAccounts; - public const string ManageHistory = Material.Sharp.ManageHistory; - public const string ManageSearch = Material.Sharp.ManageSearch; - public const string Map = Material.Sharp.Map; - public const string MapsHomeWork = Material.Sharp.MapsHomeWork; - public const string MapsUgc = Material.Sharp.MapsUgc; - public const string Margin = Material.Sharp.Margin; - public const string MarkAsUnread = Material.Sharp.MarkAsUnread; - public const string MarkChatRead = Material.Sharp.MarkChatRead; - public const string MarkChatUnread = Material.Sharp.MarkChatUnread; - public const string MarkEmailRead = Material.Sharp.MarkEmailRead; - public const string MarkEmailUnread = Material.Sharp.MarkEmailUnread; - public const string MarkUnreadChatAlt = Material.Sharp.MarkUnreadChatAlt; - public const string Markunread = Material.Sharp.Markunread; - public const string MarkunreadMailbox = Material.Sharp.MarkunreadMailbox; - public const string Masks = Material.Sharp.Masks; - public const string Maximize = Material.Sharp.Maximize; - public const string MediaBluetoothOff = Material.Sharp.MediaBluetoothOff; - public const string MediaBluetoothOn = Material.Sharp.MediaBluetoothOn; - public const string Mediation = Material.Sharp.Mediation; - public const string MedicalInformation = Material.Sharp.MedicalInformation; - public const string MedicalServices = Material.Sharp.MedicalServices; - public const string Medication = Material.Sharp.Medication; - public const string MedicationLiquid = Material.Sharp.MedicationLiquid; - public const string MeetingRoom = Material.Sharp.MeetingRoom; - public const string Memory = Material.Sharp.Memory; - public const string Menu = Material.Sharp.Menu; - public const string MenuBook = Material.Sharp.MenuBook; - public const string MenuOpen = Material.Sharp.MenuOpen; - public const string Merge = Material.Sharp.Merge; - public const string MergeType = Material.Sharp.MergeType; - public const string Message = Material.Sharp.Message; - public const string Mic = Material.Sharp.Mic; - public const string MicExternalOff = Material.Sharp.MicExternalOff; - public const string MicExternalOn = Material.Sharp.MicExternalOn; - public const string MicNone = Material.Sharp.MicNone; - public const string MicOff = Material.Sharp.MicOff; - public const string Microwave = Material.Sharp.Microwave; - public const string MilitaryTech = Material.Sharp.MilitaryTech; - public const string Minimize = Material.Sharp.Minimize; - public const string MinorCrash = Material.Sharp.MinorCrash; - public const string MiscellaneousServices = Material.Sharp.MiscellaneousServices; - public const string MissedVideoCall = Material.Sharp.MissedVideoCall; - public const string Mms = Material.Sharp.Mms; - public const string MobileFriendly = Material.Sharp.MobileFriendly; - public const string MobileOff = Material.Sharp.MobileOff; - public const string MobileScreenShare = Material.Sharp.MobileScreenShare; - public const string MobiledataOff = Material.Sharp.MobiledataOff; - public const string Mode = Material.Sharp.Mode; - public const string ModeComment = Material.Sharp.ModeComment; - public const string ModeEdit = Material.Sharp.ModeEdit; - public const string ModeEditOutline = Material.Sharp.ModeEditOutline; - public const string ModeNight = Material.Sharp.ModeNight; - public const string ModeOfTravel = Material.Sharp.ModeOfTravel; - public const string ModeStandby = Material.Sharp.ModeStandby; - public const string ModelTraining = Material.Sharp.ModelTraining; - public const string MonetizationOn = Material.Sharp.MonetizationOn; - public const string Money = Material.Sharp.Money; - public const string MoneyOff = Material.Sharp.MoneyOff; - public const string MoneyOffCsred = Material.Sharp.MoneyOffCsred; - public const string Monitor = Material.Sharp.Monitor; - public const string MonitorHeart = Material.Sharp.MonitorHeart; - public const string MonitorWeight = Material.Sharp.MonitorWeight; - public const string MonochromePhotos = Material.Sharp.MonochromePhotos; - public const string Mood = Material.Sharp.Mood; - public const string MoodBad = Material.Sharp.MoodBad; - public const string Moped = Material.Sharp.Moped; - public const string More = Material.Sharp.More; - public const string MoreHoriz = Material.Sharp.MoreHoriz; - public const string MoreTime = Material.Sharp.MoreTime; - public const string MoreVert = Material.Sharp.MoreVert; - public const string Mosque = Material.Sharp.Mosque; - public const string MotionPhotosAuto = Material.Sharp.MotionPhotosAuto; - public const string MotionPhotosOff = Material.Sharp.MotionPhotosOff; - public const string MotionPhotosOn = Material.Sharp.MotionPhotosOn; - public const string MotionPhotosPause = Material.Sharp.MotionPhotosPause; - public const string MotionPhotosPaused = Material.Sharp.MotionPhotosPaused; - public const string Mouse = Material.Sharp.Mouse; - public const string MoveDown = Material.Sharp.MoveDown; - public const string MoveToInbox = Material.Sharp.MoveToInbox; - public const string MoveUp = Material.Sharp.MoveUp; - public const string Movie = Material.Sharp.Movie; - public const string MovieCreation = Material.Sharp.MovieCreation; - public const string MovieFilter = Material.Sharp.MovieFilter; - public const string Moving = Material.Sharp.Moving; - public const string Mp = Material.Sharp.Mp; - public const string MultilineChart = Material.Sharp.MultilineChart; - public const string MultipleStop = Material.Sharp.MultipleStop; - public const string Museum = Material.Sharp.Museum; - public const string MusicNote = Material.Sharp.MusicNote; - public const string MusicOff = Material.Sharp.MusicOff; - public const string MusicVideo = Material.Sharp.MusicVideo; - public const string MyLocation = Material.Sharp.MyLocation; - public const string Nat = Material.Sharp.Nat; - public const string Nature = Material.Sharp.Nature; - public const string NaturePeople = Material.Sharp.NaturePeople; - public const string NavigateBefore = Material.Sharp.NavigateBefore; - public const string NavigateNext = Material.Sharp.NavigateNext; - public const string Navigation = Material.Sharp.Navigation; - public const string NearMe = Material.Sharp.NearMe; - public const string NearMeDisabled = Material.Sharp.NearMeDisabled; - public const string NearbyError = Material.Sharp.NearbyError; - public const string NearbyOff = Material.Sharp.NearbyOff; - public const string NetworkCell = Material.Sharp.NetworkCell; - public const string NetworkCheck = Material.Sharp.NetworkCheck; - public const string NetworkLocked = Material.Sharp.NetworkLocked; - public const string NetworkPing = Material.Sharp.NetworkPing; - public const string NetworkWifi = Material.Sharp.NetworkWifi; - public const string NetworkWifi1Bar = Material.Sharp.NetworkWifi1Bar; - public const string NetworkWifi2Bar = Material.Sharp.NetworkWifi2Bar; - public const string NetworkWifi3Bar = Material.Sharp.NetworkWifi3Bar; - public const string NewLabel = Material.Sharp.NewLabel; - public const string NewReleases = Material.Sharp.NewReleases; - public const string Newspaper = Material.Sharp.Newspaper; - public const string NextPlan = Material.Sharp.NextPlan; - public const string NextWeek = Material.Sharp.NextWeek; - public const string Nfc = Material.Sharp.Nfc; - public const string NightShelter = Material.Sharp.NightShelter; - public const string Nightlife = Material.Sharp.Nightlife; - public const string Nightlight = Material.Sharp.Nightlight; - public const string NightlightRound = Material.Sharp.NightlightRound; - public const string NightsStay = Material.Sharp.NightsStay; - public const string NoAccounts = Material.Sharp.NoAccounts; - public const string NoBackpack = Material.Sharp.NoBackpack; - public const string NoCell = Material.Sharp.NoCell; - public const string NoCrash = Material.Sharp.NoCrash; - public const string NoDrinks = Material.Sharp.NoDrinks; - public const string NoEncryption = Material.Sharp.NoEncryption; - public const string NoEncryptionGmailerrorred = Material.Sharp.NoEncryptionGmailerrorred; - public const string NoFlash = Material.Sharp.NoFlash; - public const string NoFood = Material.Sharp.NoFood; - public const string NoLuggage = Material.Sharp.NoLuggage; - public const string NoMeals = Material.Sharp.NoMeals; - public const string NoMeetingRoom = Material.Sharp.NoMeetingRoom; - public const string NoPhotography = Material.Sharp.NoPhotography; - public const string NoSim = Material.Sharp.NoSim; - public const string NoStroller = Material.Sharp.NoStroller; - public const string NoTransfer = Material.Sharp.NoTransfer; - public const string NoiseAware = Material.Sharp.NoiseAware; - public const string NoiseControlOff = Material.Sharp.NoiseControlOff; - public const string NordicWalking = Material.Sharp.NordicWalking; - public const string North = Material.Sharp.North; - public const string NorthEast = Material.Sharp.NorthEast; - public const string NorthWest = Material.Sharp.NorthWest; - public const string NotAccessible = Material.Sharp.NotAccessible; - public const string NotInterested = Material.Sharp.NotInterested; - public const string NotListedLocation = Material.Sharp.NotListedLocation; - public const string NotStarted = Material.Sharp.NotStarted; - public const string Note = Material.Sharp.Note; - public const string NoteAdd = Material.Sharp.NoteAdd; - public const string NoteAlt = Material.Sharp.NoteAlt; - public const string Notes = Material.Sharp.Notes; - public const string NotificationAdd = Material.Sharp.NotificationAdd; - public const string NotificationImportant = Material.Sharp.NotificationImportant; - public const string Notifications = Material.Sharp.Notifications; - public const string NotificationsActive = Material.Sharp.NotificationsActive; - public const string NotificationsNone = Material.Sharp.NotificationsNone; - public const string NotificationsOff = Material.Sharp.NotificationsOff; - public const string NotificationsPaused = Material.Sharp.NotificationsPaused; - public const string Numbers = Material.Sharp.Numbers; - public const string OfflineBolt = Material.Sharp.OfflineBolt; - public const string OfflinePin = Material.Sharp.OfflinePin; - public const string OfflineShare = Material.Sharp.OfflineShare; - public const string OnDeviceTraining = Material.Sharp.OnDeviceTraining; - public const string OndemandVideo = Material.Sharp.OndemandVideo; - public const string OnlinePrediction = Material.Sharp.OnlinePrediction; - public const string Opacity = Material.Sharp.Opacity; - public const string OpenInBrowser = Material.Sharp.OpenInBrowser; - public const string OpenInFull = Material.Sharp.OpenInFull; - public const string OpenInNew = Material.Sharp.OpenInNew; - public const string OpenInNewOff = Material.Sharp.OpenInNewOff; - public const string OpenWith = Material.Sharp.OpenWith; - public const string OtherHouses = Material.Sharp.OtherHouses; - public const string Outbound = Material.Sharp.Outbound; - public const string Outbox = Material.Sharp.Outbox; - public const string OutdoorGrill = Material.Sharp.OutdoorGrill; - public const string Outlet = Material.Sharp.Outlet; - public const string OutlinedFlag = Material.Sharp.OutlinedFlag; - public const string Output = Material.Sharp.Output; - public const string Padding = Material.Sharp.Padding; - public const string Pages = Material.Sharp.Pages; - public const string Pageview = Material.Sharp.Pageview; - public const string Paid = Material.Sharp.Paid; - public const string Palette = Material.Sharp.Palette; - public const string PanTool = Material.Sharp.PanTool; - public const string PanToolAlt = Material.Sharp.PanToolAlt; - public const string Panorama = Material.Sharp.Panorama; - public const string PanoramaFishEye = Material.Sharp.PanoramaFishEye; - public const string PanoramaHorizontal = Material.Sharp.PanoramaHorizontal; - public const string PanoramaHorizontalSelect = Material.Sharp.PanoramaHorizontalSelect; - public const string PanoramaPhotosphere = Material.Sharp.PanoramaPhotosphere; - public const string PanoramaPhotosphereSelect = Material.Sharp.PanoramaPhotosphereSelect; - public const string PanoramaVertical = Material.Sharp.PanoramaVertical; - public const string PanoramaVerticalSelect = Material.Sharp.PanoramaVerticalSelect; - public const string PanoramaWideAngle = Material.Sharp.PanoramaWideAngle; - public const string PanoramaWideAngleSelect = Material.Sharp.PanoramaWideAngleSelect; - public const string Paragliding = Material.Sharp.Paragliding; - public const string Park = Material.Sharp.Park; - public const string PartyMode = Material.Sharp.PartyMode; - public const string Password = Material.Sharp.Password; - public const string Pattern = Material.Sharp.Pattern; - public const string Pause = Material.Sharp.Pause; - public const string PauseCircle = Material.Sharp.PauseCircle; - public const string PauseCircleFilled = Material.Sharp.PauseCircleFilled; - public const string PauseCircleOutline = Material.Sharp.PauseCircleOutline; - public const string PausePresentation = Material.Sharp.PausePresentation; - public const string Payment = Material.Sharp.Payment; - public const string Payments = Material.Sharp.Payments; - public const string PedalBike = Material.Sharp.PedalBike; - public const string Pending = Material.Sharp.Pending; - public const string PendingActions = Material.Sharp.PendingActions; - public const string Pentagon = Material.Sharp.Pentagon; - public const string People = Material.Sharp.People; - public const string PeopleAlt = Material.Sharp.PeopleAlt; - public const string PeopleOutline = Material.Sharp.PeopleOutline; - public const string Percent = Material.Sharp.Percent; - public const string PermCameraMic = Material.Sharp.PermCameraMic; - public const string PermContactCalendar = Material.Sharp.PermContactCalendar; - public const string PermDataSetting = Material.Sharp.PermDataSetting; - public const string PermDeviceInformation = Material.Sharp.PermDeviceInformation; - public const string PermIdentity = Material.Sharp.PermIdentity; - public const string PermMedia = Material.Sharp.PermMedia; - public const string PermPhoneMsg = Material.Sharp.PermPhoneMsg; - public const string PermScanWifi = Material.Sharp.PermScanWifi; - public const string Person = Material.Sharp.Person; - public const string PersonAdd = Material.Sharp.PersonAdd; - public const string PersonAddAlt = Material.Sharp.PersonAddAlt; - public const string PersonAddAlt1 = Material.Sharp.PersonAddAlt1; - public const string PersonAddDisabled = Material.Sharp.PersonAddDisabled; - public const string PersonOff = Material.Sharp.PersonOff; - public const string PersonOutline = Material.Sharp.PersonOutline; - public const string PersonPin = Material.Sharp.PersonPin; - public const string PersonPinCircle = Material.Sharp.PersonPinCircle; - public const string PersonRemove = Material.Sharp.PersonRemove; - public const string PersonRemoveAlt1 = Material.Sharp.PersonRemoveAlt1; - public const string PersonSearch = Material.Sharp.PersonSearch; - public const string PersonalInjury = Material.Sharp.PersonalInjury; - public const string PersonalVideo = Material.Sharp.PersonalVideo; - public const string PestControl = Material.Sharp.PestControl; - public const string PestControlRodent = Material.Sharp.PestControlRodent; - public const string Pets = Material.Sharp.Pets; - public const string Phishing = Material.Sharp.Phishing; - public const string Phone = Material.Sharp.Phone; - public const string PhoneAndroid = Material.Sharp.PhoneAndroid; - public const string PhoneBluetoothSpeaker = Material.Sharp.PhoneBluetoothSpeaker; - public const string PhoneCallback = Material.Sharp.PhoneCallback; - public const string PhoneDisabled = Material.Sharp.PhoneDisabled; - public const string PhoneEnabled = Material.Sharp.PhoneEnabled; - public const string PhoneForwarded = Material.Sharp.PhoneForwarded; - public const string PhoneInTalk = Material.Sharp.PhoneInTalk; - public const string PhoneIphone = Material.Sharp.PhoneIphone; - public const string PhoneLocked = Material.Sharp.PhoneLocked; - public const string PhoneMissed = Material.Sharp.PhoneMissed; - public const string PhonePaused = Material.Sharp.PhonePaused; - public const string Phonelink = Material.Sharp.Phonelink; - public const string PhonelinkErase = Material.Sharp.PhonelinkErase; - public const string PhonelinkLock = Material.Sharp.PhonelinkLock; - public const string PhonelinkOff = Material.Sharp.PhonelinkOff; - public const string PhonelinkRing = Material.Sharp.PhonelinkRing; - public const string PhonelinkSetup = Material.Sharp.PhonelinkSetup; - public const string Photo = Material.Sharp.Photo; - public const string PhotoAlbum = Material.Sharp.PhotoAlbum; - public const string PhotoCamera = Material.Sharp.PhotoCamera; - public const string PhotoCameraBack = Material.Sharp.PhotoCameraBack; - public const string PhotoCameraFront = Material.Sharp.PhotoCameraFront; - public const string PhotoFilter = Material.Sharp.PhotoFilter; - public const string PhotoLibrary = Material.Sharp.PhotoLibrary; - public const string PhotoSizeSelectActual = Material.Sharp.PhotoSizeSelectActual; - public const string PhotoSizeSelectLarge = Material.Sharp.PhotoSizeSelectLarge; - public const string PhotoSizeSelectSmall = Material.Sharp.PhotoSizeSelectSmall; - public const string Php = Material.Sharp.Php; - public const string Piano = Material.Sharp.Piano; - public const string PianoOff = Material.Sharp.PianoOff; - public const string PictureAsPdf = Material.Sharp.PictureAsPdf; - public const string PictureInPicture = Material.Sharp.PictureInPicture; - public const string PictureInPictureAlt = Material.Sharp.PictureInPictureAlt; - public const string PieChart = Material.Sharp.PieChart; - public const string PieChartOutline = Material.Sharp.PieChartOutline; - public const string Pin = Material.Sharp.Pin; - public const string PinDrop = Material.Sharp.PinDrop; - public const string PinEnd = Material.Sharp.PinEnd; - public const string PinInvoke = Material.Sharp.PinInvoke; - public const string Pinch = Material.Sharp.Pinch; - public const string PivotTableChart = Material.Sharp.PivotTableChart; - public const string Pix = Material.Sharp.Pix; - public const string Place = Material.Sharp.Place; - public const string Plagiarism = Material.Sharp.Plagiarism; - public const string PlayArrow = Material.Sharp.PlayArrow; - public const string PlayCircle = Material.Sharp.PlayCircle; - public const string PlayCircleFilled = Material.Sharp.PlayCircleFilled; - public const string PlayCircleOutline = Material.Sharp.PlayCircleOutline; - public const string PlayDisabled = Material.Sharp.PlayDisabled; - public const string PlayForWork = Material.Sharp.PlayForWork; - public const string PlayLesson = Material.Sharp.PlayLesson; - public const string PlaylistAdd = Material.Sharp.PlaylistAdd; - public const string PlaylistAddCheck = Material.Sharp.PlaylistAddCheck; - public const string PlaylistAddCheckCircle = Material.Sharp.PlaylistAddCheckCircle; - public const string PlaylistAddCircle = Material.Sharp.PlaylistAddCircle; - public const string PlaylistPlay = Material.Sharp.PlaylistPlay; - public const string PlaylistRemove = Material.Sharp.PlaylistRemove; - public const string Plumbing = Material.Sharp.Plumbing; - public const string PlusOne = Material.Sharp.PlusOne; - public const string Podcasts = Material.Sharp.Podcasts; - public const string PointOfSale = Material.Sharp.PointOfSale; - public const string Policy = Material.Sharp.Policy; - public const string Poll = Material.Sharp.Poll; - public const string Polyline = Material.Sharp.Polyline; - public const string Polymer = Material.Sharp.Polymer; - public const string Pool = Material.Sharp.Pool; - public const string PortableWifiOff = Material.Sharp.PortableWifiOff; - public const string Portrait = Material.Sharp.Portrait; - public const string PostAdd = Material.Sharp.PostAdd; - public const string Power = Material.Sharp.Power; - public const string PowerInput = Material.Sharp.PowerInput; - public const string PowerOff = Material.Sharp.PowerOff; - public const string PowerSettingsNew = Material.Sharp.PowerSettingsNew; - public const string PrecisionManufacturing = Material.Sharp.PrecisionManufacturing; - public const string PregnantWoman = Material.Sharp.PregnantWoman; - public const string PresentToAll = Material.Sharp.PresentToAll; - public const string Preview = Material.Sharp.Preview; - public const string PriceChange = Material.Sharp.PriceChange; - public const string PriceCheck = Material.Sharp.PriceCheck; - public const string Print = Material.Sharp.Print; - public const string PrintDisabled = Material.Sharp.PrintDisabled; - public const string PriorityHigh = Material.Sharp.PriorityHigh; - public const string PrivacyTip = Material.Sharp.PrivacyTip; - public const string PrivateConnectivity = Material.Sharp.PrivateConnectivity; - public const string ProductionQuantityLimits = Material.Sharp.ProductionQuantityLimits; - public const string Psychology = Material.Sharp.Psychology; - public const string Public = Material.Sharp.Public; - public const string PublicOff = Material.Sharp.PublicOff; - public const string Publish = Material.Sharp.Publish; - public const string PublishedWithChanges = Material.Sharp.PublishedWithChanges; - public const string PunchClock = Material.Sharp.PunchClock; - public const string PushPin = Material.Sharp.PushPin; - public const string QrCode = Material.Sharp.QrCode; - public const string QrCode2 = Material.Sharp.QrCode2; - public const string QrCodeScanner = Material.Sharp.QrCodeScanner; - public const string QueryBuilder = Material.Sharp.QueryBuilder; - public const string QueryStats = Material.Sharp.QueryStats; - public const string QuestionAnswer = Material.Sharp.QuestionAnswer; - public const string QuestionMark = Material.Sharp.QuestionMark; - public const string Queue = Material.Sharp.Queue; - public const string QueueMusic = Material.Sharp.QueueMusic; - public const string QueuePlayNext = Material.Sharp.QueuePlayNext; - public const string Quickreply = Material.Sharp.Quickreply; - public const string Quiz = Material.Sharp.Quiz; - public const string RMobiledata = Material.Sharp.RMobiledata; - public const string Radar = Material.Sharp.Radar; - public const string Radio = Material.Sharp.Radio; - public const string RadioButtonChecked = Material.Sharp.RadioButtonChecked; - public const string RadioButtonUnchecked = Material.Sharp.RadioButtonUnchecked; - public const string RailwayAlert = Material.Sharp.RailwayAlert; - public const string RamenDining = Material.Sharp.RamenDining; - public const string RampLeft = Material.Sharp.RampLeft; - public const string RampRight = Material.Sharp.RampRight; - public const string RateReview = Material.Sharp.RateReview; - public const string RawOff = Material.Sharp.RawOff; - public const string RawOn = Material.Sharp.RawOn; - public const string ReadMore = Material.Sharp.ReadMore; - public const string RealEstateAgent = Material.Sharp.RealEstateAgent; - public const string Receipt = Material.Sharp.Receipt; - public const string ReceiptLong = Material.Sharp.ReceiptLong; - public const string RecentActors = Material.Sharp.RecentActors; - public const string Recommend = Material.Sharp.Recommend; - public const string RecordVoiceOver = Material.Sharp.RecordVoiceOver; - public const string Rectangle = Material.Sharp.Rectangle; - public const string Recycling = Material.Sharp.Recycling; - public const string Redeem = Material.Sharp.Redeem; - public const string Redo = Material.Sharp.Redo; - public const string ReduceCapacity = Material.Sharp.ReduceCapacity; - public const string Refresh = Material.Sharp.Refresh; - public const string RememberMe = Material.Sharp.RememberMe; - public const string Remove = Material.Sharp.Remove; - public const string RemoveCircle = Material.Sharp.RemoveCircle; - public const string RemoveCircleOutline = Material.Sharp.RemoveCircleOutline; - public const string RemoveDone = Material.Sharp.RemoveDone; - public const string RemoveFromQueue = Material.Sharp.RemoveFromQueue; - public const string RemoveModerator = Material.Sharp.RemoveModerator; - public const string RemoveRedEye = Material.Sharp.RemoveRedEye; - public const string RemoveRoad = Material.Sharp.RemoveRoad; - public const string RemoveShoppingCart = Material.Sharp.RemoveShoppingCart; - public const string Reorder = Material.Sharp.Reorder; - public const string Repeat = Material.Sharp.Repeat; - public const string RepeatOn = Material.Sharp.RepeatOn; - public const string RepeatOne = Material.Sharp.RepeatOne; - public const string RepeatOneOn = Material.Sharp.RepeatOneOn; - public const string Replay = Material.Sharp.Replay; - public const string Replay10 = Material.Sharp.Replay10; - public const string Replay30 = Material.Sharp.Replay30; - public const string Replay5 = Material.Sharp.Replay5; - public const string ReplayCircleFilled = Material.Sharp.ReplayCircleFilled; - public const string Reply = Material.Sharp.Reply; - public const string ReplyAll = Material.Sharp.ReplyAll; - public const string Report = Material.Sharp.Report; - public const string ReportGmailerrorred = Material.Sharp.ReportGmailerrorred; - public const string ReportOff = Material.Sharp.ReportOff; - public const string ReportProblem = Material.Sharp.ReportProblem; - public const string RequestPage = Material.Sharp.RequestPage; - public const string RequestQuote = Material.Sharp.RequestQuote; - public const string ResetTv = Material.Sharp.ResetTv; - public const string RestartAlt = Material.Sharp.RestartAlt; - public const string Restaurant = Material.Sharp.Restaurant; - public const string RestaurantMenu = Material.Sharp.RestaurantMenu; - public const string Restore = Material.Sharp.Restore; - public const string RestoreFromTrash = Material.Sharp.RestoreFromTrash; - public const string RestorePage = Material.Sharp.RestorePage; - public const string Reviews = Material.Sharp.Reviews; - public const string RiceBowl = Material.Sharp.RiceBowl; - public const string RingVolume = Material.Sharp.RingVolume; - public const string Rocket = Material.Sharp.Rocket; - public const string RocketLaunch = Material.Sharp.RocketLaunch; - public const string RollerSkating = Material.Sharp.RollerSkating; - public const string Roofing = Material.Sharp.Roofing; - public const string Room = Material.Sharp.Room; - public const string RoomPreferences = Material.Sharp.RoomPreferences; - public const string RoomService = Material.Sharp.RoomService; - public const string Rotate90DegreesCcw = Material.Sharp.Rotate90DegreesCcw; - public const string Rotate90DegreesCw = Material.Sharp.Rotate90DegreesCw; - public const string RotateLeft = Material.Sharp.RotateLeft; - public const string RotateRight = Material.Sharp.RotateRight; - public const string RoundaboutLeft = Material.Sharp.RoundaboutLeft; - public const string RoundaboutRight = Material.Sharp.RoundaboutRight; - public const string RoundedCorner = Material.Sharp.RoundedCorner; - public const string Route = Material.Sharp.Route; - public const string Router = Material.Sharp.Router; - public const string Rowing = Material.Sharp.Rowing; - public const string RssFeed = Material.Sharp.RssFeed; - public const string Rsvp = Material.Sharp.Rsvp; - public const string Rtt = Material.Sharp.Rtt; - public const string Rule = Material.Sharp.Rule; - public const string RuleFolder = Material.Sharp.RuleFolder; - public const string RunCircle = Material.Sharp.RunCircle; - public const string RunningWithErrors = Material.Sharp.RunningWithErrors; - public const string RvHookup = Material.Sharp.RvHookup; - public const string SafetyCheck = Material.Sharp.SafetyCheck; - public const string SafetyDivider = Material.Sharp.SafetyDivider; - public const string Sailing = Material.Sharp.Sailing; - public const string Sanitizer = Material.Sharp.Sanitizer; - public const string Satellite = Material.Sharp.Satellite; - public const string SatelliteAlt = Material.Sharp.SatelliteAlt; - public const string Save = Material.Sharp.Save; - public const string SaveAlt = Material.Sharp.SaveAlt; - public const string SaveAs = Material.Sharp.SaveAs; - public const string SavedSearch = Material.Sharp.SavedSearch; - public const string Savings = Material.Sharp.Savings; - public const string Scale = Material.Sharp.Scale; - public const string Scanner = Material.Sharp.Scanner; - public const string ScatterPlot = Material.Sharp.ScatterPlot; - public const string Schedule = Material.Sharp.Schedule; - public const string ScheduleSend = Material.Sharp.ScheduleSend; - public const string Schema = Material.Sharp.Schema; - public const string School = Material.Sharp.School; - public const string Science = Material.Sharp.Science; - public const string Score = Material.Sharp.Score; - public const string Scoreboard = Material.Sharp.Scoreboard; - public const string ScreenLockLandscape = Material.Sharp.ScreenLockLandscape; - public const string ScreenLockPortrait = Material.Sharp.ScreenLockPortrait; - public const string ScreenLockRotation = Material.Sharp.ScreenLockRotation; - public const string ScreenRotation = Material.Sharp.ScreenRotation; - public const string ScreenRotationAlt = Material.Sharp.ScreenRotationAlt; - public const string ScreenSearchDesktop = Material.Sharp.ScreenSearchDesktop; - public const string ScreenShare = Material.Sharp.ScreenShare; - public const string Screenshot = Material.Sharp.Screenshot; - public const string ScubaDiving = Material.Sharp.ScubaDiving; - public const string Sd = Material.Sharp.Sd; - public const string SdCard = Material.Sharp.SdCard; - public const string SdCardAlert = Material.Sharp.SdCardAlert; - public const string SdStorage = Material.Sharp.SdStorage; - public const string Search = Material.Sharp.Search; - public const string SearchOff = Material.Sharp.SearchOff; - public const string Security = Material.Sharp.Security; - public const string SecurityUpdate = Material.Sharp.SecurityUpdate; - public const string SecurityUpdateGood = Material.Sharp.SecurityUpdateGood; - public const string SecurityUpdateWarning = Material.Sharp.SecurityUpdateWarning; - public const string Segment = Material.Sharp.Segment; - public const string SelectAll = Material.Sharp.SelectAll; - public const string SelfImprovement = Material.Sharp.SelfImprovement; - public const string Sell = Material.Sharp.Sell; - public const string Send = Material.Sharp.Send; - public const string SendAndArchive = Material.Sharp.SendAndArchive; - public const string SendTimeExtension = Material.Sharp.SendTimeExtension; - public const string SendToMobile = Material.Sharp.SendToMobile; - public const string SensorDoor = Material.Sharp.SensorDoor; - public const string SensorWindow = Material.Sharp.SensorWindow; - public const string Sensors = Material.Sharp.Sensors; - public const string SensorsOff = Material.Sharp.SensorsOff; - public const string SentimentDissatisfied = Material.Sharp.SentimentDissatisfied; - public const string SentimentNeutral = Material.Sharp.SentimentNeutral; - public const string SentimentSatisfied = Material.Sharp.SentimentSatisfied; - public const string SentimentSatisfiedAlt = Material.Sharp.SentimentSatisfiedAlt; - public const string SentimentVeryDissatisfied = Material.Sharp.SentimentVeryDissatisfied; - public const string SentimentVerySatisfied = Material.Sharp.SentimentVerySatisfied; - public const string SetMeal = Material.Sharp.SetMeal; - public const string Settings = Material.Sharp.Settings; - public const string SettingsAccessibility = Material.Sharp.SettingsAccessibility; - public const string SettingsApplications = Material.Sharp.SettingsApplications; - public const string SettingsBackupRestore = Material.Sharp.SettingsBackupRestore; - public const string SettingsBluetooth = Material.Sharp.SettingsBluetooth; - public const string SettingsBrightness = Material.Sharp.SettingsBrightness; - public const string SettingsCell = Material.Sharp.SettingsCell; - public const string SettingsEthernet = Material.Sharp.SettingsEthernet; - public const string SettingsInputAntenna = Material.Sharp.SettingsInputAntenna; - public const string SettingsInputComponent = Material.Sharp.SettingsInputComponent; - public const string SettingsInputComposite = Material.Sharp.SettingsInputComposite; - public const string SettingsInputHdmi = Material.Sharp.SettingsInputHdmi; - public const string SettingsInputSvideo = Material.Sharp.SettingsInputSvideo; - public const string SettingsOverscan = Material.Sharp.SettingsOverscan; - public const string SettingsPhone = Material.Sharp.SettingsPhone; - public const string SettingsPower = Material.Sharp.SettingsPower; - public const string SettingsRemote = Material.Sharp.SettingsRemote; - public const string SettingsSuggest = Material.Sharp.SettingsSuggest; - public const string SettingsSystemDaydream = Material.Sharp.SettingsSystemDaydream; - public const string SettingsVoice = Material.Sharp.SettingsVoice; - public const string SevereCold = Material.Sharp.SevereCold; - public const string Share = Material.Sharp.Share; - public const string ShareLocation = Material.Sharp.ShareLocation; - public const string Shield = Material.Sharp.Shield; - public const string ShieldMoon = Material.Sharp.ShieldMoon; - public const string Shop = Material.Sharp.Shop; - public const string Shop2 = Material.Sharp.Shop2; - public const string ShopTwo = Material.Sharp.ShopTwo; - public const string ShoppingBag = Material.Sharp.ShoppingBag; - public const string ShoppingBasket = Material.Sharp.ShoppingBasket; - public const string ShoppingCart = Material.Sharp.ShoppingCart; - public const string ShoppingCartCheckout = Material.Sharp.ShoppingCartCheckout; - public const string ShortText = Material.Sharp.ShortText; - public const string Shortcut = Material.Sharp.Shortcut; - public const string ShowChart = Material.Sharp.ShowChart; - public const string Shower = Material.Sharp.Shower; - public const string Shuffle = Material.Sharp.Shuffle; - public const string ShuffleOn = Material.Sharp.ShuffleOn; - public const string ShutterSpeed = Material.Sharp.ShutterSpeed; - public const string Sick = Material.Sharp.Sick; - public const string SignLanguage = Material.Sharp.SignLanguage; - public const string SignalCellular0Bar = Material.Sharp.SignalCellular0Bar; - public const string SignalCellular4Bar = Material.Sharp.SignalCellular4Bar; - public const string SignalCellularAlt = Material.Sharp.SignalCellularAlt; - public const string SignalCellularAlt1Bar = Material.Sharp.SignalCellularAlt1Bar; - public const string SignalCellularAlt2Bar = Material.Sharp.SignalCellularAlt2Bar; - - public const string SignalCellularConnectedNoInternet0Bar = - Material.Sharp.SignalCellularConnectedNoInternet0Bar; - - public const string SignalCellularConnectedNoInternet4Bar = - Material.Sharp.SignalCellularConnectedNoInternet4Bar; - - public const string SignalCellularNoSim = Material.Sharp.SignalCellularNoSim; - public const string SignalCellularNodata = Material.Sharp.SignalCellularNodata; - public const string SignalCellularNull = Material.Sharp.SignalCellularNull; - public const string SignalCellularOff = Material.Sharp.SignalCellularOff; - public const string SignalWifi0Bar = Material.Sharp.SignalWifi0Bar; - public const string SignalWifi4Bar = Material.Sharp.SignalWifi4Bar; - public const string SignalWifi4BarLock = Material.Sharp.SignalWifi4BarLock; - public const string SignalWifiBad = Material.Sharp.SignalWifiBad; - public const string SignalWifiConnectedNoInternet4 = Material.Sharp.SignalWifiConnectedNoInternet4; - public const string SignalWifiOff = Material.Sharp.SignalWifiOff; - public const string SignalWifiStatusbar4Bar = Material.Sharp.SignalWifiStatusbar4Bar; - - public const string SignalWifiStatusbarConnectedNoInternet4 = - Material.Sharp.SignalWifiStatusbarConnectedNoInternet4; - - public const string SignalWifiStatusbarNull = Material.Sharp.SignalWifiStatusbarNull; - public const string Signpost = Material.Sharp.Signpost; - public const string SimCard = Material.Sharp.SimCard; - public const string SimCardAlert = Material.Sharp.SimCardAlert; - public const string SimCardDownload = Material.Sharp.SimCardDownload; - public const string SingleBed = Material.Sharp.SingleBed; - public const string Sip = Material.Sharp.Sip; - public const string Skateboarding = Material.Sharp.Skateboarding; - public const string SkipNext = Material.Sharp.SkipNext; - public const string SkipPrevious = Material.Sharp.SkipPrevious; - public const string Sledding = Material.Sharp.Sledding; - public const string Slideshow = Material.Sharp.Slideshow; - public const string SlowMotionVideo = Material.Sharp.SlowMotionVideo; - public const string SmartButton = Material.Sharp.SmartButton; - public const string SmartDisplay = Material.Sharp.SmartDisplay; - public const string SmartScreen = Material.Sharp.SmartScreen; - public const string SmartToy = Material.Sharp.SmartToy; - public const string Smartphone = Material.Sharp.Smartphone; - public const string SmokeFree = Material.Sharp.SmokeFree; - public const string SmokingRooms = Material.Sharp.SmokingRooms; - public const string Sms = Material.Sharp.Sms; - public const string SmsFailed = Material.Sharp.SmsFailed; - public const string SnippetFolder = Material.Sharp.SnippetFolder; - public const string Snooze = Material.Sharp.Snooze; - public const string Snowboarding = Material.Sharp.Snowboarding; - public const string Snowmobile = Material.Sharp.Snowmobile; - public const string Snowshoeing = Material.Sharp.Snowshoeing; - public const string Soap = Material.Sharp.Soap; - public const string SocialDistance = Material.Sharp.SocialDistance; - public const string Sort = Material.Sharp.Sort; - public const string SortByAlpha = Material.Sharp.SortByAlpha; - public const string Sos = Material.Sharp.Sos; - public const string SoupKitchen = Material.Sharp.SoupKitchen; - public const string Source = Material.Sharp.Source; - public const string South = Material.Sharp.South; - public const string SouthAmerica = Material.Sharp.SouthAmerica; - public const string SouthEast = Material.Sharp.SouthEast; - public const string SouthWest = Material.Sharp.SouthWest; - public const string Spa = Material.Sharp.Spa; - public const string SpaceBar = Material.Sharp.SpaceBar; - public const string SpaceDashboard = Material.Sharp.SpaceDashboard; - public const string SpatialAudio = Material.Sharp.SpatialAudio; - public const string SpatialAudioOff = Material.Sharp.SpatialAudioOff; - public const string SpatialTracking = Material.Sharp.SpatialTracking; - public const string Speaker = Material.Sharp.Speaker; - public const string SpeakerGroup = Material.Sharp.SpeakerGroup; - public const string SpeakerNotes = Material.Sharp.SpeakerNotes; - public const string SpeakerNotesOff = Material.Sharp.SpeakerNotesOff; - public const string SpeakerPhone = Material.Sharp.SpeakerPhone; - public const string Speed = Material.Sharp.Speed; - public const string Spellcheck = Material.Sharp.Spellcheck; - public const string Splitscreen = Material.Sharp.Splitscreen; - public const string Spoke = Material.Sharp.Spoke; - public const string Sports = Material.Sharp.Sports; - public const string SportsBar = Material.Sharp.SportsBar; - public const string SportsBaseball = Material.Sharp.SportsBaseball; - public const string SportsBasketball = Material.Sharp.SportsBasketball; - public const string SportsCricket = Material.Sharp.SportsCricket; - public const string SportsEsports = Material.Sharp.SportsEsports; - public const string SportsFootball = Material.Sharp.SportsFootball; - public const string SportsGolf = Material.Sharp.SportsGolf; - public const string SportsGymnastics = Material.Sharp.SportsGymnastics; - public const string SportsHandball = Material.Sharp.SportsHandball; - public const string SportsHockey = Material.Sharp.SportsHockey; - public const string SportsKabaddi = Material.Sharp.SportsKabaddi; - public const string SportsMartialArts = Material.Sharp.SportsMartialArts; - public const string SportsMma = Material.Sharp.SportsMma; - public const string SportsMotorsports = Material.Sharp.SportsMotorsports; - public const string SportsRugby = Material.Sharp.SportsRugby; - public const string SportsScore = Material.Sharp.SportsScore; - public const string SportsSoccer = Material.Sharp.SportsSoccer; - public const string SportsTennis = Material.Sharp.SportsTennis; - public const string SportsVolleyball = Material.Sharp.SportsVolleyball; - public const string Square = Material.Sharp.Square; - public const string SquareFoot = Material.Sharp.SquareFoot; - public const string SsidChart = Material.Sharp.SsidChart; - public const string StackedBarChart = Material.Sharp.StackedBarChart; - public const string StackedLineChart = Material.Sharp.StackedLineChart; - public const string Stadium = Material.Sharp.Stadium; - public const string Stairs = Material.Sharp.Stairs; - public const string Star = Material.Sharp.Star; - public const string StarBorder = Material.Sharp.StarBorder; - public const string StarBorderPurple500 = Material.Sharp.StarBorderPurple500; - public const string StarHalf = Material.Sharp.StarHalf; - public const string StarOutline = Material.Sharp.StarOutline; - public const string StarPurple500 = Material.Sharp.StarPurple500; - public const string StarRate = Material.Sharp.StarRate; - public const string Stars = Material.Sharp.Stars; - public const string Start = Material.Sharp.Start; - public const string StayCurrentLandscape = Material.Sharp.StayCurrentLandscape; - public const string StayCurrentPortrait = Material.Sharp.StayCurrentPortrait; - public const string StayPrimaryLandscape = Material.Sharp.StayPrimaryLandscape; - public const string StayPrimaryPortrait = Material.Sharp.StayPrimaryPortrait; - public const string StickyNote2 = Material.Sharp.StickyNote2; - public const string Stop = Material.Sharp.Stop; - public const string StopCircle = Material.Sharp.StopCircle; - public const string StopScreenShare = Material.Sharp.StopScreenShare; - public const string Storage = Material.Sharp.Storage; - public const string Store = Material.Sharp.Store; - public const string StoreMallDirectory = Material.Sharp.StoreMallDirectory; - public const string Storefront = Material.Sharp.Storefront; - public const string Storm = Material.Sharp.Storm; - public const string Straight = Material.Sharp.Straight; - public const string Straighten = Material.Sharp.Straighten; - public const string Stream = Material.Sharp.Stream; - public const string Streetview = Material.Sharp.Streetview; - public const string StrikethroughS = Material.Sharp.StrikethroughS; - public const string Stroller = Material.Sharp.Stroller; - public const string Style = Material.Sharp.Style; - public const string SubdirectoryArrowLeft = Material.Sharp.SubdirectoryArrowLeft; - public const string SubdirectoryArrowRight = Material.Sharp.SubdirectoryArrowRight; - public const string Subject = Material.Sharp.Subject; - public const string Subscript = Material.Sharp.Subscript; - public const string Subscriptions = Material.Sharp.Subscriptions; - public const string Subtitles = Material.Sharp.Subtitles; - public const string SubtitlesOff = Material.Sharp.SubtitlesOff; - public const string Subway = Material.Sharp.Subway; - public const string Summarize = Material.Sharp.Summarize; - public const string Superscript = Material.Sharp.Superscript; - public const string SupervisedUserCircle = Material.Sharp.SupervisedUserCircle; - public const string SupervisorAccount = Material.Sharp.SupervisorAccount; - public const string Support = Material.Sharp.Support; - public const string SupportAgent = Material.Sharp.SupportAgent; - public const string Surfing = Material.Sharp.Surfing; - public const string SurroundSound = Material.Sharp.SurroundSound; - public const string SwapCalls = Material.Sharp.SwapCalls; - public const string SwapHoriz = Material.Sharp.SwapHoriz; - public const string SwapHorizontalCircle = Material.Sharp.SwapHorizontalCircle; - public const string SwapVert = Material.Sharp.SwapVert; - public const string SwapVerticalCircle = Material.Sharp.SwapVerticalCircle; - public const string Swipe = Material.Sharp.Swipe; - public const string SwipeDown = Material.Sharp.SwipeDown; - public const string SwipeDownAlt = Material.Sharp.SwipeDownAlt; - public const string SwipeLeft = Material.Sharp.SwipeLeft; - public const string SwipeLeftAlt = Material.Sharp.SwipeLeftAlt; - public const string SwipeRight = Material.Sharp.SwipeRight; - public const string SwipeRightAlt = Material.Sharp.SwipeRightAlt; - public const string SwipeUp = Material.Sharp.SwipeUp; - public const string SwipeUpAlt = Material.Sharp.SwipeUpAlt; - public const string SwipeVertical = Material.Sharp.SwipeVertical; - public const string SwitchAccessShortcut = Material.Sharp.SwitchAccessShortcut; - public const string SwitchAccessShortcutAdd = Material.Sharp.SwitchAccessShortcutAdd; - public const string SwitchAccount = Material.Sharp.SwitchAccount; - public const string SwitchCamera = Material.Sharp.SwitchCamera; - public const string SwitchLeft = Material.Sharp.SwitchLeft; - public const string SwitchRight = Material.Sharp.SwitchRight; - public const string SwitchVideo = Material.Sharp.SwitchVideo; - public const string Synagogue = Material.Sharp.Synagogue; - public const string Sync = Material.Sharp.Sync; - public const string SyncAlt = Material.Sharp.SyncAlt; - public const string SyncDisabled = Material.Sharp.SyncDisabled; - public const string SyncLock = Material.Sharp.SyncLock; - public const string SyncProblem = Material.Sharp.SyncProblem; - public const string SystemSecurityUpdate = Material.Sharp.SystemSecurityUpdate; - public const string SystemSecurityUpdateGood = Material.Sharp.SystemSecurityUpdateGood; - public const string SystemSecurityUpdateWarning = Material.Sharp.SystemSecurityUpdateWarning; - public const string SystemUpdate = Material.Sharp.SystemUpdate; - public const string SystemUpdateAlt = Material.Sharp.SystemUpdateAlt; - public const string Tab = Material.Sharp.Tab; - public const string TabUnselected = Material.Sharp.TabUnselected; - public const string TableBar = Material.Sharp.TableBar; - public const string TableChart = Material.Sharp.TableChart; - public const string TableRestaurant = Material.Sharp.TableRestaurant; - public const string TableRows = Material.Sharp.TableRows; - public const string TableView = Material.Sharp.TableView; - public const string Tablet = Material.Sharp.Tablet; - public const string TabletAndroid = Material.Sharp.TabletAndroid; - public const string TabletMac = Material.Sharp.TabletMac; - public const string Tag = Material.Sharp.Tag; - public const string TagFaces = Material.Sharp.TagFaces; - public const string TakeoutDining = Material.Sharp.TakeoutDining; - public const string TapAndPlay = Material.Sharp.TapAndPlay; - public const string Tapas = Material.Sharp.Tapas; - public const string Task = Material.Sharp.Task; - public const string TaskAlt = Material.Sharp.TaskAlt; - public const string TaxiAlert = Material.Sharp.TaxiAlert; - public const string TempleBuddhist = Material.Sharp.TempleBuddhist; - public const string TempleHindu = Material.Sharp.TempleHindu; - public const string Terminal = Material.Sharp.Terminal; - public const string Terrain = Material.Sharp.Terrain; - public const string TextDecrease = Material.Sharp.TextDecrease; - public const string TextFields = Material.Sharp.TextFields; - public const string TextFormat = Material.Sharp.TextFormat; - public const string TextIncrease = Material.Sharp.TextIncrease; - public const string TextRotateUp = Material.Sharp.TextRotateUp; - public const string TextRotateVertical = Material.Sharp.TextRotateVertical; - public const string TextRotationAngledown = Material.Sharp.TextRotationAngledown; - public const string TextRotationAngleup = Material.Sharp.TextRotationAngleup; - public const string TextRotationDown = Material.Sharp.TextRotationDown; - public const string TextRotationNone = Material.Sharp.TextRotationNone; - public const string TextSnippet = Material.Sharp.TextSnippet; - public const string Textsms = Material.Sharp.Textsms; - public const string Texture = Material.Sharp.Texture; - public const string TheaterComedy = Material.Sharp.TheaterComedy; - public const string Theaters = Material.Sharp.Theaters; - public const string Thermostat = Material.Sharp.Thermostat; - public const string ThermostatAuto = Material.Sharp.ThermostatAuto; - public const string ThumbDown = Material.Sharp.ThumbDown; - public const string ThumbDownAlt = Material.Sharp.ThumbDownAlt; - public const string ThumbDownOffAlt = Material.Sharp.ThumbDownOffAlt; - public const string ThumbUp = Material.Sharp.ThumbUp; - public const string ThumbUpAlt = Material.Sharp.ThumbUpAlt; - public const string ThumbUpOffAlt = Material.Sharp.ThumbUpOffAlt; - public const string ThumbsUpDown = Material.Sharp.ThumbsUpDown; - public const string Thunderstorm = Material.Sharp.Thunderstorm; - public const string TimeToLeave = Material.Sharp.TimeToLeave; - public const string Timelapse = Material.Sharp.Timelapse; - public const string Timeline = Material.Sharp.Timeline; - public const string Timer = Material.Sharp.Timer; - public const string Timer10 = Material.Sharp.Timer10; - public const string Timer10Select = Material.Sharp.Timer10Select; - public const string Timer3 = Material.Sharp.Timer3; - public const string Timer3Select = Material.Sharp.Timer3Select; - public const string TimerOff = Material.Sharp.TimerOff; - public const string TipsAndUpdates = Material.Sharp.TipsAndUpdates; - public const string TireRepair = Material.Sharp.TireRepair; - public const string Title = Material.Sharp.Title; - public const string Toc = Material.Sharp.Toc; - public const string Today = Material.Sharp.Today; - public const string ToggleOff = Material.Sharp.ToggleOff; - public const string ToggleOn = Material.Sharp.ToggleOn; - public const string Token = Material.Sharp.Token; - public const string Toll = Material.Sharp.Toll; - public const string Tonality = Material.Sharp.Tonality; - public const string Topic = Material.Sharp.Topic; - public const string TouchApp = Material.Sharp.TouchApp; - public const string Tour = Material.Sharp.Tour; - public const string Toys = Material.Sharp.Toys; - public const string TrackChanges = Material.Sharp.TrackChanges; - public const string Traffic = Material.Sharp.Traffic; - public const string Train = Material.Sharp.Train; - public const string Tram = Material.Sharp.Tram; - public const string TransferWithinAStation = Material.Sharp.TransferWithinAStation; - public const string Transform = Material.Sharp.Transform; - public const string Transgender = Material.Sharp.Transgender; - public const string TransitEnterexit = Material.Sharp.TransitEnterexit; - public const string Translate = Material.Sharp.Translate; - public const string TravelExplore = Material.Sharp.TravelExplore; - public const string TrendingDown = Material.Sharp.TrendingDown; - public const string TrendingFlat = Material.Sharp.TrendingFlat; - public const string TrendingUp = Material.Sharp.TrendingUp; - public const string TripOrigin = Material.Sharp.TripOrigin; - public const string Try = Material.Sharp.Try; - public const string Tsunami = Material.Sharp.Tsunami; - public const string Tty = Material.Sharp.Tty; - public const string Tune = Material.Sharp.Tune; - public const string Tungsten = Material.Sharp.Tungsten; - public const string TurnLeft = Material.Sharp.TurnLeft; - public const string TurnRight = Material.Sharp.TurnRight; - public const string TurnSharpLeft = Material.Sharp.TurnSharpLeft; - public const string TurnSharpRight = Material.Sharp.TurnSharpRight; - public const string TurnSlightLeft = Material.Sharp.TurnSlightLeft; - public const string TurnSlightRight = Material.Sharp.TurnSlightRight; - public const string TurnedIn = Material.Sharp.TurnedIn; - public const string TurnedInNot = Material.Sharp.TurnedInNot; - public const string Tv = Material.Sharp.Tv; - public const string TvOff = Material.Sharp.TvOff; - public const string TwoWheeler = Material.Sharp.TwoWheeler; - public const string UTurnLeft = Material.Sharp.UTurnLeft; - public const string UTurnRight = Material.Sharp.UTurnRight; - public const string Umbrella = Material.Sharp.Umbrella; - public const string Unarchive = Material.Sharp.Unarchive; - public const string Undo = Material.Sharp.Undo; - public const string UnfoldLess = Material.Sharp.UnfoldLess; - public const string UnfoldMore = Material.Sharp.UnfoldMore; - public const string Unpublished = Material.Sharp.Unpublished; - public const string Unsubscribe = Material.Sharp.Unsubscribe; - public const string Upcoming = Material.Sharp.Upcoming; - public const string Update = Material.Sharp.Update; - public const string UpdateDisabled = Material.Sharp.UpdateDisabled; - public const string Upgrade = Material.Sharp.Upgrade; - public const string Upload = Material.Sharp.Upload; - public const string UploadFile = Material.Sharp.UploadFile; - public const string Usb = Material.Sharp.Usb; - public const string UsbOff = Material.Sharp.UsbOff; - public const string Vaccines = Material.Sharp.Vaccines; - public const string VapeFree = Material.Sharp.VapeFree; - public const string VapingRooms = Material.Sharp.VapingRooms; - public const string Verified = Material.Sharp.Verified; - public const string VerifiedUser = Material.Sharp.VerifiedUser; - public const string VerticalAlignBottom = Material.Sharp.VerticalAlignBottom; - public const string VerticalAlignCenter = Material.Sharp.VerticalAlignCenter; - public const string VerticalAlignTop = Material.Sharp.VerticalAlignTop; - public const string VerticalDistribute = Material.Sharp.VerticalDistribute; - public const string VerticalSplit = Material.Sharp.VerticalSplit; - public const string Vibration = Material.Sharp.Vibration; - public const string VideoCall = Material.Sharp.VideoCall; - public const string VideoCameraBack = Material.Sharp.VideoCameraBack; - public const string VideoCameraFront = Material.Sharp.VideoCameraFront; - public const string VideoFile = Material.Sharp.VideoFile; - public const string VideoLabel = Material.Sharp.VideoLabel; - public const string VideoLibrary = Material.Sharp.VideoLibrary; - public const string VideoSettings = Material.Sharp.VideoSettings; - public const string VideoStable = Material.Sharp.VideoStable; - public const string Videocam = Material.Sharp.Videocam; - public const string VideocamOff = Material.Sharp.VideocamOff; - public const string VideogameAsset = Material.Sharp.VideogameAsset; - public const string VideogameAssetOff = Material.Sharp.VideogameAssetOff; - public const string ViewAgenda = Material.Sharp.ViewAgenda; - public const string ViewArray = Material.Sharp.ViewArray; - public const string ViewCarousel = Material.Sharp.ViewCarousel; - public const string ViewColumn = Material.Sharp.ViewColumn; - public const string ViewComfy = Material.Sharp.ViewComfy; - public const string ViewComfyAlt = Material.Sharp.ViewComfyAlt; - public const string ViewCompact = Material.Sharp.ViewCompact; - public const string ViewCompactAlt = Material.Sharp.ViewCompactAlt; - public const string ViewCozy = Material.Sharp.ViewCozy; - public const string ViewDay = Material.Sharp.ViewDay; - public const string ViewHeadline = Material.Sharp.ViewHeadline; - public const string ViewInAr = Material.Sharp.ViewInAr; - public const string ViewKanban = Material.Sharp.ViewKanban; - public const string ViewList = Material.Sharp.ViewList; - public const string ViewModule = Material.Sharp.ViewModule; - public const string ViewQuilt = Material.Sharp.ViewQuilt; - public const string ViewSidebar = Material.Sharp.ViewSidebar; - public const string ViewStream = Material.Sharp.ViewStream; - public const string ViewTimeline = Material.Sharp.ViewTimeline; - public const string ViewWeek = Material.Sharp.ViewWeek; - public const string Vignette = Material.Sharp.Vignette; - public const string Villa = Material.Sharp.Villa; - public const string Visibility = Material.Sharp.Visibility; - public const string VisibilityOff = Material.Sharp.VisibilityOff; - public const string VoiceChat = Material.Sharp.VoiceChat; - public const string VoiceOverOff = Material.Sharp.VoiceOverOff; - public const string Voicemail = Material.Sharp.Voicemail; - public const string Volcano = Material.Sharp.Volcano; - public const string VolumeDown = Material.Sharp.VolumeDown; - public const string VolumeMute = Material.Sharp.VolumeMute; - public const string VolumeOff = Material.Sharp.VolumeOff; - public const string VolumeUp = Material.Sharp.VolumeUp; - public const string VolunteerActivism = Material.Sharp.VolunteerActivism; - public const string VpnKey = Material.Sharp.VpnKey; - public const string VpnKeyOff = Material.Sharp.VpnKeyOff; - public const string VpnLock = Material.Sharp.VpnLock; - public const string Vrpano = Material.Sharp.Vrpano; - public const string Wallpaper = Material.Sharp.Wallpaper; - public const string Warehouse = Material.Sharp.Warehouse; - public const string Warning = Material.Sharp.Warning; - public const string WarningAmber = Material.Sharp.WarningAmber; - public const string Wash = Material.Sharp.Wash; - public const string Watch = Material.Sharp.Watch; - public const string WatchLater = Material.Sharp.WatchLater; - public const string WatchOff = Material.Sharp.WatchOff; - public const string Water = Material.Sharp.Water; - public const string WaterDamage = Material.Sharp.WaterDamage; - public const string WaterDrop = Material.Sharp.WaterDrop; - public const string WaterfallChart = Material.Sharp.WaterfallChart; - public const string Waves = Material.Sharp.Waves; - public const string WavingHand = Material.Sharp.WavingHand; - public const string WbAuto = Material.Sharp.WbAuto; - public const string WbCloudy = Material.Sharp.WbCloudy; - public const string WbIncandescent = Material.Sharp.WbIncandescent; - public const string WbIridescent = Material.Sharp.WbIridescent; - public const string WbShade = Material.Sharp.WbShade; - public const string WbSunny = Material.Sharp.WbSunny; - public const string WbTwilight = Material.Sharp.WbTwilight; - public const string Wc = Material.Sharp.Wc; - public const string Web = Material.Sharp.Web; - public const string WebAsset = Material.Sharp.WebAsset; - public const string WebAssetOff = Material.Sharp.WebAssetOff; - public const string Webhook = Material.Sharp.Webhook; - public const string Weekend = Material.Sharp.Weekend; - public const string West = Material.Sharp.West; - public const string Whatsapp = Material.Sharp.Whatsapp; - public const string Whatshot = Material.Sharp.Whatshot; - public const string WheelchairPickup = Material.Sharp.WheelchairPickup; - public const string WhereToVote = Material.Sharp.WhereToVote; - public const string Widgets = Material.Sharp.Widgets; - public const string Wifi = Material.Sharp.Wifi; - public const string Wifi1Bar = Material.Sharp.Wifi1Bar; - public const string Wifi2Bar = Material.Sharp.Wifi2Bar; - public const string WifiCalling = Material.Sharp.WifiCalling; - public const string WifiCalling3 = Material.Sharp.WifiCalling3; - public const string WifiChannel = Material.Sharp.WifiChannel; - public const string WifiFind = Material.Sharp.WifiFind; - public const string WifiLock = Material.Sharp.WifiLock; - public const string WifiOff = Material.Sharp.WifiOff; - public const string WifiPassword = Material.Sharp.WifiPassword; - public const string WifiProtectedSetup = Material.Sharp.WifiProtectedSetup; - public const string WifiTethering = Material.Sharp.WifiTethering; - public const string WifiTetheringError = Material.Sharp.WifiTetheringError; - public const string WifiTetheringOff = Material.Sharp.WifiTetheringOff; - public const string Window = Material.Sharp.Window; - public const string WineBar = Material.Sharp.WineBar; - public const string Woman = Material.Sharp.Woman; - public const string Work = Material.Sharp.Work; - public const string WorkOff = Material.Sharp.WorkOff; - public const string WorkOutline = Material.Sharp.WorkOutline; - public const string WorkspacePremium = Material.Sharp.WorkspacePremium; - public const string Workspaces = Material.Sharp.Workspaces; - public const string WrapText = Material.Sharp.WrapText; - public const string WrongLocation = Material.Sharp.WrongLocation; - public const string Wysiwyg = Material.Sharp.Wysiwyg; - public const string Yard = Material.Sharp.Yard; - public const string YoutubeSearchedFor = Material.Sharp.YoutubeSearchedFor; - public const string ZoomIn = Material.Sharp.ZoomIn; - public const string ZoomInMap = Material.Sharp.ZoomInMap; - public const string ZoomOut = Material.Sharp.ZoomOut; - public const string ZoomOutMap = Material.Sharp.ZoomOutMap; - } - } -} diff --git a/src/Connected.Components/Icons/Obsolete/TwoTone.cs b/src/Connected.Components/Icons/Obsolete/TwoTone.cs deleted file mode 100644 index f039f74..0000000 --- a/src/Connected.Components/Icons/Obsolete/TwoTone.cs +++ /dev/null @@ -1,2074 +0,0 @@ -/* - * This file was auto-generated by Update-MudIcons.ps1 - * 2022.02.01_04:17:46 - */ - -using System.Diagnostics.CodeAnalysis; - -namespace Connected -{ - public partial class Icons - { - [ExcludeFromCodeCoverage] - public class TwoTone - { - public const string _10k = Material.TwoTone._10k; - public const string _10mp = Material.TwoTone._10mp; - public const string _11mp = Material.TwoTone._11mp; - public const string _123 = Material.TwoTone._123; - public const string _12mp = Material.TwoTone._12mp; - public const string _13mp = Material.TwoTone._13mp; - public const string _14mp = Material.TwoTone._14mp; - public const string _15mp = Material.TwoTone._15mp; - public const string _16mp = Material.TwoTone._16mp; - public const string _17mp = Material.TwoTone._17mp; - public const string _18mp = Material.TwoTone._18mp; - public const string _19mp = Material.TwoTone._19mp; - public const string _1k = Material.TwoTone._1k; - public const string _1kPlus = Material.TwoTone._1kPlus; - public const string _1xMobiledata = Material.TwoTone._1xMobiledata; - public const string _20mp = Material.TwoTone._20mp; - public const string _21mp = Material.TwoTone._21mp; - public const string _22mp = Material.TwoTone._22mp; - public const string _23mp = Material.TwoTone._23mp; - public const string _24mp = Material.TwoTone._24mp; - public const string _2k = Material.TwoTone._2k; - public const string _2kPlus = Material.TwoTone._2kPlus; - public const string _2mp = Material.TwoTone._2mp; - public const string _30fps = Material.TwoTone._30fps; - public const string _30fpsSelect = Material.TwoTone._30fpsSelect; - public const string _360 = Material.TwoTone._360; - public const string _3dRotation = Material.TwoTone._3dRotation; - public const string _3gMobiledata = Material.TwoTone._3gMobiledata; - public const string _3k = Material.TwoTone._3k; - public const string _3kPlus = Material.TwoTone._3kPlus; - public const string _3mp = Material.TwoTone._3mp; - public const string _3p = Material.TwoTone._3p; - public const string _4gMobiledata = Material.TwoTone._4gMobiledata; - public const string _4gPlusMobiledata = Material.TwoTone._4gPlusMobiledata; - public const string _4k = Material.TwoTone._4k; - public const string _4kPlus = Material.TwoTone._4kPlus; - public const string _4mp = Material.TwoTone._4mp; - public const string _5g = Material.TwoTone._5g; - public const string _5k = Material.TwoTone._5k; - public const string _5kPlus = Material.TwoTone._5kPlus; - public const string _5mp = Material.TwoTone._5mp; - public const string _60fps = Material.TwoTone._60fps; - public const string _60fpsSelect = Material.TwoTone._60fpsSelect; - public const string _6FtApart = Material.TwoTone._6FtApart; - public const string _6k = Material.TwoTone._6k; - public const string _6kPlus = Material.TwoTone._6kPlus; - public const string _6mp = Material.TwoTone._6mp; - public const string _7k = Material.TwoTone._7k; - public const string _7kPlus = Material.TwoTone._7kPlus; - public const string _7mp = Material.TwoTone._7mp; - public const string _8k = Material.TwoTone._8k; - public const string _8kPlus = Material.TwoTone._8kPlus; - public const string _8mp = Material.TwoTone._8mp; - public const string _9k = Material.TwoTone._9k; - public const string _9kPlus = Material.TwoTone._9kPlus; - public const string _9mp = Material.TwoTone._9mp; - public const string Abc = Material.TwoTone.Abc; - public const string AcUnit = Material.TwoTone.AcUnit; - public const string AccessAlarm = Material.TwoTone.AccessAlarm; - public const string AccessAlarms = Material.TwoTone.AccessAlarms; - public const string AccessTime = Material.TwoTone.AccessTime; - public const string AccessTimeFilled = Material.TwoTone.AccessTimeFilled; - public const string Accessibility = Material.TwoTone.Accessibility; - public const string AccessibilityNew = Material.TwoTone.AccessibilityNew; - public const string Accessible = Material.TwoTone.Accessible; - public const string AccessibleForward = Material.TwoTone.AccessibleForward; - public const string AccountBalance = Material.TwoTone.AccountBalance; - public const string AccountBalanceWallet = Material.TwoTone.AccountBalanceWallet; - public const string AccountBox = Material.TwoTone.AccountBox; - public const string AccountCircle = Material.TwoTone.AccountCircle; - public const string AccountTree = Material.TwoTone.AccountTree; - public const string AdUnits = Material.TwoTone.AdUnits; - public const string Adb = Material.TwoTone.Adb; - public const string Add = Material.TwoTone.Add; - public const string AddAPhoto = Material.TwoTone.AddAPhoto; - public const string AddAlarm = Material.TwoTone.AddAlarm; - public const string AddAlert = Material.TwoTone.AddAlert; - public const string AddBox = Material.TwoTone.AddBox; - public const string AddBusiness = Material.TwoTone.AddBusiness; - public const string AddCard = Material.TwoTone.AddCard; - public const string AddChart = Material.TwoTone.AddChart; - public const string AddCircle = Material.TwoTone.AddCircle; - public const string AddCircleOutline = Material.TwoTone.AddCircleOutline; - public const string AddComment = Material.TwoTone.AddComment; - public const string AddIcCall = Material.TwoTone.AddIcCall; - public const string AddLink = Material.TwoTone.AddLink; - public const string AddLocation = Material.TwoTone.AddLocation; - public const string AddLocationAlt = Material.TwoTone.AddLocationAlt; - public const string AddModerator = Material.TwoTone.AddModerator; - public const string AddPhotoAlternate = Material.TwoTone.AddPhotoAlternate; - public const string AddReaction = Material.TwoTone.AddReaction; - public const string AddRoad = Material.TwoTone.AddRoad; - public const string AddShoppingCart = Material.TwoTone.AddShoppingCart; - public const string AddTask = Material.TwoTone.AddTask; - public const string AddToDrive = Material.TwoTone.AddToDrive; - public const string AddToHomeScreen = Material.TwoTone.AddToHomeScreen; - public const string AddToPhotos = Material.TwoTone.AddToPhotos; - public const string AddToQueue = Material.TwoTone.AddToQueue; - public const string Addchart = Material.TwoTone.Addchart; - public const string AdfScanner = Material.TwoTone.AdfScanner; - public const string Adjust = Material.TwoTone.Adjust; - public const string AdminPanelSettings = Material.TwoTone.AdminPanelSettings; - public const string AdsClick = Material.TwoTone.AdsClick; - public const string Agriculture = Material.TwoTone.Agriculture; - public const string Air = Material.TwoTone.Air; - public const string AirlineSeatFlat = Material.TwoTone.AirlineSeatFlat; - public const string AirlineSeatFlatAngled = Material.TwoTone.AirlineSeatFlatAngled; - public const string AirlineSeatIndividualSuite = Material.TwoTone.AirlineSeatIndividualSuite; - public const string AirlineSeatLegroomExtra = Material.TwoTone.AirlineSeatLegroomExtra; - public const string AirlineSeatLegroomNormal = Material.TwoTone.AirlineSeatLegroomNormal; - public const string AirlineSeatLegroomReduced = Material.TwoTone.AirlineSeatLegroomReduced; - public const string AirlineSeatReclineExtra = Material.TwoTone.AirlineSeatReclineExtra; - public const string AirlineSeatReclineNormal = Material.TwoTone.AirlineSeatReclineNormal; - public const string AirlineStops = Material.TwoTone.AirlineStops; - public const string Airlines = Material.TwoTone.Airlines; - public const string AirplaneTicket = Material.TwoTone.AirplaneTicket; - public const string AirplanemodeActive = Material.TwoTone.AirplanemodeActive; - public const string AirplanemodeInactive = Material.TwoTone.AirplanemodeInactive; - public const string Airplay = Material.TwoTone.Airplay; - public const string AirportShuttle = Material.TwoTone.AirportShuttle; - public const string Alarm = Material.TwoTone.Alarm; - public const string AlarmAdd = Material.TwoTone.AlarmAdd; - public const string AlarmOff = Material.TwoTone.AlarmOff; - public const string AlarmOn = Material.TwoTone.AlarmOn; - public const string Album = Material.TwoTone.Album; - public const string AlignHorizontalCenter = Material.TwoTone.AlignHorizontalCenter; - public const string AlignHorizontalLeft = Material.TwoTone.AlignHorizontalLeft; - public const string AlignHorizontalRight = Material.TwoTone.AlignHorizontalRight; - public const string AlignVerticalBottom = Material.TwoTone.AlignVerticalBottom; - public const string AlignVerticalCenter = Material.TwoTone.AlignVerticalCenter; - public const string AlignVerticalTop = Material.TwoTone.AlignVerticalTop; - public const string AllInbox = Material.TwoTone.AllInbox; - public const string AllInclusive = Material.TwoTone.AllInclusive; - public const string AllOut = Material.TwoTone.AllOut; - public const string AltRoute = Material.TwoTone.AltRoute; - public const string AlternateEmail = Material.TwoTone.AlternateEmail; - public const string Analytics = Material.TwoTone.Analytics; - public const string Anchor = Material.TwoTone.Anchor; - public const string Android = Material.TwoTone.Android; - public const string Animation = Material.TwoTone.Animation; - public const string Announcement = Material.TwoTone.Announcement; - public const string Aod = Material.TwoTone.Aod; - public const string Apartment = Material.TwoTone.Apartment; - public const string Api = Material.TwoTone.Api; - public const string AppBlocking = Material.TwoTone.AppBlocking; - public const string AppRegistration = Material.TwoTone.AppRegistration; - public const string AppSettingsAlt = Material.TwoTone.AppSettingsAlt; - public const string AppShortcut = Material.TwoTone.AppShortcut; - public const string Approval = Material.TwoTone.Approval; - public const string Apps = Material.TwoTone.Apps; - public const string AppsOutage = Material.TwoTone.AppsOutage; - public const string Architecture = Material.TwoTone.Architecture; - public const string Archive = Material.TwoTone.Archive; - public const string AreaChart = Material.TwoTone.AreaChart; - public const string ArrowBack = Material.TwoTone.ArrowBack; - public const string ArrowBackIos = Material.TwoTone.ArrowBackIos; - public const string ArrowBackIosNew = Material.TwoTone.ArrowBackIosNew; - public const string ArrowCircleDown = Material.TwoTone.ArrowCircleDown; - public const string ArrowCircleLeft = Material.TwoTone.ArrowCircleLeft; - public const string ArrowCircleRight = Material.TwoTone.ArrowCircleRight; - public const string ArrowCircleUp = Material.TwoTone.ArrowCircleUp; - public const string ArrowDownward = Material.TwoTone.ArrowDownward; - public const string ArrowDropDown = Material.TwoTone.ArrowDropDown; - public const string ArrowDropDownCircle = Material.TwoTone.ArrowDropDownCircle; - public const string ArrowDropUp = Material.TwoTone.ArrowDropUp; - public const string ArrowForward = Material.TwoTone.ArrowForward; - public const string ArrowForwardIos = Material.TwoTone.ArrowForwardIos; - public const string ArrowLeft = Material.TwoTone.ArrowLeft; - public const string ArrowRight = Material.TwoTone.ArrowRight; - public const string ArrowRightAlt = Material.TwoTone.ArrowRightAlt; - public const string ArrowUpward = Material.TwoTone.ArrowUpward; - public const string ArtTrack = Material.TwoTone.ArtTrack; - public const string Article = Material.TwoTone.Article; - public const string AspectRatio = Material.TwoTone.AspectRatio; - public const string Assessment = Material.TwoTone.Assessment; - public const string Assignment = Material.TwoTone.Assignment; - public const string AssignmentInd = Material.TwoTone.AssignmentInd; - public const string AssignmentLate = Material.TwoTone.AssignmentLate; - public const string AssignmentReturn = Material.TwoTone.AssignmentReturn; - public const string AssignmentReturned = Material.TwoTone.AssignmentReturned; - public const string AssignmentTurnedIn = Material.TwoTone.AssignmentTurnedIn; - public const string Assistant = Material.TwoTone.Assistant; - public const string AssistantDirection = Material.TwoTone.AssistantDirection; - public const string AssistantPhoto = Material.TwoTone.AssistantPhoto; - public const string AssuredWorkload = Material.TwoTone.AssuredWorkload; - public const string Atm = Material.TwoTone.Atm; - public const string AttachEmail = Material.TwoTone.AttachEmail; - public const string AttachFile = Material.TwoTone.AttachFile; - public const string AttachMoney = Material.TwoTone.AttachMoney; - public const string Attachment = Material.TwoTone.Attachment; - public const string Attractions = Material.TwoTone.Attractions; - public const string Attribution = Material.TwoTone.Attribution; - public const string AudioFile = Material.TwoTone.AudioFile; - public const string Audiotrack = Material.TwoTone.Audiotrack; - public const string AutoAwesome = Material.TwoTone.AutoAwesome; - public const string AutoAwesomeMosaic = Material.TwoTone.AutoAwesomeMosaic; - public const string AutoAwesomeMotion = Material.TwoTone.AutoAwesomeMotion; - public const string AutoDelete = Material.TwoTone.AutoDelete; - public const string AutoFixHigh = Material.TwoTone.AutoFixHigh; - public const string AutoFixNormal = Material.TwoTone.AutoFixNormal; - public const string AutoFixOff = Material.TwoTone.AutoFixOff; - public const string AutoGraph = Material.TwoTone.AutoGraph; - public const string AutoStories = Material.TwoTone.AutoStories; - public const string AutofpsSelect = Material.TwoTone.AutofpsSelect; - public const string Autorenew = Material.TwoTone.Autorenew; - public const string AvTimer = Material.TwoTone.AvTimer; - public const string BabyChangingStation = Material.TwoTone.BabyChangingStation; - public const string BackHand = Material.TwoTone.BackHand; - public const string Backpack = Material.TwoTone.Backpack; - public const string Backspace = Material.TwoTone.Backspace; - public const string Backup = Material.TwoTone.Backup; - public const string BackupTable = Material.TwoTone.BackupTable; - public const string Badge = Material.TwoTone.Badge; - public const string BakeryDining = Material.TwoTone.BakeryDining; - public const string Balance = Material.TwoTone.Balance; - public const string Balcony = Material.TwoTone.Balcony; - public const string Ballot = Material.TwoTone.Ballot; - public const string BarChart = Material.TwoTone.BarChart; - public const string BatchPrediction = Material.TwoTone.BatchPrediction; - public const string Bathroom = Material.TwoTone.Bathroom; - public const string Bathtub = Material.TwoTone.Bathtub; - public const string Battery0Bar = Material.TwoTone.Battery0Bar; - public const string Battery1Bar = Material.TwoTone.Battery1Bar; - public const string Battery2Bar = Material.TwoTone.Battery2Bar; - public const string Battery3Bar = Material.TwoTone.Battery3Bar; - public const string Battery4Bar = Material.TwoTone.Battery4Bar; - public const string Battery5Bar = Material.TwoTone.Battery5Bar; - public const string Battery6Bar = Material.TwoTone.Battery6Bar; - public const string BatteryAlert = Material.TwoTone.BatteryAlert; - public const string BatteryChargingFull = Material.TwoTone.BatteryChargingFull; - public const string BatteryFull = Material.TwoTone.BatteryFull; - public const string BatterySaver = Material.TwoTone.BatterySaver; - public const string BatteryStd = Material.TwoTone.BatteryStd; - public const string BatteryUnknown = Material.TwoTone.BatteryUnknown; - public const string BeachAccess = Material.TwoTone.BeachAccess; - public const string Bed = Material.TwoTone.Bed; - public const string BedroomBaby = Material.TwoTone.BedroomBaby; - public const string BedroomChild = Material.TwoTone.BedroomChild; - public const string BedroomParent = Material.TwoTone.BedroomParent; - public const string Bedtime = Material.TwoTone.Bedtime; - public const string BedtimeOff = Material.TwoTone.BedtimeOff; - public const string Beenhere = Material.TwoTone.Beenhere; - public const string Bento = Material.TwoTone.Bento; - public const string BikeScooter = Material.TwoTone.BikeScooter; - public const string Biotech = Material.TwoTone.Biotech; - public const string Blender = Material.TwoTone.Blender; - public const string Block = Material.TwoTone.Block; - public const string Bloodtype = Material.TwoTone.Bloodtype; - public const string Bluetooth = Material.TwoTone.Bluetooth; - public const string BluetoothAudio = Material.TwoTone.BluetoothAudio; - public const string BluetoothConnected = Material.TwoTone.BluetoothConnected; - public const string BluetoothDisabled = Material.TwoTone.BluetoothDisabled; - public const string BluetoothDrive = Material.TwoTone.BluetoothDrive; - public const string BluetoothSearching = Material.TwoTone.BluetoothSearching; - public const string BlurCircular = Material.TwoTone.BlurCircular; - public const string BlurLinear = Material.TwoTone.BlurLinear; - public const string BlurOff = Material.TwoTone.BlurOff; - public const string BlurOn = Material.TwoTone.BlurOn; - public const string Bolt = Material.TwoTone.Bolt; - public const string Book = Material.TwoTone.Book; - public const string BookOnline = Material.TwoTone.BookOnline; - public const string Bookmark = Material.TwoTone.Bookmark; - public const string BookmarkAdd = Material.TwoTone.BookmarkAdd; - public const string BookmarkAdded = Material.TwoTone.BookmarkAdded; - public const string BookmarkBorder = Material.TwoTone.BookmarkBorder; - public const string BookmarkRemove = Material.TwoTone.BookmarkRemove; - public const string Bookmarks = Material.TwoTone.Bookmarks; - public const string BorderAll = Material.TwoTone.BorderAll; - public const string BorderBottom = Material.TwoTone.BorderBottom; - public const string BorderClear = Material.TwoTone.BorderClear; - public const string BorderColor = Material.TwoTone.BorderColor; - public const string BorderHorizontal = Material.TwoTone.BorderHorizontal; - public const string BorderInner = Material.TwoTone.BorderInner; - public const string BorderLeft = Material.TwoTone.BorderLeft; - public const string BorderOuter = Material.TwoTone.BorderOuter; - public const string BorderRight = Material.TwoTone.BorderRight; - public const string BorderStyle = Material.TwoTone.BorderStyle; - public const string BorderTop = Material.TwoTone.BorderTop; - public const string BorderVertical = Material.TwoTone.BorderVertical; - public const string Boy = Material.TwoTone.Boy; - public const string BrandingWatermark = Material.TwoTone.BrandingWatermark; - public const string BreakfastDining = Material.TwoTone.BreakfastDining; - public const string Brightness1 = Material.TwoTone.Brightness1; - public const string Brightness2 = Material.TwoTone.Brightness2; - public const string Brightness3 = Material.TwoTone.Brightness3; - public const string Brightness4 = Material.TwoTone.Brightness4; - public const string Brightness5 = Material.TwoTone.Brightness5; - public const string Brightness6 = Material.TwoTone.Brightness6; - public const string Brightness7 = Material.TwoTone.Brightness7; - public const string BrightnessAuto = Material.TwoTone.BrightnessAuto; - public const string BrightnessHigh = Material.TwoTone.BrightnessHigh; - public const string BrightnessLow = Material.TwoTone.BrightnessLow; - public const string BrightnessMedium = Material.TwoTone.BrightnessMedium; - public const string BrokenImage = Material.TwoTone.BrokenImage; - public const string BrowseGallery = Material.TwoTone.BrowseGallery; - public const string BrowserNotSupported = Material.TwoTone.BrowserNotSupported; - public const string BrowserUpdated = Material.TwoTone.BrowserUpdated; - public const string BrunchDining = Material.TwoTone.BrunchDining; - public const string Brush = Material.TwoTone.Brush; - public const string BubbleChart = Material.TwoTone.BubbleChart; - public const string BugReport = Material.TwoTone.BugReport; - public const string Build = Material.TwoTone.Build; - public const string BuildCircle = Material.TwoTone.BuildCircle; - public const string Bungalow = Material.TwoTone.Bungalow; - public const string BurstMode = Material.TwoTone.BurstMode; - public const string BusAlert = Material.TwoTone.BusAlert; - public const string Business = Material.TwoTone.Business; - public const string BusinessCenter = Material.TwoTone.BusinessCenter; - public const string Cabin = Material.TwoTone.Cabin; - public const string Cable = Material.TwoTone.Cable; - public const string Cached = Material.TwoTone.Cached; - public const string Cake = Material.TwoTone.Cake; - public const string Calculate = Material.TwoTone.Calculate; - public const string CalendarMonth = Material.TwoTone.CalendarMonth; - public const string CalendarToday = Material.TwoTone.CalendarToday; - public const string CalendarViewDay = Material.TwoTone.CalendarViewDay; - public const string CalendarViewMonth = Material.TwoTone.CalendarViewMonth; - public const string CalendarViewWeek = Material.TwoTone.CalendarViewWeek; - public const string Call = Material.TwoTone.Call; - public const string CallEnd = Material.TwoTone.CallEnd; - public const string CallMade = Material.TwoTone.CallMade; - public const string CallMerge = Material.TwoTone.CallMerge; - public const string CallMissed = Material.TwoTone.CallMissed; - public const string CallMissedOutgoing = Material.TwoTone.CallMissedOutgoing; - public const string CallReceived = Material.TwoTone.CallReceived; - public const string CallSplit = Material.TwoTone.CallSplit; - public const string CallToAction = Material.TwoTone.CallToAction; - public const string Camera = Material.TwoTone.Camera; - public const string CameraAlt = Material.TwoTone.CameraAlt; - public const string CameraEnhance = Material.TwoTone.CameraEnhance; - public const string CameraFront = Material.TwoTone.CameraFront; - public const string CameraIndoor = Material.TwoTone.CameraIndoor; - public const string CameraOutdoor = Material.TwoTone.CameraOutdoor; - public const string CameraRear = Material.TwoTone.CameraRear; - public const string CameraRoll = Material.TwoTone.CameraRoll; - public const string Cameraswitch = Material.TwoTone.Cameraswitch; - public const string Campaign = Material.TwoTone.Campaign; - public const string Cancel = Material.TwoTone.Cancel; - public const string CancelPresentation = Material.TwoTone.CancelPresentation; - public const string CancelScheduleSend = Material.TwoTone.CancelScheduleSend; - public const string CandlestickChart = Material.TwoTone.CandlestickChart; - public const string CarCrash = Material.TwoTone.CarCrash; - public const string CarRental = Material.TwoTone.CarRental; - public const string CarRepair = Material.TwoTone.CarRepair; - public const string CardGiftcard = Material.TwoTone.CardGiftcard; - public const string CardMembership = Material.TwoTone.CardMembership; - public const string CardTravel = Material.TwoTone.CardTravel; - public const string Carpenter = Material.TwoTone.Carpenter; - public const string Cases = Material.TwoTone.Cases; - public const string Casino = Material.TwoTone.Casino; - public const string Cast = Material.TwoTone.Cast; - public const string CastConnected = Material.TwoTone.CastConnected; - public const string CastForEducation = Material.TwoTone.CastForEducation; - public const string Castle = Material.TwoTone.Castle; - public const string CatchingPokemon = Material.TwoTone.CatchingPokemon; - public const string Category = Material.TwoTone.Category; - public const string Celebration = Material.TwoTone.Celebration; - public const string CellTower = Material.TwoTone.CellTower; - public const string CellWifi = Material.TwoTone.CellWifi; - public const string CenterFocusStrong = Material.TwoTone.CenterFocusStrong; - public const string CenterFocusWeak = Material.TwoTone.CenterFocusWeak; - public const string Chair = Material.TwoTone.Chair; - public const string ChairAlt = Material.TwoTone.ChairAlt; - public const string Chalet = Material.TwoTone.Chalet; - public const string ChangeCircle = Material.TwoTone.ChangeCircle; - public const string ChangeHistory = Material.TwoTone.ChangeHistory; - public const string ChargingStation = Material.TwoTone.ChargingStation; - public const string Chat = Material.TwoTone.Chat; - public const string ChatBubble = Material.TwoTone.ChatBubble; - public const string ChatBubbleOutline = Material.TwoTone.ChatBubbleOutline; - public const string Check = Material.TwoTone.Check; - public const string CheckBox = Material.TwoTone.CheckBox; - public const string CheckBoxOutlineBlank = Material.TwoTone.CheckBoxOutlineBlank; - public const string CheckCircle = Material.TwoTone.CheckCircle; - public const string CheckCircleOutline = Material.TwoTone.CheckCircleOutline; - public const string Checklist = Material.TwoTone.Checklist; - public const string ChecklistRtl = Material.TwoTone.ChecklistRtl; - public const string Checkroom = Material.TwoTone.Checkroom; - public const string ChevronLeft = Material.TwoTone.ChevronLeft; - public const string ChevronRight = Material.TwoTone.ChevronRight; - public const string ChildCare = Material.TwoTone.ChildCare; - public const string ChildFriendly = Material.TwoTone.ChildFriendly; - public const string ChromeReaderMode = Material.TwoTone.ChromeReaderMode; - public const string Church = Material.TwoTone.Church; - public const string Circle = Material.TwoTone.Circle; - public const string CircleNotifications = Material.TwoTone.CircleNotifications; - public const string Class = Material.TwoTone.Class; - public const string CleanHands = Material.TwoTone.CleanHands; - public const string CleaningServices = Material.TwoTone.CleaningServices; - public const string Clear = Material.TwoTone.Clear; - public const string ClearAll = Material.TwoTone.ClearAll; - public const string Close = Material.TwoTone.Close; - public const string CloseFullscreen = Material.TwoTone.CloseFullscreen; - public const string ClosedCaption = Material.TwoTone.ClosedCaption; - public const string ClosedCaptionDisabled = Material.TwoTone.ClosedCaptionDisabled; - public const string ClosedCaptionOff = Material.TwoTone.ClosedCaptionOff; - public const string Cloud = Material.TwoTone.Cloud; - public const string CloudCircle = Material.TwoTone.CloudCircle; - public const string CloudDone = Material.TwoTone.CloudDone; - public const string CloudDownload = Material.TwoTone.CloudDownload; - public const string CloudOff = Material.TwoTone.CloudOff; - public const string CloudQueue = Material.TwoTone.CloudQueue; - public const string CloudSync = Material.TwoTone.CloudSync; - public const string CloudUpload = Material.TwoTone.CloudUpload; - public const string Co2 = Material.TwoTone.Co2; - public const string CoPresent = Material.TwoTone.CoPresent; - public const string Code = Material.TwoTone.Code; - public const string CodeOff = Material.TwoTone.CodeOff; - public const string Coffee = Material.TwoTone.Coffee; - public const string CoffeeMaker = Material.TwoTone.CoffeeMaker; - public const string Collections = Material.TwoTone.Collections; - public const string CollectionsBookmark = Material.TwoTone.CollectionsBookmark; - public const string ColorLens = Material.TwoTone.ColorLens; - public const string Colorize = Material.TwoTone.Colorize; - public const string Comment = Material.TwoTone.Comment; - public const string CommentBank = Material.TwoTone.CommentBank; - public const string CommentsDisabled = Material.TwoTone.CommentsDisabled; - public const string Commit = Material.TwoTone.Commit; - public const string Commute = Material.TwoTone.Commute; - public const string Compare = Material.TwoTone.Compare; - public const string CompareArrows = Material.TwoTone.CompareArrows; - public const string CompassCalibration = Material.TwoTone.CompassCalibration; - public const string Compost = Material.TwoTone.Compost; - public const string Compress = Material.TwoTone.Compress; - public const string Computer = Material.TwoTone.Computer; - public const string ConfirmationNumber = Material.TwoTone.ConfirmationNumber; - public const string ConnectWithoutContact = Material.TwoTone.ConnectWithoutContact; - public const string ConnectedTv = Material.TwoTone.ConnectedTv; - public const string ConnectingAirports = Material.TwoTone.ConnectingAirports; - public const string Construction = Material.TwoTone.Construction; - public const string ContactMail = Material.TwoTone.ContactMail; - public const string ContactPage = Material.TwoTone.ContactPage; - public const string ContactPhone = Material.TwoTone.ContactPhone; - public const string ContactSupport = Material.TwoTone.ContactSupport; - public const string Contactless = Material.TwoTone.Contactless; - public const string Contacts = Material.TwoTone.Contacts; - public const string ContentCopy = Material.TwoTone.ContentCopy; - public const string ContentCut = Material.TwoTone.ContentCut; - public const string ContentPaste = Material.TwoTone.ContentPaste; - public const string ContentPasteGo = Material.TwoTone.ContentPasteGo; - public const string ContentPasteOff = Material.TwoTone.ContentPasteOff; - public const string ContentPasteSearch = Material.TwoTone.ContentPasteSearch; - public const string Contrast = Material.TwoTone.Contrast; - public const string ControlCamera = Material.TwoTone.ControlCamera; - public const string ControlPoint = Material.TwoTone.ControlPoint; - public const string ControlPointDuplicate = Material.TwoTone.ControlPointDuplicate; - public const string Cookie = Material.TwoTone.Cookie; - public const string CopyAll = Material.TwoTone.CopyAll; - public const string Copyright = Material.TwoTone.Copyright; - public const string Coronavirus = Material.TwoTone.Coronavirus; - public const string CorporateFare = Material.TwoTone.CorporateFare; - public const string Cottage = Material.TwoTone.Cottage; - public const string Countertops = Material.TwoTone.Countertops; - public const string Create = Material.TwoTone.Create; - public const string CreateNewFolder = Material.TwoTone.CreateNewFolder; - public const string CreditCard = Material.TwoTone.CreditCard; - public const string CreditCardOff = Material.TwoTone.CreditCardOff; - public const string CreditScore = Material.TwoTone.CreditScore; - public const string Crib = Material.TwoTone.Crib; - public const string CrisisAlert = Material.TwoTone.CrisisAlert; - public const string Crop = Material.TwoTone.Crop; - public const string Crop169 = Material.TwoTone.Crop169; - public const string Crop32 = Material.TwoTone.Crop32; - public const string Crop54 = Material.TwoTone.Crop54; - public const string Crop75 = Material.TwoTone.Crop75; - public const string CropDin = Material.TwoTone.CropDin; - public const string CropFree = Material.TwoTone.CropFree; - public const string CropLandscape = Material.TwoTone.CropLandscape; - public const string CropOriginal = Material.TwoTone.CropOriginal; - public const string CropPortrait = Material.TwoTone.CropPortrait; - public const string CropRotate = Material.TwoTone.CropRotate; - public const string CropSquare = Material.TwoTone.CropSquare; - public const string CrueltyFree = Material.TwoTone.CrueltyFree; - public const string Css = Material.TwoTone.Css; - public const string CurrencyBitcoin = Material.TwoTone.CurrencyBitcoin; - public const string CurrencyExchange = Material.TwoTone.CurrencyExchange; - public const string CurrencyFranc = Material.TwoTone.CurrencyFranc; - public const string CurrencyLira = Material.TwoTone.CurrencyLira; - public const string CurrencyPound = Material.TwoTone.CurrencyPound; - public const string CurrencyRuble = Material.TwoTone.CurrencyRuble; - public const string CurrencyRupee = Material.TwoTone.CurrencyRupee; - public const string CurrencyYen = Material.TwoTone.CurrencyYen; - public const string CurrencyYuan = Material.TwoTone.CurrencyYuan; - public const string Cyclone = Material.TwoTone.Cyclone; - public const string Dangerous = Material.TwoTone.Dangerous; - public const string DarkMode = Material.TwoTone.DarkMode; - public const string Dashboard = Material.TwoTone.Dashboard; - public const string DashboardCustomize = Material.TwoTone.DashboardCustomize; - public const string DataArray = Material.TwoTone.DataArray; - public const string DataExploration = Material.TwoTone.DataExploration; - public const string DataObject = Material.TwoTone.DataObject; - public const string DataSaverOff = Material.TwoTone.DataSaverOff; - public const string DataSaverOn = Material.TwoTone.DataSaverOn; - public const string DataThresholding = Material.TwoTone.DataThresholding; - public const string DataUsage = Material.TwoTone.DataUsage; - public const string DateRange = Material.TwoTone.DateRange; - public const string Deblur = Material.TwoTone.Deblur; - public const string Deck = Material.TwoTone.Deck; - public const string Dehaze = Material.TwoTone.Dehaze; - public const string Delete = Material.TwoTone.Delete; - public const string DeleteForever = Material.TwoTone.DeleteForever; - public const string DeleteOutline = Material.TwoTone.DeleteOutline; - public const string DeleteSweep = Material.TwoTone.DeleteSweep; - public const string DeliveryDining = Material.TwoTone.DeliveryDining; - public const string DensityLarge = Material.TwoTone.DensityLarge; - public const string DensityMedium = Material.TwoTone.DensityMedium; - public const string DensitySmall = Material.TwoTone.DensitySmall; - public const string DepartureBoard = Material.TwoTone.DepartureBoard; - public const string Description = Material.TwoTone.Description; - public const string Deselect = Material.TwoTone.Deselect; - public const string DesignServices = Material.TwoTone.DesignServices; - public const string DesktopAccessDisabled = Material.TwoTone.DesktopAccessDisabled; - public const string DesktopMac = Material.TwoTone.DesktopMac; - public const string DesktopWindows = Material.TwoTone.DesktopWindows; - public const string Details = Material.TwoTone.Details; - public const string DeveloperBoard = Material.TwoTone.DeveloperBoard; - public const string DeveloperBoardOff = Material.TwoTone.DeveloperBoardOff; - public const string DeveloperMode = Material.TwoTone.DeveloperMode; - public const string DeviceHub = Material.TwoTone.DeviceHub; - public const string DeviceThermostat = Material.TwoTone.DeviceThermostat; - public const string DeviceUnknown = Material.TwoTone.DeviceUnknown; - public const string Devices = Material.TwoTone.Devices; - public const string DevicesFold = Material.TwoTone.DevicesFold; - public const string DevicesOther = Material.TwoTone.DevicesOther; - public const string DialerSip = Material.TwoTone.DialerSip; - public const string Dialpad = Material.TwoTone.Dialpad; - public const string Diamond = Material.TwoTone.Diamond; - public const string Difference = Material.TwoTone.Difference; - public const string Dining = Material.TwoTone.Dining; - public const string DinnerDining = Material.TwoTone.DinnerDining; - public const string Directions = Material.TwoTone.Directions; - public const string DirectionsBike = Material.TwoTone.DirectionsBike; - public const string DirectionsBoat = Material.TwoTone.DirectionsBoat; - public const string DirectionsBoatFilled = Material.TwoTone.DirectionsBoatFilled; - public const string DirectionsBus = Material.TwoTone.DirectionsBus; - public const string DirectionsBusFilled = Material.TwoTone.DirectionsBusFilled; - public const string DirectionsCar = Material.TwoTone.DirectionsCar; - public const string DirectionsCarFilled = Material.TwoTone.DirectionsCarFilled; - public const string DirectionsOff = Material.TwoTone.DirectionsOff; - public const string DirectionsRailway = Material.TwoTone.DirectionsRailway; - public const string DirectionsRailwayFilled = Material.TwoTone.DirectionsRailwayFilled; - public const string DirectionsRun = Material.TwoTone.DirectionsRun; - public const string DirectionsSubway = Material.TwoTone.DirectionsSubway; - public const string DirectionsSubwayFilled = Material.TwoTone.DirectionsSubwayFilled; - public const string DirectionsTransit = Material.TwoTone.DirectionsTransit; - public const string DirectionsTransitFilled = Material.TwoTone.DirectionsTransitFilled; - public const string DirectionsWalk = Material.TwoTone.DirectionsWalk; - public const string DirtyLens = Material.TwoTone.DirtyLens; - public const string DisabledByDefault = Material.TwoTone.DisabledByDefault; - public const string DisabledVisible = Material.TwoTone.DisabledVisible; - public const string DiscFull = Material.TwoTone.DiscFull; - public const string Discount = Material.TwoTone.Discount; - public const string DisplaySettings = Material.TwoTone.DisplaySettings; - public const string Dns = Material.TwoTone.Dns; - public const string DoDisturb = Material.TwoTone.DoDisturb; - public const string DoDisturbAlt = Material.TwoTone.DoDisturbAlt; - public const string DoDisturbOff = Material.TwoTone.DoDisturbOff; - public const string DoDisturbOn = Material.TwoTone.DoDisturbOn; - public const string DoNotDisturb = Material.TwoTone.DoNotDisturb; - public const string DoNotDisturbAlt = Material.TwoTone.DoNotDisturbAlt; - public const string DoNotDisturbOff = Material.TwoTone.DoNotDisturbOff; - public const string DoNotDisturbOn = Material.TwoTone.DoNotDisturbOn; - public const string DoNotDisturbOnTotalSilence = Material.TwoTone.DoNotDisturbOnTotalSilence; - public const string DoNotStep = Material.TwoTone.DoNotStep; - public const string DoNotTouch = Material.TwoTone.DoNotTouch; - public const string Dock = Material.TwoTone.Dock; - public const string DocumentScanner = Material.TwoTone.DocumentScanner; - public const string Domain = Material.TwoTone.Domain; - public const string DomainAdd = Material.TwoTone.DomainAdd; - public const string DomainDisabled = Material.TwoTone.DomainDisabled; - public const string DomainVerification = Material.TwoTone.DomainVerification; - public const string Done = Material.TwoTone.Done; - public const string DoneAll = Material.TwoTone.DoneAll; - public const string DoneOutline = Material.TwoTone.DoneOutline; - public const string DonutLarge = Material.TwoTone.DonutLarge; - public const string DonutSmall = Material.TwoTone.DonutSmall; - public const string DoorBack = Material.TwoTone.DoorBack; - public const string DoorFront = Material.TwoTone.DoorFront; - public const string DoorSliding = Material.TwoTone.DoorSliding; - public const string Doorbell = Material.TwoTone.Doorbell; - public const string DoubleArrow = Material.TwoTone.DoubleArrow; - public const string DownhillSkiing = Material.TwoTone.DownhillSkiing; - public const string Download = Material.TwoTone.Download; - public const string DownloadDone = Material.TwoTone.DownloadDone; - public const string DownloadForOffline = Material.TwoTone.DownloadForOffline; - public const string Downloading = Material.TwoTone.Downloading; - public const string Drafts = Material.TwoTone.Drafts; - public const string DragHandle = Material.TwoTone.DragHandle; - public const string DragIndicator = Material.TwoTone.DragIndicator; - public const string Draw = Material.TwoTone.Draw; - public const string DriveEta = Material.TwoTone.DriveEta; - public const string DriveFileMove = Material.TwoTone.DriveFileMove; - public const string DriveFileMoveRtl = Material.TwoTone.DriveFileMoveRtl; - public const string DriveFileRenameOutline = Material.TwoTone.DriveFileRenameOutline; - public const string DriveFolderUpload = Material.TwoTone.DriveFolderUpload; - public const string Dry = Material.TwoTone.Dry; - public const string DryCleaning = Material.TwoTone.DryCleaning; - public const string Duo = Material.TwoTone.Duo; - public const string Dvr = Material.TwoTone.Dvr; - public const string DynamicFeed = Material.TwoTone.DynamicFeed; - public const string DynamicForm = Material.TwoTone.DynamicForm; - public const string EMobiledata = Material.TwoTone.EMobiledata; - public const string Earbuds = Material.TwoTone.Earbuds; - public const string EarbudsBattery = Material.TwoTone.EarbudsBattery; - public const string East = Material.TwoTone.East; - public const string EdgesensorHigh = Material.TwoTone.EdgesensorHigh; - public const string EdgesensorLow = Material.TwoTone.EdgesensorLow; - public const string Edit = Material.TwoTone.Edit; - public const string EditAttributes = Material.TwoTone.EditAttributes; - public const string EditCalendar = Material.TwoTone.EditCalendar; - public const string EditLocation = Material.TwoTone.EditLocation; - public const string EditLocationAlt = Material.TwoTone.EditLocationAlt; - public const string EditNote = Material.TwoTone.EditNote; - public const string EditNotifications = Material.TwoTone.EditNotifications; - public const string EditOff = Material.TwoTone.EditOff; - public const string EditRoad = Material.TwoTone.EditRoad; - public const string Egg = Material.TwoTone.Egg; - public const string EggAlt = Material.TwoTone.EggAlt; - public const string Eject = Material.TwoTone.Eject; - public const string Elderly = Material.TwoTone.Elderly; - public const string ElderlyWoman = Material.TwoTone.ElderlyWoman; - public const string ElectricBike = Material.TwoTone.ElectricBike; - public const string ElectricCar = Material.TwoTone.ElectricCar; - public const string ElectricMoped = Material.TwoTone.ElectricMoped; - public const string ElectricRickshaw = Material.TwoTone.ElectricRickshaw; - public const string ElectricScooter = Material.TwoTone.ElectricScooter; - public const string ElectricalServices = Material.TwoTone.ElectricalServices; - public const string Elevator = Material.TwoTone.Elevator; - public const string Email = Material.TwoTone.Email; - public const string Emergency = Material.TwoTone.Emergency; - public const string EmergencyRecording = Material.TwoTone.EmergencyRecording; - public const string EmergencyShare = Material.TwoTone.EmergencyShare; - public const string EmojiEmotions = Material.TwoTone.EmojiEmotions; - public const string EmojiEvents = Material.TwoTone.EmojiEvents; - public const string EmojiFoodBeverage = Material.TwoTone.EmojiFoodBeverage; - public const string EmojiNature = Material.TwoTone.EmojiNature; - public const string EmojiObjects = Material.TwoTone.EmojiObjects; - public const string EmojiPeople = Material.TwoTone.EmojiPeople; - public const string EmojiSymbols = Material.TwoTone.EmojiSymbols; - public const string EmojiTransportation = Material.TwoTone.EmojiTransportation; - public const string Engineering = Material.TwoTone.Engineering; - public const string EnhancedEncryption = Material.TwoTone.EnhancedEncryption; - public const string Equalizer = Material.TwoTone.Equalizer; - public const string Error = Material.TwoTone.Error; - public const string ErrorOutline = Material.TwoTone.ErrorOutline; - public const string Escalator = Material.TwoTone.Escalator; - public const string EscalatorWarning = Material.TwoTone.EscalatorWarning; - public const string Euro = Material.TwoTone.Euro; - public const string EuroSymbol = Material.TwoTone.EuroSymbol; - public const string EvStation = Material.TwoTone.EvStation; - public const string Event = Material.TwoTone.Event; - public const string EventAvailable = Material.TwoTone.EventAvailable; - public const string EventBusy = Material.TwoTone.EventBusy; - public const string EventNote = Material.TwoTone.EventNote; - public const string EventRepeat = Material.TwoTone.EventRepeat; - public const string EventSeat = Material.TwoTone.EventSeat; - public const string ExitToApp = Material.TwoTone.ExitToApp; - public const string Expand = Material.TwoTone.Expand; - public const string ExpandCircleDown = Material.TwoTone.ExpandCircleDown; - public const string ExpandLess = Material.TwoTone.ExpandLess; - public const string ExpandMore = Material.TwoTone.ExpandMore; - public const string Explicit = Material.TwoTone.Explicit; - public const string Explore = Material.TwoTone.Explore; - public const string ExploreOff = Material.TwoTone.ExploreOff; - public const string Exposure = Material.TwoTone.Exposure; - public const string ExposureNeg1 = Material.TwoTone.ExposureNeg1; - public const string ExposureNeg2 = Material.TwoTone.ExposureNeg2; - public const string ExposurePlus1 = Material.TwoTone.ExposurePlus1; - public const string ExposurePlus2 = Material.TwoTone.ExposurePlus2; - public const string ExposureZero = Material.TwoTone.ExposureZero; - public const string Extension = Material.TwoTone.Extension; - public const string ExtensionOff = Material.TwoTone.ExtensionOff; - public const string Face = Material.TwoTone.Face; - public const string FaceRetouchingNatural = Material.TwoTone.FaceRetouchingNatural; - public const string FaceRetouchingOff = Material.TwoTone.FaceRetouchingOff; - public const string FactCheck = Material.TwoTone.FactCheck; - public const string Factory = Material.TwoTone.Factory; - public const string FamilyRestroom = Material.TwoTone.FamilyRestroom; - public const string FastForward = Material.TwoTone.FastForward; - public const string FastRewind = Material.TwoTone.FastRewind; - public const string Fastfood = Material.TwoTone.Fastfood; - public const string Favorite = Material.TwoTone.Favorite; - public const string FavoriteBorder = Material.TwoTone.FavoriteBorder; - public const string Fax = Material.TwoTone.Fax; - public const string FeaturedPlayList = Material.TwoTone.FeaturedPlayList; - public const string FeaturedVideo = Material.TwoTone.FeaturedVideo; - public const string Feed = Material.TwoTone.Feed; - public const string Feedback = Material.TwoTone.Feedback; - public const string Female = Material.TwoTone.Female; - public const string Fence = Material.TwoTone.Fence; - public const string Festival = Material.TwoTone.Festival; - public const string FiberDvr = Material.TwoTone.FiberDvr; - public const string FiberManualRecord = Material.TwoTone.FiberManualRecord; - public const string FiberNew = Material.TwoTone.FiberNew; - public const string FiberPin = Material.TwoTone.FiberPin; - public const string FiberSmartRecord = Material.TwoTone.FiberSmartRecord; - public const string FileCopy = Material.TwoTone.FileCopy; - public const string FileDownload = Material.TwoTone.FileDownload; - public const string FileDownloadDone = Material.TwoTone.FileDownloadDone; - public const string FileDownloadOff = Material.TwoTone.FileDownloadOff; - public const string FileOpen = Material.TwoTone.FileOpen; - public const string FilePresent = Material.TwoTone.FilePresent; - public const string FileUpload = Material.TwoTone.FileUpload; - public const string Filter = Material.TwoTone.Filter; - public const string Filter1 = Material.TwoTone.Filter1; - public const string Filter2 = Material.TwoTone.Filter2; - public const string Filter3 = Material.TwoTone.Filter3; - public const string Filter4 = Material.TwoTone.Filter4; - public const string Filter5 = Material.TwoTone.Filter5; - public const string Filter6 = Material.TwoTone.Filter6; - public const string Filter7 = Material.TwoTone.Filter7; - public const string Filter8 = Material.TwoTone.Filter8; - public const string Filter9 = Material.TwoTone.Filter9; - public const string Filter9Plus = Material.TwoTone.Filter9Plus; - public const string FilterAlt = Material.TwoTone.FilterAlt; - public const string FilterAltOff = Material.TwoTone.FilterAltOff; - public const string FilterBAndW = Material.TwoTone.FilterBAndW; - public const string FilterCenterFocus = Material.TwoTone.FilterCenterFocus; - public const string FilterDrama = Material.TwoTone.FilterDrama; - public const string FilterFrames = Material.TwoTone.FilterFrames; - public const string FilterHdr = Material.TwoTone.FilterHdr; - public const string FilterList = Material.TwoTone.FilterList; - public const string FilterListOff = Material.TwoTone.FilterListOff; - public const string FilterNone = Material.TwoTone.FilterNone; - public const string FilterTiltShift = Material.TwoTone.FilterTiltShift; - public const string FilterVintage = Material.TwoTone.FilterVintage; - public const string FindInPage = Material.TwoTone.FindInPage; - public const string FindReplace = Material.TwoTone.FindReplace; - public const string Fingerprint = Material.TwoTone.Fingerprint; - public const string FireExtinguisher = Material.TwoTone.FireExtinguisher; - public const string Fireplace = Material.TwoTone.Fireplace; - public const string FirstPage = Material.TwoTone.FirstPage; - public const string FitScreen = Material.TwoTone.FitScreen; - public const string Fitbit = Material.TwoTone.Fitbit; - public const string FitnessCenter = Material.TwoTone.FitnessCenter; - public const string Flag = Material.TwoTone.Flag; - public const string FlagCircle = Material.TwoTone.FlagCircle; - public const string Flaky = Material.TwoTone.Flaky; - public const string Flare = Material.TwoTone.Flare; - public const string FlashAuto = Material.TwoTone.FlashAuto; - public const string FlashOff = Material.TwoTone.FlashOff; - public const string FlashOn = Material.TwoTone.FlashOn; - public const string FlashlightOff = Material.TwoTone.FlashlightOff; - public const string FlashlightOn = Material.TwoTone.FlashlightOn; - public const string Flatware = Material.TwoTone.Flatware; - public const string Flight = Material.TwoTone.Flight; - public const string FlightClass = Material.TwoTone.FlightClass; - public const string FlightLand = Material.TwoTone.FlightLand; - public const string FlightTakeoff = Material.TwoTone.FlightTakeoff; - public const string Flip = Material.TwoTone.Flip; - public const string FlipCameraAndroid = Material.TwoTone.FlipCameraAndroid; - public const string FlipCameraIos = Material.TwoTone.FlipCameraIos; - public const string FlipToBack = Material.TwoTone.FlipToBack; - public const string FlipToFront = Material.TwoTone.FlipToFront; - public const string Flood = Material.TwoTone.Flood; - public const string Flourescent = Material.TwoTone.Flourescent; - public const string FlutterDash = Material.TwoTone.FlutterDash; - public const string FmdBad = Material.TwoTone.FmdBad; - public const string FmdGood = Material.TwoTone.FmdGood; - public const string Folder = Material.TwoTone.Folder; - public const string FolderCopy = Material.TwoTone.FolderCopy; - public const string FolderDelete = Material.TwoTone.FolderDelete; - public const string FolderOff = Material.TwoTone.FolderOff; - public const string FolderOpen = Material.TwoTone.FolderOpen; - public const string FolderShared = Material.TwoTone.FolderShared; - public const string FolderSpecial = Material.TwoTone.FolderSpecial; - public const string FolderZip = Material.TwoTone.FolderZip; - public const string FollowTheSigns = Material.TwoTone.FollowTheSigns; - public const string FontDownload = Material.TwoTone.FontDownload; - public const string FontDownloadOff = Material.TwoTone.FontDownloadOff; - public const string FoodBank = Material.TwoTone.FoodBank; - public const string Forest = Material.TwoTone.Forest; - public const string ForkLeft = Material.TwoTone.ForkLeft; - public const string ForkRight = Material.TwoTone.ForkRight; - public const string FormatAlignCenter = Material.TwoTone.FormatAlignCenter; - public const string FormatAlignJustify = Material.TwoTone.FormatAlignJustify; - public const string FormatAlignLeft = Material.TwoTone.FormatAlignLeft; - public const string FormatAlignRight = Material.TwoTone.FormatAlignRight; - public const string FormatBold = Material.TwoTone.FormatBold; - public const string FormatClear = Material.TwoTone.FormatClear; - public const string FormatColorFill = Material.TwoTone.FormatColorFill; - public const string FormatColorReset = Material.TwoTone.FormatColorReset; - public const string FormatColorText = Material.TwoTone.FormatColorText; - public const string FormatIndentDecrease = Material.TwoTone.FormatIndentDecrease; - public const string FormatIndentIncrease = Material.TwoTone.FormatIndentIncrease; - public const string FormatItalic = Material.TwoTone.FormatItalic; - public const string FormatLineSpacing = Material.TwoTone.FormatLineSpacing; - public const string FormatListBulleted = Material.TwoTone.FormatListBulleted; - public const string FormatListNumbered = Material.TwoTone.FormatListNumbered; - public const string FormatListNumberedRtl = Material.TwoTone.FormatListNumberedRtl; - public const string FormatOverline = Material.TwoTone.FormatOverline; - public const string FormatPaint = Material.TwoTone.FormatPaint; - public const string FormatQuote = Material.TwoTone.FormatQuote; - public const string FormatShapes = Material.TwoTone.FormatShapes; - public const string FormatSize = Material.TwoTone.FormatSize; - public const string FormatStrikethrough = Material.TwoTone.FormatStrikethrough; - public const string FormatTextdirectionLToR = Material.TwoTone.FormatTextdirectionLToR; - public const string FormatTextdirectionRToL = Material.TwoTone.FormatTextdirectionRToL; - public const string FormatUnderlined = Material.TwoTone.FormatUnderlined; - public const string Fort = Material.TwoTone.Fort; - public const string Forum = Material.TwoTone.Forum; - public const string Forward = Material.TwoTone.Forward; - public const string Forward10 = Material.TwoTone.Forward10; - public const string Forward30 = Material.TwoTone.Forward30; - public const string Forward5 = Material.TwoTone.Forward5; - public const string ForwardToInbox = Material.TwoTone.ForwardToInbox; - public const string Foundation = Material.TwoTone.Foundation; - public const string FreeBreakfast = Material.TwoTone.FreeBreakfast; - public const string FreeCancellation = Material.TwoTone.FreeCancellation; - public const string FrontHand = Material.TwoTone.FrontHand; - public const string Fullscreen = Material.TwoTone.Fullscreen; - public const string FullscreenExit = Material.TwoTone.FullscreenExit; - public const string Functions = Material.TwoTone.Functions; - public const string GMobiledata = Material.TwoTone.GMobiledata; - public const string GTranslate = Material.TwoTone.GTranslate; - public const string Gamepad = Material.TwoTone.Gamepad; - public const string Games = Material.TwoTone.Games; - public const string Garage = Material.TwoTone.Garage; - public const string Gavel = Material.TwoTone.Gavel; - public const string GeneratingTokens = Material.TwoTone.GeneratingTokens; - public const string Gesture = Material.TwoTone.Gesture; - public const string GetApp = Material.TwoTone.GetApp; - public const string Gif = Material.TwoTone.Gif; - public const string GifBox = Material.TwoTone.GifBox; - public const string Girl = Material.TwoTone.Girl; - public const string Gite = Material.TwoTone.Gite; - public const string GolfCourse = Material.TwoTone.GolfCourse; - public const string GppBad = Material.TwoTone.GppBad; - public const string GppGood = Material.TwoTone.GppGood; - public const string GppMaybe = Material.TwoTone.GppMaybe; - public const string GpsFixed = Material.TwoTone.GpsFixed; - public const string GpsNotFixed = Material.TwoTone.GpsNotFixed; - public const string GpsOff = Material.TwoTone.GpsOff; - public const string Grade = Material.TwoTone.Grade; - public const string Gradient = Material.TwoTone.Gradient; - public const string Grading = Material.TwoTone.Grading; - public const string Grain = Material.TwoTone.Grain; - public const string GraphicEq = Material.TwoTone.GraphicEq; - public const string Grass = Material.TwoTone.Grass; - public const string Grid3x3 = Material.TwoTone.Grid3x3; - public const string Grid4x4 = Material.TwoTone.Grid4x4; - public const string GridGoldenratio = Material.TwoTone.GridGoldenratio; - public const string GridOff = Material.TwoTone.GridOff; - public const string GridOn = Material.TwoTone.GridOn; - public const string GridView = Material.TwoTone.GridView; - public const string Group = Material.TwoTone.Group; - public const string GroupAdd = Material.TwoTone.GroupAdd; - public const string GroupOff = Material.TwoTone.GroupOff; - public const string GroupRemove = Material.TwoTone.GroupRemove; - public const string GroupWork = Material.TwoTone.GroupWork; - public const string Groups = Material.TwoTone.Groups; - public const string HMobiledata = Material.TwoTone.HMobiledata; - public const string HPlusMobiledata = Material.TwoTone.HPlusMobiledata; - public const string Hail = Material.TwoTone.Hail; - public const string Handshake = Material.TwoTone.Handshake; - public const string Handyman = Material.TwoTone.Handyman; - public const string Hardware = Material.TwoTone.Hardware; - public const string Hd = Material.TwoTone.Hd; - public const string HdrAuto = Material.TwoTone.HdrAuto; - public const string HdrAutoSelect = Material.TwoTone.HdrAutoSelect; - public const string HdrEnhancedSelect = Material.TwoTone.HdrEnhancedSelect; - public const string HdrOff = Material.TwoTone.HdrOff; - public const string HdrOffSelect = Material.TwoTone.HdrOffSelect; - public const string HdrOn = Material.TwoTone.HdrOn; - public const string HdrOnSelect = Material.TwoTone.HdrOnSelect; - public const string HdrPlus = Material.TwoTone.HdrPlus; - public const string HdrStrong = Material.TwoTone.HdrStrong; - public const string HdrWeak = Material.TwoTone.HdrWeak; - public const string Headphones = Material.TwoTone.Headphones; - public const string HeadphonesBattery = Material.TwoTone.HeadphonesBattery; - public const string Headset = Material.TwoTone.Headset; - public const string HeadsetMic = Material.TwoTone.HeadsetMic; - public const string HeadsetOff = Material.TwoTone.HeadsetOff; - public const string Healing = Material.TwoTone.Healing; - public const string HealthAndSafety = Material.TwoTone.HealthAndSafety; - public const string Hearing = Material.TwoTone.Hearing; - public const string HearingDisabled = Material.TwoTone.HearingDisabled; - public const string HeartBroken = Material.TwoTone.HeartBroken; - public const string Height = Material.TwoTone.Height; - public const string Help = Material.TwoTone.Help; - public const string HelpCenter = Material.TwoTone.HelpCenter; - public const string HelpOutline = Material.TwoTone.HelpOutline; - public const string Hevc = Material.TwoTone.Hevc; - public const string Hexagon = Material.TwoTone.Hexagon; - public const string HideImage = Material.TwoTone.HideImage; - public const string HideSource = Material.TwoTone.HideSource; - public const string HighQuality = Material.TwoTone.HighQuality; - public const string Highlight = Material.TwoTone.Highlight; - public const string HighlightAlt = Material.TwoTone.HighlightAlt; - public const string HighlightOff = Material.TwoTone.HighlightOff; - public const string Hiking = Material.TwoTone.Hiking; - public const string History = Material.TwoTone.History; - public const string HistoryEdu = Material.TwoTone.HistoryEdu; - public const string HistoryToggleOff = Material.TwoTone.HistoryToggleOff; - public const string Hive = Material.TwoTone.Hive; - public const string Hls = Material.TwoTone.Hls; - public const string HlsOff = Material.TwoTone.HlsOff; - public const string HolidayVillage = Material.TwoTone.HolidayVillage; - public const string Home = Material.TwoTone.Home; - public const string HomeMax = Material.TwoTone.HomeMax; - public const string HomeMini = Material.TwoTone.HomeMini; - public const string HomeRepairService = Material.TwoTone.HomeRepairService; - public const string HomeWork = Material.TwoTone.HomeWork; - public const string HorizontalDistribute = Material.TwoTone.HorizontalDistribute; - public const string HorizontalRule = Material.TwoTone.HorizontalRule; - public const string HorizontalSplit = Material.TwoTone.HorizontalSplit; - public const string HotTub = Material.TwoTone.HotTub; - public const string Hotel = Material.TwoTone.Hotel; - public const string HotelClass = Material.TwoTone.HotelClass; - public const string HourglassBottom = Material.TwoTone.HourglassBottom; - public const string HourglassDisabled = Material.TwoTone.HourglassDisabled; - public const string HourglassEmpty = Material.TwoTone.HourglassEmpty; - public const string HourglassFull = Material.TwoTone.HourglassFull; - public const string HourglassTop = Material.TwoTone.HourglassTop; - public const string House = Material.TwoTone.House; - public const string HouseSiding = Material.TwoTone.HouseSiding; - public const string Houseboat = Material.TwoTone.Houseboat; - public const string HowToReg = Material.TwoTone.HowToReg; - public const string HowToVote = Material.TwoTone.HowToVote; - public const string Html = Material.TwoTone.Html; - public const string Http = Material.TwoTone.Http; - public const string Https = Material.TwoTone.Https; - public const string Hub = Material.TwoTone.Hub; - public const string Hvac = Material.TwoTone.Hvac; - public const string IceSkating = Material.TwoTone.IceSkating; - public const string Icecream = Material.TwoTone.Icecream; - public const string Image = Material.TwoTone.Image; - public const string ImageAspectRatio = Material.TwoTone.ImageAspectRatio; - public const string ImageNotSupported = Material.TwoTone.ImageNotSupported; - public const string ImageSearch = Material.TwoTone.ImageSearch; - public const string ImagesearchRoller = Material.TwoTone.ImagesearchRoller; - public const string ImportContacts = Material.TwoTone.ImportContacts; - public const string ImportExport = Material.TwoTone.ImportExport; - public const string ImportantDevices = Material.TwoTone.ImportantDevices; - public const string Inbox = Material.TwoTone.Inbox; - public const string IncompleteCircle = Material.TwoTone.IncompleteCircle; - public const string IndeterminateCheckBox = Material.TwoTone.IndeterminateCheckBox; - public const string Info = Material.TwoTone.Info; - public const string Input = Material.TwoTone.Input; - public const string InsertChart = Material.TwoTone.InsertChart; - public const string InsertChartOutlined = Material.TwoTone.InsertChartOutlined; - public const string InsertComment = Material.TwoTone.InsertComment; - public const string InsertDriveFile = Material.TwoTone.InsertDriveFile; - public const string InsertEmoticon = Material.TwoTone.InsertEmoticon; - public const string InsertInvitation = Material.TwoTone.InsertInvitation; - public const string InsertLink = Material.TwoTone.InsertLink; - public const string InsertPageBreak = Material.TwoTone.InsertPageBreak; - public const string InsertPhoto = Material.TwoTone.InsertPhoto; - public const string Insights = Material.TwoTone.Insights; - public const string InstallDesktop = Material.TwoTone.InstallDesktop; - public const string InstallMobile = Material.TwoTone.InstallMobile; - public const string IntegrationInstructions = Material.TwoTone.IntegrationInstructions; - public const string Interests = Material.TwoTone.Interests; - public const string InterpreterMode = Material.TwoTone.InterpreterMode; - public const string Inventory = Material.TwoTone.Inventory; - public const string Inventory2 = Material.TwoTone.Inventory2; - public const string InvertColors = Material.TwoTone.InvertColors; - public const string InvertColorsOff = Material.TwoTone.InvertColorsOff; - public const string IosShare = Material.TwoTone.IosShare; - public const string Iron = Material.TwoTone.Iron; - public const string Iso = Material.TwoTone.Iso; - public const string Javascript = Material.TwoTone.Javascript; - public const string JoinFull = Material.TwoTone.JoinFull; - public const string JoinInner = Material.TwoTone.JoinInner; - public const string JoinLeft = Material.TwoTone.JoinLeft; - public const string JoinRight = Material.TwoTone.JoinRight; - public const string Kayaking = Material.TwoTone.Kayaking; - public const string KebabDining = Material.TwoTone.KebabDining; - public const string Key = Material.TwoTone.Key; - public const string KeyOff = Material.TwoTone.KeyOff; - public const string Keyboard = Material.TwoTone.Keyboard; - public const string KeyboardAlt = Material.TwoTone.KeyboardAlt; - public const string KeyboardArrowDown = Material.TwoTone.KeyboardArrowDown; - public const string KeyboardArrowLeft = Material.TwoTone.KeyboardArrowLeft; - public const string KeyboardArrowRight = Material.TwoTone.KeyboardArrowRight; - public const string KeyboardArrowUp = Material.TwoTone.KeyboardArrowUp; - public const string KeyboardBackspace = Material.TwoTone.KeyboardBackspace; - public const string KeyboardCapslock = Material.TwoTone.KeyboardCapslock; - public const string KeyboardCommandKey = Material.TwoTone.KeyboardCommandKey; - public const string KeyboardControlKey = Material.TwoTone.KeyboardControlKey; - public const string KeyboardDoubleArrowDown = Material.TwoTone.KeyboardDoubleArrowDown; - public const string KeyboardDoubleArrowLeft = Material.TwoTone.KeyboardDoubleArrowLeft; - public const string KeyboardDoubleArrowRight = Material.TwoTone.KeyboardDoubleArrowRight; - public const string KeyboardDoubleArrowUp = Material.TwoTone.KeyboardDoubleArrowUp; - public const string KeyboardHide = Material.TwoTone.KeyboardHide; - public const string KeyboardOptionKey = Material.TwoTone.KeyboardOptionKey; - public const string KeyboardReturn = Material.TwoTone.KeyboardReturn; - public const string KeyboardTab = Material.TwoTone.KeyboardTab; - public const string KeyboardVoice = Material.TwoTone.KeyboardVoice; - public const string KingBed = Material.TwoTone.KingBed; - public const string Kitchen = Material.TwoTone.Kitchen; - public const string Kitesurfing = Material.TwoTone.Kitesurfing; - public const string Label = Material.TwoTone.Label; - public const string LabelImportant = Material.TwoTone.LabelImportant; - public const string LabelOff = Material.TwoTone.LabelOff; - public const string Lan = Material.TwoTone.Lan; - public const string Landscape = Material.TwoTone.Landscape; - public const string Landslide = Material.TwoTone.Landslide; - public const string Language = Material.TwoTone.Language; - public const string Laptop = Material.TwoTone.Laptop; - public const string LaptopChromebook = Material.TwoTone.LaptopChromebook; - public const string LaptopMac = Material.TwoTone.LaptopMac; - public const string LaptopWindows = Material.TwoTone.LaptopWindows; - public const string LastPage = Material.TwoTone.LastPage; - public const string Launch = Material.TwoTone.Launch; - public const string Layers = Material.TwoTone.Layers; - public const string LayersClear = Material.TwoTone.LayersClear; - public const string Leaderboard = Material.TwoTone.Leaderboard; - public const string LeakAdd = Material.TwoTone.LeakAdd; - public const string LeakRemove = Material.TwoTone.LeakRemove; - public const string LegendToggle = Material.TwoTone.LegendToggle; - public const string Lens = Material.TwoTone.Lens; - public const string LensBlur = Material.TwoTone.LensBlur; - public const string LibraryAdd = Material.TwoTone.LibraryAdd; - public const string LibraryAddCheck = Material.TwoTone.LibraryAddCheck; - public const string LibraryBooks = Material.TwoTone.LibraryBooks; - public const string LibraryMusic = Material.TwoTone.LibraryMusic; - public const string Light = Material.TwoTone.Light; - public const string LightMode = Material.TwoTone.LightMode; - public const string Lightbulb = Material.TwoTone.Lightbulb; - public const string LightbulbCircle = Material.TwoTone.LightbulbCircle; - public const string LineAxis = Material.TwoTone.LineAxis; - public const string LineStyle = Material.TwoTone.LineStyle; - public const string LineWeight = Material.TwoTone.LineWeight; - public const string LinearScale = Material.TwoTone.LinearScale; - public const string Link = Material.TwoTone.Link; - public const string LinkOff = Material.TwoTone.LinkOff; - public const string LinkedCamera = Material.TwoTone.LinkedCamera; - public const string Liquor = Material.TwoTone.Liquor; - public const string List = Material.TwoTone.List; - public const string ListAlt = Material.TwoTone.ListAlt; - public const string LiveHelp = Material.TwoTone.LiveHelp; - public const string LiveTv = Material.TwoTone.LiveTv; - public const string Living = Material.TwoTone.Living; - public const string LocalActivity = Material.TwoTone.LocalActivity; - public const string LocalAirport = Material.TwoTone.LocalAirport; - public const string LocalAtm = Material.TwoTone.LocalAtm; - public const string LocalBar = Material.TwoTone.LocalBar; - public const string LocalCafe = Material.TwoTone.LocalCafe; - public const string LocalCarWash = Material.TwoTone.LocalCarWash; - public const string LocalConvenienceStore = Material.TwoTone.LocalConvenienceStore; - public const string LocalDining = Material.TwoTone.LocalDining; - public const string LocalDrink = Material.TwoTone.LocalDrink; - public const string LocalFireDepartment = Material.TwoTone.LocalFireDepartment; - public const string LocalFlorist = Material.TwoTone.LocalFlorist; - public const string LocalGasStation = Material.TwoTone.LocalGasStation; - public const string LocalGroceryStore = Material.TwoTone.LocalGroceryStore; - public const string LocalHospital = Material.TwoTone.LocalHospital; - public const string LocalHotel = Material.TwoTone.LocalHotel; - public const string LocalLaundryService = Material.TwoTone.LocalLaundryService; - public const string LocalLibrary = Material.TwoTone.LocalLibrary; - public const string LocalMall = Material.TwoTone.LocalMall; - public const string LocalMovies = Material.TwoTone.LocalMovies; - public const string LocalOffer = Material.TwoTone.LocalOffer; - public const string LocalParking = Material.TwoTone.LocalParking; - public const string LocalPharmacy = Material.TwoTone.LocalPharmacy; - public const string LocalPhone = Material.TwoTone.LocalPhone; - public const string LocalPizza = Material.TwoTone.LocalPizza; - public const string LocalPlay = Material.TwoTone.LocalPlay; - public const string LocalPolice = Material.TwoTone.LocalPolice; - public const string LocalPostOffice = Material.TwoTone.LocalPostOffice; - public const string LocalPrintshop = Material.TwoTone.LocalPrintshop; - public const string LocalSee = Material.TwoTone.LocalSee; - public const string LocalShipping = Material.TwoTone.LocalShipping; - public const string LocalTaxi = Material.TwoTone.LocalTaxi; - public const string LocationCity = Material.TwoTone.LocationCity; - public const string LocationDisabled = Material.TwoTone.LocationDisabled; - public const string LocationOff = Material.TwoTone.LocationOff; - public const string LocationOn = Material.TwoTone.LocationOn; - public const string LocationSearching = Material.TwoTone.LocationSearching; - public const string Lock = Material.TwoTone.Lock; - public const string LockClock = Material.TwoTone.LockClock; - public const string LockOpen = Material.TwoTone.LockOpen; - public const string LockReset = Material.TwoTone.LockReset; - public const string Login = Material.TwoTone.Login; - public const string LogoDev = Material.TwoTone.LogoDev; - public const string Logout = Material.TwoTone.Logout; - public const string Looks = Material.TwoTone.Looks; - public const string Looks3 = Material.TwoTone.Looks3; - public const string Looks4 = Material.TwoTone.Looks4; - public const string Looks5 = Material.TwoTone.Looks5; - public const string Looks6 = Material.TwoTone.Looks6; - public const string LooksOne = Material.TwoTone.LooksOne; - public const string LooksTwo = Material.TwoTone.LooksTwo; - public const string Loop = Material.TwoTone.Loop; - public const string Loupe = Material.TwoTone.Loupe; - public const string LowPriority = Material.TwoTone.LowPriority; - public const string Loyalty = Material.TwoTone.Loyalty; - public const string LteMobiledata = Material.TwoTone.LteMobiledata; - public const string LtePlusMobiledata = Material.TwoTone.LtePlusMobiledata; - public const string Luggage = Material.TwoTone.Luggage; - public const string LunchDining = Material.TwoTone.LunchDining; - public const string Mail = Material.TwoTone.Mail; - public const string MailOutline = Material.TwoTone.MailOutline; - public const string Male = Material.TwoTone.Male; - public const string Man = Material.TwoTone.Man; - public const string ManageAccounts = Material.TwoTone.ManageAccounts; - public const string ManageHistory = Material.TwoTone.ManageHistory; - public const string ManageSearch = Material.TwoTone.ManageSearch; - public const string Map = Material.TwoTone.Map; - public const string MapsHomeWork = Material.TwoTone.MapsHomeWork; - public const string MapsUgc = Material.TwoTone.MapsUgc; - public const string Margin = Material.TwoTone.Margin; - public const string MarkAsUnread = Material.TwoTone.MarkAsUnread; - public const string MarkChatRead = Material.TwoTone.MarkChatRead; - public const string MarkChatUnread = Material.TwoTone.MarkChatUnread; - public const string MarkEmailRead = Material.TwoTone.MarkEmailRead; - public const string MarkEmailUnread = Material.TwoTone.MarkEmailUnread; - public const string MarkUnreadChatAlt = Material.TwoTone.MarkUnreadChatAlt; - public const string Markunread = Material.TwoTone.Markunread; - public const string MarkunreadMailbox = Material.TwoTone.MarkunreadMailbox; - public const string Masks = Material.TwoTone.Masks; - public const string Maximize = Material.TwoTone.Maximize; - public const string MediaBluetoothOff = Material.TwoTone.MediaBluetoothOff; - public const string MediaBluetoothOn = Material.TwoTone.MediaBluetoothOn; - public const string Mediation = Material.TwoTone.Mediation; - public const string MedicalInformation = Material.TwoTone.MedicalInformation; - public const string MedicalServices = Material.TwoTone.MedicalServices; - public const string Medication = Material.TwoTone.Medication; - public const string MedicationLiquid = Material.TwoTone.MedicationLiquid; - public const string MeetingRoom = Material.TwoTone.MeetingRoom; - public const string Memory = Material.TwoTone.Memory; - public const string Menu = Material.TwoTone.Menu; - public const string MenuBook = Material.TwoTone.MenuBook; - public const string MenuOpen = Material.TwoTone.MenuOpen; - public const string Merge = Material.TwoTone.Merge; - public const string MergeType = Material.TwoTone.MergeType; - public const string Message = Material.TwoTone.Message; - public const string Mic = Material.TwoTone.Mic; - public const string MicExternalOff = Material.TwoTone.MicExternalOff; - public const string MicExternalOn = Material.TwoTone.MicExternalOn; - public const string MicNone = Material.TwoTone.MicNone; - public const string MicOff = Material.TwoTone.MicOff; - public const string Microwave = Material.TwoTone.Microwave; - public const string MilitaryTech = Material.TwoTone.MilitaryTech; - public const string Minimize = Material.TwoTone.Minimize; - public const string MinorCrash = Material.TwoTone.MinorCrash; - public const string MiscellaneousServices = Material.TwoTone.MiscellaneousServices; - public const string MissedVideoCall = Material.TwoTone.MissedVideoCall; - public const string Mms = Material.TwoTone.Mms; - public const string MobileFriendly = Material.TwoTone.MobileFriendly; - public const string MobileOff = Material.TwoTone.MobileOff; - public const string MobileScreenShare = Material.TwoTone.MobileScreenShare; - public const string MobiledataOff = Material.TwoTone.MobiledataOff; - public const string Mode = Material.TwoTone.Mode; - public const string ModeComment = Material.TwoTone.ModeComment; - public const string ModeEdit = Material.TwoTone.ModeEdit; - public const string ModeEditOutline = Material.TwoTone.ModeEditOutline; - public const string ModeNight = Material.TwoTone.ModeNight; - public const string ModeOfTravel = Material.TwoTone.ModeOfTravel; - public const string ModeStandby = Material.TwoTone.ModeStandby; - public const string ModelTraining = Material.TwoTone.ModelTraining; - public const string MonetizationOn = Material.TwoTone.MonetizationOn; - public const string Money = Material.TwoTone.Money; - public const string MoneyOff = Material.TwoTone.MoneyOff; - public const string MoneyOffCsred = Material.TwoTone.MoneyOffCsred; - public const string Monitor = Material.TwoTone.Monitor; - public const string MonitorHeart = Material.TwoTone.MonitorHeart; - public const string MonitorWeight = Material.TwoTone.MonitorWeight; - public const string MonochromePhotos = Material.TwoTone.MonochromePhotos; - public const string Mood = Material.TwoTone.Mood; - public const string MoodBad = Material.TwoTone.MoodBad; - public const string Moped = Material.TwoTone.Moped; - public const string More = Material.TwoTone.More; - public const string MoreHoriz = Material.TwoTone.MoreHoriz; - public const string MoreTime = Material.TwoTone.MoreTime; - public const string MoreVert = Material.TwoTone.MoreVert; - public const string Mosque = Material.TwoTone.Mosque; - public const string MotionPhotosAuto = Material.TwoTone.MotionPhotosAuto; - public const string MotionPhotosOff = Material.TwoTone.MotionPhotosOff; - public const string MotionPhotosOn = Material.TwoTone.MotionPhotosOn; - public const string MotionPhotosPause = Material.TwoTone.MotionPhotosPause; - public const string MotionPhotosPaused = Material.TwoTone.MotionPhotosPaused; - public const string Mouse = Material.TwoTone.Mouse; - public const string MoveDown = Material.TwoTone.MoveDown; - public const string MoveToInbox = Material.TwoTone.MoveToInbox; - public const string MoveUp = Material.TwoTone.MoveUp; - public const string Movie = Material.TwoTone.Movie; - public const string MovieCreation = Material.TwoTone.MovieCreation; - public const string MovieFilter = Material.TwoTone.MovieFilter; - public const string Moving = Material.TwoTone.Moving; - public const string Mp = Material.TwoTone.Mp; - public const string MultilineChart = Material.TwoTone.MultilineChart; - public const string MultipleStop = Material.TwoTone.MultipleStop; - public const string Museum = Material.TwoTone.Museum; - public const string MusicNote = Material.TwoTone.MusicNote; - public const string MusicOff = Material.TwoTone.MusicOff; - public const string MusicVideo = Material.TwoTone.MusicVideo; - public const string MyLocation = Material.TwoTone.MyLocation; - public const string Nat = Material.TwoTone.Nat; - public const string Nature = Material.TwoTone.Nature; - public const string NaturePeople = Material.TwoTone.NaturePeople; - public const string NavigateBefore = Material.TwoTone.NavigateBefore; - public const string NavigateNext = Material.TwoTone.NavigateNext; - public const string Navigation = Material.TwoTone.Navigation; - public const string NearMe = Material.TwoTone.NearMe; - public const string NearMeDisabled = Material.TwoTone.NearMeDisabled; - public const string NearbyError = Material.TwoTone.NearbyError; - public const string NearbyOff = Material.TwoTone.NearbyOff; - public const string NetworkCell = Material.TwoTone.NetworkCell; - public const string NetworkCheck = Material.TwoTone.NetworkCheck; - public const string NetworkLocked = Material.TwoTone.NetworkLocked; - public const string NetworkPing = Material.TwoTone.NetworkPing; - public const string NetworkWifi = Material.TwoTone.NetworkWifi; - public const string NetworkWifi1Bar = Material.TwoTone.NetworkWifi1Bar; - public const string NetworkWifi2Bar = Material.TwoTone.NetworkWifi2Bar; - public const string NetworkWifi3Bar = Material.TwoTone.NetworkWifi3Bar; - public const string NewLabel = Material.TwoTone.NewLabel; - public const string NewReleases = Material.TwoTone.NewReleases; - public const string Newspaper = Material.TwoTone.Newspaper; - public const string NextPlan = Material.TwoTone.NextPlan; - public const string NextWeek = Material.TwoTone.NextWeek; - public const string Nfc = Material.TwoTone.Nfc; - public const string NightShelter = Material.TwoTone.NightShelter; - public const string Nightlife = Material.TwoTone.Nightlife; - public const string Nightlight = Material.TwoTone.Nightlight; - public const string NightlightRound = Material.TwoTone.NightlightRound; - public const string NightsStay = Material.TwoTone.NightsStay; - public const string NoAccounts = Material.TwoTone.NoAccounts; - public const string NoBackpack = Material.TwoTone.NoBackpack; - public const string NoCell = Material.TwoTone.NoCell; - public const string NoCrash = Material.TwoTone.NoCrash; - public const string NoDrinks = Material.TwoTone.NoDrinks; - public const string NoEncryption = Material.TwoTone.NoEncryption; - public const string NoEncryptionGmailerrorred = Material.TwoTone.NoEncryptionGmailerrorred; - public const string NoFlash = Material.TwoTone.NoFlash; - public const string NoFood = Material.TwoTone.NoFood; - public const string NoLuggage = Material.TwoTone.NoLuggage; - public const string NoMeals = Material.TwoTone.NoMeals; - public const string NoMeetingRoom = Material.TwoTone.NoMeetingRoom; - public const string NoPhotography = Material.TwoTone.NoPhotography; - public const string NoSim = Material.TwoTone.NoSim; - public const string NoStroller = Material.TwoTone.NoStroller; - public const string NoTransfer = Material.TwoTone.NoTransfer; - public const string NoiseAware = Material.TwoTone.NoiseAware; - public const string NoiseControlOff = Material.TwoTone.NoiseControlOff; - public const string NordicWalking = Material.TwoTone.NordicWalking; - public const string North = Material.TwoTone.North; - public const string NorthEast = Material.TwoTone.NorthEast; - public const string NorthWest = Material.TwoTone.NorthWest; - public const string NotAccessible = Material.TwoTone.NotAccessible; - public const string NotInterested = Material.TwoTone.NotInterested; - public const string NotListedLocation = Material.TwoTone.NotListedLocation; - public const string NotStarted = Material.TwoTone.NotStarted; - public const string Note = Material.TwoTone.Note; - public const string NoteAdd = Material.TwoTone.NoteAdd; - public const string NoteAlt = Material.TwoTone.NoteAlt; - public const string Notes = Material.TwoTone.Notes; - public const string NotificationAdd = Material.TwoTone.NotificationAdd; - public const string NotificationImportant = Material.TwoTone.NotificationImportant; - public const string Notifications = Material.TwoTone.Notifications; - public const string NotificationsActive = Material.TwoTone.NotificationsActive; - public const string NotificationsNone = Material.TwoTone.NotificationsNone; - public const string NotificationsOff = Material.TwoTone.NotificationsOff; - public const string NotificationsPaused = Material.TwoTone.NotificationsPaused; - public const string Numbers = Material.TwoTone.Numbers; - public const string OfflineBolt = Material.TwoTone.OfflineBolt; - public const string OfflinePin = Material.TwoTone.OfflinePin; - public const string OfflineShare = Material.TwoTone.OfflineShare; - public const string OnDeviceTraining = Material.TwoTone.OnDeviceTraining; - public const string OndemandVideo = Material.TwoTone.OndemandVideo; - public const string OnlinePrediction = Material.TwoTone.OnlinePrediction; - public const string Opacity = Material.TwoTone.Opacity; - public const string OpenInBrowser = Material.TwoTone.OpenInBrowser; - public const string OpenInFull = Material.TwoTone.OpenInFull; - public const string OpenInNew = Material.TwoTone.OpenInNew; - public const string OpenInNewOff = Material.TwoTone.OpenInNewOff; - public const string OpenWith = Material.TwoTone.OpenWith; - public const string OtherHouses = Material.TwoTone.OtherHouses; - public const string Outbound = Material.TwoTone.Outbound; - public const string Outbox = Material.TwoTone.Outbox; - public const string OutdoorGrill = Material.TwoTone.OutdoorGrill; - public const string Outlet = Material.TwoTone.Outlet; - public const string OutlinedFlag = Material.TwoTone.OutlinedFlag; - public const string Output = Material.TwoTone.Output; - public const string Padding = Material.TwoTone.Padding; - public const string Pages = Material.TwoTone.Pages; - public const string Pageview = Material.TwoTone.Pageview; - public const string Paid = Material.TwoTone.Paid; - public const string Palette = Material.TwoTone.Palette; - public const string PanTool = Material.TwoTone.PanTool; - public const string PanToolAlt = Material.TwoTone.PanToolAlt; - public const string Panorama = Material.TwoTone.Panorama; - public const string PanoramaFishEye = Material.TwoTone.PanoramaFishEye; - public const string PanoramaHorizontal = Material.TwoTone.PanoramaHorizontal; - public const string PanoramaHorizontalSelect = Material.TwoTone.PanoramaHorizontalSelect; - public const string PanoramaPhotosphere = Material.TwoTone.PanoramaPhotosphere; - public const string PanoramaPhotosphereSelect = Material.TwoTone.PanoramaPhotosphereSelect; - public const string PanoramaVertical = Material.TwoTone.PanoramaVertical; - public const string PanoramaVerticalSelect = Material.TwoTone.PanoramaVerticalSelect; - public const string PanoramaWideAngle = Material.TwoTone.PanoramaWideAngle; - public const string PanoramaWideAngleSelect = Material.TwoTone.PanoramaWideAngleSelect; - public const string Paragliding = Material.TwoTone.Paragliding; - public const string Park = Material.TwoTone.Park; - public const string PartyMode = Material.TwoTone.PartyMode; - public const string Password = Material.TwoTone.Password; - public const string Pattern = Material.TwoTone.Pattern; - public const string Pause = Material.TwoTone.Pause; - public const string PauseCircle = Material.TwoTone.PauseCircle; - public const string PauseCircleFilled = Material.TwoTone.PauseCircleFilled; - public const string PauseCircleOutline = Material.TwoTone.PauseCircleOutline; - public const string PausePresentation = Material.TwoTone.PausePresentation; - public const string Payment = Material.TwoTone.Payment; - public const string Payments = Material.TwoTone.Payments; - public const string PedalBike = Material.TwoTone.PedalBike; - public const string Pending = Material.TwoTone.Pending; - public const string PendingActions = Material.TwoTone.PendingActions; - public const string Pentagon = Material.TwoTone.Pentagon; - public const string People = Material.TwoTone.People; - public const string PeopleAlt = Material.TwoTone.PeopleAlt; - public const string PeopleOutline = Material.TwoTone.PeopleOutline; - public const string Percent = Material.TwoTone.Percent; - public const string PermCameraMic = Material.TwoTone.PermCameraMic; - public const string PermContactCalendar = Material.TwoTone.PermContactCalendar; - public const string PermDataSetting = Material.TwoTone.PermDataSetting; - public const string PermDeviceInformation = Material.TwoTone.PermDeviceInformation; - public const string PermIdentity = Material.TwoTone.PermIdentity; - public const string PermMedia = Material.TwoTone.PermMedia; - public const string PermPhoneMsg = Material.TwoTone.PermPhoneMsg; - public const string PermScanWifi = Material.TwoTone.PermScanWifi; - public const string Person = Material.TwoTone.Person; - public const string PersonAdd = Material.TwoTone.PersonAdd; - public const string PersonAddAlt = Material.TwoTone.PersonAddAlt; - public const string PersonAddAlt1 = Material.TwoTone.PersonAddAlt1; - public const string PersonAddDisabled = Material.TwoTone.PersonAddDisabled; - public const string PersonOff = Material.TwoTone.PersonOff; - public const string PersonOutline = Material.TwoTone.PersonOutline; - public const string PersonPin = Material.TwoTone.PersonPin; - public const string PersonPinCircle = Material.TwoTone.PersonPinCircle; - public const string PersonRemove = Material.TwoTone.PersonRemove; - public const string PersonRemoveAlt1 = Material.TwoTone.PersonRemoveAlt1; - public const string PersonSearch = Material.TwoTone.PersonSearch; - public const string PersonalInjury = Material.TwoTone.PersonalInjury; - public const string PersonalVideo = Material.TwoTone.PersonalVideo; - public const string PestControl = Material.TwoTone.PestControl; - public const string PestControlRodent = Material.TwoTone.PestControlRodent; - public const string Pets = Material.TwoTone.Pets; - public const string Phishing = Material.TwoTone.Phishing; - public const string Phone = Material.TwoTone.Phone; - public const string PhoneAndroid = Material.TwoTone.PhoneAndroid; - public const string PhoneBluetoothSpeaker = Material.TwoTone.PhoneBluetoothSpeaker; - public const string PhoneCallback = Material.TwoTone.PhoneCallback; - public const string PhoneDisabled = Material.TwoTone.PhoneDisabled; - public const string PhoneEnabled = Material.TwoTone.PhoneEnabled; - public const string PhoneForwarded = Material.TwoTone.PhoneForwarded; - public const string PhoneInTalk = Material.TwoTone.PhoneInTalk; - public const string PhoneIphone = Material.TwoTone.PhoneIphone; - public const string PhoneLocked = Material.TwoTone.PhoneLocked; - public const string PhoneMissed = Material.TwoTone.PhoneMissed; - public const string PhonePaused = Material.TwoTone.PhonePaused; - public const string Phonelink = Material.TwoTone.Phonelink; - public const string PhonelinkErase = Material.TwoTone.PhonelinkErase; - public const string PhonelinkLock = Material.TwoTone.PhonelinkLock; - public const string PhonelinkOff = Material.TwoTone.PhonelinkOff; - public const string PhonelinkRing = Material.TwoTone.PhonelinkRing; - public const string PhonelinkSetup = Material.TwoTone.PhonelinkSetup; - public const string Photo = Material.TwoTone.Photo; - public const string PhotoAlbum = Material.TwoTone.PhotoAlbum; - public const string PhotoCamera = Material.TwoTone.PhotoCamera; - public const string PhotoCameraBack = Material.TwoTone.PhotoCameraBack; - public const string PhotoCameraFront = Material.TwoTone.PhotoCameraFront; - public const string PhotoFilter = Material.TwoTone.PhotoFilter; - public const string PhotoLibrary = Material.TwoTone.PhotoLibrary; - public const string PhotoSizeSelectActual = Material.TwoTone.PhotoSizeSelectActual; - public const string PhotoSizeSelectLarge = Material.TwoTone.PhotoSizeSelectLarge; - public const string PhotoSizeSelectSmall = Material.TwoTone.PhotoSizeSelectSmall; - public const string Php = Material.TwoTone.Php; - public const string Piano = Material.TwoTone.Piano; - public const string PianoOff = Material.TwoTone.PianoOff; - public const string PictureAsPdf = Material.TwoTone.PictureAsPdf; - public const string PictureInPicture = Material.TwoTone.PictureInPicture; - public const string PictureInPictureAlt = Material.TwoTone.PictureInPictureAlt; - public const string PieChart = Material.TwoTone.PieChart; - public const string PieChartOutline = Material.TwoTone.PieChartOutline; - public const string Pin = Material.TwoTone.Pin; - public const string PinDrop = Material.TwoTone.PinDrop; - public const string PinEnd = Material.TwoTone.PinEnd; - public const string PinInvoke = Material.TwoTone.PinInvoke; - public const string Pinch = Material.TwoTone.Pinch; - public const string PivotTableChart = Material.TwoTone.PivotTableChart; - public const string Pix = Material.TwoTone.Pix; - public const string Place = Material.TwoTone.Place; - public const string Plagiarism = Material.TwoTone.Plagiarism; - public const string PlayArrow = Material.TwoTone.PlayArrow; - public const string PlayCircle = Material.TwoTone.PlayCircle; - public const string PlayCircleFilled = Material.TwoTone.PlayCircleFilled; - public const string PlayCircleOutline = Material.TwoTone.PlayCircleOutline; - public const string PlayDisabled = Material.TwoTone.PlayDisabled; - public const string PlayForWork = Material.TwoTone.PlayForWork; - public const string PlayLesson = Material.TwoTone.PlayLesson; - public const string PlaylistAdd = Material.TwoTone.PlaylistAdd; - public const string PlaylistAddCheck = Material.TwoTone.PlaylistAddCheck; - public const string PlaylistAddCheckCircle = Material.TwoTone.PlaylistAddCheckCircle; - public const string PlaylistAddCircle = Material.TwoTone.PlaylistAddCircle; - public const string PlaylistPlay = Material.TwoTone.PlaylistPlay; - public const string PlaylistRemove = Material.TwoTone.PlaylistRemove; - public const string Plumbing = Material.TwoTone.Plumbing; - public const string PlusOne = Material.TwoTone.PlusOne; - public const string Podcasts = Material.TwoTone.Podcasts; - public const string PointOfSale = Material.TwoTone.PointOfSale; - public const string Policy = Material.TwoTone.Policy; - public const string Poll = Material.TwoTone.Poll; - public const string Polyline = Material.TwoTone.Polyline; - public const string Polymer = Material.TwoTone.Polymer; - public const string Pool = Material.TwoTone.Pool; - public const string PortableWifiOff = Material.TwoTone.PortableWifiOff; - public const string Portrait = Material.TwoTone.Portrait; - public const string PostAdd = Material.TwoTone.PostAdd; - public const string Power = Material.TwoTone.Power; - public const string PowerInput = Material.TwoTone.PowerInput; - public const string PowerOff = Material.TwoTone.PowerOff; - public const string PowerSettingsNew = Material.TwoTone.PowerSettingsNew; - public const string PrecisionManufacturing = Material.TwoTone.PrecisionManufacturing; - public const string PregnantWoman = Material.TwoTone.PregnantWoman; - public const string PresentToAll = Material.TwoTone.PresentToAll; - public const string Preview = Material.TwoTone.Preview; - public const string PriceChange = Material.TwoTone.PriceChange; - public const string PriceCheck = Material.TwoTone.PriceCheck; - public const string Print = Material.TwoTone.Print; - public const string PrintDisabled = Material.TwoTone.PrintDisabled; - public const string PriorityHigh = Material.TwoTone.PriorityHigh; - public const string PrivacyTip = Material.TwoTone.PrivacyTip; - public const string PrivateConnectivity = Material.TwoTone.PrivateConnectivity; - public const string ProductionQuantityLimits = Material.TwoTone.ProductionQuantityLimits; - public const string Psychology = Material.TwoTone.Psychology; - public const string Public = Material.TwoTone.Public; - public const string PublicOff = Material.TwoTone.PublicOff; - public const string Publish = Material.TwoTone.Publish; - public const string PublishedWithChanges = Material.TwoTone.PublishedWithChanges; - public const string PunchClock = Material.TwoTone.PunchClock; - public const string PushPin = Material.TwoTone.PushPin; - public const string QrCode = Material.TwoTone.QrCode; - public const string QrCode2 = Material.TwoTone.QrCode2; - public const string QrCodeScanner = Material.TwoTone.QrCodeScanner; - public const string QueryBuilder = Material.TwoTone.QueryBuilder; - public const string QueryStats = Material.TwoTone.QueryStats; - public const string QuestionAnswer = Material.TwoTone.QuestionAnswer; - public const string QuestionMark = Material.TwoTone.QuestionMark; - public const string Queue = Material.TwoTone.Queue; - public const string QueueMusic = Material.TwoTone.QueueMusic; - public const string QueuePlayNext = Material.TwoTone.QueuePlayNext; - public const string Quickreply = Material.TwoTone.Quickreply; - public const string Quiz = Material.TwoTone.Quiz; - public const string RMobiledata = Material.TwoTone.RMobiledata; - public const string Radar = Material.TwoTone.Radar; - public const string Radio = Material.TwoTone.Radio; - public const string RadioButtonChecked = Material.TwoTone.RadioButtonChecked; - public const string RadioButtonUnchecked = Material.TwoTone.RadioButtonUnchecked; - public const string RailwayAlert = Material.TwoTone.RailwayAlert; - public const string RamenDining = Material.TwoTone.RamenDining; - public const string RampLeft = Material.TwoTone.RampLeft; - public const string RampRight = Material.TwoTone.RampRight; - public const string RateReview = Material.TwoTone.RateReview; - public const string RawOff = Material.TwoTone.RawOff; - public const string RawOn = Material.TwoTone.RawOn; - public const string ReadMore = Material.TwoTone.ReadMore; - public const string RealEstateAgent = Material.TwoTone.RealEstateAgent; - public const string Receipt = Material.TwoTone.Receipt; - public const string ReceiptLong = Material.TwoTone.ReceiptLong; - public const string RecentActors = Material.TwoTone.RecentActors; - public const string Recommend = Material.TwoTone.Recommend; - public const string RecordVoiceOver = Material.TwoTone.RecordVoiceOver; - public const string Rectangle = Material.TwoTone.Rectangle; - public const string Recycling = Material.TwoTone.Recycling; - public const string Redeem = Material.TwoTone.Redeem; - public const string Redo = Material.TwoTone.Redo; - public const string ReduceCapacity = Material.TwoTone.ReduceCapacity; - public const string Refresh = Material.TwoTone.Refresh; - public const string RememberMe = Material.TwoTone.RememberMe; - public const string Remove = Material.TwoTone.Remove; - public const string RemoveCircle = Material.TwoTone.RemoveCircle; - public const string RemoveCircleOutline = Material.TwoTone.RemoveCircleOutline; - public const string RemoveDone = Material.TwoTone.RemoveDone; - public const string RemoveFromQueue = Material.TwoTone.RemoveFromQueue; - public const string RemoveModerator = Material.TwoTone.RemoveModerator; - public const string RemoveRedEye = Material.TwoTone.RemoveRedEye; - public const string RemoveRoad = Material.TwoTone.RemoveRoad; - public const string RemoveShoppingCart = Material.TwoTone.RemoveShoppingCart; - public const string Reorder = Material.TwoTone.Reorder; - public const string Repeat = Material.TwoTone.Repeat; - public const string RepeatOn = Material.TwoTone.RepeatOn; - public const string RepeatOne = Material.TwoTone.RepeatOne; - public const string RepeatOneOn = Material.TwoTone.RepeatOneOn; - public const string Replay = Material.TwoTone.Replay; - public const string Replay10 = Material.TwoTone.Replay10; - public const string Replay30 = Material.TwoTone.Replay30; - public const string Replay5 = Material.TwoTone.Replay5; - public const string ReplayCircleFilled = Material.TwoTone.ReplayCircleFilled; - public const string Reply = Material.TwoTone.Reply; - public const string ReplyAll = Material.TwoTone.ReplyAll; - public const string Report = Material.TwoTone.Report; - public const string ReportGmailerrorred = Material.TwoTone.ReportGmailerrorred; - public const string ReportOff = Material.TwoTone.ReportOff; - public const string ReportProblem = Material.TwoTone.ReportProblem; - public const string RequestPage = Material.TwoTone.RequestPage; - public const string RequestQuote = Material.TwoTone.RequestQuote; - public const string ResetTv = Material.TwoTone.ResetTv; - public const string RestartAlt = Material.TwoTone.RestartAlt; - public const string Restaurant = Material.TwoTone.Restaurant; - public const string RestaurantMenu = Material.TwoTone.RestaurantMenu; - public const string Restore = Material.TwoTone.Restore; - public const string RestoreFromTrash = Material.TwoTone.RestoreFromTrash; - public const string RestorePage = Material.TwoTone.RestorePage; - public const string Reviews = Material.TwoTone.Reviews; - public const string RiceBowl = Material.TwoTone.RiceBowl; - public const string RingVolume = Material.TwoTone.RingVolume; - public const string Rocket = Material.TwoTone.Rocket; - public const string RocketLaunch = Material.TwoTone.RocketLaunch; - public const string RollerSkating = Material.TwoTone.RollerSkating; - public const string Roofing = Material.TwoTone.Roofing; - public const string Room = Material.TwoTone.Room; - public const string RoomPreferences = Material.TwoTone.RoomPreferences; - public const string RoomService = Material.TwoTone.RoomService; - public const string Rotate90DegreesCcw = Material.TwoTone.Rotate90DegreesCcw; - public const string Rotate90DegreesCw = Material.TwoTone.Rotate90DegreesCw; - public const string RotateLeft = Material.TwoTone.RotateLeft; - public const string RotateRight = Material.TwoTone.RotateRight; - public const string RoundaboutLeft = Material.TwoTone.RoundaboutLeft; - public const string RoundaboutRight = Material.TwoTone.RoundaboutRight; - public const string RoundedCorner = Material.TwoTone.RoundedCorner; - public const string Route = Material.TwoTone.Route; - public const string Router = Material.TwoTone.Router; - public const string Rowing = Material.TwoTone.Rowing; - public const string RssFeed = Material.TwoTone.RssFeed; - public const string Rsvp = Material.TwoTone.Rsvp; - public const string Rtt = Material.TwoTone.Rtt; - public const string Rule = Material.TwoTone.Rule; - public const string RuleFolder = Material.TwoTone.RuleFolder; - public const string RunCircle = Material.TwoTone.RunCircle; - public const string RunningWithErrors = Material.TwoTone.RunningWithErrors; - public const string RvHookup = Material.TwoTone.RvHookup; - public const string SafetyCheck = Material.TwoTone.SafetyCheck; - public const string SafetyDivider = Material.TwoTone.SafetyDivider; - public const string Sailing = Material.TwoTone.Sailing; - public const string Sanitizer = Material.TwoTone.Sanitizer; - public const string Satellite = Material.TwoTone.Satellite; - public const string SatelliteAlt = Material.TwoTone.SatelliteAlt; - public const string Save = Material.TwoTone.Save; - public const string SaveAlt = Material.TwoTone.SaveAlt; - public const string SaveAs = Material.TwoTone.SaveAs; - public const string SavedSearch = Material.TwoTone.SavedSearch; - public const string Savings = Material.TwoTone.Savings; - public const string Scale = Material.TwoTone.Scale; - public const string Scanner = Material.TwoTone.Scanner; - public const string ScatterPlot = Material.TwoTone.ScatterPlot; - public const string Schedule = Material.TwoTone.Schedule; - public const string ScheduleSend = Material.TwoTone.ScheduleSend; - public const string Schema = Material.TwoTone.Schema; - public const string School = Material.TwoTone.School; - public const string Science = Material.TwoTone.Science; - public const string Score = Material.TwoTone.Score; - public const string Scoreboard = Material.TwoTone.Scoreboard; - public const string ScreenLockLandscape = Material.TwoTone.ScreenLockLandscape; - public const string ScreenLockPortrait = Material.TwoTone.ScreenLockPortrait; - public const string ScreenLockRotation = Material.TwoTone.ScreenLockRotation; - public const string ScreenRotation = Material.TwoTone.ScreenRotation; - public const string ScreenRotationAlt = Material.TwoTone.ScreenRotationAlt; - public const string ScreenSearchDesktop = Material.TwoTone.ScreenSearchDesktop; - public const string ScreenShare = Material.TwoTone.ScreenShare; - public const string Screenshot = Material.TwoTone.Screenshot; - public const string ScubaDiving = Material.TwoTone.ScubaDiving; - public const string Sd = Material.TwoTone.Sd; - public const string SdCard = Material.TwoTone.SdCard; - public const string SdCardAlert = Material.TwoTone.SdCardAlert; - public const string SdStorage = Material.TwoTone.SdStorage; - public const string Search = Material.TwoTone.Search; - public const string SearchOff = Material.TwoTone.SearchOff; - public const string Security = Material.TwoTone.Security; - public const string SecurityUpdate = Material.TwoTone.SecurityUpdate; - public const string SecurityUpdateGood = Material.TwoTone.SecurityUpdateGood; - public const string SecurityUpdateWarning = Material.TwoTone.SecurityUpdateWarning; - public const string Segment = Material.TwoTone.Segment; - public const string SelectAll = Material.TwoTone.SelectAll; - public const string SelfImprovement = Material.TwoTone.SelfImprovement; - public const string Sell = Material.TwoTone.Sell; - public const string Send = Material.TwoTone.Send; - public const string SendAndArchive = Material.TwoTone.SendAndArchive; - public const string SendTimeExtension = Material.TwoTone.SendTimeExtension; - public const string SendToMobile = Material.TwoTone.SendToMobile; - public const string SensorDoor = Material.TwoTone.SensorDoor; - public const string SensorWindow = Material.TwoTone.SensorWindow; - public const string Sensors = Material.TwoTone.Sensors; - public const string SensorsOff = Material.TwoTone.SensorsOff; - public const string SentimentDissatisfied = Material.TwoTone.SentimentDissatisfied; - public const string SentimentNeutral = Material.TwoTone.SentimentNeutral; - public const string SentimentSatisfied = Material.TwoTone.SentimentSatisfied; - public const string SentimentSatisfiedAlt = Material.TwoTone.SentimentSatisfiedAlt; - public const string SentimentVeryDissatisfied = Material.TwoTone.SentimentVeryDissatisfied; - public const string SentimentVerySatisfied = Material.TwoTone.SentimentVerySatisfied; - public const string SetMeal = Material.TwoTone.SetMeal; - public const string Settings = Material.TwoTone.Settings; - public const string SettingsAccessibility = Material.TwoTone.SettingsAccessibility; - public const string SettingsApplications = Material.TwoTone.SettingsApplications; - public const string SettingsBackupRestore = Material.TwoTone.SettingsBackupRestore; - public const string SettingsBluetooth = Material.TwoTone.SettingsBluetooth; - public const string SettingsBrightness = Material.TwoTone.SettingsBrightness; - public const string SettingsCell = Material.TwoTone.SettingsCell; - public const string SettingsEthernet = Material.TwoTone.SettingsEthernet; - public const string SettingsInputAntenna = Material.TwoTone.SettingsInputAntenna; - public const string SettingsInputComponent = Material.TwoTone.SettingsInputComponent; - public const string SettingsInputComposite = Material.TwoTone.SettingsInputComposite; - public const string SettingsInputHdmi = Material.TwoTone.SettingsInputHdmi; - public const string SettingsInputSvideo = Material.TwoTone.SettingsInputSvideo; - public const string SettingsOverscan = Material.TwoTone.SettingsOverscan; - public const string SettingsPhone = Material.TwoTone.SettingsPhone; - public const string SettingsPower = Material.TwoTone.SettingsPower; - public const string SettingsRemote = Material.TwoTone.SettingsRemote; - public const string SettingsSuggest = Material.TwoTone.SettingsSuggest; - public const string SettingsSystemDaydream = Material.TwoTone.SettingsSystemDaydream; - public const string SettingsVoice = Material.TwoTone.SettingsVoice; - public const string SevereCold = Material.TwoTone.SevereCold; - public const string Share = Material.TwoTone.Share; - public const string ShareLocation = Material.TwoTone.ShareLocation; - public const string Shield = Material.TwoTone.Shield; - public const string ShieldMoon = Material.TwoTone.ShieldMoon; - public const string Shop = Material.TwoTone.Shop; - public const string Shop2 = Material.TwoTone.Shop2; - public const string ShopTwo = Material.TwoTone.ShopTwo; - public const string ShoppingBag = Material.TwoTone.ShoppingBag; - public const string ShoppingBasket = Material.TwoTone.ShoppingBasket; - public const string ShoppingCart = Material.TwoTone.ShoppingCart; - public const string ShoppingCartCheckout = Material.TwoTone.ShoppingCartCheckout; - public const string ShortText = Material.TwoTone.ShortText; - public const string Shortcut = Material.TwoTone.Shortcut; - public const string ShowChart = Material.TwoTone.ShowChart; - public const string Shower = Material.TwoTone.Shower; - public const string Shuffle = Material.TwoTone.Shuffle; - public const string ShuffleOn = Material.TwoTone.ShuffleOn; - public const string ShutterSpeed = Material.TwoTone.ShutterSpeed; - public const string Sick = Material.TwoTone.Sick; - public const string SignLanguage = Material.TwoTone.SignLanguage; - public const string SignalCellular0Bar = Material.TwoTone.SignalCellular0Bar; - public const string SignalCellular4Bar = Material.TwoTone.SignalCellular4Bar; - public const string SignalCellularAlt = Material.TwoTone.SignalCellularAlt; - public const string SignalCellularAlt1Bar = Material.TwoTone.SignalCellularAlt1Bar; - public const string SignalCellularAlt2Bar = Material.TwoTone.SignalCellularAlt2Bar; - - public const string SignalCellularConnectedNoInternet0Bar = - Material.TwoTone.SignalCellularConnectedNoInternet0Bar; - - public const string SignalCellularConnectedNoInternet4Bar = - Material.TwoTone.SignalCellularConnectedNoInternet4Bar; - - public const string SignalCellularNoSim = Material.TwoTone.SignalCellularNoSim; - public const string SignalCellularNodata = Material.TwoTone.SignalCellularNodata; - public const string SignalCellularNull = Material.TwoTone.SignalCellularNull; - public const string SignalCellularOff = Material.TwoTone.SignalCellularOff; - public const string SignalWifi0Bar = Material.TwoTone.SignalWifi0Bar; - public const string SignalWifi4Bar = Material.TwoTone.SignalWifi4Bar; - public const string SignalWifi4BarLock = Material.TwoTone.SignalWifi4BarLock; - public const string SignalWifiBad = Material.TwoTone.SignalWifiBad; - public const string SignalWifiConnectedNoInternet4 = Material.TwoTone.SignalWifiConnectedNoInternet4; - public const string SignalWifiOff = Material.TwoTone.SignalWifiOff; - public const string SignalWifiStatusbar4Bar = Material.TwoTone.SignalWifiStatusbar4Bar; - - public const string SignalWifiStatusbarConnectedNoInternet4 = - Material.TwoTone.SignalWifiStatusbarConnectedNoInternet4; - - public const string SignalWifiStatusbarNull = Material.TwoTone.SignalWifiStatusbarNull; - public const string Signpost = Material.TwoTone.Signpost; - public const string SimCard = Material.TwoTone.SimCard; - public const string SimCardAlert = Material.TwoTone.SimCardAlert; - public const string SimCardDownload = Material.TwoTone.SimCardDownload; - public const string SingleBed = Material.TwoTone.SingleBed; - public const string Sip = Material.TwoTone.Sip; - public const string Skateboarding = Material.TwoTone.Skateboarding; - public const string SkipNext = Material.TwoTone.SkipNext; - public const string SkipPrevious = Material.TwoTone.SkipPrevious; - public const string Sledding = Material.TwoTone.Sledding; - public const string Slideshow = Material.TwoTone.Slideshow; - public const string SlowMotionVideo = Material.TwoTone.SlowMotionVideo; - public const string SmartButton = Material.TwoTone.SmartButton; - public const string SmartDisplay = Material.TwoTone.SmartDisplay; - public const string SmartScreen = Material.TwoTone.SmartScreen; - public const string SmartToy = Material.TwoTone.SmartToy; - public const string Smartphone = Material.TwoTone.Smartphone; - public const string SmokeFree = Material.TwoTone.SmokeFree; - public const string SmokingRooms = Material.TwoTone.SmokingRooms; - public const string Sms = Material.TwoTone.Sms; - public const string SmsFailed = Material.TwoTone.SmsFailed; - public const string SnippetFolder = Material.TwoTone.SnippetFolder; - public const string Snooze = Material.TwoTone.Snooze; - public const string Snowboarding = Material.TwoTone.Snowboarding; - public const string Snowmobile = Material.TwoTone.Snowmobile; - public const string Snowshoeing = Material.TwoTone.Snowshoeing; - public const string Soap = Material.TwoTone.Soap; - public const string SocialDistance = Material.TwoTone.SocialDistance; - public const string Sort = Material.TwoTone.Sort; - public const string SortByAlpha = Material.TwoTone.SortByAlpha; - public const string Sos = Material.TwoTone.Sos; - public const string SoupKitchen = Material.TwoTone.SoupKitchen; - public const string Source = Material.TwoTone.Source; - public const string South = Material.TwoTone.South; - public const string SouthAmerica = Material.TwoTone.SouthAmerica; - public const string SouthEast = Material.TwoTone.SouthEast; - public const string SouthWest = Material.TwoTone.SouthWest; - public const string Spa = Material.TwoTone.Spa; - public const string SpaceBar = Material.TwoTone.SpaceBar; - public const string SpaceDashboard = Material.TwoTone.SpaceDashboard; - public const string SpatialAudio = Material.TwoTone.SpatialAudio; - public const string SpatialAudioOff = Material.TwoTone.SpatialAudioOff; - public const string SpatialTracking = Material.TwoTone.SpatialTracking; - public const string Speaker = Material.TwoTone.Speaker; - public const string SpeakerGroup = Material.TwoTone.SpeakerGroup; - public const string SpeakerNotes = Material.TwoTone.SpeakerNotes; - public const string SpeakerNotesOff = Material.TwoTone.SpeakerNotesOff; - public const string SpeakerPhone = Material.TwoTone.SpeakerPhone; - public const string Speed = Material.TwoTone.Speed; - public const string Spellcheck = Material.TwoTone.Spellcheck; - public const string Splitscreen = Material.TwoTone.Splitscreen; - public const string Spoke = Material.TwoTone.Spoke; - public const string Sports = Material.TwoTone.Sports; - public const string SportsBar = Material.TwoTone.SportsBar; - public const string SportsBaseball = Material.TwoTone.SportsBaseball; - public const string SportsBasketball = Material.TwoTone.SportsBasketball; - public const string SportsCricket = Material.TwoTone.SportsCricket; - public const string SportsEsports = Material.TwoTone.SportsEsports; - public const string SportsFootball = Material.TwoTone.SportsFootball; - public const string SportsGolf = Material.TwoTone.SportsGolf; - public const string SportsGymnastics = Material.TwoTone.SportsGymnastics; - public const string SportsHandball = Material.TwoTone.SportsHandball; - public const string SportsHockey = Material.TwoTone.SportsHockey; - public const string SportsKabaddi = Material.TwoTone.SportsKabaddi; - public const string SportsMartialArts = Material.TwoTone.SportsMartialArts; - public const string SportsMma = Material.TwoTone.SportsMma; - public const string SportsMotorsports = Material.TwoTone.SportsMotorsports; - public const string SportsRugby = Material.TwoTone.SportsRugby; - public const string SportsScore = Material.TwoTone.SportsScore; - public const string SportsSoccer = Material.TwoTone.SportsSoccer; - public const string SportsTennis = Material.TwoTone.SportsTennis; - public const string SportsVolleyball = Material.TwoTone.SportsVolleyball; - public const string Square = Material.TwoTone.Square; - public const string SquareFoot = Material.TwoTone.SquareFoot; - public const string SsidChart = Material.TwoTone.SsidChart; - public const string StackedBarChart = Material.TwoTone.StackedBarChart; - public const string StackedLineChart = Material.TwoTone.StackedLineChart; - public const string Stadium = Material.TwoTone.Stadium; - public const string Stairs = Material.TwoTone.Stairs; - public const string Star = Material.TwoTone.Star; - public const string StarBorder = Material.TwoTone.StarBorder; - public const string StarBorderPurple500 = Material.TwoTone.StarBorderPurple500; - public const string StarHalf = Material.TwoTone.StarHalf; - public const string StarOutline = Material.TwoTone.StarOutline; - public const string StarPurple500 = Material.TwoTone.StarPurple500; - public const string StarRate = Material.TwoTone.StarRate; - public const string Stars = Material.TwoTone.Stars; - public const string Start = Material.TwoTone.Start; - public const string StayCurrentLandscape = Material.TwoTone.StayCurrentLandscape; - public const string StayCurrentPortrait = Material.TwoTone.StayCurrentPortrait; - public const string StayPrimaryLandscape = Material.TwoTone.StayPrimaryLandscape; - public const string StayPrimaryPortrait = Material.TwoTone.StayPrimaryPortrait; - public const string StickyNote2 = Material.TwoTone.StickyNote2; - public const string Stop = Material.TwoTone.Stop; - public const string StopCircle = Material.TwoTone.StopCircle; - public const string StopScreenShare = Material.TwoTone.StopScreenShare; - public const string Storage = Material.TwoTone.Storage; - public const string Store = Material.TwoTone.Store; - public const string StoreMallDirectory = Material.TwoTone.StoreMallDirectory; - public const string Storefront = Material.TwoTone.Storefront; - public const string Storm = Material.TwoTone.Storm; - public const string Straight = Material.TwoTone.Straight; - public const string Straighten = Material.TwoTone.Straighten; - public const string Stream = Material.TwoTone.Stream; - public const string Streetview = Material.TwoTone.Streetview; - public const string StrikethroughS = Material.TwoTone.StrikethroughS; - public const string Stroller = Material.TwoTone.Stroller; - public const string Style = Material.TwoTone.Style; - public const string SubdirectoryArrowLeft = Material.TwoTone.SubdirectoryArrowLeft; - public const string SubdirectoryArrowRight = Material.TwoTone.SubdirectoryArrowRight; - public const string Subject = Material.TwoTone.Subject; - public const string Subscript = Material.TwoTone.Subscript; - public const string Subscriptions = Material.TwoTone.Subscriptions; - public const string Subtitles = Material.TwoTone.Subtitles; - public const string SubtitlesOff = Material.TwoTone.SubtitlesOff; - public const string Subway = Material.TwoTone.Subway; - public const string Summarize = Material.TwoTone.Summarize; - public const string Superscript = Material.TwoTone.Superscript; - public const string SupervisedUserCircle = Material.TwoTone.SupervisedUserCircle; - public const string SupervisorAccount = Material.TwoTone.SupervisorAccount; - public const string Support = Material.TwoTone.Support; - public const string SupportAgent = Material.TwoTone.SupportAgent; - public const string Surfing = Material.TwoTone.Surfing; - public const string SurroundSound = Material.TwoTone.SurroundSound; - public const string SwapCalls = Material.TwoTone.SwapCalls; - public const string SwapHoriz = Material.TwoTone.SwapHoriz; - public const string SwapHorizontalCircle = Material.TwoTone.SwapHorizontalCircle; - public const string SwapVert = Material.TwoTone.SwapVert; - public const string SwapVerticalCircle = Material.TwoTone.SwapVerticalCircle; - public const string Swipe = Material.TwoTone.Swipe; - public const string SwipeDown = Material.TwoTone.SwipeDown; - public const string SwipeDownAlt = Material.TwoTone.SwipeDownAlt; - public const string SwipeLeft = Material.TwoTone.SwipeLeft; - public const string SwipeLeftAlt = Material.TwoTone.SwipeLeftAlt; - public const string SwipeRight = Material.TwoTone.SwipeRight; - public const string SwipeRightAlt = Material.TwoTone.SwipeRightAlt; - public const string SwipeUp = Material.TwoTone.SwipeUp; - public const string SwipeUpAlt = Material.TwoTone.SwipeUpAlt; - public const string SwipeVertical = Material.TwoTone.SwipeVertical; - public const string SwitchAccessShortcut = Material.TwoTone.SwitchAccessShortcut; - public const string SwitchAccessShortcutAdd = Material.TwoTone.SwitchAccessShortcutAdd; - public const string SwitchAccount = Material.TwoTone.SwitchAccount; - public const string SwitchCamera = Material.TwoTone.SwitchCamera; - public const string SwitchLeft = Material.TwoTone.SwitchLeft; - public const string SwitchRight = Material.TwoTone.SwitchRight; - public const string SwitchVideo = Material.TwoTone.SwitchVideo; - public const string Synagogue = Material.TwoTone.Synagogue; - public const string Sync = Material.TwoTone.Sync; - public const string SyncAlt = Material.TwoTone.SyncAlt; - public const string SyncDisabled = Material.TwoTone.SyncDisabled; - public const string SyncLock = Material.TwoTone.SyncLock; - public const string SyncProblem = Material.TwoTone.SyncProblem; - public const string SystemSecurityUpdate = Material.TwoTone.SystemSecurityUpdate; - public const string SystemSecurityUpdateGood = Material.TwoTone.SystemSecurityUpdateGood; - public const string SystemSecurityUpdateWarning = Material.TwoTone.SystemSecurityUpdateWarning; - public const string SystemUpdate = Material.TwoTone.SystemUpdate; - public const string SystemUpdateAlt = Material.TwoTone.SystemUpdateAlt; - public const string Tab = Material.TwoTone.Tab; - public const string TabUnselected = Material.TwoTone.TabUnselected; - public const string TableBar = Material.TwoTone.TableBar; - public const string TableChart = Material.TwoTone.TableChart; - public const string TableRestaurant = Material.TwoTone.TableRestaurant; - public const string TableRows = Material.TwoTone.TableRows; - public const string TableView = Material.TwoTone.TableView; - public const string Tablet = Material.TwoTone.Tablet; - public const string TabletAndroid = Material.TwoTone.TabletAndroid; - public const string TabletMac = Material.TwoTone.TabletMac; - public const string Tag = Material.TwoTone.Tag; - public const string TagFaces = Material.TwoTone.TagFaces; - public const string TakeoutDining = Material.TwoTone.TakeoutDining; - public const string TapAndPlay = Material.TwoTone.TapAndPlay; - public const string Tapas = Material.TwoTone.Tapas; - public const string Task = Material.TwoTone.Task; - public const string TaskAlt = Material.TwoTone.TaskAlt; - public const string TaxiAlert = Material.TwoTone.TaxiAlert; - public const string TempleBuddhist = Material.TwoTone.TempleBuddhist; - public const string TempleHindu = Material.TwoTone.TempleHindu; - public const string Terminal = Material.TwoTone.Terminal; - public const string Terrain = Material.TwoTone.Terrain; - public const string TextDecrease = Material.TwoTone.TextDecrease; - public const string TextFields = Material.TwoTone.TextFields; - public const string TextFormat = Material.TwoTone.TextFormat; - public const string TextIncrease = Material.TwoTone.TextIncrease; - public const string TextRotateUp = Material.TwoTone.TextRotateUp; - public const string TextRotateVertical = Material.TwoTone.TextRotateVertical; - public const string TextRotationAngledown = Material.TwoTone.TextRotationAngledown; - public const string TextRotationAngleup = Material.TwoTone.TextRotationAngleup; - public const string TextRotationDown = Material.TwoTone.TextRotationDown; - public const string TextRotationNone = Material.TwoTone.TextRotationNone; - public const string TextSnippet = Material.TwoTone.TextSnippet; - public const string Textsms = Material.TwoTone.Textsms; - public const string Texture = Material.TwoTone.Texture; - public const string TheaterComedy = Material.TwoTone.TheaterComedy; - public const string Theaters = Material.TwoTone.Theaters; - public const string Thermostat = Material.TwoTone.Thermostat; - public const string ThermostatAuto = Material.TwoTone.ThermostatAuto; - public const string ThumbDown = Material.TwoTone.ThumbDown; - public const string ThumbDownAlt = Material.TwoTone.ThumbDownAlt; - public const string ThumbDownOffAlt = Material.TwoTone.ThumbDownOffAlt; - public const string ThumbUp = Material.TwoTone.ThumbUp; - public const string ThumbUpAlt = Material.TwoTone.ThumbUpAlt; - public const string ThumbUpOffAlt = Material.TwoTone.ThumbUpOffAlt; - public const string ThumbsUpDown = Material.TwoTone.ThumbsUpDown; - public const string Thunderstorm = Material.TwoTone.Thunderstorm; - public const string TimeToLeave = Material.TwoTone.TimeToLeave; - public const string Timelapse = Material.TwoTone.Timelapse; - public const string Timeline = Material.TwoTone.Timeline; - public const string Timer = Material.TwoTone.Timer; - public const string Timer10 = Material.TwoTone.Timer10; - public const string Timer10Select = Material.TwoTone.Timer10Select; - public const string Timer3 = Material.TwoTone.Timer3; - public const string Timer3Select = Material.TwoTone.Timer3Select; - public const string TimerOff = Material.TwoTone.TimerOff; - public const string TipsAndUpdates = Material.TwoTone.TipsAndUpdates; - public const string TireRepair = Material.TwoTone.TireRepair; - public const string Title = Material.TwoTone.Title; - public const string Toc = Material.TwoTone.Toc; - public const string Today = Material.TwoTone.Today; - public const string ToggleOff = Material.TwoTone.ToggleOff; - public const string ToggleOn = Material.TwoTone.ToggleOn; - public const string Token = Material.TwoTone.Token; - public const string Toll = Material.TwoTone.Toll; - public const string Tonality = Material.TwoTone.Tonality; - public const string Topic = Material.TwoTone.Topic; - public const string TouchApp = Material.TwoTone.TouchApp; - public const string Tour = Material.TwoTone.Tour; - public const string Toys = Material.TwoTone.Toys; - public const string TrackChanges = Material.TwoTone.TrackChanges; - public const string Traffic = Material.TwoTone.Traffic; - public const string Train = Material.TwoTone.Train; - public const string Tram = Material.TwoTone.Tram; - public const string TransferWithinAStation = Material.TwoTone.TransferWithinAStation; - public const string Transform = Material.TwoTone.Transform; - public const string Transgender = Material.TwoTone.Transgender; - public const string TransitEnterexit = Material.TwoTone.TransitEnterexit; - public const string Translate = Material.TwoTone.Translate; - public const string TravelExplore = Material.TwoTone.TravelExplore; - public const string TrendingDown = Material.TwoTone.TrendingDown; - public const string TrendingFlat = Material.TwoTone.TrendingFlat; - public const string TrendingUp = Material.TwoTone.TrendingUp; - public const string TripOrigin = Material.TwoTone.TripOrigin; - public const string Try = Material.TwoTone.Try; - public const string Tsunami = Material.TwoTone.Tsunami; - public const string Tty = Material.TwoTone.Tty; - public const string Tune = Material.TwoTone.Tune; - public const string Tungsten = Material.TwoTone.Tungsten; - public const string TurnLeft = Material.TwoTone.TurnLeft; - public const string TurnRight = Material.TwoTone.TurnRight; - public const string TurnSharpLeft = Material.TwoTone.TurnSharpLeft; - public const string TurnSharpRight = Material.TwoTone.TurnSharpRight; - public const string TurnSlightLeft = Material.TwoTone.TurnSlightLeft; - public const string TurnSlightRight = Material.TwoTone.TurnSlightRight; - public const string TurnedIn = Material.TwoTone.TurnedIn; - public const string TurnedInNot = Material.TwoTone.TurnedInNot; - public const string Tv = Material.TwoTone.Tv; - public const string TvOff = Material.TwoTone.TvOff; - public const string TwoWheeler = Material.TwoTone.TwoWheeler; - public const string UTurnLeft = Material.TwoTone.UTurnLeft; - public const string UTurnRight = Material.TwoTone.UTurnRight; - public const string Umbrella = Material.TwoTone.Umbrella; - public const string Unarchive = Material.TwoTone.Unarchive; - public const string Undo = Material.TwoTone.Undo; - public const string UnfoldLess = Material.TwoTone.UnfoldLess; - public const string UnfoldMore = Material.TwoTone.UnfoldMore; - public const string Unpublished = Material.TwoTone.Unpublished; - public const string Unsubscribe = Material.TwoTone.Unsubscribe; - public const string Upcoming = Material.TwoTone.Upcoming; - public const string Update = Material.TwoTone.Update; - public const string UpdateDisabled = Material.TwoTone.UpdateDisabled; - public const string Upgrade = Material.TwoTone.Upgrade; - public const string Upload = Material.TwoTone.Upload; - public const string UploadFile = Material.TwoTone.UploadFile; - public const string Usb = Material.TwoTone.Usb; - public const string UsbOff = Material.TwoTone.UsbOff; - public const string Vaccines = Material.TwoTone.Vaccines; - public const string VapeFree = Material.TwoTone.VapeFree; - public const string VapingRooms = Material.TwoTone.VapingRooms; - public const string Verified = Material.TwoTone.Verified; - public const string VerifiedUser = Material.TwoTone.VerifiedUser; - public const string VerticalAlignBottom = Material.TwoTone.VerticalAlignBottom; - public const string VerticalAlignCenter = Material.TwoTone.VerticalAlignCenter; - public const string VerticalAlignTop = Material.TwoTone.VerticalAlignTop; - public const string VerticalDistribute = Material.TwoTone.VerticalDistribute; - public const string VerticalSplit = Material.TwoTone.VerticalSplit; - public const string Vibration = Material.TwoTone.Vibration; - public const string VideoCall = Material.TwoTone.VideoCall; - public const string VideoCameraBack = Material.TwoTone.VideoCameraBack; - public const string VideoCameraFront = Material.TwoTone.VideoCameraFront; - public const string VideoFile = Material.TwoTone.VideoFile; - public const string VideoLabel = Material.TwoTone.VideoLabel; - public const string VideoLibrary = Material.TwoTone.VideoLibrary; - public const string VideoSettings = Material.TwoTone.VideoSettings; - public const string VideoStable = Material.TwoTone.VideoStable; - public const string Videocam = Material.TwoTone.Videocam; - public const string VideocamOff = Material.TwoTone.VideocamOff; - public const string VideogameAsset = Material.TwoTone.VideogameAsset; - public const string VideogameAssetOff = Material.TwoTone.VideogameAssetOff; - public const string ViewAgenda = Material.TwoTone.ViewAgenda; - public const string ViewArray = Material.TwoTone.ViewArray; - public const string ViewCarousel = Material.TwoTone.ViewCarousel; - public const string ViewColumn = Material.TwoTone.ViewColumn; - public const string ViewComfy = Material.TwoTone.ViewComfy; - public const string ViewComfyAlt = Material.TwoTone.ViewComfyAlt; - public const string ViewCompact = Material.TwoTone.ViewCompact; - public const string ViewCompactAlt = Material.TwoTone.ViewCompactAlt; - public const string ViewCozy = Material.TwoTone.ViewCozy; - public const string ViewDay = Material.TwoTone.ViewDay; - public const string ViewHeadline = Material.TwoTone.ViewHeadline; - public const string ViewInAr = Material.TwoTone.ViewInAr; - public const string ViewKanban = Material.TwoTone.ViewKanban; - public const string ViewList = Material.TwoTone.ViewList; - public const string ViewModule = Material.TwoTone.ViewModule; - public const string ViewQuilt = Material.TwoTone.ViewQuilt; - public const string ViewSidebar = Material.TwoTone.ViewSidebar; - public const string ViewStream = Material.TwoTone.ViewStream; - public const string ViewTimeline = Material.TwoTone.ViewTimeline; - public const string ViewWeek = Material.TwoTone.ViewWeek; - public const string Vignette = Material.TwoTone.Vignette; - public const string Villa = Material.TwoTone.Villa; - public const string Visibility = Material.TwoTone.Visibility; - public const string VisibilityOff = Material.TwoTone.VisibilityOff; - public const string VoiceChat = Material.TwoTone.VoiceChat; - public const string VoiceOverOff = Material.TwoTone.VoiceOverOff; - public const string Voicemail = Material.TwoTone.Voicemail; - public const string Volcano = Material.TwoTone.Volcano; - public const string VolumeDown = Material.TwoTone.VolumeDown; - public const string VolumeMute = Material.TwoTone.VolumeMute; - public const string VolumeOff = Material.TwoTone.VolumeOff; - public const string VolumeUp = Material.TwoTone.VolumeUp; - public const string VolunteerActivism = Material.TwoTone.VolunteerActivism; - public const string VpnKey = Material.TwoTone.VpnKey; - public const string VpnKeyOff = Material.TwoTone.VpnKeyOff; - public const string VpnLock = Material.TwoTone.VpnLock; - public const string Vrpano = Material.TwoTone.Vrpano; - public const string Wallpaper = Material.TwoTone.Wallpaper; - public const string Warehouse = Material.TwoTone.Warehouse; - public const string Warning = Material.TwoTone.Warning; - public const string WarningAmber = Material.TwoTone.WarningAmber; - public const string Wash = Material.TwoTone.Wash; - public const string Watch = Material.TwoTone.Watch; - public const string WatchLater = Material.TwoTone.WatchLater; - public const string WatchOff = Material.TwoTone.WatchOff; - public const string Water = Material.TwoTone.Water; - public const string WaterDamage = Material.TwoTone.WaterDamage; - public const string WaterDrop = Material.TwoTone.WaterDrop; - public const string WaterfallChart = Material.TwoTone.WaterfallChart; - public const string Waves = Material.TwoTone.Waves; - public const string WavingHand = Material.TwoTone.WavingHand; - public const string WbAuto = Material.TwoTone.WbAuto; - public const string WbCloudy = Material.TwoTone.WbCloudy; - public const string WbIncandescent = Material.TwoTone.WbIncandescent; - public const string WbIridescent = Material.TwoTone.WbIridescent; - public const string WbShade = Material.TwoTone.WbShade; - public const string WbSunny = Material.TwoTone.WbSunny; - public const string WbTwilight = Material.TwoTone.WbTwilight; - public const string Wc = Material.TwoTone.Wc; - public const string Web = Material.TwoTone.Web; - public const string WebAsset = Material.TwoTone.WebAsset; - public const string WebAssetOff = Material.TwoTone.WebAssetOff; - public const string Webhook = Material.TwoTone.Webhook; - public const string Weekend = Material.TwoTone.Weekend; - public const string West = Material.TwoTone.West; - public const string Whatsapp = Material.TwoTone.Whatsapp; - public const string Whatshot = Material.TwoTone.Whatshot; - public const string WheelchairPickup = Material.TwoTone.WheelchairPickup; - public const string WhereToVote = Material.TwoTone.WhereToVote; - public const string Widgets = Material.TwoTone.Widgets; - public const string Wifi = Material.TwoTone.Wifi; - public const string Wifi1Bar = Material.TwoTone.Wifi1Bar; - public const string Wifi2Bar = Material.TwoTone.Wifi2Bar; - public const string WifiCalling = Material.TwoTone.WifiCalling; - public const string WifiCalling3 = Material.TwoTone.WifiCalling3; - public const string WifiChannel = Material.TwoTone.WifiChannel; - public const string WifiFind = Material.TwoTone.WifiFind; - public const string WifiLock = Material.TwoTone.WifiLock; - public const string WifiOff = Material.TwoTone.WifiOff; - public const string WifiPassword = Material.TwoTone.WifiPassword; - public const string WifiProtectedSetup = Material.TwoTone.WifiProtectedSetup; - public const string WifiTethering = Material.TwoTone.WifiTethering; - public const string WifiTetheringError = Material.TwoTone.WifiTetheringError; - public const string WifiTetheringOff = Material.TwoTone.WifiTetheringOff; - public const string Window = Material.TwoTone.Window; - public const string WineBar = Material.TwoTone.WineBar; - public const string Woman = Material.TwoTone.Woman; - public const string Work = Material.TwoTone.Work; - public const string WorkOff = Material.TwoTone.WorkOff; - public const string WorkOutline = Material.TwoTone.WorkOutline; - public const string WorkspacePremium = Material.TwoTone.WorkspacePremium; - public const string Workspaces = Material.TwoTone.Workspaces; - public const string WrapText = Material.TwoTone.WrapText; - public const string WrongLocation = Material.TwoTone.WrongLocation; - public const string Wysiwyg = Material.TwoTone.Wysiwyg; - public const string Yard = Material.TwoTone.Yard; - public const string YoutubeSearchedFor = Material.TwoTone.YoutubeSearchedFor; - public const string ZoomIn = Material.TwoTone.ZoomIn; - public const string ZoomInMap = Material.TwoTone.ZoomInMap; - public const string ZoomOut = Material.TwoTone.ZoomOut; - public const string ZoomOutMap = Material.TwoTone.ZoomOutMap; - } - } -} diff --git a/src/Connected.Components/Icons/Obsolete/_Obsolete.cs b/src/Connected.Components/Icons/Obsolete/_Obsolete.cs deleted file mode 100644 index 9fda7a0..0000000 --- a/src/Connected.Components/Icons/Obsolete/_Obsolete.cs +++ /dev/null @@ -1,196 +0,0 @@ -using System; - -namespace Connected -{ - // These icons have been removed from the Google Material Design Icons set either - // due to typo corrections, improved consistency in naming or simply because they - // have been retired. They may be removed in a future version of MudBlazor so - // it is strongly recommended to remove or update any references to them. - public partial class Icons - { - public partial class Filled - { - [Obsolete("Removed from Material Design Icons.", true)] - public const string AmpStories = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string Eco = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string BlockFlipped = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string OutgoingMail = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string HomeFilled = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string AssistantNavigation = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string LocationPin = ""; - - [Obsolete("Removed from Material Design Icons. Replace with `Outbound` icon.", true)] - public string Outbond => Outbound; - - [Obsolete("Removed from Material Design Icons. Replace with `Workspaces` icon.", true)] - public string WorkspacesFilled => Workspaces; - - [Obsolete("Removed from Material Design Icons. Replace with `FilterAlt` icon.", true)] - public string FilterListAlt => FilterAlt; - - [Obsolete("Removed from Material Design Icons. Replace with `AddIcCall` icon.", true)] - public string AddCall => AddIcCall; - - [Obsolete("Removed from Material Design Icons. Replace with `WbTwilight` icon.", true)] - public string WbTwighlight => WbTwilight; - - [Obsolete("Removed from Material Design Icons. Replace with `PieChartOutline` icon.", true)] - public string PieChartOutlined => PieChartOutline; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lock` icon.", true)] - public string LockOutlined => Outlined.Lock; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Info` icon.", true)] - public string InfoOutlined => Outlined.Info; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Label` icon.", true)] - public string LabelOutline => Outlined.Label; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.LabelImportant` icon.", true)] - public string LabelImportantOutline => Outlined.LabelImportant; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lightbulb` icon.", true)] - public string LightbulbOutline => Outlined.Lightbulb; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Workspaces` icon.", true)] - public string WorkspacesOutline => Outlined.Workspaces; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.DriveFileMove` icon.", true)] - public string DriveFileMoveOutline => Outlined.DriveFileMove; - - [Obsolete("Removed from Material Design Icons. Replace with `NoMeals` icon.", true)] - public string NoMealsOuline => NoMeals; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Filled.Flag` icon.", false)] - public string EmojiFlags => Filled.Flag; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Custom.Brands.Facebook` icon.", false)] - public string Facebook => Custom.Brands.Facebook; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Filled.Lock` icon.", false)] - public string LockOutline => Filled.Lock; - } - - public partial class Outlined - { - [Obsolete("Removed from Material Design Icons.", true)] - public const string AmpStories = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string Eco = ""; - - [Obsolete("Removed from Material Design Icons. Replace with `Face` icon.", true)] - public string FaceUnlock => Face; - - [Obsolete("Removed from Material Design Icons. Replace with `Outbound` icon.", true)] - public string Outbond => Outbound; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lock` icon.", true)] - public string LockOutlined => Outlined.Lock; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Info` icon.", true)] - public string InfoOutlined => Outlined.Info; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Label` icon.", true)] - public string LabelOutline => Outlined.Label; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.LabelImportant` icon.", true)] - public string LabelImportantOutline => Outlined.LabelImportant; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lightbulb` icon.", true)] - public string LightbulbOutline => Outlined.Lightbulb; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Flag` icon.", false)] - public string EmojiFlags => Outlined.Flag; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Custom.Brands.Facebook` icon.", false)] - public string Facebook => Custom.Brands.Facebook; - } - - public partial class Rounded - { - [Obsolete("Removed from Material Design Icons.", true)] - public const string AmpStories = ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string Eco = ""; - - [Obsolete("Removed from Material Design Icons. Replace with `Face` icon.", true)] - public string FaceUnlock => Face; - - [Obsolete("Removed from Material Design Icons. Replace with `Outbound` icon.", true)] - public string Outbond => Outbound; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lock` icon.", true)] - public string LockOutlined => Outlined.Lock; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Info` icon.", true)] - public string InfoOutlined => Outlined.Info; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Label` icon.", true)] - public string LabelOutline => Outlined.Label; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.LabelImportant` icon.", true)] - public string LabelImportantOutline => Outlined.LabelImportant; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lightbulb` icon.", true)] - public string LightbulbOutline => Outlined.Lightbulb; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Rounded.Flag` icon.", false)] - public string EmojiFlags => Rounded.Flag; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Custom.Brands.Facebook` icon.", false)] - public string Facebook => Custom.Brands.Facebook; - } - - public partial class Sharp - { - [Obsolete("Removed from Material Design Icons.", true)] - public const string AmpStories = - ""; - - [Obsolete("Removed from Material Design Icons.", true)] - public const string Eco = - ""; - - [Obsolete("Removed from Material Design Icons. Replace with `Face` icon.", true)] - public string FaceUnlock => Face; - - [Obsolete("Removed from Material Design Icons. Replace with `Outbound` icon.", true)] - public string Outbond => Outbound; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lock` icon.", true)] - public string LockOutlined => Outlined.Lock; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Info` icon.", true)] - public string InfoOutlined => Outlined.Info; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Label` icon.", true)] - public string LabelOutline => Outlined.Label; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.LabelImportant` icon.", true)] - public string LabelImportantOutline => Outlined.LabelImportant; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Outlined.Lightbulb` icon.", true)] - public string LightbulbOutline => Outlined.Lightbulb; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Sharp.Flag` icon.", false)] - public string EmojiFlags => Sharp.Flag; - - [Obsolete("Removed from Material Design Icons. Replace with `Icons.Custom.Brands.Facebook` icon.", false)] - public string Facebook => Custom.Brands.Facebook; - } - } -} diff --git a/src/Connected.Components/Icons/Material/Outlined.cs b/src/Connected.Components/Icons/Outlined.cs similarity index 100% rename from src/Connected.Components/Icons/Material/Outlined.cs rename to src/Connected.Components/Icons/Outlined.cs diff --git a/src/Connected.Components/Icons/Material/Rounded.cs b/src/Connected.Components/Icons/Rounded.cs similarity index 100% rename from src/Connected.Components/Icons/Material/Rounded.cs rename to src/Connected.Components/Icons/Rounded.cs diff --git a/src/Connected.Components/Icons/Material/Sharp.cs b/src/Connected.Components/Icons/Sharp.cs similarity index 100% rename from src/Connected.Components/Icons/Material/Sharp.cs rename to src/Connected.Components/Icons/Sharp.cs diff --git a/src/Connected.Components/Icons/Material/TwoTone.cs b/src/Connected.Components/Icons/TwoTone.cs similarity index 100% rename from src/Connected.Components/Icons/Material/TwoTone.cs rename to src/Connected.Components/Icons/TwoTone.cs diff --git a/src/Connected.Components/Interop/BoundingClientRect.cs b/src/Connected.Components/Interop/BoundingClientRect.cs deleted file mode 100644 index 4cd74aa..0000000 --- a/src/Connected.Components/Interop/BoundingClientRect.cs +++ /dev/null @@ -1,84 +0,0 @@ -namespace Connected.Interop -{ - public class BoundingClientRect - { - public double Top { get; set; } - public double Left { get; set; } - - public double Width { get; set; } - public double Height { get; set; } - - /// - /// height of the viewport - /// - public double WindowHeight { get; set; } - - /// - /// width of the viewport - /// - public double WindowWidth { get; set; } - - /// - /// the horizontal offset since the left of the page - /// - public double ScrollX { get; set; } - - /// - /// the vertical offset since the top of the page - /// - public double ScrollY { get; set; } - - // computed properties, read only - public double X => Left; - public double Y => Top; - public double Bottom => Top + Height; - public double Right => Left + Width; - - public double AbsoluteLeft => Left + ScrollX; - - public double AbsoluteTop => Top + ScrollY; - - public double AbsoluteRight => Right + ScrollX; - - public double AbsoluteBottom => Bottom + ScrollY; - - //check if the rect is outside of the viewport - public bool IsOutsideBottom => Bottom > WindowHeight; - - public bool IsOutsideLeft => Left < 0; - - public bool IsOutsideTop => Top < 0; - - public bool IsOutsideRight => Right > WindowWidth; - - public BoundingClientRect Clone() - { - return new BoundingClientRect - { - Left = Left, - Top = Top, - Width = Width, - Height = Height, - WindowHeight = WindowHeight, - WindowWidth = WindowWidth, - ScrollX = ScrollX, - ScrollY = ScrollY - }; - } - } - public static class BoundingClientRectExtensions - { - public static bool IsEqualTo(this BoundingClientRect sourceRect, BoundingClientRect targetRect) - { - if (sourceRect is null || targetRect is null) return false; - return sourceRect.Top == targetRect.Top - && sourceRect.Left == targetRect.Left - && sourceRect.Width == targetRect.Width - && sourceRect.Height == targetRect.Height - && sourceRect.WindowHeight == targetRect.WindowHeight - && sourceRect.WindowWidth == targetRect.WindowWidth - && sourceRect.ScrollX == targetRect.ScrollX - && sourceRect.ScrollY == targetRect.ScrollY; - } - } -} diff --git a/src/Connected.Components/Interop/EventHandlers.cs b/src/Connected.Components/Interop/EventHandlers.cs deleted file mode 100644 index 6d7ac4f..0000000 --- a/src/Connected.Components/Interop/EventHandlers.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected -{ - // used in MudCollapse - [EventHandler("onanimationend", typeof(EventArgs), enableStopPropagation: true, enablePreventDefault: false)] -#if !NET7_0_OR_GREATER - [EventHandler("onmouseenter", typeof(MouseEventArgs), enableStopPropagation: true, enablePreventDefault: true)] - [EventHandler("onmouseleave", typeof(MouseEventArgs), enableStopPropagation: true, enablePreventDefault: true)] -#endif - public static class EventHandlers - { - - } - -} diff --git a/src/Connected.Components/Services/BrowserWindowSizeProvider.cs b/src/Connected.Components/Services/BrowserWindowSizeProvider.cs deleted file mode 100644 index 1662261..0000000 --- a/src/Connected.Components/Services/BrowserWindowSizeProvider.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Connected.Services; -using Microsoft.JSInterop; - -namespace Connected; - -public interface IBrowserWindowSizeProvider -{ - ValueTask GetBrowserWindowSize(); -} - -/// -/// This provider calls the JS method resizeListener.getBrowserWindowSize to get the browser window size -/// -public class BrowserWindowSizeProvider : IBrowserWindowSizeProvider -{ - private readonly IJSRuntime _jsRuntime; - - /// - /// - /// - /// - public BrowserWindowSizeProvider(IJSRuntime jsRuntime) - { - this._jsRuntime = jsRuntime; - } - - /// - /// Get the current BrowserWindowSize, this includes the Height and Width of the document. - /// - /// - public ValueTask GetBrowserWindowSize() => -_jsRuntime.InvokeAsync($"mudResizeListener.getBrowserWindowSize"); -} diff --git a/src/Connected.Components/Services/DialogResult.cs b/src/Connected.Components/Services/DialogResult.cs deleted file mode 100644 index 5065328..0000000 --- a/src/Connected.Components/Services/DialogResult.cs +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) 2020 Jonny Larsson -// License: MIT -// See https://github.com/MudBlazor/MudBlazor -// Modified version of Blazored Modal -// Copyright (c) 2019 Blazored -// License: MIT -// See https://github.com/Blazored - -using System; - -namespace Connected -{ - public class DialogResult - { - public object Data { get; } - public Type DataType { get; } - public bool Cancelled { get; } - - protected internal DialogResult(object data, Type resultType, bool cancelled) - { - Data = data; - DataType = resultType; - Cancelled = cancelled; - } - - public static DialogResult Ok(T result) => Ok(result, default); - - public static DialogResult Ok(T result, Type dialogType) => new(result, dialogType, false); - - public static DialogResult Cancel() => new(default, typeof(object), true); - } -} diff --git a/src/Connected.Components/Services/DialogService.cs b/src/Connected.Components/Services/DialogService.cs deleted file mode 100644 index 8f6f06d..0000000 --- a/src/Connected.Components/Services/DialogService.cs +++ /dev/null @@ -1,258 +0,0 @@ -// Copyright (c) 2019 Blazored (https://github.com/Blazored) -// Copyright (c) 2020 Jonny Larsson (https://github.com/MudBlazor/MudBlazor) -// Copyright (c) 2021 improvements by Meinrad Recheis -// See https://github.com/Blazored -// License: MIT - -using System.Diagnostics.CodeAnalysis; -using Connected.Components; -using Microsoft.AspNetCore.Components; - -namespace Connected -{ - public class DialogService : IDialogService - { - /// - /// This internal wrapper components prevents overwriting parameters of once - /// instanciated dialog instances - /// - private class DialogHelperComponent : IComponent - { - const string ChildContent = nameof(ChildContent); - RenderFragment _renderFragment; - RenderHandle _renderHandle; - void IComponent.Attach(RenderHandle renderHandle) => _renderHandle = renderHandle; - Task IComponent.SetParametersAsync(ParameterView parameters) - { - if (_renderFragment == null) - { - if (parameters.TryGetValue(ChildContent, out _renderFragment)) - { - _renderHandle.Render(_renderFragment); - } - } - return Task.CompletedTask; - } - public static RenderFragment Wrap(RenderFragment renderFragment) - => new RenderFragment(builder => - { - builder.OpenComponent(1); - builder.AddAttribute(2, ChildContent, renderFragment); - builder.CloseComponent(); - }); - } - - public event Action OnDialogInstanceAdded; - public event Action OnDialogCloseRequested; - - public IDialogReference Show<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>() where T : ComponentBase - { - return Show(string.Empty, new DialogParameters(), new DialogOptions()); - } - - public IDialogReference Show<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(string title) where T : ComponentBase - { - return Show(title, new DialogParameters(), new DialogOptions()); - } - - public IDialogReference Show<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(string title, DialogOptions options) where T : ComponentBase - { - return Show(title, new DialogParameters(), options); - } - - public IDialogReference Show<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(string title, DialogParameters parameters) where T : ComponentBase - { - return Show(title, parameters, new DialogOptions()); - } - - public IDialogReference Show<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(string title, DialogParameters parameters, DialogOptions options) where T : ComponentBase - { - return Show(typeof(T), title, parameters, options); - } - - public IDialogReference Show([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type contentComponent) - { - return Show(contentComponent, string.Empty, new DialogParameters(), new DialogOptions()); - } - - public IDialogReference Show([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type contentComponent, string title) - { - return Show(contentComponent, title, new DialogParameters(), new DialogOptions()); - } - - public IDialogReference Show([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type contentComponent, string title, DialogOptions options) - { - return Show(contentComponent, title, new DialogParameters(), options); - } - - public IDialogReference Show([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type contentComponent, string title, DialogParameters parameters) - { - return Show(contentComponent, title, parameters, new DialogOptions()); - } - - public IDialogReference Show([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type contentComponent, string title, DialogParameters parameters, DialogOptions options) - { - if (!typeof(ComponentBase).IsAssignableFrom(contentComponent)) - { - throw new ArgumentException($"{contentComponent?.FullName} must be a Blazor Component"); - } - var dialogReference = CreateReference(); - - var dialogContent = DialogHelperComponent.Wrap(new RenderFragment(builder => - { - var i = 0; - builder.OpenComponent(i++, contentComponent); - foreach (var parameter in parameters) - { - builder.AddAttribute(i++, parameter.Key, parameter.Value); - } - builder.AddComponentReferenceCapture(i++, inst => { dialogReference.InjectDialog(inst); }); - builder.CloseComponent(); - })); - var dialogInstance = new RenderFragment(builder => - { - builder.OpenComponent(0); - builder.SetKey(dialogReference.Id); - builder.AddAttribute(1, "Options", options); - builder.AddAttribute(2, "Title", title); - builder.AddAttribute(3, "Content", dialogContent); - builder.AddAttribute(4, "Id", dialogReference.Id); - builder.CloseComponent(); - }); - dialogReference.InjectRenderFragment(dialogInstance); - OnDialogInstanceAdded?.Invoke(dialogReference); - - return dialogReference; - } - - public Task ShowAsync<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>() where T : ComponentBase - { - return ShowAsync(string.Empty, new DialogParameters(), new DialogOptions()); - } - - public Task ShowAsync<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(string title) where T : ComponentBase - { - return ShowAsync(title, new DialogParameters(), new DialogOptions()); - } - - public Task ShowAsync<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(string title, DialogOptions options) where T : ComponentBase - { - return ShowAsync(title, new DialogParameters(), options); - } - - public Task ShowAsync<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(string title, DialogParameters parameters) where T : ComponentBase - { - return ShowAsync(title, parameters, new DialogOptions()); - } - - public Task ShowAsync<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(string title, DialogParameters parameters, DialogOptions options) where T : ComponentBase - { - return ShowAsync(typeof(T), title, parameters, options); - } - - public Task ShowAsync([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type contentComponent) - { - return ShowAsync(contentComponent, string.Empty, new DialogParameters(), new DialogOptions()); - } - - public Task ShowAsync([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type contentComponent, string title) - { - return ShowAsync(contentComponent, title, new DialogParameters(), new DialogOptions()); - } - - public Task ShowAsync([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type contentComponent, string title, DialogOptions options) - { - return ShowAsync(contentComponent, title, new DialogParameters(), options); - } - - public Task ShowAsync([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type contentComponent, string title, DialogParameters parameters) - { - return ShowAsync(contentComponent, title, parameters, new DialogOptions()); - } - - public async Task ShowAsync([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type contentComponent, string title, DialogParameters parameters, DialogOptions options) - { - var dialogReference = Show(contentComponent, title, parameters, options); - - //Do not wait forever, what if render fails because of some internal exception and we will never release the method. - var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(5)); - var token = cancellationTokenSource.Token; - await using (token.Register(() => dialogReference.RenderCompleteTaskCompletionSource.TrySetResult(false))) - { - await dialogReference.RenderCompleteTaskCompletionSource.Task; - - return dialogReference; - } - } - - public Task ShowMessageBox(string title, string message, string yesText = "OK", - string noText = null, string cancelText = null, DialogOptions options = null) - { - return this.ShowMessageBox(new MessageBoxOptions - { - Title = title, - Message = message, - YesText = yesText, - NoText = noText, - CancelText = cancelText, - }, options); - } - - public Task ShowMessageBox(string title, MarkupString markupMessage, string yesText = "OK", - string noText = null, string cancelText = null, DialogOptions options = null) - { - return this.ShowMessageBox(new MessageBoxOptions - { - Title = title, - MarkupMessage = markupMessage, - YesText = yesText, - NoText = noText, - CancelText = cancelText, - }, options); - } - - public async Task ShowMessageBox(MessageBoxOptions messageBoxOptions, DialogOptions options = null) - { - var parameters = new DialogParameters() - { - [nameof(MessageBoxOptions.Title)] = messageBoxOptions.Title, - [nameof(MessageBoxOptions.Message)] = messageBoxOptions.Message, - [nameof(MessageBoxOptions.MarkupMessage)] = messageBoxOptions.MarkupMessage, - [nameof(MessageBoxOptions.CancelText)] = messageBoxOptions.CancelText, - [nameof(MessageBoxOptions.NoText)] = messageBoxOptions.NoText, - [nameof(MessageBoxOptions.YesText)] = messageBoxOptions.YesText, - }; - var reference = await ShowAsync(parameters: parameters, options: options, title: messageBoxOptions.Title); - var result = await reference.Result; - if (result.Cancelled || result.Data is not bool data) - return null; - return data; - } - - public void Close(DialogReference dialog) - { - Close(dialog, DialogResult.Ok(null)); - } - - public virtual void Close(DialogReference dialog, DialogResult result) - { - OnDialogCloseRequested?.Invoke(dialog, result); - } - - public virtual IDialogReference CreateReference() - { - return new DialogReference(Guid.NewGuid(), this); - } - } - - [ExcludeFromCodeCoverage] - public class MessageBoxOptions - { - public string Title { get; set; } - public string Message { get; set; } - public MarkupString MarkupMessage { get; set; } - public string YesText { get; set; } = "OK"; - public string NoText { get; set; } - public string CancelText { get; set; } - } -} diff --git a/src/Connected.Components/Services/EventManager/EventManager.cs b/src/Connected.Components/Services/EventManager/EventManager.cs deleted file mode 100644 index 507c4c5..0000000 --- a/src/Connected.Components/Services/EventManager/EventManager.cs +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Text.Json; -using System.Threading.Tasks; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.JSInterop; - -namespace Connected -{ - public interface IEventListenerFactory - { - IEventListener Create(); - } - - public class EventListenerFactory : IEventListenerFactory - { - private readonly IServiceProvider _provider; - - public EventListenerFactory(IServiceProvider provider) - { - _provider = provider; - } - - public IEventListener Create() => - new EventListener(_provider.GetRequiredService()); - } - - public interface IEventListener : IAsyncDisposable - { - /// - /// Listing to a javascript event - /// - /// The type of the event args for instance MouseEventArgs for mousemove - /// Name of the DOM event without "on" - /// The value of the id field of the DOM element - /// The name of a JS function (relative to window) that used to project the event before it is send back to .NET. Can be null, if no projection is needed - /// The delay between the last time the event occurred and the callback is fired. Set to zero, if no delay is requested - /// The method that is invoked, if the DOM element is fired. Object will be of type T - /// A unique identifier for the event subscription. Should be used to cancel the subscription - Task Subscribe<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] T>(string eventName, string elementId, string projectionName, int throotleInterval, Func callback); - - /// - /// Listing to a javascript event on the document itself - /// - /// The type of the event args for instance MouseEventArgs for mousemove - /// Name of the DOM event without "on" - /// The delay between the last time the event occurred and the callback is fired. Set to zero, if no delay is requested - /// The method that is invoked, if the DOM element is fired. Object will be of type T - /// A unique identifier for the event subscription. Should be used to cancel the subscription - Task SubscribeGlobal<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] T>(string eventName, int throotleInterval, Func callback); - - /// - /// Cancel (unsubscribe) the listening to a DOM event, previous connected by Subscribe - /// - /// The unique event identifier - /// true for if the event listener was detached, false if not - Task Unsubscribe(Guid key); - } - - public class EventListener : IEventListener, IAsyncDisposable, IDisposable - { - private readonly IJSRuntime _jsRuntime; - private readonly DotNetObjectReference _dotNetRef; - private bool _disposed = false; - - private Dictionary callback)> _callbackResolver = new(); - - [DynamicDependency(nameof(OnEventOccur))] - public EventListener(IJSRuntime runtime) - { - _jsRuntime = runtime; - _dotNetRef = DotNetObjectReference.Create(this); - } - - [JSInvokable] - public async Task OnEventOccur(Guid key, string @eventData) - { - if (_callbackResolver.ContainsKey(key) == false) { return; } - - var element = _callbackResolver[key]; - - var @event = JsonSerializer.Deserialize(eventData, element.eventType, new WebEventJsonContext(new JsonSerializerOptions - { - PropertyNamingPolicy = JsonNamingPolicy.CamelCase, - PropertyNameCaseInsensitive = true, - })); - - if (element.callback != null) - { - await element.callback.Invoke(@event); - } - } - - public async Task Subscribe<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] T>(string eventName, string elementId, string projectionName, int throotleInterval, Func callback) - { - var (type, properties) = GetTypeInformation(); - var key = RegisterCallBack(type, callback); - - await _jsRuntime.InvokeVoidAsyncWithErrorHandling("mudThrottledEventManager.subscribe", eventName, elementId, projectionName, throotleInterval, key, properties, _dotNetRef); - - return key; - } - - public async Task SubscribeGlobal<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] T>(string eventName, int throotleInterval, Func callback) - { - var (type, properties) = GetTypeInformation(); - var key = RegisterCallBack(type, callback); - - await _jsRuntime.InvokeVoidAsyncWithErrorHandling("mudThrottledEventManager.subscribeGlobal", eventName, throotleInterval, key, properties, _dotNetRef); - - return key; - } - - public async Task Unsubscribe(Guid key) - { - if (_callbackResolver.ContainsKey(key) == false) { return false; } - - try - { - await _jsRuntime.InvokeVoidAsyncWithErrorHandling("mudThrottledEventManager.unsubscribe", key); - return true; - } - catch (Exception) - { - return false; - } - } - - private (Type Type, string[] Properties) GetTypeInformation<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] T>() - { - var type = typeof(T); - var properties = type.GetProperties().Select(x => char.ToLower(x.Name[0]) + x.Name.Substring(1)).ToArray(); - - return (type, properties); - } - - private Guid RegisterCallBack(Type type, Func callback) - { - var key = Guid.NewGuid(); - _callbackResolver.Add(key, (type, callback)); - - return key; - } - - #region disposing - - public async ValueTask DisposeAsync() - { - if (_disposed == true) { return; } - - foreach (var item in _callbackResolver) - { - try - { - await _jsRuntime.InvokeVoidAsyncWithErrorHandling("mudThrottledEventManager.unsubscribe", item.Key); - } - catch (Exception) - { - //ignore - } - } - - _dotNetRef.Dispose(); - _disposed = true; - } - - protected virtual void Dispose(bool disposing) - { - if (!_disposed) - { - if (disposing) - { - _dotNetRef.Dispose(); - - foreach (var item in _callbackResolver) - { - try - { - _jsRuntime.InvokeVoidAsync("mudThrottledEventManager.unsubscribe", item.Key); - } - catch (Exception) - { - //ignore - } - } - } - - _disposed = true; - } - } - - public void Dispose() - { - Dispose(disposing: true); - GC.SuppressFinalize(this); - } - - #endregion - } -} diff --git a/src/Connected.Components/Services/EventManager/WebEventJsonContext.cs b/src/Connected.Components/Services/EventManager/WebEventJsonContext.cs deleted file mode 100644 index 9cc4838..0000000 --- a/src/Connected.Components/Services/EventManager/WebEventJsonContext.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Text.Json.Serialization; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected -{ - [JsonSerializable(typeof(EventArgs))] - [JsonSerializable(typeof(ChangeEventArgs))] - [JsonSerializable(typeof(ClipboardEventArgs))] - [JsonSerializable(typeof(DragEventArgs))] - [JsonSerializable(typeof(Microsoft.AspNetCore.Components.Web.ErrorEventArgs))] - [JsonSerializable(typeof(FocusEventArgs))] - [JsonSerializable(typeof(KeyboardEventArgs))] - [JsonSerializable(typeof(MouseEventArgs))] - [JsonSerializable(typeof(PointerEventArgs))] - [JsonSerializable(typeof(ProgressEventArgs))] - [JsonSerializable(typeof(TouchEventArgs))] - [JsonSerializable(typeof(WheelEventArgs))] - internal sealed partial class WebEventJsonContext : JsonSerializerContext - { - } -} diff --git a/src/Connected.Components/Services/IIJSRuntimeExtentions.cs b/src/Connected.Components/Services/IIJSRuntimeExtentions.cs deleted file mode 100644 index 3561e5d..0000000 --- a/src/Connected.Components/Services/IIJSRuntimeExtentions.cs +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Diagnostics.CodeAnalysis; -using System.Threading.Tasks; -using Microsoft.JSInterop; - -namespace Connected -{ - public static class IIJSRuntimeExtentions - { - /// - /// Invokes the specified JavaScript function asynchronously and catches JSException, JSDisconnectedException and TaskCanceledException - /// - /// The . - /// An identifier for the function to invoke. For example, the value "someScope.someFunction" will invoke the function window.someScope.someFunction. - /// JSON-serializable arguments. - /// A that represents the asynchronous invocation operation. - public static async ValueTask InvokeVoidAsyncIgnoreErrors(this IJSRuntime jsRuntime, string identifier, params object[] args) - { - try - { - await jsRuntime.InvokeVoidAsync(identifier, args); - } -#if DEBUG -#else - catch (JSException) - { - } -#endif - // catch prerending errors since there is no browser at this point. - catch (InvalidOperationException ex) when (ex.Message.Contains("prerender", StringComparison.InvariantCultureIgnoreCase)) - { - } - catch (JSDisconnectedException) - { - } - catch (TaskCanceledException) - { - } - } - - /// - /// Invokes the specified JavaScript function asynchronously and catches JSException, JSDisconnectedException and TaskCanceledException - /// - /// The . - /// An identifier for the function to invoke. For example, the value "someScope.someFunction" will invoke the function window.someScope.someFunction. - /// JSON-serializable arguments. - /// A that represents the asynchronous invocation operation and resolves to true in case no exception has occured ohterwise false. - public static async ValueTask InvokeVoidAsyncWithErrorHandling(this IJSRuntime jsRuntime, string identifier, params object[] args) - { - try - { - await jsRuntime.InvokeVoidAsync(identifier, args); - return true; - } -#if DEBUG -#else - catch (JSException) - { - return false; - } -#endif - // catch prerending errors since there is no browser at this point. - catch (InvalidOperationException ex) when (ex.Message.Contains("prerender", StringComparison.InvariantCultureIgnoreCase)) - { - return false; - } - catch (JSDisconnectedException) - { - return false; - } - catch (TaskCanceledException) - { - return false; - } - } - - /// - /// Invokes the specified JavaScript function asynchronously and catches JSException, JSDisconnectedException and TaskCanceledException. In case an exception occured the default value of is returned - /// - /// The JSON-serializable return type. - /// The . - /// An identifier for the function to invoke. For example, the value "someScope.someFunction" will invoke the function window.someScope.someFunction. - /// JSON-serializable arguments. - /// An instance of obtained by JSON-deserializing the return value into a tuple. The first item (sucess) is true in case where there was no exception, otherwise fall. - public static async ValueTask<(bool success, TValue value)> InvokeAsyncWithErrorHandling(this IJSRuntime jsRuntime, string identifier, params object[] args) - => await jsRuntime.InvokeAsyncWithErrorHandling(default(TValue), identifier, args); - - /// - /// Invokes the specified JavaScript function asynchronously and catches JSException, JSDisconnectedException and TaskCanceledException - /// - /// The JSON-serializable return type. - /// The . - /// The value that should be returned in case an exception occured - /// An identifier for the function to invoke. For example, the value "someScope.someFunction" will invoke the function window.someScope.someFunction. - /// JSON-serializable arguments. - /// An instance of obtained by JSON-deserializing the return value into a tuple. The first item (sucess) is true in case where there was no exception, otherwise fall. - public static async ValueTask<(bool success, TValue value)> InvokeAsyncWithErrorHandling<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.PublicProperties)] TValue>(this IJSRuntime jsRuntime, TValue fallbackValue, string identifier, params object[] args) - { - try - { - var result = await jsRuntime.InvokeAsync(identifier: identifier, args: args); - return (true, result); - } -#if DEBUG -#else - catch (JSException) - { - return (false, fallbackValue); - } -#endif - // catch prerending errors since there is no browser at this point. - catch (InvalidOperationException ex) when (ex.Message.Contains("prerender", StringComparison.InvariantCultureIgnoreCase)) - { - return (false, fallbackValue);; - } - catch (JSDisconnectedException) - { - return (false, fallbackValue); - } - catch (TaskCanceledException) - { - return (false, fallbackValue); - } - } - } -} diff --git a/src/Connected.Components/Services/JsApiService.cs b/src/Connected.Components/Services/JsApiService.cs deleted file mode 100644 index 257e9ce..0000000 --- a/src/Connected.Components/Services/JsApiService.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Threading.Tasks; -using Microsoft.JSInterop; - -namespace Connected -{ - public interface IJsApiService - { - ValueTask CopyToClipboardAsync(string text); - ValueTask OpenInNewTabAsync(string url); - ValueTask Open(string link, string target); - } - - public class JsApiService : IJsApiService - { - private readonly IJSRuntime _jsRuntime; - - public JsApiService(IJSRuntime jsRuntime) - { - _jsRuntime = jsRuntime; - } - - public ValueTask CopyToClipboardAsync(string text) => - _jsRuntime.InvokeVoidAsync("mudWindow.copyToClipboard", text); - - public ValueTask Open(string link, string target) - { - if (target == "_blank") - return OpenInNewTabAsync(link); - - return _jsRuntime.InvokeVoidAsync("open", link, target); - } - - public ValueTask OpenInNewTabAsync(string url) => - _jsRuntime.InvokeVoidAsync("mudWindow.open", url, "_blank"); - } -} diff --git a/src/Connected.Components/Services/JsEvent/JsEvent.cs b/src/Connected.Components/Services/JsEvent/JsEvent.cs deleted file mode 100644 index f434df1..0000000 --- a/src/Connected.Components/Services/JsEvent/JsEvent.cs +++ /dev/null @@ -1,238 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Diagnostics.CodeAnalysis; -using Microsoft.JSInterop; - -namespace Connected.Services -{ - public interface IJsEvent : IDisposable - { - Task Connect(string elementId, JsEventOptions options); - Task Disconnect(); - event Action CaretPositionChanged; - event Action Paste; - event Action Select; - } - - /// - /// Subscribe JS events of any element by html id - /// - public class JsEvent : IJsEvent - { - private bool _isDisposed = false; - - private readonly DotNetObjectReference _dotNetRef; - private readonly IJSRuntime _jsRuntime; - private string _elementId; - private bool _isObserving; - internal HashSet _subscribedEvents = new HashSet(); - - [DynamicDependency(nameof(OnCaretPositionChanged))] - [DynamicDependency(nameof(OnPaste))] - [DynamicDependency(nameof(OnSelect))] - [DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(JsEventOptions))] - public JsEvent(IJSRuntime jsRuntime) - { - _dotNetRef = DotNetObjectReference.Create(this); - _jsRuntime = jsRuntime; - } - - /// - /// Connect to the ancestor element of the element(s) that should be observed - /// - /// Ancestor html element id - /// Define here the descendant(s) by setting TargetClass and the keystrokes to be monitored - public async Task Connect(string elementId, JsEventOptions options) - { - if (_isObserving || _isDisposed) - return; - _elementId = elementId; - _isObserving = await _jsRuntime.InvokeVoidAsyncWithErrorHandling("mudJsEvent.connect", _dotNetRef, elementId, options); ; - } - - /// - /// Disconnect from the previously connected ancestor and its descendants - /// - public async Task Disconnect() - { - if (_elementId == null) - return; - await UnsubscribeAll(); - try - { - await _jsRuntime.InvokeVoidAsync($"mudJsEvent.disconnect", _elementId); - } - catch (Exception) { /*ignore*/ } - _isObserving = false; - } - - internal void Subscribe(string eventName) - { - if (_elementId == null) - throw new InvalidOperationException("Call Connect(...) before attaching events!"); - if (_subscribedEvents.Contains(eventName) || _isDisposed) - return; - try - { - _jsRuntime.InvokeVoidAsync("mudJsEvent.subscribe", _elementId, eventName).AndForget(); - _subscribedEvents.Add(eventName); - } - catch (JSDisconnectedException) { } - catch (TaskCanceledException) { } - } - - internal async Task Unsubscribe(string eventName) - { - if (_elementId == null) - return; - try - { - await _jsRuntime.InvokeVoidAsync($"mudJsEvent.unsubscribe", _elementId, eventName); - } - catch (Exception) { /*ignore*/ } - _subscribedEvents.Remove(eventName); - } - - internal async Task UnsubscribeAll() - { - if (_elementId == null) - return; - try - { - foreach (var eventName in _subscribedEvents) - await _jsRuntime.InvokeVoidAsync($"mudJsEvent.unsubscribe", _elementId, eventName); - } - catch (Exception) { /*ignore*/ } - _subscribedEvents.Clear(); - } - - List> _caretPositionChangedHandlers = new List>(); - - /// - /// Subscribe this event to get notified about caret changes in an input on click and on keyup - /// - public event Action CaretPositionChanged - { - add - { - if (_caretPositionChangedHandlers.Count == 0) - { - Subscribe("click"); - Subscribe("keyup"); - } - _caretPositionChangedHandlers.Add(value); - } - remove - { - if (_caretPositionChangedHandlers.Count == 0) - return; - if (_caretPositionChangedHandlers.Count == 1) - { - Unsubscribe("click").AndForget(); - Unsubscribe("keyup").AndForget(); - } - _caretPositionChangedHandlers.Remove(value); - } - } - - /// - /// To be invoked only by JS - /// - [JSInvokable] - public void OnCaretPositionChanged(int caretPosition) - { - foreach (var handler in _caretPositionChangedHandlers) - { - handler.Invoke(caretPosition); - } - } - - List> _pasteHandlers = new List>(); - - /// - /// Subscribe this event to get notified about paste actions - /// - public event Action Paste - { - add - { - if (_pasteHandlers.Count == 0) - Subscribe("paste"); - _pasteHandlers.Add(value); - } - remove - { - if (_pasteHandlers.Count == 0) - return; - if (_pasteHandlers.Count == 1) - Unsubscribe("paste").AndForget(); - _pasteHandlers.Remove(value); - } - } - - /// - /// To be invoked only by JS - /// - [JSInvokable] - public void OnPaste(string text) - { - foreach (var handler in _pasteHandlers) - { - handler.Invoke(text); - } - } - - List> _selectHandlers = new List>(); - - /// - /// Subscribe this event to get notified about paste actions - /// - public event Action Select - { - add - { - if (_selectHandlers.Count == 0) - Subscribe("select"); - _selectHandlers.Add(value); - } - remove - { - if (_selectHandlers.Count == 0) - return; - if (_selectHandlers.Count == 1) - Unsubscribe("select").AndForget(); - _selectHandlers.Remove(value); - } - } - - /// - /// To be invoked only by JS - /// - [JSInvokable] - public void OnSelect(int start, int end) - { - foreach (var handler in _selectHandlers) - { - handler.Invoke(start, end); - } - } - - protected virtual void Dispose(bool disposing) - { - if (!disposing || _isDisposed) - return; - _isDisposed = true; - Disconnect().AndForget(); - _dotNetRef.Dispose(); - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - } -} diff --git a/src/Connected.Components/Services/JsEvent/JsEventFactory.cs b/src/Connected.Components/Services/JsEvent/JsEventFactory.cs deleted file mode 100644 index 91d863e..0000000 --- a/src/Connected.Components/Services/JsEvent/JsEventFactory.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.JSInterop; - -namespace Connected.Services -{ - public interface IJsEventFactory - { - IJsEvent Create(); - } - - public class JsEventFactory : IJsEventFactory - { - private readonly IServiceProvider _provider; - - public JsEventFactory(IServiceProvider provider) - { - _provider = provider; - } - - public IJsEvent Create() => - new JsEvent(_provider.GetRequiredService()); - } - -} diff --git a/src/Connected.Components/Services/JsEvent/JsEventOptions.cs b/src/Connected.Components/Services/JsEvent/JsEventOptions.cs deleted file mode 100644 index a81d010..0000000 --- a/src/Connected.Components/Services/JsEvent/JsEventOptions.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Collections.Generic; - -namespace Connected.Services -{ - public class JsEventOptions - { - /// - /// Class of the target node which should be observed for keyboard events - /// - /// Note: this must be a single class - /// - public string TargetClass { get; set; } - - /// - /// The tag name of the element to register events with. Must be all uppercase, like "INPUT" - /// - public string TagName { get; set; } - - /// - /// Report resize events in the browser's console. - /// - public bool EnableLogging { get; set; } = false; - } -} diff --git a/src/Connected.Components/Services/KeyInterceptor/IKeyInterceptor.cs b/src/Connected.Components/Services/KeyInterceptor/IKeyInterceptor.cs deleted file mode 100644 index de7d2df..0000000 --- a/src/Connected.Components/Services/KeyInterceptor/IKeyInterceptor.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Microsoft.AspNetCore.Components.Web; - -namespace Connected.Services; - - -public delegate void KeyboardEvent(KeyboardEventArgs args); - -public interface IKeyInterceptor : IDisposable -{ - Task Connect(string elementId, KeyInterceptorOptions options); - Task Disconnect(); - Task UpdateKey(KeyOptions option); - - event KeyboardEvent KeyDown; - event KeyboardEvent KeyUp; - -} diff --git a/src/Connected.Components/Services/KeyInterceptor/KeyInterceptor.cs b/src/Connected.Components/Services/KeyInterceptor/KeyInterceptor.cs deleted file mode 100644 index 3337551..0000000 --- a/src/Connected.Components/Services/KeyInterceptor/KeyInterceptor.cs +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Diagnostics.CodeAnalysis; -using Microsoft.AspNetCore.Components.Web; -using Microsoft.JSInterop; - -namespace Connected.Services; - -/// -/// This transient service binds itself to a parent element to observe the keys of one of its children. -/// It can call preventDefault or stopPropagation directly on the JavaScript side for single key strokes / key combinations as per configuration. -/// Furthermore, you can precisely subscribe single keystrokes or combinations and only the subscribed ones will be forwarded into .NET -/// -public class KeyInterceptor : IKeyInterceptor, IDisposable -{ - private bool _isDisposed = false; - - private readonly DotNetObjectReference _dotNetRef; - private readonly IJSRuntime _jsRuntime; - private bool _isObserving; - private string _elementId; - - [DynamicDependency(nameof(OnKeyDown))] - [DynamicDependency(nameof(OnKeyUp))] - [DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(KeyboardEvent))] - [DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(KeyboardEventArgs))] - [DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(KeyOptions))] - [DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(KeyInterceptorOptions))] - public KeyInterceptor(IJSRuntime jsRuntime) - { - _dotNetRef = DotNetObjectReference.Create(this); - _jsRuntime = jsRuntime; - } - - /// - /// Connect to the ancestor element of the element(s) that should be observed - /// - /// Ancestor html element id - /// Define here the descendant(s) by setting TargetClass and the keystrokes to be monitored / suppressed - public async Task Connect(string elementId, KeyInterceptorOptions options) - { - if (_isObserving || _isDisposed) - return; - _elementId = elementId; - _isObserving = await _jsRuntime.InvokeVoidAsyncWithErrorHandling("mudKeyInterceptor.connect", _dotNetRef, elementId, options); - } - - /// - /// Update behavior of a registered keyoption - /// The keystrike to update has to be monitored previously - /// - /// Define KeyOption to update - public async Task UpdateKey(KeyOptions option) - { - await _jsRuntime.InvokeVoidAsync($"mudKeyInterceptor.updatekey", _elementId, option); - } - - /// - /// Disconnect from the previously connected ancestor and its descendants - /// - public async Task Disconnect() - { - try - { - await _jsRuntime.InvokeVoidAsync($"mudKeyInterceptor.disconnect", _elementId); - } - catch (Exception) { /*ignore*/ } - _isObserving = false; - } - - [JSInvokable] - public void OnKeyDown(KeyboardEventArgs args) - { - KeyDown?.Invoke(args); - } - - [JSInvokable] - public void OnKeyUp(KeyboardEventArgs args) - { - KeyUp?.Invoke(args); - } - - public event KeyboardEvent KeyDown; - public event KeyboardEvent KeyUp; - - protected virtual void Dispose(bool disposing) - { - if (!disposing || _isDisposed) - return; - _isDisposed = true; - KeyDown = null; - KeyUp = null; - Disconnect().AndForget(); - _dotNetRef.Dispose(); - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - -} diff --git a/src/Connected.Components/Services/KeyInterceptor/KeyInterceptorFactory.cs b/src/Connected.Components/Services/KeyInterceptor/KeyInterceptorFactory.cs deleted file mode 100644 index c9dee78..0000000 --- a/src/Connected.Components/Services/KeyInterceptor/KeyInterceptorFactory.cs +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.JSInterop; - -namespace Connected.Services -{ - public interface IKeyInterceptorFactory - { - public IKeyInterceptor Create(); - } - - public class KeyInterceptorFactory : IKeyInterceptorFactory - { - private readonly IServiceProvider _provider; - - public KeyInterceptorFactory(IServiceProvider provider) - { - _provider = provider; - } - - public IKeyInterceptor Create() => - new KeyInterceptor(_provider.GetRequiredService()); - } -} diff --git a/src/Connected.Components/Services/KeyInterceptor/KeyInterceptorOptions.cs b/src/Connected.Components/Services/KeyInterceptor/KeyInterceptorOptions.cs deleted file mode 100644 index 2a66b70..0000000 --- a/src/Connected.Components/Services/KeyInterceptor/KeyInterceptorOptions.cs +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Collections.Generic; - -namespace Connected.Services -{ - public class KeyInterceptorOptions - { - /// - /// Class of the target node which should be observed for keyboard events - /// - /// Note: this must be a single class - /// - public string TargetClass { get; set; } - - /// - /// Report resize events in the browser's console. - /// - public bool EnableLogging { get; set; } = false; - - /// - /// Intercept configuration for keys of interest - /// - public List Keys { get; set; } = new List(); - } - - /// - /// Configuration for preventDefault() and stopPropagation() control - /// - /// For PreventDown, PreventUp, StopDown and StopUp the configuration which key combinations should match - /// is a Javascript boolean expression. - /// - /// Examples: - /// For the examples, let's assume the Tab key was pressed. - /// Note: for combinations of more than one modifier the following order of modifiers must be followed strictly: shift+ctrl+alt+meta - /// - /// * Don't prevent key down: - /// PreventDown=null or PreventDown="none" - /// * Prevent key down of unmodified keystrokes such as "Tab": - /// PreventDown="key+none" - /// * Prevent key down of Tab and Ctrl+Tab - /// PreventDown="key+none|key+ctrl" - /// * Prevent key down of just Ctrl+Tab - /// PreventDown="key+ctrl" - /// * Prevent key down of Ctrl+Tab and Shift+Tab but not Shift+Ctrl+Tab: - /// PreventDown="key+shift|key+ctrl" - /// * Prevent key down of Shift+Ctrl+Tab and Ctrl+Tab but not Shift+Tab: - /// PreventDown="key+shift+ctrl|key+ctrl" - /// * Prevent any combination of key and modifiers, but not the unmodified key: - /// PreventDown="key+any" - /// * Prevent any combination of key and modifiers, even the unmodified key: - /// PreventDown="any" - /// - public class KeyOptions - { - /// - /// Javascript keyboard event.key - /// - /// Examples: " " for space, "Tab" for tab, "a" for lowercase A-key. - /// Also allowed: JS regex such as "/[a-z]/" or "/a|b/" but NOT "/[a-z]/g" or "/[a-z]/i" - /// regex must be enclosed in two forward slashes! - /// - public string Key { get; set; } - - /// - /// Subscribe down key and invoke event KeyDown on c# side - /// - public bool SubscribeDown { get; set; } - - /// - /// Subscribe up key and invoke event KeyUp on c# side - /// - public bool SubscribeUp { get; set; } - - public string PreventDown { get; set; } = "none"; - public string PreventUp { get; set; } = "none"; - public string StopDown { get; set; } = "none"; - public string StopUp { get; set; } = "none"; - } -} diff --git a/src/Connected.Components/Services/ReseizeObserver/IResizeObserver.cs b/src/Connected.Components/Services/ReseizeObserver/IResizeObserver.cs deleted file mode 100644 index f1ceb38..0000000 --- a/src/Connected.Components/Services/ReseizeObserver/IResizeObserver.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Connected.Interop; -using Microsoft.AspNetCore.Components; - -namespace Connected.Services; - - -public delegate void SizeChanged(IDictionary changes); - -public interface IResizeObserver : IAsyncDisposable, IDisposable -{ - Task Observe(ElementReference element); - Task> Observe(IEnumerable elements); - Task Unobserve(ElementReference element); - - double GetWidth(ElementReference reference); - double GetHeight(ElementReference reference); - BoundingClientRect GetSizeInfo(ElementReference reference); - - event SizeChanged OnResized; - - bool IsElementObserved(ElementReference reference); -} diff --git a/src/Connected.Components/Services/ReseizeObserver/IResizeObserverFactory.cs b/src/Connected.Components/Services/ReseizeObserver/IResizeObserverFactory.cs deleted file mode 100644 index 95b6ea9..0000000 --- a/src/Connected.Components/Services/ReseizeObserver/IResizeObserverFactory.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Connected.Services -{ - public interface IResizeObserverFactory - { - IResizeObserver Create(ResizeObserverOptions options); - IResizeObserver Create(); - } -} diff --git a/src/Connected.Components/Services/ReseizeObserver/ResizeObserver.cs b/src/Connected.Components/Services/ReseizeObserver/ResizeObserver.cs deleted file mode 100644 index abea75f..0000000 --- a/src/Connected.Components/Services/ReseizeObserver/ResizeObserver.cs +++ /dev/null @@ -1,145 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using Connected.Interop; -using Microsoft.AspNetCore.Components; -using Microsoft.Extensions.Options; -using Microsoft.JSInterop; - -namespace Connected.Services; - -public class ResizeObserver : IResizeObserver, IDisposable, IAsyncDisposable -{ - private Boolean _isDisposed = false; - - private readonly DotNetObjectReference _dotNetRef; - private readonly IJSRuntime _jsRuntime; - - private readonly Dictionary _cachedValueIds = new(); - private readonly Dictionary _cachedValues = new(); - - private Guid _id = Guid.NewGuid(); - private ResizeObserverOptions _options; - - [DynamicDependency(nameof(OnSizeChanged))] - [DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(SizeChangeUpdateInfo))] - public ResizeObserver(IJSRuntime jsRuntime, ResizeObserverOptions options) - { - _dotNetRef = DotNetObjectReference.Create(this); - _jsRuntime = jsRuntime; - _options = options; - } - - public ResizeObserver(IJSRuntime jsRuntime, IOptions options = null) : this(jsRuntime, options?.Value ?? new ResizeObserverOptions()) - { - } - - public async Task Observe(ElementReference element) => (await Observe(new[] { element })).FirstOrDefault(); - - public async Task> Observe(IEnumerable elements) - { - var filteredElements = elements.Where(x => x.Context != null && _cachedValues.ContainsKey(x) == false).ToList(); - if (filteredElements.Any() == false) - { - return Array.Empty(); - } - - List elementIds = new(); - - foreach (var item in filteredElements) - { - var id = Guid.NewGuid(); - elementIds.Add(id); - _cachedValueIds.Add(id, item); - } - - var result = await _jsRuntime.InvokeAsync>("mudResizeObserver.connect", _id, _dotNetRef, filteredElements, elementIds, _options) ?? Array.Empty(); - var counter = 0; - foreach (var item in result) - { - _cachedValues.Add(filteredElements.ElementAt(counter), item); - counter++; - } - - return result; - } - - public async Task Unobserve(ElementReference element) - { - var elementId = _cachedValueIds.FirstOrDefault(x => x.Value.Id == element.Id).Key; - if (elementId == default) { return; } - - //if the unobserve happens during a component teardown, the try-catch is a safe guard to prevent a "pseudo" exception - try { await _jsRuntime.InvokeVoidAsync($"mudResizeObserver.disconnect", _id, elementId); } catch (Exception) { } - - _cachedValueIds.Remove(elementId); - _cachedValues.Remove(element); - } - - public bool IsElementObserved(ElementReference reference) => _cachedValues.ContainsKey(reference); - - public record SizeChangeUpdateInfo(Guid Id, BoundingClientRect Size); - - [JSInvokable] - public void OnSizeChanged(IEnumerable changes) - { - Dictionary parsedChanges = new(); - foreach (var item in changes) - { - if (_cachedValueIds.ContainsKey(item.Id) == false) { continue; } - - var elementRef = _cachedValueIds[item.Id]; - _cachedValues[elementRef] = item.Size; - parsedChanges.Add(elementRef, item.Size); - } - - OnResized?.Invoke(parsedChanges); - } - - public event SizeChanged OnResized; - - public BoundingClientRect GetSizeInfo(ElementReference reference) - { - if (_cachedValues.ContainsKey(reference) == false) - { - return null; - } - - return _cachedValues[reference]; - } - - public double GetHeight(ElementReference reference) => GetSizeInfo(reference)?.Height ?? 0.0; - public double GetWidth(ElementReference reference) => GetSizeInfo(reference)?.Width ?? 0.0; - - protected virtual void Dispose(bool disposing) - { - if (disposing && _isDisposed == false) - { - _isDisposed = true; - _dotNetRef.Dispose(); - _cachedValueIds.Clear(); - _cachedValues.Clear(); - - //in a fire and forget manner, we just "trying" to cancel the listener. So, we are not interested in an potential error - try { _ = _jsRuntime.InvokeVoidAsync($"mudResizeObserver.cancelListener", _id); } catch (Exception) { } - } - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - public async ValueTask DisposeAsync() - { - if (_isDisposed == true) { return; } - - _isDisposed = true; - - _dotNetRef.Dispose(); - _cachedValueIds.Clear(); - _cachedValues.Clear(); - - //in a fire and forget manner, we just "trying" to cancel the listener. So, we are not interested in an potential error - try { await _jsRuntime.InvokeVoidAsync($"mudResizeObserver.cancelListener", _id); } catch (Exception) { } - } -} diff --git a/src/Connected.Components/Services/ReseizeObserver/ResizeObserverFactory.cs b/src/Connected.Components/Services/ReseizeObserver/ResizeObserverFactory.cs deleted file mode 100644 index e90d88c..0000000 --- a/src/Connected.Components/Services/ReseizeObserver/ResizeObserverFactory.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; -using Microsoft.JSInterop; - -namespace Connected.Services -{ - public class ResizeObserverFactory : IResizeObserverFactory - { - private readonly IServiceProvider _provider; - - public ResizeObserverFactory(IServiceProvider provider) - { - _provider = provider; - } - - public IResizeObserver Create(ResizeObserverOptions options) => - new ResizeObserver(_provider.GetRequiredService(), options); - - public IResizeObserver Create() - { - var options = _provider.GetService>(); - return Create(options?.Value ?? new ResizeObserverOptions()); - } - } -} diff --git a/src/Connected.Components/Services/ReseizeObserver/ResizeObserverOptions.cs b/src/Connected.Components/Services/ReseizeObserver/ResizeObserverOptions.cs deleted file mode 100644 index 93f51a7..0000000 --- a/src/Connected.Components/Services/ReseizeObserver/ResizeObserverOptions.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Connected.Services -{ - public class ResizeObserverOptions - { - /// - /// Timepsan in milliseconds after the browser detect the last chance and notify the interop service. - /// Setting this value too low can cause poor application performance. - /// - public int ReportRate { get; set; } = 200; - - /// - /// Report resize events in the browser's console. - /// - public bool EnableLogging { get; set; } = false; - } -} diff --git a/src/Connected.Components/Services/ResizeListener/Breakpoint.cs b/src/Connected.Components/Services/ResizeListener/Breakpoint.cs deleted file mode 100644 index 5355bed..0000000 --- a/src/Connected.Components/Services/ResizeListener/Breakpoint.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Connected -{ - /// - /// Breakpoints describe certain user interfaces sizes or ranges. Use them in conjunction with MudHidden or ResizeListenerService - /// - public enum Breakpoint - { - Xs, Sm, Md, Lg, Xl, Xxl, - SmAndDown, MdAndDown, LgAndDown, XlAndDown, - SmAndUp, MdAndUp, LgAndUp, XlAndUp, - None, - Always - } -} diff --git a/src/Connected.Components/Services/ResizeListener/BreakpointService .cs b/src/Connected.Components/Services/ResizeListener/BreakpointService .cs deleted file mode 100644 index 3c5d054..0000000 --- a/src/Connected.Components/Services/ResizeListener/BreakpointService .cs +++ /dev/null @@ -1,245 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Extensions.Options; -using Microsoft.JSInterop; - -namespace Connected.Services -{ - - public class BreakpointService : - ResizeBasedService, - IBreakpointService - { - private readonly IJSRuntime _jsRuntime; - private readonly ResizeOptions _options; - private IBrowserWindowSizeProvider _browserWindowSizeProvider; - private BrowserWindowSize _windowSize; - private Breakpoint _breakpoint = Breakpoint.None; - - /// - /// - /// - /// - /// - /// - [DynamicDependency(nameof(RaiseOnResized))] - public BreakpointService(IJSRuntime jsRuntime, IBrowserWindowSizeProvider browserWindowSizeProvider, IOptions options = null) - : base(jsRuntime) - { - this._options = options?.Value ?? new ResizeOptions(); - this._jsRuntime = jsRuntime; - this._browserWindowSizeProvider = browserWindowSizeProvider; - } - - /// - /// Invoked by jsInterop, use the OnResized event handler to subscribe. - /// - /// - /// - /// - [JSInvokable] - public void RaiseOnResized(BrowserWindowSize browserWindowSize, Breakpoint breakpoint, Guid optionId) - { - _windowSize = browserWindowSize; - _breakpoint = breakpoint; - - if (Listeners.ContainsKey(optionId) == false) { return; } - - var listenerInfo = Listeners[optionId]; - listenerInfo.InvokeCallbacks(breakpoint); - } - - /// - /// Determine if the Document matches the provided media query. - /// - /// - /// Returns true if matched. - public async ValueTask MatchMedia(string mediaQuery) => - await _jsRuntime.InvokeAsync($"mudResizeListener.matchMedia", mediaQuery); - - public static Dictionary DefaultBreakpointDefinitions { get; set; } = new Dictionary() - { - [Breakpoint.Xl] = 1920, - [Breakpoint.Lg] = 1280, - [Breakpoint.Md] = 960, - [Breakpoint.Sm] = 600, - [Breakpoint.Xs] = 0, - }; - - public async Task GetBreakpoint() - { - // note: we don't need to get the size if we are listening for updates, so only if onResized==null, get the actual size - if (_windowSize == null) - _windowSize = await _browserWindowSizeProvider.GetBrowserWindowSize(); - if (_windowSize == null) - return Breakpoint.Xs; - if (_windowSize.Width >= DefaultBreakpointDefinitions[Breakpoint.Xl]) - return Breakpoint.Xl; - else if (_windowSize.Width >= DefaultBreakpointDefinitions[Breakpoint.Lg]) - return Breakpoint.Lg; - else if (_windowSize.Width >= DefaultBreakpointDefinitions[Breakpoint.Md]) - return Breakpoint.Md; - else if (_windowSize.Width >= DefaultBreakpointDefinitions[Breakpoint.Sm]) - return Breakpoint.Sm; - else - return Breakpoint.Xs; - } - - public async Task IsMediaSize(Breakpoint breakpoint) - { - if (breakpoint == Breakpoint.None) - return false; - - return IsMediaSize(breakpoint, await GetBreakpoint()); - } - - public bool IsMediaSize(Breakpoint breakpoint, Breakpoint reference) - { - if (breakpoint == Breakpoint.None) - return false; - - return breakpoint switch - { - Breakpoint.Xs => reference == Breakpoint.Xs, - Breakpoint.Sm => reference == Breakpoint.Sm, - Breakpoint.Md => reference == Breakpoint.Md, - Breakpoint.Lg => reference == Breakpoint.Lg, - Breakpoint.Xl => reference == Breakpoint.Xl, - // * and down - Breakpoint.SmAndDown => reference <= Breakpoint.Sm, - Breakpoint.MdAndDown => reference <= Breakpoint.Md, - Breakpoint.LgAndDown => reference <= Breakpoint.Lg, - // * and up - Breakpoint.SmAndUp => reference >= Breakpoint.Sm, - Breakpoint.MdAndUp => reference >= Breakpoint.Md, - Breakpoint.LgAndUp => reference >= Breakpoint.Lg, - _ => false, - }; - } - - public async Task Subscribe(Action callback) => await Subscribe(callback, _options); - - public async Task Subscribe(Action callback, ResizeOptions options) - { - if (callback is null) - { - throw new ArgumentNullException(nameof(callback)); - } - - options ??= _options; - if (options.BreakpointDefinitions == null || options.BreakpointDefinitions.Count == 0) - { - options.BreakpointDefinitions = DefaultBreakpointDefinitions.ToDictionary(x => x.Key.ToString(), x => x.Value); - } - - if (DotNetRef == null) - { - DotNetRef = DotNetObjectReference.Create(this); - } - - - try - { - await Semaphore.WaitAsync(); - - var existingOptionId = Listeners.Where(x => x.Value.Option == options).Select(x => x.Key).FirstOrDefault(); - - if (existingOptionId == default) - { - var subscriptionInfo = new BreakpointServiceSubscriptionInfo(options); - var subscriptionId = subscriptionInfo.AddSubscription(callback); - var listenerId = Guid.NewGuid(); - - Listeners.Add(listenerId, subscriptionInfo); - - var interopResult = await JsRuntime.InvokeVoidAsyncWithErrorHandling - ("mudResizeListenerFactory.listenForResize", DotNetRef, options, listenerId); - - if (interopResult == true) - { - if (_breakpoint == Breakpoint.None) - { - _breakpoint = await GetBreakpoint(); - - } - } - - return new BreakpointServiceSubscribeResult(subscriptionId, _breakpoint); - } - else - { - var entry = Listeners[existingOptionId]; - var subscriptionId = entry.AddSubscription(callback); - - return new BreakpointServiceSubscribeResult(subscriptionId, _breakpoint); - } - } - finally - { - Semaphore.Release(); - } - } - } - - /// - /// The result of a subscription to the BreakpointListener - /// - /// The subscription id, can be used for cancel the subscription later - /// The current breakpoint of the window - public record BreakpointServiceSubscribeResult(Guid SubscriptionId, Breakpoint Breakpoint); - - public interface IBreakpointService : IAsyncDisposable - { - /// - /// Check if the current breakpoint fits within the current window size - /// - /// - /// True if the media size is meet, false otherwise. For instance if the current window size is sm and the breakpoint is SmAndSmaller, this method returns true - Task IsMediaSize(Breakpoint breakpoint); - - /// - /// Check if the current breakpoint fits within the reference size - /// - /// The breakpoint to check - /// The reference breakpoint (xs,sm,md,lg,xl) - /// True if the media size is meet, false otherwise. For instance if the reference size is sm and the breakpoint is SmAndSmaller, this method returns true - bool IsMediaSize(Breakpoint breakpoint, Breakpoint reference); - - /// - /// Get the current breakpoint - /// - /// - Task GetBreakpoint(); - - /// - /// Subscribe to size changes of the browser window with default options - /// - /// The method (callbacK) that is invoke as soon as the size of the window has changed - /// Returning an object containing the current breakpoint and a subscription id, that should be used for unsubscribe - Task Subscribe(Action callback); - - /// - /// Subscribe to size changes of the browser window using the provided options - /// - /// The method (callbacK) that is invoke as soon as the size of the window has changed - /// The options used to subscribe to changes - /// Returning an object containing the current breakpoint and a subscription id, that should be used for unsubscribe - Task Subscribe(Action callback, ResizeOptions options); - - /// - /// Used for cancel the subscription to the resize event. - /// - /// The subscription id (return of subscribe) to cancel - /// True if the subscription could be cancel, false otherwise - Task Unsubscribe(Guid subscriptionId); - } -} diff --git a/src/Connected.Components/Services/ResizeListener/BrowserWindowSize.cs b/src/Connected.Components/Services/ResizeListener/BrowserWindowSize.cs deleted file mode 100644 index a804360..0000000 --- a/src/Connected.Components/Services/ResizeListener/BrowserWindowSize.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; - -namespace Connected.Services -{ - public class BrowserWindowSize : EventArgs - { - public int Height { get; set; } - public int Width { get; set; } - } -} diff --git a/src/Connected.Components/Services/ResizeListener/ResizeBasedService.cs b/src/Connected.Components/Services/ResizeListener/ResizeBasedService.cs deleted file mode 100644 index ea66946..0000000 --- a/src/Connected.Components/Services/ResizeListener/ResizeBasedService.cs +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.JSInterop; - -namespace Connected.Services -{ - public abstract class ResizeBasedService<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] TSelf, TInfo, TAction, TTaskOption> : IAsyncDisposable - where TSelf : class - where TInfo : SubscriptionInfo - { - protected SemaphoreSlim Semaphore = new(1, 1); - - protected Dictionary Listeners { get; } = new(); - - protected IJSRuntime JsRuntime { get; init; } - - protected DotNetObjectReference DotNetRef { get; set; } - - public ResizeBasedService(IJSRuntime jsRuntime) - { - JsRuntime = jsRuntime; - } - - public async Task Unsubscribe(Guid subscriptionId) - { - if (DotNetRef is null) - { - return false; - } - - var info = Listeners.FirstOrDefault(x => x.Value.ContainsSubscription(subscriptionId)); - if (info.Value is null) - { - return false; - } - - try - { - await Semaphore.WaitAsync(); - - var isLastSubscriber = info.Value.RemoveSubscription(subscriptionId); - if (isLastSubscriber) - { - Listeners.Remove(info.Key); - - await JsRuntime.InvokeVoidAsyncWithErrorHandling("mudResizeListenerFactory.cancelListener", info.Key); - } - - if (Listeners.Count == 0) - { - DotNetRef.Dispose(); - DotNetRef = null; - } - } - finally - { - Semaphore.Release(); - } - - return true; - } - - public async ValueTask DisposeAsync() - { - if (DotNetRef is null) { return; } - if (Listeners.Count == 0) { return; } - - var ids = Listeners.Keys.ToArray(); - Listeners.Clear(); - - await JsRuntime.InvokeVoidAsyncWithErrorHandling("mudResizeListenerFactory.cancelListeners", ids); - - DotNetRef.Dispose(); - } - } -} diff --git a/src/Connected.Components/Services/ResizeListener/ResizeListenerService.cs b/src/Connected.Components/Services/ResizeListener/ResizeListenerService.cs deleted file mode 100644 index 704ac34..0000000 --- a/src/Connected.Components/Services/ResizeListener/ResizeListenerService.cs +++ /dev/null @@ -1,236 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.Extensions.Options; -using Microsoft.JSInterop; - -namespace Connected.Services -{ - /// - /// This service listens to browser resize events and allows you to react to a changing window size in Blazor - /// - public class ResizeListenerService : IResizeListenerService, IDisposable - { - /// - /// - /// - /// - /// - /// - [DynamicDependency(nameof(RaiseOnResized))] - public ResizeListenerService(IJSRuntime jsRuntime, IBrowserWindowSizeProvider browserWindowSizeProvider, IOptions options = null) - { - this._dotNetRef = DotNetObjectReference.Create(this); - this._options = options?.Value ?? new ResizeOptions(); - this._options.BreakpointDefinitions = BreakpointDefinitions.ToDictionary(x => x.Key.ToString(), x => x.Value); - this._jsRuntime = jsRuntime; - this._browserWindowSizeProvider = browserWindowSizeProvider; - } - - private readonly IJSRuntime _jsRuntime; - private readonly IBrowserWindowSizeProvider _browserWindowSizeProvider; - private readonly ResizeOptions _options; - private readonly DotNetObjectReference _dotNetRef; -#nullable enable - private EventHandler? _onResized; - private EventHandler? _onBreakpointChanged; - - /// - /// Subscribe to the browsers resize() event. - /// - public event EventHandler? OnResized - { - add - { - _options.NotifyOnBreakpointOnly = false; - Start(); - _onResized += value; - } - remove - { - _onResized -= value; - Cancel().ConfigureAwait(false); - } - } - - /// - /// Subscribe to the browsers resize() event. - /// - public event EventHandler? OnBreakpointChanged - { - add - { - _options.NotifyOnBreakpointOnly = _onResized == null; - Start(); - _onBreakpointChanged += value; - } - remove - { - _onBreakpointChanged -= value; - Cancel().ConfigureAwait(false); - } - } -#nullable disable - - private async void Start() - { - if (_onResized == null || _onBreakpointChanged == null) - { - await _jsRuntime.InvokeVoidAsyncWithErrorHandling($"mudResizeListener.listenForResize", _dotNetRef, _options); - } - } - - private async ValueTask Cancel() - { - try - { - if (_onResized == null && _onBreakpointChanged == null) - { - await _jsRuntime.InvokeVoidAsyncWithErrorHandling($"mudResizeListener.cancelListener"); - } - else if (_onResized == null && _onBreakpointChanged != null && !_options.NotifyOnBreakpointOnly) - { - _options.NotifyOnBreakpointOnly = true; - Start(); - } - } - catch (Exception) - { - /* ignore */ - } - } - - /// - /// Determine if the Document matches the provided media query. - /// - /// - /// Returns true if matched. - public ValueTask MatchMedia(string mediaQuery) => -_jsRuntime.InvokeAsync($"mudResizeListener.matchMedia", mediaQuery); - - /// - /// Get the current BrowserWindowSize, this includes the Height and Width of the document. - /// - public ValueTask GetBrowserWindowSize() => - _browserWindowSizeProvider.GetBrowserWindowSize(); - - /// - /// Invoked by jsInterop, use the OnResized event handler to subscribe. - /// - /// - /// - [JSInvokable] - public void RaiseOnResized(BrowserWindowSize browserWindowSize, Breakpoint breakpoint) - { - _windowSize = browserWindowSize; - _onResized?.Invoke(this, browserWindowSize); - _onBreakpointChanged?.Invoke(this, breakpoint); - } - - private BrowserWindowSize _windowSize; - - public static Dictionary BreakpointDefinitions { get; set; } = new Dictionary() - { - [Breakpoint.Xxl] = 2560, - [Breakpoint.Xl] = 1920, - [Breakpoint.Lg] = 1280, - [Breakpoint.Md] = 960, - [Breakpoint.Sm] = 600, - [Breakpoint.Xs] = 0, - }; - - public async Task GetBreakpoint() - { - // note: we don't need to get the size if we are listening for updates, so only if onResized==null, get the actual size - if (_onResized == null || _windowSize == null) - _windowSize = await _browserWindowSizeProvider.GetBrowserWindowSize(); - if (_windowSize == null) - return Breakpoint.Xs; - if (_windowSize.Width >= BreakpointDefinitions[Breakpoint.Xxl]) - return Breakpoint.Xxl; - else if (_windowSize.Width >= BreakpointDefinitions[Breakpoint.Xl]) - return Breakpoint.Xl; - else if (_windowSize.Width >= BreakpointDefinitions[Breakpoint.Lg]) - return Breakpoint.Lg; - else if (_windowSize.Width >= BreakpointDefinitions[Breakpoint.Md]) - return Breakpoint.Md; - else if (_windowSize.Width >= BreakpointDefinitions[Breakpoint.Sm]) - return Breakpoint.Sm; - else - return Breakpoint.Xs; - } - - public async Task IsMediaSize(Breakpoint breakpoint) - { - if (breakpoint == Breakpoint.None) - return false; - - return IsMediaSize(breakpoint, await GetBreakpoint()); - } - - public bool IsMediaSize(Breakpoint breakpoint, Breakpoint reference) - { - if (breakpoint == Breakpoint.None) - return false; - - return breakpoint switch - { - Breakpoint.Xs => reference == Breakpoint.Xs, - Breakpoint.Sm => reference == Breakpoint.Sm, - Breakpoint.Md => reference == Breakpoint.Md, - Breakpoint.Lg => reference == Breakpoint.Lg, - Breakpoint.Xl => reference == Breakpoint.Xl, - Breakpoint.Xxl => reference == Breakpoint.Xxl, - // * and down - Breakpoint.SmAndDown => reference <= Breakpoint.Sm, - Breakpoint.MdAndDown => reference <= Breakpoint.Md, - Breakpoint.LgAndDown => reference <= Breakpoint.Lg, - Breakpoint.XlAndDown => reference <= Breakpoint.Xl, - // * and up - Breakpoint.SmAndUp => reference >= Breakpoint.Sm, - Breakpoint.MdAndUp => reference >= Breakpoint.Md, - Breakpoint.LgAndUp => reference >= Breakpoint.Lg, - Breakpoint.XlAndUp => reference >= Breakpoint.Xl, - _ => false, - }; - } - - bool _disposed; - - protected virtual void Dispose(bool disposing) - { - if (!_disposed) - { - _ = Cancel(); - if (disposing) - { - _onResized = null; - _onBreakpointChanged = null; - _dotNetRef?.Dispose(); - } - _disposed = true; - } - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - } - - - public interface IResizeListenerService : IDisposable - { -#nullable enable - event EventHandler? OnResized; - event EventHandler? OnBreakpointChanged; -#nullable disable - ValueTask GetBrowserWindowSize(); - Task IsMediaSize(Breakpoint breakpoint); - bool IsMediaSize(Breakpoint breakpoint, Breakpoint reference); - Task GetBreakpoint(); - } -} diff --git a/src/Connected.Components/Services/ResizeListener/ResizeOptions.cs b/src/Connected.Components/Services/ResizeListener/ResizeOptions.cs deleted file mode 100644 index 9dda7fe..0000000 --- a/src/Connected.Components/Services/ResizeListener/ResizeOptions.cs +++ /dev/null @@ -1,88 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Connected.Services -{ - public class ResizeOptions : IEquatable - { - /// - /// Rate in milliseconds that the browsers `resize()` event should report a change. - /// Setting this value too low can cause poor application performance. - /// - public int ReportRate { get; set; } = 100; - - /// - /// Report resize events and media queries in the browser's console. - /// - public bool EnableLogging { get; set; } = false; - - /// - /// Suppress the first OnResized that is invoked when a new event handler is added. - /// - public bool SuppressInitEvent { get; set; } = true; - - /// - /// If true, RaiseOnResized is called only when breakpoint has changed. - /// - public bool NotifyOnBreakpointOnly { get; set; } = true; - - /// - /// Breakpoint definitions. - /// - public Dictionary BreakpointDefinitions { get; set; } = new(); - - public static bool operator ==(ResizeOptions l, ResizeOptions r) => l.Equals(r); - public static bool operator !=(ResizeOptions l, ResizeOptions r) => !l.Equals(r); - - public override bool Equals(object obj) - { - if (obj is not ResizeOptions) { return false; } - - return Equals((ResizeOptions)obj); - } - - public bool Equals(ResizeOptions other) - { - if (ReportRate != other.ReportRate || - EnableLogging != other.EnableLogging || - SuppressInitEvent != other.SuppressInitEvent || - NotifyOnBreakpointOnly != other.NotifyOnBreakpointOnly) - { - return false; - } - - if (BreakpointDefinitions is not null) - { - if (other.BreakpointDefinitions is null) { return false; } - else - { - if (BreakpointDefinitions.Count != other.BreakpointDefinitions.Count) - { - return false; - } - - foreach (var item in BreakpointDefinitions.Keys) - { - if (other.BreakpointDefinitions.ContainsKey(item) == false) - { - return false; - } - - if (BreakpointDefinitions[item] != other.BreakpointDefinitions[item]) - { - return false; - } - } - - return true; - } - } - else - { - return other.BreakpointDefinitions is null; - } - } - - public override int GetHashCode() => ReportRate; - } -} diff --git a/src/Connected.Components/Services/ResizeListener/ResizeService.cs b/src/Connected.Components/Services/ResizeListener/ResizeService.cs deleted file mode 100644 index 98ef282..0000000 --- a/src/Connected.Components/Services/ResizeListener/ResizeService.cs +++ /dev/null @@ -1,137 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.Extensions.Options; -using Microsoft.JSInterop; - -namespace Connected.Services -{ - /// - /// This service listens to browser resize events and allows you to react to a changing window size in Blazor - /// - public class ResizeService : - ResizeBasedService, - IResizeService - { - private readonly IBrowserWindowSizeProvider _browserWindowSizeProvider; - private readonly ResizeOptions _options; - - /// - /// - /// - /// - /// - /// - [DynamicDependency(nameof(RaiseOnResized))] - public ResizeService(IJSRuntime jsRuntime, IBrowserWindowSizeProvider browserWindowSizeProvider, IOptions options = null) : - base(jsRuntime) - { - this._options = options?.Value ?? new ResizeOptions(); - this._browserWindowSizeProvider = browserWindowSizeProvider; - } - - /// - /// Get the current BrowserWindowSize, this includes the Height and Width of the document. - /// - public ValueTask GetBrowserWindowSize() => - _browserWindowSizeProvider.GetBrowserWindowSize(); - - /// - /// Invoked by jsInterop, use the OnResized event handler to subscribe. - /// - /// - /// - /// - [JSInvokable] - public void RaiseOnResized(BrowserWindowSize browserWindowSize, Breakpoint _, Guid optionId) - { - if (Listeners.ContainsKey(optionId) == false) { return; } - - var listenerInfo = Listeners[optionId]; - listenerInfo.InvokeCallbacks(browserWindowSize); - } - - /// - /// Subscribe to size changes of the browser window. Default ResizeOptions will be used - /// - /// The method (callbacK) that is invoke as soon as the size of the window has changed - /// The subscription id. This id is needed for unscribe - public async Task Subscribe(Action callback) => await Subscribe(callback, _options); - - /// - /// Subscribe to size changes of the browser window using the provided options - /// - /// The method (callbacK) that is invoke as soon as the size of the window has changed - /// - /// The subscription id. This id is needed for unscribe - public async Task Subscribe(Action callback, ResizeOptions options) - { - if (callback is null) - { - throw new ArgumentNullException(nameof(callback)); - } - - options ??= _options; - - if (DotNetRef == null) - { - DotNetRef = DotNetObjectReference.Create(this); - } - - var existingOptionId = Listeners.Where(x => x.Value.Option == options).Select(x => x.Key).FirstOrDefault(); - - if (existingOptionId == default) - { - var subscriptionInfo = new ResizeServiceSubscriptionInfo(options); - var subscriptionId = subscriptionInfo.AddSubscription(callback); - var listenerId = Guid.NewGuid(); - - Listeners.Add(listenerId, subscriptionInfo); - - await JsRuntime.InvokeVoidAsyncWithErrorHandling($"mudResizeListenerFactory.listenForResize", DotNetRef, options, listenerId); - - return subscriptionId; - } - else - { - var entry = Listeners[existingOptionId]; - var subscriptionId = entry.AddSubscription(callback); - - return subscriptionId; - } - } - } - - public interface IResizeService : IAsyncDisposable - { - /// - /// Get the current size of the window - /// - /// A task representing the current browser size - ValueTask GetBrowserWindowSize(); - - /// - /// Subscribe to size changes of the browser window. Default ResizeOptions will be used - /// - /// The method (callbacK) that is invoke as soon as the size of the window has changed - /// The subscription id. This id is needed for unscribe - Task Subscribe(Action callback); - - /// - /// Subscribe to size changes of the browser window using the provided options - /// - /// The method (callbacK) that is invoke as soon as the size of the window has changed - /// The options used to subscribe to changes - /// The subscription id. This id is needed for unscribe - Task Subscribe(Action callback, ResizeOptions options); - - /// - /// Used for cancel the subscription to the resize event. - /// - /// The subscription id (return of subscribe) to cancel - /// True if the subscription could be cancel, false otherwise - Task Unsubscribe(Guid subscriptionId); - } -} diff --git a/src/Connected.Components/Services/ResizeListener/SubscriptionInfo.cs b/src/Connected.Components/Services/ResizeListener/SubscriptionInfo.cs deleted file mode 100644 index 066eb9c..0000000 --- a/src/Connected.Components/Services/ResizeListener/SubscriptionInfo.cs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; - -namespace Connected.Services -{ - public class SubscriptionInfo - { - private readonly Dictionary> _subscriptions; - public TOption Option { get; init; } - - public SubscriptionInfo(TOption options) - { - Option = options; - _subscriptions = new(); - } - - public Guid AddSubscription(Action action) - { - var id = Guid.NewGuid(); - _subscriptions.Add(id, action); - - return id; - } - - public bool ContainsSubscription(Guid listenerId) => _subscriptions.ContainsKey(listenerId); - - public bool RemoveSubscription(Guid listenerId) - { - _subscriptions.Remove(listenerId); - return _subscriptions.Count == 0; - } - - public void InvokeCallbacks(TAction browserWindowSize) - { - foreach (var item in _subscriptions.Values) - { - item.Invoke(browserWindowSize); - } - } - } - - public class ResizeServiceSubscriptionInfo : SubscriptionInfo - { - public ResizeServiceSubscriptionInfo(ResizeOptions options) : base(options) - { - } - } - - public class BreakpointServiceSubscriptionInfo : SubscriptionInfo - { - public BreakpointServiceSubscriptionInfo(ResizeOptions options) : base(options) - { - } - } -} diff --git a/src/Connected.Components/Services/Scroll/ScrollEventArgs.cs b/src/Connected.Components/Services/Scroll/ScrollEventArgs.cs deleted file mode 100644 index 9e14b78..0000000 --- a/src/Connected.Components/Services/Scroll/ScrollEventArgs.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Connected.Interop; - -namespace Connected; - -public class ScrollEventArgs : EventArgs -{ - - /// - /// The BoundingClientRect for the first child of the scrolled element - /// - public BoundingClientRect FirstChildBoundingClientRect { get; set; } - - /// - /// The ScrollTop property gets or sets the number of pixels that an element's content is scrolled vertically - /// - public double ScrollTop { get; set; } - - /// - /// The ScrollLeft property gets or sets the number of pixels that an element's content is scrolled from its left edge. - /// - public double ScrollLeft { get; set; } - - /// - /// The ScrollHeight property is a measurement of the height of an element's content, including content not visible on the screen due to overflow - /// - public int ScrollHeight { get; set; } - - /// - /// The ScrollWidth property is a measurement of the width of an element's content, including content not visible on the screen due to overflow - /// - public int ScrollWidth { get; set; } - - /// - /// Node name of the scrolled element - /// - public string NodeName { get; set; } - -} diff --git a/src/Connected.Components/Services/Scroll/ScrollListener.cs b/src/Connected.Components/Services/Scroll/ScrollListener.cs deleted file mode 100644 index 357bfe2..0000000 --- a/src/Connected.Components/Services/Scroll/ScrollListener.cs +++ /dev/null @@ -1,114 +0,0 @@ -using System; -using System.Diagnostics.CodeAnalysis; -using System.Threading.Tasks; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.JSInterop; - -namespace Connected -{ - - - public interface IScrollListener : IDisposable - { - /// - /// The CSS selector to which the scroll event will be attached - /// - string Selector { get; set; } - - event EventHandler OnScroll; - } - - internal class ScrollListener : IScrollListener, IDisposable - { - private readonly IJSRuntime _js; - private DotNetObjectReference _dotNetRef; - - /// - /// The CSS selector to which the scroll event will be attached - /// - public string Selector { get; set; } = null; - - [DynamicDependency(nameof(RaiseOnScroll))] - [DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(ScrollEventArgs))] - public ScrollListener(IJSRuntime js) : this(string.Empty, js) - { - } - - public ScrollListener(string selector, IJSRuntime js) - { - _js = js; - Selector = selector; - } - - private EventHandler _onScroll; - - /// - /// OnScroll event. Fired when a element is scrolled - /// - public event EventHandler OnScroll - { - add => Subscribe(value); - remove => Unsubscribe(value); - } - - - private async void Subscribe(EventHandler value) - { - if (_onScroll == null) - { - await Start(); - } - _onScroll += value; - } - - private void Unsubscribe(EventHandler value) - { - _onScroll -= value; - if (_onScroll == null) - { - Cancel().ConfigureAwait(false); - } - } - - /// - /// invoked in JS, in scroll-listener.js - /// - /// The scroll event args - [JSInvokable] - public void RaiseOnScroll(ScrollEventArgs e) - { - _onScroll?.Invoke(this, e); - } - - /// - /// Subscribe to scroll event in JS - /// - private ValueTask Start() - { - _dotNetRef = DotNetObjectReference.Create(this); - return _js.InvokeVoidAsyncWithErrorHandling - ("mudScrollListener.listenForScroll", - _dotNetRef, - Selector); - } - - /// - /// Unsubscribe to scroll event in - /// - private async ValueTask Cancel() - { - try - { - await _js.InvokeVoidAsync( - "mudScrollListener.cancelListener", - Selector); - } - catch { /* ignore */ } - } - - public void Dispose() - { - _dotNetRef?.Dispose(); - } - } -} diff --git a/src/Connected.Components/Services/Scroll/ScrollListenerFactory.cs b/src/Connected.Components/Services/Scroll/ScrollListenerFactory.cs deleted file mode 100644 index 4aee153..0000000 --- a/src/Connected.Components/Services/Scroll/ScrollListenerFactory.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.JSInterop; - -namespace Connected -{ - public interface IScrollListenerFactory - { - IScrollListener Create(string selector); - } - - public class ScrollListenerFactory : IScrollListenerFactory - { - private readonly IServiceProvider _provider; - - public ScrollListenerFactory(IServiceProvider provider) - { - _provider = provider; - } - - public IScrollListener Create(string selector) => - new ScrollListener(selector, _provider.GetRequiredService()); - } -} diff --git a/src/Connected.Components/Services/Scroll/ScrollManager.cs b/src/Connected.Components/Services/Scroll/ScrollManager.cs deleted file mode 100644 index 2c010ef..0000000 --- a/src/Connected.Components/Services/Scroll/ScrollManager.cs +++ /dev/null @@ -1,100 +0,0 @@ -using Connected.Extensions; -using Microsoft.JSInterop; - -namespace Connected -{ - /// - /// Inject with the AddMudBlazorScrollServices extension - /// - public interface IScrollManager - { - ValueTask ScrollToAsync(string id, int left, int top, ScrollBehavior scrollBehavior); - ValueTask ScrollIntoViewAsync(string selector, ScrollBehavior behavior); - //ValueTask ScrollToFragmentAsync(string id, ScrollBehavior behavior); - ValueTask ScrollToTopAsync(string id, ScrollBehavior scrollBehavior = ScrollBehavior.Auto); - ValueTask ScrollToYearAsync(string elementId); - ValueTask ScrollToListItemAsync(string elementId); - ValueTask LockScrollAsync(string selector = "body", string cssClass = "scroll-locked"); - ValueTask UnlockScrollAsync(string selector = "body", string cssClass = "scroll-locked"); - ValueTask ScrollToBottomAsync(string elementId, ScrollBehavior scrollBehavior = ScrollBehavior.Auto); - } - - public class ScrollManager : IScrollManager - { - [Obsolete] - public string Selector { get; set; } - private readonly IJSRuntime _jSRuntime; - - public ScrollManager(IJSRuntime jSRuntime) - { - _jSRuntime = jSRuntime; - } - - /// - /// Scrolls to the coordinates of the element - /// - /// id of element - /// x coordinate - /// y coordinate - /// smooth or auto - /// - public ValueTask ScrollToAsync(string id, int left, int top, ScrollBehavior behavior) => - _jSRuntime.InvokeVoidAsync("scrollManager.scrollTo", id, left, top, behavior.ToDescription()); - - /// - /// Scrolls the first instance of the selector into view - /// - /// - /// - /// - public ValueTask ScrollIntoViewAsync(string selector, ScrollBehavior behavior) => - _jSRuntime.InvokeVoidAsync("scrollManager.scrollIntoView", selector, behavior.ToDescription()); - - /// - /// Scrolls to the top of the element - /// - /// id of element - /// smooth or auto - /// - public ValueTask ScrollToTopAsync(string id, ScrollBehavior scrollBehavior = ScrollBehavior.Auto) => - ScrollToAsync(id, 0, 0, scrollBehavior); - - public async Task ScrollToTop(ScrollBehavior scrollBehavior = ScrollBehavior.Auto) - { -#pragma warning disable CS0612 // Type or member is obsolete - await ScrollToAsync(Selector, 0, 0, scrollBehavior); -#pragma warning restore CS0612 // Type or member is obsolete - } - - /// - /// Scroll to the bottom of the element (or if not found to the bottom of the page) - /// - /// id of element of null to scroll to page bottom - /// smooth or auto - /// - public ValueTask ScrollToBottomAsync(string id, ScrollBehavior behavior) => - _jSRuntime.InvokeVoidAsync("scrollManager.scrollToBottom", id, behavior.ToDescription()); - - public ValueTask ScrollToYearAsync(string elementId) => - _jSRuntime.InvokeVoidAsync("scrollManager.scrollToYear", elementId); - - public ValueTask ScrollToListItemAsync(string elementId) => - _jSRuntime.InvokeVoidAsync("scrollManager.scrollToListItem", elementId); - - public ValueTask LockScrollAsync(string selector = "body", string cssClass = "scroll-locked") => - _jSRuntime.InvokeVoidAsync("scrollManager.lockScroll", selector, cssClass); - - public ValueTask UnlockScrollAsync(string selector = "body", string cssClass = "scroll-locked") => - _jSRuntime.InvokeVoidAsyncIgnoreErrors("scrollManager.unlockScroll", selector, cssClass); - } - - /// - /// Smooth: scrolls in a smooth fashion; - /// Auto: is immediate - /// - public enum ScrollBehavior - { - Smooth, - Auto - } -} diff --git a/src/Connected.Components/Services/Scroll/ScrollManagerException.cs b/src/Connected.Components/Services/Scroll/ScrollManagerException.cs deleted file mode 100644 index dda1b6b..0000000 --- a/src/Connected.Components/Services/Scroll/ScrollManagerException.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Diagnostics.CodeAnalysis; - -namespace Connected -{ - - [ExcludeFromCodeCoverage] - [Serializable] - public class ScrollManagerException : Exception - { - public ScrollManagerException() : base() { } - public ScrollManagerException(string message) : base(message) { } - public ScrollManagerException(string message, Exception inner) : base(message, inner) { } - - // A constructor is needed for serialization when an - // exception propagates from a remoting server to the client. - protected ScrollManagerException(System.Runtime.Serialization.SerializationInfo info, - System.Runtime.Serialization.StreamingContext context) : base(info, context) { } - } -} diff --git a/src/Connected.Components/Services/Scroll/ScrollOptions.cs b/src/Connected.Components/Services/Scroll/ScrollOptions.cs deleted file mode 100644 index 35a2988..0000000 --- a/src/Connected.Components/Services/Scroll/ScrollOptions.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.AspNetCore.Components; - -namespace Connected.Services.Scroll -{ - public class ScrollOptions - { - /// - ///the element to be tracked; - /// - public ElementReference Element { get; set; } - - /// - ///the amount of milliseconds that the event is throttled - /// - public int ReportRate { get; set; } = 300; - - /// - /// Suppress the first OnScroll that is invoked when a new event handler is added. - /// - public bool SuppressInitEvent { get; set; } - } -} diff --git a/src/Connected.Components/Services/Scroll/ScrollSpy.cs b/src/Connected.Components/Services/Scroll/ScrollSpy.cs deleted file mode 100644 index a9c1302..0000000 --- a/src/Connected.Components/Services/Scroll/ScrollSpy.cs +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Diagnostics.CodeAnalysis; -using System.Threading.Tasks; -using Microsoft.JSInterop; - -namespace Connected -{ - public class ScrollSectionCenteredEventArgs - { - public ScrollSectionCenteredEventArgs(string id) - { - Id = id; - } - - public string Id { get; init; } - } - - public interface IScrollSpy : IAsyncDisposable - { - /// - /// Start spying for scroll events for elements with the specified classes - /// - /// the class name (without .) to identify the containers to spy on - /// - public Task StartSpying(string elementsSelector); - - /// - /// Center the viewport to DOM element with the given Id - /// - /// The Id of the DOM element, that should be centered - /// - Task ScrollToSection(string id); - - /// - /// Center the viewport to the DOM element represented by the fragment inside the uri - /// - /// The uri which contains the fragment. If no fragment it scrolls to the top of the page - /// - Task ScrollToSection(Uri uri); - event EventHandler ScrollSectionSectionCentered; - - /// - /// Does the same as ScrollToSection but without the scrolling. This can be used to initially set an value - /// - /// - /// - Task SetSectionAsActive(String id); - - /// - /// Get the current position of the centered section - /// - string CenteredSection { get; } - } - - public class ScrollSpy : IScrollSpy - { - public string CenteredSection { get; private set; } - private readonly IJSRuntime _js; - private DotNetObjectReference _dotNetRef; - - [DynamicDependency(nameof(SectionChangeOccured))] - public ScrollSpy(IJSRuntime js) - { - _js = js; - _dotNetRef = DotNetObjectReference.Create(this); - } - - public async Task StartSpying(string containerSelector) => await _js.InvokeVoidAsync - ("mudScrollSpy.spying", containerSelector, _dotNetRef); - - [JSInvokable] - public void SectionChangeOccured(string id) - { - CenteredSection = id; - ScrollSectionSectionCentered?.Invoke(this, new ScrollSectionCenteredEventArgs(id)); - } - - public event EventHandler ScrollSectionSectionCentered; - - public async Task ScrollToSection(string id) - { - CenteredSection = id; - await _js.InvokeVoidAsyncWithErrorHandling - ("mudScrollSpy.scrollToSection", id.Trim('#')); - } - - public async Task SetSectionAsActive(string id) - { - CenteredSection = id; - await _js.InvokeVoidAsyncWithErrorHandling - ("mudScrollSpy.activateSection", id.Trim('#')); - } - - public async Task ScrollToSection(Uri uri) => await ScrollToSection(uri.Fragment); - - public async ValueTask DisposeAsync() - { - try - { - _dotNetRef?.Dispose(); - await _js.InvokeVoidAsyncWithErrorHandling("mudScrollSpy.unspy"); - } - catch (Exception) - { - } - } - } -} diff --git a/src/Connected.Components/Services/Scroll/ScrollSpyFactory.cs b/src/Connected.Components/Services/Scroll/ScrollSpyFactory.cs deleted file mode 100644 index c1f45cd..0000000 --- a/src/Connected.Components/Services/Scroll/ScrollSpyFactory.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.JSInterop; - -namespace Connected -{ - public interface IScrollSpyFactory - { - IScrollSpy Create(); - } - - public class ScrollSpyFactory : IScrollSpyFactory - { - private readonly IServiceProvider _provider; - - public ScrollSpyFactory(IServiceProvider provider) - { - _provider = provider; - } - - public IScrollSpy Create() => - new ScrollSpy(_provider.GetRequiredService()); - } -} diff --git a/src/Connected.Components/Services/ServiceCollectionExtensions.cs b/src/Connected.Components/Services/ServiceCollectionExtensions.cs deleted file mode 100644 index 4a53347..0000000 --- a/src/Connected.Components/Services/ServiceCollectionExtensions.cs +++ /dev/null @@ -1,304 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using Connected.Components; -using Microsoft.AspNetCore.Components; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.DependencyInjection.Extensions; - -namespace Connected.Services; - -[ExcludeFromCodeCoverage] -public static class ServiceCollectionExtensions -{ - /// - /// Adds a Dialog Service as a Scoped instance. - /// - /// IServiceCollection - /// Continues the IServiceCollection chain. - public static IServiceCollection AddBlazorDialog(this IServiceCollection services) - { - services.TryAddScoped(); - return services; - } - - /// - /// Adds a Snackbar Service as a Scoped instance. - /// - /// IServiceCollection - /// Defines SnackbarConfiguration for this instance. - /// Continues the IServiceCollection chain. - public static IServiceCollection AddBlazorSnackbar(this IServiceCollection services, SnackbarConfiguration configuration = null) - { - configuration ??= new SnackbarConfiguration(); - - services.TryAddScoped(builder => - new SnackbarService(builder.GetService(), configuration)); - return services; - } - - /// - /// Adds a Snackbar Service as a Scoped instance. - /// - /// IServiceCollection - /// Defines SnackbarConfiguration for this instance. - /// Continues the IServiceCollection chain. - public static IServiceCollection AddBlazorSnackbar(this IServiceCollection services, Action configuration) - { - if (configuration == null) throw new ArgumentNullException(nameof(configuration)); - - var options = new SnackbarConfiguration(); - configuration(options); - return AddBlazorSnackbar(services, options); - } - - /// - /// Adds a ResizeListener as a Scoped instance. - /// - /// IServiceCollection - /// Defines ResizeOptions for this instance - /// Continues the IServiceCollection chain. - public static IServiceCollection AddBlazorResizeListener(this IServiceCollection services, ResizeOptions options = null) - { - options ??= new ResizeOptions(); - services.AddBlazorResizeListener(o => - { - o = options; - }); - return services; - } - - /// - /// Adds a ResizeListener as a Scoped instance. - /// - /// IServiceCollection - /// Defines ResizeOptions for this instance - /// Continues the IServiceCollection chain. - public static IServiceCollection AddBlazorResizeListener(this IServiceCollection services, Action options) - { - services.TryAddScoped(); - services.TryAddScoped(); - services.TryAddScoped(); - services.TryAddScoped(); - services.Configure(options); - return services; - } - - /// - /// Adds a IResizeObserver as a Transient instance. - /// - /// IServiceCollection - /// Defines ResizeObserverOptions for this instance - /// Continues the IServiceCollection chain. - public static IServiceCollection AddMudBlazorResizeObserver(this IServiceCollection services, Action options) - { - services.TryAddTransient(); - services.Configure(options); - return services; - } - - /// - /// Adds a IResizeObserver as a Transient instance. - /// - /// IServiceCollection - /// Defines ResizeObserverOptions for this instance - /// Continues the IServiceCollection chain. - public static IServiceCollection AddMudBlazorResizeObserver(this IServiceCollection services, ResizeObserverOptions options = null) - { - options ??= new ResizeObserverOptions(); - services.AddMudBlazorResizeObserver(o => - { - o = options; - }); - return services; - } - - /// - /// Adds a IResizeObserverFactory as a scoped dependency. - /// - /// IServiceCollection - /// Defines ResizeObserverOptions for this instance - /// Continues the IServiceCollection chain. - public static IServiceCollection AddMudBlazorResizeObserverFactory(this IServiceCollection services, Action options) - { - services.TryAddScoped(); - services.Configure(options); - return services; - } - - /// - /// Adds a IResizeObserverFactory as a scoped dependency. - /// - /// IServiceCollection - /// Defines ResizeObserverOptions for this instance - /// Continues the IServiceCollection chain. - public static IServiceCollection AddMudBlazorResizeObserverFactory(this IServiceCollection services, ResizeObserverOptions options = null) - { - options ??= new ResizeObserverOptions(); - services.AddMudBlazorResizeObserverFactory(o => - { - o = options; - }); - return services; - } - - /// - /// Adds IKeyInterceptor as a Transient instance. - /// - /// IServiceCollection - /// Continues the IServiceCollection chain. - public static IServiceCollection AddMudBlazorKeyInterceptor(this IServiceCollection services) - { - services.TryAddTransient(); - services.TryAddScoped(); - - return services; - } - - /// - /// Adds JsEvent as a Transient instance. - /// - /// IServiceCollection - /// Continues the IServiceCollection chain. - public static IServiceCollection AddMudBlazorJsEvent(this IServiceCollection services) - { - services.TryAddTransient(); - services.TryAddScoped(); - - return services; - } - - /// - /// Adds ScrollManager as a transient instance. - /// - /// IServiceCollection - public static IServiceCollection AddMudBlazorScrollManager(this IServiceCollection services) - { - services.TryAddTransient(); - return services; - } - - /// - /// Adds ScrollManager as a transient instance. - /// - /// IServiceCollection - /// Defines PopoverOptions for the application/user - public static IServiceCollection AddMudPopoverService(this IServiceCollection services, Action options) - { - services.Configure(options); - services.TryAddScoped(); - return services; - } - - /// - /// Adds ScrollManager as a transient instance. - /// - /// IServiceCollection - /// Defines PopoverOptions for the application/user - public static IServiceCollection AddMudPopoverService(this IServiceCollection services, PopoverOptions options) - { - options ??= new PopoverOptions(); - services.AddMudPopoverService(o => - { - o = options; - }); - return services; - } - - /// - /// Adds ScrollListener as a transient instance. - /// - /// IServiceCollection - public static IServiceCollection AddMudBlazorScrollListener(this IServiceCollection services) - { - services.TryAddTransient(); - services.TryAddScoped(); - - return services; - } - - - /// - /// Adds ScrollSpy as a transient instance. - /// - /// IServiceCollection - public static IServiceCollection AddMudBlazorScrollSpy(this IServiceCollection services) - { - services.TryAddTransient(); - services.TryAddScoped(); - return services; - } - - /// - /// Adds JsApi as a transient instance. - /// - /// IServiceCollection - public static IServiceCollection AddMudBlazorJsApi(this IServiceCollection services) - { - services.TryAddTransient(); - return services; - } - - /// - /// Adds IEventListener as a transient instance. - /// - /// IServiceCollection - public static IServiceCollection AddMudEventManager(this IServiceCollection services) - { - services.TryAddTransient(); - services.TryAddScoped(); - - return services; - } - - /// - /// Adds common services required by MudBlazor components - /// - /// IServiceCollection - /// Defines options for all MudBlazor services. - /// Continues the IServiceCollection chain. - public static IServiceCollection AddUIComponentServices(this IServiceCollection services, MudServicesConfiguration configuration = null) - { - configuration ??= new MudServicesConfiguration(); - return services - .AddBlazorDialog() - .AddBlazorSnackbar(configuration.SnackbarConfiguration) - .AddBlazorResizeListener(configuration.ResizeOptions) - .AddMudBlazorResizeObserver(configuration.ResizeObserverOptions) - .AddMudBlazorResizeObserverFactory() - .AddMudBlazorKeyInterceptor() - .AddMudBlazorJsEvent() - .AddMudBlazorScrollManager() - .AddMudBlazorScrollListener() - .AddMudBlazorJsApi() - .AddMudBlazorScrollSpy() - .AddMudPopoverService(configuration.PopoverOptions) - .AddMudEventManager(); - } - - /// - /// Adds common services required by MudBlazor components - /// - /// IServiceCollection - /// Defines options for all MudBlazor services. - /// Continues the IServiceCollection chain. - public static IServiceCollection AddMudServices(this IServiceCollection services, Action configuration) - { - if (configuration == null) throw new ArgumentNullException(nameof(configuration)); - - var options = new MudServicesConfiguration(); - configuration(options); - return services - .AddBlazorDialog() - .AddBlazorSnackbar(options.SnackbarConfiguration) - .AddBlazorResizeListener(options.ResizeOptions) - .AddMudBlazorResizeObserver(options.ResizeObserverOptions) - .AddMudBlazorResizeObserverFactory(options.ResizeObserverOptions) - .AddMudBlazorKeyInterceptor() - .AddMudBlazorJsEvent() - .AddMudBlazorScrollManager() - .AddMudBlazorScrollListener() - .AddMudBlazorJsApi() - .AddMudPopoverService(options.PopoverOptions) - .AddMudBlazorScrollSpy() - .AddMudEventManager(); - } -} diff --git a/src/Connected.Components/Services/ServiceConfiguration.cs b/src/Connected.Components/Services/ServiceConfiguration.cs deleted file mode 100644 index 25edef7..0000000 --- a/src/Connected.Components/Services/ServiceConfiguration.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Connected.Components; - -namespace Connected.Services -{ - // Add additional configuration objects here when adding new services - - /// - /// Common services configuration required by MudBlazor components - /// - public class MudServicesConfiguration - { - public SnackbarConfiguration SnackbarConfiguration { get; set; } = new SnackbarConfiguration(); - public ResizeOptions ResizeOptions { get; set; } = new ResizeOptions(); - public ResizeObserverOptions ResizeObserverOptions { get; set; } = new ResizeObserverOptions(); - public PopoverOptions PopoverOptions { get; set; } = new PopoverOptions(); - } -} diff --git a/src/Connected.Components/Styles/Connected.Components.scss b/src/Connected.Components/Styles/Connected.Components.scss index f18c486..7829ff0 100644 --- a/src/Connected.Components/Styles/Connected.Components.scss +++ b/src/Connected.Components/Styles/Connected.Components.scss @@ -1,88 +1,4 @@ -/*! - * MudBlazor (https://mudblazor.com/) - * Copyright (c) 2021 MudBlazor - * Licensed under MIT (https://github.com/MudBlazor/MudBlazor/blob/master/LICENSE) - */ - -@import 'abstracts/_colors'; -@import 'abstracts/_variables'; -@import 'abstracts/_mixins'; - -@import 'core/_base'; -@import 'core/_blazor'; -@import 'core/_animations'; -@import 'core/_reset'; -@import 'core/_elevation'; - -@import 'components/_alert'; -@import 'components/_badge'; -@import 'components/_toolbar'; -@import 'components/_tooltip'; -@import 'components/_avatar'; -@import 'components/_breadcrumbs'; -@import 'components/_button'; -@import 'components/_buttongroup'; -@import 'components/_iconbutton'; -@import 'components/_card'; -@import 'components/_carousel'; -@import 'components/_charts'; -@import 'components/_checkbox'; -@import 'components/_chip'; -@import 'components/_collapse'; -@import 'components/_dialog'; -@import 'components/_field'; -@import 'components/_grid'; -@import 'components/_paper'; -@import 'components/_icons'; -@import 'components/_divider'; -@import 'components/_dropzone'; -@import 'components/_expansionpanel'; -@import 'components/_fab'; -@import 'components/_form'; -@import 'components/_list'; -@import 'components/_layout'; -@import 'components/_menu'; -@import 'components/_link'; -@import 'components/_navmenu'; -@import 'components/_pagecontentnavigation'; -@import 'components/_pagination'; -@import 'components/_picker'; -@import 'components/_pickerdate'; -@import 'components/_pickertime'; -@import 'components/_pickercolor'; -@import 'components/_popover'; -@import 'components/_simpletable'; -@import 'components/_skeleton'; -@import 'components/_slider'; -@import 'components/_progresscircular'; -@import 'components/_progresslinear'; -@import 'components/_radio'; -@import 'components/_rating'; -@import 'components/_snackbar'; -@import 'components/_switch'; -@import 'components/_timeline'; -@import 'components/_typography'; -@import 'components/_table'; -@import 'components/_tabs'; -@import 'components/_select'; -@import 'components/_input'; -@import 'components/_inputcontrol'; -@import 'components/_inputlabel'; -@import 'components/_fileupload'; -@import 'components/_image'; -@import 'components/_overlay'; -@import 'components/_treeview'; -@import 'components/_datagrid'; - -@import 'utilities'; - -@import 'layout/_appbar'; -@import 'layout/_drawer'; -@import 'layout/_main'; -@import 'layout/_container'; -@import 'layout/_scroll'; - - -@import 'core/_colors'; -@import 'core/_ripple'; -@import 'core/_rtl'; \ No newline at end of file +@import 'globals/_index'; +@import 'layout/_index'; +@import 'components/_index'; +@import 'util/_index'; \ No newline at end of file diff --git a/src/Connected.Components/Styles/abstracts/_colors.scss b/src/Connected.Components/Styles/abstracts/_colors.scss deleted file mode 100644 index 986e2d6..0000000 --- a/src/Connected.Components/Styles/abstracts/_colors.scss +++ /dev/null @@ -1,86 +0,0 @@ -@import 'variables'; - -@each $color in $palette-colors { - .#{$color} { - background-color: var(--palette-#{$color}) !important; - } - - .#{$color}-text { - color: var(--palette-#{$color}) !important; - } - - .#{$color}-hover { - background-color: var(--palette-#{$color}-hover) !important; - } - - .hover\:#{$color}-hover { - &:hover, &:focus-visible { - background-color: var(--palette-#{$color}-hover) !important; - } - } - - .border-#{$color} { - border-color: var(--palette-#{$color}) !important; - } - - .theme-#{$color} { - color: var(--palette-#{$color}-text) !important; - background-color: var(--palette-#{$color}) !important; - } -} - -.inherit-text { - color: inherit !important; -} - -.border-lines-default{ - border-color: var(--palette-lines-default); -} - -.background { - background-color: var(--palette-background) !important; -} - -.background-gray{ - background-color: var(--palette-background-grey) !important; -} - -.theme-transparent { - color: inherit !important; - background-color: transparent !important; -} - -.transparent { - background-color: transparent !important; -} - -.transparent-text { - color: transparent !important; -} - -.text-primary { - color: var(--palette-text-primary); -} - -.text-secondary { - color: var(--palette-text-secondary); -} - -.text-disabled { - color: var(--palette-text-disabled); -} - -.white { - background-color: #FFFFFF !important; -} -.white-text { - color: #FFFFFF !important; -} - -.black { - background-color: #000000 !important; -} - -.black-text { - color: #000000 !important; -} diff --git a/src/Connected.Components/Styles/abstracts/_mixins.scss b/src/Connected.Components/Styles/abstracts/_mixins.scss deleted file mode 100644 index 5a960f8..0000000 --- a/src/Connected.Components/Styles/abstracts/_mixins.scss +++ /dev/null @@ -1,53 +0,0 @@ -@mixin inputplaceholder { - // CSS Pseudo-Element - &::placeholder { - @content - } - /* - Chrome ≤56, - - Safari 5-10.0 - - iOS Safari 4.2-10.2 - - Opera 15-43 - - Opera Mobile 12-12.1 - - Android Browser 2.1-4.4.4 - - Samsung Internet ≤6.2 - - QQ Browser */ - &::-webkit-input-placeholder { - @content - } - // Firefox 4-18 - &:-moz-placeholder { - @content - } - // Firefox 19-50 - &::-moz-placeholder { - @content - } - // IE 10–11 - IE Mobile 10-11 - &:-ms-input-placeholder { - @content - } - // Edge - &::-ms-input-placeholder { - @content - } -} - -@mixin slider-track { - &::-webkit-slider-runnable-track { - @content - } - // Firefox - &::-moz-range-track { - @content - } -} - -@mixin slider-thumb { - &::-webkit-slider-thumb { - @content - } - // Firefox - &::-moz-range-thumb { - @content - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/abstracts/_variables.scss b/src/Connected.Components/Styles/abstracts/_variables.scss deleted file mode 100644 index 650f9c5..0000000 --- a/src/Connected.Components/Styles/abstracts/_variables.scss +++ /dev/null @@ -1,13 +0,0 @@ -$palette-colors: primary, secondary, tertiary, info, success, warning, error, dark; - -$sizes: small, medium, large; - -$breakpoint-xs: 0px; -$breakpoint-sm: 600px; -$breakpoint-md: 960px; -$breakpoint-lg: 1280px; -$breakpoint-xl: 1920px; -$breakpoint-xxl: 2560px; - -$breakpoints: ( xs: $breakpoint-xs, sm: $breakpoint-sm, md: $breakpoint-md, lg: $breakpoint-lg, xl: $breakpoint-xl, xxl: $breakpoint-xxl ); -$breakpoints-css-utilities-only: ( sm: $breakpoint-sm, md: $breakpoint-md, lg: $breakpoint-lg, xl: $breakpoint-xl, xxl: $breakpoint-xxl ); diff --git a/src/Connected.Components/Styles/components/_alert.scss b/src/Connected.Components/Styles/components/_alert.scss deleted file mode 100644 index 21a0a8d..0000000 --- a/src/Connected.Components/Styles/components/_alert.scss +++ /dev/null @@ -1,120 +0,0 @@ -@import "../abstracts/variables"; - -.alert { - display: flex; - padding: 6px 16px; - border-radius: var(--default-borderradius); - background-color: transparent; - transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - - &.square { - border-radius: 0px; - } - - &.dense { - padding: 0px 12px; - } -} - -.alert-text { - &-normal { - color: var(--palette-text-primary); - background-color: var(--palette-dark-hover); - } - - @each $color in $palette-colors { - &-#{$color} { - color: var(--palette-#{$color}-darken); - background-color: var(--palette-#{$color}-hover); - - & .alert-icon { - color: var(--palette-#{$color}); - } - } - } -} - -.alert-outlined { - &-normal { - color: var(--palette-text-primary); - border: 1px solid var(--palette-text-primary); - } - - @each $color in $palette-colors { - &-#{$color} { - color: var(--palette-#{$color}-darken); - border: 1px solid var(--palette-#{$color}); - - & .alert-icon { - color: var(--palette-#{$color}); - } - } - } -} - -.alert-filled { - &-normal { - color: var(--palette-dark-text); - font-weight: 500; - background-color: var(--palette-dark); - } - - @each $color in $palette-colors { - &-#{$color} { - color: var(--palette-#{$color}-text); - font-weight: 500; - background-color: var(--palette-#{$color}); - } - } -} - -.alert-icon { - display: flex; - opacity: 0.9; - padding: 7px 0; - font-size: 22px; - margin-right: 12px; - margin-inline-end: 12px; - margin-inline-start: unset; - - &.alert-icon-left { - margin-right: 12px; - margin-inline-end: 12px; - margin-inline-start: unset; - } - - &.alert-icon-right { - margin-left: 12px; - margin-inline-start: 12px; - margin-inline-end: unset; - } -} - -.alert-message { - padding: 9px 0; -} - -.alert-position { - flex: 1; - display: flex; -} - -.alert-content { - flex: 1; - display: flex; -} - -.alert.justify-end .alert-content { - justify-content: flex-end; -} - -.alert.justify-center .alert-content { - justify-content: center; -} - -.alert-close { - display: flex; - flex: 0; - align-items: center; - margin-left: 8px; -} diff --git a/src/Connected.Components/Styles/components/_avatar.scss b/src/Connected.Components/Styles/components/_avatar.scss deleted file mode 100644 index ead9bf5..0000000 --- a/src/Connected.Components/Styles/components/_avatar.scss +++ /dev/null @@ -1,131 +0,0 @@ -@import '../abstracts/variables'; - -.avatar { - display: flex; - overflow: hidden; - position: relative; - display: inline-flex; - align-items: center; - flex-shrink: 0; - line-height: 1; - user-select: none; - border-radius: 50%; - justify-content: center; - color: var(--palette-white); - background-color: var(--palette-grey-light); - - &.avatar-small { - width: 24px; - height: 24px; - font-size: .875rem; - } - - &.avatar-medium { - width: 40px; - height: 40px; - font-size: 1.25rem; - } - - &.avatar-large { - width: 56px; - height: 56px; - font-size: 1.75rem; - } -} - - -.avatar-rounded { - border-radius: var(--default-borderradius); -} - -.avatar-square { - border-radius: 0; -} - -.avatar-img { - color: transparent; - width: 100%; - height: 100%; - object-fit: cover; - text-align: center; - text-indent: 10000px; -} - -.avatar-fallback { - width: 75%; - height: 75%; -} - -.avatar-outlined { - color: var(--palette-text-primary); - background-color: unset; - border: 1px solid var(--palette-text-primary); - - @each $color in $palette-colors { - &.avatar-outlined-#{$color} { - color: var(--palette-#{$color}); - border: 1px solid var(--palette-#{$color}); - } - } -} - -.avatar-filled { - color: var(--palette-white); - background-color: var(--palette-grey-light); - - @each $color in $palette-colors { - &.avatar-filled-#{$color} { - background-color: var(--palette-#{$color}); - } - } -} - - -.avatar-group { - display: flex; - - .avatar:first-child { - margin-inline-start: 0px !important; - } - - &.avatar-group-outlined { - &.avatar-group-outlined-transparent { - .avatar:not(.avatar-outlined) { - border-color: transparent; - } - } - - &.avatar-group-outlined-surface { - .avatar:not(.avatar-outlined) { - border-color: var(--palette-surface); - } - } - - @each $color in $palette-colors { - &.avatar-group-outlined-#{$color} { - .avatar:not(.avatar-outlined) { - border-color: var(--palette-#{$color}); - } - } - } - - .avatar { - border: 2px solid; - - &.avatar-small { - width: 28px; - height: 28px; - } - - &.avatar-medium { - width: 44px; - height: 44px; - } - - &.avatar-large { - width: 60px; - height: 60px; - } - } - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_badge.scss b/src/Connected.Components/Styles/components/_badge.scss deleted file mode 100644 index e89a397..0000000 --- a/src/Connected.Components/Styles/components/_badge.scss +++ /dev/null @@ -1,203 +0,0 @@ -.badge-root { - position: relative; - display: inline-block; - - .badge-wrapper { - top: 0; - left: 0; - flex: 0 1; - width: 100%; - height: 100%; - display: flex; - pointer-events: none; - position: absolute; - - &.badge { - - &-top { - align-items: flex-start; - - &.left { - justify-content: flex-start; - } - - &.center { - justify-content: center; - } - - &.right { - justify-content: flex-end; - } - } - - &-center { - align-items: center; - - &.left { - justify-content: flex-start; - } - - &.center { - justify-content: center - } - - &.right { - justify-content: flex-end; - } - } - - &-bottom { - align-items: flex-end; - - &.left { - justify-content: flex-start; - } - - &.center { - justify-content: center; - } - - &.right { - justify-content: flex-end; - } - } - } - } -} - -.badge { - border-radius: 10px; - font-size: 12px; - height: 20px; - letter-spacing: 0; - min-width: 20px; - padding: 4px 6px; - pointer-events: auto; - line-height: 1; - position: absolute; - text-align: center; - text-indent: 0; - top: auto; - transition: .3s cubic-bezier(.25,.8,.5,1); - white-space: nowrap; - - &.badge-default { - color: var(--palette-text-primary); - background-color: var(--palette-grey-light); - } - - &.badge-bordered { - border-color: var(--palette-surface); - border-style: solid; - border-width: 2px; - padding: 3px 4px; - - &.badge-icon { - padding: 4px 6px; - - & .icon-badge { - margin-left: -4px; - margin-inline-start: -4px; - margin-inline-end: unset; - margin-top: -4px; - } - } - } - - &.badge-icon { - width: 20px; - height: 20px; - - & .icon-badge { - color: inherit; - font-size: 12px; - margin-left: -2px; - margin-inline-start: -2px; - margin-inline-end: unset; - } - } - - &.badge-dot { - border-radius: 50%; - height: 9px; - min-width: 0; - padding: 0; - width: 9px; - } - - &.badge { - - &-top { - &.left { - inset: auto calc(100% - 4px) calc(100% - 4px) auto; - - &.badge-overlap { - inset: auto calc(100% - 12px) calc(100% - 12px) auto; - } - } - - &.center { - bottom: calc(100% - 4px); - - &.badge-overlap { - bottom: calc(100% - 12px); - } - } - - &.right { - inset: auto auto calc(100% - 4px) calc(100% - 4px); - - &.badge-overlap { - inset: auto auto calc(100% - 12px) calc(100% - 12px); - } - } - } - - &-center { - &.left { - right: calc(100% - 4px); - - &.badge-overlap { - right: calc(100% - 12px); - } - } - - &.center { - } - - &.right { - left: calc(100% - 4px); - - &.badge-overlap { - left: calc(100% - 12px); - } - } - } - - &-bottom { - &.left { - inset: calc(100% - 4px) calc(100% - 4px) auto auto; - - &.badge-overlap { - inset: calc(100% - 12px) calc(100% - 12px) auto auto; - } - } - - &.center { - top: calc(100% - 4px); - - &.badge-overlap { - top: calc(100% - 12px); - } - } - - &.right { - inset: calc(100% - 4px) auto auto calc(100% - 4px); - - &.badge-overlap { - inset: calc(100% - 12px) auto auto calc(100% - 12px); - } - } - } - } -} diff --git a/src/Connected.Components/Styles/components/_breadcrumbs.scss b/src/Connected.Components/Styles/components/_breadcrumbs.scss deleted file mode 100644 index cfdb4bc..0000000 --- a/src/Connected.Components/Styles/components/_breadcrumbs.scss +++ /dev/null @@ -1,48 +0,0 @@ -.breadcrumbs { - display: flex; - flex-wrap: wrap; - flex: 0 1 auto; - align-items: center; - list-style-type: none; - margin: 0; - padding: 16px 12px; -} - -.breadcrumb-separator { - padding: 0 12px; -} - -.breadcrumb-separator > span { - color: var(--palette-text-primary); - opacity: 0.38 -} - -.breadcrumb-item > a { - display: flex; - align-items: center; -} - -.breadcrumb-item > a > svg.icon-root { - margin-right: 4px; - margin-inline-end: 4px; - margin-inline-start: unset; -} - -.breadcrumb-item.disabled > a { - pointer-events: none; - color: var(--palette-action-disabled); -} - -.breadcrumbs-expander { - cursor: pointer; - display: flex; - background-color: #EEEEEE; -} - -.breadcrumbs-expander:hover { - background-color: #E0E0E0; -} - -.breadcrumbs-expander > svg { - width: 26px; -} diff --git a/src/Connected.Components/Styles/components/_button.scss b/src/Connected.Components/Styles/components/_button.scss deleted file mode 100644 index ca8a27a..0000000 --- a/src/Connected.Components/Styles/components/_button.scss +++ /dev/null @@ -1,270 +0,0 @@ -@import '../abstracts/variables'; - -.button-root { - color: inherit; - border: 0; - cursor: pointer; - margin: 0; - display: inline-flex; - outline: 0; - padding: 0; - position: relative; - align-items: center; - user-select: none; - border-radius: 0; - vertical-align: middle; - -moz-appearance: none; - justify-content: center; - text-decoration: none; - background-color: transparent; - -webkit-appearance: none; - -webkit-tap-highlight-color: transparent; - - &::-moz-focus-inner { - border-style: none; - } - - &:disabled { - color: var(--palette-action-disabled) !important; - cursor: default; - pointer-events: none; - } -} - -.button { - padding: 6px 16px; - font-family: var(--typography-button-family); - font-size: var(--typography-button-size); - font-weight: var(--typography-button-weight); - line-height: var(--typography-button-lineheight); - letter-spacing: var(--typography-button-letterspacing); - text-transform: var(--typography-button-text-transform); - min-width: 64px; - box-sizing: border-box; - transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - border-radius: var(--default-borderradius); - color: var(--palette-text-primary); - - &:hover, &:focus-visible { - background-color: var(--palette-action-default-hover); - } -} - -.button-label { - width: 100%; - display: inherit; - align-items: inherit; - justify-content: inherit; -} - -.button-text { - padding: 6px 8px; - - &.button-text-inherit { - color: inherit; - } - - @each $color in $palette-colors { - &.button-text-#{$color} { - color: var(--palette-#{$color}); - - &:hover, &:focus-visible { - background-color: var(--palette-#{$color}-hover); - } - } - } -} - -.button-outlined { - color: var(--palette-text-primary); - border: 1px solid var(--palette-text-primary); - padding: 5px 15px; - - &.button-outlined-inherit { - color: inherit; - border-color: currentColor; - } - - &.icon-button { - padding: 5px; - } - - &:hover, &:focus-visible { - background-color: var(--palette-action-default-hover); - } - - @each $color in $palette-colors { - &.button-outlined-#{$color} { - color: var(--palette-#{$color}); - border: 1px solid var(--palette-#{$color}); - - &:hover, &:focus-visible { - border: 1px solid var(--palette-#{$color}); - background-color: var(--palette-#{$color}-hover); - } - } - } - - &:disabled { - border: 1px solid var(--palette-action-disabled-background); - } -} - -.button-filled { - color: var(--palette-text-primary); - box-shadow: 0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12); - background-color: var(--palette-action-default-hover); - - &.icon-button { - padding: 6px; - } - - &:hover, &:focus-visible { - box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0,0,0,.12); - background-color: var(--palette-action-disabled-background); - } - - &:active { - box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0,0,0,.12); - } - - - &:disabled { - color: var(--palette-action-disabled); - box-shadow: none; - background-color: var(--palette-action-disabled-background) !important; - } - - @each $color in $palette-colors { - &.button-filled-#{$color} { - color: var(--palette-#{$color}-text); - background-color: var(--palette-#{$color}); - - &:hover, &:focus-visible { - background-color: var(--palette-#{$color}-darken); - } - } - } -} - -.button-disable-elevation { - box-shadow: none; - - &:hover { - box-shadow: none; - } - - &:active { - box-shadow: none; - } - - &.focus-visible { - box-shadow: none; - } - - &:disabled { - box-shadow: none; - } -} - - -.button-color-inherit { - color: inherit; - border-color: currentColor; -} - -.button-text-size-small { - padding: 4px 5px; - font-size: 0.8125rem; -} - -.button-text-size-large { - padding: 8px 11px; - font-size: 0.9375rem; -} - -.button-outlined-size-small { - padding: 3px 9px; - font-size: 0.8125rem; - - &.icon-button { - padding: 4px; - } -} - -.button-outlined-size-large { - padding: 7px 21px; - font-size: 0.9375rem; - - &.icon-button { - padding: 4px; - } -} - -.button-filled-size-small { - padding: 4px 10px; - font-size: 0.8125rem; - - &.icon-button { - padding: 5px; - } -} - -.button-filled-size-large { - padding: 8px 22px; - font-size: 0.9375rem; - - &.icon-button { - padding: 5px; - } -} - -.button-full-width { - width: 100%; -} - -.button-label { - .button-icon-start { - display: inherit; - margin-left: -4px; - margin-right: 8px; - margin-inline-start: -4px; - margin-inline-end: 8px; - - &.button-icon-size-small { - margin-left: -2px; - margin-inline-start: -2px; - margin-inline-end: 8px; - } - } - - .button-icon-end { - display: inherit; - margin-left: 8px; - margin-right: -4px; - margin-inline-start: 8px; - margin-inline-end: -4px; - - &.button-icon-size-small { - margin-right: -2px; - margin-inline-end: -2px; - margin-inline-start: 8px; - } - } -} - - - - - -.button-icon-size-small > *:first-child { - font-size: 18px; -} - -.button-icon-size-medium > *:first-child { - font-size: 20px; -} - -.button-icon-size-large > *:first-child { - font-size: 22px; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_buttongroup.scss b/src/Connected.Components/Styles/components/_buttongroup.scss deleted file mode 100644 index 378fbb6..0000000 --- a/src/Connected.Components/Styles/components/_buttongroup.scss +++ /dev/null @@ -1,322 +0,0 @@ -@import '../abstracts/variables'; - -.button-group-root { - border-radius: var(--default-borderradius); - display: inline-flex; - - .button-root { - border-radius: var(--default-borderradius); - } - - &.button-group-override-styles { - .button { - color: var(--palette-text-primary); - } - - .button-root { - background-color: inherit; - box-shadow: none; - border: none; - - &:hover, &:focus-visible { - background-color: var(--palette-action-default-hover); - } - } - } -} -.button-group-horizontal { - &:not(.button-group-rtl) { - > .button-root:not(:last-child), > :not(:last-child) .button-root { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - - > .button-root:not(:first-child), > :not(:first-child) .button-root { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - margin-left: -1px; - } - } - - &.button-group-rtl { - > .button-root:not(:last-child), > :not(:last-child) .button-root { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - margin-left: -1px; - } - - > .button-root:not(:first-child), > :not(:first-child) .button-root { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - } -} - -.button-group-vertical { - flex-direction: column; - .icon-button { - width: 100%; - } - - > .button-root:not(:last-child), > :not(:last-child) .button-root { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } - - > .button-root:not(:first-child), > :not(:first-child) .button-root { - border-top-right-radius: 0; - border-top-left-radius: 0; - margin-top: -1px; - } -} - -.button-group-text { - &.button-group-override-styles { - .button-root { - padding: 6px 8px; - } - - &.button-group-horizontal { - &:not(.button-group-rtl) { - .button-root:not(:first-child), > :not(:first-child) .button-root { - border-left: 1px solid var(--palette-text-primary); - } - } - - &.button-group-rtl { - .button-root:not(:first-child), > :not(:first-child) .button-root { - border-right: 1px solid var(--palette-text-primary); - } - } - } - - &.button-group-vertical { - .button-root:not(:last-child), > :not(:last-child) .button-root { - border-bottom: 1px solid var(--palette-text-primary); - } - } - - @each $color in $palette-colors { - &.button-group-text-#{$color} { - .button-root { - color: var(--palette-#{$color}); - - &:hover, &:focus-visible { - background-color: var(--palette-#{$color}-hover); - } - } - - &.button-group-horizontal { - &:not(.button-group-rtl) { - .button-root:not(:first-child), > :not(:first-child) .button-root { - border-left: 1px solid var(--palette-#{$color}); - } - } - - &.button-group-rtl { - .button-root:not(:first-child), > :not(:first-child) .button-root { - border-right: 1px solid var(--palette-#{$color}); - } - } - } - - &.button-group-vertical { - .button-root:not(:last-child), > :not(:last-child) .button-root { - border-bottom: 1px solid var(--palette-#{$color}); - } - } - } - } - } -} - -.button-group-outlined { - &.button-group-override-styles { - .button-root { - padding: 5px 15px; - border: 1px solid var(--palette-text-primary); - } - - @each $color in $palette-colors { - &.button-group-outlined-#{$color} .button-root { - color: var(--palette-#{$color}); - border: 1px solid var(--palette-#{$color}); - - &:hover, &:focus-visible { - background-color: var(--palette-#{$color}-hover); - } - } - } - } -} - -.button-group-filled { - box-shadow: var(--elevation-2); - - .button-root { - box-shadow: none; - - &:hover, &:focus-visible { - box-shadow: var(--elevation-4); - } - } - - &.button-group-override-styles { - .button-root { - background-color: var(--palette-action-default-hover); - padding: 6px 16px; - } - - &.button-group-horizontal { - &:not(.button-group-rtl) { - .button-root:not(:first-child), > :not(:first-child) .button-root { - border-left: 1px solid var(--palette-divider); - } - } - - &.button-group-rtl { - .button-root:not(:first-child), > :not(:first-child) .button-root { - border-right: 1px solid var(--palette-divider); - } - } - } - - &.button-group-vertical { - .button-root:not(:first-child), > :not(:first-child) .button-root { - border-top: 1px solid var(--palette-divider); - } - } - - @each $color in $palette-colors { - &.button-group-filled-#{$color} { - .button-root { - background-color: var(--palette-#{$color}); - color: var(--palette-#{$color}-text); - - &:hover, &:focus-visible { - background-color: var(--palette-#{$color}-darken); - } - } - - &.button-group-horizontal { - &:not(.button-group-rtl) { - .button-root:not(:first-child), > :not(:first-child) .button-root { - border-left: 1px solid var(--palette-#{$color}-lighten); - } - } - - &.button-group-rtl { - .button-root:not(:first-child), > :not(:first-child) .button-root { - border-right: 1px solid var(--palette-#{$color}-lighten); - } - } - } - - &.button-group-vertical { - .button-root:not(:first-child), > :not(:first-child) .button-root { - border-top: 1px solid var(--palette-#{$color}-lighten); - } - } - } - } - } -} - -.button-group-disable-elevation { - box-shadow: none; -} - -.button-group-root { - &.button-group-text-size-small .button-root { - padding: 4px 5px; - font-size: 0.8125rem; - - &.icon-button .icon-root { - font-size: 1.422rem; - } - } - - &.button-group-text-size-large .button-root { - padding: 8px 11px; - font-size: 0.9375rem; - - &.icon-button .icon-root { - font-size: 1.641rem; - } - } - - &.button-group-outlined-size-small .button-root { - padding: 3px 9px; - font-size: 0.8125rem; - - &.icon-button { - padding: 3px 9px; - - .icon-root { - font-size: 1.422rem; - } - } - } - - &.button-group-outlined-size-large .button-root { - padding: 7px 21px; - font-size: 0.9375rem; - - &.icon-button { - padding: 7px 15px; - - .icon-root { - font-size: 1.641rem; - } - } - } - - &.button-group-filled-size-small .button-root { - padding: 4px 10px; - font-size: 0.8125rem; - - &.icon-button { - padding: 4px 10px; - - .icon-root { - font-size: 1.422rem; - } - } - } - - &.button-group-filled-size-large .button-root { - padding: 8px 22px; - font-size: 0.9375rem; - - &.icon-button { - padding: 8px 16px; - - .icon-root { - font-size: 1.641rem; - } - } - } -} - -.button-group-root { - .button-root.icon-button { - padding-right: 12px; - padding-left: 12px; - - .icon-root { - font-size: 1.516rem; - } - - &.ripple-icon { - &:after { - transform: scale(10,10); - } - - &:active:after { - transform: scale(0,0); - opacity: 0.1; - transition: 0s; - } - } - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_buttons.scss b/src/Connected.Components/Styles/components/_buttons.scss new file mode 100644 index 0000000..5b46b0e --- /dev/null +++ b/src/Connected.Components/Styles/components/_buttons.scss @@ -0,0 +1,134 @@ +@use "../globals/" as *; +@use "../util/" as *; + +@mixin btn($bg-color: #e2e2e2) { + display: inline-block; + cursor: pointer; + font-weight: $font-weight-400; + white-space: nowrap; + color: inherit; + text-align: center; + vertical-align: middle; + user-select: none; + background-color: $bg-color; + border: 1px solid transparent; + padding: 0.375rem 1rem; + font-size: $base-font-size; + text-transform: uppercase; + line-height: $base-font-size * 1.5; + text-decoration: none; + border-radius: $base-border-radius * 20; + transition: $transition; +} + +.btn { + @include btn; +} + +@each $key, $val in $theme-colors { + .btn-#{$key} { + // @include btn(); + background-color: $val; + color: set-color($val); + border: 1px solid transparent; + &:hover { + background-color: darken($val, 10); + } + &:focus-visible, + &.focus { + outline: 0; + box-shadow: 0 0 0 0.15rem lighten($val, 20); + } + &:active, + &.active { + background-color: darken($val, 15); + } + } + .btn-outline-#{$key} { + // @include btn(); + color: $val; + background-color: transparent; + border: 1px solid $val; + &:hover { + color: darken($val, 10); + border: 1px solid darken($val, 10); + } + &:focus-visible, + &.focus { + outline: 0; + box-shadow: 0 0 0 0.15rem lighten($val, 20); + } + &:active, + &.active { + background-color: darken($val, 15); + color: set-color($val); + } + } +} + +.btn.btn-sm { + font-size: $font-size-sm; + line-height: $font-size-sm * 1.5; + padding: 0.25rem 0.75rem; + border-radius: $base-border-radius; +} + +.btn.btn-lg { + font-size: $font-size-md; + line-height: $font-size-md * 1.5; + padding: 0.5rem 1.25rem; + border-radius: $base-border-radius * 2.5; +} + +.btn.btn-block { + font-size: $font-size-md; + line-height: $font-size-md * 1.5; + padding: 0.5rem 1.25rem; + border-radius: $base-border-radius * 2.5; + display: block; + width: 100%; +} + +.btn.disabled, +.btn:disabled { + opacity: 0.4; + //pointer-events: none; + cursor: not-allowed; +} + +.btn-core { + background-color: var(--bg-core-primary) !important; + color: set-color (var(--bg-core-primary)) !important; + &:hover { + background-color: var(--bg-core-primary-darken) !important; + } + &:focus-visible, + &.focus { + outline: 0; + box-shadow: 0 0 0 0.15rem var(--bg-core-primary-lighten); + } + &:active, + &.active { + background-color: var(--bg-core-primary-darken) !important; + } +} + +.btn-outline-core { + color: var(--bg-core-primary) !important; + background-color: transparent !important; + border: 1px solid var(--bg-core-primary) !important; + &:hover { + color: var(--bg-core-primary-darken) !important; + border: 1px solid var(--bg-core-primary-darken) !important; + } + &:focus-visible, + &.focus { + outline: 0; + box-shadow: 0 0 0 0.15rem var(--bg-core-primary-lighten); + } + &:active, + &.active { + background-color: var(--bg-core-primary-darken) !important; + color: set-color (var(--bg-core-primary-darken)) !important; + } +} diff --git a/src/Connected.Components/Styles/components/_card.scss b/src/Connected.Components/Styles/components/_card.scss deleted file mode 100644 index 6aa626b..0000000 --- a/src/Connected.Components/Styles/components/_card.scss +++ /dev/null @@ -1,59 +0,0 @@ -.card { - -} - -.card-header { - display: flex; - padding: 16px; - align-items: center; - border-top-left-radius: inherit; - border-top-right-radius: inherit; - - & .card-header-avatar { - flex: 0 0 auto; - margin-right: 16px; - margin-inline-end: 16px; - margin-inline-start: unset; - } - - & .card-header-content { - flex: 1 1 auto; - - & .typography { - margin-bottom: 0; - } - } - - & .card-header-actions { - flex: 0 0 auto; - align-self: flex-start; - margin-top: -8px; - margin-right: -8px; - margin-inline-end: -8px; - margin-inline-start: unset; - } -} - -.card-media { - display: block; - background-size: cover; - background-repeat: no-repeat; - background-position: center; - border-top-left-radius: inherit; - border-top-right-radius: inherit; -} - -.card-header + .card-media { - border-top-left-radius: 0px; - border-top-right-radius: 0px; -} - -.card-content { - padding: 16px; -} - -.card-actions { - display: flex; - padding: 8px; - align-items: center; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_carousel.scss b/src/Connected.Components/Styles/components/_carousel.scss deleted file mode 100644 index 21da256..0000000 --- a/src/Connected.Components/Styles/components/_carousel.scss +++ /dev/null @@ -1,211 +0,0 @@ -@import '../abstracts/variables'; - -.carousel { - display: flex !important; - position: relative; - margin: 0px !important; - clip-path: inset(0px 0px 0px 0px); - overflow: hidden; - - @each $color in $palette-colors { - &.carousel-#{$color} { - color: var(--palette-#{$color}-text); - } - } -} - -.carousel-elements-rtl { - transform: rotate(180deg) !important; -} - -.carousel-item { - position: absolute; - left: 0px; - right: 0px; - top: 0px; - bottom: 0px; - margin: inherit; - padding: inherit; - z-index: 2; - - @each $color in $palette-colors { - &.carousel-item-#{$color} { - color: var(--palette-#{$color}-text); - background-color: var(--palette-#{$color}); - } - } -} - -.carousel-item-exit { - z-index: 1; -} - -/* ### Transitions ### */ - -/*Fade -*/ -@keyframes carousel-transition-fade-in-keyframe { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} - -@keyframes carousel-transition-fade-out-keyframe { - from { - opacity: 1; - } - - to { - opacity: 0; - } -} - - -.carousel-transition-fade-in { - animation: 0.5s carousel-transition-fade-in-keyframe -} - -.carousel-transition-fade-out { - animation: 0.5s carousel-transition-fade-out-keyframe; - animation-fill-mode: forwards; -} - -.carousel-transition-none { - display: none; -} - - - -/*Slide -*/ -@keyframes carousel-transition-slide-next-enter-keyframe { - from { - transform: translate3d(100%, 0, 0); - visibility: visible; - } - - to { - transform: translate3d(0, 0, 0); - } -} - -@keyframes carousel-transition-slide-next-rtl-enter-keyframe { - from { - transform: translate3d(-100%, 0, 0); - visibility: visible; - } - - to { - transform: translate3d(0, 0, 0); - } -} - -@keyframes carousel-transition-slide-next-exit-keyframe { - from { - transform: translate3d(0, 0, 0); - visibility: visible; - } - - to { - transform: translate3d(-100%, 0, 0); - } -} - -@keyframes carousel-transition-slide-next-rtl-exit-keyframe { - from { - transform: translate3d(0, 0, 0); - visibility: visible; - } - - to { - transform: translate3d(100%, 0, 0); - } -} - -.carousel-transition-slide-next-enter { - animation: 0.5s carousel-transition-slide-next-enter-keyframe -} - -.carousel-transition-slide-next-rtl-enter { - animation: 0.5s carousel-transition-slide-next-rtl-enter-keyframe; -} - -.carousel-transition-slide-next-exit { - animation: 0.5s carousel-transition-slide-next-exit-keyframe; - animation-fill-mode: forwards; - -} - -.carousel-transition-slide-next-rtl-exit { - animation: 0.5s carousel-transition-slide-next-rtl-exit-keyframe; - animation-fill-mode: forwards; -} - - - -@keyframes carousel-transition-slide-prev-enter-keyframe { - from { - transform: translate3d(-100%, 0, 0); - visibility: visible; - } - - to { - transform: translate3d(0, 0, 0); - } -} - -@keyframes carousel-transition-slide-prev-rtl-enter-keyframe { - from { - transform: translate3d(100%, 0, 0); - visibility: visible; - } - - to { - transform: translate3d(0, 0, 0); - } -} - -@keyframes carousel-transition-slide-prev-exit-keyframe { - from { - transform: translate3d(0, 0, 0); - visibility: visible; - } - - to { - transform: translate3d(100%, 0, 0); - } -} - -@keyframes carousel-transition-slide-prev-rtl-exit-keyframe { - from { - transform: translate3d(0, 0, 0); - visibility: visible; - } - - to { - transform: translate3d(-100%, 0, 0); - } -} - -.carousel-transition-slide-prev-enter { - animation: 0.5s carousel-transition-slide-prev-enter-keyframe -} - -.carousel-transition-slide-prev-rtl-enter { - animation: 0.5s carousel-transition-slide-prev-rtl-enter-keyframe; -} - -.carousel-transition-slide-prev-exit { - animation: 0.5s carousel-transition-slide-prev-exit-keyframe; - animation-fill-mode: forwards; -} - -.carousel-transition-slide-prev-rtl-exit { - animation: 0.5s carousel-transition-slide-prev-rtl-exit-keyframe; - animation-fill-mode: forwards; -} - diff --git a/src/Connected.Components/Styles/components/_charts.scss b/src/Connected.Components/Styles/components/_charts.scss deleted file mode 100644 index 7b2f427..0000000 --- a/src/Connected.Components/Styles/components/_charts.scss +++ /dev/null @@ -1,135 +0,0 @@ -.chart { - display: flex; - - &.chart-legend-bottom { - flex-direction: column; - - .chart-legend { - margin-top: 10px; - justify-content: center; - width: 100%; - } - } - - &.chart-legend-top { - flex-direction: column-reverse; - - & .chart-legend { - justify-content: center; - width: 100%; - } - } - - &.chart-legend-right { - flex-direction: row; - - & .chart-legend { - flex-direction: column; - } - } - - &.chart-legend-left { - flex-direction: row-reverse; - - & .chart-legend { - flex-direction: column; - } - } - - - & .chart-donut, .chart-pie, chart-line { - display: flex; - margin: auto; - } - - & .chart-legend { - display: flex; - padding: 10px 0px; - margin: auto; - flex-wrap: wrap; - - & .chart-legend-item { - display: block; - margin: 2px 5px; - - & .chart-legend-marker { - height: 12px; - width: 12px; - border-radius: 50%; - position: relative; - display: inline-flex; - } - - & .chart-legend-text { - display: inline-flex; - } - } - } -} - -.charts-yaxis { - fill: var(--palette-text-primary); -} - -.charts-xaxis { - fill: var(--palette-text-primary); -} - -.chart-donut { - & .donut-hole { - fill: transparent; - user-select: none; - pointer-events: unset; - } - - & .donut-ring { - fill: transparent; - stroke-width: 5; - stroke: white; - pointer-events: unset; - } - - & .donut-segment { - stroke-width: 5; - fill: transparent; - pointer-events: stroke; - -webkit-transition: stroke .2s ease; - -moz-transition: stroke .2s ease; - -o-transition: stroke .2s ease; - transition: stroke .2s ease; - } -} - -.chart-legend-marker { - height: 12px; - width: 12px; - border-radius: 50%; - position: relative; - display: inline-block; -} - - - - - - -.chart-marker-color-0 { - background-color: #008FFB; -} - -.chart-marker-color-1 { - background-color: #00E396; -} - -.chart-marker-color-2 { - background-color: #FEB019; -} - -.chart-marker-color-3 { - background-color: #FF4560; -} - -.chart-marker-color-4 { - background-color: #594ae2; -} - diff --git a/src/Connected.Components/Styles/components/_checkbox.scss b/src/Connected.Components/Styles/components/_checkbox.scss index a7845af..cf01d5d 100644 --- a/src/Connected.Components/Styles/components/_checkbox.scss +++ b/src/Connected.Components/Styles/components/_checkbox.scss @@ -1,45 +1,102 @@ -.checkbox { - cursor: pointer; - display: inline-flex; - align-items: center; - vertical-align: middle; - -webkit-tap-highlight-color: transparent; - - &.disabled, .disabled:hover, .disabled:focus-visible { - cursor: default; - background-color: transparent !important; - - & * { - cursor: default; - color: var(--palette-text-disabled); - } - } +$color3: #f4f4f4; +$color4: var(--bg-core-primary-darken); - &.readonly, .readonly:hover { - cursor: default; +.checkbox-group { + margin: 0.5rem; + position:relative; + input[type="checkbox"] { + position: absolute; + opacity: 0; + + .checkbox-label { + &:before { + content: ""; + background: transparent; + border-radius: 0%; + border: 2px solid $color4; + display: inline-block; + width: 1.25em; + height: 1.25em; + position: relative; + top: .15rem; + margin-right: .75em; + vertical-align: top; + cursor: pointer; + text-align: center; + z-index: 1; + transition: all 250ms ease; + } } + &:checked { + + .checkbox-label { + &:before { + background-color: $color4; + box-shadow: inset 0 0 0 2px $color3; - & .checkbox-dense { - padding: 4px; + } + } + } + // &:checked { + // + .checkbox-label { + // &:after { + // background: $color3; + // z-index: 1; + // opacity: 1; + // scale: 0.25; + // clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%); + + // } + // } + // } + &:focus { + + .checkbox-label { + &:before { + outline: none; + border-color: $color4; + } + } + } + &:disabled { + + .checkbox-label { + color: darken($color3, 25%); + pointer-events: none; + &:before { + box-shadow: inset 0 0 0 2px $color3; + border-color: darken($color3, 25%); + background: darken($color3, 25%); + } + } } + + .checkbox-label { + &:empty { + &:before { + margin-right: 0; + } + } + } + } } -.checkbox-input { - top: 0; - left: 0; - width: 100%; - cursor: inherit; - height: 100%; - margin: 0; - opacity: 0; - padding: 0; - z-index: 1; - position: absolute; -} -.checkbox-span { - display: inline-block; - width: 100%; - cursor: pointer; + +.checkbox-label:after { + content: ""; + display: inline-block; + width: 35px; + height: 35px; + border-radius: 50%; + background-color: transparent; + position: absolute; + left: -8px; + top: -6px; + scale: .75; + transition: scale 0.35s cubic-bezier(0.6,-1.25,0.6,2.25); } + + + +.checkbox-label:hover:after { + background: var(--bg-core-primary-lighten); + scale: 1; + opacity: .5; +} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_chip.scss b/src/Connected.Components/Styles/components/_chip.scss deleted file mode 100644 index 5ce8aa1..0000000 --- a/src/Connected.Components/Styles/components/_chip.scss +++ /dev/null @@ -1,153 +0,0 @@ -@import '../abstracts/variables'; - -.chip { - border: none; - cursor: default; - display: inline-flex; - max-width: 100%; - outline: 0; - padding: 0 12px; - position: relative; - box-sizing: border-box; - transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - align-items: center; - white-space: nowrap; - vertical-align: middle; - justify-content: center; - text-decoration: none; - line-height: normal; - margin: 4px; - - &.disabled { - opacity: 0.5; - pointer-events: none; - } - - &.chip-size-small { - border-radius: 12px; - font-size: 12px; - height: 24px; - } - - &.chip-size-medium { - height: 32px; - font-size: 14px; - border-radius: 16px; - } - - &.chip-size-large { - height: 40px; - font-size: 16px; - border-radius: 20px; - } - - &.chip-label { - border-radius: var(--default-borderradius); - } - - &.clickable { - cursor: pointer; - } - - .chip-icon { - margin-left: -4px; - margin-right: 4px; - margin-inline-start: -4px; - margin-inline-end: 4px; - color: inherit; - } - - .chip-close-button { - padding: 1px; - margin-right: -4px; - margin-left: 6px; - margin-inline-end: -4px; - margin-inline-start: 6px; - height: 18px; - width: 18px; - color: inherit; - transition: .3s cubic-bezier(.25,.8,.5,1),visibility 0s; - - .icon-size-small { - font-size: 1.15rem; - } - - &:hover { - opacity: .70; - } - } - - & > .chip-content { - align-items: center; - display: inline-flex; - height: 100%; - max-width: 100%; - user-select: none; - } -} - -.chip-filled { - color: var(--palette-text-primary); - background-color: var(--palette-action-disabled-background); - - &:hover:not(.disabled), &:focus-visible:not(.disabled) { - background-color: var(--palette-action-disabled); - } - - @each $color in $palette-colors { - &.chip-color-#{$color} { - color: var(--palette-#{$color}-text); - background-color: var(--palette-#{$color}); - - &:hover:not(.disabled), &:focus-visible:not(.disabled) { - background-color: var(--palette-#{$color}-darken); - } - } - } -} -.chip-outlined { - color: var(--palette-text-primary); - border: 1px solid var(--palette-lines-inputs); - - &:hover:not(.disabled), &:focus-visible:not(.disabled) { - background-color: var(--palette-action-default-hover); - } - - @each $color in $palette-colors { - &.chip-color-#{$color} { - color: var(--palette-#{$color}); - border: 1px solid var(--palette-#{$color}); - - &:hover:not(.disabled), &:focus-visible:not(.disabled) { - background-color: var(--palette-#{$color}-hover); - } - - &.chip-selected { - background-color: var(--palette-#{$color}-hover); - - &:hover:not(.disabled), &:focus-visible:not(.disabled) { - background-color: rgba(var(--palette-#{$color}-rgb), 0.12); - } - } - } - } -} -.chip-text { - color: var(--palette-text-primary); - background-color: var(--palette-action-default-hover); - - &:hover:not(.disabled), &:focus-visible:not(.disabled) { - background-color: var(--palette-action-disabled-background); - } - - @each $color in $palette-colors { - &.chip-color-#{$color} { - color: var(--palette-#{$color}); - background-color: var(--palette-#{$color}-hover); - - &:hover:not(.disabled), &:focus-visible:not(.disabled) { - background-color: rgba(var(--palette-#{$color}-rgb), 0.12); - } - } - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_collapse.scss b/src/Connected.Components/Styles/components/_collapse.scss deleted file mode 100644 index 22c5a24..0000000 --- a/src/Connected.Components/Styles/components/_collapse.scss +++ /dev/null @@ -1,48 +0,0 @@ -.collapse-container { - height: 0px; - overflow: hidden; -} - -@keyframes expand-anim { - from { - height: 0; - } -} - -.collapse-entering { - animation: expand-anim 1s ease-in-out 0ms 1 forwards; - - &.navgroup-collapse { - animation-duration: 300ms !important; - } -} - -.collapse-entered { - overflow: initial; -} - -@keyframes collapse-anim { - to { - height: 0; - } -} - -.collapse-exiting { - animation: collapse-anim 0.5s cubic-bezier(0, 1, 0, 1) 0ms 1 forwards; - - &.navgroup-collapse { - animation-duration: 300ms; - } -} - -.collapse-hidden { - visibility: hidden; -} - -.collapse-wrapper { - display: flex; -} - -.collapse-wrapper-inner { - width: 100%; -} diff --git a/src/Connected.Components/Styles/components/_datagrid.scss b/src/Connected.Components/Styles/components/_datagrid.scss deleted file mode 100644 index 62c34c4..0000000 --- a/src/Connected.Components/Styles/components/_datagrid.scss +++ /dev/null @@ -1,132 +0,0 @@ -@import '../abstracts/variables'; - -.data-grid { - th { - position: relative; - } - - .table-cell { - &.edit-mode-cell { - //padding: 0 !important; - - .input-control { - margin: 0 !important; - } - - .input { - font-size: inherit; - - &:before { - content: none; - } - - &after { - content: none; - } - - .input-outlined-border { - border: none; - } - } - } - - &.filter-header-cell { - padding: 6px 24px 6px 16px; - padding-inline-start: 16px; - padding-inline-end: 24px; - } - - &.sticky-left { - left: 0px; - position: sticky; - background-color: var(--palette-background-grey); - z-index: 1; - } - - &.sticky-right { - right: 0px; - position: sticky; - background-color: var(--palette-background-grey); - z-index: 1; - } - - .input-text { - margin-top: 0 !important; - } - - .column-header { - display: flex; - justify-content: space-between; - - .sortable-column-header { - width: 100%; - } - - &:hover { - .column-options .sort-direction-icon, .column-options .column-options-icon { - opacity: 0.8; - color: var(--palette-action-default); - } - - .column-options .menu .icon-button-label { - opacity: 1.0; - color: var(--palette-action-default); - } - } - - .column-options { - display: inline-flex; - align-items: center; - flex-direction: inherit; - justify-content: flex-start; - } - - .sort-direction-icon { - font-size: 18px; - margin-left: 4px; - margin-left: 4px; - margin-inline-start: 4px; - margin-inline-end: unset; - user-select: none; - transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - opacity: 0; - - &.direction-desc { - opacity: 1; - transform: rotate(180deg); - } - - &.direction-asc { - opacity: 1; - transform: rotate(0deg); - } - } - - .sort-index { - transform: scale(0.9) translate(-2px, -2px); - } - - .column-options .menu .icon-button-label { - /*font-size: 18px;*/ - user-select: none; - /*margin-right: 4px;*/ - transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - opacity: 0; - } - } - - .resizer { - position: absolute; - top: 0; - right: 0; - width: 8px; - cursor: col-resize; - user-select: none; - } - - .resizer:hover, - .resizing { - border-right: 2px solid var(--palette-primary); - } - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_dialog.scss b/src/Connected.Components/Styles/components/_dialog.scss deleted file mode 100644 index ed28590..0000000 --- a/src/Connected.Components/Styles/components/_dialog.scss +++ /dev/null @@ -1,201 +0,0 @@ -.dialog-container { - display: flex; - position: fixed; - top: 0; - width: 100%; - height: 100%; - z-index: var(--zindex-dialog); - - &.dialog-center { - align-items: center; - justify-content: center; - } - - &.dialog-topcenter { - align-items: flex-start; - justify-content: center; - padding-top: 32px; - } - - &.dialog-bottomcenter { - align-items: flex-end; - justify-content: center; - padding-bottom: 32px; - } - - &.dialog-centerright { - align-items: center; - justify-content: flex-end; - padding-right: 32px; - } - - &.dialog-centerleft { - align-items: center; - justify-content: flex-start; - padding-left: 32px; - } - - &.dialog-topleft .dialog { - position: absolute; - top: 32px; - left: 32px; - } - - &.dialog-topright .dialog { - position: absolute; - top: 32px; - right: 32px; - } - - &.dialog-bottomleft .dialog { - position: absolute; - bottom: 32px; - left: 32px; - } - - &.dialog-bottomright .dialog { - position: absolute; - bottom: 32px; - right: 32px; - } -} - -.dialog { - display: flex; - z-index: calc(var(--zindex-dialog) + 2); - flex-direction: column; - color: var(--palette-text-primary); - background-color: var(--palette-surface); - border-radius: var(--default-borderradius); - -webkit-animation: open-dialog-center 0.1s cubic-bezier(0.390, 0.575, 0.565, 1.000) both; - animation: open-dialog-center 0.1s cubic-bezier(0.390, 0.575, 0.565, 1.000) both; - box-shadow: 0px 11px 15px -7px rgba(0,0,0,0.2), 0px 24px 38px 3px rgba(0,0,0,0.14), 0px 9px 46px 8px rgba(0,0,0,0.12); - - &.dialog-rtl .dialog-title .button-root { - right: unset; - left: 8px; - } - - & .dialog-title { - z-index: +1; - flex: 0 0 auto; - margin: 0; - padding: 16px 24px; - border-top-left-radius: var(--default-borderradius); - border-top-right-radius: var(--default-borderradius); - - + * > .dialog-content { - border-radius: 0 - } - & .button-root { - top: 8px; - right: 8px; - position: absolute; - } - } - - & .dialog-content { - position: relative; - flex: 1 1 auto; - padding: 8px 24px; - -webkit-overflow-scrolling: touch; - border-top-left-radius: var(--default-borderradius); - border-top-right-radius: var(--default-borderradius); - - &.dialog-no-side-padding { - padding: 12px 0px; - } - } - - & .dialog-actions { - flex: 0 0 auto; - display: flex; - padding: 8px; - align-items: center; - justify-content: flex-end; - border-bottom-left-radius: var(--default-borderradius); - border-bottom-right-radius: var(--default-borderradius); - - & > :not(:first-child) { - margin-left: 8px; - margin-inline-start: 8px; - margin-inline-end: unset; - } - } -} - - -.dialog-width-false { - max-width: calc(100% - 64px); -} - -.dialog-width-xs { - max-width: 444px; -} - -.dialog-width-sm { - max-width: 600px; -} - -.dialog-width-md { - max-width: 960px; -} - -.dialog-width-lg { - max-width: 1280px; -} - -.dialog-width-xl { - max-width: 1920px; -} - -.dialog-width-xxl { - max-width: 2560px; -} - -.dialog-width-full { - width: calc(100% - 64px); -} - -.dialog-fullscreen { - width: 100%; - height: 100%; - margin: 0; - max-width: 100%; - max-height: none; - border-radius: 0; -} - -@-webkit-keyframes open-dialog-center { - 0% { - opacity: 0; - } - - 1% { - -webkit-transform: scale(0.5); - transform: scale(0.5); - opacity: 1; - } - - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@keyframes open-dialog-center { - 0% { - opacity: 0; - } - - 1% { - -webkit-transform: scale(0.5); - transform: scale(0.5); - opacity: 1; - } - - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} diff --git a/src/Connected.Components/Styles/components/_divider.scss b/src/Connected.Components/Styles/components/_divider.scss deleted file mode 100644 index 1b1ca10..0000000 --- a/src/Connected.Components/Styles/components/_divider.scss +++ /dev/null @@ -1,39 +0,0 @@ -.divider { - margin: 0; - flex-shrink: 0; - border-color: var(--palette-divider); - border-width: 1px; - border-style: solid none none none; -} - -.divider-absolute { - left: 0; - width: 100%; - bottom: 0; - position: absolute; -} - -.divider-inset { - margin-left: 72px; - margin-inline-start: 72px; - margin-inline-end: unset; -} - -.divider-light { - border-color: var(--palette-divider-light); -} - -.divider-middle { - margin-left: 16px; - margin-right: 16px; -} - -.divider-vertical { - border-style: none solid none none; - height: 100%; -} - -.divider-flexitem { - height: auto; - align-self: stretch; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_dropzone.scss b/src/Connected.Components/Styles/components/_dropzone.scss deleted file mode 100644 index 496d817..0000000 --- a/src/Connected.Components/Styles/components/_dropzone.scss +++ /dev/null @@ -1,35 +0,0 @@ - -.drop-zone { - position:relative; - transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; -} - -.drop-zone-drag-block > * { - pointer-events: none; -} - -.drop-zone-can-drop { - background-color: var(--palette-success-hover); -} - -.drop-zone-no-drop { - background-color: var(--palette-error-hover); -} - -.drop-item:not(.drop-item-preview-start) { - cursor: grab; - user-select: none; - - &:active { - cursor: grabbing; - } -} - -.drop-item-preview-start { - height: 20px; - width: 100%; - position: absolute; - top: 0; - left: 0; - z-index: +1; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_expansionpanel.scss b/src/Connected.Components/Styles/components/_expansionpanel.scss deleted file mode 100644 index 572c7c3..0000000 --- a/src/Connected.Components/Styles/components/_expansionpanel.scss +++ /dev/null @@ -1,125 +0,0 @@ - -.expansion-panels { - flex: 0 1 auto; - position: relative; - max-width: 100%; - transition: .3s cubic-bezier(.25,.8,.5,1); - border-radius: var(--default-borderradius); - - &.expansion-panels-square { - border-radius: 0px; - } - - &.expansion-panels-borders { - & .expand-panel { - border-bottom: 1px solid var(--palette-lines-default); - } - } -} - -.expand-panel { - flex: 1 0 100%; - max-width: 100%; - position: relative; - transition: margin .3s cubic-bezier(.25,.8,.5,1); - transition-delay: 100ms; - color: var(--palette-text-primary); - background-color: var(--palette-surface); - - &.expand-panel-border { - border-bottom: 1px solid var(--palette-lines-default); - } - - &:first-child { - border-top-left-radius: inherit; - border-top-right-radius: inherit; - } - - &:last-child { - border-bottom: none; - border-bottom-left-radius: inherit; - border-bottom-right-radius: inherit; - } - - &.panel-expanded { - margin: 16px 0; - border-radius: inherit; - border-bottom: none; - transition-delay: 0ms; - - &:first-child { - margin-top: 0; - } - - &:last-child { - margin-bottom: 0; - } - - & + .expand-panel { - border-top-left-radius: inherit; - border-top-right-radius: inherit; - } - } - - &.panel-next-expanded { - border-bottom: none; - border-bottom-left-radius: inherit; - border-bottom-right-radius: inherit; - } - - & .expand-panel-header { - width: 100%; - align-items: center; - display: flex; - font-size: .9375rem; - line-height: 1; - min-height: 48px; - outline: none; - padding: 16px 24px; - position: relative; - transition: min-height .3s cubic-bezier(.25,.8,.5,1); - user-select: none; - - &:hover { - cursor: pointer; - } - - & .expand-panel-text { - flex: 1 1 auto; - } - - & .expand-panel-icon { - transition: .3s cubic-bezier(.25,.8,.5,1),visibility 0s; - - &.transform { - transform: rotate(-180deg); - } - } - } - - & .expand-panel-content { - padding: 0 24px 16px; - flex: 1 1 auto; - max-width: 100%; - - &.expand-panel-gutters { - padding-left: 0px; - padding-right: 0px; - } - - &.expand-panel-dense { - padding-top: 0px; - padding-bottom: 0px; - } - } -} - -.disabled { - & > .expand-panel-header { - color: var(--palette-text-disabled); - - &:hover { - cursor: default; - } - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_fab.scss b/src/Connected.Components/Styles/components/_fab.scss deleted file mode 100644 index e9f6049..0000000 --- a/src/Connected.Components/Styles/components/_fab.scss +++ /dev/null @@ -1,139 +0,0 @@ -@import '../abstracts/variables'; - -.fab { - padding: 0; - font-family: var(--typography-button-family); - font-size: var(--typography-button-size); - font-weight: var(--typography-button-weight); - line-height: var(--typography-button-lineheight); - letter-spacing: var(--typography-button-letterspacing); - text-transform: var(--typography-button-text-transform); - min-width: 0; - box-shadow: 0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12); - box-sizing: border-box; - min-height: 36px; - transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - border-radius: 50%; - color: var(--palette-text-primary); - background-color: var(--palette-action-default-hover); - - &:hover, &:focus-visible { - box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0,0,0,.12); - text-decoration: none; - background-color: var(--palette-action-disabled-background); - } - - &:active { - box-shadow: 0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12); - } - - &:disabled { - color: var(--palette-action-disabled); - box-shadow: none; - background-color: var(--palette-action-disabled-background); - cursor: default; - pointer-events: none; - - &:hover { - background-color: var(--palette-action-disabled-background); - } - } -} - -.fab-disable-elevation { - box-shadow: none; - - &:hover { - box-shadow: none; - } - - &:active { - box-shadow: none; - } - - &.focus-visible { - box-shadow: none; - } - - &:disabled { - box-shadow: none; - } -} - -.fab-label { - width: 100%; - display: inherit; - align-items: inherit; - justify-content: inherit; -} - - -@each $color in $palette-colors { - .fab-#{$color} { - color: var(--palette-#{$color}-text); - background-color: var(--palette-#{$color}); - - &:hover, &:focus-visible { - background-color: var(--palette-#{$color}-darken); - } - } -} - -.fab-extended { - - &.fab-size-large { - width: auto; - height: 48px; - padding: 0 16px; - min-width: 48px; - min-height: auto; - border-radius: 24px; - - .fab-label { - gap: 8px; - } - } - - &.fab-size-small { - width: auto; - height: 34px; - padding: 0 12px; - min-width: 34px; - border-radius: 17px; - - .fab-label { - gap: 4px; - } - } - - &.fab-size-medium { - width: auto; - height: 40px; - padding: 0 16px; - min-width: 40px; - border-radius: 20px; - - .fab-label { - gap: 8px; - } - } -} - -.fab-color-inherit { - color: inherit; -} - -.fab-size-small { - width: 40px; - height: 40px; -} - -.fab-size-medium { - width: 48px; - height: 48px; -} - -.fab-size-large { - width: 56px; - height: 56px; -} diff --git a/src/Connected.Components/Styles/components/_field.scss b/src/Connected.Components/Styles/components/_field.scss deleted file mode 100644 index 55db22d..0000000 --- a/src/Connected.Components/Styles/components/_field.scss +++ /dev/null @@ -1,33 +0,0 @@ -.input-control.field { - .input-slot { - height: auto; - min-height: 19px; - - &.input-root-outlined.input-adorned-start { - padding-left: 0; - padding-inline-start: 0; - padding-inline-end: 14px; - } - - &.input-root-filled.input-adorned-start { - padding-left: 0; - padding-inline-start: 0; - padding-inline-end: 12px; - } - - &.input-slot-nopadding { - padding-top: 0px; - padding-bottom: 0px; - - &.input-root-filled { - padding-top: 21px; - padding-bottom: 2px; - } - - &.input-root-outlined { - padding-top: 7px; - padding-bottom: 2px; - } - } - } -} diff --git a/src/Connected.Components/Styles/components/_fileupload.scss b/src/Connected.Components/Styles/components/_fileupload.scss deleted file mode 100644 index 1bf458a..0000000 --- a/src/Connected.Components/Styles/components/_fileupload.scss +++ /dev/null @@ -1,7 +0,0 @@ -.file-upload { - flex-grow: 0; -} - -.file-upload > .input-control-input-container { - display: initial !important; -} diff --git a/src/Connected.Components/Styles/components/_form.scss b/src/Connected.Components/Styles/components/_form.scss deleted file mode 100644 index 4850de6..0000000 --- a/src/Connected.Components/Styles/components/_form.scss +++ /dev/null @@ -1,5 +0,0 @@ -.form { - -} - - \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_grid.scss b/src/Connected.Components/Styles/components/_grid.scss index ad82aa3..6a994b3 100644 --- a/src/Connected.Components/Styles/components/_grid.scss +++ b/src/Connected.Components/Styles/components/_grid.scss @@ -1,618 +1,104 @@ -@import '../abstracts/variables'; +@use "../util" as *; +@use "../globals" as *; -.grid { - width: 100%; - display: flex; - flex-wrap: wrap; - box-sizing: border-box; -} - -.grid-item { - margin: 0; - box-sizing: border-box; -} - - -.grid-spacing-xs-1 { - width: calc(100% + 8px); - margin: -4px; -} - -.grid-spacing-xs-1 > .grid-item { - padding: 4px; -} - -.grid-spacing-xs-2 { - width: calc(100% + 16px); - margin: -8px; -} - -.grid-spacing-xs-2 > .grid-item { - padding: 8px; -} - -.grid-spacing-xs-3 { - width: calc(100% + 24px); - margin: -12px; -} - -.grid-spacing-xs-3 > .grid-item { - padding: 12px; -} - -.grid-spacing-xs-4 { - width: calc(100% + 32px); - margin: -16px; -} - -.grid-spacing-xs-4 > .grid-item { - padding: 16px; -} - -.grid-spacing-xs-5 { - width: calc(100% + 40px); - margin: -20px; -} - -.grid-spacing-xs-5 > .grid-item { - padding: 20px; -} - -.grid-spacing-xs-6 { - width: calc(100% + 48px); - margin: -24px; -} - -.grid-spacing-xs-6 > .grid-item { - padding: 24px; -} - -.grid-spacing-xs-7 { - width: calc(100% + 56px); - margin: -28px; -} - -.grid-spacing-xs-7 > .grid-item { - padding: 28px; -} - -.grid-spacing-xs-8 { - width: calc(100% + 64px); - margin: -32px; -} - -.grid-spacing-xs-8 > .grid-item { - padding: 32px; -} - -.grid-spacing-xs-9 { - width: calc(100% + 72px); - margin: -36px; -} - -.grid-spacing-xs-9 > .grid-item { - padding: 36px; -} - -.grid-spacing-xs-10 { - width: calc(100% + 80px); - margin: -40px; -} - -.grid-spacing-xs-10 > .grid-item { - padding: 40px; -} - -.grid-item-xs-auto { - flex-grow: 0; - max-width: none; - flex-basis: auto; -} - -.grid-item-xs-true { - flex-grow: 1; - max-width: 100%; - flex-basis: 0; -} - -.grid-item-xs-1 { - flex-grow: 0; - max-width: 8.333333%; - flex-basis: 8.333333%; -} - -.grid-item-xs-2 { - flex-grow: 0; - max-width: 16.666667%; - flex-basis: 16.666667%; -} - -.grid-item-xs-3 { - flex-grow: 0; - max-width: 25%; - flex-basis: 25%; +@mixin grid { + display: grid; } -.grid-item-xs-4 { - flex-grow: 0; - max-width: 33.333333%; - flex-basis: 33.333333%; -} - -.grid-item-xs-5 { - flex-grow: 0; - max-width: 41.666667%; - flex-basis: 41.666667%; -} - -.grid-item-xs-6 { - flex-grow: 0; - max-width: 50%; - flex-basis: 50%; -} - -.grid-item-xs-7 { - flex-grow: 0; - max-width: 58.333333%; - flex-basis: 58.333333%; -} - -.grid-item-xs-8 { - flex-grow: 0; - max-width: 66.666667%; - flex-basis: 66.666667%; -} - -.grid-item-xs-9 { - flex-grow: 0; - max-width: 75%; - flex-basis: 75%; -} - -.grid-item-xs-10 { - flex-grow: 0; - max-width: 83.333333%; - flex-basis: 83.333333%; -} - -.grid-item-xs-11 { - flex-grow: 0; - max-width: 91.666667%; - flex-basis: 91.666667%; -} - -.grid-item-xs-12 { - flex-grow: 0; - max-width: 100%; - flex-basis: 100%; -} - -@media (min-width:$breakpoint-sm) { - .grid-item-sm-auto { - flex-grow: 0; - max-width: none; - flex-basis: auto; - } - - .grid-item-sm-true { - flex-grow: 1; - max-width: 100%; - flex-basis: 0; - } - - .grid-item-sm-1 { - flex-grow: 0; - max-width: 8.333333%; - flex-basis: 8.333333%; - } - - .grid-item-sm-2 { - flex-grow: 0; - max-width: 16.666667%; - flex-basis: 16.666667%; - } - - .grid-item-sm-3 { - flex-grow: 0; - max-width: 25%; - flex-basis: 25%; - } - - .grid-item-sm-4 { - flex-grow: 0; - max-width: 33.333333%; - flex-basis: 33.333333%; - } - - .grid-item-sm-5 { - flex-grow: 0; - max-width: 41.666667%; - flex-basis: 41.666667%; - } - - .grid-item-sm-6 { - flex-grow: 0; - max-width: 50%; - flex-basis: 50%; - } - - .grid-item-sm-7 { - flex-grow: 0; - max-width: 58.333333%; - flex-basis: 58.333333%; - } - - .grid-item-sm-8 { - flex-grow: 0; - max-width: 66.666667%; - flex-basis: 66.666667%; - } - - .grid-item-sm-9 { - flex-grow: 0; - max-width: 75%; - flex-basis: 75%; - } - - .grid-item-sm-10 { - flex-grow: 0; - max-width: 83.333333%; - flex-basis: 83.333333%; - } - - .grid-item-sm-11 { - flex-grow: 0; - max-width: 91.666667%; - flex-basis: 91.666667%; - } - - .grid-item-sm-12 { - flex-grow: 0; - max-width: 100%; - flex-basis: 100%; - } -} - -@media (min-width:$breakpoint-md) { - .grid-item-md-auto { - flex-grow: 0; - max-width: none; - flex-basis: auto; - } - - .grid-item-md-true { - flex-grow: 1; - max-width: 100%; - flex-basis: 0; - } - - .grid-item-md-1 { - flex-grow: 0; - max-width: 8.333333%; - flex-basis: 8.333333%; - } - - .grid-item-md-2 { - flex-grow: 0; - max-width: 16.666667%; - flex-basis: 16.666667%; - } - - .grid-item-md-3 { - flex-grow: 0; - max-width: 25%; - flex-basis: 25%; - } - - .grid-item-md-4 { - flex-grow: 0; - max-width: 33.333333%; - flex-basis: 33.333333%; - } - - .grid-item-md-5 { - flex-grow: 0; - max-width: 41.666667%; - flex-basis: 41.666667%; - } - - .grid-item-md-6 { - flex-grow: 0; - max-width: 50%; - flex-basis: 50%; - } - - .grid-item-md-7 { - flex-grow: 0; - max-width: 58.333333%; - flex-basis: 58.333333%; - } - - .grid-item-md-8 { - flex-grow: 0; - max-width: 66.666667%; - flex-basis: 66.666667%; - } - - .grid-item-md-9 { - flex-grow: 0; - max-width: 75%; - flex-basis: 75%; - } - - .grid-item-md-10 { - flex-grow: 0; - max-width: 83.333333%; - flex-basis: 83.333333%; - } - - .grid-item-md-11 { - flex-grow: 0; - max-width: 91.666667%; - flex-basis: 91.666667%; - } - - .grid-item-md-12 { - flex-grow: 0; - max-width: 100%; - flex-basis: 100%; - } -} - -@media (min-width:$breakpoint-lg) { - .grid-item-lg-auto { - flex-grow: 0; - max-width: none; - flex-basis: auto; - } - - .grid-item-lg-true { - flex-grow: 1; - max-width: 100%; - flex-basis: 0; - } - - .grid-item-lg-1 { - flex-grow: 0; - max-width: 8.333333%; - flex-basis: 8.333333%; - } - - .grid-item-lg-2 { - flex-grow: 0; - max-width: 16.666667%; - flex-basis: 16.666667%; - } - - .grid-item-lg-3 { - flex-grow: 0; - max-width: 25%; - flex-basis: 25%; - } - - .grid-item-lg-4 { - flex-grow: 0; - max-width: 33.333333%; - flex-basis: 33.333333%; - } - - .grid-item-lg-5 { - flex-grow: 0; - max-width: 41.666667%; - flex-basis: 41.666667%; - } - - .grid-item-lg-6 { - flex-grow: 0; - max-width: 50%; - flex-basis: 50%; - } - - .grid-item-lg-7 { - flex-grow: 0; - max-width: 58.333333%; - flex-basis: 58.333333%; - } - - .grid-item-lg-8 { - flex-grow: 0; - max-width: 66.666667%; - flex-basis: 66.666667%; - } - - .grid-item-lg-9 { - flex-grow: 0; - max-width: 75%; - flex-basis: 75%; - } - - .grid-item-lg-10 { - flex-grow: 0; - max-width: 83.333333%; - flex-basis: 83.333333%; - } - - .grid-item-lg-11 { - flex-grow: 0; - max-width: 91.666667%; - flex-basis: 91.666667%; - } - - .grid-item-lg-12 { - flex-grow: 0; - max-width: 100%; - flex-basis: 100%; - } -} - -@media (min-width:$breakpoint-xl) { - .grid-item-xl-auto { - flex-grow: 0; - max-width: none; - flex-basis: auto; - } - - .grid-item-xl-true { - flex-grow: 1; - max-width: 100%; - flex-basis: 0; - } - - .grid-item-xl-1 { - flex-grow: 0; - max-width: 8.333333%; - flex-basis: 8.333333%; - } - - .grid-item-xl-2 { - flex-grow: 0; - max-width: 16.666667%; - flex-basis: 16.666667%; - } - - .grid-item-xl-3 { - flex-grow: 0; - max-width: 25%; - flex-basis: 25%; - } - - .grid-item-xl-4 { - flex-grow: 0; - max-width: 33.333333%; - flex-basis: 33.333333%; - } - - .grid-item-xl-5 { - flex-grow: 0; - max-width: 41.666667%; - flex-basis: 41.666667%; - } - - .grid-item-xl-6 { - flex-grow: 0; - max-width: 50%; - flex-basis: 50%; - } - - .grid-item-xl-7 { - flex-grow: 0; - max-width: 58.333333%; - flex-basis: 58.333333%; - } - - .grid-item-xl-8 { - flex-grow: 0; - max-width: 66.666667%; - flex-basis: 66.666667%; - } - - .grid-item-xl-9 { - flex-grow: 0; - max-width: 75%; - flex-basis: 75%; - } - - .grid-item-xl-10 { - flex-grow: 0; - max-width: 83.333333%; - flex-basis: 83.333333%; - } - - .grid-item-xl-11 { - flex-grow: 0; - max-width: 91.666667%; - flex-basis: 91.666667%; - } - - .grid-item-xl-12 { - flex-grow: 0; - max-width: 100%; - flex-basis: 100%; - } +.grid { + @include grid(); + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); +} + +// .grid.grid-col-1{ +// $cols: 1; +// @include grid(); +// grid-template-columns: repeat(auto-fit, minmax(max(250px, 100% / ($cols + 1) + 1px), 1fr)); +// } + +// .grid.grid-col-2{ +// $cols: 2; +// @include grid(); +// grid-template-columns: repeat(auto-fit, minmax(max(250px, 100% / ($cols + 1) + 1px), 1fr)); +// } + +// .grid.grid-col-3{ +// $cols: 3; +// @include grid(); +// grid-template-columns: repeat(auto-fit, minmax(max(250px, 100% / ($cols + 1) + 1px), 1fr)); +// } + +// .grid.grid-col-4{ +// $cols: 4; +// @include grid(); +// grid-template-columns: repeat(auto-fit, minmax(max(250px, 100% / ($cols + 1) + 1px), 1fr)); +// } + +// .grid.grid-col-5{ +// $cols: 5; +// @include grid(); +// grid-template-columns: repeat(auto-fit, minmax(max(250px, 100% / ($cols + 1) + 1px), 1fr)); +// } + +// .grid.grid-col-6{ +// $cols: 6; +// @include grid(); +// grid-template-columns: repeat(auto-fit, minmax(max(250px, 100% / ($cols + 1) + 1px), 1fr)); +// } + +// .grid.grid-col-7{ +// $cols: 7; +// @include grid(); +// grid-template-columns: repeat(auto-fit, minmax(max(250px, 100% / ($cols + 1) + 1px), 1fr)); +// } + +// .grid.grid-col-8{ +// $cols: 8; +// @include grid(); +// grid-template-columns: repeat(auto-fit, minmax(max(250px, 100% / ($cols + 1) + 1px), 1fr)); +// } + +// .grid.grid-col-9{ +// $cols: 9; +// @include grid(); +// grid-template-columns: repeat(auto-fit, minmax(max(250px, 100% / ($cols + 1) + 1px), 1fr)); +// } + +// .grid.grid-col-10{ +// $cols: 10; +// @include grid(); +// grid-template-columns: repeat(auto-fit, minmax(max(250px, 100% / ($cols + 1) + 1px), 1fr)); +// } + +// .grid.grid-col-11{ +// $cols: 11; +// @include grid(); +// grid-template-columns: repeat(auto-fit, minmax(max(250px, 100% / ($cols + 1) + 1px), 1fr)); +// } + +// .grid.grid-col-12{ +// $cols: 12; +// @include grid(); +// grid-template-columns: repeat(auto-fit, minmax(max(250px, 100% / ($cols + 1) + 1px), 1fr)); +// } + +$gridcol: ("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"); + +@each $colCount in $gridcol { + .grid-col-#{$colCount} { + grid-template-columns: repeat( + auto-fit, + minmax(max(250px, 100% / (#{$colCount} + 1) + 1px), 1fr) + ); + } +} + +$colspan: ("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"); + +@include breakpoint(xl) { + @each $spanCount in $colspan { + .col-span-#{$spanCount} { + grid-column: auto / span #{$spanCount}; + } + } } - -@media (min-width:$breakpoint-xxl) { - .grid-item-xxl-auto { - flex-grow: 0; - max-width: none; - flex-basis: auto; - } - - .grid-item-xxl-true { - flex-grow: 1; - max-width: 100%; - flex-basis: 0; - } - - .grid-item-xxl-1 { - flex-grow: 0; - max-width: 8.333333%; - flex-basis: 8.333333%; - } - - .grid-item-xxl-2 { - flex-grow: 0; - max-width: 16.666667%; - flex-basis: 16.666667%; - } - - .grid-item-xxl-3 { - flex-grow: 0; - max-width: 25%; - flex-basis: 25%; - } - - .grid-item-xxl-4 { - flex-grow: 0; - max-width: 33.333333%; - flex-basis: 33.333333%; - } - - .grid-item-xxl-5 { - flex-grow: 0; - max-width: 41.666667%; - flex-basis: 41.666667%; - } - - .grid-item-xxl-6 { - flex-grow: 0; - max-width: 50%; - flex-basis: 50%; - } - - .grid-item-xxl-7 { - flex-grow: 0; - max-width: 58.333333%; - flex-basis: 58.333333%; - } - - .grid-item-xxl-8 { - flex-grow: 0; - max-width: 66.666667%; - flex-basis: 66.666667%; - } - - .grid-item-xxl-9 { - flex-grow: 0; - max-width: 75%; - flex-basis: 75%; - } - - .grid-item-xxl-10 { - flex-grow: 0; - max-width: 83.333333%; - flex-basis: 83.333333%; - } - - .grid-item-xxl-11 { - flex-grow: 0; - max-width: 91.666667%; - flex-basis: 91.666667%; - } - - .grid-item-xxl-12 { - flex-grow: 0; - max-width: 100%; - flex-basis: 100%; - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_iconbutton.scss b/src/Connected.Components/Styles/components/_iconbutton.scss deleted file mode 100644 index 3a05d10..0000000 --- a/src/Connected.Components/Styles/components/_iconbutton.scss +++ /dev/null @@ -1,83 +0,0 @@ -.icon-button { - flex: 0 0 auto; - padding: 12px; - overflow: visible; - font-size: 1.5rem; - text-align: center; - transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - border-radius: 50%; - color: var(--palette-action-default); - - &.button { - min-width: unset; - border-radius: var(--default-borderradius); - } - - &:hover, &:focus-visible { - background-color: var(--palette-action-default-hover); - } - - &:disabled { - color: var(--palette-action-disabled); - background-color: transparent; - } - - &.readonly, .readonly:hover { - cursor: default; - } -} - -.icon-button-color-inherit { - color: inherit; - - &:hover, &:focus-visible { - background-color: var(--palette-action-default-hover); - } -} - -.icon-button-label { - width: 100%; - display: flex; - align-items: inherit; - justify-content: inherit; -} - -.icon-button-edge-start { - margin-left: -12px; - margin-inline-start: -12px; - margin-inline-end: unset; -} - -.icon-button-edge-end { - margin-right: -12px; - margin-inline-end: -12px; - margin-inline-start: unset; -} - -.icon-button-edge-margin-end { - margin-right: 8px; - margin-inline-end: 8px; - margin-inline-start: unset; -} - -.icon-button-size-small { - padding: 3px; - font-size: 1.125rem; - - &.icon-button-edge-start { - margin-left: -3px; - margin-inline-start: -3px; - margin-inline-end: unset; - } - - &.icon-button-edge-end { - margin-right: -3px; - margin-inline-end: -3px; - margin-inline-start: unset; - } -} - - -.icon-button-size-large.button > .icon-button-label > .icon-size-large { - font-size: 2rem; -} diff --git a/src/Connected.Components/Styles/components/_icons.scss b/src/Connected.Components/Styles/components/_icons.scss deleted file mode 100644 index c1e264b..0000000 --- a/src/Connected.Components/Styles/components/_icons.scss +++ /dev/null @@ -1,39 +0,0 @@ -.icon-default { - color: var(--palette-text-secondary); -} - - -.disabled { - .icon-root, .svg-icon, .icon-default { - color: var(--palette-text-disabled); - } -} - -.icon-root { - width: 1em; - height: 1em; - display: inline-block; - transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - flex-shrink: 0; - user-select: none; - - &:focus { - outline: none; - } - - &.svg-icon { - fill: currentColor; - } -} - -.icon-size-small { - font-size: 1.25rem; -} - -.icon-size-medium { - font-size: 1.5rem; -} - -.icon-size-large { - font-size: 2.25rem; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_image.scss b/src/Connected.Components/Styles/components/_image.scss deleted file mode 100644 index 2e28a9e..0000000 --- a/src/Connected.Components/Styles/components/_image.scss +++ /dev/null @@ -1,6 +0,0 @@ -.image { - &.fluid{ - max-width: 100%; - height: auto; - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_index.scss b/src/Connected.Components/Styles/components/_index.scss new file mode 100644 index 0000000..62e9a2a --- /dev/null +++ b/src/Connected.Components/Styles/components/_index.scss @@ -0,0 +1,6 @@ +@forward "buttons"; +@forward "grid"; +@forward "sidebar"; +@forward "radio"; +@forward "inputs"; +@forward "checkbox"; \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_input.scss b/src/Connected.Components/Styles/components/_input.scss deleted file mode 100644 index 9875e87..0000000 --- a/src/Connected.Components/Styles/components/_input.scss +++ /dev/null @@ -1,496 +0,0 @@ -.input { - position: relative; - color: var(--palette-text-primary); - cursor: text; - display: inline-flex; - font-size: 1rem; - box-sizing: border-box; - align-items: center; - font-weight: 400; - line-height: 1.1876em; - letter-spacing: 0.00938em; - - &.input-full-width { - width: 100%; - } - - &.disabled { - color: var(--palette-text-disabled); - cursor: default; - } - - &.disabled > .input-adornment { - color: var(--palette-text-disabled); - pointer-events: none; - } - - &.input-underline { - &:before { - left: 0; - right: 0; - bottom: 0; - content: "\00a0"; - position: absolute; - transition: border-bottom 0.2s, background-color 0.2s; - border-bottom: 1px solid var(--palette-lines-inputs); - pointer-events: none; - } - - &:hover:not(.disabled):before { - border-bottom: 1px solid var(--palette-action-default); - } - - &:after { - left: 0; - right: 0; - bottom: 0; - content: ""; - position: absolute; - transform: scaleX(0); - transition: transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms; - border-bottom: 2px solid var(--palette-primary); - pointer-events: none; - } - - &.disabled:before { - border-bottom-style: dotted; - } - - &.input-error:after { - transform: scaleX(1); - border-bottom-color: var(--palette-error); - } - } - - &.input-filled { - position: relative; - transition: background-color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms; - background-color: rgba(0, 0, 0, 0.09); - border-top-left-radius: 4px; - border-top-right-radius: 4px; - - &:hover { - background-color: rgba(0, 0, 0, 0.13); - } - - &.focused { - background-color: rgba(0, 0, 0, 0.09); - } - - &.disabled { - background-color: rgba(0, 0, 0, 0.12); - } - - &.input-adorned-start { - padding-left: 12px; - padding-inline-start: 12px; - padding-inline-end: unset; - } - - &.input-adorned-end { - padding-right: 12px; - padding-inline-end: 12px; - padding-inline-start: unset; - } - - &.input-underline { - &:before { - left: 0; - right: 0; - bottom: 0; - content: "\00a0"; - position: absolute; - transition: border-bottom-color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - border-bottom: 1px solid var(--palette-lines-inputs); - pointer-events: none; - } - - &:after { - left: 0; - right: 0; - bottom: 0; - content: ""; - position: absolute; - transform: scaleX(0); - transition: transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms; - border-bottom: 2px solid var(--palette-primary); - pointer-events: none; - } - - &:hover:before { - border-bottom: 1px solid var(--palette-action-default); - } - - &.disabled:before { - border-bottom-style: dotted; - } - - &.input-error:after { - transform: scaleX(1); - border-bottom-color: var(--palette-error); - } - } - } - - &.input-outlined { - position: relative; - border-width: 0px; - - & .input-outlined-border { - display: flex; - position: absolute; - top: 0; - right: 0; - left: 0; - box-sizing: border-box; - width: 100%; - max-width: 100%; - height: 100%; - text-align: start; - pointer-events: none; - border-radius: var(--default-borderradius); - border-color: var(--palette-lines-inputs); - border-width: 1px; - border-style: solid; - transition: border-width,border-color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - } - - &:not(.disabled):not(:focus-within):hover .input-outlined-border { - border-color: var(--palette-action-default); - } - - &:focus-within .input-outlined-border { - border-width: 2px; - border-color: var(--palette-primary); - } - - &.disabled .input-outlined-border { - border-color: var(--palette-action-disabled); - } - - &.input-adorned-start { - padding-left: 14px; - padding-inline-start: 14px; - padding-inline-end: unset; - } - - &.input-adorned-end { - padding-right: 14px; - padding-inline-end: 14px; - padding-inline-start: unset; - } - } -} - -.input-error .input-outlined-border { - border-color: var(--palette-error) !important; -} - -.input:focus-within.input-underline:after { - transform: scaleX(1); -} - -.input > input, div.input-slot { - &.input-root { - font: inherit; - color: currentColor; - width: 100%; - border: 0; - height: 1.1876em; - margin: 0; - display: block; - padding: 6px 0 7px; - min-width: 0; - background: none; - position: relative; - box-sizing: content-box; - letter-spacing: inherit; - -webkit-tap-highlight-color: transparent; - - @include inputplaceholder { - color: currentColor; - opacity: 0.42; - transition: opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - } - - &.input-root-margin-dense { - padding-top: 3px; - } - - &.input-root-multiline { - height: auto; - resize: none; - padding: 0; - } - - &.input-root-type-search { - -moz-appearance: textfield; - -webkit-appearance: textfield; - } - - &:focus { - outline: 0; - } - - &:invalid { - box-shadow: none; - } - - &:disabled { - opacity: 1; - } - - &.input-root-filled { - padding: 27px 12px 10px; - - &.input-root-margin-dense { - padding-top: 23px; - padding-bottom: 6px; - } - - &:-webkit-autofill { - border-top-left-radius: inherit; - border-top-right-radius: inherit; - } - - &.input-root-hidden-label { - padding-top: 18px; - padding-bottom: 19px; - - &.input-root-margin-dense { - padding-top: 10px; - padding-bottom: 11px; - } - } - - &.input-root-multiline { - padding: 0; - } - - &.input-root-adorned-start { - padding-left: 0; - padding-inline-start: 0; - padding-inline-end: 12px; - } - - &.input-root-adorned-end { - padding-right: 0; - padding-inline-end: 0; - padding-inline-start: 12px; - } - } - } - - &.input-root-outlined { - padding: 18.5px 14px; - - - &.input-root:-webkit-autofill { - border-radius: inherit; - } - - &.input-root-margin-dense { - padding-top: 10.5px; - padding-bottom: 10.5px; - } - - &.input-root-adorned-start { - padding-left: 0; - padding-inline-start: 0; - padding-inline-end: 14px; - } - - &.input-root-adorned-end { - padding-right: 0; - padding-inline-end: 0; - padding-inline-start: 14px; - } - } - - &::-ms-reveal, &::-ms-clear { - display: none !important; - } -} - -.input > textarea { - &.input-root { - font: inherit; - color: currentColor; - width: 100%; - border: 0; - height: auto; - margin: 6px 0 7px; - padding: 0; - display: block; - min-width: 0; - background: none; - position: relative; - box-sizing: content-box; - letter-spacing: inherit; - -webkit-tap-highlight-color: transparent; - height: auto; - resize: none; - cursor: auto; - - @include inputplaceholder { - color: currentColor; - opacity: 0.42; - transition: opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - } - - &.input-root-margin-dense { - margin-top: 3px; - } - - &.input-root-type-search { - -moz-appearance: textfield; - -webkit-appearance: textfield; - } - - &:focus { - outline: 0; - } - - &:invalid { - box-shadow: none; - } - - &:disabled { - opacity: 1; - } - - &.input-root-filled { - margin: 27px 12px 10px; - - &.input-root-margin-dense { - margin-top: 23px; - margin-bottom: 6px; - } - - &:-webkit-autofill { - border-top-left-radius: inherit; - border-top-right-radius: inherit; - } - - &.input-root-hidden-label { - margin-top: 18px; - margin-bottom: 19px; - - &.input-root-margin-dense { - margin-top: 10px; - margin-bottom: 11px; - } - } - - &.input-root-adorned-start { - margin-left: 0; - margin-inline-start: 0; - margin-inline-end: 12px; - - } - - &.input-root-adorned-end { - margin-right: 0; - margin-inline-end: unset; - margin-inline-start: 12px; - } - } - - &::-webkit-scrollbar { - width: 8px; - height: 8px; - z-index: 1; - cursor: crosshair; - } - - &::-webkit-scrollbar-thumb { - background: var(--palette-lines-inputs); - border-radius: 1px; - } - - &::-webkit-scrollbar-track { - background: transparent; - } - } - - &.input-root-outlined { - margin: 18.5px 14px; - - - &.input-root:-webkit-autofill { - border-radius: inherit; - } - - &.input-root-margin-dense { - margin-top: 10.5px; - margin-bottom: 10.5px; - } - - &.input-root-adorned-start { - margin-left: 0; - margin-inline-start: 0; - margin-inline-end: 14px; - } - - &.input-root-adorned-end { - margin-right: 0; - margin-inline-end: 0; - margin-inline-start: 14px; - } - } -} - -.input-adornment { - height: 0.01em; - display: flex; - max-height: 2em; - align-items: center; - white-space: nowrap; -} - -.input-adornment-start { - &.input-root-filled-shrink { - margin-top: 16px; - } -} - -.input-adornment-start { - margin-right: 8px; - margin-inline-end: 8px; - margin-inline-start: unset; -} - -.input-adornment-end { - margin-left: 8px; - margin-inline-start: 8px; - margin-inline-end: unset; -} - -.input-number-control.input-showspin .input-adornment-end { - margin-right: 12px; - margin-inline-end: 12px; - margin-inline-start: unset; -} - -.input-number-control.input-showspin .input-underline:not(.input-filled) .input-adornment-end { - margin-right: 24px; - margin-inline-end: 24px; - margin-inline-start: unset; -} - -.input-adornment-disable-pointerevents { - pointer-events: none; -} - -.range-input-separator { - visibility: hidden; - margin: 0 4px; -} - -.input:focus-within .range-input-separator { - visibility: visible; -} - -.picker .shrink .range-input-separator { - visibility: visible; -} diff --git a/src/Connected.Components/Styles/components/_inputcontrol.scss b/src/Connected.Components/Styles/components/_inputcontrol.scss deleted file mode 100644 index 007a970..0000000 --- a/src/Connected.Components/Styles/components/_inputcontrol.scss +++ /dev/null @@ -1,200 +0,0 @@ -.input-control { - border: 0; - margin: 0; - padding: 0; - display: flex; - flex: 1 1 auto; - max-width: 100%; - position: relative; - flex-direction: column; - vertical-align: top; - margin-top: 6px; - - &.input-control-margin-normal { - margin-top: 16px; - margin-bottom: 8px; - } - - &.input-control-margin-dense { - margin-top: 3px; - margin-bottom: 2px; - } - - &.input-control-full-width { - width: 100%; - } - - &.input-control-boolean-input { - flex: none; - margin: 0; - } - - & > .input-control-input-container { - position: relative; - display: flex; - flex-direction: column; - - & > div { - &.input.input-text { - margin-top: 16px; - } - - &.input.input-filled { - } - - &.input.input-outlined { - } - } - } - - & > .input-control-input-container > .input-label-outlined { - &.input-label-inputcontrol { - line-height: 18px; - } - } - - & > .input-control-input-container > .input-label-inputcontrol { - color: var(--palette-text-secondary); - padding: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1; - letter-spacing: 0.00938em; - z-index: 0; - pointer-events: none; - - &.disabled { - color: var(--palette-text-disabled); - } - - &.input-error { - color: var(--palette-error) !important; - } - } - - &.input-required > .input-control-input-container > .input-label::after { - content: "*"; - } - - &.input-number-control { - & input::-webkit-outer-spin-button, - & input::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; - } - - & input[type=number] { - -moz-appearance: textfield; - } - - &.input-showspin .input:not(.input-adorned-end) { - input { - padding-right: 24px; //This must be the same width of the spinners - padding-inline-end: 24px; - - &.input-root-margin-dense { - padding-right: 20px; //This must be the same width of the spinners - padding-inline-end: 20px; - } - } - - &.input-text input { - padding-inline-start: 0; - - &.input-root-margin-dense { - padding-inline-start: 0; - } - } - - &.input-filled input { - padding-inline-start: 12px; - - &.input-root-margin-dense { - padding-inline-start: 12px; - } - } - - &.input-outlined input { - padding-inline-start: 14px; - - &.input-root-margin-dense { - padding-inline-start: 14px; - } - } - } - - & .input-numeric-spin { - display: inline-flex; - flex-direction: column; - justify-content: space-between; - position: absolute; - right: 0; - top: 0; - bottom: 0; - - & button { - padding: 2px; - min-width: unset; - min-height: unset; - } - } - - .input-numeric-spin button { - padding: 2px 0; - } - } -} - -.input-control-helper-container { - overflow: hidden; - margin-top: 3px; -} - -.input-helper-text { - color: var(--palette-text-secondary); - margin: 0; - font-size: 0.75rem; - text-align: start; - font-weight: 400; - line-height: 1.66; - letter-spacing: 0.03333em; - - &.input-helper-onfocus { - transform: translateY(-100%); - transition: color 200ms cubic-bezier(0,0,.2,1) 0ms,transform 200ms cubic-bezier(0,0,.2,1) 0ms; - } -} - -.input-control { - &:focus-within, &.input-error { - .input-helper-text { - &.input-helper-onfocus { - transform: translateY(0); - } - } - } -} - - .input-helper-text.disabled { - color: var(--palette-text-disabled); - } - - .input-helper-text.input-error { - color: var(--palette-error) !important; - } - - .input-helper-text-margin-dense { - margin-top: 4px; - } - - .input-helper-text-contained { - margin-left: 14px; - margin-right: 14px; - } - - .application-layout-rtl { - .input-control.input-number-control .input-numeric-spin { - left: 0; - right: unset; - } - } \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_inputlabel.scss b/src/Connected.Components/Styles/components/_inputlabel.scss deleted file mode 100644 index ea63077..0000000 --- a/src/Connected.Components/Styles/components/_inputlabel.scss +++ /dev/null @@ -1,127 +0,0 @@ -.input-label { - display: block; - transform-origin: top left; -} - -.input-label-inputcontrol { - top: 0; - left: 0; - position: absolute; - transform: translate(0, 24px) scale(1); -} - -.input-label-margindense { - transform: translate(0, 21px) scale(1); -} - -.input-label-shrink { - transform: translate(0, 1.5px) scale(0.75); - transform-origin: top left; -} - -.input-label-animated { - transition: color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms; -} - -.input-label-filled { - z-index: 1; - transform: translate(12px, 20px) scale(1); - pointer-events: none; - - &.input-label-margin-dense { - transform: translate(12px, 17px) scale(1); - } -} - - -.input-label-outlined { - transform: translate(14px, 20px) scale(1); - pointer-events: none; - background-color: var(--palette-surface); - padding: 0px 5px !important; - - - &.input-label-margin-dense { - transform: translate(14px, 12px) scale(1); - } -} - -label.input-label.input-label-inputcontrol { - .shrink ~ & { - color: var(--palette-text-primary); - } - - .input:focus-within ~ & { - color: var(--palette-primary); - } - - .shrink ~ &, - .input:focus-within ~ & { - transform: translate(0, 1.5px) scale(0.75); - transform-origin: top left; - - &.input-label-filled { - transform: translate(12px, 10px) scale(0.75); - - &.input-label-margin-dense { - transform: translate(12px, 7px) scale(0.75); - } - } - - &.input-label-outlined { - transform: translate(14px, -6px) scale(0.75); - } - } - - .input:focus-within ~ &.input-error { - color: var(--palette-error); - } -} -.application-layout-rtl { - .input-label { - transform-origin: top right; - } - - .input-label-inputcontrol { - left: unset; - right: 0; - } - - .input-label-shrink { - transform-origin: top right; - } - - .input-label-filled { - transform: translate(-12px, 20px) scale(1); - - &.input-label-margin-dense { - transform: translate(-12px, 17px) scale(1); - } - } - - .input-label-outlined { - transform: translate(-14px, 20px) scale(1); - - &.input-label-margin-dense { - transform: translate(-14px, 12px) scale(1); - } - } - - .shrink, .input:focus-within { - ~ label.input-label.input-label-inputcontrol { - transform-origin: top right; - - &.input-label-filled { - transform: translate(-12px, 10px) scale(0.75); - - &.input-label-margin-dense { - transform: translate(-12px, 7px) scale(0.75); - } - } - - &.input-label-outlined { - transform: translate(-14px, -6px) scale(0.75); - } - } - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_inputs.scss b/src/Connected.Components/Styles/components/_inputs.scss new file mode 100644 index 0000000..da9aad1 --- /dev/null +++ b/src/Connected.Components/Styles/components/_inputs.scss @@ -0,0 +1,264 @@ +@use "../util" as *; +@use "../globals" as *; + + + + + +$trans-time: 300ms; +$width: 100%; + +form{ + display: block; + margin-top: 1rem; +} + +.form-group{ + position: relative; + margin-top: 1rem; + margin-bottom: 1.5rem; + flex: 1 0 300px;//TEMP + } + + textarea { + resize: none; + } + + input:not([type="radio"], [type="radio"]), + textarea, + select { + background: none; + color: var(--text-core); + font-weight: $font-weight-600; + font-size: $base-font-size; + padding: 10px 24px 10px 5px; + display: block; + width: 100%; + border: none; + border-radius: 0; + border-bottom: 1px solid $border-core; + &:focus { + outline: none; + } + &:focus ~ label.label-animated, + &:valid ~ label.label-animated { + top: -12px; + font-size: $font-size-sm; + color: var(--bg-core-primary-darken); + } + &:focus ~ .bar:before { + width: $width; + } + + } + + input[type="password"] { + letter-spacing: 0.15rem; + } + + label.label-animated { + color: $text-core-lc; + font-size: $base-font-size; + font-weight: $font-weight-400; + position: absolute; + pointer-events: none; + left: 5px; + top: 10px; + transition: $trans-time ease all; + } + + .bar { + position: relative; + display: block; + width: $width; + &:before { + content: ''; + height: 2px; + width: 0; + bottom: 0px; + position: absolute; + background: var(--bg-core-primary-darken); + transition: $trans-time ease all; + left: 0%; + } + } + +.input-helper-text{ + position: absolute; + bottom: -40px; + line-height: 30px; + font-size: 12px; + color: $text-core-lc; + padding: 5px 10px 10px 5px; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; + overflow: hidden; +} + +/*ERROR*/ +.error input:focus ~ label.label-animated, +.error input:valid ~ label.label-animated, +.error textarea:focus ~ label.label-animated, +.error textarea:valid ~ label.label-animated, +.error select:focus ~ label.label-animated, +.error select:valid ~ label.label-animated{ + color: $danger; +} + +.error .bar:before { + content: ''; + background:$danger; +} + +.input-error-text{ + display: none; +} +.error .input-error-text{ + position: absolute; + bottom: -40px; + line-height: 30px; + display: inline-block; + font-size: 12px; + color: $danger; + padding: 5px 10px 10px 5px; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; + overflow: hidden; +} + +.error .input-helper-text{ + display: none; +} + +.error input{ + padding-right:3rem; +} + +.error .input-glyph.error { + display: flex; + color: $danger; +} + +.input-glyph.error { + display:none; +} + +/*GLYPH*/ +.input-glyph-wraper { + position: absolute; + display: flex; + height: auto; + right: 0; + top: .8rem; +} + +.input-glyph { + position: relative; + display: flex; + justify-content: center; + align-items: center; + margin-left: $base-margin; +} + +.input-glyph i { + font-size: 1.25rem; + z-index: 1; +} +/*GLYPH BUTTON*/ +.input-glyph.button { + cursor: pointer; +} + +.input-glyph.button:before { + content: ""; + position: absolute; + width: 30px; + height: 30px; + border-radius: 50%; + background-color: transparent; + cursor: pointer; + scale: .75; + transition: scale 0.35s cubic-bezier(0.6,-1.25,0.6,2.25); +} + +.input-glyph.button:hover:before { + background: var(--bg-core-primary-lighten); + scale: 1; + opacity: .5; +} + +/*GLYPH RESET*/ +.input-glyph.button.reset { + display:none +} + +/*SELECT*/ + + +select { + appearance: none; + + &:focus-within ~ .drop-down { + height: auto; + max-height: max-content; + opacity: 1; + transition: all $trans-time ease-in-out; + } +} + + + +.drop-down{ + position: absolute; + opacity: 0; + display: flex; + flex-direction: column; + top: 46px; + left: 0; + min-width: 100%; + height: 0; + max-height: 0; + //padding: $base-padding; + z-index: 1500; + list-style: none; + background-color: #fff; + box-shadow: $base-box-shadow; + border-radius: 0 0 $border-radius-lg $border-radius-lg; +} + + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: $font-size-sm; + color: var(--text-core-lc); + white-space: nowrap; + } + +.dropdown-item { + display: block; + width: 100%; + padding: 0.5rem 1.5rem; + clear: both; + color: inherit; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} + +.dropdown-item:focus, .dropdown-item:hover { + color: var(--text-core-hc); + text-decoration: none; + background-color: var(--bg-core-primary-lighten); +} + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid $border-core; + } \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_layout.scss b/src/Connected.Components/Styles/components/_layout.scss deleted file mode 100644 index 9d0cdce..0000000 --- a/src/Connected.Components/Styles/components/_layout.scss +++ /dev/null @@ -1,4 +0,0 @@ - -.application-layout-rtl { - direction: rtl; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_link.scss b/src/Connected.Components/Styles/components/_link.scss deleted file mode 100644 index c1cf0d8..0000000 --- a/src/Connected.Components/Styles/components/_link.scss +++ /dev/null @@ -1,27 +0,0 @@ - -.link { - &.link-underline-none { - text-decoration: none; - } - - &.link-underline-hover { - text-decoration: none; - - &:hover, &:focus-visible { - text-decoration: underline; - } - } - - &.link-underline-always { - text-decoration: underline; - } - - &.link-disabled { - cursor: default; - color: var(--palette-action-disabled) !important; - - &:not(.link-underline-always) { - text-decoration: none; - } - } -} diff --git a/src/Connected.Components/Styles/components/_list.scss b/src/Connected.Components/Styles/components/_list.scss deleted file mode 100644 index 2796797..0000000 --- a/src/Connected.Components/Styles/components/_list.scss +++ /dev/null @@ -1,132 +0,0 @@ -.list { - margin: 0; - padding: 0; - position: relative; - list-style: none; - - &.list-padding { - padding-top: 8px; - padding-bottom: 8px; - } -} - -.list-item { - width: 100%; - display: flex; - position: relative; - box-sizing: border-box; - text-align: start; - align-items: center; - padding-top: 8px; - padding-bottom: 8px; - justify-content: flex-start; - text-decoration: none; - - &.list-item-dense { - padding-top: 4px; - padding-bottom: 4px; - } - - &.list-item-disabled { - color: var(--palette-action-disabled) !important; - cursor: default !important; - pointer-events: none !important; - - .list-item-icon { - color: var(--palette-action-disabled) !important; - } - } -} - -.list-item-clickable { - color: inherit; - border: 0; - cursor: pointer; - margin: 0; - outline: 0; - user-select: none; - border-radius: 0; - vertical-align: middle; - background-color: transparent; - -webkit-appearance: none; - -webkit-tap-highlight-color: transparent; - transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - - &:hover { - background-color: var(--palette-action-default-hover); - } - - &:focus:not(.selected-item) { - background-color: var(--palette-action-default-hover); - } -} - -.list-item-gutters { - padding-left: 16px; - padding-right: 16px; -} - - -.list-item-text { - flex: 1 1 auto; - min-width: 0; - margin-top: 4px; - margin-bottom: 4px; -} - - -.list-item-text-inset { - padding-left: 56px; - padding-inline-start: 56px; - padding-inline-end: unset; -} - -.list-item-icon { - color: var(--palette-action-default); - display: inline-flex; - min-width: 56px; - flex-shrink: 0; -} - - -.list-subheader { - color: var(--palette-action-default); - font-size: 0.875rem; - box-sizing: border-box; - list-style: none; - font-weight: 500; - padding-top: 8px; - padding-bottom: 20px; -} - -.list-subheader-gutters { - padding-left: 16px; - padding-right: 16px; -} - -.list-subheader-inset { - padding-left: 72px; - padding-inline-start: 72px; - padding-inline-end: unset; -} - -.list-subheader-sticky { - top: 0; - z-index: 1; - position: sticky; - background-color: inherit; -} - - -.list-item-avatar { - min-width: 56px; - flex-shrink: 0; -} - -.nested-list { - & > .list-item { - padding-left: 32px; - padding-inline-start: 32px; - padding-inline-end: unset; - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_markdowncode.scss b/src/Connected.Components/Styles/components/_markdowncode.scss deleted file mode 100644 index 1279533..0000000 --- a/src/Connected.Components/Styles/components/_markdowncode.scss +++ /dev/null @@ -1,36 +0,0 @@ -.markdown { - margin: 0px; - padding: 15px; - border-radius: var(--default-borderradius); - background-color: var(--palette-dark); - margin-bottom: 1.5rem; - - & .markdown-pre { - white-space: normal; - } - - & .markdown-code { - color: #fff; - font-size: 1em; - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; - } -} - -.markdown .markdown-pre .markdown-code { - - & mark { - color: #808078; - background-color: none; - } - - & mark { - color: #008080; - font-weight: bold; - background-color: none; - } -} - -.token.attr-value > .punctuation { - color: #d0d0d0; -} - diff --git a/src/Connected.Components/Styles/components/_menu.scss b/src/Connected.Components/Styles/components/_menu.scss deleted file mode 100644 index 3f3a3d0..0000000 --- a/src/Connected.Components/Styles/components/_menu.scss +++ /dev/null @@ -1,21 +0,0 @@ -.menu { - display: inline-flex; - align-self: center; - position: relative; - - & * { - cursor: pointer; - } - - & > div.disabled { - cursor: default; - - & * { - cursor: default; - } - } - - & > div.menu-activator { - display: contents; - } -} diff --git a/src/Connected.Components/Styles/components/_navmenu.scss b/src/Connected.Components/Styles/components/_navmenu.scss deleted file mode 100644 index 899da15..0000000 --- a/src/Connected.Components/Styles/components/_navmenu.scss +++ /dev/null @@ -1,273 +0,0 @@ -@import '../abstracts/variables'; - -.navmenu { - margin: 0; - position: relative; - list-style: none; - overscroll-behavior-y: contain; -} - -.nav-group { - width: 100%; - display: block; - justify-content: flex-start; - - & > .nav-link > .nav-link-text { - font-weight: 500; - } - - & * .nav-group { - & > .nav-link > .nav-link-text { - font-weight: 400; - } - } - - & * .nav-group { - & > .nav-link.expanded > .nav-link-text { - font-weight: 500; - } - } - - & * .navmenu .nav-item .nav-link { - padding-left: 36px; - padding-inline-start: 36px; - padding-inline-end: unset; - } -} - -.nav-group-disabled { - &, .nav-link-text, .nav-link-expand-icon, .nav-link-icon { - color: var(--palette-text-disabled) !important; - cursor: default; - pointer-events: none; - } -} - -.nav-item { - width: 100%; - display: flex; - justify-content: flex-start; - text-decoration: none; -} - -.nav-link { - width: 100%; - font-weight: 400; - padding: 8px 16px 8px 16px; - color: inherit; - line-height: 1.75; - display: inline-flex; - align-items: center; - justify-content: flex-start; - text-transform: inherit; - background-color: transparent; - transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, padding 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - align-items: flex-start; - - &.nav-link-disabled { - color: var(--palette-text-disabled) !important; - cursor: default; - pointer-events: none; - } - - &:hover:not(.nav-link-disabled) { - cursor: pointer; - text-decoration: none; - background-color: var(--palette-action-default-hover); - } - - &:focus:not(.nav-link-disabled) { - background-color: var(--palette-action-default-hover); - } - - &.active:not(.nav-link-disabled) { - font-weight: 500 !important; - } - - &:not(.nav-link-disabled) .nav-link-icon.nav-link-icon-default { - color: var(--palette-drawer-icon); - } - - &.nav-link-disabled .nav-link-icon { - color: var(--palette-text-disabled); - } - - & .nav-link-expand-icon { - color: var(--palette-drawer-icon); - transition: .3s cubic-bezier(.25,.8,.5,1),visibility 0s; - - &.transform { - transform: rotate(-180deg); - } - - &.transform-disabled { - transform: rotate(-180deg); - } - } - - & .nav-link-text { - width: 100%; - text-align: start; - margin-left: 12px; - margin-inline-start: 12px; - margin-inline-end: unset; - letter-spacing: 0; - } -} - -.navmenu{ - - &.navmenu-dense{ - .nav-link{ - padding: 4px 16px 4px 16px; - } - } - - &.navmenu-margin-dense{ - .nav-link{ - margin: 2px 0; - } - } - - &.navmenu-margin-normal{ - .nav-link{ - margin: 4px 0; - } - } - - &.navmenu-rounded{ - .nav-link{ - border-radius: var(--default-borderradius); - } - } - - &.navmenu-bordered{ - .nav-link{ - &.active:not(.nav-link-disabled) { - border-inline-end-style: solid; - border-inline-end-width: 2px; - } - } - } - - &.navmenu-default{ - .nav-link.active:not(.nav-link-disabled) { - color: var(--palette-primary); - background-color: var(--palette-action-default-hover); - - &:hover:not(.nav-link-disabled), &:focus-visible:not(.nav-link-disabled) { - background-color: var(--palette-action-default-hover); - } - } - - .nav-link-expand-icon.transform { - fill: var(--palette-primary); - } - } - - @each $color in $palette-colors { - &.navmenu-#{$color} { - .nav-link.active:not(.nav-link-disabled) { - color: var(--palette-#{$color}); - background-color: var(--palette-#{$color}-hover); - - &:hover:not(.nav-link-disabled), &:focus-visible:not(.nav-link-disabled) { - background-color: rgba(var(--palette-#{$color}-rgb), 0.12); - } - - .nav-link-icon { - color: var(--palette-#{$color}); - } - } - - .nav-link-expand-icon.transform { - fill: var(--palette-#{$color}); - } - } - } -} - -.nav-group * .navmenu > .nav-group { - & .nav-link { - padding-left: 36px; - padding-inline-start: 36px; - padding-inline-end: 16px; - } - - & * .navmenu .nav-item .nav-link { - padding-left: 48px; - padding-inline-start: 48px; - } - - & * .navmenu > .nav-group { - & .nav-link { - padding-left: 48px; - padding-inline-start: 48px; - padding-inline-end: 16px; - } - - & * .navmenu .nav-item .nav-link { - padding-left: 60px; - padding-inline-start: 60px; - padding-inline-end: 0; - } - - & * .navmenu > .nav-group { - & .nav-link { - padding-left: 60px; - padding-inline-start: 60px; - padding-inline-end: 16px; - } - - & * .navmenu .nav-item .nav-link { - padding-left: 72px; - padding-inline-start: 72px; - padding-inline-end: 0; - } - } - } -} - -.drawer--closed.drawer-mini { - & > .drawer-content > .navmenu { - & .nav-link .icon-root:first-child + .nav-link-text { - display: none; - } - } - - .nav-group { - & * .navmenu .nav-item .nav-link { - padding: 8px 16px 8px 16px; - } - } - - .nav-group * .navmenu > .nav-group { - & .nav-link { - padding: 8px 16px 8px 16px; - } - - & * .navmenu .nav-item .nav-link { - padding: 8px 16px 8px 16px; - } - - & * .navmenu > .nav-group { - & .nav-link { - padding: 8px 16px 8px 16px; - } - - & * .navmenu .nav-item .nav-link { - padding: 8px 16px 8px 16px; - } - - & * .navmenu > .nav-group { - & .nav-link { - padding: 8px 16px 8px 16px; - } - - & * .navmenu .nav-item .nav-link { - padding: 8px 16px 8px 16px; - } - } - } - } -} diff --git a/src/Connected.Components/Styles/components/_overlay.scss b/src/Connected.Components/Styles/components/_overlay.scss deleted file mode 100644 index 7b5a1c3..0000000 --- a/src/Connected.Components/Styles/components/_overlay.scss +++ /dev/null @@ -1,64 +0,0 @@ -.overlay { - top: 0; - left: 0; - right: 0; - bottom: 0; - margin: 0 !important; - align-items: center; - justify-content: center; - border-radius: inherit; - display: flex; - position: fixed; - transition: .3s cubic-bezier(.25,.8,.5,1),z-index 1ms; - z-index: 5; - - &.overlay-absolute { - position: absolute; - } - - & .overlay-scrim { - top: 0; - left: 0; - right: 0; - bottom: 0; - border-radius: inherit; - position: absolute; - height: 100%; - width: 100%; - border-color: transparent; - background-color: transparent; - animation: animation-fadein ease 0.15s; - -webkit-animation: animation-fadein ease 0.15s; - -moz-animation: animation-fadein ease 0.15s; - -o-animation: animation-fadein ease 0.15s; - - &.overlay-dark { - border-color: var(--palette-overlay-dark); - background-color: var(--palette-overlay-dark); - } - - &.overlay-light { - border-color: var(--palette-overlay-light); - background-color: var(--palette-overlay-light); - } - &:hover { - cursor: default; - } - } - - & .overlay-content { - position: relative; - } - - &.overlay-popover { - z-index: var(--zindex-popover); - } - - &.overlay-dialog { - z-index: calc(var(--zindex-dialog) + 1); - } - - &.overlay-drawer { - z-index: calc(var(--zindex-appbar) + 1); //<-- Yes this is correct we want to display it on top of the Appbar - } -} diff --git a/src/Connected.Components/Styles/components/_pagecontentnavigation.scss b/src/Connected.Components/Styles/components/_pagecontentnavigation.scss deleted file mode 100644 index ae2241b..0000000 --- a/src/Connected.Components/Styles/components/_pagecontentnavigation.scss +++ /dev/null @@ -1,34 +0,0 @@ -@import '../abstracts/variables'; - -.page-content-navigation { - - .page-content-navigation-navlink { - &.active { - .nav-link { - color: var(--palette-primary); - border-color: var(--palette-primary); - background-color: transparent; - } - } - - .nav-link { - padding: 4px 16px 4px 16px; - color: var(--palette-text-secondary); - border-left: 2px solid var(--palette-action-disabled-background); - - &.active { - color: var(--palette-primary); - border-color: var(--palette-primary); - background-color: transparent; - } - - .nav-link-text { - margin-left: 0px; - margin-inline-start: 0px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } - } - } -} diff --git a/src/Connected.Components/Styles/components/_pagination.scss b/src/Connected.Components/Styles/components/_pagination.scss deleted file mode 100644 index f9b1092..0000000 --- a/src/Connected.Components/Styles/components/_pagination.scss +++ /dev/null @@ -1,97 +0,0 @@ -@import '../abstracts/variables'; - -.pagination { - display: inline-flex; - flex-wrap: wrap; - gap: 6px; - align-items: center; - margin: 0; - - .pagination-item { - & > * { - height: 32px; - min-width: 32px; - margin: 0 3px; - padding: 0 6px; - text-align: center; - border-radius: 16px; - } - - :not(pagination-item-selected) > * { - box-shadow: none; - } - - .button { - line-height: normal; - } - - .icon-button { - padding: 0; - } - - &-rectangular .button { - border-radius: var(--default-borderradius); - } - - .typography[disabled] { - color: var(--palette-action-disabled) !important; - } - } - - &-outlined { - .pagination-item-selected { - .button-outlined-default { - background-color: var(--palette-action-default-hover) - } - - @each $color in $palette-colors { - .button-outlined-#{$color} { - background-color: var(--palette-#{$color}-hover); - } - } - } - } - - &-filled { - .pagination-item { - &:not(.pagination-item-selected) .button { - background-color: var(--palette-surface); - } - - .button { - box-shadow: var(--elevation-1); - } - } - } - - &-small { - .pagination-item { - & > * { - height: 26px; - min-width: 26px; - margin: 0 1px; - padding: 0 4px; - border-radius: 13px; - } - } - } - - &-large { - .pagination-item { - & > * { - height: 40px; - min-width: 40px; - padding: 0 10px; - border-radius: 20px; - } - } - } - - &-disable-elevation .pagination-item .button { - box-shadow: none; - } - - &-rtl .pagination-item .icon-root { - transform: scaleX(-1); - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_paper.scss b/src/Connected.Components/Styles/components/_paper.scss deleted file mode 100644 index 1c2df67..0000000 --- a/src/Connected.Components/Styles/components/_paper.scss +++ /dev/null @@ -1,15 +0,0 @@ - -.paper { - color: var(--palette-text-primary); - background-color: var(--palette-surface); - border-radius: var(--default-borderradius); - transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; -} - -.paper-square { - border-radius: 0px; -} - -.paper-outlined { - border: 1px solid var(--palette-lines-default); -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_picker.scss b/src/Connected.Components/Styles/components/_picker.scss deleted file mode 100644 index 733c85d..0000000 --- a/src/Connected.Components/Styles/components/_picker.scss +++ /dev/null @@ -1,198 +0,0 @@ -.picker { - &.rounded { - border-radius: var(--default-borderradius); - } - - & .picker-actions { - flex: 0 0 auto; - display: flex; - padding: 8px; - align-items: center; - justify-content: flex-end; - - & > :not(:first-child) { - margin-left: 8px; - margin-inline-start: 8px; - margin-inline-end: unset; - } - } -} - -.picker-inline { - display: flex; - flex: 1 1 auto; - position: relative; - max-width: 100%; - - &.picker-input-button { - & .input, .input .input-root { - cursor: pointer - } - - &.disabled { - & .input, .input .input-root { - cursor: default; - } - } - } - - &.picker-input-text { - cursor: text; - - &:hover { - cursor: text; - } - - &.disabled { - cursor: default; - - &:hover { - cursor: default; - } - } - } -} - -.picker-static { - display: flex; - overflow: hidden; - min-width: 310px; - flex-direction: column; -} - -.picker-container { - display: flex; - flex-direction: column; - border-radius: inherit; - - &.picker-container-landscape { - flex-direction: row; - } - - & .toolbar { - border-top-left-radius: inherit; - border-top-right-radius: inherit; - } -} - -.picker-popover-paper { - outline: 0; - z-index: calc(var(--zindex-popover) + 1); - position: absolute; - min-width: 16px; - min-height: 16px; - overflow-x: hidden; - overflow-y: auto; -} - -.picker-view { - display: none; - margin-top: 20px; - - &.picker-open { - display: block; - animation: animation-fadein 251ms; - } -} - -.picker-content { - display: flex; - //max-width: 325px; - max-width: 100%; - min-width: 310px; - min-height: 305px; - overflow: hidden; - flex-direction: column; - justify-content: center; - - &.picker-content-landscape { - padding: 0 8px; - } -} - -.picker-toolbar { - height: 100px; - display: flex; - align-items: center; - flex-direction: row; - justify-content: center; - - &.picker-toolbar-landscape { - height: auto; - padding: 8px; - max-width: 150px; - justify-content: flex-start; - } - - - &.button-root { - padding: 0; - min-width: 16px; - text-transform: none; - } -} - -.picker-inline-paper { - .paper { - position: relative !important; - } -} - -.picker-hidden { - visibility: hidden; -} - -.picker-pos-top { - top: 0px; - position: fixed; - visibility: visible; - - &.picker-pos-left { - left: 10px; - } - - &.picker-pos-right { - right: 10px; - } -} - -.picker-pos-above { - bottom: 0px; - visibility: visible; - - &.picker-pos-left { - left: 50%; - transform: translateX(-50%); - } - - &.picker-pos-right { - right: 0px; - } -} - -.picker-pos-bottom { - bottom: 10px; - position: fixed; - visibility: visible; - - &.picker-pos-left { - left: 10px; - } - - &.picker-pos-right { - right: 10px; - } -} - -.picker-pos-below { - visibility: visible; - - &.picker-pos-left { - left: 50%; - transform: translateX(-50%); - } - - &.picker-pos-right { - right: 0px; - } -} diff --git a/src/Connected.Components/Styles/components/_pickercolor.scss b/src/Connected.Components/Styles/components/_pickercolor.scss deleted file mode 100644 index e7eea99..0000000 --- a/src/Connected.Components/Styles/components/_pickercolor.scss +++ /dev/null @@ -1,242 +0,0 @@ -.picker-container { - & + .picker-color-toolbar { - border-top-left-radius: inherit; - border-top-right-radius: inherit; - } - - & + .picker-color-content { - border-top-left-radius: inherit; - border-top-right-radius: inherit; - } -} - - -.picker-color-toolbar { - height: 32px; - padding-right: 2px; - padding-left: 2px; -} - -.picker-color-content { - min-height: unset; - position: relative; -} - -.picker-color-picker { - width: 312px; - height: 250px; - position: relative; - overflow: hidden; - - .picker-color-overlay { - width: 100%; - height: 100%; - - &.picker-color-overlay-white { - background: linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%); - } - - &.picker-color-overlay-black { - background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, black 100%); - } - } - - .picker-color-selector { - position: absolute; - top: -13px; - left: -13px; - } -} - -.picker-color-controls { - width: 312px; - padding: 16px; - display: flex; - flex-direction: column; - - .picker-color-controls-row { - display: flex; - align-items: center; - - & + .picker-color-controls-row { - margin-top: 24px; - } - - .picker-color-sliders { - display: flex; - flex: 1 0 auto; - flex-direction: column; - - .picker-color-slider { - min-width: 224px; - border-radius: var(--default-borderradius); - - & .slider-input { - height: 10px; - border-radius: var(--default-borderradius); - - @include slider-track { - background: initial; - } - - @include slider-thumb { - appearance: none; - margin-top: -6px; - height: 14px; - width: 14px; - transform: none; - transition: none; - background: #f0f0f0; - box-shadow: rgba(0, 0, 0, 0.37) 0px 1px 4px 0px; - } - - &:active { - @include slider-thumb { - box-shadow: 0 0 0 2px var(--palette-action-default-hover) !important; - } - } - } - - &.hue + .alpha { - margin-top: 18px; - } - - &.hue .slider-input { - background: linear-gradient( 90deg, #FF0000, #ff0 16.66%, #0f0 33.33%,#0ff 50%, #00f 66.66%, #f0f 83.33%, #FF0000); - } - - &.alpha .slider-input { - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWNgYGCQwoKxgqGgcJA5h3yFAAs8BRWVSwooAAAAAElFTkSuQmCC) repeat; - } - } - } - - .picker-color-inputs { - display: flex; - flex: 1 1 auto; - - .picker-color-inputfield { - width: 100%; - margin-right: 8px; - margin-inline-end: 8px; - margin-inline-start: unset; - - &:last-of-type { - margin-right: 0; - margin-inline-end: 0; - margin-inline-start: unset; - } - - .input { - input { - padding: 6px; - height: 1em; - text-align: center; - font-size: 14px; - } - } - - .input-helper-text { - text-align: center; - - & div div { - margin: auto; - } - } - } - } - - .picker-control-switch { - margin-left: 8px; - margin-inline-start: 8px; - margin-inline-end: unset; - padding-bottom: 16px; - } - - .picker-color-collection { - display: flex; - min-width: 230px; - justify-content: space-between; - - .picker-color-dot { - max-width: 38px; - } - } - } -} - -.picker-color-dot { - height: 38px; - min-width: 38px; - width: 100%; - transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-radius 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - border-radius: var(--default-borderradius); - box-shadow: 0 0 6px rgba(127, 130, 134, 0.18); - - &:hover { - cursor: pointer; - box-shadow: 0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12); - } - - &.picker-color-dot-current { - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWNgYGCQwoKxgqGgcJA5h3yFAAs8BRWVSwooAAAAAElFTkSuQmCC) repeat; - } - - .picker-color-fill { - width: 100%; - height: 100%; - border-radius: inherit; - } - - & + .picker-color-sliders { - margin-left: 16px; - margin-inline-start: 16px; - margin-inline-end: unset; - } - - & + .picker-color-collection { - margin-left: 10px; - margin-inline-start: 10px; - margin-inline-end: unset; - } -} - -.picker-color-view { - position: absolute; - width: 100%; - height: 100%; - overflow: auto; - padding: 6px; - background-color: var(--palette-surface); - - .picker-color-view-collection { - display: flex; - flex-wrap: wrap; - justify-content: space-evenly; - - .picker-color-dot { - max-width: 38px; - margin: 8px; - - &.selected { - border-radius: 50%; - box-shadow: 0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12); - } - } - } -} - -.picker-color-picker { - .picker-color-grid { - display: flex; - flex-wrap: wrap; - - .picker-color-dot { - height: 25px; - min-width: 26px; - max-width: 26px; - border-radius: 0px; - box-shadow: none; - } - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_pickerdate.scss b/src/Connected.Components/Styles/components/_pickerdate.scss deleted file mode 100644 index 893ce15..0000000 --- a/src/Connected.Components/Styles/components/_pickerdate.scss +++ /dev/null @@ -1,384 +0,0 @@ -@import '../abstracts/variables'; - -.picker-datepicker-toolbar { - align-items: flex-start; - flex-direction: column; - - .button-year { - font-size: 1rem; - font-weight: 400; - line-height: 1.75; - letter-spacing: 0.00938em; - } - - .button-date { - font-size: 2.125rem; - font-weight: 400; - line-height: 1.17; - letter-spacing: 0.00735em; - text-transform: none; - } -} - -.picker-datepicker-toolbar-landscape { - padding: 16px; -} - -.picker-datepicker-date-landscape { - margin-right: 16px; - margin-inline-end: 16px; - margin-inline-start: unset; -} - - -.picker-calendar-header-switch { - display: flex; - margin-top: 4px; - align-items: center; - margin-bottom: 8px; - justify-content: space-between; - - & > .icon-button { - z-index: 1; - padding: 8px; - margin: 6px; - background-color: var(--palette-surface); - - &:hover { - background-color: var(--palette-action-default-hover); - } - } - - & .picker-calendar-header-transition { - width: 100%; - height: 23px; - overflow: hidden; - - &:hover { - & .typography { - cursor: pointer; - font-weight: 500; - } - } - } -} - - -.picker-calendar-header-day { - display: flex; - max-height: 16px; - align-items: center; - justify-content: center; - - .day-label { - color: var(--palette-text-secondary); - width: 36px; - margin: 0 2px; - text-align: center; - } -} - -.picker-year-container { - height: 300px; - overflow-y: auto; - - .picker-year { - cursor: pointer; - height: 40px; - display: flex; - outline: none; - align-items: center; - justify-content: center; - user-select: none; - animation: animation-fadein 500ms; - transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - - &:hover { - background-color: var(--palette-action-default-hover); - } - - & .picker-year-selected { - margin: 10px 0; - font-weight: 500; - } - } -} - -.picker-month-container { - width: 310px; - display: flex; - flex-wrap: wrap; - align-content: stretch; - - .picker-month { - flex: 1 0 33.33%; - cursor: pointer; - height: 60px; - display: flex; - outline: none; - transition: font-size 100ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - align-items: center; - justify-content: center; - transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - - &:hover { - background-color: var(--palette-action-default-hover); - } - - & .picker-month-selected { - font-weight: 500; - } - - &.disabled { - color: var(--palette-text-disabled); - pointer-events: none; - } - } -} - - -.picker-slide-transition { - display: block; - position: relative; -} - -.picker-slide-transition > * { - top: 0; - left: 0; - right: 0; - position: absolute; -} - -.picker-calendar-transition { - margin-top: 12px; - min-height: 216px; -} - -.picker-calendar-progress-container { - width: 100%; - height: 100%; - display: flex; - align-items: center; - justify-content: center; -} - -.picker-calendar-content { - display: grid; - --selected-day: 0; - grid-column-gap: 10px; - grid-template-columns: auto; -} - -@media(min-width: $breakpoint-sm) { - .picker-calendar-content:not(.picker-calendar-content-1) { - grid-template-columns: repeat(2, minmax(auto, 1fr)); - - .picker-calendar-header-1, - .picker-calendar-header-3, - .picker-calendar-header-5, - .picker-calendar-header-7, - .picker-calendar-header-9, - .picker-calendar-header-11 { - .picker-nav-button-next { - visibility: hidden; - } - - .picker-nav-button-prev { - visibility: visible; - } - } - - .picker-calendar-header-2, - .picker-calendar-header-4, - .picker-calendar-header-6, - .picker-calendar-header-8, - .picker-calendar-header-10, - .picker-calendar-header-12 { - .picker-nav-button-next { - visibility: visible; - } - - .picker-nav-button-prev { - visibility: hidden; - } - } - } -} - -@media(min-width: $breakpoint-md) { - .picker-calendar-content:not(.picker-calendar-content-1):not(.picker-calendar-content-2) { - grid-template-columns: repeat(3, minmax(auto, 1fr)); - - .picker-calendar-header-1, - .picker-calendar-header-4, - .picker-calendar-header-7, - .picker-calendar-header-10 { - .picker-nav-button-next { - visibility: hidden; - } - - .picker-nav-button-prev { - visibility: visible; - } - } - - .picker-calendar-header-2, - .picker-calendar-header-5, - .picker-calendar-header-8, - .picker-calendar-header-11 { - .picker-nav-button-next, .picker-nav-button-prev { - visibility: hidden; - } - } - - .picker-calendar-header-3, - .picker-calendar-header-6, - .picker-calendar-header-9, - .picker-calendar-header-12 { - .picker-nav-button-next { - visibility: visible; - } - - .picker-nav-button-prev { - visibility: hidden; - } - } - } -} - -:not(.picker-hidden) { - .picker-calendar-header-last { - .picker-nav-button-next { - visibility: inherit !important; - } - } -} - -.picker-hidden { - .picker-nav-button-next, .picker-nav-button-prev { - visibility: hidden !important; - } -} - -.picker-calendar-container { - display: flex; - width: 310px; - flex-direction: column; -} - -.picker-calendar { - display: flex; - flex-wrap: wrap; - justify-content: center; - - .day { - color: var(--palette-text-primary); - width: 36px; - height: 36px; - margin: 0 2px; - padding: 0; - font-size: 0.75rem; - font-weight: 500; - - &:hover { - background-color: var(--palette-action-default-hover); - } - - &.hidden { - opacity: 0; - pointer-events: none; - } - - &.current { - font-weight: 600; - } - - &.selected { - font-weight: 500; - } - - .typography { - margin-top: 2px; - } - - &.disabled { - color: var(--palette-text-disabled); - pointer-events: none; - } - - &.range { - margin: 0; - width: 40px; - transition: none; - - &.range-start-selected { - border-radius: 50% 0% 0% 50%; - } - - &.range-end-selected { - border-radius: 0% 50% 50% 0%; - } - - &.range-between { - border-radius: 0; - background-color: var(--palette-action-default-hover); - } - - &.range-selection:hover { - &.range-start-selected { - border-radius: 50%; - } - - &:not(.range-start-selected) { - border-radius: 0% 50% 50% 0%; - } - } - - &.range-selection:not(:hover):not(.range-start-selected) { - border-radius: 0; - background: linear-gradient(var(--palette-action-default-hover) 100%, var(--palette-action-default-hover) 100%, transparent 0%); - background-size: 100% calc(100% * (var(--selected-day) - var(--day-id))); - } - } - } -} - -@each $color in $palette-colors { - .range-selection-#{$color} { - &:hover { - color: var(--palette-#{$color}-text) !important; - background-color: var(--palette-#{$color}) !important; - } - } -} - -.picker-calendar-week { - display: flex; - margin: 0 5px; - justify-content: center; - align-items: center; - - .picker-calendar-week-text { - width: 15px; - margin-top: 2px !important; - color: var(--palette-text-disabled); - } -} - -.application-layout-rtl { - .picker-calendar .day.range { - &.range-start-selected { - border-radius: 0% 50% 50% 0%; - } - - &.range-end-selected { - border-radius: 50% 0% 0% 50%; - } - - &.range-selection:hover { - &:not(.range-start-selected) { - border-radius: 50% 0% 0% 50%; - } - } - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_pickertime.scss b/src/Connected.Components/Styles/components/_pickertime.scss deleted file mode 100644 index 75fcd25..0000000 --- a/src/Connected.Components/Styles/components/_pickertime.scss +++ /dev/null @@ -1,285 +0,0 @@ -.picker-timepicker-toolbar { - - .timepicker-button { - padding: 0; - min-width: 16px; - text-transform: none; - - &.timepicker-toolbar-text { - color: rgba(255, 255, 255, 0.54); - } - - &:hover { - background-color: var(--theme-default-hover); - } - } - - .timepicker-hourminute { - display: flex; - align-items: baseline; - justify-content: flex-end; - - .timepicker-button { - font-size: 3.75rem; - font-weight: 300; - line-height: 1; - letter-spacing: -0.00833em; - } - } - - .timepicker-ampm { - display: flex; - margin-left: 20px; - margin-right: -20px; - margin-inline-start: 20px; - margin-inline-end: -20px; - flex-direction: column; - - .timepicker-button { - font-size: 18px; - font-weight: 400; - line-height: 1.75; - letter-spacing: 0.00938em; - } - } - - .timepicker-separator { - cursor: default; - margin: 0 4px 0 2px; - margin-inline-start: 2px; - margin-inline-end: 4px; - } - - &.picker-timepicker-toolbar-landscape { - flex-wrap: wrap; - width: 150px; - justify-content: center; - - .timepicker-hourminute { - .timepicker-button { - font-size: 3rem; - font-weight: 400; - line-height: 1.04; - letter-spacing: 0em; - } - } - - .timepicker-ampm { - display: flex; - margin-left: 20px; - margin-right: -20px; - margin-inline-start: 20px; - margin-inline-end: -20px; - flex-direction: column; - - .timepicker-button { - font-size: 18px; - font-weight: 400; - line-height: 1.75; - letter-spacing: 0.00938em; - } - } - - .timepicker-separator { - font-size: 3rem; - font-weight: 400; - line-height: 1.04; - letter-spacing: 0em; - } - } -} - -.picker-time-container { - margin: 16px 0 8px; - display: flex; - align-items: flex-end; - justify-content: center; - - .picker-time-clock { - width: 260px; - height: 260px; - position: relative; - border-radius: 50%; - pointer-events: none; - background-color: rgba(0,0,0,.07); - - .picker-time-clock-mask { - width: 100%; - height: 100%; - outline: none; - position: absolute; - user-select: none; - touch-actions: none; - pointer-events: auto; - } - - .picker-time-clock-pin { - top: 50%; - left: 50%; - width: 6px; - height: 6px; - position: absolute; - transform: translate(-50%, -50%); - border-radius: 50%; - } - - .picker-stick-inner { - left: calc(50% - 1px); - width: 3px; - height: 35%; - bottom: 0; - position: absolute; - transform-origin: center bottom 0px; - - &.hour { - &:after { - content: ""; - position: absolute; - left: 50%; - transform: translate(-50%,-50%); - height: 48px; - width: 48px; - top: -60%; - border-radius: 50%; - background-color: inherit; - } - } - } - - .picker-stick-outer { - left: calc(50% - 1px); - width: 0; - height: 35%; - bottom: 35%; - position: absolute; - transform-origin: center bottom 0px; - - &.hour { - &:after { - content: ""; - position: absolute; - left: 50%; - transform: translate(-50%,-50%); - height: 48px; - width: 62px; - top: -20px; - border-radius: 50%; - background-color: inherit; - } - } - } - - .picker-stick { - left: calc(50% - 1px); - width: 3px; - height: 50%; - bottom: 50%; - position: absolute; - transform-origin: center bottom 0px; - - &.hour { - &:after { - content: ""; - position: absolute; - left: 50%; - transform: translate(-50%,-50%); - height: 62px; - width: 62px; - top: 20px; - border-radius: 50%; - background-color: inherit; - } - } - - &.minute { - &:after { - content: ""; - position: absolute; - left: 50%; - transform: translate(-50%,-50%); - height: 44px; - width: 15px; - top: 20px; - border-radius: 50%; - background-color: inherit; - } - } - } - - .picker-time-clock-pointer { - left: calc(50% - 1px); - width: 2px; - bottom: 50%; - position: absolute; - transform-origin: center bottom 0px; - - &.picker-time-clock-pointer-animation { - transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,height 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - } - - .picker-time-clock-pointer-thumb { - position: absolute; - border-radius: 100%; - - &.onclock-text { - top: -19px; - left: -13px; - width: 28px; - height: 28px; - border: none; - background-color: inherit - } - - &.onclock-minute { - background: transparent; - border: 2px solid; - width: 10px; - height: 10px; - top: -9px; - left: -4px; - } - } - } - - .clock-number { - left: calc((100% - 32px) / 2); - color: var(--palette-text-primary); - background-color: transparent !important; - width: 32px; - height: 32px; - display: inline-flex; - position: absolute; - align-items: center; - user-select: none; - border-radius: 50%; - justify-content: center; - transition-duration: 120ms; - transition-property: color; - } - } -} - -.time-picker-dial { - width: 100%; - height: 100%; - position: absolute; - transition: transform 350ms,opacity 350ms; -} - -.time-picker-dial-out { - opacity: 0; -} - -.time-picker-hour.time-picker-dial-out { - transform: scale(1.2,1.2); - transform-origin: center; -} - -.time-picker-minute.time-picker-dial-out { - transform: scale(.8,.8); - transform-origin: center; -} - -.time-picker-dial-hidden { - visibility: hidden; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_popover.scss b/src/Connected.Components/Styles/components/_popover.scss deleted file mode 100644 index ef8a8d4..0000000 --- a/src/Connected.Components/Styles/components/_popover.scss +++ /dev/null @@ -1,58 +0,0 @@ -.popover { - outline: 0; - z-index: calc(var(--zindex-popover) + 1); - position: absolute; - opacity: 0; - - &.popover-fixed { - position: fixed; - } - - &.popover-relative-width { - width: 100%; - } - - &.popover-open { - opacity: 1; - transition: opacity; - } - - &:not(.popover-open ) { - pointer-events: none; - transition-duration:0ms !important; - transition-delay:0ms !important; - } -} - -.appbar { - .popover-cascading-value { - z-index: calc(var(--zindex-appbar) + 2); - } -} - -.drawer { - &:not(.drawer-temporary) { - .popover-cascading-value { - z-index: calc(var(--zindex-drawer) + 2); - } - } - - &.drawer-temporary, &.drawer-responsive { - .popover-cascading-value { - z-index: calc(var(--zindex-appbar) + 4); - } - } -} - -.dialog { - .popover-cascading-value { - z-index: calc(var(--zindex-dialog) + 3); - } -} - -.popover { - .list { - max-height: inherit; - overflow-y: auto; - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_progresscircular.scss b/src/Connected.Components/Styles/components/_progresscircular.scss deleted file mode 100644 index 4b436f0..0000000 --- a/src/Connected.Components/Styles/components/_progresscircular.scss +++ /dev/null @@ -1,52 +0,0 @@ - -.progress-circular { - display: inline-block; - color: var(--palette-text-secondary); - - &.progress-indeterminate { - animation: progress-circular-keyframes-circular-rotate 1.4s linear infinite; - } - - &.progress-static { - transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - } - - &.progress-small { - height: 24px; - width: 24px; - } - - &.progress-medium { - height: 40px; - width: 40px; - } - - &.progress-large { - height: 56px; - width: 56px; - } -} - - -.progress-circular-svg { - display: block; - transform: rotate(-90deg); -} - -.progress-circular-circle { - stroke: currentColor; - - &.progress-indeterminate { - animation: progress-circular-keyframes-circular-dash 1.4s ease-in-out infinite; - stroke-dasharray: 80px, 200px; - stroke-dashoffset: 0px; - } - - &.progress-static { - transition: stroke-dashoffset 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - } -} - -.progress-circular-disable-shrink { - animation: none; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_progresslinear.scss b/src/Connected.Components/Styles/components/_progresslinear.scss deleted file mode 100644 index 7b533d7..0000000 --- a/src/Connected.Components/Styles/components/_progresslinear.scss +++ /dev/null @@ -1,262 +0,0 @@ - -.progress-linear { - position: relative; - - &::before { - content: ''; - position: absolute; - top: 0; - left: 0; - height: 100%; - width: 100%; - display: block; - opacity: 0.2; - } - - &.horizontal { - width: 100%; - - &.progress-linear { - &-small { - height: 4px; - } - - &-medium { - height: 8px; - } - - &-large { - height: 12px; - } - } - - .progress-linear-dashed { - animation: progress-linear-horizontal-keyframes-buffer 3s infinite linear; - } - } - - &.vertical { - height: 100%; - - &.progress-linear { - &-small { - width: 4px; - } - - &-medium { - width: 8px; - } - - &-large { - width: 12px; - } - } - } - - .progress-linear-content { - position: absolute; - height: 100%; - width: 100%; - display: flex; - justify-content: center; - align-items: center; - } - - .progress-linear-bars { - position: absolute; - height: 100%; - width: 100%; - overflow: hidden; - } - - .progress-linear-bar { - top: 0; - left: 0; - width: 100%; - bottom: 0; - position: absolute; - transition: transform 0.2s linear; - transform-origin: left; - - &.progress-linear-1-indeterminate { - &.horizontal { - width: auto; - animation: progress-linear-horizontal-keyframes-indeterminate1 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; - } - - &.vertical { - height: auto; - animation: progress-linear-vertical-keyframes-indeterminate1 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; - } - } - - &.progress-linear-2-indeterminate { - &.horizontal { - width: auto; - animation: progress-linear-horizontal-keyframes-indeterminate2 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite; - } - - &.vertical { - height: auto; - animation: progress-linear-vertical-keyframes-indeterminate2 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite; - } - } - } - - &.progress-linear-color-default { - &:not(.progress-linear-buffer) { - &::before { - background-color: var(--palette-action-disabled); - } - - .progress-linear-bar { - background-color: var(--palette-action-default); - } - } - - &.progress-linear-buffer { - .progress-linear-bar:first-child { - background-size: 10px 10px; - background-image: radial-gradient(var(--palette-action-disabled) 0%, var(--palette-action-disabled) 16%, transparent 42%); - background-position: 0 -23px; - } - - .progress-linear-bar:nth-child(2) { - background-color: var(--palette-action-default); - } - - .progress-linear-bar:last-child { - transition: transform .4s linear; - - &::before { - content: ''; - position: absolute; - top: 0; - left: 0; - height: 100%; - width: 100%; - display: block; - opacity: 0.4; - background-color: var(--palette-action-disabled); - } - } - } - } - - @each $color in $palette-colors { - &.progress-linear-color-#{$color} { - - &:not(.progress-linear-buffer) { - &::before { - background-color: var(--palette-#{$color}); - } - - .progress-linear-bar { - background-color: var(--palette-#{$color}); - } - } - - - &.progress-linear-buffer { - .progress-linear-bar:first-child { - background-size: 10px 10px; - background-image: radial-gradient(var(--palette-#{$color}) 0%, var(--palette-#{$color}) 16%, transparent 42%); - background-position: 0 -23px; - } - - .progress-linear-bar:nth-child(2) { - background-color: var(--palette-#{$color}); - } - - .progress-linear-bar:last-child { - transition: transform .4s linear; - - &::before { - content: ''; - position: absolute; - top: 0; - left: 0; - height: 100%; - width: 100%; - display: block; - opacity: 0.4; - background-color: var(--palette-#{$color}); - } - } - } - } - } - - &.progress-indeterminate { - &.horizontal { - .progress-linear-bar:first-child { - width: auto; - animation: progress-linear-horizontal-keyframes-indeterminate1 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; - } - - .progress-linear-bar:last-child { - width: auto; - animation: progress-linear-horizontal-keyframes-indeterminate2 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite; - } - } - - &.vertical { - .progress-linear-bar:first-child { - height: auto; - animation: progress-linear-vertical-keyframes-indeterminate1 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; - } - - .progress-linear-bar:last-child { - height: auto; - animation: progress-linear-vertical-keyframes-indeterminate2 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite; - } - } - } - - &.progress-linear-buffer { - .progress-linear-bar:first-child { - width: 100%; - height: 100%; - position: absolute; - margin-top: 0; - } - - .progress-linear-bar:nth-child(2) { - z-index: 1; - transition: transform .4s linear; - } - - &.horizontal { - .progress-linear-bar:first-child { - animation: progress-linear-horizontal-keyframes-buffer 3s infinite linear; - } - } - - &.vertical { - .progress-linear-bar:first-child { - animation: progress-linear-vertical-keyframes-buffer 3s infinite linear; - } - } - } - - &.progress-linear-striped { - .progress-linear-bar { - background-image: linear-gradient( 135deg,hsla(0,0%,100%,.25) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.25) 0,hsla(0,0%,100%,.25) 75%,transparent 0,transparent); - background-size: 40px 40px; - background-repeat: repeat; - animation: progress-linear-striped-loading 10s linear infinite; - } - } - - &.progress-linear-rounded { - border-radius: var(--default-borderradius); - - .progress-linear-bars { - border-radius: var(--default-borderradius); - } - - .progress-linear-bar { - border-radius: var(--default-borderradius); - } - } -} diff --git a/src/Connected.Components/Styles/components/_radio.scss b/src/Connected.Components/Styles/components/_radio.scss index 9d725fe..a9bcd14 100644 --- a/src/Connected.Components/Styles/components/_radio.scss +++ b/src/Connected.Components/Styles/components/_radio.scss @@ -1,110 +1,86 @@ -@import '../abstracts/variables'; +$color1: #f4f4f4; +$color2: var(--bg-core-primary-darken); -.radio { - cursor: pointer; - display: inline-flex; - align-items: center; - vertical-align: middle; - -webkit-tap-highlight-color: transparent; - color: var(--palette-action-default); - - & > .radio-content { - color: var(--palette-text-primary); +.radio-group { + margin: 0.5rem; + position:relative; + input[type="radio"] { + position: absolute; + opacity: 0; + + .radio-label { + &:before { + content: ""; + background: $color1; + border-radius: 100%; + border: 2px solid $color2; + display: inline-block; + width: 1.25em; + height: 1.25em; + position: relative; + top: .15rem; + margin-right: .75em; + vertical-align: top; + cursor: pointer; + text-align: center; + z-index: 1; + transition: all 250ms ease; + } } - - &.disabled, .disabled:hover, .disabled:focus-visible { - cursor: default; - background-color: transparent !important; - - & > .radio-content { - color: var(--palette-text-disabled); - } - - & * { - cursor: default; - color: var(--palette-text-disabled); + &:checked { + + .radio-label { + &:before { + background-color: $color2; + box-shadow: inset 0 0 0 2px $color1; } + } } - - & .radio-dense { - padding: 4px; - } - - &.checked { - color: var(--palette-action-default); - - &:hover { - background-color: var(--palette-action-default-hover); + &:focus { + + .radio-label { + &:before { + outline: none; + border-color: $color2; } + } } -} - -.radio-button { - width: 100%; - display: flex; - align-items: inherit; - justify-content: inherit; - - & .radio-input { - top: 0; - left: 0; - width: 100%; - cursor: inherit; - height: 100%; - margin: 0; - opacity:0; - padding: 0; - z-index: 1; - position: absolute; + &:disabled { + + .radio-label { + color: darken($color1, 25%); + pointer-events: none; + &:before { + box-shadow: inset 0 0 0 2px $color1; + border-color: darken($color1, 25%); + background: darken($color1, 25%); + } + } } - - & .radio-icons { - display: flex; - position: relative; + + .radio-label { + &:empty { + &:before { + margin-right: 0; + } + } } + } } -.radio-icons.checked .radio-icon-checked { - transform: scale(1); - transition: transform 150ms cubic-bezier(0.0, 0, 0.2, 1) 0ms; -} -.radio-icon-checked { - left: 0; - position: absolute; - transform: scale(0); - transition: transform 150ms cubic-bezier(0.4, 0, 1, 1) 0ms; +.radio-label:after { + content: ""; + display: inline-block; + width: 35px; + height: 35px; + border-radius: 50%; + background-color: transparent; + position: absolute; + left: -8px; + top: -6px; + scale: .75; + transition: scale 0.35s cubic-bezier(0.6,-1.25,0.6,2.25); } -.radio-content-placement- { - &start { - margin-left: 16px; - margin-right: -11px; - margin-inline-start: 16px; - margin-inline-end: -11px; - flex-direction: row-reverse; - } - - &end { - margin-left: -11px; - margin-right: 16px; - margin-inline-start: -11px; - margin-inline-end: 16px; - flex-direction: row; - } - - &top { - margin-left: 16px; - margin-inline-start: 16px; - margin-inline-end: unset; - flex-direction: column-reverse; - } - - &bottom { - margin-left: 16px; - margin-inline-start: 16px; - margin-inline-end: unset; - flex-direction: column; - } -} +.radio-label:hover:after { + background: var(--bg-core-primary-lighten); + scale: 1; + opacity: .5; +} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_rating.scss b/src/Connected.Components/Styles/components/_rating.scss deleted file mode 100644 index 1300860..0000000 --- a/src/Connected.Components/Styles/components/_rating.scss +++ /dev/null @@ -1,54 +0,0 @@ -.rating-root { - display: inline-flex; - color: #ffb400; - - &:focus-visible { - outline: none; - - &:not(.disabled) { - background-color: var(--palette-action-default-hover); - } - } -} - -.rating-item { - cursor: pointer; - transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - - &.rating-item-active { - transform: scale(1.2); - } - - &.disabled, .disabled:hover { - cursor: default; - pointer-events: none; - - & * { - cursor: default; - color: var(--palette-text-disabled); - } - } - - &.readonly { - cursor: default; - } - - & .rating-input { - clip: rect(0,0,0,0); - margin: 0; - opacity: 0; - padding: 0; - z-index: 1; - position: absolute; - cursor: inherit; - overflow: hidden; - } - - & svg { - pointer-events: none; - - & path { - pointer-events: none; - } - } -} diff --git a/src/Connected.Components/Styles/components/_select.scss b/src/Connected.Components/Styles/components/_select.scss deleted file mode 100644 index 98359fe..0000000 --- a/src/Connected.Components/Styles/components/_select.scss +++ /dev/null @@ -1,89 +0,0 @@ -.select { - display: flex; - flex-grow: 1; - position: relative; - - &.autocomplete { - display: block; - - & .select-input { - cursor: text; - } - - & .input-adornment { - cursor: pointer; - } - } - - &.autocomplete--with-progress { - & .select-input input { - padding-right: 3.5rem !important; - } - - & .input-adorned-end input { - padding-right: 4.5rem !important; - } - - & .select-input .icon-button { - display: none !important; - } - - & .progress-indicator-circular { - position: absolute; - width: 100%; - top: 0; - bottom: 0; - display: flex; - align-items: center; - justify-content: flex-end; - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-right: 1rem; - } - - & .progress-indicator-circular--with-adornment { - padding-right: 3rem; - } - - & .progress-linear { - position: absolute; - bottom: -1px; - height: 2px; - } - } - - .select-input { - cursor: pointer; - - & .input-slot { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - - & .input-adornment-end { - margin-left: 0; - } - - &:disabled { - cursor: default; - } - } - - .disabled { - .select-input { - cursor: default; - } - } -} - - -.select > .form-helpertext { - margin-top: -21px; -} - -.select-all { - margin-top: 10px; - border-bottom: 1px solid lightgrey; - padding-bottom: 18px; -} diff --git a/src/Connected.Components/Styles/components/_sidebar.scss b/src/Connected.Components/Styles/components/_sidebar.scss new file mode 100644 index 0000000..1cb1779 --- /dev/null +++ b/src/Connected.Components/Styles/components/_sidebar.scss @@ -0,0 +1,230 @@ +@use '../globals/' as *; +@use '../util/' as *; + + +.sidebar{ + position: fixed; + height: 100vh; + width: 100%; + color: $text-core; + background: var(--bg-core-primary); + //margin: -2rem 2rem -2rem -2rem; + z-index: 100; + transition: all 0.3s ease; + + @include breakpoint(sm) { + height: calc(100% + 4rem); + position: relative; + width: 300px; + } +} + +.sidebar.close{ + width: 0; + transform: translateX(-75px); + @include breakpoint(sm) { + width: 75px; + transform: translateX(0); + } +} + +.main { + width: calc(100% - 1.5rem) ; + margin-inline:auto; + @include breakpoint (sm) { + width: calc(100% - 300px);; + padding: 2rem; + } + } + + .main.close{ + @include breakpoint (sm) { + width: calc(100% - 75px); + } + } + +//profile +.sidebar .profile-details{ + display: flex; + justify-content: space-between; + align-items: center; + color: #fff; + background-color: rgba(0,0,0,.6); + } + +.sidebar .profile-details .avatar{ + min-width: calc(70px - 1rem); + text-align: center; + margin: 1rem 0 1rem 1rem; + + } + +.sidebar .profile-details img{ + height: 40px; + width: 40px; + object-fit: cover; + border-radius: 50%; + //transition: all 0.5s ease; + } + + .sidebar .profile-details .name-job{ + margin-right: auto; + +} + + .sidebar .profile-details .profile-name{ + font-weight: 600; + white-space: nowrap; + } + .sidebar .profile-details .profile-job{ + font-size: 12px; + font-weight: 500; + } + + .sidebar .profile-details i{ + height: 50px; + min-width: 70px; + text-align: center; + line-height: 50px; + font-size: 20px; + cursor: pointer; + transition: all 0.3s ease; + } + .sidebar.close .profile-details i, + .sidebar.close .profile-details .profile-name, + .sidebar.close .profile-details .profile-job{ + display: none; + } + + //links + .sidebar .nav-links{ + height: 100%; + padding: 0; + overflow: auto; + } + .sidebar.close .nav-links{ + overflow: visible; + } + .sidebar .nav-links::-webkit-scrollbar{ + display: none; + } + .sidebar .nav-links li{ + position: relative; + list-style: none; + transition: all 0.4s ease; + } + .sidebar .nav-links li:hover{ + background: var(--bg-core-primary-lighten); + } + .sidebar .nav-links li .iocn-link{ + display: flex; + align-items: center; + justify-content: space-between; + } + .sidebar.close .nav-links li .iocn-link{ + display: block + } + .sidebar .nav-links li i{ + height: 50px; + min-width: 70px; + text-align: center; + line-height: 50px; + color: var(--text-core-vc); + font-size: 20px; + cursor: pointer; + transition: all 0.3s ease; + } + .sidebar .nav-links li.showMenu i.arrow{ + transform: rotate(-180deg); + } + .sidebar.close .nav-links i.arrow{ + display: none; + } + .sidebar .nav-links li a{ + display: flex; + align-items: center; + text-decoration: none; + } + .sidebar .nav-links li a .link_name{ + flex: 1 0 auto; + font-weight: 400; + color: var(--text-core); + //transition: all 0.4s ease; + } + .sidebar.close .nav-links li a .link_name{ + opacity: 0; + pointer-events: none; + + } + + + + + + .sidebar .nav-links li .sub-menu{ + padding: 6px 6px 14px 70px; + margin-top: -10px; + background:var(--bg-core-primary-lighten); + display: none; + } + .sidebar .nav-links li.showMenu .sub-menu{ + display: block; + } + .sidebar .nav-links li .sub-menu a{ + color: var(--text-core); + font-size: 15px; + padding: 5px 0; + white-space: nowrap; + + transition: all 0.3s ease; + } + .sidebar .nav-links li .sub-menu a:hover{ + color: var(--bg-core-primary-darken); + } + .sidebar.close .nav-links li .sub-menu{ + position: absolute; + left: 100%; + top: -10px; + margin-top: 0; + padding: 10px 20px; + border-radius: 0 6px 6px 0; + opacity: 0; + display: block; + pointer-events: none; + transition: 0s; + } + .sidebar.close .nav-links li:hover .sub-menu{ + top: 0; + opacity: 1; + pointer-events: auto; + transition: all 0.4s ease; + } + .sidebar .nav-links li .sub-menu .link_name{ + display: none; + } + .sidebar.close .nav-links li .sub-menu .link_name{ +font-weight: 600; + opacity: 1; + display: block; + } + .sidebar .nav-links li .sub-menu.blank{ + opacity: 1; + pointer-events: auto; + padding: 3px 20px 6px 16px; + opacity: 0; + pointer-events: none; + } + .sidebar .nav-links li:hover .sub-menu.blank{ + top: 50%; + transform: translateY(-50%); + } + + + + + + + + + + diff --git a/src/Connected.Components/Styles/components/_simpletable.scss b/src/Connected.Components/Styles/components/_simpletable.scss deleted file mode 100644 index f922ad8..0000000 --- a/src/Connected.Components/Styles/components/_simpletable.scss +++ /dev/null @@ -1,145 +0,0 @@ - -.simple-table { - - table { - width: 100%; - display: table; - border-spacing: 0; - border-collapse: collapse; - - thead { - display: table-header-group; - } - - tbody { - display: table-row-group; - } - - * tr { - color: inherit; - display: table-row; - outline: 0; - vertical-align: middle; - - > td, th { - display: table-cell; - padding: 16px; - font-size: 0.875rem; - text-align: start; - font-weight: 400; - line-height: 1.43; - border-bottom: 1px solid var(--palette-table-lines); - letter-spacing: 0.01071em; - vertical-align: inherit; - } - - > th { - font-weight: 500; - line-height: 1.5rem; - } - } - - tbody { - tr:last-child { - td { - border-bottom: none; - } - } - } - } -} - -.simple-table.table-dense { - & * tr { - & td, th { - padding: 6px 16px; - } - } -} - -.simple-table.table-hover { - & .table-container table tbody { - & tr:hover { - background-color: var(--palette-table-hover); - } - } -} - -.simple-table.table-bordered { - & .table-container table tbody { - & tr { - td { - border-right: 1px solid var(--palette-table-lines); - } - - td:last-child { - border-right: none; - } - } - } -} - -.simple-table.table-striped { - & .table-container table tbody { - & tr:nth-of-type(odd) { - background-color: var(--palette-table-striped); - } - } -} - -.table-hover.table-striped { - & .table-container table tbody { - & tr:nth-of-type(odd):nth-of-type(odd):hover { - background-color: var(--palette-table-hover); - } - } -} - -.simple-table.table-sticky-header { - .table-container { - overflow-x: auto; - max-height: 100%; - } - - & * table { - border-collapse: separate; - - thead { - & * th:first-child { - border-radius: var(--default-borderradius) 0 0 0; - } - - & * th:last-child { - border-radius: 0 var(--default-borderradius) 0 0; - } - - & * th { - background-color: var(--palette-surface); - position: sticky; - z-index: 1; - top: 0; - } - } - } -} - - -.simple-table.table-sticky-footer { - .table-container { - overflow-x: auto; - max-height: 100%; - } - - & * table { - border-collapse: separate; - - tfoot { - & * td { - background-color: var(--palette-surface); - position: sticky; - z-index: 1; - bottom: 0; - } - } - } -} diff --git a/src/Connected.Components/Styles/components/_skeleton.scss b/src/Connected.Components/Styles/components/_skeleton.scss deleted file mode 100644 index 3e7d254..0000000 --- a/src/Connected.Components/Styles/components/_skeleton.scss +++ /dev/null @@ -1,44 +0,0 @@ - -.skeleton { - height: 1.2em; - display: block; - background-color: rgba(0, 0, 0, 0.11); -} - -.skeleton-text { - height: auto; - transform: scale(1, 0.60); - margin-top: 0; - border-radius: var(--default-borderradius); - margin-bottom: 0; - transform-origin: 0 60%; -} - -.skeleton-text:empty:before { - content: "\00a0"; -} - -.skeleton-circle { - border-radius: 50%; -} - -.skeleton-pulse { - animation: skeleton-keyframes-pulse 1.5s ease-in-out 0.5s infinite; -} - -.skeleton-wave { - overflow: hidden; - position: relative; -} - -.skeleton-wave::after { - top: 0; - left: 0; - right: 0; - bottom: 0; - content: ""; - position: absolute; - animation: skeleton-keyframes-wave 1.6s linear 0.5s infinite; - transform: translateX(-100%); - background: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.04), transparent); -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_slider.scss b/src/Connected.Components/Styles/components/_slider.scss deleted file mode 100644 index 82a3e3a..0000000 --- a/src/Connected.Components/Styles/components/_slider.scss +++ /dev/null @@ -1,211 +0,0 @@ -@import '../abstracts/variables'; - -.slider { - color: var(--palette-text-primary); - display: inline-block; - width: 100%; - user-select: none; - - & > .typography { - margin-top: 10px; - } - - &.slider-vertical { - transform: rotate(270deg); - height: 100%; - width: unset; - } - - .slider-input { - -webkit-appearance: none; - -moz-appearance: none; - position: relative; - display: block; - width: 100%; - background-color: transparent; - cursor: pointer; - - &:focus { - outline: none; - } - - &:active { - & + .slider-value-label { - opacity: 1; - } - } - - @include slider-track { - border-radius: var(--default-borderradius); - width: 100%; - } - - - @include slider-thumb { - appearance: none; - -webkit-appearance: none; - border: none; - border-radius: 50%; - cursor: pointer; - transition: box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - } - - &:disabled { - cursor: default; - opacity: 0.38; - - @include slider-track { - background-color: var(--palette-text-disabled); - } - - @include slider-thumb { - background-color: rgb( 0, 0, 0); - color: rgb(255, 255, 255); - box-shadow: 0 0 0 1px rgb( 255, 255, 255) !important; - transform: scale(4, 4); - - &:hover { - box-shadow: 0 0 0 1px rgb( 255, 255, 255) !important; - } - } - } - } - - @each $color in $palette-colors { - &.slider-#{$color} { - .slider-filled { - background-color: var(--palette-#{$color}); - } - - .slider-track-tick { - background-color: var(--palette-#{$color}); - } - - .slider-value-label { - color: var(--palette-#{$color}-text); - background-color: var(--palette-#{$color}); - } - - - .slider-input { - @include slider-track { - background-color: rgba(var(--palette-#{$color}-rgb), 0.30); - } - - @include slider-thumb { - background-color: var(--palette-#{$color}); - box-shadow: 0px 1px 2px -1px rgba(var(--palette-#{$color}-rgb),0.3); - } - - @include slider-thumb { - &:hover { - box-shadow: 0px 1px 2px -1px rgba(var(--palette-#{$color}-rgb),0.3),0 0 0 1px rgba(var(--palette-#{$color}-rgb), 0.24); - } - } - - - &:active, &:focus-visible { - @include slider-thumb { - box-shadow: 0px 1px 2px -1px rgba(var(--palette-#{$color}-rgb),0.3),0 0 0 2px rgba(var(--palette-#{$color}-rgb), 0.24); - } - } - } - } - } - - $slider-sizes: ("small": 2, "medium": 4, "large": 6); - $tickcount: 50; - $margincount: 10; - $thumbscale: 6; - - @each $size, $value in $slider-sizes { - &.slider-#{$size} { - .slider-filled { - height: #{$value}px; - } - - .slider-track-tick { - width: #{$value}px; - height: #{$value}px; - } - - .slider-track-tick-label { - transform: translateX(-50%) translateY(#{$tickcount + "%"}); - } - - .slider-input { - @include slider-track { - height: #{$value}px; - margin: #{$margincount}px 0; - } - - @include slider-thumb { - height: #{$value}px; - width: #{$value}px; - transform: scale(#{$thumbscale}, #{$thumbscale}); - } - } - } - - $tickcount: $tickcount + 30; - $margincount: $margincount + 2; - $thumbscale: $thumbscale - 1; - } - - - - .slider-container { - position: relative; - width: 100%; - display: flex; - align-content: center; - } - - .slider-filled { - border-radius: var(--default-borderradius); - } - - .slider-inner-container { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - display: flex; - align-items: center; - } - - .slider-value-label { - position: absolute; - top: 0; - transform: translateX(-50%) translateY(-125%); - padding: 4px 8px; - text-align: center; - align-items: center; - justify-content: center; - font-size: 12px; - border-radius: 2px; - line-height: normal; - opacity: 0; - transition: opacity .2s ease-in-out; - pointer-events: none; - user-select: none; - } - - .slider-tickmarks { - display: flex; - justify-content: space-between; - flex-grow: 1; - } - - .slider-track-tick { - border-radius: 9999%; - background-color: var(--palette-primary); - } - - .slider-track-tick-label { - position: absolute; - top: 0; - left: 0; - } -} diff --git a/src/Connected.Components/Styles/components/_snackbar.scss b/src/Connected.Components/Styles/components/_snackbar.scss deleted file mode 100644 index 045ab05..0000000 --- a/src/Connected.Components/Styles/components/_snackbar.scss +++ /dev/null @@ -1,105 +0,0 @@ - -.snackbar { - display: flex; - flex-grow: initial; - padding: 6px 16px; - align-items: center; - position: relative; - pointer-events: auto; - font-weight: 400; - line-height: 1.43; - overflow: hidden; - margin-top: 16px; - min-width: 288px; - max-width: 500px; - border-radius: var(--default-borderradius); - box-shadow: 0px 3px 5px -1px rgba(0,0,0,0.2), 0px 6px 10px 0px rgba(0,0,0,0.14), 0px 1px 18px 0px rgba(0,0,0,0.12); - - &.force-cursor{ - cursor:pointer; - } - - &.snackbar-blurred { - backdrop-filter: blur(18px); - } - - &.snackbar-surface { - background: var(--palette-surface); - } - - .snackbar-content-message { - padding: 8px 0; - } - - .snackbar-content-action { - display: flex; - align-items: center; - margin-left: auto; - margin-right: -8px; - padding-left: 16px; - margin-inline-start: auto; - margin-inline-end: -8px; - padding-inline-start: 16px; - padding-inline-end: unset; - - & > button { - color: inherit; - } - } -} - -.snackbar-location { - &-top { - - &-left { - top: 24px; - left: 24px - } - - &-center { - top: 24px; - left: 50%; - transform: translateX(-50%); - } - - &-right { - top: 24px; - right: 24px - } - } - - &-bottom { - - &-right { - right: 24px; - bottom: 24px - } - - &-center { - bottom: 24px; - left: 50%; - transform: translateX(-50%); - } - - &-left { - bottom: 24px; - left: 24px - } - } -} - -#snackbar-container { - position: fixed; - z-index: var(--zindex-snackbar); - pointer-events: none -} - -.snackbar-icon { - display: flex; - opacity: 0.9; - padding: 7px 0; - font-size: 22px; - margin-right: 12px; - margin-inline-end: 12px; - margin-inline-start: unset; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_switch.scss b/src/Connected.Components/Styles/components/_switch.scss deleted file mode 100644 index febe2b9..0000000 --- a/src/Connected.Components/Styles/components/_switch.scss +++ /dev/null @@ -1,106 +0,0 @@ -.switch { - cursor: pointer; - display: inline-flex; - align-items: center; - margin-left: -11px; - margin-right: 16px; - margin-inline-start: -11px; - margin-inline-end: 16px; - vertical-align: middle; - -webkit-tap-highlight-color: transparent; - - &.disabled { - color: var(--palette-text-disabled) !important; - cursor: default; - } - - &.readonly, .readonly:hover { - cursor: default; - background-color: transparent !important; - } -} - -.switch-span { - width: 58px; - height: 38px; - display: inline-flex; - padding: 12px; - z-index: 0; - overflow: hidden; - position: relative; - box-sizing: border-box; - flex-shrink: 0; - vertical-align: middle; - - & .switch-track { - width: 100%; - height: 100%; - opacity: 0.48; - z-index: -1; - transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - border-radius: 7px; - background-color: var(--palette-black); - } -} - -.switch-base { - padding: 9px; - top: 0; - left: 0; - color: #fafafa; - z-index: 1; - position: absolute; - transition: left 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - - &.checked { - transform: translateX(20px); - - & + .switch-track { - opacity: 0.5; - } - } - - &:hover { - background-color: var(--palette-action-default-hover); - } - - &.switch-disabled { - color: var(--palette-grey-default) !important; - - & + .switch-track { - opacity: 0.12 !important; - } - - &:hover, &:focus-visible { - cursor: default; - background-color: transparent !important; - } - } -} - -.switch-button { - display: flex; - align-items: inherit; - justify-content: inherit; - - & .switch-input { - top: 0; - left: 0; - width: 100%; - cursor: inherit; - height: 100%; - margin: 0; - opacity: 0; - padding: 0; - z-index: 1; - position: absolute; - } - - & .switch-thumb { - width: 20px; - height: 20px; - box-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12); - border-radius: 50%; - background-color: currentColor; - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_table.scss b/src/Connected.Components/Styles/components/_table.scss deleted file mode 100644 index 7e82dd2..0000000 --- a/src/Connected.Components/Styles/components/_table.scss +++ /dev/null @@ -1,559 +0,0 @@ -@import '../abstracts/variables'; - -.table { - color: var(--palette-text-primary); - background-color: var(--palette-surface); - border-radius: var(--default-borderradius); - transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - - &.table-square { - border-radius: 0px; - } - - &.table-outlined { - border: 1px solid var(--palette-lines-default); - } -} - -.table-container { - width: 100%; - overflow-y: auto; -} - -.table-root { - width: 100%; - border-spacing: 0; - - & .table-head { - display: table-header-group; - - & .table-cell { - color: var(--palette-text-primary); - font-weight: 500; - line-height: 1.5rem; - } - } - - & .table-body { - display: table-row-group; - - & .table-cell { - color: var(--palette-text-primary); - } - } - - & .table-body:last-child { - & .table-row:last-child { - & .table-cell { - border-bottom: none; - } - } - } -} - -.table-sort-label { - cursor: pointer; - display: inline-flex; - align-items: center; - flex-direction: inherit; - justify-content: flex-start; - - &:hover { - color: var(--palette-action-default); - - .table-sort-label-icon { - opacity: 0.8; - } - } - - .table-sort-label-icon { - font-size: 18px; - transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - margin-left: 4px; - user-select: none; - margin-right: 4px; - opacity: 0; - - &.direction-desc { - opacity: 1; - transform: rotate(180deg); - } - - &.direction-asc { - opacity: 1; - transform: rotate(0deg); - } - } -} - -.table-toolbar { - padding-left: 16px; - padding-right: 8px; - padding-inline-start: 16px; - padding-inline-end: 8px; -} - - - -.table-cell { - display: table-cell; - padding: 16px; - font-size: 0.875rem; - text-align: start; - font-weight: 400; - line-height: 1.43; - border-bottom: 1px solid var(--palette-table-lines); - letter-spacing: 0.01071em; - vertical-align: inherit; - - & .checkbox { - margin: -12px; - } -} - -.table-cell-footer { - color: var(--palette-text-secondary); - font-size: 0.75rem; - line-height: 1.3125rem; -} - -.table-dense { - & * .table-row { - & .table-cell { - padding: 6px 24px 6px 16px; - padding-inline-start: 16px; - padding-inline-end: 24px; - - .table-cell-checkbox { - .button-root { - padding: 4px; - } - } - - .table-row-expander { - padding: 4px; - } - } - - & .table-cell:last-child { - padding-right: 16px; - padding-inline-end: 16px; - } - } -} - -.table-bordered { - & .table-container .table-root .table-body { - & .table-row { - .table-cell:not(:last-child) { - border-right: 1px solid var(--palette-table-lines); - } - } - } - - & .table-container .table-root .table-head.table-head-bordered { - & .table-row { - .table-cell:not(:last-child) { - border-right: 1px solid var(--palette-table-lines); - } - } - } - - & .table-container .table-root .table-foot.table-foot-bordered { - & .table-row { - .table-cell:not(:last-child) { - border-right: 1px solid var(--palette-table-lines); - } - } - } -} - -.table-sticky-header { - .table-container { - overflow-x: auto; - } - - & * .table-root { - - .table-head { - & * .table-cell:first-child { - border-radius: var(--default-borderradius) 0px 0px 0px; - } - - & * .table-cell:last-child { - border-radius: 0px var(--default-borderradius) 0px 0px; - } - - & * .table-cell { - background-color: var(--palette-surface); - position: sticky; - z-index: 2; - top: 0; - } - } - } -} - -.table-sticky-footer { - .table-container { - overflow-x: auto; - } - - & * .table-root { - - .table-foot { - - & * .table-cell { - background-color: var(--palette-surface); - position: sticky; - z-index: 2; - bottom: 0; - } - } - } -} - - -.table-row { - color: inherit; - display: table-row; - outline: 0; - vertical-align: middle; -} - -.table-hover { - & .table-container .table-root .table-body { - & .table-row:hover { - background-color: var(--palette-table-hover); - } - } -} - -.table-striped { - & .table-container .table-root .table-body { - & .table-row:nth-of-type(odd) { - background-color: var(--palette-table-striped); - } - } -} - -.table-hover.table-striped { - & .table-container .table-root .table-body { - & .table-row:nth-of-type(odd):hover { - background-color: var(--palette-table-hover); - } - } -} - - -.table-cell { - & > .input-control { - & > div.input.input-text { - color: var(--theme-on-surface); - font-size: 0.875rem; - margin-top: -14px; - margin-bottom: -8px; - } - } - - & > .select { - & > .input-control { - & > div.input.input-text { - color: var(--theme-on-surface); - font-size: 0.875rem; - margin-top: -14px; - margin-bottom: -8px; - } - } - } -} - -.table-cell-align { - &-left { - text-align: left; - } - - &-center { - text-align: center; - } - - &-right { - text-align: right; - flex-direction: row-reverse; - } - - &-justify { - text-align: justify; - } -} - -.table-pagination-display { - display: flex; - flex-shrink: 0; - - & .tablepager-left { - flex-direction: row !important; - } - - & .tablepager-right { - flex-direction: row-reverse !important; - } -} - -.table-pagination-information { - white-space: nowrap; - direction: initial; -} - -.table-page-number-information { - white-space: nowrap; - direction: initial; -} - -.table-pagination { - color: var(--theme-on-surface); - overflow: auto; - font-size: 0.875rem; - display: initial; -} - -.table-pagination:last-child { - padding: 0; -} - -.table-pagination-toolbar { - border-top: 1px solid var(--palette-table-lines); - height: 52px; - padding-right: 2px; - padding-inline-end: 2px; - padding-inline-start: unset; - - & .tablepager-left { - flex-direction: row !important; - } - - & .tablepager-right { - flex-direction: row-reverse !important; - } -} - -.table-pagination-spacer { - flex: 1 1 100%; -} - -.table-pagination-caption { - display: flex; - flex-shrink: 0; - align-items: center; - padding-left: 10px; - padding-right: 10px; -} - -.table-pagination-select { - cursor: pointer; - margin-left: 10px !important; - margin-right: 10px !important; - margin-top: 0px !important; - min-width: 52px; - - & .select-input { - margin-top: 0px !important; - } - - & .input .input-root { - max-width: 80px; - cursor: pointer; - margin-top: 2px; - border: none; - font-size: .875rem; - font-weight: 400; - line-height: 1.43; - letter-spacing: .01071em; - color: var(--theme-on-surface) - } -} - -.table-pagination-actions { - flex-shrink: 0; - align-items: center; - margin-left: 10px; - margin-inline-start: 10px; - margin-inline-end: unset; -} - -.table-smalldevices-sortselect { - display: none; -} - -.table-loading { - position: relative; - - & .table-loading-progress { - position: absolute; - width: 100%; - } -} - -.table-empty-row { - background-color: var(--palette-surface); - vertical-align: middle; - text-align: center; -} - - -@for $i from 1 through 5 { - tr.table-row-group-indented-#{$i} td:first-child { - padding-left: #{$i * 48}px !important; - } -} - -.table-row-expander { - margin: -12px -2px -12px -12px; -} - -@mixin table-display-smalldevices ($breakpoint) { - .#{$breakpoint}table { - .table-root .table-head, - .table-root .table-foot { - display: none; - } - - .table-smalldevices-sortselect { - display: block; - padding: 4px 16px 8px; - } - - .table-body { - border-top: 1px solid var(--palette-table-lines); - } - - .table-row { - display: initial; - - .table-cell:last-child { - border-bottom: 1px solid var(--palette-table-lines); - } - } - - .table-cell { - display: flex; - justify-content: space-between; - align-items: center; - border: none; - padding: 14px 16px; - text-align: start !important; - } - - &.table-dense { - & .table-cell { - padding: 6px 16px; - } - } - - .table-cell:before { - content: attr(data-label); - font-weight: 500; - padding-right: 16px; - padding-inline-end: 16px; - padding-inline-start: unset; - } - - &.table-small-alignright .table-cell:before { - margin-right: auto; - } - - .table-cell-hide { - visibility: collapse; - height: 0; - padding: 0; - margin: 0; - } - - .table-pagination { - - .table-pagination-spacer { - flex: none; - } - - .table-pagination-actions { - .button-root:first-child { - display: none; - } - - .button-root:last-child { - display: none; - } - } - - .select ~ .table-pagination-caption { - margin-left: auto; - margin-inline-start: auto; - } - } - } -} - -// Table Pagination Flex Wrapper on old as phones -@media (max-width:360px) { - .table { - .table-pagination { - .select { - margin-left: auto; - margin-right: -14px; - margin-inline-start: auto; - margin-inline-end: -14px; - } - - .select ~ .table-pagination-caption { - margin-left: unset !important; - margin-inline-start: unset !important; - } - } - } -} - -@media (max-width:416px) { - .table { - .table-pagination { - .table-pagination-toolbar { - flex-wrap: wrap; - padding-top: 16px; - padding-right: 16px; - padding-inline-end: 16px; - padding-inline-start: unset; - min-height: 100px; - - .table-pagination-actions { - margin-left: auto; - margin-right: -14px; - margin-inline-start: auto; - margin-inline-end: -14px; - } - } - } - } -} - -@media (max-width:$breakpoint-sm) { - @include table-display-smalldevices("xs-"); -} - -@media (max-width:$breakpoint-md) { - @include table-display-smalldevices("sm-"); -} - -@media (max-width:$breakpoint-lg) { - @include table-display-smalldevices("md-"); -} - -@media (max-width:$breakpoint-xl) { - @include table-display-smalldevices("lg-"); -} - -@media (max-width:$breakpoint-xxl) { - @include table-display-smalldevices("xl-"); -} - -@media (min-width:$breakpoint-xxl) { - @include table-display-smalldevices("xxl-"); -} diff --git a/src/Connected.Components/Styles/components/_tabs.scss b/src/Connected.Components/Styles/components/_tabs.scss deleted file mode 100644 index 83f5d02..0000000 --- a/src/Connected.Components/Styles/components/_tabs.scss +++ /dev/null @@ -1,303 +0,0 @@ -@import '../abstracts/variables'; - -.tabs { - display: flex; - flex-direction: column; - - &.tabs-reverse { - flex-direction: column-reverse; - } - - &.tabs-vertical { - flex-direction: row; - } - - &.tabs-vertical-reverse { - flex-direction: row-reverse; - } - - &.tabs-rounded { - border-radius: var(--default-borderradius); - - .tabs-toolbar { - border-radius: var(--default-borderradius); - } - - .tabs-panels { - border-radius: var(--default-borderradius); - } - } -} - -.tabs-toolbar { - position: relative; - background-color: var(--palette-surface); - - &.tabs-border-left { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-right: 1px solid var(--palette-lines-default); - } - - &.tabs-border-right { - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; - border-left: 1px solid var(--palette-lines-default); - } - - &.tabs-border-top { - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom: 1px solid var(--palette-lines-default); - } - - &.tabs-border-bottom { - border-top-left-radius: 0 !important; - border-top-right-radius: 0 !important; - border-top: 1px solid var(--palette-lines-default); - } - - &.tabs-rounded { - border-radius: var(--default-borderradius); - } - - &.tabs-vertical { - .tabs-toolbar-inner { - flex-direction: column; - - .tabs-scroll-button { - .button-root { - width: 100%; - border-radius: 0px; - height: 32px; - - .icon-button-label { - .icon-root{ - transform:rotate(90deg); - } - } - } - } - } - } - - & .tabs-toolbar-inner { - display: flex; - min-height: 48px; - } -} - - -.tabs-toolbar-content { - width: 100%; - flex: 1 1 auto; - display: inline-block; - position: relative; - white-space: nowrap; - overflow: hidden; - - & .tabs-toolbar-wrapper { - width: max-content; - position: inherit; - display: flex; - transition: .3s cubic-bezier(.25,.8,.5,1); - - &.tabs-centered { - margin: auto; - } - - &.tabs-vertical { - flex-direction: column; - } - } -} - -.tabs-panels { - position: relative; - transition: .3s cubic-bezier(.25,.8,.5,1); - - &.tabs-vertical { - display: flex; - flex-grow: 1; - } -} - -.tab { - width:100%; - min-width: 160px; - display: inline-flex; - padding: 6px 12px; - min-height: 48px; - flex-shrink: 0; - font-weight: 500; - line-height: 1.75; - user-select: none; - white-space: normal; - letter-spacing: 0.02857em; - text-transform: uppercase; - text-align: center; - align-items: center; - justify-content: center; - transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; - - &:hover { - cursor: pointer; - background-color: var(--palette-action-default-hover); - } - - &.tab-active { - color: var(--palette-primary); - - &:hover { - background-color: var(--palette-primary-hover); - } - } - - &.disabled { - cursor: default; - pointer-events: none; - color: var(--palette-text-disabled); - } - - & .tab-icon-text { - margin-right: 8px; - margin-inline-end: 8px; - margin-inline-start: unset; - } -} - -.tab-slider { - position: absolute; - background: var(--palette-primary); - - &.tab-slider-horizontal { - height: 2px; - left: 0; - bottom: 0; - transition: left .3s cubic-bezier(.64,.09,.08,1); - will-change: left; - - &.tab-slider-horizontal-reverse { - top: 0px; - } - } - - &.tab-slider-vertical { - width: 2px; - right: 0; - transition: top .3s cubic-bezier(.64,.09,.08,1); - will-change: top; - - &.tab-slider-vertical-reverse { - left: 0; - right: unset; - } - } -} - -.tab-badge{ - margin-left:8px; - margin-inline-start: 8px; - margin-inline-end: unset; -} - -@each $color in $palette-colors { - .tabs-toolbar-#{$color} { - background-color: var(--palette-#{$color}); - color: var(--palette-#{$color}-text); - - .tab-slider { - background: var(--palette-#{$color}-text); - } - - .tab { - &.tab-active { - color: var(--palette-#{$color}-text); - - &:hover { - background-color: var(--palette-#{$color}-lighten); - } - } - } - } -} - - -.tab-transition { - &-enter { - transform: translate(100%, 0); - } - - &-leave, &-leave-active { - position: absolute; - top: 0; - } - - &-leave-to { - position: absolute; - transform: translate(-100%, 0); - } -} - -.tab-reverse-transition { - &-enter { - transform: translate(-100%, 0); - } - - &-leave, &-leave-to { - top: 0; - position: absolute; - transform: translate(100%, 0); - } -} - -.dynamic-tabs { - .tabs-toolbar { - .tab { - padding: 6px 14px; - - .icon-button { - padding: 4px; - margin-right: -4px; - margin-inline-end: -4px; - margin-inline-start: unset; - } - - .tabs-panel-header-before { - padding-right: 8px; - padding-inline-end: 8px; - padding-inline-start: unset; - } - - .tabs-panel-header-after { - padding-left: 8px; - padding-inline-start: 8px; - padding-inline-end: unset; - } - } - } -} - -.tabs-header { - &.tabs-header-before { - display: inherit; - } - - &.tabs-header-after { - display: inherit; - } -} - -.tabs-panel-header { - display: flex; - flex: 1 1 auto; - - &.tabs-panel-header-before { - justify-content: flex-start; - } - - &.tabs-panel-header-after { - justify-content: flex-end; - } -} - diff --git a/src/Connected.Components/Styles/components/_timeline.scss b/src/Connected.Components/Styles/components/_timeline.scss deleted file mode 100644 index 49c9bd6..0000000 --- a/src/Connected.Components/Styles/components/_timeline.scss +++ /dev/null @@ -1,650 +0,0 @@ - -.timeline { - position: relative; - display: flex; -} - -.timeline-vertical { - padding-top: 24px; - flex-direction: column; - - &::before { - top: 0; - bottom: 0; - content: ""; - height: 100%; - position: absolute; - width: 2px; - background: var(--palette-divider); - } - - .timeline-item { - padding-bottom: 24px; - - .timeline-item-content { - max-width: calc(50% - 48px); - } - - .timeline-item-divider { - min-width: 96px; - } - - .timeline-item-opposite { - flex: 1 1 auto; - max-width: calc(50% - 48px); - } - } -} - -.timeline-horizontal { - flex-direction: row; - - &::before { - top: 0; - bottom: 0; - content: ""; - height: 2px; - position: absolute; - width: 100%; - background: var(--palette-divider); - } - - .timeline-item { - padding-left: 24px; - padding-right: 24px; - width: 100%; - - .timeline-item-content { - max-height: calc(50% - 48px); - } - - .timeline-item-divider { - min-height: 96px; - } - } -} - -.timeline-item { - display: flex; - - .timeline-item-content { - position: relative; - height: 100%; - flex: 1 1 auto; - } - - .timeline-item-divider { - position: relative; - display: flex; - align-items: center; - justify-content: center; - } - - .timeline-item-opposite { - align-self: center; - } -} - - -.timeline-vertical { - &.timeline-align-start { - .timeline-item-divider { - align-items: flex-start; - } - - .timeline-item-opposite { - align-self: flex-start; - } - } - - &.timeline-align-end { - .timeline-item-divider { - align-items: flex-end; - } - - .timeline-item-opposite { - align-self: flex-end; - } - } - - &.timeline-position-alternate { - &::before { - left: auto; - right: calc(50% - 1px); - } - - .timeline-item { - &:nth-child(odd):not(.timeline-item-start), &.timeline-item-end { - flex-direction: row-reverse; - - .timeline-item-opposite { - text-align: end; - } - } - - &:nth-child(2n):not(.timeline-item-end) { - flex-direction: row; - - .timeline-item-opposite { - text-align: start; - } - } - } - - &.timeline-reverse { - .timeline-item { - &:nth-child(odd):not(.timeline-item-end), &.timeline-item-start { - flex-direction: row; - - .timeline-item-opposite { - text-align: start; - } - } - - &:nth-child(2n):not(.timeline-item-start) { - flex-direction: row-reverse; - - .timeline-item-opposite { - text-align: end; - } - } - } - } - } - - &.timeline-position-start { - &::before { - right: auto; - left: 47px; - } - - &.timeline-rtl { - &::before { - right: 47px; - left: auto; - } - } - - .timeline-item { - flex-direction: row-reverse; - } - } - - &.timeline-position-end { - &::before { - right: 47px; - left: auto; - } - - &.timeline-rtl { - &::before { - left: 47px; - right: auto; - } - } - - .timeline-item { - flex-direction: row; - } - } - /* Both Start & End */ - &.timeline-position { - &-start, &-end { - .timeline-item-content { - max-width: calc(100% - 96px); - } - - .timeline-item-opposite { - display: none; - } - } - } -} - -.timeline-horizontal { - &.timeline-align-start { - .timeline-item-divider { - justify-content: flex-start; - } - - .timeline-item-opposite { - align-self: flex-start; - } - } - - &.timeline-align-end { - .timeline-item-divider { - justify-content: flex-end; - } - - .timeline-item-opposite { - align-self: flex-end; - } - } - - &.timeline-position-alternate { - &::before { - top: auto; - bottom: calc(50% - 1px); - } - - .timeline-item { - &:nth-child(odd), &.timeline-item-end { - flex-direction: column-reverse; - - .timeline-item-opposite { - /* I dont know */ - } - } - - &:nth-child(2n), &.timeline-item-start { - flex-direction: column; - - .timeline-item-opposite { - /* I dont know */ - } - } - } - - &.timeline-reverse { - .timeline-item { - &:nth-child(odd), &.timeline-item-end { - flex-direction: column; - - .timeline-item-opposite { - /* I dont know */ - } - } - - &:nth-child(2n), &.timeline-item-start { - flex-direction: column-reverse; - - .timeline-item-opposite { - /* I dont know */ - } - } - } - } - } - - &.timeline-position-top { - &::before { - top: 47px; - bottom: auto; - } - - .timeline-item { - flex-direction: column-reverse; - } - } - - &.timeline-position-bottom { - &::before { - top: auto; - bottom: 47px; - } - - .timeline-item { - flex-direction: column; - } - } - /* Both Top & Bottom */ - &.timeline-position { - &-top, &-bottom { - - .timeline-item-content { - max-height: calc(100% - 96px); - } - - .timeline-item-opposite { - display: none; - } - } - } -} - -/*Dot*/ - -.timeline-item-dot { - display: flex; - justify-content: center; - align-items: center; - background: var(--palette-surface); - border-radius: 50%; - left: calc(50% - 19px); - - &.timeline-dot-size-small { - width: 24px; - height: 24px; - - .timeline-item-dot-inner { - height: 18px; - width: 18px; - } - } - - &.timeline-dot-size-medium { - width: 38px; - height: 38px; - - .timeline-item-dot-inner { - height: 30px; - width: 30px; - } - } - - &.timeline-dot-size-large { - width: 52px; - height: 52px; - - .timeline-item-dot-inner { - height: 42px; - width: 42px; - } - } - - .timeline-item-dot-inner { - border-radius: 50%; - display: flex; - justify-content: center; - align-items: center; - - &.timeline-dot-fill { - height: inherit; - width: inherit; - } - - &.timeline-dot-default { - background-color: var(--palette-grey-light); - } - - @each $color in $palette-colors { - &.timeline-dot-#{$color} { - color: var(--palette-#{$color}-text); - background-color: var(--palette-#{$color}); - } - } - } -} - -/*Modifiers*/ - -.timeline-modifiers { - .timeline-item-content { - .card { - &::before, &::after { - content: ""; - position: absolute; - } - } - } - - &.timeline-vertical { - &.timeline-position-start:not(.timeline-rtl), &.timeline-position-end.timeline-rtl { - .timeline-item-content { - .card { - &::before, &::after { - transform: rotate(0); - left: -16px; - right: auto; - } - - &.paper-outlined { - &::after { - left: -15px; - } - } - } - } - } - - &.timeline-position-end:not(.timeline-rtl), &.timeline-position-start.timeline-rtl { - .timeline-item-content { - .card { - &::before, &::after { - transform: rotate(180deg); - right: -16px; - left: auto; - } - - &.paper-outlined { - &::after { - right: -15px; - } - } - } - } - } - - &.timeline-position-alternate { - .timeline-item { - &:nth-child(odd):not(.timeline-item-start), &.timeline-item-end { - .timeline-item-content { - .card { - &::before, &::after { - transform: rotate(0); - left: -16px; - right: auto; - } - - &.paper-outlined { - &::after { - left: -15px; - } - } - } - } - } - - &:nth-child(2n):not(.timeline-item-end) { - .timeline-item-content { - .card { - &::before, &::after { - transform: rotate(180deg); - right: -16px; - left: auto; - } - - &.paper-outlined { - &::after { - right: -15px; - } - } - } - } - } - } - } - - &.timeline-reverse:not(.timeline-rtl), &.timeline-position-alternate.timeline-rtl:not(.timeline-reverse) { - .timeline-item { - &:nth-child(odd):not(.timeline-item-end), &.timeline-item-start { - .timeline-item-content { - .card { - &::before, &::after { - transform: rotate(180deg); - right: -16px; - left: auto; - } - - &.paper-outlined { - &::after { - right: -15px; - } - } - } - } - } - - &:nth-child(2n):not(.timeline-item-start) { - .timeline-item-content { - .card { - &::before, &::after { - transform: rotate(0); - left: -16px; - right: auto; - } - - &.paper-outlined { - &::after { - left: -15px; - } - } - } - } - } - } - } - } - - &.timeline-horizontal { - &.timeline-position-top { - .timeline-item-content { - .card { - &::before, &::after { - transform: rotate(90deg); - top: -24px; - bottom: auto; - left: calc(50% - 8px); - } - - &.paper-outlined { - &::after { - top: -23px; - } - } - } - } - } - - &.timeline-position-bottom { - .timeline-item-content { - .card { - &::before, &::after { - transform: rotate(270deg); - bottom: -24px; - top: auto; - left: calc(50% - 8px); - } - - &.paper-outlined { - &::after { - bottom: -23px; - } - } - } - } - } - - &.timeline-position-alternate { - .timeline-item { - &:nth-child(odd):not(.timeline-item-start), &.timeline-item-end { - .timeline-item-content { - .card { - &::before, &::after { - transform: rotate(90deg); - top: -24px; - bottom: auto; - left: calc(50% - 8px); - } - - &.paper-outlined { - &::after { - top: -23px; - } - } - } - } - } - - &:nth-child(2n):not(.timeline-item-end) { - .timeline-item-content { - .card { - &::before, &::after { - transform: rotate(270deg); - bottom: -24px; - top: auto; - left: calc(50% - 8px); - } - - &.paper-outlined { - &::after { - bottom: -23px; - } - } - } - } - } - } - - &.timeline-reverse { - .timeline-item { - &:nth-child(odd):not(.timeline-item-start), &.timeline-item-end { - .timeline-item-content { - .card { - &::before, &::after { - transform: rotate(270deg); - bottom: -24px; - top: auto; - left: calc(50% - 8px); - } - - &.paper-outlined { - &::after { - bottom: -23px; - } - } - } - } - } - - &:nth-child(2n):not(.timeline-item-end) { - .timeline-item-content { - .card { - &::before, &::after { - transform: rotate(90deg); - top: -24px; - bottom: auto; - left: calc(50% - 8px); - } - - &.paper-outlined { - &::after { - top: -23px; - } - } - } - } - } - } - } - } - } - - - - .timeline-item-content { - .card { - &::before { - border-top: 16px solid transparent; - border-bottom: 16px solid transparent; - border-right: 16px solid rgba(0,0,0,.10); - top: calc(50% - 14px); - } - - &::after { - border-top: 16px solid transparent; - border-bottom: 16px solid transparent; - border-right: 16px solid var(--palette-surface); - top: calc(50% - 16px); - } - - &.paper-outlined { - &::before { - top: calc(50% - 16px); - border-right-color: var(--palette-lines-default); - } - } - } - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_toolbar.scss b/src/Connected.Components/Styles/components/_toolbar.scss deleted file mode 100644 index 2666ec8..0000000 --- a/src/Connected.Components/Styles/components/_toolbar.scss +++ /dev/null @@ -1,34 +0,0 @@ -@import '../abstracts/variables'; - -.toolbar { - display: flex; - position: relative; - align-items: center; - height: 56px; -} - -.toolbar-gutters { - padding-left: 16px; - padding-right: 16px; -} - -@media (min-width:$breakpoint-xs) and (orientation: landscape) { - .toolbar { - height: 48px; - } -} - -@media (min-width:$breakpoint-sm) { - .toolbar { - height: 64px; - } - - .toolbar-gutters { - padding-left: 24px; - padding-right: 24px; - } -} - -.toolbar-dense { - height: 48px; -} diff --git a/src/Connected.Components/Styles/components/_tooltip.scss b/src/Connected.Components/Styles/components/_tooltip.scss deleted file mode 100644 index b29dd30..0000000 --- a/src/Connected.Components/Styles/components/_tooltip.scss +++ /dev/null @@ -1,76 +0,0 @@ - -.tooltip-root { - width: fit-content; - - &.tooltip-inline { - display: inline-block; - } -} - -.tooltip { - padding: 4px 8px; - text-align: center; - align-items: center; - justify-content: center; - font-weight: 500; - font-size: 12px; - line-height: 1.4em; - border-radius: var(--default-borderradius); - z-index: var(--zindex-tooltip); - - &.tooltip-default { - color: var(--palette-dark-text); - background-color: var(--palette-grey-darker); - - &.tooltip-arrow::after { - border-color: var(--palette-grey-darker) transparent transparent transparent; - } - } - - &.tooltip { - &-center-left:not([data-mudpopover-flip]), &-center-right[data-mudpopover-flip] { - transform: translateX(-10px); - - &.tooltip-arrow::after { - left: 100%; - transform: rotate(270deg); - } - } - - &-center-right:not([data-mudpopover-flip]), &-center-left[data-mudpopover-flip] { - transform: translateX(10px); - - &.tooltip-arrow::after { - right: 100%; - transform: rotate(90deg); - } - } - - &-top-center:not([data-mudpopover-flip]), &-bottom-center[data-mudpopover-flip] { - transform: translateY(-10px); - - &.tooltip-arrow::after { - top: 100%; - transform: rotate(0deg); - } - } - - &-bottom-center:not([data-mudpopover-flip]), &-top-center[data-mudpopover-flip] { - transform: translateY(10px); - - &.tooltip-arrow::after { - bottom: 100%; - transform: rotate(180deg); - } - } - } - - &.tooltip-arrow::after { - content: ""; - position: absolute; - border-width: 6px; - border-style: solid; - border-color: transparent; - border-top-color: inherit; - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_treeview.scss b/src/Connected.Components/Styles/components/_treeview.scss deleted file mode 100644 index b9375ee..0000000 --- a/src/Connected.Components/Styles/components/_treeview.scss +++ /dev/null @@ -1,136 +0,0 @@ -@import '../abstracts/variables'; - -.treeview { - margin: 0px; - padding: 0px; - list-style: none; - overflow: auto; - - @each $color in $palette-colors { - &.treeview-selected-#{$color} { - .treeview-item-content.treeview-item-selected { - color: var(--palette-#{$color}); - background-color: var(--palette-#{$color}-hover); - } - } - } - - @each $color in $palette-colors { - &.treeview-checked-#{$color} { - .treeview-item-checkbox { - .button-root.icon-button { - color: var(--palette-#{$color}); - } - } - } - } -} - -.treeview-group { - margin: 0px; - padding: 0px; - margin-left: 17px; - margin-inline-start: 17px; - margin-inline-end: unset; - list-style: none; -} - -.treeview-item { - margin: 0; - outline: 0; - padding: 0; - cursor: default; - list-style: none; - min-height: 2rem; - align-items: center; - -webkit-tap-highlight-color: transparent; - - .treeview-item-arrow, .treeview-item-checkbox { - .icon-button { - padding: 4px; - } - } -} - -.treeview-item-content { - width: 100%; - display: flex; - padding: 4px 8px; - align-items: center; - transition: background-color 150ms cubic-bezier(.4,0,.2,1) 0ms; -} - -.treeview-hover .treeview-item-content:hover { - background-color: var(--palette-action-default-hover); -} - -.treeview-item-arrow { - width: 2rem; - display: flex; - flex-shrink: 0; - margin: 0 4px; - min-height: 32px; - justify-content: center; - - .treeview-item-arrow-expand { - transition: .3s cubic-bezier(.25,.8,.5,1),visibility 0s; - - &.transform { - transform: rotate(90deg); - } - } - - .treeview-item-arrow-load { - animation: rotation 1s infinite linear; - } -} - -.treeview-item-icon { - width: 32px; - display: flex; - flex-shrink: 0; - margin-right: 4px; - margin-inline-end: 4px; - margin-inline-start: unset; - justify-content: center; -} - -.treeview-item-label { - flex-grow: 1; - padding-left: 4px; - padding-right: 4px; -} - -.treeview-dense { - .treeview-item { - min-height: unset; - } - - .treeview-item-content { - padding: 1px 4px; - } - - .treeview-item-arrow { - min-height: unset; - } - - .icon-button { - padding: 0; - } -} - -@keyframes rotation { - from { - transform: rotate(0deg); - } - - to { - transform: rotate(359deg); - } -} - -.application-layout-rtl { - .treeview-item-arrow { - transform: scaleX(-1); - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/components/_typography.scss b/src/Connected.Components/Styles/components/_typography.scss deleted file mode 100644 index 97729c0..0000000 --- a/src/Connected.Components/Styles/components/_typography.scss +++ /dev/null @@ -1,62 +0,0 @@ - -.typography{ - margin: 0; -} - -$typography-types: ("body1", "body2", "caption", "button", "h1", "h2", "h3", "h4", "h5", "h6", "subtitle1", "subtitle2", "overline"); - -@each $type in $typography-types { - .typography-#{$type} { - font-size: var(--typography-#{$type}-size); - font-family: var(--typography-#{$type}-family); - font-weight: var(--typography-#{$type}-weight); - line-height: var(--typography-#{$type}-lineheight); - letter-spacing: var(--typography-#{$type}-letterspacing); - text-transform: var(--typography-#{$type}-text-transform);; - } -} - -.typography-srOnly { - width: 1px; - height: 1px; - overflow: hidden; - position: absolute; -} - -.typography-align-left { - text-align: left; -} - -.typography-align-center { - text-align: center; -} - -.typography-align-right { - text-align: right; -} - -.typography-align-justify { - text-align: justify; -} - -.typography-nowrap { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.typography-gutterbottom { - margin-bottom: 0.35em; -} - -.typography-paragraph { - margin-bottom: 16px; -} - -.typography-display-inline { - display: inline; -} - -.typography-display-block { - display: block; -} diff --git a/src/Connected.Components/Styles/core/_animations.scss b/src/Connected.Components/Styles/core/_animations.scss deleted file mode 100644 index 811285c..0000000 --- a/src/Connected.Components/Styles/core/_animations.scss +++ /dev/null @@ -1,249 +0,0 @@ -@keyframes animation-fadein { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} - -@-moz-keyframes animation-fadein { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} - -@-webkit-keyframes animation-fadein { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} - -@-o-keyframes animation-fadein { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} - -@-ms-keyframes animation-fadein { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} - -@-webkit-keyframes scale-up-center { - 0% { - -webkit-transform: scale(0.5); - transform: scale(0.5); - } - - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@keyframes scale-up-center { - 0% { - -webkit-transform: scale(0.5); - transform: scale(0.5); - } - - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@-webkit-keyframes skeleton-keyframes-pulse { - 0% { - opacity: 1; - } - - 50% { - opacity: 0.4; - } - - 100% { - opacity: 1; - } -} - -@-webkit-keyframes skeleton-keyframes-wave { - 0% { - transform: translateX(-100%); - } - - 60% { - transform: translateX(100%); - } - - 100% { - transform: translateX(100%); - } -} - -@-webkit-keyframes progress-circular-keyframes-circular-rotate { - 0% { - transform-origin: 50% 50%; - } - - 100% { - transform: rotate(360deg); - } -} - -@-webkit-keyframes progress-circular-keyframes-circular-dash { - 0% { - stroke-dasharray: 1px, 200px; - stroke-dashoffset: 0px; - } - - 50% { - stroke-dasharray: 100px, 200px; - stroke-dashoffset: -15px; - } - - 100% { - stroke-dasharray: 100px, 200px; - stroke-dashoffset: -125px; - } -} - -@-webkit-keyframes progress-linear-horizontal-keyframes-indeterminate1 { - 0% { - left: -35%; - right: 100%; - } - - 60% { - left: 100%; - right: -90%; - } - - 100% { - left: 100%; - right: -90%; - } -} - -@-webkit-keyframes progress-linear-horizontal-keyframes-indeterminate2 { - 0% { - left: -200%; - right: 100%; - } - - 60% { - left: 107%; - right: -8%; - } - - 100% { - left: 107%; - right: -8%; - } -} - -@-webkit-keyframes progress-linear-horizontal-keyframes-buffer { - 0% { - opacity: 1; - background-position: 0 -23px; - } - - 50% { - opacity: 0; - background-position: 0 -23px; - } - - 100% { - opacity: 1; - background-position: -200px -23px; - } -} - - - - - - - - - - -@-webkit-keyframes progress-linear-vertical-keyframes-indeterminate1 { - 0% { - bottom: -35%; - top: 100%; - } - - 60% { - bottom: 100%; - top: -90%; - } - - 100% { - bottom: 100%; - top: -90%; - } -} - -@-webkit-keyframes progress-linear-vertical-keyframes-indeterminate2 { - 0% { - bottom: -200%; - top: 100%; - } - - 60% { - bottom: 107%; - top: -8%; - } - - 100% { - bottom: 107%; - top: -8%; - } -} - -@-webkit-keyframes progress-linear-vertical-keyframes-buffer { - 0% { - opacity: 1; - background-position: -23px 0; - } - - 50% { - opacity: 0; - background-position: -23px 0; - } - - 100% { - opacity: 1; - background-position: -23px -200px; - } -} - -@keyframes progress-linear-striped-loading { - 0% { - background-position: 0 0; - } - - 100% { - background-position: 300px 0; - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/core/_base.scss b/src/Connected.Components/Styles/core/_base.scss deleted file mode 100644 index db60c8b..0000000 --- a/src/Connected.Components/Styles/core/_base.scss +++ /dev/null @@ -1,34 +0,0 @@ -* { - box-sizing: border-box; - margin: 0; - padding: 0; - border-width: 0; - border-style: solid; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -strong, b { - font-weight: 700; -} - -body { - color: var(--palette-text-primary); - font-family: var(--typography-default-family); - font-size: var(--typography-default-size); - font-weight: var(--typography-default-weight); - line-height: var(--typography-default-lineheight); - letter-spacing: var(--typography-default-letterspacing); - text-transform: var(--typography-default-text-transform); - background-color: var(--palette-background); -} - -a { - color: var(--palette-text-primary); -} - -.layout { - height: 100%; - width: 100%; - position: relative; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/core/_blazor.scss b/src/Connected.Components/Styles/core/_blazor.scss deleted file mode 100644 index 6be3610..0000000 --- a/src/Connected.Components/Styles/core/_blazor.scss +++ /dev/null @@ -1,45 +0,0 @@ -#blazor-error-ui { - background: lightyellow; - bottom: 0; - box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); - display: none; - left: 0; - padding: 0.6rem 1.25rem 0.7rem 1.25rem; - position: fixed; - width: 100%; - z-index: 9999; -} - -#blazor-error-ui .dismiss { - cursor: pointer; - position: absolute; - right: 0.75rem; - top: 0.5rem; -} - -#components-reconnect-modal { - z-index: 9999 !important; - - h5 { - font-size: 18px; - } - - button { - color: var(--palette-text-primary); - padding: 8px 16px; - font-size: .875rem; - min-width: 64px; - box-sizing: border-box; - transition: background-color 250ms cubic-bezier(.4,0,.2,1) 0ms,box-shadow 250ms cubic-bezier(.4,0,.2,1) 0ms,border 250ms cubic-bezier(.4,0,.2,1) 0ms; - font-weight: 500; - line-height: 1; - border-radius: var(--default-borderradius); - letter-spacing: .02857em; - text-transform: uppercase; - margin: 40px auto !important; - - &:hover { - background-color: var(--palette-action-default-hover); - } - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/core/_colors.scss b/src/Connected.Components/Styles/core/_colors.scss deleted file mode 100644 index 3076233..0000000 --- a/src/Connected.Components/Styles/core/_colors.scss +++ /dev/null @@ -1,361 +0,0 @@ -$red: ( - 'base': #F44336, - 'lighten-5': #FFEBEE, - 'lighten-4': #FFCDD2, - 'lighten-3': #EF9A9A, - 'lighten-2': #E57373, - 'lighten-1': #EF5350, - 'darken-1': #E53935, - 'darken-2': #D32F2F, - 'darken-3': #C62828, - 'darken-4': #B71C1C, - 'accent-1': #FF8A80, - 'accent-2': #FF5252, - 'accent-3': #FF1744, - 'accent-4': #D50000 -); - -$pink: ( - 'base': #e91e63, - 'lighten-5': #fce4ec, - 'lighten-4': #f8bbd0, - 'lighten-3': #f48fb1, - 'lighten-2': #f06292, - 'lighten-1': #ec407a, - 'darken-1': #d81b60, - 'darken-2': #c2185b, - 'darken-3': #ad1457, - 'darken-4': #880e4f, - 'accent-1': #00ff00,//#ff80ab, - 'accent-2': #ff4081, - 'accent-3': #f50057, - 'accent-4': #c51162 -); - -$purple: ( - 'base': #9c27b0, - 'lighten-5': #f3e5f5, - 'lighten-4': #e1bee7, - 'lighten-3': #ce93d8, - 'lighten-2': #ba68c8, - 'lighten-1': #ab47bc, - 'darken-1': #8e24aa, - 'darken-2': #7b1fa2, - 'darken-3': #6a1b9a, - 'darken-4': #4a148c, - 'accent-1': #ea80fc, - 'accent-2': #e040fb, - 'accent-3': #d500f9, - 'accent-4': #aa00ff -); - -$deep-purple: ( - 'base': #673ab7, - 'lighten-5': #ede7f6, - 'lighten-4': #d1c4e9, - 'lighten-3': #b39ddb, - 'lighten-2': #9575cd, - 'lighten-1': #7e57c2, - 'darken-1': #5e35b1, - 'darken-2': #512da8, - 'darken-3': #4527a0, - 'darken-4': #311b92, - 'accent-1': #b388ff, - 'accent-2': #7c4dff, - 'accent-3': #651fff, - 'accent-4': #6200ea -); - -$indigo: ( - 'base': #3f51b5, - 'lighten-5': #e8eaf6, - 'lighten-4': #c5cae9, - 'lighten-3': #9fa8da, - 'lighten-2': #7986cb, - 'lighten-1': #5c6bc0, - 'darken-1': #3949ab, - 'darken-2': #303f9f, - 'darken-3': #283593, - 'darken-4': #1a237e, - 'accent-1': #8c9eff, - 'accent-2': #536dfe, - 'accent-3': #3d5afe, - 'accent-4': #304ffe -); - -$blue: ( - 'base': #2196F3, - 'lighten-5': #E3F2FD, - 'lighten-4': #BBDEFB, - 'lighten-3': #90CAF9, - 'lighten-2': #64B5F6, - 'lighten-1': #42A5F5, - 'darken-1': #1E88E5, - 'darken-2': #1976D2, - 'darken-3': #1565C0, - 'darken-4': #0D47A1, - 'accent-1': #82B1FF, - 'accent-2': #448AFF, - 'accent-3': #2979FF, - 'accent-4': #2962FF -); - -$light-blue: ( - 'base': #03a9f4, - 'lighten-5': #e1f5fe, - 'lighten-4': #b3e5fc, - 'lighten-3': #81d4fa, - 'lighten-2': #4fc3f7, - 'lighten-1': #29b6f6, - 'darken-1': #039be5, - 'darken-2': #0288d1, - 'darken-3': #0277bd, - 'darken-4': #01579b, - 'accent-1': #80d8ff, - 'accent-2': #40c4ff, - 'accent-3': #00b0ff, - 'accent-4': #0091ea -); - -$cyan: ( - 'base': #00bcd4, - 'lighten-5': #e0f7fa, - 'lighten-4': #b2ebf2, - 'lighten-3': #80deea, - 'lighten-2': #4dd0e1, - 'lighten-1': #26c6da, - 'darken-1': #00acc1, - 'darken-2': #0097a7, - 'darken-3': #00838f, - 'darken-4': #006064, - 'accent-1': #84ffff, - 'accent-2': #18ffff, - 'accent-3': #00e5ff, - 'accent-4': #00b8d4 -); - -$teal: ( - 'base': #009688, - 'lighten-5': #e0f2f1, - 'lighten-4': #b2dfdb, - 'lighten-3': #80cbc4, - 'lighten-2': #4db6ac, - 'lighten-1': #26a69a, - 'darken-1': #00897b, - 'darken-2': #00796b, - 'darken-3': #00695c, - 'darken-4': #004d40, - 'accent-1': #a7ffeb, - 'accent-2': #64ffda, - 'accent-3': #1de9b6, - 'accent-4': #00bfa5 -); - -$green: ( - 'base': #4CAF50, - 'lighten-5': #E8F5E9, - 'lighten-4': #C8E6C9, - 'lighten-3': #A5D6A7, - 'lighten-2': #81C784, - 'lighten-1': #66BB6A, - 'darken-1': #43A047, - 'darken-2': #388E3C, - 'darken-3': #2E7D32, - 'darken-4': #1B5E20, - 'accent-1': #B9F6CA, - 'accent-2': #69F0AE, - 'accent-3': #00E676, - 'accent-4': #00C853 -); - -$light-green: ( - 'base': #8bc34a, - 'lighten-5': #f1f8e9, - 'lighten-4': #dcedc8, - 'lighten-3': #c5e1a5, - 'lighten-2': #aed581, - 'lighten-1': #9ccc65, - 'darken-1': #7cb342, - 'darken-2': #689f38, - 'darken-3': #558b2f, - 'darken-4': #33691e, - 'accent-1': #ccff90, - 'accent-2': #b2ff59, - 'accent-3': #76ff03, - 'accent-4': #64dd17 -); - -$lime: ( - 'base': #cddc39, - 'lighten-5': #f9fbe7, - 'lighten-4': #f0f4c3, - 'lighten-3': #e6ee9c, - 'lighten-2': #dce775, - 'lighten-1': #d4e157, - 'darken-1': #c0ca33, - 'darken-2': #afb42b, - 'darken-3': #9e9d24, - 'darken-4': #827717, - 'accent-1': #f4ff81, - 'accent-2': #eeff41, - 'accent-3': #c6ff00, - 'accent-4': #aeea00 -); - -$yellow: ( - 'base': #ffeb3b, - 'lighten-5': #fffde7, - 'lighten-4': #fff9c4, - 'lighten-3': #fff59d, - 'lighten-2': #fff176, - 'lighten-1': #ffee58, - 'darken-1': #fdd835, - 'darken-2': #fbc02d, - 'darken-3': #f9a825, - 'darken-4': #f57f17, - 'accent-1': #ffff8d, - 'accent-2': #ffff00, - 'accent-3': #ffea00, - 'accent-4': #ffd600 -); - -$amber: ( - 'base': #ffc107, - 'lighten-5': #fff8e1, - 'lighten-4': #ffecb3, - 'lighten-3': #ffe082, - 'lighten-2': #ffd54f, - 'lighten-1': #ffca28, - 'darken-1': #ffb300, - 'darken-2': #ffa000, - 'darken-3': #ff8f00, - 'darken-4': #ff6f00, - 'accent-1': #ffe57f, - 'accent-2': #ffd740, - 'accent-3': #ffc400, - 'accent-4': #ffab00 -); - -$orange: ( - 'base': #ff9800, - 'lighten-5': #fff3e0, - 'lighten-4': #ffe0b2, - 'lighten-3': #ffcc80, - 'lighten-2': #ffb74d, - 'lighten-1': #ffa726, - 'darken-1': #fb8c00, - 'darken-2': #f57c00, - 'darken-3': #ef6c00, - 'darken-4': #e65100, - 'accent-1': #ffd180, - 'accent-2': #ffab40, - 'accent-3': #ff9100, - 'accent-4': #ff6d00 -); - -$deep-orange: ( - 'base': #ff5722, - 'lighten-5': #fbe9e7, - 'lighten-4': #ffccbc, - 'lighten-3': #ffab91, - 'lighten-2': #ff8a65, - 'lighten-1': #ff7043, - 'darken-1': #f4511e, - 'darken-2': #e64a19, - 'darken-3': #d84315, - 'darken-4': #bf360c, - 'accent-1': #ff9e80, - 'accent-2': #ff6e40, - 'accent-3': #ff3d00, - 'accent-4': #dd2c00 -); - -$brown: ( - 'base': #795548, - 'lighten-5': #efebe9, - 'lighten-4': #d7ccc8, - 'lighten-3': #bcaaa4, - 'lighten-2': #a1887f, - 'lighten-1': #8d6e63, - 'darken-1': #6d4c41, - 'darken-2': #5d4037, - 'darken-3': #4e342e, - 'darken-4': #3e2723 -); - -$blue-grey: ( - 'base': #607d8b, - 'lighten-5': #eceff1, - 'lighten-4': #cfd8dc, - 'lighten-3': #b0bec5, - 'lighten-2': #90a4ae, - 'lighten-1': #78909c, - 'darken-1': #546e7a, - 'darken-2': #455a64, - 'darken-3': #37474f, - 'darken-4': #263238 -); - -$grey: ( - 'base': #9e9e9e, - 'lighten-5': #fafafa, - 'lighten-4': #f5f5f5, - 'lighten-3': #eeeeee, - 'lighten-2': #e0e0e0, - 'lighten-1': #bdbdbd, - 'darken-1': #757575, - 'darken-2': #616161, - 'darken-3': #424242, - 'darken-4': #212121 -); - -$shades: ( - 'black': #000000, - 'white': #FFFFFF, - 'transparent': transparent -); - -$colors: ( - 'red': $red, - 'pink': $pink, - 'purple': $purple, - 'deep-purple': $deep-purple, - 'indigo': $indigo, - 'blue': $blue, - 'light-blue': $light-blue, - 'cyan': $cyan, - 'teal': $teal, - 'green': $green, - 'light-green': $light-green, - 'lime': $lime, - 'yellow': $yellow, - 'amber': $amber, - 'orange': $orange, - 'deep-orange': $deep-orange, - 'brown': $brown, - 'blue-grey': $blue-grey, - 'grey': $grey, - 'shades': $shades -); - -@each $name, $color in $colors { - @each $color_type, $color_value in $color { - @if $color_type == "base" { - .#{$name} { - background-color: $color_value; - } - .#{$name}-text { - color: $color_value; - } - } - @else if $name != "base" { - .#{$name}.#{$color_type} { - background-color: $color_value; - } - - .#{$name}-text.text-#{$color_type} { - color: $color_value; - } - } - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/core/_elevation.scss b/src/Connected.Components/Styles/core/_elevation.scss deleted file mode 100644 index 53f085b..0000000 --- a/src/Connected.Components/Styles/core/_elevation.scss +++ /dev/null @@ -1,5 +0,0 @@ -@for $i from 0 through 25 { - .elevation-#{$i} { - box-shadow: var(--elevation-#{$i}); - } -} diff --git a/src/Connected.Components/Styles/core/_reset.scss b/src/Connected.Components/Styles/core/_reset.scss deleted file mode 100644 index 43802a6..0000000 --- a/src/Connected.Components/Styles/core/_reset.scss +++ /dev/null @@ -1,81 +0,0 @@ -a { - text-decoration: none; - - &:focus-visible{ - outline:none; - } -} - -label { - display: inline-block; -} - -button { - color: inherit; - border: 0; - cursor: pointer; - margin: 0; - display: inline-flex; - outline: 0; - padding: 0; - position: relative; - align-items: center; - user-select: none; - border-radius: 0; - vertical-align: middle; - -moz-appearance: none; - justify-content: center; - text-decoration: none; - background-color: transparent; - -webkit-appearance: none; - -webkit-tap-highlight-color: transparent; -} - - -button:focus { - outline: none; -} - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; -} - -button, -input { - overflow: visible; -} - -button, -select { - text-transform: none; -} - -select { - word-wrap: normal; -} - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} - -iframe { - border: none; - height: 100%; - width: 100%; -} - -ul { - margin: 0; - padding: 0; - list-style: none; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/core/_ripple.scss b/src/Connected.Components/Styles/core/_ripple.scss deleted file mode 100644 index 42df387..0000000 --- a/src/Connected.Components/Styles/core/_ripple.scss +++ /dev/null @@ -1,37 +0,0 @@ -.ripple { - position: relative; - overflow: hidden; - - &:after { - content: ""; - display: block; - position: absolute; - width: 100%; - height: 100%; - top: 0; - left: 0; - pointer-events: none; - background-image: radial-gradient(circle, #000 10%, transparent 10.01%); - background-repeat: no-repeat; - background-position: 50%; - transform: scale(10,10); - opacity: 0; - transition: transform .3s, opacity 1s; - } - - &:active:after { - transform: scale(0,0); - opacity: 0.1; - transition: 0s; - } -} - -.ripple-icon, .ripple-checkbox, .ripple-switch, .ripple-radio { - &:after { - transform: scale(7,7); - } -} - -.ripple-switch { - position: absolute; -} diff --git a/src/Connected.Components/Styles/core/_rtl.scss b/src/Connected.Components/Styles/core/_rtl.scss deleted file mode 100644 index 888b083..0000000 --- a/src/Connected.Components/Styles/core/_rtl.scss +++ /dev/null @@ -1,13 +0,0 @@ -.rtl { - direction: rtl !important; -} - -.ltr { - direction: ltr !important; -} - -.application-layout-rtl { - .flip-x-rtl { - transform: scaleX(-1); - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/globals/_core.scss b/src/Connected.Components/Styles/globals/_core.scss new file mode 100644 index 0000000..09398c4 --- /dev/null +++ b/src/Connected.Components/Styles/globals/_core.scss @@ -0,0 +1,42 @@ +@use 'variables' as *; +@use 'typography' as *; +@use '../util/breakpoints' as *; + + + +body{ + background: linear-gradient(to left, var(--bg-core-primary-lighten), var(--bg-core-end)); + font-family: 'Open Sans', sans-serif; + font-size: $base-font-size; + //font-size: clamp($base-font-size * 0.9, $base-font-size * 0.9+0.1vw, $base-font-size); + color: var(--text-core); + + @include breakpoint(sm){ + background: linear-gradient(to left, var(--bg-core-primary), var(--bg-core-end)); + } + } + + +//hr classes +hr { + border-top: 1px solid var(--border-core); + border-bottom: 0; + border-color:var(--border-core); + background-color:var(--border-core); + color: var(--border-core); +} + +//section +section, +.section{ +margin-bottom: 1rem; +} + + +.disabled { + opacity: .4; + pointer-events: none; +} + + + \ No newline at end of file diff --git a/src/Connected.Components/Styles/globals/_index.scss b/src/Connected.Components/Styles/globals/_index.scss new file mode 100644 index 0000000..e13285e --- /dev/null +++ b/src/Connected.Components/Styles/globals/_index.scss @@ -0,0 +1,4 @@ +@forward 'reset'; +@forward 'variables'; +@forward 'core'; +@forward 'typography'; \ No newline at end of file diff --git a/src/Connected.Components/Styles/globals/_reset.scss b/src/Connected.Components/Styles/globals/_reset.scss new file mode 100644 index 0000000..e3ad22f --- /dev/null +++ b/src/Connected.Components/Styles/globals/_reset.scss @@ -0,0 +1,97 @@ +/* Box sizing rules */ +*, +*::before, +*::after { + box-sizing: border-box; +} + +/* Semantic Elements*/ +article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { + display: block; } + +/* Remove default margin */ +body, +h1, +h2, +h3, +h4, +h5, +h6, +p, +figure, +blockquote, +dl, +dd { + margin: 0; +} + +/* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */ +ul[role='list'], +ol[role='list'] { + list-style: none; +} + +/* Set core root defaults */ +html:focus-within { + scroll-behavior: smooth; +} + +/* Set core body defaults */ +body { + //min-height: 100vh; + text-rendering: optimizeSpeed; + line-height: 1.5; +} + +/* A elements that don't have a class get default styles */ +a:not([class]) { + text-decoration-skip-ink: auto; +} + +a, a:hover { + text-decoration: none; + transition: color 0.15s ease-in-out; +} + +/* Make images easier to work with */ +img, +picture { + max-width: 100%; + display: block; +} + +/* Inherit fonts for inputs and buttons */ +input, +button, +textarea, +select { + font: inherit; +} + +/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */ +@media (prefers-reduced-motion: reduce) { + html:focus-within { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } +} + + +/* Screen readers only */ +.visually-hidden { + clip: rect(0 0 0 0); + clip-path: inset(50%); + height: 1px; + overflow: hidden; + position: absolute; + white-space: nowrap; + width: 1px; +} \ No newline at end of file diff --git a/src/Connected.Components/Styles/globals/_typography.scss b/src/Connected.Components/Styles/globals/_typography.scss new file mode 100644 index 0000000..c58e688 --- /dev/null +++ b/src/Connected.Components/Styles/globals/_typography.scss @@ -0,0 +1,218 @@ +@use "variables" as *; +@use "../util/breakpoints" as *; + +/* h1-h6 */ + +h1, +.h1 { + font-size: $h1-size; + font-weight: $font-weight-300; +} + +h2, +.h2 { + font-size: $h2-size; + font-weight: $font-weight-300; +} + +h3, +.h3 { + font-size: $h3-size; + font-weight: $font-weight-300; +} + +h4, +.h4 { + font-size: $h4-size; + font-weight: $font-weight-300; +} + +h5, +.h5 { + font-size: $h5-size; + font-weight: $font-weight-300; +} + +h6, +.h6 { + font-size: $base-font-size; + font-weight: $font-weight-300; +} + +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + margin-bottom: 0.5rem; + margin-top: 0.25rem; + color: var(--text-core-hc); + line-height: 1.1; +} + +p, +.p { + padding-bottom: $base-font-size * 0.5; +} + +//using map from breakpoint.scss +@each $breakName, $breakValue in $breakpoints-up { + //font size + $fs: ( + "font-size": ( + "prefix": "text", + "values": ( + "small": $font-size-sm, + "default": $base-font-size, + "medium": $font-size-md, + "large": $font-size-lg, + "extralarge": $font-size-xl, + ), + ), + ); + + @each $property, $map in $fs { + $prefix: map-get($map, "prefix"); + $values: map-get($map, "values"); + + @each $k, $v in $values { + @if $breakName != "" { + @media (min-width: $breakValue) { + .#{$prefix}-#{$breakName}-#{$k} { + #{$property}: $v; + } + } + } @else { + .#{$prefix}-#{$k} { + #{$property}: $v; + } + } + } + } + + //font weight + $fw: ( + "font-weight": ( + "prefix": "text", + "values": ( + "thin": $font-weight-300, + "regular": $font-weight-400, + "semibold": $font-weight-600, + "bold": $font-weight-700, + "extrabold": $font-weight-800, + ), + ), + ); + + @each $property, $map in $fw { + $prefix: map-get($map, "prefix"); + $values: map-get($map, "values"); + + @each $k, $v in $values { + @if $breakName != "" { + @media (min-width: $breakValue) { + .#{$prefix}-#{$breakName}-#{$k} { + #{$property}: $v; + } + } + } @else { + .#{$prefix}-#{$k} { + #{$property}: $v; + } + } + } + } +} //end breakpoints + +.text-italic { + font-style: italic; +} + +.text-lowercase { + text-transform: lowercase; +} + +.text-uppercase { + text-transform: uppercase; +} + +.text-capitalize { + text-transform: capitalize; +} + +.text-nowrap { + white-space: nowrap; +} + +.text-truncate { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +// $fs: ( +// "font-size": ( +// "prefix": "fs", +// "values": ( +// "sm": $font-size-sm, +// "md": $font-size-md, +// "lg": $font-size-lg, +// "xl": $font-size-xl, +// ), +// ), +// ); + +// @each $property, $map in $fs { +// $prefix: map-get($map, "prefix"); +// $values: map-get($map, "values"); + +// @each $k, $v in $values { +// @if ($k == "default") { +// .#{$prefix} { +// #{$property}: $v; +// } +// } @else { +// .#{$prefix}-#{$k} { +// #{$property}: $v; +// } +// } +// } +// } + +//font weight +// $fw: ( +// "font-weight": ( +// "prefix": "fw", +// "values": ( +// "light": $font-weight-300, +// "regular": $font-weight-400, +// "semibold": $font-weight-600, +// "bold": $font-weight-700, +// "extrabold": $font-weight-800, +// ), +// ), +// ); + +// @each $property, $map in $fw { +// $prefix: map-get($map, "prefix"); +// $values: map-get($map, "values"); + +// @each $k, $v in $values { +// @if ($k == "default") { +// .#{$prefix} { +// #{$property}: $v; +// } +// } @else { +// .#{$prefix}-#{$k} { +// #{$property}: $v; +// } +// } +// } +// } diff --git a/src/Connected.Components/Styles/globals/_variables.scss b/src/Connected.Components/Styles/globals/_variables.scss new file mode 100644 index 0000000..542fd2e --- /dev/null +++ b/src/Connected.Components/Styles/globals/_variables.scss @@ -0,0 +1,146 @@ +@use "sass:math"; + +//theme colors +$bg-core-primary: hsl(225, 68%, 85%); // body-background; +$bg-core-start: $bg-core-primary; +$bg-core-end: #fafafa; + +$text-core-hc: #212121; //title +$text-core: #525252; //text +$text-core-lc: #7d7d80; //metadata +$text-core-vc: #969699; //ikona-text + +$border-core: lighten($bg-core-primary, 7%); //border +$element-bg-core: rgba(255, 255, 255, 0.5); // elements-background +$element-fg-core: rgba(255, 255, 255, 0.25); // elements-foreground + +:root { + --bg-core-primary: #{$bg-core-primary}; // body-background; + --bg-core-primary-lighten: hsl(225, 68%, 90%); // lighten + --bg-core-primary-darken: hsl(225, 68%, 75%); // darken; + --bg-core-start: #{$bg-core-primary}; + --bg-core-end: #{$bg-core-end}; + + --text-core-hc: #{$text-core-hc}; //title + --text-core: #{$text-core}; //text + --text-core-lc: #{$text-core-lc}; //metadata + --text-core-vc: #{$text-core-vc}; //ikona-text + + --bg-core-primary-lighter: hsl(225, 68%, 90%); //hover + --border-core: #{$border-core}; //border + --element-bg-core: #{$element-bg-core}; // elements-background + --element-fg-core: #{$element-fg-core}; // elements-foreground +} + +.pink, +:root:has(pink:checked) { + --bg-core-primary: hsl(310 50% 90%); + --bg-core-primary-lighten: hsl(310 50% 95%); //lighten + --bg-core-primary-darken: hsl(310 50% 85%); //darken + --element-bg-core: hsl(310 50% 100% / 50%); + --text-core: hsl(310 50% 15%); + --border-core: hsl(310 50% 90%); +} + +.dark, +:root:has(dark:checked) { + --bg-core-primary: hsl(0 0% 10% / 100%); // body-background; + --bg-core-primary-lighten: hsl(0 0% 15% / 100%); // lighten + --bg-core-primary-darken: hsl(0 0% 5% / 100%); // darken; + --bg-core-start: var(--bg-core-primary); + --bg-core-end: hsl(0 0% 15% / 100%); + + --text-core-hc: hsl(0 0% 97% / 100%); //title + --text-core: hsl(0 0% 73% / 100%); //text + --text-core-lc: hsl(0 0% 53% / 100%); //metadata + --text-core-vc: hsl(0 0% 60% / 100%); //ikona-text + + --border-core: hsl(0 0% 27% / 100%); //border + --element-bg-core: hsl(0 0% 13% / 100%); // elements-background + --element-fg-core: hsl(0 0% 20% / 100%); // elements-foreground +} + +// colors +$blue: #0d6efd; +$indigo: #6610f2; +$purple: #6f42c1; +$pink: #d63384; +$red: #dc3545; +$orange: #fd7e14; +$yellow: #ffc107; +$green: #00c851; //#198754; +$teal: #20c997; +$cyan: #0dcaf0; + +$white: #fff; +$gray-100: #f8f9fa; +$gray-200: #e9ecef; +$gray-300: #dee2e6; +$gray-400: #ced4da; +$gray-500: #adb5bd; +$gray-600: #6c757d; +$gray-700: #495057; +$gray-800: #343a40; +$gray-900: #212529; +$black: #000; + +$primary: $blue; +$secondary: $gray-600; +$success: $green; +$info: $cyan; +$warning: $yellow; +$danger: $red; +$light: $gray-400; +$dark: $gray-900; + +//color palette +$theme-colors: ( + //"core": $bg-core-primary, + "primary": $primary, + "secondary": $secondary, + "success": $success, + "info": $info, + "warning": $warning, + "danger": $danger, + "light": $light, + "dark": $dark, + "white": $white, + "black": $black +); + +//spacing +$base-spacing: 0.25; +$base-padding: #{$base-spacing}rem; +$base-margin: #{$base-spacing}rem; + +//font-sizes +$base-font-size: 1rem !default; +$font-size-sm: $base-font-size * 0.85 !default; +$font-size-md: $base-font-size * 1.25 !default; +$font-size-lg: $base-font-size * 1.5 !default; +$font-size-xl: $base-font-size * 2 !default; + +$h1-size: $base-font-size * 3 !default; +$h2-size: $base-font-size * 2.5 !default; +$h3-size: $base-font-size * 2 !default; +$h4-size: $base-font-size * 1.5 !default; +$h5-size: $base-font-size * 1.25 !default; +$h6-size: $base-font-size !default; + +//font-weight +$font-weight-300: 300; //light +$font-weight-400: normal; // regular +$font-weight-600: 600; // semibold +$font-weight-700: bold; // bold +$font-weight-800: 800; // extra bold + +//border-radius +$base-border-radius: 0.3rem; +$border-radius-sm: math.div($base-border-radius, 2); +$border-radius-lg: $base-border-radius * 2; + +// box-shadow +$base-box-shadow: 0 0.125rem 0.25rem rgb(0 0 0 / 10%) !default; + +// transition +$transition: all 0.15s ease-in-out; diff --git a/src/Connected.Components/Styles/layout/_appbar.scss b/src/Connected.Components/Styles/layout/_appbar.scss deleted file mode 100644 index a54dfc5..0000000 --- a/src/Connected.Components/Styles/layout/_appbar.scss +++ /dev/null @@ -1,166 +0,0 @@ -@import '../abstracts/variables'; - -.appbar { - width: 100%; - display: flex; - z-index: var(--zindex-appbar); - position: relative; - box-sizing: border-box; - flex-shrink: 0; - flex-direction: column; - color: var(--palette-appbar-text); - background-color: var(--palette-appbar-background); - transition: margin 225ms cubic-bezier(0.0, 0, 0.2, 1) 0ms,width 225ms cubic-bezier(0.0, 0, 0.2, 1) 0ms; - - &.appbar-fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - - .popover-cascading-value { - position: fixed; - } - } - - &.appbar-fixed-bottom { - position: fixed; - bottom: 0; - right: 0; - left: 0; - - .popover-cascading-value { - position: fixed; - } - } - - .toolbar-appbar { - height: calc(var(--appbar-height) - var(--appbar-height) / 8); - } - - @media (min-width:$breakpoint-xs) and (orientation: landscape) { - .toolbar-appbar { - height: calc(var(--appbar-height) - var(--appbar-height) / 4); - } - } - - @media (min-width:$breakpoint-sm) { - .toolbar-appbar { - height: var(--appbar-height); - } - } - - &.appbar-dense { - .toolbar-appbar { - height: calc(var(--appbar-height) - var(--appbar-height) / 4); - } - } -} - -.drawer-open { - &-responsive { - @each $breakpoint in map-keys($breakpoints) { - &-#{$breakpoint} { - @media (min-width: map-get($breakpoints, $breakpoint)) { - &-left.drawer-left-clipped-never .appbar { - margin-left: var(--drawer-width-left); - width: calc(100% - var(--drawer-width-left)); - } - - &-right.drawer-right-clipped-never .appbar { - margin-right: var(--drawer-width-right); - width: calc(100% - var(--drawer-width-right)); - } - - &-left.drawer-left-clipped-never#{&}-right.drawer-right-clipped-never .appbar { - margin-left: var(--drawer-width-left); - margin-right: var(--drawer-width-right); - width: calc(100% - var(--drawer-width-left) - var(--drawer-width-right)); - } - } - } - } - } - - &-persistent { - &-left.drawer-left-clipped-never .appbar { - margin-left: var(--drawer-width-left); - width: calc(100% - var(--drawer-width-left)); - } - - &-right.drawer-right-clipped-never .appbar { - margin-right: var(--drawer-width-right); - width: calc(100% - var(--drawer-width-right)); - } - - &-left.drawer-left-clipped-never#{&}-right.drawer-right-clipped-never .appbar { - margin-left: var(--drawer-width-left); - margin-right: var(--drawer-width-right); - width: calc(100% - var(--drawer-width-left) - var(--drawer-width-right)); - } - } - - &-mini { - @each $breakpoint in map-keys($breakpoints) { - &-#{$breakpoint} { - @media (min-width: map-get($breakpoints, $breakpoint)) { - &-left.drawer-left-clipped-never .appbar { - margin-left: var(--drawer-width-left); - width: calc(100% - var(--drawer-width-left)); - } - - &-right.drawer-right-clipped-never .appbar { - margin-right: var(--drawer-width-right); - width: calc(100% - var(--drawer-width-right)); - } - - &-left.drawer-left-clipped-never#{&}-right.drawer-right-clipped-never .appbar { - margin-left: var(--drawer-width-left); - margin-right: var(--drawer-width-right); - width: calc(100% - var(--drawer-width-left) - var(--drawer-width-right)); - } - } - } - } - } -} - -.drawer-close-mini { - @each $breakpoint in map-keys($breakpoints) { - &-#{$breakpoint} { - &-left.drawer-left-clipped-never .appbar { - margin-left: var(--drawer-width-mini-left); - width: calc(100% - var(--drawer-width-mini-left)); - } - - &-right.drawer-right-clipped-never .appbar { - margin-right: var(--drawer-width-mini-right); - width: calc(100% - var(--drawer-width-mini-right)); - } - - &-left.drawer-left-clipped-never#{&}-right.drawer-right-clipped-never .appbar { - margin-left: var(--drawer-width-mini-left); - margin-right: var(--drawer-width-mini-right); - width: calc(100% - var(--drawer-width-mini-left) - var(--drawer-width-mini-right)); - } - - @media (max-width: map-get($breakpoints, $breakpoint)) { - &-left.drawer-left-clipped-docked .appbar { - margin-left: var(--drawer-width-mini-left); - width: calc(100% - var(--drawer-width-mini-left)); - } - - &-right.drawer-right-clipped-docked .appbar { - margin-right: var(--drawer-width-mini-right); - width: calc(100% - var(--drawer-width-mini-right)); - } - - &-left.drawer-left-clipped-docked#{&}-right.drawer-right-clipped-docked .appbar { - margin-left: var(--drawer-width-mini-left); - margin-right: var(--drawer-width-mini-right); - width: calc(100% - var(--drawer-width-mini-left) - var(--drawer-width-mini-right)); - } - } - } - } -} diff --git a/src/Connected.Components/Styles/layout/_container.scss b/src/Connected.Components/Styles/layout/_container.scss deleted file mode 100644 index fef0dee..0000000 --- a/src/Connected.Components/Styles/layout/_container.scss +++ /dev/null @@ -1,89 +0,0 @@ -@import '../abstracts/variables'; - -.container { - width: 100%; - display: block; - box-sizing: border-box; - margin-left: auto; - margin-right: auto; - padding-left: 16px; - padding-right: 16px; -} - -@media (min-width:$breakpoint-sm) { - .container { - padding-left: 24px; - padding-right: 24px; - } -} - -.container-disable-gutters { - padding-left: 0; - padding-right: 0; -} - -@media (min-width:$breakpoint-sm) { - .container-fixed { - max-width: $breakpoint-sm; - } -} - -@media (min-width:$breakpoint-md) { - .container-fixed { - max-width: $breakpoint-md; - } -} - -@media (min-width:$breakpoint-lg) { - .container-fixed { - max-width: $breakpoint-lg; - } -} - -@media (min-width:$breakpoint-xl) { - .container-fixed { - max-width: $breakpoint-xl; - } -} - -@media (min-width:$breakpoint-xxl) { - .container-fixed { - max-width: $breakpoint-xxl; - } -} - -@media (min-width:$breakpoint-xs) { - .container-maxwidth-xs { - max-width: 444px; - } -} - -@media (min-width:$breakpoint-sm) { - .container-maxwidth-sm { - max-width: $breakpoint-sm; - } -} - -@media (min-width:$breakpoint-md) { - .container-maxwidth-md { - max-width: $breakpoint-md; - } -} - -@media (min-width:$breakpoint-lg) { - .container-maxwidth-lg { - max-width: $breakpoint-lg; - } -} - -@media (min-width:$breakpoint-xl) { - .container-maxwidth-xl { - max-width: $breakpoint-xl; - } -} - -@media (min-width:$breakpoint-xxl) { - .container-maxwidth-xxl { - max-width: $breakpoint-xxl; - } -} diff --git a/src/Connected.Components/Styles/layout/_css_documentation.scss b/src/Connected.Components/Styles/layout/_css_documentation.scss new file mode 100644 index 0000000..e5e9329 --- /dev/null +++ b/src/Connected.Components/Styles/layout/_css_documentation.scss @@ -0,0 +1,65 @@ +@use "../globals" as *; + +.color-picker > fieldset { + border: 0; + display: flex; + flex-direction: column; + gap: 2rem; + width: fit-content; + //background: #fff; + padding: 1rem 3rem; + position: fixed; + top: 1rem; + right: 0; + border-radius: 0 0 1rem 1rem; +} + +.color-picker input[type="radio"] { + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + width: 0.75rem; + height: 0.75rem; + outline: 2px solid var(--radio-color, currentColor); + outline-offset: 2px; + border-radius: 50%; + + cursor: pointer; +} + +.color-picker input[type="radio"]:checked { + background-color: var(--radio-color); +} + +.color-picker input[type="radio"]light { + --radio-color: hsl(225, 68%, 85%); +} +.color-picker input[type="radio"]pink { + --radio-color: pink; +} + +.color-picker input[type="radio"]dark { + --radio-color: #232323; +} + +.square > * { + width: 8.5rem; + height: 8.5rem; + padding: 0.5rem; + display: flex; + justify-content: center; + align-items: center; + background: var(--element-fg-core); + border-color: $primary; +} + +.grid.test > * { + text-align: center; + background: var(--element-fg-core); + border: 1px solid; + border-color: var(--border-core); + color: inherit; + border-radius: $border-radius-lg; +} + + diff --git a/src/Connected.Components/Styles/layout/_document.scss b/src/Connected.Components/Styles/layout/_document.scss new file mode 100644 index 0000000..dc8e0a9 --- /dev/null +++ b/src/Connected.Components/Styles/layout/_document.scss @@ -0,0 +1,39 @@ +@use '../globals' as *; +@use '../util' as *; + +// .document-container { +// padding: rem(32); + +// @include breakpoint(sm) { +// width: min(100% - 2rem, 1200px); +// margin-inline: auto; +// margin-block: rem(24); +// position: relative; +// background-color: rgba(255,255,255,.6); +// border-radius: $border-radius-lg; +// padding: rem(32); +// box-shadow: $base-box-shadow; + +// } + +// } + + +//test-sidebar +.document-container { + //padding: rem(32); + + @include breakpoint(sm) { + width: min(100% - 4rem, 1920px - 4rem); + margin-inline: auto; + margin-block: rem(24); + position: relative; + background-color: var(--element-bg-core); + border: 1px solid var(--border-core); + border-radius: $border-radius-lg; + // padding: rem(32); + box-shadow: $base-box-shadow; + overflow: hidden; + } + +} \ No newline at end of file diff --git a/src/Connected.Components/Styles/layout/_drawer.scss b/src/Connected.Components/Styles/layout/_drawer.scss deleted file mode 100644 index 2418add..0000000 --- a/src/Connected.Components/Styles/layout/_drawer.scss +++ /dev/null @@ -1,390 +0,0 @@ -@import '../abstracts/variables'; - -.drawer { - display: flex; - flex-shrink: 0; - flex-grow: 1; - flex: 0 0 auto; - outline: 0; - position: fixed; - z-index: var(--zindex-drawer); - overflow-y: auto; - flex-direction: column; - color: var(--palette-drawer-text); - background-color: var(--palette-drawer-background); - --drawer-content-height: 0; - - .drawer-content { - height: 100%; - max-height: 100%; - display: flex; - flex-shrink: 0; - flex-grow: 1; - flex: 0 0 auto; - flex-direction: column; - } - - &:not(.drawer-fixed) { - position: absolute; - } - - @each $breakpoint in map-keys($breakpoints) { - &.drawer-mini.drawer-#{$breakpoint}:not(.drawer--closed), &.drawer-responsive.drawer-#{$breakpoint} { - @media (max-width: map-get($breakpoints, $breakpoint) - 1px) { - z-index: calc(var(--zindex-appbar) + 2); - - &.drawer--initial:not(.drawer-mini) { - display: none !important; - } - } - } - } - - &.drawer-responsive, &.drawer-persistent { - height: 100%; - - &.drawer-pos-left { - right: auto; - width: var(--drawer-width, var(--drawer-width-left)); - - &.drawer--open { - left: 0; - - &:not(.drawer--initial) { - animation: drawer-slide-in-left 225ms cubic-bezier(0, 0, 0.2, 1); - } - } - - &.drawer--closed { - box-shadow: none; - left: calc(-1 * var(--drawer-width, var(--drawer-width-left))); - - &:not(.drawer--initial) { - animation: drawer-slide-out-left 225ms cubic-bezier(0, 0, 0.2, 1); - } - } - } - - &.drawer-pos-right { - left: auto; - width: var(--drawer-width, var(--drawer-width-right)); - - &.drawer--open { - right: 0; - - &:not(.drawer--initial) { - animation: drawer-slide-in-right 225ms cubic-bezier(0, 0, 0.2, 1); - } - } - - &.drawer--closed { - box-shadow: none; - right: calc(-1 * var(--drawer-width, var(--drawer-width-right))); - - &:not(.drawer--initial) { - animation: drawer-slide-out-right 225ms cubic-bezier(0, 0, 0.2, 1); - } - } - } - } - - &.drawer-mini { - height: 100%; - transition: width 225ms cubic-bezier(0, 0, 0.2, 1); - - &.drawer-pos-left { - left: 0; - right: auto; - - &.drawer--closed { - width: var(--drawer-width-mini-left); - } - - &.drawer--open { - width: var(--drawer-width-left); - } - } - - &.drawer-pos-right { - left: auto; - right: 0; - - &.drawer--closed { - width: var(--drawer-width-mini-right); - } - - &.drawer--open { - width: var(--drawer-width-right); - } - } - } - - &.drawer-temporary { - margin: 0 !important; - z-index: calc(var(--zindex-appbar) + 2); - transition: transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms; - - &.drawer-pos-left { - right: auto; - top: 0; - height: 100%; - width: var(--drawer-width, var(--drawer-width-left)); - - &.drawer--open { - left: 0; - - &:not(.drawer--initial) { - animation: drawer-slide-in-left 225ms cubic-bezier(0, 0, 0.2, 1)forwards; - } - } - - &.drawer--closed { - left: calc(-1 * var(--drawer-width, var(--drawer-width-left))); - - &:not(.drawer--initial) { - animation: drawer-slide-out-left 225ms cubic-bezier(0, 0, 0.2, 1)forwards; - } - } - } - - &.drawer-pos-right { - left: auto; - top: 0; - height: 100%; - width: var(--drawer-width, var(--drawer-width-right)); - - &.drawer--open { - right: 0; - - &:not(.drawer--initial) { - animation: drawer-slide-in-right 225ms cubic-bezier(0, 0, 0.2, 1)forwards; - } - } - - &.drawer--closed { - right: calc(-1 * var(--drawer-width, var(--drawer-width-right))); - - &:not(.drawer--initial) { - animation: drawer-slide-out-right 225ms cubic-bezier(0, 0, 0.2, 1)forwards; - } - } - } - - &.drawer-pos-bottom { - left: 0; - top: auto; - width: 100%; - - &.drawer--open { - bottom: 0; - - &:not(.drawer--initial) { - animation: drawer-slide-in-bottom 225ms cubic-bezier(0, 0, 0.2, 1) 0ms 1; - } - } - - &.drawer--closed { - bottom: calc(-1 * var(--drawer-content-height)); - - &:not(.drawer--initial) { - animation: drawer-slide-out-bottom 225ms cubic-bezier(0, 0, 0.2, 1) 0ms 1; - } - } - } - - &.drawer-pos-top { - left: 0; - bottom: auto; - width: 100%; - - &.drawer--open { - top: 0; - - &:not(.drawer--initial) { - animation: drawer-slide-in-top 225ms cubic-bezier(0, 0, 0.2, 1) 0ms 1; - } - } - - &.drawer--closed { - top: calc(-1 * var(--drawer-content-height)); - - &:not(.drawer--initial) { - animation: drawer-slide-out-top 225ms cubic-bezier(0, 0, 0.2, 1) 0ms 1; - } - } - } - } - - &.drawer-mini.drawer-pos-left ~ div:not(.main-content), - &.drawer-mini.drawer-pos-right ~ div:not(.main-content), - &.drawer-persistent.drawer-pos-left ~ div:not(.main-content), - &.drawer-persistent.drawer-pos-right ~ div:not(.main-content) { - transition: margin 225ms cubic-bezier(0.0, 0, 0.2, 1) 0ms; - } - - &.drawer-mini.drawer-pos-left.drawer--open ~ div:not(.main-content), - &.drawer-persistent.drawer-pos-left.drawer--open ~ div:not(.main-content) { - margin-left: var(--drawer-width, var(--drawer-width-left)); - } - - &.drawer-mini.drawer-pos-right.drawer--open ~ div:not(.main-content), - &.drawer-persistent.drawer-pos-right.drawer--open ~ div:not(.main-content) { - margin-right: var(--drawer-width, var(--drawer-width-right)); - } - - &.drawer-mini.drawer-pos-left.drawer--closed ~ div:not(.main-content) { - margin-left: var(--drawer-width, var(--drawer-width-mini-left)); - } - - &.drawer-mini.drawer-pos-right.drawer--closed ~ div:not(.main-content) { - margin-right: var(--drawer-width, var(--drawer-width-mini-right)); - } -} - -.drawer-header { - display: flex; - min-height: var(--appbar-height); - padding: 12px 24px 12px 24px; - - &.drawer-header-dense { - min-height: calc(var(--appbar-height) - var(--appbar-height) / 4); - padding: 8px 24px 8px 24px; - } -} - -.drawer-fixed { - &.drawer-mini.drawer-clipped-always, - &.drawer-persistent:not(.drawer-clipped-never), - &.drawer-responsive.drawer-clipped-always, - &.drawer-temporary.drawer-clipped-always { - top: var(--appbar-height); - height: calc(100% - var(--appbar-height)); - - @media (max-width:$breakpoint-sm - 1px) and (orientation: landscape) { - top: calc(var(--appbar-height) - var(--appbar-height) / 4); - height: calc(100% - calc(var(--appbar-height) - var(--appbar-height)/4)); - } - - @media (max-width:$breakpoint-sm - 1px) and (orientation: portrait) { - top: calc(var(--appbar-height) - var(--appbar-height) / 8); - height: calc(100% - calc(var(--appbar-height) - var(--appbar-height)/8)); - } - } - - @each $breakpoint in map-keys($breakpoints) { - &.drawer-mini.drawer-clipped-docked.drawer-#{$breakpoint}, - &.drawer-responsive.drawer-clipped-docked.drawer-#{$breakpoint} { - @media (min-width: map-get($breakpoints, $breakpoint)) { - top: var(--appbar-height); - height: calc(100% - var(--appbar-height)); - - @media (max-width:$breakpoint-sm - 1px) and (orientation: landscape) { - top: calc(var(--appbar-height) - var(--appbar-height) - var(--appbar-height) / 4); - height: calc(100% - var(--appbar-height) + var(--appbar-height) - var(--appbar-height) / 4); - } - - @media (max-width:$breakpoint-sm - 1px) and (orientation: portrait) { - top: calc(var(--appbar-height) - var(--appbar-height) / 8); - height: calc(100% - var(--appbar-height) / 8); - } - } - } - } -} - -.appbar-dense ~ .drawer-fixed { - &.drawer-mini:not(.drawer-clipped-never), - &.drawer-persistent:not(.drawer-clipped-never), - &.drawer-responsive.drawer-clipped-always, - &.drawer-temporary.drawer-clipped-always { - top: calc(var(--appbar-height) - var(--appbar-height) / 4); - height: calc(100% - var(--appbar-height) + var(--appbar-height) / 4); - } - - @each $breakpoint in map-keys($breakpoints) { - @media (min-width: map-get($breakpoints, $breakpoint)) { - &.drawer-responsive.drawer-clipped-docked.drawer-#{$breakpoint} { - top: calc(var(--appbar-height) - var(--appbar-height) / 4); - height: calc(100% - var(--appbar-height) + var(--appbar-height) / 4); - } - } - } -} - -.drawer-overlay { - display: none; - - &.drawer-overlay--open { - @each $breakpoint in map-keys($breakpoints) { - &.drawer-overlay-responsive.drawer-overlay-#{$breakpoint} { - @media (max-width: map-get($breakpoints, $breakpoint) - 1px) { - display: block; - - &.drawer--initial { - display: none; - } - } - } - - &.drawer-overlay-mini.drawer-overlay-#{$breakpoint} { - @media (max-width: map-get($breakpoints, $breakpoint) - 1px) { - display: block; - } - } - } - - &.drawer-overlay-temporary { - display: block; - } - } -} - -/*#region keyframes*/ -@keyframes drawer-slide-in-left { - from { - left: calc(-1 * var(--drawer-width, var(--drawer-width-left))); - } -} - -@keyframes drawer-slide-out-left { - from { - left: 0; - } -} - -@keyframes drawer-slide-in-right { - from { - right: calc(-1 * var(--drawer-width, var(--drawer-width-right))); - } -} - -@keyframes drawer-slide-out-right { - from { - right: 0; - } -} - -@keyframes drawer-slide-in-bottom { - from { - bottom: calc(-1 * var(--drawer-content-height)); - } -} - -@keyframes drawer-slide-out-bottom { - from { - bottom: 0; - } -} - -@keyframes drawer-slide-in-top { - from { - top: calc(-1 * var(--drawer-content-height)); - } -} - -@keyframes drawer-slide-out-top { - from { - top: 0; - } -} -/*#endregion*/ \ No newline at end of file diff --git a/src/Connected.Components/Styles/layout/_index.scss b/src/Connected.Components/Styles/layout/_index.scss new file mode 100644 index 0000000..71da809 --- /dev/null +++ b/src/Connected.Components/Styles/layout/_index.scss @@ -0,0 +1,2 @@ +@forward 'document'; +@forward 'css_documentation'; \ No newline at end of file diff --git a/src/Connected.Components/Styles/layout/_main.scss b/src/Connected.Components/Styles/layout/_main.scss deleted file mode 100644 index a713520..0000000 --- a/src/Connected.Components/Styles/layout/_main.scss +++ /dev/null @@ -1,136 +0,0 @@ -@import '../abstracts/variables'; - -.main-content { - margin: 0; - flex: 1 1 auto; - padding-top: calc(var(--appbar-height) - var(--appbar-height) / 8); - transition: margin 225ms cubic-bezier(0.0, 0, 0.2, 1) 0ms; -} - -@media (min-width:$breakpoint-xs) and (orientation: landscape) { - .main-content { - padding-top: calc(var(--appbar-height) - var(--appbar-height) / 4); - } -} - -@media (min-width:$breakpoint-sm) { - .main-content { - padding-top: var(--appbar-height); - } -} - -.appbar-dense { - ~ .main-content { - padding-top: calc(var(--appbar-height) - var(--appbar-height) / 4); - } -} - -.drawer-open { - &-responsive { - @each $breakpoint in map-keys($breakpoints) { - &-#{$breakpoint} { - @media (min-width: map-get($breakpoints, $breakpoint)) { - &-left .main-content { - margin-left: var(--drawer-width-left); - } - - &-right .main-content { - margin-right: var(--drawer-width-right); - } - - &-left#{&}-right .main-content { - margin-right: var(--drawer-width-right); - margin-left: var(--drawer-width-left); - } - } - } - } - } - - &-persistent { - &-left:not(&-right) .main-content { - margin-left: var(--drawer-width-left); - } - - &-right:not(&-left) .main-content { - margin-right: var(--drawer-width-right); - } - - &-left#{&}-right .main-content { - margin-right: var(--drawer-width-right); - margin-left: var(--drawer-width-left); - } - } - - &-mini { - @each $breakpoint in map-keys($breakpoints) { - &-#{$breakpoint} { - @media (min-width: map-get($breakpoints, $breakpoint)) { - &-left .main-content { - margin-left: var(--drawer-width-left); - } - - &-right .main-content { - margin-right: var(--drawer-width-right); - } - - &-left#{&}-right .main-content { - margin-right: var(--drawer-width-right); - margin-left: var(--drawer-width-left); - } - } - } - } - - &-none, &-always { - &-left .main-content { - margin-left: var(--drawer-width-left); - } - - &-right .main-content { - margin-right: var(--drawer-width-right); - } - - &-left#{&}-right .main-content { - margin-right: var(--drawer-width-right); - margin-left: var(--drawer-width-left); - } - } - } -} - -.drawer-close { - &-mini { - @each $breakpoint in map-keys($breakpoints) { - &-#{$breakpoint} { - &-left .main-content { - margin-left: var(--drawer-width-mini-left); - } - - &-right .main-content { - margin-right: var(--drawer-width-mini-right); - } - - &-left#{&}-right .main-content { - margin-right: var(--drawer-width-mini-right); - margin-left: var(--drawer-width-mini-left); - } - } - } - - &-none, &-always { - &-left .main-content { - margin-left: var(--drawer-width-mini-left); - } - - &-right .main-content { - margin-right: var(--drawer-width-mini-right); - } - - &-left#{&}-right .main-content { - margin-right: var(--drawer-width-mini-right); - margin-left: var(--drawer-width-mini-left); - } - } - } -} diff --git a/src/Connected.Components/Styles/layout/_scroll.scss b/src/Connected.Components/Styles/layout/_scroll.scss deleted file mode 100644 index 84e24f0..0000000 --- a/src/Connected.Components/Styles/layout/_scroll.scss +++ /dev/null @@ -1,69 +0,0 @@ -.scroll-locked{ - padding-right: 8px; - overflow: hidden; - - .layout { - .appbar { - padding-right: 8px; - } - - .main-content { - .scroll-to-top { - padding-right: 8px; - } - } - } -} - -@-moz-document url-prefix() { - .scroll-locked { - padding-right: 17px; //the width of scroll-bar in firefox - - .layout { - .appbar { - padding-right: 17px; - } - - .main-content { - .scroll-to-top { - padding-right: 17px; - } - } - } - } -} - -.scroll-to-top { - position: fixed; - cursor: pointer; - z-index: 100; - - &.visible { - bottom: 16px; - right: 16px; - opacity: 1; - transition: transform 0.5s; - flex: 1; - } - - &.hidden { - bottom: 16px; - right: 16px; - opacity: 0; - transition: all 0.5s; - visibility: hidden; - transform: scale(0) rotate(180deg); - flex: 0; - } - - &:after { - content: ''; - background: transparent; - top: 0; - bottom: 0; - left: 0; - right: 0; - position: absolute; - z-index: var(--zindex-tooltip); - } -} diff --git a/src/Connected.Components/Styles/util/_breakpoints.scss b/src/Connected.Components/Styles/util/_breakpoints.scss new file mode 100644 index 0000000..a962b65 --- /dev/null +++ b/src/Connected.Components/Styles/util/_breakpoints.scss @@ -0,0 +1,31 @@ +@use 'functions' as *; + + +$breakpoints-up: ( + "": "", + 'sm': rem(576), + 'md': rem(768), + 'lg': rem(992), + 'xl': rem(1200), +); + +// 639px, 1149px, 1399px +$breakpoints-down: ( + "": "", + 'sm': rem(575), + 'md': rem(767), + 'lg': rem(991), + 'xl': rem(1119), +); + +@mixin breakpoint($size) { + @media (min-width: map-get($breakpoints-up, $size)) { + @content; + } +} + +@mixin breakpoint-down($size) { + @media (max-width: map-get($breakpoints-down, $size)) { + @content; + } +} \ No newline at end of file diff --git a/src/Connected.Components/Styles/util/_colors.scss b/src/Connected.Components/Styles/util/_colors.scss new file mode 100644 index 0000000..e973e63 --- /dev/null +++ b/src/Connected.Components/Styles/util/_colors.scss @@ -0,0 +1,113 @@ +@use "../globals/" as *; +@use "functions" as *; + +//text & bg colors in theme palllete +@each $key, $val in $theme-colors { + .text-#{$key} { + color: $val !important; + } + a.text-#{$key} { + &:hover { + color: darken($val, 10%) !important; + } + } + .text-hover-#{$key} { + &:hover { + color: darken($val, 5%) !important; + } + } + .b-c-#{$key} { + border-color: $val !important; + } + .bg-#{$key} { + background-color: $val !important; + color: set-color($val); + } + // @if ($val == white) { + // // dark variations for black + // @for $i from 1 through 9 { + // .text-#{$key}-#{$i} { + // color: mix(black, $val, $i * 10); + // } + // .text-hover-#{$key} { + // &:hover { + // color: darken($val, 5%); + // } + // } + // .bg-#{$key}-#{$i} { + // background-color: mix(black, $val, $i * 10); + // } + // } + // } +} + +.text-core { + color: var(--bg-core-primary-darken); +} + +.bg-core { + background-color: var(--bg-core-primary); +} + +.b-c-core { + border-color: var(--bg-core-primary) !important; +} + +.element-fg-core { + background-color: var(--element-fg-core); +} + +//change --bg-core-primary for dark +.dark, +:root:has(dark:checked) { + $val: hsl(216 100% 70%); + + .text-core { + color: var(--text-core-hc); + } + a.text-core { + color: $val !important; + &:hover { + color: darken($val, 10%) !important; + } + } + + .btn-core { + background-color: $val !important; + color: set-color($val) !important; + border: 1px solid transparent; + &:hover { + background-color: darken($val, 10) !important; + } + &:focus-visible, + &.focus { + outline: 0; + box-shadow: 0 0 0 0.15rem lighten($val, 20) !important; + } + &:active, + &.active { + background-color: darken($val, 15) !important; + } + } + + .btn-outline-core { + color: $val !important; + background-color: transparent; + border: 1px solid $val !important; + &:hover { + color: darken($val, 10) !important; + border: 1px solid darken($val, 10) !important; + } + &:focus-visible, + &.focus { + outline: 0 !important; + box-shadow: 0 0 0 0.15rem lighten($val, 20) !important; + } + &:active, + &.active { + background-color: darken($val, 15) !important; + color: set-color($val) !important; + border: 1px solid transparent !important; + } + } +} diff --git a/src/Connected.Components/Styles/util/_functions.scss b/src/Connected.Components/Styles/util/_functions.scss new file mode 100644 index 0000000..047cb5b --- /dev/null +++ b/src/Connected.Components/Styles/util/_functions.scss @@ -0,0 +1,17 @@ +@use "sass:math"; + +// pixel to rem - font-size:rem(16) +@function rem($pixels, $context: 16) { + @return (math.div($pixels, $context)) * 1rem; +} + + +// change text color based on background color - set-color(color-value) +@function set-color($color) { + @if (lightness($color) > 55) { + @return #333; + } + @else { + @return #FFF; + } +} \ No newline at end of file diff --git a/src/Connected.Components/Styles/util/_index.scss b/src/Connected.Components/Styles/util/_index.scss new file mode 100644 index 0000000..efe3f9d --- /dev/null +++ b/src/Connected.Components/Styles/util/_index.scss @@ -0,0 +1,4 @@ +@forward 'breakpoints'; +@forward 'functions'; +@forward 'colors'; +@forward 'utilities'; \ No newline at end of file diff --git a/src/Connected.Components/Styles/util/_utilities.scss b/src/Connected.Components/Styles/util/_utilities.scss new file mode 100644 index 0000000..ae5f41f --- /dev/null +++ b/src/Connected.Components/Styles/util/_utilities.scss @@ -0,0 +1,278 @@ +@use "sass:math"; +@use "../globals/" as *; +@use "breakpoints" as *; + +//using map from breakpoint.scss +@each $breakName, $breakValue in $breakpoints-up { + //padding margins classes + $spacings: (0, 1, 2, 3, 4, 5, auto); + + $sides: ( + "t": "top", + "b": "bottom", + "l": "left", + "r": "right", + "": ( + "top", + "left", + "bottom", + "right", + ), + "x": ( + "left", + "right", + ), + "y": ( + "top", + "bottom", + ), + ); + + @each $space in $spacings { + @each $prefix, $positions in $sides { + @if $breakName != "" { + $prefix: #{$prefix}-#{$breakName}; + } @else { + $prefix: #{$prefix}; + } + + @if $breakName != "" { + @media (min-width: $breakValue) { + .p#{$prefix}-#{$space} { + @each $pos in $positions { + padding-#{$pos}: if( + $space == auto, + $space, + #{$space * $base-spacing}rem + ) !important; + } + } + .m#{$prefix}-#{$space} { + @each $pos in $positions { + margin-#{$pos}: if( + $space == auto, + $space, + #{$space * $base-spacing}rem + ) !important; + } + } + .b#{$prefix}-#{$space} { + @each $pos in $positions { + border-#{$pos}: if( + $space == auto, + $space, + #{$space}px solid var(--border-core) + ); + } + } + } + } @else { + .p#{$prefix}-#{$space} { + @each $pos in $positions { + padding-#{$pos}: if( + $space == auto, + $space, + #{$space * $base-spacing}rem + ) !important; + } + } + .m#{$prefix}-#{$space} { + @each $pos in $positions { + margin-#{$pos}: if( + $space == auto, + $space, + #{$space * $base-spacing}rem + ) !important; + } + } + .b#{$prefix}-#{$space} { + @each $pos in $positions { + border-#{$pos}: if( + $space == auto, + $space, + #{$space}px solid var(--border-core) + ); + } + } + } + } + } + + //border-radius classes + $spacings: (0, 1, 2, 3, 4, 5); + + @each $space in $spacings { + @if $breakName != "" { + @media (min-width: $breakValue) { + .b-r-#{$breakName}-#{$space} { + border-radius: #{$space * $base-spacing}rem !important; + } + } + } @else { + .b-r-#{$space} { + border-radius: #{$space * $base-spacing}rem !important; + } + } + } + + //border-radius-circle + @if $breakName != "" { + @media (min-width: $breakValue) { + .b-r-#{$breakName}-circle { + border-radius: 50% !important; + } + } + } @else { + .b-r-circle { + border-radius: 50% !important; + } + .b-r-pill { + border-radius: 9999px !important; + } + } + + //gap classes + $spacings: (0, 1, 2, 3, 4, 5); + + @each $space in $spacings { + @if $breakName != "" { + @media (min-width: $breakValue) { + .gap-#{$breakName}-#{$space} { + gap: #{$space * $base-spacing}rem !important; + } + .gap-x-#{$breakName}-#{$space} { + column-gap: #{$space * $base-spacing}rem !important; + } + .gap-y-#{$breakName}-#{$space} { + row-gap: #{$space * $base-spacing}rem !important; + } + } + } @else { + .gap-#{$space} { + gap: #{$space * $base-spacing}rem !important; + } + .gap-x-#{$space} { + column-gap: #{$space * $base-spacing}rem !important; + } + .gap-y-#{$space} { + row-gap: #{$space * $base-spacing}rem !important; + } + } + } + + //Display classes + $displayProps: ( + "block", + "inline-block", + "inline", + "flex", + "grid", + "inline-flex", + "inline-grid", + "table", + "inline-table", + "list-item", + "none", + "contents" + ); + + @each $disp in $displayProps { + @if $breakName != "" { + @media (min-width: $breakValue) { + .d-#{$breakName}-#{$disp} { + display: #{$disp} !important; + } + } + } @else { + .d-#{$disp} { + display: #{$disp} !important; + } + } + } + + //Align & Justify classes + $alignments: ( + "center", + "space-between", + "space-around", + "space-evenly", + "flex-start", + "flex-end" + ); + + @each $align in $alignments { + @if $breakName != "" { + @media (min-width: $breakValue) { + .justify-#{$breakName}-#{$align} { + justify-content: #{$align}; + } + + .items-#{$breakName}-#{$align} { + align-items: #{$align}; + } + + .justify-items-#{$breakName}-#{$align} { + justify-items: #{$align}; + } + + .content-#{$breakName}-#{$align} { + align-content: #{$align}; + } + } + } @else { + .justify-#{$align} { + justify-content: #{$align}; + } + + .items-#{$align} { + align-items: #{$align}; + } + + .justify-items-#{$align} { + justify-items: #{$align}; + } + + .content-#{$align} { + align-content: #{$align}; + } + } + } + + //Text Align classes + $textAlignments: ("left", "right", "center", "justify"); + + @each $textAlign in $textAlignments { + @if $breakName != "" { + @media (min-width: $breakValue) { + .text-#{$breakName}-#{$textAlign} { + text-align: #{$textAlign} !important; + } + } + } @else { + .text-#{$textAlign} { + text-align: #{$textAlign} !important; + } + } + } + + //Opacity classes + $opacities: ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"); + + @each $opacity in $opacities { + @if $breakName != "" { + @media (min-width: $breakValue) { + .o-#{$breakName}-#{$opacity} { + opacity: calc(#{$opacity} / 10); + } + } + } @else { + .o-#{$opacity} { + opacity: calc(#{$opacity} / 10); + } + } + } +} //end breakpoints + +.flex-wrap { + flex-wrap: wrap; +} diff --git a/src/Connected.Components/Styles/utilities/_index.scss b/src/Connected.Components/Styles/utilities/_index.scss deleted file mode 100644 index 1c8a337..0000000 --- a/src/Connected.Components/Styles/utilities/_index.scss +++ /dev/null @@ -1,21 +0,0 @@ -@import 'borders/border-radius'; -@import 'borders/border-style'; -@import 'borders/border-width'; -@import 'borders/outline'; - -@import 'flexbox'; - -@import 'interactivity/cursor'; -@import 'interactivity/pointerevents'; - -@import 'layout/display'; -@import 'layout/object-fit'; -@import 'layout/object-position'; -@import 'layout/overflow'; -@import 'layout/position'; -@import 'layout/visibility'; -@import 'layout/zindex'; - -@import 'spacing/spacing'; - -@import 'obsolete'; diff --git a/src/Connected.Components/Styles/utilities/_obsolete.scss b/src/Connected.Components/Styles/utilities/_obsolete.scss deleted file mode 100644 index 61f8ac7..0000000 --- a/src/Connected.Components/Styles/utilities/_obsolete.scss +++ /dev/null @@ -1,11 +0,0 @@ -.width-full{ - width:100%; -} - -.height-full { - height: 100%; -} - -.w-max { - width: max-content; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/borders/_border-radius.scss b/src/Connected.Components/Styles/utilities/borders/_border-radius.scss deleted file mode 100644 index cc8abff..0000000 --- a/src/Connected.Components/Styles/utilities/borders/_border-radius.scss +++ /dev/null @@ -1,168 +0,0 @@ -$border-radiuses: ( "0": 0, "sm": 4px, "lg": 8px, "xl": 24px); - -@each $size, $value in $border-radiuses { - .rounded-#{$size} { - border-radius: $value !important; - } - - .rounded-t-#{$size} { - border-top-left-radius: $value !important; - border-top-right-radius: $value !important; - } - - .rounded-r-#{$size}, .rounded-e-#{$size} { - border-top-right-radius: $value !important; - border-bottom-right-radius: $value !important; - } - - .rounded-b-#{$size} { - border-bottom-right-radius: $value !important; - border-bottom-left-radius: $value !important; - } - - .rounded-l-#{$size}, .rounded-s-#{$size} { - border-top-left-radius: $value !important; - border-bottom-left-radius: $value !important; - } - - .rounded-tl-#{$size}, .rounded-ts-#{$size} { - border-top-left-radius: $value !important; - } - - .rounded-tr-#{$size}, .rounded-te-#{$size} { - border-top-right-radius: $value !important; - } - - .rounded-br-#{$size}, .rounded-be-#{$size} { - border-bottom-right-radius: $value !important; - } - - .rounded-bl-#{$size}, .rounded-bs-#{$size} { - border-bottom-left-radius: $value !important; - } - - //--------------------------- rtl styles --------------------------- - .application-layout-rtl { - .rounded-s-#{$size} { - border-top-right-radius: $value !important; - border-bottom-right-radius: $value !important; - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; - } - - .rounded-e-#{$size} { - border-top-left-radius: $value !important; - border-bottom-left-radius: $value !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - } - - .rounded-ts-#{$size} { - border-top-right-radius: $value !important; - border-top-left-radius: 0 !important; - } - - .rounded-te-#{$size} { - border-top-left-radius: $value !important; - border-top-right-radius: 0 !important; - } - - .rounded-bs-#{$size} { - border-bottom-right-radius: $value !important; - border-bottom-left-radius: 0 !important; - } - - .rounded-be-#{$size} { - border-bottom-left-radius: $value !important; - border-bottom-right-radius: 0 !important; - } - } - //------------------------------------------------------------------ -} - -.rounded { - border-radius: var(--default-borderradius) !important; -} - -.rounded-t { - border-top-left-radius: var(--default-borderradius) !important; - border-top-right-radius: var(--default-borderradius) !important; -} - -.rounded-r, .rounded-e { - border-top-right-radius: var(--default-borderradius) !important; - border-bottom-right-radius: var(--default-borderradius) !important; -} - -.rounded-b { - border-bottom-right-radius: var(--default-borderradius) !important; - border-bottom-left-radius: var(--default-borderradius) !important; -} - -.rounded-l, .rounded-s { - border-top-left-radius: var(--default-borderradius) !important; - border-bottom-left-radius: var(--default-borderradius) !important; -} - -.rounded-tl, .rounded-ts { - border-top-left-radius: var(--default-borderradius) !important; -} - -.rounded-tr, .rounded-te { - border-top-right-radius: var(--default-borderradius) !important; -} - -.rounded-br, .rounded-be { - border-bottom-right-radius: var(--default-borderradius) !important; -} - -.rounded-bl, .rounded-bs { - border-bottom-left-radius: var(--default-borderradius) !important; -} - -//--------------------------- rtl styles --------------------------- -.application-layout-rtl { - .rounded-s { - border-top-right-radius: var(--default-borderradius) !important; - border-bottom-right-radius: var(--default-borderradius) !important; - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; - } - - .rounded-e { - border-top-left-radius: var(--default-borderradius) !important; - border-bottom-left-radius: var(--default-borderradius) !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; - } - - .rounded-ts { - border-top-right-radius: var(--default-borderradius) !important; - border-top-left-radius: 0 !important; - } - - .rounded-te { - border-top-left-radius: var(--default-borderradius) !important; - border-top-right-radius: 0 !important; - } - - .rounded-bs { - border-bottom-right-radius: var(--default-borderradius) !important; - border-bottom-left-radius: 0 !important; - } - - .rounded-be { - border-bottom-left-radius: var(--default-borderradius) !important; - border-bottom-right-radius: 0 !important; - } -} -//------------------------------------------------------------------ - - -.rounded-circle { - border-radius: 50% !important; -} - -.rounded-pill { - border-radius: 9999px !important; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/borders/_border-style.scss b/src/Connected.Components/Styles/utilities/borders/_border-style.scss deleted file mode 100644 index 18c23f2..0000000 --- a/src/Connected.Components/Styles/utilities/borders/_border-style.scss +++ /dev/null @@ -1,7 +0,0 @@ -$border-styles: ( solid, dashed, dotted, double, hidden, none ); - -@each $value in $border-styles { - .border-#{$value} { - border-style: $value !important; - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/borders/_border-width.scss b/src/Connected.Components/Styles/utilities/borders/_border-width.scss deleted file mode 100644 index 58798c3..0000000 --- a/src/Connected.Components/Styles/utilities/borders/_border-width.scss +++ /dev/null @@ -1,22 +0,0 @@ -$border-widths: ( "-0": 0px,"": 1px, "-2": 2px, "-4": 4px, "-8": 8px ); -$border-width-directions: ("t": top, "r": right, "b": bottom, "l": left); - -@each $name, $value in $border-widths { - .border#{$name} { - border-width: $value !important; - } - @each $direction, $suffix in $border-width-directions { - .border-#{$direction}#{$name} { - border-#{$suffix}-width: $value !important; - } - } - .border-x#{$name} { - border-left-width: $value !important; - border-right-width: $value !important; - } - .border-y#{$name} { - border-top-width: $value !important; - border-bottom-width: $value !important; - } -} - diff --git a/src/Connected.Components/Styles/utilities/borders/_outline.scss b/src/Connected.Components/Styles/utilities/borders/_outline.scss deleted file mode 100644 index 28f52ce..0000000 --- a/src/Connected.Components/Styles/utilities/borders/_outline.scss +++ /dev/null @@ -1,34 +0,0 @@ -/* Outline Style */ - -.outline-none{ - outline-style: none; -} - -.outline-solid{ - outline-style: solid; -} - -.outline-dashed{ - outline-style: dashed; -} - -.outline-dotted{ - outline-style: dotted; -} - -.outline-double{ - outline-style: double; -} - -.outline-hidden{ - outline-style: hidden; -} - -/* Outline Color */ -/* To Doo */ - -/* Outline Offset */ -/* To Doo */ - -/* Outline Width */ -/* To Doo */ diff --git a/src/Connected.Components/Styles/utilities/flexbox/_align-content.scss b/src/Connected.Components/Styles/utilities/flexbox/_align-content.scss deleted file mode 100644 index 5a15026..0000000 --- a/src/Connected.Components/Styles/utilities/flexbox/_align-content.scss +++ /dev/null @@ -1,29 +0,0 @@ -@import '../../abstracts/variables'; - -@mixin align-content ($breakpoint) { - .align-content-#{$breakpoint}start { - align-content: flex-start !important; - } - - .align-content-#{$breakpoint}end { - align-content: flex-end !important; - } - - .align-content-#{$breakpoint}center { - align-content: center !important; - } - - .align-content-#{$breakpoint}space-between { - align-content: space-between !important; - } - - .align-content-#{$breakpoint}space-around { - align-content: space-around !important; - } - - .align-content-#{$breakpoint}stretch { - align-content: stretch !important; - } -} - -@include align-content(""); \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/flexbox/_align-items.scss b/src/Connected.Components/Styles/utilities/flexbox/_align-items.scss deleted file mode 100644 index 9737794..0000000 --- a/src/Connected.Components/Styles/utilities/flexbox/_align-items.scss +++ /dev/null @@ -1,25 +0,0 @@ -@import '../../abstracts/variables'; - -@mixin align-items ($breakpoint) { - .align-#{$breakpoint}start { - align-items: flex-start !important; - } - - .align-#{$breakpoint}end { - align-items: flex-end !important; - } - - .align-#{$breakpoint}center { - align-items: center !important; - } - - .align-#{$breakpoint}baseline { - align-items: baseline !important; - } - - .align-#{$breakpoint}stretch { - align-items: stretch !important; - } -} - -@include align-items(""); \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/flexbox/_align-self.scss b/src/Connected.Components/Styles/utilities/flexbox/_align-self.scss deleted file mode 100644 index 462dc67..0000000 --- a/src/Connected.Components/Styles/utilities/flexbox/_align-self.scss +++ /dev/null @@ -1,25 +0,0 @@ -@import '../../abstracts/variables'; - -@mixin align-self ($breakpoint) { - .align-self-#{$breakpoint}auto { - align-self: auto !important; - } - - .align-self-#{$breakpoint}start { - align-self: flex-start !important; - } - - .align-self-#{$breakpoint}end { - align-self: flex-end !important; - } - - .align-self-#{$breakpoint}center { - align-self: center !important; - } - - .align-self-#{$breakpoint}stretch { - align-self: stretch !important; - } -} - -@include align-self(""); \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/flexbox/_flex-direction.scss b/src/Connected.Components/Styles/utilities/flexbox/_flex-direction.scss deleted file mode 100644 index ad63c08..0000000 --- a/src/Connected.Components/Styles/utilities/flexbox/_flex-direction.scss +++ /dev/null @@ -1,21 +0,0 @@ -@import '../../abstracts/variables'; - -@mixin flex-direction ($breakpoint) { - .flex-#{$breakpoint}row { - flex-direction: row !important; - } - - .flex-#{$breakpoint}row-reverse { - flex-direction: row-reverse !important; - } - - .flex-#{$breakpoint}column { - flex-direction: column !important; - } - - .flex-#{$breakpoint}column-reverse { - flex-direction: column-reverse !important; - } -} - -@include flex-direction(""); \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/flexbox/_flex-grow.scss b/src/Connected.Components/Styles/utilities/flexbox/_flex-grow.scss deleted file mode 100644 index 7f2223b..0000000 --- a/src/Connected.Components/Styles/utilities/flexbox/_flex-grow.scss +++ /dev/null @@ -1,13 +0,0 @@ -@import '../../abstracts/variables'; - -@mixin flex-grow ($breakpoint) { - .flex-#{$breakpoint}grow-0 { - flex-grow: 0 !important; - } - - .flex-#{$breakpoint}grow-1 { - flex-grow: 1 !important; - } -} - -@include flex-grow(""); \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/flexbox/_flex-shrink.scss b/src/Connected.Components/Styles/utilities/flexbox/_flex-shrink.scss deleted file mode 100644 index 491b62a..0000000 --- a/src/Connected.Components/Styles/utilities/flexbox/_flex-shrink.scss +++ /dev/null @@ -1,13 +0,0 @@ -@import '../../abstracts/variables'; - -@mixin flex-shrink ($breakpoint) { - .flex-#{$breakpoint}shrink-0 { - flex-shrink: 0 !important; - } - - .flex-#{$breakpoint}shrink-1 { - flex-shrink: 1 !important; - } -} - -@include flex-shrink(""); \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/flexbox/_flex-wrap.scss b/src/Connected.Components/Styles/utilities/flexbox/_flex-wrap.scss deleted file mode 100644 index c4a682b..0000000 --- a/src/Connected.Components/Styles/utilities/flexbox/_flex-wrap.scss +++ /dev/null @@ -1,17 +0,0 @@ -@import '../../abstracts/variables'; - -@mixin flex-wrap ($breakpoint) { - .flex-#{$breakpoint}wrap { - flex-wrap: wrap !important; - } - - .flex-#{$breakpoint}nowrap { - flex-wrap: nowrap !important; - } - - .flex-#{$breakpoint}wrap-reverse { - flex-wrap: wrap-reverse !important; - } -} - -@include flex-wrap(""); \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/flexbox/_flex.scss b/src/Connected.Components/Styles/utilities/flexbox/_flex.scss deleted file mode 100644 index 59ac171..0000000 --- a/src/Connected.Components/Styles/utilities/flexbox/_flex.scss +++ /dev/null @@ -1,18 +0,0 @@ -@import '../../abstracts/variables'; - -@mixin flex($breakpoint) { - .flex-#{$breakpoint}1 { - flex: 1 1 0% !important; - } - .flex-#{$breakpoint}auto { - flex: 1 1 auto !important; - } - .flex-#{$breakpoint}initial { - flex: 0 1 auto !important; - } - .flex-#{$breakpoint}none { - flex: none !important; - } -} - -@include flex(""); \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/flexbox/_gap.scss b/src/Connected.Components/Styles/utilities/flexbox/_gap.scss deleted file mode 100644 index 569b344..0000000 --- a/src/Connected.Components/Styles/utilities/flexbox/_gap.scss +++ /dev/null @@ -1,23 +0,0 @@ -@import '../../abstracts/variables'; - -$count: 0; -$value: 0; - -@mixin gap($breakpoint) { - - @while $count < 17 { - .gap-#{$breakpoint}#{$count} { - gap: #{$value}px; - } - .gap-x-#{$breakpoint}#{$count} { - column-gap: #{$value}px; - } - .gap-y-#{$breakpoint}#{$count} { - row-gap: #{$value}px; - } - $count: $count + 1; - $value: $value + 4; - } -} - -@include gap(""); \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/flexbox/_index.scss b/src/Connected.Components/Styles/utilities/flexbox/_index.scss deleted file mode 100644 index 3769482..0000000 --- a/src/Connected.Components/Styles/utilities/flexbox/_index.scss +++ /dev/null @@ -1,29 +0,0 @@ -@import '../../abstracts/variables'; -@import 'flex'; -@import 'flex-direction'; -@import 'flex-grow'; -@import 'flex-shrink'; -@import 'flex-wrap'; -@import 'justify-content'; -@import 'order'; -@import 'align-content'; -@import 'align-items'; -@import 'align-self'; -@import 'gap'; - - -@each $name, $value in $breakpoints-css-utilities-only { - @media (min-width:$value) { - @include flex($name + "-"); - @include flex-direction($name + "-"); - @include flex-grow($name + "-"); - @include flex-shrink($name + "-"); - @include flex-wrap($name + "-"); - @include justify-content($name + "-"); - @include order($name + "-"); - @include align-content($name + "-"); - @include align-items($name + "-"); - @include align-self($name + "-"); - @include gap($name + "-"); - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/flexbox/_justify-content.scss b/src/Connected.Components/Styles/utilities/flexbox/_justify-content.scss deleted file mode 100644 index 511bfac..0000000 --- a/src/Connected.Components/Styles/utilities/flexbox/_justify-content.scss +++ /dev/null @@ -1,29 +0,0 @@ -@import '../../abstracts/variables'; - -@mixin justify-content ($breakpoint) { - .justify-#{$breakpoint}start { - justify-content: flex-start !important; - } - - .justify-#{$breakpoint}end { - justify-content: flex-end !important; - } - - .justify-#{$breakpoint}center { - justify-content: center !important; - } - - .justify-#{$breakpoint}space-between { - justify-content: space-between !important; - } - - .justify-#{$breakpoint}space-around { - justify-content: space-around !important; - } - - .justify-#{$breakpoint}space-evenly { - justify-content: space-evenly !important; - } -} - -@include justify-content(""); \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/flexbox/_order.scss b/src/Connected.Components/Styles/utilities/flexbox/_order.scss deleted file mode 100644 index 61b9c1a..0000000 --- a/src/Connected.Components/Styles/utilities/flexbox/_order.scss +++ /dev/null @@ -1,21 +0,0 @@ -@import '../../abstracts/variables'; - -$count: 0; - -@mixin order ($breakpoint) { - .order-#{$breakpoint}first { - order: -9999 !important; - } - .order-#{$breakpoint}last { - order: 9999 !important; - } - @while $count < 13 { - .order-#{$breakpoint}#{$count} { - order: $count !important; - } - $count: $count + 1; - } -} - - -@include order(""); \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/interactivity/_cursor.scss b/src/Connected.Components/Styles/utilities/interactivity/_cursor.scss deleted file mode 100644 index ade60af..0000000 --- a/src/Connected.Components/Styles/utilities/interactivity/_cursor.scss +++ /dev/null @@ -1,13 +0,0 @@ -$cursors: ( - auto, default, pointer, wait, text, move, help, - not-allowed, none, progress, cell, crosshair, - vertical-text, alias, copy, no-drop, grab, grabbing, - all-scroll, col-resize, row-resize, n-resize, w-resize, - zoom-in, zoom-out, url -); - -@each $value in $cursors { - .cursor-#{$value} { - cursor: $value !important; - } -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/interactivity/_pointerevents.scss b/src/Connected.Components/Styles/utilities/interactivity/_pointerevents.scss deleted file mode 100644 index c4448f7..0000000 --- a/src/Connected.Components/Styles/utilities/interactivity/_pointerevents.scss +++ /dev/null @@ -1,6 +0,0 @@ -.pointer-events-none{ - pointer-events: none; -} -.pointer-events-auto{ - pointer-events: auto; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/layout/_display.scss b/src/Connected.Components/Styles/utilities/layout/_display.scss deleted file mode 100644 index c1b6910..0000000 --- a/src/Connected.Components/Styles/utilities/layout/_display.scss +++ /dev/null @@ -1,65 +0,0 @@ -@import '../../abstracts/variables'; - -@mixin display-mixin ($breakpoint) { - .d-#{$breakpoint}none { - display: none !important; - } - - .d-#{$breakpoint}inline { - display: inline !important; - } - - .d-#{$breakpoint}inline-block { - display: inline-block !important; - } - - .d-#{$breakpoint}block { - display: block !important; - } - - .d-#{$breakpoint}table { - display: table !important; - } - - .d-#{$breakpoint}table-row { - display: table-row !important; - } - - .d-#{$breakpoint}table-cell { - display: table-cell !important; - } - - .d-#{$breakpoint}flex { - display: flex !important; - } - - .d-#{$breakpoint}inline-flex { - display: inline-flex !important; - } -} - - - - -// XS > -@include display-mixin(""); - -@media (min-width:$breakpoint-sm) { - @include display-mixin("sm-"); -} - -@media (min-width:$breakpoint-md) { - @include display-mixin("md-"); -} - -@media (min-width:$breakpoint-lg) { - @include display-mixin("lg-"); -} - -@media (min-width:$breakpoint-xl) { - @include display-mixin("xl-"); -} - -@media (min-width:$breakpoint-xxl) { - @include display-mixin("xxl-"); -} diff --git a/src/Connected.Components/Styles/utilities/layout/_object-fit.scss b/src/Connected.Components/Styles/utilities/layout/_object-fit.scss deleted file mode 100644 index 0407df0..0000000 --- a/src/Connected.Components/Styles/utilities/layout/_object-fit.scss +++ /dev/null @@ -1,15 +0,0 @@ -.object-none { - object-fit: none; -} -.object-cover { - object-fit: cover; -} -.object-contain { - object-fit: contain; -} -.object-fill { - object-fit: fill; -} -.object-scale-down { - object-fit: scale-down; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/layout/_object-position.scss b/src/Connected.Components/Styles/utilities/layout/_object-position.scss deleted file mode 100644 index 49bdf23..0000000 --- a/src/Connected.Components/Styles/utilities/layout/_object-position.scss +++ /dev/null @@ -1,27 +0,0 @@ -.object-center { - object-position: center; -} -.object-top { - object-position: top; -} -.object-bottom { - object-position: bottom; -} -.object-left { - object-position: left; -} -.object-left-top { - object-position: left top; -} -.object-left-bottom { - object-position: left bottom; -} -.object-right { - object-position: right; -} -.object-right-top { - object-position: right top; -} -.object-right-bottom { - object-position: right bottom; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/layout/_overflow.scss b/src/Connected.Components/Styles/utilities/layout/_overflow.scss deleted file mode 100644 index 8561246..0000000 --- a/src/Connected.Components/Styles/utilities/layout/_overflow.scss +++ /dev/null @@ -1,47 +0,0 @@ -.overflow-auto { - overflow: auto; -} - -.overflow-hidden { - overflow: hidden; -} - -.overflow-visible { - overflow: visible; -} - -.overflow-scroll { - overflow: scroll; -} - -.overflow-x-auto { - overflow-x: auto; -} - -.overflow-y-auto { - overflow-y: auto; -} - -.overflow-x-hidden { - overflow-x: hidden; -} - -.overflow-y-hidden { - overflow-y: hidden; -} - -.overflow-x-visible { - overflow-x: visible; -} - -.overflow-y-visible { - overflow-y: visible; -} - -.overflow-x-scroll { - overflow-x: scroll; -} - -.overflow-y-scroll { - overflow-y: scroll; -} diff --git a/src/Connected.Components/Styles/utilities/layout/_position.scss b/src/Connected.Components/Styles/utilities/layout/_position.scss deleted file mode 100644 index 67c38a2..0000000 --- a/src/Connected.Components/Styles/utilities/layout/_position.scss +++ /dev/null @@ -1,19 +0,0 @@ -.absolute { - position: absolute; -} - -.fixed { - position: fixed; -} - -.relative { - position: relative; -} - -.static { - position: static; -} - -.sticky { - position: sticky; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/layout/_visibility.scss b/src/Connected.Components/Styles/utilities/layout/_visibility.scss deleted file mode 100644 index b6f8e26..0000000 --- a/src/Connected.Components/Styles/utilities/layout/_visibility.scss +++ /dev/null @@ -1,6 +0,0 @@ -.visible { - visibility: visible; -} -.invisible { - visibility: hidden; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/layout/_zindex.scss b/src/Connected.Components/Styles/utilities/layout/_zindex.scss deleted file mode 100644 index bc5074c..0000000 --- a/src/Connected.Components/Styles/utilities/layout/_zindex.scss +++ /dev/null @@ -1,14 +0,0 @@ -$count: 1; -$value: 0; - -@while $count < 12 { - .z-#{$value} { - z-index: $value; - } - $count: $count + 1; - $value: $value + 10; -} - -.z-auto{ - z-index:auto; -} \ No newline at end of file diff --git a/src/Connected.Components/Styles/utilities/spacing/_spacing.scss b/src/Connected.Components/Styles/utilities/spacing/_spacing.scss deleted file mode 100644 index ae044fd..0000000 --- a/src/Connected.Components/Styles/utilities/spacing/_spacing.scss +++ /dev/null @@ -1,101 +0,0 @@ -@import '../../abstracts/variables'; - -$spacing-values: ( "0": 0, "1": 4px, "2": 8px, "3": 12px, "4": 16px, "5": 20px, "6": 24px, "7": 28px, "8": 32px, "9": 36px, "10": 40px, "11": 44px, "12": 48px, "13": 52px, "14": 56px, "15": 60px, "16": 64px, "auto": auto ); -$spacing-negative-values: ( "n1": -4px, "n2": -8px, "n3": -12px, "n4": -16px, "n5": -20px, "n6": -24px, "n7": -28px, "n8": -32px, "n9": -36px, "n10": -40px, "n11": -44px, "n12": -48px, "n13": -52px, "n14": -56px, "n15": -60px, "n16": -64px ); - -@mixin spacing-positive-negative ($breakpoint) { - @each $prop, $abbrev in (margin: m, padding: p) { - @each $name, $value in $spacing-values { - .#{$abbrev}t-#{$breakpoint}#{$name}, - .#{$abbrev}y-#{$breakpoint}#{$name} { - #{$prop}-top: $value !important; - } - - .#{$abbrev}r-#{$breakpoint}#{$name}, - .#{$abbrev}x-#{$breakpoint}#{$name} { - #{$prop}-right: $value !important; - } - - .#{$abbrev}l-#{$breakpoint}#{$name}, - .#{$abbrev}x-#{$breakpoint}#{$name} { - #{$prop}-left: $value !important; - } - - .#{$abbrev}b-#{$breakpoint}#{$name}, - .#{$abbrev}y-#{$breakpoint}#{$name} { - #{$prop}-bottom: $value !important; - } - - .#{$abbrev}s-#{$breakpoint}#{$name} { - #{$prop}-inline-start: $value !important; - } - - .#{$abbrev}e-#{$breakpoint}#{$name} { - #{$prop}-inline-end: $value !important; - } - - .#{$abbrev}a-#{$breakpoint}#{$name} { - #{$prop}: $value !important; - } - } - } - - @each $prop, $abbrev in (margin: m) { - @each $name, $value in $spacing-negative-values { - .#{$abbrev}t-#{$breakpoint}#{$name}, - .#{$abbrev}y-#{$breakpoint}#{$name} { - #{$prop}-top: $value !important; - } - - .#{$abbrev}r-#{$breakpoint}#{$name}, - .#{$abbrev}x-#{$breakpoint}#{$name} { - #{$prop}-right: $value !important; - } - - .#{$abbrev}l-#{$breakpoint}#{$name}, - .#{$abbrev}x-#{$breakpoint}#{$name} { - #{$prop}-left: $value !important; - } - - .#{$abbrev}b-#{$breakpoint}#{$name}, - .#{$abbrev}y-#{$breakpoint}#{$name} { - #{$prop}-bottom: $value !important; - } - - .#{$abbrev}s-#{$breakpoint}#{$name} { - #{$prop}-inline-start: $value !important; - } - - .#{$abbrev}e-#{$breakpoint}#{$name} { - #{$prop}-inline-end: $value !important; - } - - .#{$abbrev}a-#{$breakpoint}#{$name} { - #{$prop}: $value !important; - } - } - } -} - -// XS > -@include spacing-positive-negative(""); - -@media screen and (min-width:$breakpoint-sm) { - @include spacing-positive-negative("sm-"); -} - -@media screen and (min-width:$breakpoint-md) { - @include spacing-positive-negative("md-"); -} - -@media screen and (min-width:$breakpoint-lg) { - @include spacing-positive-negative("lg-"); -} - -@media screen and (min-width:$breakpoint-xl) { - @include spacing-positive-negative("xl-"); -} - -@media screen and (min-width:$breakpoint-xxl) { - @include spacing-positive-negative("xxl-"); -} \ No newline at end of file diff --git a/src/Connected.Components/TScripts/mudAAAlicense.js b/src/Connected.Components/TScripts/mudAAAlicense.js deleted file mode 100644 index cea4e9a..0000000 --- a/src/Connected.Components/TScripts/mudAAAlicense.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * MudBlazor (https://mudblazor.com/) - * Copyright (c) 2021 MudBlazor - * Licensed under MIT (https://github.com/MudBlazor/MudBlazor/blob/master/LICENSE) - */ \ No newline at end of file diff --git a/src/Connected.Components/TScripts/mudDragAndDrop.js b/src/Connected.Components/TScripts/mudDragAndDrop.js deleted file mode 100644 index abef412..0000000 --- a/src/Connected.Components/TScripts/mudDragAndDrop.js +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -window.mudDragAndDrop = { - - initDropZone: (id) => { - const elem = document.getElementById('mud-drop-zone-' + id); - elem.addEventListener('dragover',() => event.preventDefault()); - elem.addEventListener('dragstart', () => event.dataTransfer.setData('', event.target.id)); - } -}; \ No newline at end of file diff --git a/src/Connected.Components/TScripts/mudElementReference.js b/src/Connected.Components/TScripts/mudElementReference.js deleted file mode 100644 index 1695bbd..0000000 --- a/src/Connected.Components/TScripts/mudElementReference.js +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -class MudElementReference { - constructor() { - this.listenerId = 0; - this.eventListeners = {}; - } - - focus (element) { - if (element) - { - element.focus(); - } - } - - blur(element) { - if (element) { - element.blur(); - } - } - - focusFirst (element, skip = 0, min = 0) { - if (element) - { - let tabbables = getTabbableElements(element); - if (tabbables.length <= min) - element.focus(); - else - tabbables[skip].focus(); - } - } - - focusLast (element, skip = 0, min = 0) { - if (element) - { - let tabbables = getTabbableElements(element); - if (tabbables.length <= min) - element.focus(); - else - tabbables[tabbables.length - skip - 1].focus(); - } - } - - saveFocus (element) { - if (element) - { - element['mudblazor_savedFocus'] = document.activeElement; - } - } - - restoreFocus (element) { - if (element) - { - let previous = element['mudblazor_savedFocus']; - delete element['mudblazor_savedFocus'] - if (previous) - previous.focus(); - } - } - - selectRange(element, pos1, pos2) { - if (element) - { - if (element.createTextRange) { - let selRange = element.createTextRange(); - selRange.collapse(true); - selRange.moveStart('character', pos1); - selRange.moveEnd('character', pos2); - selRange.select(); - } else if (element.setSelectionRange) { - element.setSelectionRange(pos1, pos2); - } else if (element.selectionStart) { - element.selectionStart = pos1; - element.selectionEnd = pos2; - } - element.focus(); - } - } - - select(element) { - if (element) - { - element.select(); - } - } - - getBoundingClientRect(element) { - if (!element) return; - - var rect = JSON.parse(JSON.stringify(element.getBoundingClientRect())); - - rect.scrollY = window.scrollY || document.documentElement.scrollTop; - rect.scrollX = window.scrollX || document.documentElement.scrollLeft; - - rect.windowHeight = window.innerHeight; - rect.windowWidth = window.innerWidth; - return rect; - } - - changeCss (element, css) { - if (element) - { - element.className = css; - } - } - - removeEventListener (element, event, eventId) { - element.removeEventListener(event, this.eventListeners[eventId]); - delete this.eventListeners[eventId]; - } - - addDefaultPreventingHandler(element, eventName) { - let listener = function(e) { - e.preventDefault(); - } - element.addEventListener(eventName, listener, { passive: false }); - this.eventListeners[++this.listenerId] = listener; - return this.listenerId; - } - - removeDefaultPreventingHandler(element, eventName, listenerId) { - this.removeEventListener(element, eventName, listenerId); - } - - addDefaultPreventingHandlers(element, eventNames) { - let listeners = []; - - for (const eventName of eventNames) { - let listenerId = this.addDefaultPreventingHandler(element, eventName); - listeners.push(listenerId); - } - - return listeners; - } - - removeDefaultPreventingHandlers(element, eventNames, listenerIds) { - for (let index = 0; index < eventNames.length; ++index) { - const eventName = eventNames[index]; - const listenerId = listenerIds[index]; - this.removeDefaultPreventingHandler(element, eventName, listenerId); - } - } -}; -window.mudElementRef = new MudElementReference(); diff --git a/src/Connected.Components/TScripts/mudEventManager.js b/src/Connected.Components/TScripts/mudEventManager.js deleted file mode 100644 index 5e3ebb8..0000000 --- a/src/Connected.Components/TScripts/mudEventManager.js +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -//Functions related to MudThrottledEventManager -class MudThrottledEventManager { - constructor() { - this.mapper = {}; - } - - subscribe(eventName, elementId, projection, throotleInterval, key, properties, dotnetReference) { - const handlerRef = this.throttleEventHandler.bind(this, key); - - let elem = document.getElementById(elementId); - if (elem) { - elem.addEventListener(eventName, handlerRef, false); - - let projector = null; - if (projection) { - const parts = projection.split('.'); - let functionPointer = window; - let functionReferenceFound = true; - if (parts.length == 0 || parts.length == 1) { - functionPointer = functionPointer[projection]; - } - else { - for (let i = 0; i < parts.length; i++) { - functionPointer = functionPointer[parts[i]]; - if (!functionPointer) { - functionReferenceFound = false; - break; - } - } - } - - if (functionReferenceFound === true) { - projector = functionPointer; - } - } - - this.mapper[key] = { - eventName: eventName, - handler: handlerRef, - delay: throotleInterval, - timerId: -1, - reference: dotnetReference, - elementId: elementId, - properties: properties, - projection: projector, - }; - } - } - - subscribeGlobal(eventName, throotleInterval, key, properties, dotnetReference) { - let handlerRef = throotleInterval > 0 ? - this.throttleEventHandler.bind(this, key) : - this.eventHandler.bind(this, key); - - document.addEventListener(eventName, handlerRef, false); - - this.mapper[key] = { - eventName: eventName, - handler: handlerRef, - delay: throotleInterval, - timerId: -1, - reference: dotnetReference, - elementId: document, - properties: properties, - projection: null, - }; - } - - throttleEventHandler(key, event) { - const entry = this.mapper[key]; - if (!entry) { - return; - } - - clearTimeout(entry.timerId); - entry.timerId = window.setTimeout( - this.eventHandler.bind(this, key, event), - entry.delay - ); - } - - eventHandler(key, event) { - const entry = this.mapper[key]; - if (!entry) { - return; - } - - var elem = document.getElementById(entry.elementId); - if (elem != event.srcElement && entry.elementId != document) { - return; - } - - const eventEntry = {}; - for (var i = 0; i < entry.properties.length; i++) { - eventEntry[entry.properties[i]] = event[entry.properties[i]]; - } - - if (entry.projection) { - if (typeof entry.projection === "function") { - entry.projection.apply(null, [eventEntry, event]); - } - } - - entry.reference.invokeMethodAsync('OnEventOccur', key, JSON.stringify(eventEntry)); - } - - unsubscribe(key) { - const entry = this.mapper[key]; - if (!entry) { - return; - } - - entry.reference = null; - - if (document == entry.elementId) { - document.removeEventListener(entry.eventName, entry.handler, false); - } else { - const elem = document.getElementById(entry.elementId); - if (elem) { - elem.removeEventListener(entry.eventName, entry.handler, false); - } - } - - delete this.mapper[key]; - } -}; - -window.mudThrottledEventManager = new MudThrottledEventManager(); - -window.mudEventProjections = { - correctOffset: function (eventEntry, event) { - var target = event.target.getBoundingClientRect(); - eventEntry.offsetX = event.clientX - target.x; - eventEntry.offsetY = event.clientY - target.y; - } -}; \ No newline at end of file diff --git a/src/Connected.Components/TScripts/mudHelpers.js b/src/Connected.Components/TScripts/mudHelpers.js deleted file mode 100644 index 7bebfcd..0000000 --- a/src/Connected.Components/TScripts/mudHelpers.js +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -window.getTabbableElements = (element) => { - return element.querySelectorAll( - "a[href]:not([tabindex='-1'])," + - "area[href]:not([tabindex='-1'])," + - "button:not([disabled]):not([tabindex='-1'])," + - "input:not([disabled]):not([tabindex='-1']):not([type='hidden'])," + - "select:not([disabled]):not([tabindex='-1'])," + - "textarea:not([disabled]):not([tabindex='-1'])," + - "iframe:not([tabindex='-1'])," + - "details:not([tabindex='-1'])," + - "[tabindex]:not([tabindex='-1'])," + - "[contentEditable=true]:not([tabindex='-1']" - ); -}; - -//from: https://github.com/RemiBou/BrowserInterop -window.serializeParameter = (data, spec) => { - if (typeof data == "undefined" || - data === null) { - return null; - } - if (typeof data === "number" || - typeof data === "string" || - typeof data == "boolean") { - return data; - } - - let res = (Array.isArray(data)) ? [] : {}; - if (!spec) { - spec = "*"; - } - - for (let i in data) { - let currentMember = data[i]; - - if (typeof currentMember === 'function' || currentMember === null) { - continue; - } - - let currentMemberSpec; - if (spec != "*") { - currentMemberSpec = Array.isArray(data) ? spec : spec[i]; - if (!currentMemberSpec) { - continue; - } - } else { - currentMemberSpec = "*" - } - - if (typeof currentMember === 'object') { - if (Array.isArray(currentMember) || currentMember.length) { - res[i] = []; - for (let j = 0; j < currentMember.length; j++) { - const arrayItem = currentMember[j]; - if (typeof arrayItem === 'object') { - res[i].push(this.serializeParameter(arrayItem, currentMemberSpec)); - } else { - res[i].push(arrayItem); - } - } - } else { - //the browser provides some member (like plugins) as hash with index as key, if length == 0 we shall not convert it - if (currentMember.length === 0) { - res[i] = []; - } else { - res[i] = this.serializeParameter(currentMember, currentMemberSpec); - } - } - - - } else { - // string, number or boolean - if (currentMember === Infinity) { //inifity is not serialized by JSON.stringify - currentMember = "Infinity"; - } - if (currentMember !== null) { //needed because the default json serializer in jsinterop serialize null values - res[i] = currentMember; - } - } - } - - return res; -}; diff --git a/src/Connected.Components/TScripts/mudJsEvent.js b/src/Connected.Components/TScripts/mudJsEvent.js deleted file mode 100644 index 89069fa..0000000 --- a/src/Connected.Components/TScripts/mudJsEvent.js +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -class MudJsEventFactory { - connect(dotNetRef, elementId, options) { - //console.log('[MudBlazor | MudJsEventFactory] connect ', { dotNetRef, elementId, options }); - if (!elementId) - throw "[MudBlazor | JsEvent] elementId: expected element id!"; - var element = document.getElementById(elementId); - if (!element) - throw "[MudBlazor | JsEvent] no element found for id: " + elementId; - if (!element.mudJsEvent) - element.mudJsEvent = new MudJsEvent(dotNetRef, options); - element.mudJsEvent.connect(element); - } - - disconnect(elementId) { - var element = document.getElementById(elementId); - if (!element || !element.mudJsEvent) - return; - element.mudJsEvent.disconnect(); - } - - subscribe(elementId, eventName) { - //console.log('[MudBlazor | MudJsEventFactory] subscribe ', { elementId, eventName}); - if (!elementId) - throw "[MudBlazor | JsEvent] elementId: expected element id!"; - var element = document.getElementById(elementId); - if (!element) - throw "[MudBlazor | JsEvent] no element found for id: " +elementId; - if (!element.mudJsEvent) - throw "[MudBlazor | JsEvent] please connect before subscribing" - element.mudJsEvent.subscribe(eventName); - } - - unsubscribe(elementId, eventName) { - var element = document.getElementById(elementId); - if (!element || !element.mudJsEvent) - return; - element.mudJsEvent.unsubscribe(element, eventName); - } -} -window.mudJsEvent = new MudJsEventFactory(); - - -class MudJsEvent { - - constructor(dotNetRef, options) { - this._dotNetRef = dotNetRef; - this._options = options || {}; - this.logger = options.enableLogging ? console.log : (message) => { }; - this.logger('[MudBlazor | JsEvent] Initialized', { options }); - this._subscribedEvents = {}; - } - - connect(element) { - if (!this._options) - return; - if (!this._options.targetClass) - throw "_options.targetClass: css class name expected"; - if (this._observer) { - // don't do double registration - return; - } - var targetClass = this._options.targetClass; - this.logger('[MudBlazor | JsEvent] Start observing DOM of element for changes to child with class ', { element, targetClass }); - this._element = element; - this._observer = new MutationObserver(this.onDomChanged); - this._observer.mudJsEvent = this; - this._observer.observe(this._element, { attributes: false, childList: true, subtree: true }); - this._observedChildren = []; - } - - disconnect() { - if (!this._observer) - return; - this.logger('[MudBlazor | JsEvent] disconnect mutation observer and event handler '); - this._observer.disconnect(); - this._observer = null; - for (const child of this._observedChildren) - this.detachHandlers(child); - } - - subscribe(eventName) { - // register handlers - if (this._subscribedEvents[eventName]) { - //console.log("... already attached"); - return; - } - var element = this._element; - var targetClass = this._options.targetClass; - //this.logger('[MudBlazor | JsEvent] Subscribe event ' + eventName, { element, targetClass }); - this._subscribedEvents[eventName]=true; - for (const child of element.getElementsByClassName(targetClass)) { - this.attachHandlers(child); - } - } - - unsubscribe(eventName) { - if (!this._observer) - return; - this.logger('[MudBlazor | JsEvent] unsubscribe event handler ' + eventName ); - this._observer.disconnect(); - this._observer = null; - this._subscribedEvents[eventName] = false; - for (const child of this._observedChildren) { - this.detachHandler(child, eventName); - } - } - - attachHandlers(child) { - child.mudJsEvent = this; - //this.logger('[MudBlazor | JsEvent] attachHandlers ', this._subscribedEvents, child); - for (var eventName of Object.getOwnPropertyNames(this._subscribedEvents)) { - if (!this._subscribedEvents[eventName]) - continue; - // note: multiple registration of the same event not possible due to the use of the same handler func - this.logger('[MudBlazor | JsEvent] attaching event ' + eventName, child); - child.addEventListener(eventName, this.eventHandler); - } - if(this._observedChildren.indexOf(child) < 0) - this._observedChildren.push(child); - } - - detachHandler(child, eventName) { - this.logger('[MudBlazor | JsEvent] detaching handler ' + eventName, child); - child.removeEventListener(eventName, this.eventHandler); - } - - detachHandlers(child) { - this.logger('[MudBlazor | JsEvent] detaching handlers ', child); - for (var eventName of Object.getOwnPropertyNames(this._subscribedEvents)) { - if (!this._subscribedEvents[eventName]) - continue; - child.removeEventListener(eventName, this.eventHandler); - } - this._observedChildren = this._observedChildren.filter(x=>x!==child); - } - - onDomChanged(mutationsList, observer) { - var self = this.mudJsEvent; // func is invoked with this == _observer - //self.logger('[MudBlazor | JsEvent] onDomChanged: ', { self }); - var targetClass = self._options.targetClass; - for (const mutation of mutationsList) { - //self.logger('[MudBlazor | JsEvent] Subtree mutation: ', { mutation }); - for (const element of mutation.addedNodes) { - if (element.classList && element.classList.contains(targetClass)) { - if (!self._options.TagName || element.tagName == self._options.TagName) - self.attachHandlers(element); - } - } - for (const element of mutation.removedNodes) { - if (element.classList && element.classList.contains(targetClass)) { - if (!self._options.tagName || element.tagName == self._options.tagName) - self.detachHandlers(element); - } - } - } - } - - eventHandler(e) { - var self = this.mudJsEvent; // func is invoked with this == child - var eventName = e.type; - self.logger('[MudBlazor | JsEvent] "' + eventName + '"', e); - // call specific handler - self["on" + eventName](self, e); - } - - onkeyup(self, e) { - const caretPosition = e.target.selectionStart; - const invoke = self._subscribedEvents["keyup"]; - if (invoke) { - //self.logger('[MudBlazor | JsEvent] caret pos: ' + caretPosition); - self._dotNetRef.invokeMethodAsync('OnCaretPositionChanged', caretPosition); - } - } - - onclick(self, e) { - const caretPosition = e.target.selectionStart; - const invoke = self._subscribedEvents["click"]; - if (invoke) { - //self.logger('[MudBlazor | JsEvent] caret pos: ' + caretPosition); - self._dotNetRef.invokeMethodAsync('OnCaretPositionChanged', caretPosition); - } - } - - //oncopy(self, e) { - // const invoke = self._subscribedEvents["copy"]; - // if (invoke) { - // //self.logger('[MudBlazor | JsEvent] copy (preventing default and stopping propagation)'); - // e.preventDefault(); - // e.stopPropagation(); - // self._dotNetRef.invokeMethodAsync('OnCopy'); - // } - //} - - onpaste(self, e) { - const invoke = self._subscribedEvents["paste"]; - if (invoke) { - //self.logger('[MudBlazor | JsEvent] paste (preventing default and stopping propagation)'); - e.preventDefault(); - e.stopPropagation(); - const text = (e.originalEvent || e).clipboardData.getData('text/plain'); - self._dotNetRef.invokeMethodAsync('OnPaste', text); - } - } - - onselect(self, e) { - const invoke = self._subscribedEvents["select"]; - if (invoke) { - const start = e.target.selectionStart; - const end = e.target.selectionEnd; - if (start === end) - return; // <-- we have caret position changed for that. - //self.logger('[MudBlazor | JsEvent] select ' + start + "-" + end); - self._dotNetRef.invokeMethodAsync('OnSelect', start, end); - } - } -} - diff --git a/src/Connected.Components/TScripts/mudKeyInterceptor.js b/src/Connected.Components/TScripts/mudKeyInterceptor.js deleted file mode 100644 index f483ba7..0000000 --- a/src/Connected.Components/TScripts/mudKeyInterceptor.js +++ /dev/null @@ -1,258 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -class MudKeyInterceptorFactory { - - connect(dotNetRef, elementId, options) { - //console.log('[MudBlazor | MudKeyInterceptorFactory] connect ', { dotNetRef, element, options }); - if (!elementId) - throw "elementId: expected element id!"; - var element = document.getElementById(elementId); - if (!element) - throw "no element found for id: " +elementId; - if (!element.mudKeyInterceptor) - element.mudKeyInterceptor = new MudKeyInterceptor(dotNetRef, options); - element.mudKeyInterceptor.connect(element); - } - - updatekey(elementId, option) { - var element = document.getElementById(elementId); - if (!element || !element.mudKeyInterceptor) - return; - element.mudKeyInterceptor.updatekey(option); - } - - disconnect(elementId) { - var element = document.getElementById(elementId); - if (!element || !element.mudKeyInterceptor) - return; - element.mudKeyInterceptor.disconnect(); - } -} -window.mudKeyInterceptor = new MudKeyInterceptorFactory(); - - -class MudKeyInterceptor { - - constructor(dotNetRef, options) { - this._dotNetRef = dotNetRef; - this._options = options; - this.logger = options.enableLogging ? console.log : (message) => { }; - this.logger('[MudBlazor | KeyInterceptor] Interceptor initialized', { options }); - } - - - connect(element) { - if (!this._options) - return; - if (!this._options.keys) - throw "_options.keys: array of KeyOptions expected"; - if (!this._options.targetClass) - throw "_options.targetClass: css class name expected"; - if (this._observer) { - // don't do double registration - return; - } - var targetClass = this._options.targetClass; - this.logger('[MudBlazor | KeyInterceptor] Start observing DOM of element for changes to child with class ', { element, targetClass}); - this._element = element; - this._observer = new MutationObserver(this.onDomChanged); - this._observer.mudKeyInterceptor = this; - this._observer.observe(this._element, { attributes: false, childList: true, subtree: true }); - this._observedChildren = []; - // transform key options into a key lookup - this._keyOptions = {}; - this._regexOptions = []; - for (const keyOption of this._options.keys) { - if (!keyOption || !keyOption.key) { - this.logger('[MudBlazor | KeyInterceptor] got invalid key options: ', keyOption); - continue; - } - this.setKeyOption(keyOption) - } - this.logger('[MudBlazor | KeyInterceptor] key options: ', this._keyOptions); - if (this._regexOptions.size > 0) - this.logger('[MudBlazor | KeyInterceptor] regex options: ', this._regexOptions); - // register handlers - for (const child of this._element.getElementsByClassName(targetClass)) { - this.attachHandlers(child); - } - } - - setKeyOption(keyOption) { - if (keyOption.key.length > 2 && keyOption.key.startsWith('/') && keyOption.key.endsWith('/')) { - // JS regex key options such as "/[a-z]/" or "/a|b/" but NOT "/[a-z]/g" or "/[a-z]/i" - keyOption.regex = new RegExp(keyOption.key.substring(1, keyOption.key.length - 1)); // strip the / from start and end - this._regexOptions.push(keyOption); - } - else - this._keyOptions[keyOption.key.toLowerCase()] = keyOption; - // remove whitespace and enforce lowercase - var whitespace = new RegExp("\\s", "g"); - keyOption.preventDown = (keyOption.preventDown || "none").replace(whitespace, "").toLowerCase(); - keyOption.preventUp = (keyOption.preventUp || "none").replace(whitespace, "").toLowerCase(); - keyOption.stopDown = (keyOption.stopDown || "none").replace(whitespace, "").toLowerCase(); - keyOption.stopUp = (keyOption.stopUp || "none").replace(whitespace, "").toLowerCase(); - } - - updatekey(updatedOption) { - var option = this._keyOptions[updatedOption.key.toLowerCase()]; - option || this.logger('[MudBlazor | KeyInterceptor] updating option failed: key not registered'); - this.setKeyOption(updatedOption); - this.logger('[MudBlazor | KeyInterceptor] updated option ', { option, updatedOption }); - } - - disconnect() { - if (!this._observer) - return; - this.logger('[MudBlazor | KeyInterceptor] disconnect mutation observer and event handlers'); - this._observer.disconnect(); - this._observer = null; - for (const child of this._observedChildren) - this.detachHandlers(child); - } - - attachHandlers(child) { - this.logger('[MudBlazor | KeyInterceptor] attaching handlers ', { child }); - if (this._observedChildren.indexOf(child) > -1) { - //console.log("... already attached"); - return; - } - child.mudKeyInterceptor = this; - child.addEventListener('keydown', this.onKeyDown); - child.addEventListener('keyup', this.onKeyUp); - this._observedChildren.push(child); - } - - detachHandlers(child) { - this.logger('[MudBlazor | KeyInterceptor] detaching handlers ', { child }); - child.removeEventListener('keydown', this.onKeyDown); - child.removeEventListener('keyup', this.onKeyUp); - this._observedChildren = this._observedChildren.filter(x=>x!==child); - } - - onDomChanged(mutationsList, observer) { - var self = this.mudKeyInterceptor; // func is invoked with this == _observer - //self.logger('[MudBlazor | KeyInterceptor] onDomChanged: ', { self }); - var targetClass = self._options.targetClass; - for (const mutation of mutationsList) { - //self.logger('[MudBlazor | KeyInterceptor] Subtree mutation: ', { mutation }); - for (const element of mutation.addedNodes) { - if (element.classList && element.classList.contains(targetClass)) - self.attachHandlers(element); - } - for (const element of mutation.removedNodes) { - if (element.classList && element.classList.contains(targetClass)) - self.detachHandlers(element); - } - } - } - - matchesKeyCombination(option, args) { - if (!option || option=== "none") - return false; - if (option === "any") - return true; - var shift = args.shiftKey; - var ctrl = args.ctrlKey; - var alt = args.altKey; - var meta = args.metaKey; - var any = shift || ctrl || alt || meta; - if (any && option === "key+any") - return true; - if (!any && option.includes("key+none")) - return true; - if (!any) - return false; - var combi = `key${shift ? "+shift" : ""}${ctrl ? "+ctrl" : ""}${alt ? "+alt" : ""}${meta ? "+meta" : ""}`; - return option.includes(combi); - } - - onKeyDown(args) { - var self = this.mudKeyInterceptor; // func is invoked with this == child - var key = args.key.toLowerCase(); - self.logger('[MudBlazor | KeyInterceptor] down "' + key + '"', args); - var invoke = false; - if (self._keyOptions.hasOwnProperty(key)) { - var keyOptions = self._keyOptions[key]; - self.logger('[MudBlazor | KeyInterceptor] options for "' + key + '"', keyOptions); - self.processKeyDown(args, keyOptions); - if (keyOptions.subscribeDown) - invoke = true; - } - for (const keyOptions of self._regexOptions) { - if (keyOptions.regex.test(key)) { - self.logger('[MudBlazor | KeyInterceptor] regex options for "' + key + '"', keyOptions); - self.processKeyDown(args, keyOptions); - if (keyOptions.subscribeDown) - invoke = true; - } - } - if (invoke) { - var eventArgs = self.toKeyboardEventArgs(args); - eventArgs.Type = "keydown"; - // we'd like to pass a reference to the child element back to dotnet but we can't - // https://github.com/dotnet/aspnetcore/issues/16110 - // if we ever need it we'll pass the id up and users need to id the observed elements - self._dotNetRef.invokeMethodAsync('OnKeyDown', eventArgs); - } - } - - processKeyDown(args, keyOptions) { - if (this.matchesKeyCombination(keyOptions.preventDown, args)) - args.preventDefault(); - if (this.matchesKeyCombination(keyOptions.stopDown, args)) - args.stopPropagation(); - } - - onKeyUp(args) { - var self = this.mudKeyInterceptor; // func is invoked with this == child - var key = args.key.toLowerCase(); - self.logger('[MudBlazor | KeyInterceptor] up "' + key + '"', args); - var invoke = false; - if (self._keyOptions.hasOwnProperty(key)) { - var keyOptions = self._keyOptions[key]; - self.processKeyUp(args, keyOptions); - if (keyOptions.subscribeUp) - invoke = true; - } - for (const keyOptions of self._regexOptions) { - if (keyOptions.regex.test(key)) { - self.processKeyUp(args, keyOptions); - if (keyOptions.subscribeUp) - invoke = true; - } - } - if (invoke) { - var eventArgs = self.toKeyboardEventArgs(args); - eventArgs.Type = "keyup"; - // we'd like to pass a reference to the child element back to dotnet but we can't - // https://github.com/dotnet/aspnetcore/issues/16110 - // if we ever need it we'll pass the id up and users need to id the observed elements - self._dotNetRef.invokeMethodAsync('OnKeyUp', eventArgs); - } - } - - processKeyUp(args, keyOptions) { - if (this.matchesKeyCombination(keyOptions.preventUp, args)) - args.preventDefault(); - if (this.matchesKeyCombination(keyOptions.stopUp, args)) - args.stopPropagation(); - } - - toKeyboardEventArgs(args) { - return { - Key: args.key, - Code: args.code, - Location: args.location, - Repeat: args.repeat, - CtrlKey: args.ctrlKey, - ShiftKey: args.shiftKey, - AltKey: args.altKey, - MetaKey: args.metaKey - }; - } - -} - diff --git a/src/Connected.Components/TScripts/mudPopover.js b/src/Connected.Components/TScripts/mudPopover.js deleted file mode 100644 index f094e63..0000000 --- a/src/Connected.Components/TScripts/mudPopover.js +++ /dev/null @@ -1,494 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -window.mudpopoverHelper = { - - calculatePopoverPosition: function (list, boundingRect, selfRect) { - let top = 0; - let left = 0; - if (list.indexOf('mud-popover-anchor-top-left') >= 0) { - left = boundingRect.left; - top = boundingRect.top; - } else if (list.indexOf('mud-popover-anchor-top-center') >= 0) { - left = boundingRect.left + boundingRect.width / 2; - top = boundingRect.top; - } else if (list.indexOf('mud-popover-anchor-top-right') >= 0) { - left = boundingRect.left + boundingRect.width; - top = boundingRect.top; - - } else if (list.indexOf('mud-popover-anchor-center-left') >= 0) { - left = boundingRect.left; - top = boundingRect.top + boundingRect.height / 2; - } else if (list.indexOf('mud-popover-anchor-center-center') >= 0) { - left = boundingRect.left + boundingRect.width / 2; - top = boundingRect.top + boundingRect.height / 2; - } else if (list.indexOf('mud-popover-anchor-center-right') >= 0) { - left = boundingRect.left + boundingRect.width; - top = boundingRect.top + boundingRect.height / 2; - - } else if (list.indexOf('mud-popover-anchor-bottom-left') >= 0) { - left = boundingRect.left; - top = boundingRect.top + boundingRect.height; - } else if (list.indexOf('mud-popover-anchor-bottom-center') >= 0) { - left = boundingRect.left + boundingRect.width / 2; - top = boundingRect.top + boundingRect.height; - } else if (list.indexOf('mud-popover-anchor-bottom-right') >= 0) { - left = boundingRect.left + boundingRect.width; - top = boundingRect.top + boundingRect.height; - } - - let offsetX = 0; - let offsetY = 0; - - if (list.indexOf('mud-popover-top-left') >= 0) { - offsetX = 0; - offsetY = 0; - } else if (list.indexOf('mud-popover-top-center') >= 0) { - offsetX = -selfRect.width / 2; - offsetY = 0; - } else if (list.indexOf('mud-popover-top-right') >= 0) { - offsetX = -selfRect.width; - offsetY = 0; - } - - else if (list.indexOf('mud-popover-center-left') >= 0) { - offsetX = 0; - offsetY = -selfRect.height / 2; - } else if (list.indexOf('mud-popover-center-center') >= 0) { - offsetX = -selfRect.width / 2; - offsetY = -selfRect.height / 2; - } else if (list.indexOf('mud-popover-center-right') >= 0) { - offsetX = -selfRect.width; - offsetY = -selfRect.height / 2; - } - - else if (list.indexOf('mud-popover-bottom-left') >= 0) { - offsetX = 0; - offsetY = -selfRect.height; - } else if (list.indexOf('mud-popover-bottom-center') >= 0) { - offsetX = -selfRect.width / 2; - offsetY = -selfRect.height; - } else if (list.indexOf('mud-popover-bottom-right') >= 0) { - offsetX = -selfRect.width; - offsetY = -selfRect.height; - } - - return { - top: top, left: left, offsetX: offsetX, offsetY: offsetY - }; - }, - - flipClassReplacements: { - 'top': { - 'mud-popover-top-left': 'mud-popover-bottom-left', - 'mud-popover-top-center': 'mud-popover-bottom-center', - 'mud-popover-anchor-bottom-center': 'mud-popover-anchor-top-center', - 'mud-popover-top-right': 'mud-popover-bottom-right', - }, - 'left': { - 'mud-popover-top-left': 'mud-popover-top-right', - 'mud-popover-center-left': 'mud-popover-center-right', - 'mud-popover-anchor-center-right': 'mud-popover-anchor-center-left', - 'mud-popover-bottom-left': 'mud-popover-bottom-right', - }, - 'right': { - 'mud-popover-top-right': 'mud-popover-top-left', - 'mud-popover-center-right': 'mud-popover-center-left', - 'mud-popover-anchor-center-left': 'mud-popover-anchor-center-right', - 'mud-popover-bottom-right': 'mud-popover-bottom-left', - }, - 'bottom': { - 'mud-popover-bottom-left': 'mud-popover-top-left', - 'mud-popover-bottom-center': 'mud-popover-top-center', - 'mud-popover-anchor-top-center': 'mud-popover-anchor-bottom-center', - 'mud-popover-bottom-right': 'mud-popover-top-right', - }, - 'top-and-left': { - 'mud-popover-top-left': 'mud-popover-bottom-right', - }, - 'top-and-right': { - 'mud-popover-top-right': 'mud-popover-bottom-left', - }, - 'bottom-and-left': { - 'mud-popover-bottom-left': 'mud-popover-top-right', - }, - 'bottom-and-right': { - 'mud-popover-bottom-right': 'mud-popover-top-left', - }, - - }, - - flipMargin: 0, - - getPositionForFlippedPopver: function (inputArray, selector, boundingRect, selfRect) { - const classList = []; - for (var i = 0; i < inputArray.length; i++) { - const item = inputArray[i]; - const replacments = window.mudpopoverHelper.flipClassReplacements[selector][item]; - if (replacments) { - classList.push(replacments); - } - else { - classList.push(item); - } - } - - return window.mudpopoverHelper.calculatePopoverPosition(classList, boundingRect, selfRect); - }, - - placePopover: function (popoverNode, classSelector) { - - if (popoverNode && popoverNode.parentNode) { - const id = popoverNode.id.substr(8); - const popoverContentNode = document.getElementById('popovercontent-' + id); - if (popoverContentNode.classList.contains('mud-popover-open') == false) { - return; - } - - if (!popoverContentNode) { - return; - } - - if (classSelector) { - if (popoverContentNode.classList.contains(classSelector) == false) { - return; - } - } - const boundingRect = popoverNode.parentNode.getBoundingClientRect(); - - if (popoverContentNode.classList.contains('mud-popover-relative-width')) { - popoverContentNode.style['max-width'] = (boundingRect.width) + 'px'; - } - - const selfRect = popoverContentNode.getBoundingClientRect(); - const classList = popoverContentNode.classList; - const classListArray = Array.from(popoverContentNode.classList); - - const postion = window.mudpopoverHelper.calculatePopoverPosition(classListArray, boundingRect, selfRect); - let left = postion.left; - let top = postion.top; - let offsetX = postion.offsetX; - let offsetY = postion.offsetY; - - if (classList.contains('mud-popover-overflow-flip-onopen') || classList.contains('mud-popover-overflow-flip-always')) { - - const appBarElements = document.getElementsByClassName("appbar mud-appbar-fixed-top"); - let appBarOffset = 0; - if (appBarElements.length > 0) { - appBarOffset = appBarElements[0].getBoundingClientRect().height; - } - - const graceMargin = window.mudpopoverHelper.flipMargin; - const deltaToLeft = left + offsetX; - const deltaToRight = window.innerWidth - left - selfRect.width; - const deltaTop = top - selfRect.height - appBarOffset; - const spaceToTop = top - appBarOffset; - const deltaBottom = window.innerHeight - top - selfRect.height; - //console.log('self-width: ' + selfRect.width + ' | self-height: ' + selfRect.height); - //console.log('left: ' + deltaToLeft + ' | rigth:' + deltaToRight + ' | top: ' + deltaTop + ' | bottom: ' + deltaBottom + ' | spaceToTop: ' + spaceToTop); - - let selector = popoverContentNode.mudPopoverFliped; - - if (!selector) { - if (classList.contains('mud-popover-top-left')) { - if (deltaBottom < graceMargin && deltaToRight < graceMargin && spaceToTop >= selfRect.height && deltaToLeft >= selfRect.width) { - selector = 'top-and-left'; - } else if (deltaBottom < graceMargin && spaceToTop >= selfRect.height) { - selector = 'top'; - } else if (deltaToRight < graceMargin && deltaToLeft >= selfRect.width) { - selector = 'left'; - } - } else if (classList.contains('mud-popover-top-center')) { - if (deltaBottom < graceMargin && spaceToTop >= selfRect.height) { - selector = 'top'; - } - } else if (classList.contains('mud-popover-top-right')) { - if (deltaBottom < graceMargin && deltaToLeft < graceMargin && spaceToTop >= selfRect.height && deltaToRight >= selfRect.width) { - selector = 'top-and-right'; - } else if (deltaBottom < graceMargin && spaceToTop >= selfRect.height) { - selector = 'top'; - } else if (deltaToLeft < graceMargin && deltaToRight >= selfRect.width) { - selector = 'right'; - } - } - - else if (classList.contains('mud-popover-center-left')) { - if (deltaToRight < graceMargin && deltaToLeft >= selfRect.width) { - selector = 'left'; - } - } - else if (classList.contains('mud-popover-center-right')) { - if (deltaToLeft < graceMargin && deltaToRight >= selfRect.width) { - selector = 'right'; - } - } - else if (classList.contains('mud-popover-bottom-left')) { - if (deltaTop < graceMargin && deltaToRight < graceMargin && deltaBottom >= 0 && deltaToLeft >= selfRect.width) { - selector = 'bottom-and-left'; - } else if (deltaTop < graceMargin && deltaBottom >= 0) { - selector = 'bottom'; - } else if (deltaToRight < graceMargin && deltaToLeft >= selfRect.width) { - selector = 'left'; - } - } else if (classList.contains('mud-popover-bottom-center')) { - if (deltaTop < graceMargin && deltaBottom >= 0) { - selector = 'bottom'; - } - } else if (classList.contains('mud-popover-bottom-right')) { - if (deltaTop < graceMargin && deltaToLeft < graceMargin && deltaBottom >= 0 && deltaToRight >= selfRect.width) { - selector = 'bottom-and-right'; - } else if (deltaTop < graceMargin && deltaBottom >= 0) { - selector = 'bottom'; - } else if (deltaToLeft < graceMargin && deltaToRight >= selfRect.width) { - selector = 'right'; - } - } - } - - if (selector && selector != 'none') { - const newPosition = window.mudpopoverHelper.getPositionForFlippedPopver(classListArray, selector, boundingRect, selfRect); - left = newPosition.left; - top = newPosition.top; - offsetX = newPosition.offsetX; - offsetY = newPosition.offsetY; - - popoverContentNode.setAttribute('data-mudpopover-flip', 'flipped'); - } - else { - popoverContentNode.removeAttribute('data-mudpopover-flip'); - } - - if (classList.contains('mud-popover-overflow-flip-onopen')) { - if (!popoverContentNode.mudPopoverFliped) { - popoverContentNode.mudPopoverFliped = selector || 'none'; - } - } - } - - if (popoverContentNode.classList.contains('mud-popover-fixed')) { - } - else if (window.getComputedStyle(popoverNode).position == 'fixed') { - popoverContentNode.style['position'] = 'fixed'; - } - else { - offsetX += window.scrollX; - offsetY += window.scrollY - } - - popoverContentNode.style['left'] = (left + offsetX) + 'px'; - popoverContentNode.style['top'] = (top + offsetY) + 'px'; - - if (window.getComputedStyle(popoverNode).getPropertyValue('z-index') != 'auto') { - popoverContentNode.style['z-index'] = window.getComputedStyle(popoverNode).getPropertyValue('z-index'); - popoverContentNode.skipZIndex = true; - } - } - }, - - placePopoverByClassSelector: function (classSelector = null) { - var items = window.mudPopover.getAllObservedContainers(); - - for (let i = 0; i < items.length; i++) { - const popoverNode = document.getElementById('popover-' + items[i]); - window.mudpopoverHelper.placePopover(popoverNode, classSelector); - } - }, - - placePopoverByNode: function (target) { - const id = target.id.substr(15); - const popoverNode = document.getElementById('popover-' + id); - window.mudpopoverHelper.placePopover(popoverNode); - }, - - countProviders: function () { - return document.querySelectorAll(".mud-popover-provider").length; - } -} - -class MudPopover { - - constructor() { - this.map = {}; - this.contentObserver = null; - this.mainContainerClass = null; - } - - callback(id, mutationsList, observer) { - for (const mutation of mutationsList) { - if (mutation.type === 'attributes') { - const target = mutation.target - if (mutation.attributeName == 'class') { - if (target.classList.contains('mud-popover-overflow-flip-onopen') && - target.classList.contains('mud-popover-open') == false) { - target.mudPopoverFliped = null; - target.removeAttribute('data-mudpopover-flip'); - } - - window.mudpopoverHelper.placePopoverByNode(target); - } - else if (mutation.attributeName == 'data-ticks') { - const tickAttribute = target.getAttribute('data-ticks'); - - const parent = target.parentElement; - const tickValues = []; - let max = -1; - for (let i = 0; i < parent.children.length; i++) { - const childNode = parent.children[i]; - const tickValue = parseInt(childNode.getAttribute('data-ticks')); - if (tickValue == 0) { - continue; - } - - if (tickValues.indexOf(tickValue) >= 0) { - continue; - } - - tickValues.push(tickValue); - - if (tickValue > max) { - max = tickValue; - } - } - - if (tickValues.length == 0) { - continue; - } - - const sortedTickValues = tickValues.sort((x, y) => x - y); - - for (let i = 0; i < parent.children.length; i++) { - const childNode = parent.children[i]; - const tickValue = parseInt(childNode.getAttribute('data-ticks')); - if (tickValue == 0) { - continue; - } - - if (childNode.skipZIndex == true) { - continue; - } - - childNode.style['z-index'] = 'calc(var(--mud-zindex-popover) + ' + (sortedTickValues.indexOf(tickValue) + 3).toString() + ')'; - } - } - } - } - } - - initialize(containerClass, flipMargin) { - const mainContent = document.getElementsByClassName(containerClass); - if (mainContent.length == 0) { - return; - } - - if (flipMargin) { - window.mudpopoverHelper.flipMargin = flipMargin; - } - - this.mainContainerClass = containerClass; - - if (!mainContent[0].mudPopoverMark) { - mainContent[0].mudPopoverMark = "mudded"; - if (this.contentObserver != null) { - this.contentObserver.disconnect(); - this.contentObserver = null; - } - - this.contentObserver = new ResizeObserver(entries => { - window.mudpopoverHelper.placePopoverByClassSelector(); - }); - - this.contentObserver.observe(mainContent[0]); - } - } - - connect(id) { - this.initialize(this.mainContainerClass); - - const popoverNode = document.getElementById('popover-' + id); - const popoverContentNode = document.getElementById('popovercontent-' + id); - if (popoverNode && popoverNode.parentNode && popoverContentNode) { - - window.mudpopoverHelper.placePopover(popoverNode); - - const config = { attributeFilter: ['class', 'data-ticks'] }; - - const observer = new MutationObserver(this.callback.bind(this, id)); - - observer.observe(popoverContentNode, config); - - const resizeObserver = new ResizeObserver(entries => { - for (let entry of entries) { - const target = entry.target; - - for (var i = 0; i < target.childNodes.length; i++) { - const childNode = target.childNodes[i]; - if (childNode.id && childNode.id.startsWith('popover-')) { - window.mudpopoverHelper.placePopover(childNode); - } - } - } - }); - - resizeObserver.observe(popoverNode.parentNode); - - const contentNodeObserver = new ResizeObserver(entries => { - for (let entry of entries) { - var target = entry.target; - window.mudpopoverHelper.placePopoverByNode(target); - - - } - }); - - contentNodeObserver.observe(popoverContentNode); - - this.map[id] = { - mutationObserver: observer, - resizeObserver: resizeObserver, - contentNodeObserver: contentNodeObserver - }; - } - } - - disconnect(id) { - if (this.map[id]) { - - const item = this.map[id] - item.mutationObserver.disconnect(); - item.resizeObserver.disconnect(); - item.contentNodeObserver.disconnect(); - - delete this.map[id]; - } - } - - dispose() { - for (var i in this.map) { - disconnect(i); - } - - this.contentObserver.disconnect(); - this.contentObserver = null; - } - - getAllObservedContainers() { - const result = []; - for (var i in this.map) { - result.push(i); - } - - return result; - } -} - -window.mudPopover = new MudPopover(); - -window.addEventListener('scroll', () => { - window.mudpopoverHelper.placePopoverByClassSelector('mud-popover-fixed'); - window.mudpopoverHelper.placePopoverByClassSelector('mud-popover-overflow-flip-always'); -}); - -window.addEventListener('resize', () => { - window.mudpopoverHelper.placePopoverByClassSelector(); -}); \ No newline at end of file diff --git a/src/Connected.Components/TScripts/mudResizeListener.js b/src/Connected.Components/TScripts/mudResizeListener.js deleted file mode 100644 index 1506de9..0000000 --- a/src/Connected.Components/TScripts/mudResizeListener.js +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -class MudResizeListener { - - constructor(id) { - this.logger = function (message) { }; - this.options = {}; - this.throttleResizeHandlerId = -1; - this.dotnet = undefined; - this.breakpoint = -1; - this.id = id; - } - - listenForResize(dotnetRef, options) { - if (this.dotnet) { - this.options = options; - return; - } - //this.logger("[MudBlazor] listenForResize:", { options, dotnetRef }); - this.options = options; - this.dotnet = dotnetRef; - this.logger = options.enableLogging ? console.log : (message) => { }; - this.logger(`[MudBlazor] Reporting resize events at rate of: ${(this.options || {}).reportRate || 100}ms`); - window.addEventListener("resize", this.throttleResizeHandler.bind(this), false); - if (!this.options.suppressInitEvent) { - this.resizeHandler(); - } - this.breakpoint = this.getBreakpoint(window.innerWidth); - } - - throttleResizeHandler() { - clearTimeout(this.throttleResizeHandlerId); - //console.log("[MudBlazor] throttleResizeHandler ", {options:this.options}); - this.throttleResizeHandlerId = window.setTimeout(this.resizeHandler.bind(this), ((this.options || {}).reportRate || 100)); - } - - resizeHandler() { - if (this.options.notifyOnBreakpointOnly) { - let bp = this.getBreakpoint(window.innerWidth); - if (bp == this.breakpoint) { - return; - } - this.breakpoint = bp; - } - - try { - //console.log("[MudBlazor] RaiseOnResized invoked"); - if (this.id) { - this.dotnet.invokeMethodAsync('RaiseOnResized', - { - height: window.innerHeight, - width: window.innerWidth - }, - this.getBreakpoint(window.innerWidth), - this.id); - } - else { - this.dotnet.invokeMethodAsync('RaiseOnResized', - { - height: window.innerHeight, - width: window.innerWidth - }, - this.getBreakpoint(window.innerWidth)); - } - - //this.logger("[MudBlazor] RaiseOnResized invoked"); - } catch (error) { - this.logger("[MudBlazor] Error in resizeHandler:", { error }); - } - } - - cancelListener() { - this.dotnet = undefined; - //console.log("[MudBlazor] cancelListener"); - window.removeEventListener("resize", this.throttleResizeHandler); - } - - matchMedia(query) { - let m = window.matchMedia(query).matches; - //this.logger(`[MudBlazor] matchMedia "${query}": ${m}`); - return m; - } - - getBrowserWindowSize() { - //this.logger("[MudBlazor] getBrowserWindowSize"); - return { - height: window.innerHeight, - width: window.innerWidth - }; - } - - getBreakpoint(width) { - if (width >= this.options.breakpointDefinitions["Xl"]) - return 4; - else if (width >= this.options.breakpointDefinitions["Lg"]) - return 3; - else if (width >= this.options.breakpointDefinitions["Md"]) - return 2; - else if (width >= this.options.breakpointDefinitions["Sm"]) - return 1; - else //Xs - return 0; - } -}; - -window.mudResizeListener = new MudResizeListener(); -window.mudResizeListenerFactory = { - mapping: {}, - listenForResize: (dotnetRef, options, id) => { - var map = window.mudResizeListenerFactory.mapping; - if (map[id]) { - return; - } - - var listener = new MudResizeListener(id); - listener.listenForResize(dotnetRef, options); - map[id] = listener; - }, - - cancelListener: (id) => { - var map = window.mudResizeListenerFactory.mapping; - - if (!map[id]) { - return; - } - - var listener = map[id]; - listener.cancelListener(); - delete map[id]; - }, - - cancelListeners: (ids) => { - for (let i = 0; i < ids.length; i++) { - window.mudResizeListenerFactory.cancelListener(ids[i]); - } - } -} diff --git a/src/Connected.Components/TScripts/mudResizeObserver.js b/src/Connected.Components/TScripts/mudResizeObserver.js deleted file mode 100644 index a2d0d63..0000000 --- a/src/Connected.Components/TScripts/mudResizeObserver.js +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -class MudResizeObserverFactory { - constructor() { - this._maps = {}; - } - - connect(id, dotNetRef, elements, elementIds, options) { - var existingEntry = this._maps[id]; - if (!existingEntry) { - var observer = new MudResizeObserver(dotNetRef, options); - this._maps[id] = observer; - } - - var result = this._maps[id].connect(elements, elementIds); - return result; - } - - disconnect(id, element) { - //I can't think about a case, where this can be called, without observe has been called before - //however, a check is not harmful either - var existingEntry = this._maps[id]; - if (existingEntry) { - existingEntry.disconnect(element); - } - } - - cancelListener(id) { - //cancelListener is called during dispose of .net instance - //in rare cases it could be possible, that no object has been connect so far - //and no entry exists. Therefore, a little check to prevent an error in this case - var existingEntry = this._maps[id]; - if (existingEntry) { - existingEntry.cancelListener(); - delete this._maps[id]; - } - } -} - -class MudResizeObserver { - - constructor(dotNetRef, options) { - this.logger = options.enableLogging ? console.log : (message) => { }; - this.options = options; - this._dotNetRef = dotNetRef - - var delay = (this.options || {}).reportRate || 200; - - this.throttleResizeHandlerId = -1; - - var observervedElements = []; - this._observervedElements = observervedElements; - - this.logger('[MudBlazor | ResizeObserver] Observer initialized'); - - this._resizeObserver = new ResizeObserver(entries => { - var changes = []; - this.logger('[MudBlazor | ResizeObserver] changes detected'); - for (let entry of entries) { - var target = entry.target; - var affectedObservedElement = observervedElements.find((x) => x.element == target); - if (affectedObservedElement) { - - var size = entry.target.getBoundingClientRect(); - if (affectedObservedElement.isInitialized == true) { - - changes.push({ id: affectedObservedElement.id, size: size }); - } - else { - affectedObservedElement.isInitialized = true; - } - } - } - - if (changes.length > 0) { - if (this.throttleResizeHandlerId >= 0) { - clearTimeout(this.throttleResizeHandlerId); - } - - this.throttleResizeHandlerId = window.setTimeout(this.resizeHandler.bind(this, changes), delay); - - } - }); - } - - resizeHandler(changes) { - try { - this.logger("[MudBlazor | ResizeObserver] OnSizeChanged handler invoked"); - this._dotNetRef.invokeMethodAsync("OnSizeChanged", changes); - } catch (error) { - this.logger("[MudBlazor | ResizeObserver] Error in OnSizeChanged handler:", { error }); - } - } - - connect(elements, ids) { - var result = []; - this.logger('[MudBlazor | ResizeObserver] Start observing elements...'); - - for (var i = 0; i < elements.length; i++) { - var newEntry = { - element: elements[i], - id: ids[i], - isInitialized: false, - }; - - this.logger("[MudBlazor | ResizeObserver] Start observing element:", { newEntry }); - - result.push(elements[i].getBoundingClientRect()); - - this._observervedElements.push(newEntry); - this._resizeObserver.observe(elements[i]); - } - - return result; - } - - disconnect(elementId) { - this.logger('[MudBlazor | ResizeObserver] Try to unobserve element with id', { elementId }); - - var affectedObservedElement = this._observervedElements.find((x) => x.id == elementId); - if (affectedObservedElement) { - - var element = affectedObservedElement.element; - this._resizeObserver.unobserve(element); - this.logger('[MudBlazor | ResizeObserver] Element found. Ubobserving size changes of element', { element }); - - var index = this._observervedElements.indexOf(affectedObservedElement); - this._observervedElements.splice(index, 1); - } - } - - cancelListener() { - this.logger('[MudBlazor | ResizeObserver] Closing ResizeObserver. Detaching all observed elements'); - - this._resizeObserver.disconnect(); - this._dotNetRef = undefined; - } -} - - -window.mudResizeObserver = new MudResizeObserverFactory(); \ No newline at end of file diff --git a/src/Connected.Components/TScripts/mudScrollListener.js b/src/Connected.Components/TScripts/mudScrollListener.js deleted file mode 100644 index 609a115..0000000 --- a/src/Connected.Components/TScripts/mudScrollListener.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -//Functions related to scroll events -class MudScrollListener { - - constructor() { - this.throttleScrollHandlerId = -1; - //needed as variable to remove the event listeners - this.handlerRef = null; - } - - // subscribe to throttled scroll event - listenForScroll(dotnetReference, selector) { - //if selector is null, attach to document - let element = selector - ? document.querySelector(selector) - : document; - - this.handlerRef = this.throttleScrollHandler.bind(this, dotnetReference); - // add the event listener - element.addEventListener( - 'scroll', - this.handlerRef, - false - ); - } - - // fire the event just once each 100 ms, **it's hardcoded** - throttleScrollHandler(dotnetReference, event) { - clearTimeout(this.throttleScrollHandlerId); - - this.throttleScrollHandlerId = window.setTimeout( - this.scrollHandler.bind(this, dotnetReference, event), - 100 - ); - } - - // when scroll event is fired, pass this information to - // the RaiseOnScroll C# method of the ScrollListener - // We pass the scroll coordinates of the element and - // the boundingClientRect of the first child, because - // scrollTop of body is always 0. With this information, - // we can trigger C# events on different scroll situations - scrollHandler(dotnetReference, event) { - try { - let element = event.target; - - //data to pass - let scrollTop = element.scrollTop; - let scrollHeight = element.scrollHeight; - let scrollWidth = element.scrollWidth; - let scrollLeft = element.scrollLeft; - let nodeName = element.nodeName; - - //data to pass - let firstChild = element.firstElementChild; - let firstChildBoundingClientRect = firstChild.getBoundingClientRect(); - //invoke C# method - dotnetReference.invokeMethodAsync('RaiseOnScroll', { - firstChildBoundingClientRect, - scrollLeft, - scrollTop, - scrollHeight, - scrollWidth, - nodeName, - }); - } catch (error) { - console.log('[MudBlazor] Error in scrollHandler:', { error }); - } - } - - //remove event listener - cancelListener(selector) { - let element = selector - ? document.querySelector(selector) - : document; - - element.removeEventListener('scroll', this.handlerRef); - } -}; -window.mudScrollListener = new MudScrollListener(); \ No newline at end of file diff --git a/src/Connected.Components/TScripts/mudScrollManager.js b/src/Connected.Components/TScripts/mudScrollManager.js deleted file mode 100644 index 991d727..0000000 --- a/src/Connected.Components/TScripts/mudScrollManager.js +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -class MudScrollManager { - //scrolls to year in MudDatePicker - scrollToYear(elementId, offset) { - let element = document.getElementById(elementId); - - if (element) { - element.parentNode.scrollTop = element.offsetTop - element.parentNode.offsetTop - element.scrollHeight * 3; - } - } - - // sets the scroll position of the elements container, - // to the position of the element with the given element id - scrollToListItem(elementId) { - let element = document.getElementById(elementId); - if (element) { - let parent = element.parentElement; - if (parent) { - parent.scrollTop = element.offsetTop; - } - } - } - - //scrolls to the selected element. Default is documentElement (i.e., html element) - scrollTo(selector, left, top, behavior) { - let element = document.querySelector(selector) || document.documentElement; - element.scrollTo({ left, top, behavior }); - } - - //scrolls the provided selector into view - scrollIntoView(selector, behavior) { - let element = document.querySelector(selector) || document.documentElement; - if (element) - element.scrollIntoView({ behavior, block: 'center', inline: 'start' }); - } - - scrollToBottom(selector, behavior) { - let element = document.querySelector(selector); - if (element) - element.scrollTop = element.scrollHeight; - else - window.scrollTo(0, document.body.scrollHeight); - } - - //locks the scroll of the selected element. Default is body - lockScroll(selector, lockclass) { - let element = document.querySelector(selector) || document.body; - - //if the body doesn't have a scroll bar, don't add the lock class - let hasScrollBar = window.innerWidth > document.body.clientWidth; - if (hasScrollBar) { - element.classList.add(lockclass); - } - } - - //unlocks the scroll. Default is body - unlockScroll(selector, lockclass) { - let element = document.querySelector(selector) || document.body; - element.classList.remove(lockclass); - } -}; -window.mudScrollManager = new MudScrollManager(); \ No newline at end of file diff --git a/src/Connected.Components/TScripts/mudScrollSpy.js b/src/Connected.Components/TScripts/mudScrollSpy.js deleted file mode 100644 index 3e11637..0000000 --- a/src/Connected.Components/TScripts/mudScrollSpy.js +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -//Functions related to the scroll spy -class MudScrollSpy { - - constructor() { - this.scrollToSectionRequested = null; - this.lastKnowElement = null; - //needed as variable to remove the event listeners - this.handlerRef = null; - } - - // subscribe to relevant events - spying(dotnetReference, selector) { - this.scrollToSectionRequested = null; - this.lastKnowElement = null; - - this.handlerRef = this.handleScroll.bind(this, selector, dotnetReference); - - // add the event for scroll. In case of zooming this event is also fired - document.addEventListener('scroll', this.handlerRef, true); - - // a window resize could change the size of the relevant viewport - window.addEventListener('resize', this.handlerRef, true); - } - - // handle the document scroll event and if needed, fires the .NET event - handleScroll(dotnetReference, selector, event) { - - const elements = document.getElementsByClassName(selector); - if (elements.length === 0) { - return; - } - - const center = window.innerHeight / 2.0; - - let minDifference = Number.MAX_SAFE_INTEGER; - let elementId = ''; - for (let i = 0; i < elements.length; i++) { - const element = elements[i]; - - const rect = element.getBoundingClientRect(); - - const diff = Math.abs(rect.top - center); - - if (diff < minDifference) { - minDifference = diff; - elementId = element.id; - } - } - - if (document.getElementById(elementId).getBoundingClientRect().top < window.innerHeight * 0.8 === false) { - return; - } - - if (this.scrollToSectionRequested != null) { - if (this.scrollToSectionRequested == ' ' && window.scrollY == 0) { - this.scrollToSectionRequested = null; - } - else { - if (elementId === this.scrollToSectionRequested) { - this.scrollToSectionRequested = null; - } - } - - return; - } - - if (elementId != this.lastKnowElement) { - this.lastKnowElement = elementId; - history.replaceState(null, '', window.location.pathname + "#" + elementId); - dotnetReference.invokeMethodAsync('SectionChangeOccured', elementId); - } - } - - activateSection(sectionId) { - const element = document.getElementById(sectionId); - if (element) { - this.lastKnowElement = sectionId; - history.replaceState(null, '', window.location.pathname + "#" + sectionId); - } - } - - scrollToSection(sectionId) { - if (sectionId) { - let element = document.getElementById(sectionId); - if (element) { - this.scrollToSectionRequested = sectionId; - - element.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'start' }); - } - } - else { - window.scrollTo({ top: 0, behavior: 'smooth' }); - - this.scrollToSectionRequested = ' '; - } - } - - //remove event listeners - unspy() { - document.removeEventListener('scroll', this.handlerRef, true); - window.removeEventListener('resize', this.handlerRef, true); - } -}; - -window.mudScrollSpy = new MudScrollSpy(); diff --git a/src/Connected.Components/TScripts/mudThemeProvider.js b/src/Connected.Components/TScripts/mudThemeProvider.js deleted file mode 100644 index 4119ad7..0000000 --- a/src/Connected.Components/TScripts/mudThemeProvider.js +++ /dev/null @@ -1,5 +0,0 @@ -const darkThemeMediaQuery = window.matchMedia("(prefers-color-scheme: dark)"); - -window.darkModeChange = (dotNetHelper) => { - return darkThemeMediaQuery.matches; -}; \ No newline at end of file diff --git a/src/Connected.Components/TScripts/mudWindow.js b/src/Connected.Components/TScripts/mudWindow.js deleted file mode 100644 index f9db489..0000000 --- a/src/Connected.Components/TScripts/mudWindow.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -class MudWindow { - copyToClipboard (text) { - navigator.clipboard.writeText(text); - } - - changeCssById (id, css) { - var element = document.getElementById(id); - if (element) { - element.className = css; - } - } - - changeGlobalCssVariable (name, newValue) { - document.documentElement.style.setProperty(name, newValue); - } - - // Needed as per https://stackoverflow.com/questions/62769031/how-can-i-open-a-new-window-without-using-js - open (args) { - window.open(args); - } -}; -window.mudWindow = new MudWindow(); \ No newline at end of file diff --git a/src/Connected.Components/Themes/Models/Breakpoints.cs b/src/Connected.Components/Themes/Models/Breakpoints.cs deleted file mode 100644 index 74f20f5..0000000 --- a/src/Connected.Components/Themes/Models/Breakpoints.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Diagnostics.CodeAnalysis; - -namespace Connected -{ -#pragma warning disable IDE1006 // must being with upper case - [ExcludeFromCodeCoverage] - public class Breakpoints - { - public string xs { get; set; } = "0px"; - public string sm { get; set; } = "600px"; - public string md { get; set; } = "960px"; - public string lg { get; set; } = "1280px"; - public string xl { get; set; } = "1920px"; - public string xxl { get; set; } = "2560px"; - } -} diff --git a/src/Connected.Components/Themes/Models/LayoutProperties.cs b/src/Connected.Components/Themes/Models/LayoutProperties.cs deleted file mode 100644 index d1a7d5c..0000000 --- a/src/Connected.Components/Themes/Models/LayoutProperties.cs +++ /dev/null @@ -1,21 +0,0 @@ - -using System; - -namespace Connected -{ - public class LayoutProperties - { - public string DefaultBorderRadius { get; set; } = "4px"; - [Obsolete("DrawerWidth has been removed.", true)] - public string DrawerWidth { get; set; } = null; - public string DrawerMiniWidthLeft { get; set; } = "56px"; - public string DrawerMiniWidthRight { get; set; } = "56px"; - public string DrawerWidthLeft { get; set; } = "240px"; - public string DrawerWidthRight { get; set; } = "240px"; - public string DrawerHeightTop { get; set; } = "320px"; - public string DrawerHeightBottom { get; set; } = "320px"; - [Obsolete("AppbarMinHeight has been removed.", true)] - public string AppbarMinHeight { get; set; } = null; - public string AppbarHeight { get; set; } = "64px"; - } -} diff --git a/src/Connected.Components/Themes/Models/Palette.cs b/src/Connected.Components/Themes/Models/Palette.cs deleted file mode 100644 index ddc4a00..0000000 --- a/src/Connected.Components/Themes/Models/Palette.cs +++ /dev/null @@ -1,156 +0,0 @@ -using Connected.Utilities; -using C = Connected.Colors; -using Clr = Connected.Utilities.Color; -namespace Connected; - -public class Palette -{ - private Clr _primaryDarken = null; - private Clr _primaryLighten = null; - private Clr _secondaryDarken = null; - private Clr _secondaryLighten = null; - private Clr _tertiaryDarken = null; - private Clr _tertiaryLighten = null; - private Clr _infoDarken = null; - private Clr _infoLighten = null; - private Clr _successDarken = null; - private Clr _successLighten = null; - private Clr _warningDarken = null; - private Clr _warningLighten = null; - private Clr _errorDarken = null; - private Clr _errorLighten = null; - private Clr _darkDarken = null; - private Clr _darkLighten = null; - - public virtual Clr Black { get; set; } = "#272c34"; - public Clr White { get; set; } = C.Shades.White; - public virtual Clr Primary { get; set; } = "#594AE2"; - public Clr PrimaryContrastText { get; set; } = C.Shades.White; - public Clr Secondary { get; set; } = C.Pink.Accent2; - public Clr SecondaryContrastText { get; set; } = C.Shades.White; - public Clr Tertiary { get; set; } = "#1EC8A5"; - public Clr TertiaryContrastText { get; set; } = C.Shades.White; - public virtual Clr Info { get; set; } = C.Blue.Default; - public Clr InfoContrastText { get; set; } = C.Shades.White; - public virtual Clr Success { get; set; } = C.Green.Accent4; - public Clr SuccessContrastText { get; set; } = C.Shades.White; - public virtual Clr Warning { get; set; } = C.Orange.Default; - public Clr WarningContrastText { get; set; } = C.Shades.White; - public virtual Clr Error { get; set; } = C.Red.Default; - public Clr ErrorContrastText { get; set; } = C.Shades.White; - public virtual Clr Dark { get; set; } = C.Grey.Darken3; - public Clr DarkContrastText { get; set; } = C.Shades.White; - public virtual Clr TextPrimary { get; set; } = C.Grey.Darken3; - public virtual Clr TextSecondary { get; set; } = new Clr(C.Shades.Black).SetAlpha(0.54).ToString(ColorOutputFormats.RGBA); - public virtual Clr TextDisabled { get; set; } = new Clr(C.Shades.Black).SetAlpha(0.38).ToString(ColorOutputFormats.RGBA); - public virtual Clr ActionDefault { get; set; } = new Clr(C.Shades.Black).SetAlpha(0.54).ToString(ColorOutputFormats.RGBA); - public virtual Clr ActionDisabled { get; set; } = new Clr(C.Shades.Black).SetAlpha(0.26).ToString(ColorOutputFormats.RGBA); - public virtual Clr ActionDisabledBackground { get; set; } = new Clr(C.Shades.Black).SetAlpha(0.12).ToString(ColorOutputFormats.RGBA); - public virtual Clr Background { get; set; } = C.Shades.White; - public virtual Clr BackgroundGrey { get; set; } = C.Grey.Lighten4; - public virtual Clr Surface { get; set; } = C.Shades.White; - public virtual Clr DrawerBackground { get; set; } = C.Shades.White; - public virtual Clr DrawerText { get; set; } = C.Grey.Darken3; - public virtual Clr DrawerIcon { get; set; } = C.Grey.Darken2; - public virtual Clr AppbarBackground { get; set; } = "#594AE2"; - public virtual Clr AppbarText { get; set; } = C.Shades.White; - public virtual Clr LinesDefault { get; set; } = new Clr(C.Shades.Black).SetAlpha(0.12).ToString(ColorOutputFormats.RGBA); - public virtual Clr LinesInputs { get; set; } = C.Grey.Lighten1; - public virtual Clr TableLines { get; set; } = new Clr(C.Grey.Lighten2).SetAlpha(1.0).ToString(ColorOutputFormats.RGBA); - public virtual Clr TableStriped { get; set; } = new Clr(C.Shades.Black).SetAlpha(0.02).ToString(ColorOutputFormats.RGBA); - public Clr TableHover { get; set; } = new Clr(C.Shades.Black).SetAlpha(0.04).ToString(ColorOutputFormats.RGBA); - public virtual Clr Divider { get; set; } = C.Grey.Lighten2; - public virtual Clr DividerLight { get; set; } = new Clr(C.Shades.Black).SetAlpha(0.8).ToString(ColorOutputFormats.RGBA); - - public string PrimaryDarken - { - get => (_primaryDarken ??= Primary.ColorRgbDarken()).ToString(ColorOutputFormats.RGB); - set => _primaryDarken = value; - } - public string PrimaryLighten - { - get => (_primaryLighten ??= Primary.ColorRgbLighten()).ToString(ColorOutputFormats.RGB); - set => _primaryLighten = value; - } - public string SecondaryDarken - { - get => (_secondaryDarken ??= Secondary.ColorRgbDarken()).ToString(ColorOutputFormats.RGB); - set => _secondaryDarken = value; - } - public string SecondaryLighten - { - get => (_secondaryLighten ??= Secondary.ColorRgbLighten()).ToString(ColorOutputFormats.RGB); - set => _secondaryLighten = value; - } - public string TertiaryDarken - { - get => (_tertiaryDarken ??= Tertiary.ColorRgbDarken()).ToString(ColorOutputFormats.RGB); - set => _tertiaryDarken = value; - } - public string TertiaryLighten - { - get => (_tertiaryLighten ??= Tertiary.ColorRgbLighten()).ToString(ColorOutputFormats.RGB); - set => _tertiaryLighten = value; - } - public string InfoDarken - { - get => (_infoDarken ??= Info.ColorRgbDarken()).ToString(ColorOutputFormats.RGB); - set => _infoDarken = value; - } - public string InfoLighten - { - get => (_infoLighten ??= Info.ColorRgbLighten()).ToString(ColorOutputFormats.RGB); - set => _infoLighten = value; - } - public string SuccessDarken - { - get => (_successDarken ??= Success.ColorRgbDarken()).ToString(ColorOutputFormats.RGB); - set => _successDarken = value; - } - public string SuccessLighten - { - get => (_successLighten ??= Success.ColorRgbLighten()).ToString(ColorOutputFormats.RGB); - set => _successLighten = value; - } - public string WarningDarken - { - get => (_warningDarken ??= Warning.ColorRgbDarken()).ToString(ColorOutputFormats.RGB); - set => _warningDarken = value; - } - public string WarningLighten - { - get => (_warningLighten ??= Warning.ColorRgbLighten()).ToString(ColorOutputFormats.RGB); - set => _warningLighten = value; - } - public string ErrorDarken - { - get => (_errorDarken ??= Error.ColorRgbDarken()).ToString(ColorOutputFormats.RGB); - set => _errorDarken = value; - } - public string ErrorLighten - { - get => (_errorLighten ??= Error.ColorRgbLighten()).ToString(ColorOutputFormats.RGB); - set => _errorLighten = value; - } - public string DarkDarken - { - get => (_darkDarken ??= Dark.ColorRgbDarken()).ToString(ColorOutputFormats.RGB); - set => _darkDarken = value; - } - public string DarkLighten - { - get => (_darkLighten ??= Dark.ColorRgbLighten()).ToString(ColorOutputFormats.RGB); - set => _darkLighten = value; - } - - public double HoverOpacity { get; set; } = 0.06; - - public string GrayDefault { get; set; } = C.Grey.Default; - public string GrayLight { get; set; } = C.Grey.Lighten1; - public string GrayLighter { get; set; } = C.Grey.Lighten2; - public string GrayDark { get; set; } = C.Grey.Darken1; - public string GrayDarker { get; set; } = C.Grey.Darken2; - - public string OverlayDark { get; set; } = new Clr("#212121").SetAlpha(0.5).ToString(ColorOutputFormats.RGBA); - public string OverlayLight { get; set; } = new Clr(C.Shades.White).SetAlpha(0.5).ToString(ColorOutputFormats.RGBA); -} diff --git a/src/Connected.Components/Themes/Models/PaletteDark.cs b/src/Connected.Components/Themes/Models/PaletteDark.cs deleted file mode 100644 index 823d645..0000000 --- a/src/Connected.Components/Themes/Models/PaletteDark.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Connected.Utilities; - -namespace Connected; - -public class PaletteDark : Palette -{ - public override Color Black { get; set; } = "#27272f"; - public override Color Primary { get; set; } = "#776be7"; - public override Color Info { get; set; } = "#3299ff"; - public override Color Success { get; set; } = "#0bba83"; - public override Color Warning { get; set; } = "#ffa800"; - public override Color Error { get; set; } = "#f64e62"; - public override Color Dark { get; set; } = "#27272f"; - public override Color TextPrimary { get; set; } = "rgba(255,255,255, 0.70)"; - public override Color TextSecondary { get; set; } = "rgba(255,255,255, 0.50)"; - public override Color TextDisabled { get; set; } = "rgba(255,255,255, 0.2)"; - public override Color ActionDefault { get; set; } = "#adadb1"; - public override Color ActionDisabled { get; set; } = "rgba(255,255,255, 0.26)"; - public override Color ActionDisabledBackground { get; set; } = "rgba(255,255,255, 0.12)"; - public override Color Background { get; set; } = "#32333d"; - public override Color BackgroundGrey { get; set; } = "#27272f"; - public override Color Surface { get; set; } = "#373740"; - public override Color DrawerBackground { get; set; } = "#27272f"; - public override Color DrawerText { get; set; } = "rgba(255,255,255, 0.50)"; - public override Color DrawerIcon { get; set; } = "rgba(255,255,255, 0.50)"; - public override Color AppbarBackground { get; set; } = "#27272f"; - public override Color AppbarText { get; set; } = "rgba(255,255,255, 0.70)"; - public override Color LinesDefault { get; set; } = "rgba(255,255,255, 0.12)"; - public override Color LinesInputs { get; set; } = "rgba(255,255,255, 0.3)"; - public override Color TableLines { get; set; } = "rgba(255,255,255, 0.12)"; - public override Color TableStriped { get; set; } = "rgba(255,255,255, 0.2)"; - public override Color Divider { get; set; } = "rgba(255,255,255, 0.12)"; - public override Color DividerLight { get; set; } = "rgba(255,255,255, 0.06)"; -} diff --git a/src/Connected.Components/Themes/Models/Shadow.cs b/src/Connected.Components/Themes/Models/Shadow.cs deleted file mode 100644 index 5967b28..0000000 --- a/src/Connected.Components/Themes/Models/Shadow.cs +++ /dev/null @@ -1,36 +0,0 @@ - -namespace Connected -{ - public class Shadow - { - public string[] Elevation { get; set; } = - { - "none", - "0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12)", - "0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)", - "0px 3px 3px -2px rgba(0,0,0,0.2),0px 3px 4px 0px rgba(0,0,0,0.14),0px 1px 8px 0px rgba(0,0,0,0.12)", - "0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)", - "0px 3px 5px -1px rgba(0,0,0,0.2),0px 5px 8px 0px rgba(0,0,0,0.14),0px 1px 14px 0px rgba(0,0,0,0.12)", - "0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)", - "0px 4px 5px -2px rgba(0,0,0,0.2),0px 7px 10px 1px rgba(0,0,0,0.14),0px 2px 16px 1px rgba(0,0,0,0.12)", - "0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12)", - "0px 5px 6px -3px rgba(0,0,0,0.2),0px 9px 12px 1px rgba(0,0,0,0.14),0px 3px 16px 2px rgba(0,0,0,0.12)", - "0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12)", - "0px 6px 7px -4px rgba(0,0,0,0.2),0px 11px 15px 1px rgba(0,0,0,0.14),0px 4px 20px 3px rgba(0,0,0,0.12)", - "0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12)", - "0px 7px 8px -4px rgba(0,0,0,0.2),0px 13px 19px 2px rgba(0,0,0,0.14),0px 5px 24px 4px rgba(0,0,0,0.12)", - "0px 7px 9px -4px rgba(0,0,0,0.2),0px 14px 21px 2px rgba(0,0,0,0.14),0px 5px 26px 4px rgba(0,0,0,0.12)", - "0px 8px 9px -5px rgba(0,0,0,0.2),0px 15px 22px 2px rgba(0,0,0,0.14),0px 6px 28px 5px rgba(0,0,0,0.12)", - "0px 8px 10px -5px rgba(0,0,0,0.2),0px 16px 24px 2px rgba(0,0,0,0.14),0px 6px 30px 5px rgba(0,0,0,0.12)", - "0px 8px 11px -5px rgba(0,0,0,0.2),0px 17px 26px 2px rgba(0,0,0,0.14),0px 6px 32px 5px rgba(0,0,0,0.12)", - "0px 9px 11px -5px rgba(0,0,0,0.2),0px 18px 28px 2px rgba(0,0,0,0.14),0px 7px 34px 6px rgba(0,0,0,0.12)", - "0px 9px 12px -6px rgba(0,0,0,0.2),0px 19px 29px 2px rgba(0,0,0,0.14),0px 7px 36px 6px rgba(0,0,0,0.12)", - "0px 10px 13px -6px rgba(0,0,0,0.2),0px 20px 31px 3px rgba(0,0,0,0.14),0px 8px 38px 7px rgba(0,0,0,0.12)", - "0px 10px 13px -6px rgba(0,0,0,0.2),0px 21px 33px 3px rgba(0,0,0,0.14),0px 8px 40px 7px rgba(0,0,0,0.12)", - "0px 10px 14px -6px rgba(0,0,0,0.2),0px 22px 35px 3px rgba(0,0,0,0.14),0px 8px 42px 7px rgba(0,0,0,0.12)", - "0px 11px 14px -7px rgba(0,0,0,0.2),0px 23px 36px 3px rgba(0,0,0,0.14),0px 9px 44px 8px rgba(0,0,0,0.12)", - "0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12)", - "0 5px 5px -3px rgba(0,0,0,.06), 0 8px 10px 1px rgba(0,0,0,.042), 0 3px 14px 2px rgba(0,0,0,.036)" - }; - } -} diff --git a/src/Connected.Components/Themes/Models/Typography.cs b/src/Connected.Components/Themes/Models/Typography.cs deleted file mode 100644 index f26d189..0000000 --- a/src/Connected.Components/Themes/Models/Typography.cs +++ /dev/null @@ -1,174 +0,0 @@ - -namespace Connected -{ - public class Typography - { - public Default Default { get; set; } = new Default(); - public H1 H1 { get; set; } = new H1(); - public H2 H2 { get; set; } = new H2(); - public H3 H3 { get; set; } = new H3(); - public H4 H4 { get; set; } = new H4(); - public H5 H5 { get; set; } = new H5(); - public H6 H6 { get; set; } = new H6(); - public Subtitle1 Subtitle1 { get; set; } = new Subtitle1(); - public Subtitle2 Subtitle2 { get; set; } = new Subtitle2(); - public Body1 Body1 { get; set; } = new Body1(); - public Body2 Body2 { get; set; } = new Body2(); - public Button Button { get; set; } = new Button(); - public Caption Caption { get; set; } = new Caption(); - public Overline Overline { get; set; } = new Overline(); - } - - public class Default : BaseTypography - { - public Default() - { - FontFamily = new[] { "Roboto", "Helvetica", "Arial", "sans-serif" }; - FontSize = ".875rem"; - FontWeight = 400; - LineHeight = 1.43; - LetterSpacing = ".01071em"; - } - } - public class H1 : BaseTypography - { - public H1() - { - FontSize = "6rem"; - FontWeight = 300; - LineHeight = 1.167; - LetterSpacing = "-.01562em"; - } - } - public class H2 : BaseTypography - { - public H2() - { - FontSize = "3.75rem"; - FontWeight = 300; - LineHeight = 1.2; - LetterSpacing = "-.00833em"; - } - } - public class H3 : BaseTypography - { - public H3() - { - FontSize = "3rem"; - FontWeight = 400; - LineHeight = 1.167; - LetterSpacing = "0"; - } - } - public class H4 : BaseTypography - { - public H4() - { - FontSize = "2.125rem"; - FontWeight = 400; - LineHeight = 1.235; - LetterSpacing = ".00735em"; - } - } - public class H5 : BaseTypography - { - public H5() - { - FontSize = "1.5rem"; - FontWeight = 400; - LineHeight = 1.334; - LetterSpacing = "0"; - } - } - public class H6 : BaseTypography - { - public H6() - { - FontSize = "1.25rem"; - FontWeight = 500; - LineHeight = 1.6; - LetterSpacing = ".0075em"; - } - } - public class Subtitle1 : BaseTypography - { - public Subtitle1() - { - FontSize = "1rem"; - FontWeight = 400; - LineHeight = 1.75; - LetterSpacing = ".00938em"; - } - } - public class Subtitle2 : BaseTypography - { - public Subtitle2() - { - FontSize = ".875rem"; - FontWeight = 500; - LineHeight = 1.57; - LetterSpacing = ".00714em"; - } - } - public class Body1 : BaseTypography - { - public Body1() - { - FontSize = "1rem"; - FontWeight = 400; - LineHeight = 1.5; - LetterSpacing = ".00938em"; - } - } - public class Body2 : BaseTypography - { - public Body2() - { - FontSize = ".875rem"; - FontWeight = 400; - LineHeight = 1.43; - LetterSpacing = ".01071em"; - } - } - public class Button : BaseTypography - { - public Button() - { - FontSize = ".875rem"; - FontWeight = 500; - LineHeight = 1.75; - LetterSpacing = ".02857em"; - TextTransform = "uppercase"; - } - } - public class Caption : BaseTypography - { - public Caption() - { - FontSize = ".75rem"; - FontWeight = 400; - LineHeight = 1.66; - LetterSpacing = ".03333em"; - } - } - public class Overline : BaseTypography - { - public Overline() - { - FontSize = ".75rem"; - FontWeight = 400; - LineHeight = 2.66; - LetterSpacing = ".08333em"; - } - } - - public class BaseTypography - { - public string[] FontFamily { get; set; } - public int FontWeight { get; set; } - public string FontSize { get; set; } - public double LineHeight { get; set; } - public string LetterSpacing { get; set; } - public string TextTransform { get; set; } = "none"; - } -} diff --git a/src/Connected.Components/Themes/Models/Z-Index.cs b/src/Connected.Components/Themes/Models/Z-Index.cs deleted file mode 100644 index c073234..0000000 --- a/src/Connected.Components/Themes/Models/Z-Index.cs +++ /dev/null @@ -1,13 +0,0 @@ - -namespace Connected -{ - public class ZIndex - { - public int Drawer { get; set; } = 1100; - public int Popover { get; set; } = 1200; - public int AppBar { get; set; } = 1300; - public int Dialog { get; set; } = 1400; - public int Snackbar { get; set; } = 1500; - public int Tooltip { get; set; } = 1600; - } -} diff --git a/src/Connected.Components/Themes/Theme.cs b/src/Connected.Components/Themes/Theme.cs deleted file mode 100644 index 632a764..0000000 --- a/src/Connected.Components/Themes/Theme.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace Connected -{ - public class Theme - { - //public Breakpoints Breakpoints { get; set; } - public Palette Palette { get; set; } - public Palette PaletteDark { get; set; } - public Shadow Shadows { get; set; } - public Typography Typography { get; set; } - public LayoutProperties LayoutProperties { get; set; } - public ZIndex ZIndex { get; set; } - - public Theme() - { - Palette = new Palette(); - PaletteDark = new PaletteDark(); - Shadows = new Shadow(); - Typography = new Typography(); - LayoutProperties = new LayoutProperties(); - ZIndex = new ZIndex(); - } - } -} diff --git a/src/Connected.Components/Utilities/ActivatableCallback.cs b/src/Connected.Components/Utilities/ActivatableCallback.cs deleted file mode 100644 index facf666..0000000 --- a/src/Connected.Components/Utilities/ActivatableCallback.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Connected.Components; -using Microsoft.AspNetCore.Components.Web; - -namespace Connected -{ - public class ActivatableCallback : IActivatable - { - public Action ActivateCallback { get; set; } - - public void Activate(object sender, MouseEventArgs args) - { - ActivateCallback?.Invoke(sender, args); - } - } -} diff --git a/src/Connected.Components/Utilities/BindingConverters/BoolConverter.cs b/src/Connected.Components/Utilities/BindingConverters/BoolConverter.cs deleted file mode 100644 index 678aea7..0000000 --- a/src/Connected.Components/Utilities/BindingConverters/BoolConverter.cs +++ /dev/null @@ -1,92 +0,0 @@ -using System; - -namespace Connected -{ - - /// - /// A universal T to bool? binding converter - /// - public class BoolConverter : Converter - { - - public BoolConverter() - { - } - - protected override bool? ConvertValue(T? value) - { - return OnSet(value); - } - - protected override T? ConvertValueBack(bool? value) - { - return OnGet(value); - } - - private T OnGet(bool? value) - { - try - { - if (typeof(T) == typeof(bool)) - return (T)(object)(value == true); - else if (typeof(T) == typeof(bool?)) - return (T)(object)value; - else if (typeof(T) == typeof(string)) - return (T)(object)(value == true ? "on" : (value == false ? "off" : null)); - else if (typeof(T) == typeof(int)) - return (T)(object)(value == true ? 1 : 0); - else if (typeof(T) == typeof(int?)) - return (T)(object)(value == true ? 1 : (value == false ? (int?)0 : null)); - else - { - TriggerError($"Conversion to type {typeof(T)} not implemented"); - } - } - catch (Exception e) - { - TriggerError("Conversion error: " + e.Message); - return default(T); - } - return default(T); - } - - private bool? OnSet(T arg) - { - if (arg == null) - return null; // <-- this catches all nullable values which are null. no nullchecks necessary below! - try - { - if (arg is bool) - return (bool)(object)arg; - else if (arg is bool?) - return (bool?)(object)arg; - else if (arg is int) - return ((int)(object)arg) > 0; - else if (arg is string) - { - var s = (string)(object)arg; - if (string.IsNullOrWhiteSpace(s)) - return null; - if (bool.TryParse(s, out var b)) - return b; - if (s.ToLowerInvariant() == "on") - return true; - if (s.ToLowerInvariant() == "off") - return false; - return null; - } - else - { - TriggerError("Unable to convert to bool? from type " + typeof(T).Name); - return null; - } - } - catch (FormatException e) - { - TriggerError("Conversion error: " + e.Message); - return null; - } - } - - } -} diff --git a/src/Connected.Components/Utilities/BindingConverters/Converter.cs b/src/Connected.Components/Utilities/BindingConverters/Converter.cs deleted file mode 100644 index ffc4b0f..0000000 --- a/src/Connected.Components/Utilities/BindingConverters/Converter.cs +++ /dev/null @@ -1,111 +0,0 @@ -using System.Globalization; - -namespace Connected; - -public class Converter -{ - public event EventHandler? ErrorOccured; - - /// - /// The culture info being used for decimal points, date and time format, etc. - /// - public CultureInfo Culture { get; set; } = Converters.DefaultCulture; - - public TDestinationType? Convert(TSourceType value) - { - try - { - return ConvertValue(value); - } - catch (Exception e) - { - TriggerError($"Conversion from {typeof(TSourceType).Name} to {typeof(TDestinationType).Name} failed: {e.Message}", e); - } - - return default; - } - - protected virtual TDestinationType? ConvertValue(TSourceType? value) - { - return default; - } - - public TSourceType? ConvertBack(TDestinationType value) - { - try - { - return ConvertValueBack(value); - } - catch (Exception e) - { - TriggerError($"Conversion from {typeof(TDestinationType).Name} to {typeof(TSourceType).Name} failed: {e.Message}", e); - } - - return default; - } - - protected virtual TSourceType? ConvertValueBack(TDestinationType? value) - { - return default; - } - - protected void TriggerError(string? msg, Exception? e = null) - { - ErrorOccured?.Invoke(this, msg); - - OnErrorOccured(msg, e); - } - - protected virtual void OnErrorOccured(string? msg, Exception? e) - { - - } -} - -/// -/// Converts values using the supplied lambda functions. -/// -/// The source type -/// The destination type -public class LambdaConverter : Converter -{ - private readonly Func? _convertFunction; - private readonly Func? _convertBackFunction; - - public LambdaConverter(Func? convertFunction = null, Func? convertBackFunction = null) - { - _convertFunction = convertFunction; - _convertBackFunction = convertBackFunction; - } - - protected override TDestinationType? ConvertValue(TSourceType? value) - { - if (_convertFunction is null) - return base.ConvertValue(value); - - return _convertFunction.Invoke(value); - } - - protected override TSourceType? ConvertValueBack(TDestinationType? value) - { - if (_convertFunction is null) - return base.ConvertValueBack(value); - - return _convertBackFunction.Invoke(value); - } -} - -/// -/// Converter from T to string -/// -/// Set converts to string -/// Get converts from string -/// -public class ToStringConverter : Converter -{ - - /// - /// Custom Format to be applied on bidirectional way. - /// - public string? Format { get; set; } = null; -} diff --git a/src/Connected.Components/Utilities/BindingConverters/Converters.cs b/src/Connected.Components/Utilities/BindingConverters/Converters.cs deleted file mode 100644 index 7e26a00..0000000 --- a/src/Connected.Components/Utilities/BindingConverters/Converters.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System.Globalization; - -namespace Connected; - -public static class Converters -{ - public static CultureInfo DefaultCulture { get; set; } = CultureInfo.CurrentUICulture; -} diff --git a/src/Connected.Components/Utilities/BindingConverters/DateConverter.cs b/src/Connected.Components/Utilities/BindingConverters/DateConverter.cs deleted file mode 100644 index 489ddaf..0000000 --- a/src/Connected.Components/Utilities/BindingConverters/DateConverter.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace Connected; - -/// -/// A ready made DateTime? to string binding converter with configurable date format and culture -/// -public class NullableDateConverter : ToStringConverter -{ - public string DateFormat { get; set; } - - public NullableDateConverter(string format = "yyyy-MM-dd") => DateFormat = format; - - protected override string? ConvertValue(DateTime? value) => value?.ToString(DateFormat, Culture); - - protected override DateTime? ConvertValueBack(string? value) => DateTime.ParseExact(value, DateFormat, Culture); -} - -/// -/// A ready made DateTime to string binding converter with configurable date format and culture -/// -public class DateConverter : ToStringConverter -{ - public string DateFormat { get; set; } - - public DateConverter(string format = "yyyy-MM-dd") => DateFormat = format; - - protected override string? ConvertValue(DateTime value) => value.ToString(DateFormat, Culture); - - protected override DateTime ConvertValueBack(string? value) => DateTime.ParseExact(value, DateFormat, Culture); -} \ No newline at end of file diff --git a/src/Connected.Components/Utilities/BindingConverters/DefaultConverter.cs b/src/Connected.Components/Utilities/BindingConverters/DefaultConverter.cs deleted file mode 100644 index 7e4b259..0000000 --- a/src/Connected.Components/Utilities/BindingConverters/DefaultConverter.cs +++ /dev/null @@ -1,464 +0,0 @@ -using System.Globalization; - -namespace Connected; - -/// -/// A universal T to string binding converter -/// -public class DefaultConverter : ToStringConverter -{ - protected override string? ConvertValue(T? value) => ConvertToString(value); - - protected override T? ConvertValueBack(string? value) => ConvertFromString(value); - - public string DefaultTimeSpanFormat { get; set; } = "c"; - - protected virtual T? ConvertFromString(string? value) - { - try - { - /* - * This is important, or otherwise all the TryParse down there might fail. - */ - if (string.IsNullOrEmpty(value)) - { - return default; - } - /* - * String - */ - else if (typeof(T) == typeof(string)) - { - return (T)(object)value; - } - /* - * Char - */ - else if (typeof(T) == typeof(char) || typeof(T) == typeof(char?)) - { - return (T)(object)value[0]; - } - /* - * Bool - */ - else if (typeof(T) == typeof(bool) || typeof(T) == typeof(bool?)) - { - var lowerValue = value.ToLowerInvariant(); - - if (lowerValue is "true" or "on") - return (T)(object)true; - - if (lowerValue is "false" or "off") - return (T)(object)false; - - TriggerError("Not a valid boolean"); - } - /* - * Sbyte - */ - else if (typeof(T) == typeof(sbyte) || typeof(T) == typeof(sbyte?)) - { - if (sbyte.TryParse(value, NumberStyles.Integer | NumberStyles.AllowThousands, Culture, out var parsedValue)) - return (T)(object)parsedValue; - - TriggerError("Not a valid number"); - } - /* - * Byte - */ - else if (typeof(T) == typeof(byte) || typeof(T) == typeof(byte?)) - { - if (byte.TryParse(value, NumberStyles.Integer | NumberStyles.AllowThousands, Culture, out var parsedValue)) - return (T)(object)parsedValue; - - TriggerError("Not a valid number"); - } - /* - * Short - */ - else if (typeof(T) == typeof(short) || typeof(T) == typeof(short?)) - { - if (short.TryParse(value, NumberStyles.Integer | NumberStyles.AllowThousands, Culture, out var parsedValue)) - return (T)(object)parsedValue; - - TriggerError("Not a valid number"); - } - /* - * Ushort - */ - else if (typeof(T) == typeof(ushort) || typeof(T) == typeof(ushort?)) - { - if (ushort.TryParse(value, NumberStyles.Integer | NumberStyles.AllowThousands, Culture, out var parsedValue)) - return (T)(object)parsedValue; - - TriggerError("Not a valid number"); - } - /* - * Int - */ - else if (typeof(T) == typeof(int) || typeof(T) == typeof(int?)) - { - if (int.TryParse(value, NumberStyles.Integer | NumberStyles.AllowThousands, Culture, out var parsedValue)) - return (T)(object)parsedValue; - - TriggerError("Not a valid number"); - } - /* - * Uint - */ - else if (typeof(T) == typeof(uint) || typeof(T) == typeof(uint?)) - { - if (uint.TryParse(value, NumberStyles.Integer | NumberStyles.AllowThousands, Culture, out var parsedValue)) - return (T)(object)parsedValue; - - TriggerError("Not a valid number"); - } - /* - * Long - */ - else if (typeof(T) == typeof(long) || typeof(T) == typeof(long?)) - { - if (long.TryParse(value, NumberStyles.Integer | NumberStyles.AllowThousands, Culture, out var parsedValue)) - return (T)(object)parsedValue; - - TriggerError("Not a valid number"); - } - /* - * Ulong - */ - else if (typeof(T) == typeof(ulong) || typeof(T) == typeof(ulong?)) - { - if (ulong.TryParse(value, NumberStyles.Integer | NumberStyles.AllowThousands, Culture, out var parsedValue)) - return (T)(object)parsedValue; - - TriggerError("Not a valid number"); - } - /* - * Float - */ - else if (typeof(T) == typeof(float) || typeof(T) == typeof(float?)) - { - if (float.TryParse(value, NumberStyles.Any, Culture, out var parsedValue)) - return (T)(object)parsedValue; - - TriggerError("Not a valid number"); - } - /* - * Double - */ - else if (typeof(T) == typeof(double) || typeof(T) == typeof(double?)) - { - if (double.TryParse(value, NumberStyles.Any, Culture, out var parsedValue)) - return (T)(object)parsedValue; - - TriggerError("Not a valid number"); - } - /* - * Decimal - */ - else if (typeof(T) == typeof(decimal) || typeof(T) == typeof(decimal?)) - { - if (decimal.TryParse(value, NumberStyles.Any, Culture, out var parsedValue)) - return (T)(object)parsedValue; - - TriggerError("Not a valid number"); - } - /* - * Guid - */ - else if (typeof(T) == typeof(Guid) || typeof(T) == typeof(Guid?)) - { - if (Guid.TryParse(value, out var parsedValue)) - return (T)(object)parsedValue; - - TriggerError("Not a valid GUID"); - } - /* - * Enum - */ - else if (IsNullableEnum(typeof(T))) - { - var enum_type = Nullable.GetUnderlyingType(typeof(T)); - - if (Enum.TryParse(enum_type, value, out var parsedValue)) - return (T)parsedValue; - - TriggerError("Not a value of " + enum_type.Name); - } - else if (typeof(T).IsEnum) - { - if (Enum.TryParse(typeof(T), value, out var parsedValue)) - return (T)parsedValue; - - TriggerError("Not a value of " + typeof(T).Name); - } - /* - * DateTime - */ - else if (typeof(T) == typeof(DateTime) || typeof(T) == typeof(DateTime?)) - { - try - { - return (T)(object)DateTime.ParseExact(value, Format ?? Culture.DateTimeFormat.ShortDatePattern, Culture); - } - catch (FormatException) - { - TriggerError("Not a valid date time"); - } - } - /* - * Timespan - */ - else if (typeof(T) == typeof(TimeSpan) || typeof(T) == typeof(TimeSpan?)) - { - try - { - return (T)(object)TimeSpan.ParseExact(value, Format ?? DefaultTimeSpanFormat, Culture); - } - catch (FormatException) - { - TriggerError("Not a valid time span"); - } - } - else - { - TriggerError($"Conversion to type {typeof(T)} not implemented"); - } - } - catch (Exception e) - { - TriggerError("Conversion error: " + e.Message); - } - - return default; - } - - protected virtual string? ConvertToString(T? arg) - { - /* - * This catches all null values. No additional null checks necessary. - */ - if (arg is null) - return null; - - try - { - /* - * String - */ - if (typeof(T) == typeof(string)) - { - return (string)(object)arg; - } - /* - * Char - */ - else if (typeof(T) == typeof(char)) - { - return ((char)(object)arg).ToString(Culture); - } - else if (typeof(T) == typeof(char?)) - { - return ((char?)(object)arg).Value.ToString(Culture); - } - /* - * Bool - */ - else if (typeof(T) == typeof(bool)) - { - return ((bool)(object)arg).ToString(CultureInfo.InvariantCulture); - } - else if (typeof(T) == typeof(bool?)) - { - return ((bool?)(object)arg).Value.ToString(CultureInfo.InvariantCulture); - } - /* - * Sbyte - */ - else if (typeof(T) == typeof(sbyte)) - { - return ((sbyte)(object)arg).ToString(Format, Culture); - } - else if (typeof(T) == typeof(sbyte?)) - { - return ((sbyte?)(object)arg).Value.ToString(Format, Culture); - } - /* - * Byte - */ - else if (typeof(T) == typeof(byte)) - { - return ((byte)(object)arg).ToString(Format, Culture); - } - else if (typeof(T) == typeof(byte?)) - { - return ((byte?)(object)arg).Value.ToString(Format, Culture); - } - /* - * Short - */ - else if (typeof(T) == typeof(short)) - { - return ((short)(object)arg).ToString(Format, Culture); - } - else if (typeof(T) == typeof(short?)) - { - return ((short?)(object)arg).Value.ToString(Format, Culture); - } - /* - * Ushort - */ - else if (typeof(T) == typeof(ushort)) - { - return ((ushort)(object)arg).ToString(Format, Culture); - } - else if (typeof(T) == typeof(ushort?)) - { - return ((ushort?)(object)arg).Value.ToString(Format, Culture); - } - /* - * Int - */ - else if (typeof(T) == typeof(int)) - { - return ((int)(object)arg).ToString(Format, Culture); - } - else if (typeof(T) == typeof(int?)) - { - return ((int?)(object)arg).Value.ToString(Format, Culture); - } - /* - * Uint - */ - else if (typeof(T) == typeof(uint)) - { - return ((uint)(object)arg).ToString(Format, Culture); - } - else if (typeof(T) == typeof(uint?)) - { - return ((uint?)(object)arg).Value.ToString(Format, Culture); - } - /* - * Long - */ - else if (typeof(T) == typeof(long)) - { - return ((long)(object)arg).ToString(Format, Culture); - } - else if (typeof(T) == typeof(long?)) - { - return ((long?)(object)arg).Value.ToString(Format, Culture); - } - /* - * Ulong - */ - else if (typeof(T) == typeof(ulong)) - { - return ((ulong)(object)arg).ToString(Format, Culture); - } - else if (typeof(T) == typeof(ulong?)) - { - return ((ulong?)(object)arg).Value.ToString(Format, Culture); - } - /* - * Float - */ - else if (typeof(T) == typeof(float)) - { - return ((float)(object)arg).ToString(Format, Culture); - } - else if (typeof(T) == typeof(float?)) - { - return ((float?)(object)arg).Value.ToString(Format, Culture); - } - /* - * Double - */ - else if (typeof(T) == typeof(double)) - { - return ((double)(object)arg).ToString(Format, Culture); - } - else if (typeof(T) == typeof(double?)) - { - return ((double?)(object)arg).Value.ToString(Format, Culture); - } - /* - * Decimal - */ - else if (typeof(T) == typeof(decimal)) - { - return ((decimal)(object)arg).ToString(Format, Culture); - } - else if (typeof(T) == typeof(decimal?)) - { - return ((decimal?)(object)arg).Value.ToString(Format, Culture); - } - /* - * Guid - */ - else if (typeof(T) == typeof(Guid)) - { - var value = (Guid)(object)arg; - return value.ToString(); - } - else if (typeof(T) == typeof(Guid?)) - { - var value = (Guid?)(object)arg; - return value.Value.ToString(); - } - /* - * Enum - */ - else if (IsNullableEnum(typeof(T))) - { - var value = (Enum)(object)arg; - return value.ToString(); - } - else if (typeof(T).IsEnum) - { - var value = (Enum)(object)arg; - return value.ToString(); - } - /* - * DateTime - */ - else if (typeof(T) == typeof(DateTime)) - { - var value = (DateTime)(object)arg; - return value.ToString(Format ?? Culture.DateTimeFormat.ShortDatePattern, Culture); - } - else if (typeof(T) == typeof(DateTime?)) - { - var value = (DateTime?)(object)arg; - return value.Value.ToString(Format ?? Culture.DateTimeFormat.ShortDatePattern, Culture); - } - /* - * Timespan - */ - else if (typeof(T) == typeof(TimeSpan)) - { - var value = (TimeSpan)(object)arg; - return value.ToString(Format ?? DefaultTimeSpanFormat, Culture); - } - else if (typeof(T) == typeof(TimeSpan?)) - { - var value = (TimeSpan?)(object)arg; - return value.Value.ToString(Format ?? DefaultTimeSpanFormat, Culture); - } - - return arg.ToString(); - } - catch (FormatException e) - { - TriggerError("Conversion error: " + e.Message); - return null; - } - } - - public static bool IsNullableEnum(Type t) - { - var u = Nullable.GetUnderlyingType(t); - - return (u is not null) && u.IsEnum; - } -} diff --git a/src/Connected.Components/Utilities/BindingConverters/IsoDateConverter.cs b/src/Connected.Components/Utilities/BindingConverters/IsoDateConverter.cs deleted file mode 100644 index 6d67662..0000000 --- a/src/Connected.Components/Utilities/BindingConverters/IsoDateConverter.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Connected.Extensions; - -namespace Connected; - -public class IsoDateConverter : Converter -{ - protected override string ConvertValue(DateTime value) => value.ToIsoDateString(); - - protected override DateTime ConvertValueBack(string? value) => DateTime.TryParse(value, out var dateTime) ? dateTime : DateTime.MinValue; -} - -public class NullableIsoDateConverter : Converter -{ - protected override string? ConvertValue(DateTime? value) => value?.ToIsoDateString(); - - protected override DateTime? ConvertValueBack(string? value) => DateTime.TryParse(value, out var dateTime) ? dateTime : null; -} diff --git a/src/Connected.Components/Utilities/BindingConverters/NumericConverter.cs b/src/Connected.Components/Utilities/BindingConverters/NumericConverter.cs deleted file mode 100644 index 8f79840..0000000 --- a/src/Connected.Components/Utilities/BindingConverters/NumericConverter.cs +++ /dev/null @@ -1,390 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using System.Globalization; - -namespace Connected; - -/// -/// A universal T to double binding converter -/// -/// Note: currently not in use. Should we ever use it, remove -/// the [ExcludeFromCodeCoverage] attribute -/// -[ExcludeFromCodeCoverage] -public class NumericConverter : Converter -{ - - protected override double ConvertValue(T? value) - { - if (value is null) - { - return double.NaN; - } - /* - * Double - */ - else if (typeof(T) == typeof(double)) - { - return (double)(object)value; - } - else if (typeof(T) == typeof(double?)) - { - return ((double?)(object)value).Value; - } - /* - * String - */ - else if (typeof(T) == typeof(string)) - { - return double.Parse((string)(object)value, NumberStyles.Any, Culture); - } - /* - * SByte - */ - else if (typeof(T) == typeof(sbyte)) - { - return System.Convert.ToDouble((sbyte)(object)value); - } - else if (typeof(T) == typeof(sbyte?)) - { - return System.Convert.ToDouble(((sbyte?)(object)value).Value); - } - /* - * Byte - */ - else if (typeof(T) == typeof(byte)) - { - return System.Convert.ToDouble((byte)(object)value); - } - else if (typeof(T) == typeof(byte?)) - { - return System.Convert.ToDouble(((byte?)(object)value).Value); - } - /* - * Short - */ - else if (typeof(T) == typeof(short)) - { - return System.Convert.ToDouble((short)(object)value); - } - else if (typeof(T) == typeof(short?)) - { - return System.Convert.ToDouble(((short?)(object)value).Value); - } - /* - * Ushort - */ - else if (typeof(T) == typeof(ushort)) - { - return System.Convert.ToDouble((ushort)(object)value); - } - else if (typeof(T) == typeof(ushort?)) - { - return System.Convert.ToDouble(((ushort?)(object)value).Value); - } - /* - * Int - */ - else if (typeof(T) == typeof(int)) - { - return System.Convert.ToDouble((int)(object)value); - } - else if (typeof(T) == typeof(int?)) - { - return System.Convert.ToDouble(((int?)(object)value).Value); - } - /* - * Uint - */ - else if (typeof(T) == typeof(uint)) - { - return System.Convert.ToDouble((uint)(object)value); - } - else if (typeof(T) == typeof(uint?)) - { - return System.Convert.ToDouble(((uint?)(object)value).Value); - } - /* - * Long - */ - else if (typeof(T) == typeof(long)) - { - return System.Convert.ToDouble((long)(object)value); - } - else if (typeof(T) == typeof(long?)) - { - return System.Convert.ToDouble(((long?)(object)value).Value); - } - /* - * Ulong - */ - else if (typeof(T) == typeof(ulong)) - { - return System.Convert.ToDouble((ulong)(object)value); - } - else if (typeof(T) == typeof(ulong?)) - { - return System.Convert.ToDouble(((ulong?)(object)value).Value); - } - /* - * Float - */ - else if (typeof(T) == typeof(float)) - { - return System.Convert.ToDouble((float)(object)value); - } - else if (typeof(T) == typeof(float?)) - { - return System.Convert.ToDouble(((float?)(object)value).Value); - } - /* - * Deimal - */ - else if (typeof(T) == typeof(decimal)) - { - return System.Convert.ToDouble((decimal)(object)value); - } - else if (typeof(T) == typeof(decimal?)) - { - return System.Convert.ToDouble(((decimal?)(object)value).Value); - } - else - { - TriggerError("Unable to convert to double from type " + typeof(T).Name); - return double.NaN; - } - } - - protected override T? ConvertValueBack(double value) - { - /* - * Double - */ - if (typeof(T) == typeof(double) || typeof(T) == typeof(double?)) - { - return (T)(object)value; - } - /* - * String - */ - else if (typeof(T) == typeof(string)) - { - return (T)(object)value.ToString(Culture); - } - /* - * Sbyte - */ - else if (typeof(T) == typeof(sbyte) || typeof(T) == typeof(sbyte?)) - { - return (T)(object)System.Convert.ToSByte(value); - } - /* - * Byte - */ - else if (typeof(T) == typeof(byte) || typeof(T) == typeof(byte?)) - { - return (T)(object)System.Convert.ToByte(value); - } - /* - * Short - */ - else if (typeof(T) == typeof(short) || typeof(T) == typeof(short?)) - { - return (T)(object)System.Convert.ToInt16(value); - } - /* - * Ushort - */ - else if (typeof(T) == typeof(ushort) || typeof(T) == typeof(ushort?)) - { - return (T)(object)System.Convert.ToUInt16(value); - } - /* - * Int - */ - else if (typeof(T) == typeof(int) || typeof(T) == typeof(int?)) - { - return (T)(object)System.Convert.ToInt32(value); - } - /* - * Uint - */ - else if (typeof(T) == typeof(uint) || typeof(T) == typeof(uint?)) - { - return (T)(object)System.Convert.ToUInt32(value); - } - /* - * Long - */ - else if (typeof(T) == typeof(long) || typeof(T) == typeof(long?)) - { - return (T)(object)System.Convert.ToInt64(value); - } - /* - * Ulong - */ - else if (typeof(T) == typeof(ulong) || typeof(T) == typeof(ulong?)) - { - return (T)(object)System.Convert.ToUInt64(value); - } - /* - * Float - */ - else if (typeof(T) == typeof(float) || typeof(T) == typeof(float?)) - { - return (T)(object)System.Convert.ToSingle(value); - } - /* - * Decimal - */ - else if (typeof(T) == typeof(decimal) || typeof(T) == typeof(decimal?)) - { - return (T)(object)System.Convert.ToDecimal(value); - } - else - { - TriggerError($"Conversion to type {typeof(T)} not implemented"); - return default; - } - } - - #region Floating Point comparison - - private const double MinNormal = 2.2250738585072014E-308d; - - public static bool AreEqual(double a, double b, double epsilon = MinNormal) - { - /* - * Copyright (c) Michael Borgwardt - */ - var absA = Math.Abs(a); - var absB = Math.Abs(b); - var diff = Math.Abs(a - b); - /* - * Shortcut, handles infinities - */ - if (a.Equals(b)) - { - return true; - } - else if (a == 0 || b == 0 || absA + absB < MinNormal) - { - /* - * a or b is zero or both are extremely close to it - * relative error is less meaningful here - */ - return diff < epsilon * MinNormal; - } - else - { - /* - * Use relative error - */ - return diff / (absA + absB) < epsilon; - } - } - - #endregion -} - -[ExcludeFromCodeCoverage] -internal static class Number -{ - public static T? To(double d) - { - if (typeof(T) == typeof(sbyte) && d >= sbyte.MinValue && sbyte.MaxValue >= d) - return (T)(object)Convert.ToSByte(d); - if (typeof(T) == typeof(byte) && d >= byte.MinValue && byte.MaxValue >= d) - return (T)(object)Convert.ToByte(d); - if (typeof(T) == typeof(short) && d >= short.MinValue && short.MaxValue >= d) - return (T)(object)Convert.ToInt16(d); - if (typeof(T) == typeof(ushort) && d >= ushort.MinValue && ushort.MaxValue >= d) - return (T)(object)Convert.ToUInt16(d); - if (typeof(T) == typeof(int) && d >= int.MinValue && int.MaxValue >= d) - return (T)(object)Convert.ToInt32(d); - if (typeof(T) == typeof(uint) && d >= uint.MinValue && uint.MaxValue >= d) - return (T)(object)Convert.ToUInt32(d); - if (typeof(T) == typeof(long) && d >= long.MinValue && long.MaxValue >= d) - return (T)(object)Convert.ToInt64(d); - if (typeof(T) == typeof(ulong) && d >= ulong.MinValue && ulong.MaxValue >= d) - return (T)(object)Convert.ToUInt64(d); - if (typeof(T) == typeof(float) && d >= float.MinValue && float.MaxValue >= d) - return (T)(object)Convert.ToSingle(d); - if (typeof(T) == typeof(double) && d >= double.MinValue && double.MaxValue >= d) - return (T)(object)Convert.ToDouble(d); - if (typeof(T) == typeof(decimal) && (decimal)d >= decimal.MinValue && decimal.MaxValue >= (decimal)d) - return (T)(object)Convert.ToDecimal(d); - if (typeof(T) == typeof(sbyte?) && d >= sbyte.MinValue && sbyte.MaxValue >= d) - return (T)(object)Convert.ToSByte(d); - if (typeof(T) == typeof(byte?) && d >= byte.MinValue && byte.MaxValue >= d) - return (T)(object)Convert.ToByte(d); - if (typeof(T) == typeof(short?) && d >= short.MinValue && short.MaxValue >= d) - return (T)(object)Convert.ToInt16(d); - if (typeof(T) == typeof(ushort?) && d >= ushort.MinValue && ushort.MaxValue >= d) - return (T)(object)Convert.ToUInt16(d); - if (typeof(T) == typeof(int?) && d >= int.MinValue && int.MaxValue >= d) - return (T)(object)Convert.ToInt32(d); - if (typeof(T) == typeof(uint?) && d >= uint.MinValue && uint.MaxValue >= d) - return (T)(object)Convert.ToUInt32(d); - if (typeof(T) == typeof(long?) && d >= long.MinValue && long.MaxValue >= d) - return (T)(object)Convert.ToInt64(d); - if (typeof(T) == typeof(ulong?) && d >= ulong.MinValue && ulong.MaxValue >= d) - return (T)(object)Convert.ToUInt64(d); - if (typeof(T) == typeof(float?) && d >= float.MinValue && float.MaxValue >= d) - return (T)(object)Convert.ToSingle(d); - if (typeof(T) == typeof(double?) && d >= double.MinValue && double.MaxValue >= d) - return (T)(object)Convert.ToDouble(d); - if (typeof(T) == typeof(decimal?) && (decimal)d >= decimal.MinValue && decimal.MaxValue >= (decimal)d) - return (T)(object)Convert.ToDecimal(d); - - return default; - } - public static double From(T v) - { - if (typeof(T) == typeof(sbyte)) - return Convert.ToDouble((sbyte)(object)v); - if (typeof(T) == typeof(byte)) - return Convert.ToDouble((byte)(object)v); - if (typeof(T) == typeof(short)) - return Convert.ToDouble((short)(object)v); - if (typeof(T) == typeof(ushort)) - return Convert.ToDouble((ushort)(object)v); - if (typeof(T) == typeof(int)) - return Convert.ToDouble((int)(object)v); - if (typeof(T) == typeof(uint)) - return Convert.ToDouble((uint)(object)v); - if (typeof(T) == typeof(long)) - return Convert.ToDouble((long)(object)v); - if (typeof(T) == typeof(ulong)) - return Convert.ToDouble((ulong)(object)v); - if (typeof(T) == typeof(float)) - return Convert.ToDouble((float)(object)v); - if (typeof(T) == typeof(double)) - return Convert.ToDouble((double)(object)v); - if (typeof(T) == typeof(decimal)) - return Convert.ToDouble((decimal)(object)v); - if (typeof(T) == typeof(sbyte?)) - return Convert.ToDouble((sbyte?)(object)v); - if (typeof(T) == typeof(byte?)) - return Convert.ToDouble((byte?)(object)v); - if (typeof(T) == typeof(short?)) - return Convert.ToDouble((short?)(object)v); - if (typeof(T) == typeof(ushort?)) - return Convert.ToDouble((ushort?)(object)v); - if (typeof(T) == typeof(int?)) - return Convert.ToDouble((int?)(object)v); - if (typeof(T) == typeof(uint?)) - return Convert.ToDouble((uint?)(object)v); - if (typeof(T) == typeof(long?)) - return Convert.ToDouble((long?)(object)v); - if (typeof(T) == typeof(ulong?)) - return Convert.ToDouble((ulong?)(object)v); - if (typeof(T) == typeof(float?)) - return Convert.ToDouble((float?)(object)v); - if (typeof(T) == typeof(double?)) - return Convert.ToDouble((double?)(object)v); - if (typeof(T) == typeof(decimal?)) - return Convert.ToDouble((decimal?)(object)v); - - return default; - } -} diff --git a/src/Connected.Components/Utilities/BindingConverters/RangeConverter.cs b/src/Connected.Components/Utilities/BindingConverters/RangeConverter.cs deleted file mode 100644 index 05a799e..0000000 --- a/src/Connected.Components/Utilities/BindingConverters/RangeConverter.cs +++ /dev/null @@ -1,41 +0,0 @@ -using Connected.Components; - -namespace Connected.Utilities.BindingConverters; - -public class RangeConverter : ToStringConverter> -{ - private readonly DefaultConverter _converter; - - public RangeConverter() => _converter = new DefaultConverter(); - - protected override string? ConvertValue(Range? value) => value is not null - ? Join(_converter.Convert(value.Start), _converter.Convert(value.End)) - : string.Empty; - - protected override Range? ConvertValueBack(string? value) - { - return !Split(value, out var valueStart, out var valueEnd) - ? null - : new Range(_converter.ConvertBack(valueStart), _converter.ConvertBack(valueEnd)); - } - - public static string Join(string? valueStart, string? valueEnd) => string.IsNullOrEmpty(valueStart) && string.IsNullOrEmpty(valueEnd) ? string.Empty : $"[{valueStart};{valueEnd}]"; - - public static bool Split(string? value, out string? valueStart, out string? valueEnd) - { - valueStart = valueEnd = string.Empty; - - if (string.IsNullOrEmpty(value) || value[0] != '[' || value[^1] != ']') - return false; - - var idx = value.IndexOf(';'); - - if (idx < 1) - return false; - - valueStart = value[1..idx]; - valueEnd = value[(idx + 1)..^1]; - - return true; - } -} diff --git a/src/Connected.Components/Utilities/CodeMessage.cs b/src/Connected.Components/Utilities/CodeMessage.cs deleted file mode 100644 index 9fdcda5..0000000 --- a/src/Connected.Components/Utilities/CodeMessage.cs +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Connected.Utilities; - -internal class CodeMessage -{ - internal const string SerializationUnreferencedCodeMessage = "Serialization and deserialization might require types that cannot be statically analyzed. Make sure all of the required types are preserved. If you sure that your type is preserved use UnconditionalSuppressMessage to ignore error."; -} diff --git a/src/Connected.Components/Utilities/Color.cs b/src/Connected.Components/Utilities/Color.cs deleted file mode 100644 index a1cf147..0000000 --- a/src/Connected.Components/Utilities/Color.cs +++ /dev/null @@ -1,383 +0,0 @@ -//// Copyright (c) Steven Coco -//// https://stackoverflow.com/questions/4087581/creating-a-c-sharp-color-from-hsl-values/4087601#4087601 -//// Stripped and adapted by Meinrad Recheis and Benjamin Kappel for MudBlazor - -using System.Globalization; -using Connected.Extensions; - -namespace Connected.Utilities; - -public enum ColorOutputFormats -{ - /// - /// Output will be starting with a # and include r,g and b but no alpha values. Example #ab2a3d - /// - Hex, - /// - /// Output will be starting with a # and include r,g and b and alpha values. Example #ab2a3dff - /// - HexA, - /// - /// Will output css like output for value. Example rgb(12,15,40) - /// - RGB, - /// - /// Will output css like output for value with alpha. Example rgba(12,15,40,0.42) - /// - RGBA, - /// - /// Will output the color elements without any decorator and without alpha. Example 12,15,26 - /// - ColorElements -} - -public class Color : IEquatable -{ - #region Fields and Properties - - private const double EPSILON = 0.000000000000001; - - private byte[] _valuesAsByte; - - public string Value => $"#{R:x2}{G:x2}{B:x2}{A:x2}"; - - public byte R => _valuesAsByte[0]; - public byte G => _valuesAsByte[1]; - public byte B => _valuesAsByte[2]; - public byte A => _valuesAsByte[3]; - public double APercentage => Math.Round((A / 255.0), 2); - - public double H { get; private set; } - public double L { get; private set; } - public double S { get; private set; } - - #endregion - - #region Constructor - - public Color(double h, double s, double l, double a) - : this(h, s, l, (int)((a * 255.0).EnsureRange(255))) - { - - } - - public Color(double h, double s, double l, int a) - { - _valuesAsByte = new byte[4]; - - h = Math.Round(h.EnsureRange(360), 0); - s = Math.Round(s.EnsureRange(1), 2); - l = Math.Round(l.EnsureRange(1), 2); - a = a.EnsureRange(255); - - // achromatic argb (gray scale) - if (Math.Abs(s) < EPSILON) - { - _valuesAsByte[0] = (byte)Math.Max(0, Math.Min(255, (int)Math.Ceiling(l * 255D))); - _valuesAsByte[1] = (byte)Math.Max(0, Math.Min(255, (int)Math.Ceiling(l * 255D))); - _valuesAsByte[2] = (byte)Math.Max(0, Math.Min(255, (int)Math.Ceiling(l * 255D))); - _valuesAsByte[3] = (byte)a; - } - else - { - - var q = l < .5D - ? l * (1D + s) - : (l + s) - (l * s); - var p = (2D * l) - q; - - var hk = h / 360D; - var T = new double[3]; - T[0] = hk + (1D / 3D); // Tr - T[1] = hk; // Tb - T[2] = hk - (1D / 3D); // Tg - - for (var i = 0; i < 3; i++) - { - if (T[i] < 0D) - T[i] += 1D; - if (T[i] > 1D) - T[i] -= 1D; - - if ((T[i] * 6D) < 1D) - T[i] = p + ((q - p) * 6D * T[i]); - else if ((T[i] * 2D) < 1) - T[i] = q; - else if ((T[i] * 3D) < 2) - T[i] = p + ((q - p) * ((2D / 3D) - T[i]) * 6D); - else - T[i] = p; - } - - _valuesAsByte[0] = ((int)Math.Round(T[0] * 255D)).EnsureRangeToByte(); - _valuesAsByte[1] = ((int)Math.Round(T[1] * 255D)).EnsureRangeToByte(); - _valuesAsByte[2] = ((int)Math.Round(T[2] * 255D)).EnsureRangeToByte(); - _valuesAsByte[3] = (byte)a; - } - - H = Math.Round(h, 0); - S = Math.Round(s, 2); - L = Math.Round(l, 2); - } - - public Color(byte r, byte g, byte b, byte a) - { - _valuesAsByte = new byte[4]; - - _valuesAsByte[0] = r; - _valuesAsByte[1] = g; - _valuesAsByte[2] = b; - _valuesAsByte[3] = a; - - CalculateHSL(); - } - - /// - /// initialize a new MudColor with new RGB values but keeps the hue value from the color - /// - /// R - /// G - /// B - /// Existing color to copy hue value from - public Color(byte r, byte g, byte b, Color color) : this(r, g, b, color.A) - { - H = color.H; - } - - public Color(int r, int g, int b, double alpha) : - this(r, g, b, (byte)((alpha * 255.0).EnsureRange(255))) - { - - } - - public Color(int r, int g, int b, int alpha) : - this((byte)r.EnsureRange(255), (byte)g.EnsureRange(255), (byte)b.EnsureRange(255), (byte)alpha.EnsureRange(255)) - { - - } - - public Color(string value) - { - value = value.Trim().ToLower(); - - if (value.StartsWith("rgba") == true) - { - var parts = SplitInputIntoParts(value); - if (parts.Length != 4) - { - throw new ArgumentException("invalid color format"); - } - - _valuesAsByte = new byte[] - { - byte.Parse(parts[0],CultureInfo.InvariantCulture), - byte.Parse(parts[1],CultureInfo.InvariantCulture), - byte.Parse(parts[2],CultureInfo.InvariantCulture), - (byte)Math.Max(0, Math.Min(255, 255 * double.Parse(parts[3],CultureInfo.InvariantCulture))), - }; - } - else if (value.StartsWith("rgb") == true) - { - var parts = SplitInputIntoParts(value); - if (parts.Length != 3) - { - throw new ArgumentException("invalid color format"); - } - _valuesAsByte = new byte[] - { - byte.Parse(parts[0],CultureInfo.InvariantCulture), - byte.Parse(parts[1],CultureInfo.InvariantCulture), - byte.Parse(parts[2],CultureInfo.InvariantCulture), - 255 - }; - } - else - { - - if (value.StartsWith("#")) - { - value = value.Substring(1); - } - - switch (value.Length) - { - case 3: - value = new string(new char[8] { value[0], value[0], value[1], value[1], value[2], value[2], 'F', 'F' }); - break; - case 4: - value = new string(new char[8] { value[0], value[0], value[1], value[1], value[2], value[2], value[3], value[3] }); - break; - case 6: - value += "FF"; - break; - case 8: - break; - default: - throw new ArgumentException("not a valid color", nameof(value)); - } - - _valuesAsByte = new byte[] - { - GetByteFromValuePart(value,0), - GetByteFromValuePart(value,2), - GetByteFromValuePart(value,4), - GetByteFromValuePart(value,6), - }; - - CalculateHSL(); - } - } - - - - #endregion - - #region Methods - - private void CalculateHSL() - { - var h = 0D; - var s = 0D; - double l; - - // normalize red, green, blue values - var r = R / 255D; - var g = G / 255D; - var b = B / 255D; - - var max = Math.Max(r, Math.Max(g, b)); - var min = Math.Min(r, Math.Min(g, b)); - - // hue - if (Math.Abs(max - min) < EPSILON) - h = 0D; // undefined - else if ((Math.Abs(max - r) < EPSILON) - && (g >= b)) - h = (60D * (g - b)) / (max - min); - else if ((Math.Abs(max - r) < EPSILON) - && (g < b)) - h = ((60D * (g - b)) / (max - min)) + 360D; - else if (Math.Abs(max - g) < EPSILON) - h = ((60D * (b - r)) / (max - min)) + 120D; - else if (Math.Abs(max - b) < EPSILON) - h = ((60D * (r - g)) / (max - min)) + 240D; - - // luminance - l = (max + min) / 2D; - - // saturation - if ((Math.Abs(l) < EPSILON) - || (Math.Abs(max - min) < EPSILON)) - s = 0D; - else if ((0D < l) - && (l <= .5D)) - s = (max - min) / (max + min); - else if (l > .5D) - s = (max - min) / (2D - (max + min)); //(max-min > 0)? - - H = Math.Round(h.EnsureRange(360), 0); - S = Math.Round(s.EnsureRange(1), 2); - L = Math.Round(l.EnsureRange(1), 2); - } - - public Color SetH(double h) => new(h, S, L, A); - public Color SetS(double s) => new(H, s, L, A); - public Color SetL(double l) => new(H, S, l, A); - - public Color SetR(int r) => new(r, G, B, A); - public Color SetG(int g) => new(R, g, B, A); - public Color SetB(int b) => new(R, G, b, A); - - public Color SetAlpha(int a) => new(R, G, B, a); - public Color SetAlpha(double a) => new(R, G, B, a); - - public Color ChangeLightness(double amount) => new(H, S, Math.Max(0, Math.Min(1, L + amount)), A); - public Color ColorLighten(double amount) => ChangeLightness(+amount); - public Color ColorDarken(double amount) => ChangeLightness(-amount); - public Color ColorRgbLighten() => ColorLighten(0.075); - public Color ColorRgbDarken() => ColorDarken(0.075); - - #endregion - - #region Helper - - private static string[] SplitInputIntoParts(string value) - { - var startIndex = value.IndexOf('('); - var lastIndex = value.LastIndexOf(')'); - var subString = value[(startIndex + 1)..lastIndex]; - var parts = subString.Split(',', StringSplitOptions.RemoveEmptyEntries); - for (var i = 0; i < parts.Length; i++) - { - parts[i] = parts[i].Trim(); - } - return parts; - } - - private byte GetByteFromValuePart(string input, int index) => byte.Parse(new string(new char[] { input[index], input[index + 1] }), NumberStyles.HexNumber); - - public bool HslChanged(Color value) => this.H != value.H || this.S != value.S || this.L != value.L; - - #endregion - - #region operators and object members - - public static implicit operator Color(string input) => new(input); - //public static implicit operator string(MudColor input) => input == null ? string.Empty : input.Value; - - public static explicit operator string(Color color) => color == null ? string.Empty : color.Value; - - public override string ToString() => ToString(ColorOutputFormats.HexA); - - public string ToString(ColorOutputFormats format) => format switch - { - ColorOutputFormats.Hex => Value.Substring(0, 7), - ColorOutputFormats.HexA => Value, - ColorOutputFormats.RGB => $"rgb({R},{G},{B})", - ColorOutputFormats.RGBA => $"rgba({R},{G},{B},{(A / 255.0).ToString(CultureInfo.InvariantCulture)})", - ColorOutputFormats.ColorElements => $"{R},{G},{B}", - _ => Value, - }; - - public override bool Equals(object obj) => obj is Color color && Equals(color); - - public bool Equals(Color other) - { - if (ReferenceEquals(other, null) == true) { return false; } - - return - _valuesAsByte[0] == other._valuesAsByte[0] && - _valuesAsByte[1] == other._valuesAsByte[1] && - _valuesAsByte[2] == other._valuesAsByte[2] && - _valuesAsByte[3] == other._valuesAsByte[3]; - } - - public override int GetHashCode() => _valuesAsByte[0] + _valuesAsByte[1] + _valuesAsByte[2] + _valuesAsByte[3]; - - public static bool operator ==(Color lhs, Color rhs) - { - var lhsIsNull = ReferenceEquals(null, lhs); - var rhsIsNull = ReferenceEquals(null, rhs); - if (lhsIsNull == true && rhsIsNull == true) - { - return true; - } - else - { - if ((lhsIsNull || rhsIsNull) == true) - { - return false; - } - else - { - return lhs.Equals(rhs); - } - } - } - - public static bool operator !=(Color lhs, Color rhs) => !(lhs == rhs); - - #endregion - - -} diff --git a/src/Connected.Components/Utilities/ColorManager.cs b/src/Connected.Components/Utilities/ColorManager.cs deleted file mode 100644 index 7f063ff..0000000 --- a/src/Connected.Components/Utilities/ColorManager.cs +++ /dev/null @@ -1,113 +0,0 @@ -using System; -using System.Globalization; -using System.Diagnostics.CodeAnalysis; - -namespace Connected.Utilities -{ - [ExcludeFromCodeCoverage] - [Obsolete("Use MudColor instead.", true)] - public class ColorManager - { - public static System.Drawing.Color FromHex(string hex) - { - FromHex(hex, out var a, out var r, out var g, out var b); - - return System.Drawing.Color.FromArgb(a, r, g, b); - } - - // amount is between 0.0 and 1.0 - public static System.Drawing.Color ColorLighten(System.Drawing.Color rgbColor, double amount) - { - var hsl = ColorTransformation.RgBtoHsl(rgbColor); - hsl.L = Math.Max(0, Math.Min(1, hsl.L + amount)); - return ColorTransformation.HsLtoRgb(hsl, rgbColor.A); - } - - // amount is between 0.0 and 1.0 - public static System.Drawing.Color ColorDarken(System.Drawing.Color rgbColor, double amount) - { - var hsl = ColorTransformation.RgBtoHsl(rgbColor); - hsl.L = Math.Max(0, Math.Min(1, hsl.L - amount)); - return ColorTransformation.HsLtoRgb(hsl, rgbColor.A); - } - - public static void FromHex(string hex, out byte a, out byte r, out byte g, out byte b) - { - hex = ToRgbaHex(hex); - if (hex == null || !uint.TryParse(hex, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out var packedValue)) - { - throw new ArgumentException("Hexadecimal string is not in the correct format.", nameof(hex)); - } - - a = (byte)(packedValue >> 0); - r = (byte)(packedValue >> 24); - g = (byte)(packedValue >> 16); - b = (byte)(packedValue >> 8); - } - - public static string ToRgbaFromHex(string hex, double alpha) - { - var color = FromHex(hex); - return $"rgba({color.R},{color.G},{color.B}, {alpha.ToString(CultureInfo.InvariantCulture)})"; - } - - - private static string ToRgbaHex(string hex) - { - hex = hex.StartsWith("#") ? hex.Substring(1) : hex; - - if (hex.Length == 8) - { - return hex; - } - - if (hex.Length == 6) - { - return hex + "FF"; - } - - if (hex.Length is < 3 or > 4) - { - return null; - } - - var red = char.ToString(hex[0]); - var green = char.ToString(hex[1]); - var blue = char.ToString(hex[2]); - var alpha = hex.Length == 3 ? "F" : char.ToString(hex[3]); - - return string.Concat(red, red, green, green, blue, blue, alpha, alpha); - } - - public static string ColorRgbDarken(string hex) - { - var color = FromHex(hex); - color = ColorDarken(color, 0.075); - return $"rgb({color.R},{color.G},{color.B})"; - } - public static string ColorRgbLighten(string hex) - { - var color = FromHex(hex); - color = ColorLighten(color, 0.075); - return $"rgb({color.R},{color.G},{color.B})"; - } - - public static string ColorRgb(string hex) - { - var color = FromHex(hex); - return $"rgb({color.R},{color.G},{color.B})"; - } - - public static string ColorRgbElements(string hex) - { - var color = FromHex(hex); - return $"{color.R},{color.G},{color.B}"; - } - - public static string ColorRgba(string hex, double alpha) - { - var color = FromHex(hex); - return $"rgba({color.R},{color.G},{color.B}, {alpha.ToString(CultureInfo.InvariantCulture)})"; - } - } -} diff --git a/src/Connected.Components/Utilities/ColorTransformation.cs b/src/Connected.Components/Utilities/ColorTransformation.cs deleted file mode 100644 index 7d6c9cf..0000000 --- a/src/Connected.Components/Utilities/ColorTransformation.cs +++ /dev/null @@ -1,144 +0,0 @@ -// Copyright (c) Steven Coco -// https://stackoverflow.com/questions/4087581/creating-a-c-sharp-color-from-hsl-values/4087601#4087601 -// Stripped and adapted by Meinrad Recheis for MudBlazor - -using System; -using System.Diagnostics.CodeAnalysis; -using SystemMath = System.Math; - -namespace Connected.Utilities -{ - /// - /// Static methods for transforming argb spaces and argb values. - /// - [ExcludeFromCodeCoverage] - [Obsolete("Use MudColor instead.", true)] - public static class ColorTransformation - { - private static double EPSILON => 0.000000000000001; - - public class HSLColor - { - public double H { get; set; } - public double S { get; set; } - public double L { get; set; } - } - - /// - /// Converts RGB to HSL. Alpha is ignored. - /// Output is: { H: [0, 360], S: [0, 1], L: [0, 1] }. - /// - /// The color to convert. - public static HSLColor RgBtoHsl(System.Drawing.Color color) - { - var h = 0D; - var s = 0D; - double l; - - // normalize red, green, blue values - var r = color.R / 255D; - var g = color.G / 255D; - var b = color.B / 255D; - - var max = SystemMath.Max(r, SystemMath.Max(g, b)); - var min = SystemMath.Min(r, SystemMath.Min(g, b)); - - // hue - if (SystemMath.Abs(max - min) < EPSILON) - h = 0D; // undefined - else if ((SystemMath.Abs(max - r) < EPSILON) - && (g >= b)) - h = (60D * (g - b)) / (max - min); - else if ((SystemMath.Abs(max - r) < EPSILON) - && (g < b)) - h = ((60D * (g - b)) / (max - min)) + 360D; - else if (SystemMath.Abs(max - g) < EPSILON) - h = ((60D * (b - r)) / (max - min)) + 120D; - else if (SystemMath.Abs(max - b) < EPSILON) - h = ((60D * (r - g)) / (max - min)) + 240D; - - // luminance - l = (max + min) / 2D; - - // saturation - if ((SystemMath.Abs(l) < EPSILON) - || (SystemMath.Abs(max - min) < EPSILON)) - s = 0D; - else if ((0D < l) - && (l <= .5D)) - s = (max - min) / (max + min); - else if (l > .5D) - s = (max - min) / (2D - (max + min)); //(max-min > 0)? - - return new HSLColor - { - H = SystemMath.Max(0D, SystemMath.Min(360D, h)), - S = SystemMath.Max(0D, SystemMath.Min(1D, s)), - L = SystemMath.Max(0D, SystemMath.Min(1D, l)) - }; - } - - /// - /// Converts HSL to RGB, with a specified output Alpha. - /// Arguments are limited to the defined range: - /// does not raise exceptions. - /// - /// HSL comprising of - - /// hsl.H (Hue), must be in [0, 360] - - /// hsl.S (Saturation), must be in [0, 1] - - /// hsl.L (Luminance), must be in [0, 1]. - /// Output Alpha, must be in [0, 255]. - public static System.Drawing.Color HsLtoRgb(HSLColor hsl, int a = 255) - { - var h = SystemMath.Max(0D, SystemMath.Min(360D, hsl.H)); - var s = SystemMath.Max(0D, SystemMath.Min(1D, hsl.S)); - var l = SystemMath.Max(0D, SystemMath.Min(1D, hsl.L)); - a = SystemMath.Max(0, SystemMath.Min(255, a)); - - // achromatic argb (gray scale) - if (SystemMath.Abs(s) < EPSILON) - { - return System.Drawing.Color.FromArgb( - a, - SystemMath.Max(0, SystemMath.Min(255, Convert.ToInt32(double.Parse($"{l * 255D:0.00}")))), - SystemMath.Max(0, SystemMath.Min(255, Convert.ToInt32(double.Parse($"{l * 255D:0.00}")))), - SystemMath.Max(0, SystemMath.Min(255, Convert.ToInt32(double.Parse($"{l * 255D:0.00}"))))); - } - - var q = l < .5D - ? l * (1D + s) - : (l + s) - (l * s); - var p = (2D * l) - q; - - var hk = h / 360D; - var T = new double[3]; - T[0] = hk + (1D / 3D); // Tr - T[1] = hk; // Tb - T[2] = hk - (1D / 3D); // Tg - - for (var i = 0; i < 3; i++) - { - if (T[i] < 0D) - T[i] += 1D; - if (T[i] > 1D) - T[i] -= 1D; - - if ((T[i] * 6D) < 1D) - T[i] = p + ((q - p) * 6D * T[i]); - else if ((T[i] * 2D) < 1) - T[i] = q; - else if ((T[i] * 3D) < 2) - T[i] = p + ((q - p) * ((2D / 3D) - T[i]) * 6D); - else - T[i] = p; - } - - return System.Drawing.Color.FromArgb( - a, - SystemMath.Max(0, SystemMath.Min(255, (int)Math.Round(T[0] * 255D))), - SystemMath.Max(0, SystemMath.Min(255, (int)Math.Round(T[1] * 255D))), - SystemMath.Max(0, SystemMath.Min(255, (int)Math.Round(T[2] * 255D)))); - } - - } -} diff --git a/src/Connected.Components/Utilities/EventUtil.cs b/src/Connected.Components/Utilities/EventUtil.cs deleted file mode 100644 index c03efa4..0000000 --- a/src/Connected.Components/Utilities/EventUtil.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Components; - -namespace Connected -{ - /// - /// This class enables calling events as Non-rendering - /// https://learn.microsoft.com/en-us/aspnet/core/blazor/performance?view=aspnetcore-6.0#avoid-rerendering-after-handling-events-without-state-changes - /// - - public static class EventUtil - { - public static Action AsNonRenderingEventHandler(Action callback) - => new SyncReceiver(callback).Invoke; - public static Action AsNonRenderingEventHandler( - Action callback) - => new SyncReceiver(callback).Invoke; - public static Func AsNonRenderingEventHandler(Func callback) - => new AsyncReceiver(callback).Invoke; - public static Func AsNonRenderingEventHandler( - Func callback) - => new AsyncReceiver(callback).Invoke; - - private record SyncReceiver(Action callback) - : ReceiverBase { public void Invoke() => callback(); } - private record SyncReceiver(Action callback) - : ReceiverBase { public void Invoke(T arg) => callback(arg); } - private record AsyncReceiver(Func callback) - : ReceiverBase { public Task Invoke() => callback(); } - private record AsyncReceiver(Func callback) - : ReceiverBase { public Task Invoke(T arg) => callback(arg); } - - private record ReceiverBase : IHandleEvent - { - public Task HandleEventAsync(EventCallbackWorkItem item, object arg) => - item.InvokeAsync(arg); - } - } -} \ No newline at end of file diff --git a/src/Connected.Components/Utilities/Exceptions/GenericTypeMismatchException.cs b/src/Connected.Components/Utilities/Exceptions/GenericTypeMismatchException.cs deleted file mode 100644 index 1a4e9f9..0000000 --- a/src/Connected.Components/Utilities/Exceptions/GenericTypeMismatchException.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Diagnostics.CodeAnalysis; - -namespace Connected.Utilities.Exceptions -{ - [ExcludeFromCodeCoverage] - public class GenericTypeMismatchException : Exception - { - public GenericTypeMismatchException(string parent, string child, Type t1, Type t2) : base($"{parent}<{t1.Name}> has a child {child}<{t2}> with mismatching generic type.") - { - } - } -} diff --git a/src/Connected.Components/Utilities/FormFieldChangedEventArgs.cs b/src/Connected.Components/Utilities/FormFieldChangedEventArgs.cs deleted file mode 100644 index 53078a9..0000000 --- a/src/Connected.Components/Utilities/FormFieldChangedEventArgs.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Connected.Components; - -namespace Connected.Utilities; - -public class FormFieldChangedEventArgs -{ - public IFormComponent Field { get; set; } - public object NewValue { get; set; } -} diff --git a/src/Connected.Components/Utilities/HashSetExtensions.cs b/src/Connected.Components/Utilities/HashSetExtensions.cs deleted file mode 100644 index bbb748f..0000000 --- a/src/Connected.Components/Utilities/HashSetExtensions.cs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Connected.Utilities -{ - public static class HashSetExtensions - { - public static bool IsEqualTo(this HashSet self, ICollection other) - { - if (object.ReferenceEquals(self, other)) - return true; - if (self == null && other !=null || self != null && other == null) - return false; - if (self.Count != other.Count) - return false; - foreach (var value in other) - { - if (!self.Contains(value)) - return false; - } - return true; - } - } -} diff --git a/src/Connected.Components/Utilities/Helper.cs b/src/Connected.Components/Utilities/Helper.cs index 11897e6..17d3193 100644 --- a/src/Connected.Components/Utilities/Helper.cs +++ b/src/Connected.Components/Utilities/Helper.cs @@ -1,7 +1,37 @@ -namespace Connected.Utilities; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Connected.Utilities; public static class Helper { - public static bool IsNumericType(string type) + public static string GetEnumDescription(T EnumVariable) + { + string result = string.Empty; + + if (!typeof(T).IsEnum) + return string.Empty; + + result = EnumVariable.ToString(); + + var fieldInfo = EnumVariable.GetType().GetField(EnumVariable.ToString()); + + if (fieldInfo != null) + { + var attrs = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), true); + if (attrs != null && attrs.Length > 0) + { + result = ((DescriptionAttribute)attrs[0]).Description; + } + } + + return result; + } + + public static bool IsTypeNumeric(string type) { switch (type.ToLower()) { @@ -21,13 +51,38 @@ public static class Helper } } - public static bool IsNumeric(string input) + public static bool IsTypeDate(string type) + { + switch (type.ToLower()) + { + case "datetime": + case "dateonly": + case "timeonly": + return true; + default: + return false; + } + } + + public static bool IsTypeString(string type) + { + switch (type.ToLower()) + { + case "string": + return true; + default: + return false; + } + } + + public static bool IsVariableNumeric(string input) { try { var number = Double.Parse(input); return true; - } catch + } + catch { return false; } diff --git a/src/Connected.Components/Utilities/MaskAlgorithms/BaseMask.cs b/src/Connected.Components/Utilities/MaskAlgorithms/BaseMask.cs deleted file mode 100644 index 16fa4ef..0000000 --- a/src/Connected.Components/Utilities/MaskAlgorithms/BaseMask.cs +++ /dev/null @@ -1,268 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Collections.Generic; -using System.Linq; -using System.Text.RegularExpressions; - -namespace Connected; - -public abstract class BaseMask : IMask -{ - protected bool _initialized; - protected Dictionary _maskDict; - - protected MaskChar[] _maskChars = new MaskChar[] - { - MaskChar.Letter('a'), MaskChar.Digit('0'), MaskChar.LetterOrDigit('*'), - }; - - // per definition (unless defined otherwise in subclasses) delimiters are chars - // in the mask which do not match any MaskChar - protected HashSet _delimiters; - - /// - /// Initialize all internal data structures. Can be called multiple times, - /// will initialize only once. To re-initialize set _initialized to false. - /// - protected void Init() - { - if (_initialized) - return; - _initialized = true; - InitInternals(); - } - - protected virtual void InitInternals() - { - _maskDict = _maskChars.ToDictionary(x => x.Char); - if (Mask == null) - _delimiters = new(); - else - _delimiters = - new HashSet(Mask.Where(c => _maskChars.All(maskDef => maskDef.Char != c))); - } - - /// - /// The mask defining the structure of the accepted input. - /// The mask format depends on the implementation. - /// - public string Mask { get; protected set; } - - /// - /// The current text as it is displayed in the component - /// - public string Text { get; protected set; } - - /// - /// Get the Text without delimiters or placeholders. Depends on the implementation entirely. - /// Clean text will usually be used for the Value property of a mask field. - /// - public virtual string GetCleanText() => Text; - - /// - /// The current caret position - /// - public int CaretPos { get; set; } - - /// - /// The currently selected sub-section of the Text - /// - public (int, int)? Selection { get; set; } - - /// - /// Allow showing a text consisting only of delimiters - /// - public bool AllowOnlyDelimiters { get; set; } - - /// - /// The mask chars define the meaning of single mask characters such as 'a', '0' - /// - public MaskChar[] MaskChars - { - get => _maskChars; - set - { - _maskChars = value; - // force re-initialization - _initialized = false; - } - } - - /// - /// Implements user input at the current caret position (single key strokes or pasting longer text) - /// - /// - public abstract void Insert(string input); - - /// - /// Implements the effect of the Del key at the current cursor position - /// - public abstract void Delete(); - - /// - /// Implements the effect of the Backspace key at the current cursor position - /// - public abstract void Backspace(); - - /// - /// Reset the mask as if the whole textfield was cleared - /// - public void Clear() - { - Init(); - Text = ""; - CaretPos = 0; - Selection = null; - } - - /// - /// Overwrite the mask text from the outside without losing caret position - /// - /// - public void SetText(string text) - { - Clear(); - Insert(text); - } - - /// - /// Update Text from the inside - /// - /// - protected virtual void UpdateText(string text) - { - // don't show a text consisting only of delimiters and placeholders (no actual input) - if (!AllowOnlyDelimiters && text.All(c => _delimiters.Contains(c))) - { - Text = ""; - return; - } - Text = text; - CaretPos = ConsolidateCaret(Text, CaretPos); - } - - protected abstract void DeleteSelection(bool align); - - protected virtual bool IsDelimiter(char maskChar) - { - return _delimiters.Contains(maskChar); - } - - public virtual void UpdateFrom(IMask o) - { - var other = o as BaseMask; - if (other == null) - return; - if (other.Mask != Mask) - { - Mask = other.Mask; - _initialized = false; - } - if (other.MaskChars != null) - { - var maskChars = new HashSet(_maskChars ?? new MaskChar[0]); - if (other.MaskChars.Length != MaskChars.Length || other.MaskChars.Any(x => !maskChars.Contains(x))) - { - _maskChars = other.MaskChars; - _initialized = false; - } - } - Refresh(); - } - - /// - /// Re-applies parameters (i.e. after they changed) without loosing internal state - /// such as Text, CaretPos and Selection - /// - protected virtual void Refresh() - { - var caret = CaretPos; - var sel = Selection; - SetText(Text); - CaretPos = ConsolidateCaret(Text, caret); - Selection = sel; - if (sel != null) - ConsolidateSelection(); - } - - internal static (string, string) SplitAt(string text, int pos) - { - if (pos <= 0) - return ("", text); - if (pos >= text.Length) - return (text, ""); - return (text.Substring(0, pos), text.Substring(pos)); - } - - /// - /// Performs simple border checks and corrections to the caret position - /// - protected static int ConsolidateCaret(string text, int caretPos) - { - if (string.IsNullOrEmpty(text) || caretPos < 0) - return 0; - if (caretPos < text.Length) - return caretPos; - return text.Length; - } - - /// - /// Performs simple border checks and corrections to the selection - /// and removes zero-width selections - /// - protected void ConsolidateSelection() - { - if (Selection == null) - return; - var sel = Selection.Value; - if (sel.Item1 == sel.Item2) - { - CaretPos = sel.Item1; - Selection = null; - return; - } - if (sel.Item1 < 0) - sel.Item1 = 0; - if (sel.Item2 >= Text.Length) - sel.Item2 = Text.Length; - } - - internal static (string, string, string) SplitSelection(string text, (int, int) selection) - { - var start = ConsolidateCaret(text, selection.Item1); - var end = ConsolidateCaret(text, selection.Item2); - (var s1, var rest) = SplitAt(text, start); - (var s2, var s3) = SplitAt(rest, end - start); - return (s1, s2, s3); - } - - /// - /// Prints a representation of the input including markers for caret and selection - /// Used heavily by the tests - /// - /// - public override string ToString() - { - var text = Text ?? ""; - ConsolidateSelection(); - if (Selection == null) - { - var pos = ConsolidateCaret(text, CaretPos); - if (pos < text.Length) - return text.Insert(pos, "|"); - return text + "|"; - } - else - { - var sel = Selection.Value; - var start = ConsolidateCaret(text, sel.Item1); - var end = ConsolidateCaret(text, sel.Item2); - (var s1, var rest) = SplitAt(text, start); - (var s2, var s3) = SplitAt(rest, end - start); - return s1 + "[" + s2 + "]" + s3; - } - } - -} diff --git a/src/Connected.Components/Utilities/MaskAlgorithms/BlockMask.cs b/src/Connected.Components/Utilities/MaskAlgorithms/BlockMask.cs deleted file mode 100644 index 2c1c8fd..0000000 --- a/src/Connected.Components/Utilities/MaskAlgorithms/BlockMask.cs +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; - -namespace Connected; - -public record struct Block(char MaskChar, int Min = 1, int Max = 1); - -public class BlockMask : RegexMask -{ - public BlockMask(params Block[] blocks) : base(null) - { - if (blocks.Length == 0) - throw new ArgumentException("supply at least one block", nameof(blocks)); - Blocks = blocks; - Delimiters = ""; - } - - public BlockMask(string delimiters, params Block[] blocks) : this(blocks) - { - Delimiters = delimiters ?? ""; - } - - public Block[] Blocks { get; protected set; } - - protected override void InitInternals() - { - base.InitInternals(); - Blocks ??= new Block[0]; - Mask = BuildRegex(Blocks); - _regex = new Regex(Mask); - } - - protected override void InitRegex() - { - // BlockMask inits regex itself (but after base init), no need to do it twice - // so don't call base init here - //base.InitRegex(); - } - - /// - /// Build the progressive working regex from the block and delimiter definitions - /// Note: a progressive regex must match partial input!!!! - /// - /// - /// - protected virtual string BuildRegex(Block[] blocks) - { - var s = new StringBuilder(); - int i = 0; - int blockIndex = 0; - s.Append("^"); - foreach (var b in blocks) - { - for (int j = 0; j < b.Min; j++) - { - if (i > 0) - s.Append("("); - if (_maskDict.TryGetValue(b.MaskChar, out var maskDef)) - s.Append(maskDef.Regex); - else - s.Append(Regex.Escape(b.MaskChar.ToString())); - } - - i += b.Min; - if (b.Max > b.Min) - { - for (int j = b.Min; j < b.Max; j++) - { - s.Append("("); - if (_maskDict.TryGetValue(b.MaskChar, out var maskDef)) - s.Append(maskDef.Regex); - else - s.Append(Regex.Escape(b.MaskChar.ToString())); - } - - for (int j = b.Min; j < b.Max; j++) - s.Append(")?"); - } - - if (_delimiters.Count > 0 && blockIndex < blocks.Length - 1) - { - s.Append("(["); - foreach (var d in _delimiters) - s.Append(Regex.Escape(d.ToString())); - s.Append("]"); - i++; - } - - blockIndex++; - } - - for (int j = 0; j < i - 1; j++) - s.Append(")?"); - s.Append("$"); - return s.ToString(); - } - - public override void UpdateFrom(IMask other) - { - base.UpdateFrom(other); - var o = other as BlockMask; - if (o == null) - return; - Blocks = o.Blocks ?? new Block[0]; - Delimiters = o.Delimiters; - _initialized = false; - Refresh(); - } -} diff --git a/src/Connected.Components/Utilities/MaskAlgorithms/DateMask.cs b/src/Connected.Components/Utilities/MaskAlgorithms/DateMask.cs deleted file mode 100644 index d9d6e09..0000000 --- a/src/Connected.Components/Utilities/MaskAlgorithms/DateMask.cs +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading; -using System.Threading.Tasks; - -namespace Connected; - -public class DateMask : PatternMask -{ - - public DateMask(string mask, char year = 'y', char month = 'M', char day = 'd') : base(mask) - { - _y = year; - _M = month; - _d = day; - _maskChars = _maskChars.Concat(new[] { MaskChar.Digit(year), MaskChar.Digit(month), MaskChar.Digit(day), }) - .ToArray(); - } - - private char _y; - private char _M; - private char _d; - - private int _year = 0; - private int _month = 0; - private int _day = 0; - - protected override void ModifyPartiallyAlignedMask(string mask, string text, int maskOffset, ref int textIndex, ref int maskIndex, ref string alignedText) - { - if (alignedText.IsEmpty()) - return; - var y = ExtractYear(mask, alignedText, maskOffset); - if (y >= 0) - _year = y; - MonthLogic(mask, text, maskOffset, ref textIndex, ref maskIndex, ref alignedText); - DayLogic(mask, text, maskOffset, ref textIndex, ref maskIndex, ref alignedText); - } - - private int ExtractYear(string mask, string alignedText, int maskOffset) - { - var yyyy = new string(_y, 4); - var yy = new string(_y, 2); - if (mask.Contains(yyyy)) - { - var (yearString, _) = Extract(yyyy, mask, maskOffset, alignedText); - if (yearString == null || yearString.Length < 4) - return -1; - if (int.TryParse(yearString, out var year)) - return year; - } - else if (mask.Contains(yy)) - { - var (yearString, _) = Extract(yy, mask, maskOffset, alignedText); - if (yearString == null || yearString.Length < 2) - return -1; - if (int.TryParse(yearString, out var y)) - return (DateTime.Today.Year / 100 * 100) + y; // this code will still work in 2100 until 2900. I guess in a thousand years we'll have to update this line ;) - } - return -1; - } - - private void MonthLogic(string mask, string text, int maskOffset, ref int textIndex, ref int maskIndex, ref string alignedText) - { - var MM = new string(_M, 2); - var (monthString, index) = Extract(MM, mask, maskOffset, alignedText); - if (monthString == null) - return; - if (!int.TryParse(monthString, out var month)) - return; - if (monthString.Length == 1) - { - // we are at the first digit of MM, only 0 and 1 are allowed - if (month > 1) - { - alignedText = alignedText.Insert(index, "0"); - maskIndex++; - } - } - else if (monthString.Length == 2) - { - var fixedMonth = FixMonth(month); - _month = fixedMonth; - if (fixedMonth != month) - alignedText = alignedText.Remove(index, 2).Insert(index, $"{fixedMonth:D2}"); - } - } - - private void DayLogic(string mask, string text, int maskOffset, ref int textIndex, ref int maskIndex, ref string alignedText) - { - var dd = new string(_d, 2); - var (dayString, index) = Extract(dd, mask, maskOffset, alignedText); - if (dayString == null) - return; - if (!int.TryParse(dayString, out var day)) - return; - if (dayString.Length == 1) - { - // we are at the first digit of dd, only 0..3 are allowed except if month is February. - if (day > 3 || day == 3 && _month == 2) - { - // by inserting a 0 we make 09 out of 9 - alignedText = alignedText.Insert(index, "0"); - maskIndex++; - _day = day; - } - } - else if (dayString.Length == 2) - { - var fixedDay = FixDay(_year, _month, day); - if (fixedDay != day) - alignedText = alignedText.Remove(index, 2).Insert(index, $"{fixedDay:D2}"); - _day = fixedDay; - } - } - - /// - /// Note: this is required for special cases where the date becomes invalid after the last character has been input - /// For instance: MM/dd/yyyy from 02/29/000| to 02/29/0001| - /// The year 0001 is not a leap year so the day needs to be corrected to 28 - /// Or this 0[3]/31/2000 input "4" => 04/31/2000 - /// But we do this only for a complete date! - /// - protected override string ModifyFinalText(string text) - { - try - { - var yyyy = new string(_y, 4); - var yy = new string(_y, 2); - var dd = new string(_d, 2); - var MM = new string(_M, 2); - var maskHasDay = Mask.Contains(dd); - var maskHasMonth = Mask.Contains(MM); - var maskHasYear = Mask.Contains(yy) || Mask.Contains(yyyy); - var (dayString, dayIndex) = Extract(dd, Mask, 0, text); - var (monthString, monthIndex) = Extract(MM, Mask, 0, text); - var dayFound = dayIndex >= 0; - var dayComplete = dayString?.Length == 2; - var monthFound = monthIndex >= 0; - var monthComplete = monthString?.Length == 2; - var y = ExtractYear(Mask, text, 0); - //if (maskHasYear && y < 0 || maskHasMonth && (!monthFound || !monthComplete) || maskHasDay && (!dayFound || !dayComplete)) - // return text; // we have incomplete input, no final check necessary/possible - int.TryParse(dayString ?? "", out var d); - int.TryParse(monthString ?? "", out var m); - if (!maskHasYear) - y = 0; - if (y < 0) - y = _year; - if (maskHasMonth && (monthFound || monthComplete)) - { - var m1 = FixMonth(m); - if (m1 != m) - text = text.Remove(monthIndex, 2).Insert(monthIndex, $"{m1:D2}"); - } - - if (maskHasDay && (dayFound || dayComplete)) - { - var d1 = FixDay(y, m, d); - text = text.Remove(dayIndex, 2).Insert(dayIndex, $"{d1:D2}"); - } - } - catch (Exception e) - { - Console.WriteLine("Error in ModifyFinalText: " +e.Message); - return text; - } - return text; - } - - private int FixDay(int year, int month, int day) - { - if (day == 0) - return 1; - if (day > 28) - { - var daysInMonth = GetDaysInMonth(year, month); - if (day > daysInMonth) - return daysInMonth; - } - return day; - } - - private int FixMonth(int month) - { - if (month == 0) - return 1; - if (month > 12) - return 12; - return month; - } - - private int GetDaysInMonth(int year, int month) - { - if (month <= 0 || month > 12) // we don't know yet which month the user means, so assume 31 - return 31; - if (year == 0) // DateTime.DaysInMonth does not support year 0 but we just use 4 instead because it was a leap year too - year = 4; - return DateTime.DaysInMonth(year, Math.Min(12, Math.Max(1, month))); - } - - private (string, int) Extract(string maskPart, string mask, int maskOffset, string alignedText) - { - var maskIndex = mask.IndexOf(maskPart); - var index = maskIndex - maskOffset; - if (index < 0 || index >= alignedText.Length) - return (null, -1); - var subString = alignedText.Substring(index, Math.Min(maskPart.Length, alignedText.Length - index)); - if (!Regex.IsMatch(subString, @"^\d+$")) - return (null, -1); - return (subString, index); - } - - public override void UpdateFrom(IMask other) - { - base.UpdateFrom(other); - var o = other as DateMask; - if (o == null) - return; - _y = o._y; - _M = o._M; - _d = o._d; - } -} - diff --git a/src/Connected.Components/Utilities/MaskAlgorithms/IMask.cs b/src/Connected.Components/Utilities/MaskAlgorithms/IMask.cs deleted file mode 100644 index db99937..0000000 --- a/src/Connected.Components/Utilities/MaskAlgorithms/IMask.cs +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Connected -{ - public interface IMask - { - /// - /// The mask defining the structure of the accepted input. - /// Its format depends on the implementation. - /// - string Mask { get; } - - /// - /// The current text as it is displayed in the component - /// - string Text { get; } - - /// - /// Get the Text without delimiters or placeholders. Depends on the implementation entirely. - /// Clean text will usually be used for the Value property of a mask field. - /// - string GetCleanText() => Text; - - /// - /// The current caret position - /// - int CaretPos { get; set; } - - /// - /// The currently selected sub-section of the Text - /// - (int, int)? Selection { get; set; } - - /// - /// Implements user input at the current caret position (single key strokes or pasting longer text) - /// - /// - void Insert(string input); - - /// - /// Implements the effect of the Del key at the current cursor position - /// - void Delete(); - - /// - /// Implements the effect of the Backspace key at the current cursor position - /// - void Backspace(); - - /// - /// Reset the mask as if the whole textfield was cleared - /// - void Clear(); - - /// - /// Overwrite the mask text without losing caret position - /// - /// - void SetText(string text); - - /// - /// Copy config from other mask but preserve own state. - /// - /// - void UpdateFrom(IMask other); - - } -} diff --git a/src/Connected.Components/Utilities/MaskAlgorithms/MaskChar.cs b/src/Connected.Components/Utilities/MaskAlgorithms/MaskChar.cs deleted file mode 100644 index d589b97..0000000 --- a/src/Connected.Components/Utilities/MaskAlgorithms/MaskChar.cs +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Connected; - -public struct MaskChar -{ - public MaskChar(char c, string regex) - { - Char = c; - Regex = regex; - } - - public char Char { get; set; } - public string Regex { get; set; } - - public static MaskChar Letter(char c) => new MaskChar { Char = c, Regex = @"\p{L}" }; - public static MaskChar Digit(char c) => new MaskChar { Char = c, Regex = @"\d" }; - public static MaskChar LetterOrDigit(char c) => new MaskChar { Char = c, Regex = @"\p{L}|\d" }; -} diff --git a/src/Connected.Components/Utilities/MaskAlgorithms/MultiMask.cs b/src/Connected.Components/Utilities/MaskAlgorithms/MultiMask.cs deleted file mode 100644 index 55448b8..0000000 --- a/src/Connected.Components/Utilities/MaskAlgorithms/MultiMask.cs +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; - -namespace Connected -{ - public record struct MaskOption(string Id, string Mask, string Regex); - - public class MultiMask : PatternMask - { - public MultiMask(string defaultMask, params MaskOption[] options) : base(defaultMask) - { - _defaultMask = defaultMask; - _options = options ?? new MaskOption[0]; - } - - private string _defaultMask; - private MaskOption[] _options; - public Action OptionDetected { get; set; } - - public MaskOption? DetectedOption { get; private set; } = null; - - public override void Insert(string input) - { - DoCheckAndRedo(() => base.Insert(input)); - } - - public override void Delete() - { - DoCheckAndRedo(base.Delete); - } - - public override void Backspace() - { - DoCheckAndRedo(base.Backspace); - } - - /// - /// This is a nifty trick to avoid writing three times the same code for Insert, Delete and Backspace. - /// This backs up the state. Executes the action, checks if option changed. If so, apply saved state and - /// re-apply the action. - /// - /// - protected void DoCheckAndRedo(Action action) - { - // backup state - var text = Text; - var pos = CaretPos; - var sel = Selection; - // do it! - action(); - var newOption = CheckOption(); - if (newOption == DetectedOption) - return; - // detected a different option - DetectedOption = newOption; - // revert saved state - Text = text; - CaretPos = pos; - Selection = sel; - Mask = newOption != null ? newOption.Value.Mask : _defaultMask; - // when mask changes we need to re-initialize! - _initialized = false; - // do it again! - action(); - OptionDetected?.Invoke(newOption, Text); - } - - protected virtual MaskOption? CheckOption() - { - var text = Text ?? ""; - foreach (var option in _options) - { - if (option.Regex != null && Regex.IsMatch(text, option.Regex)) - return option; - } - return null; - } - - public override void UpdateFrom(IMask other) - { - base.UpdateFrom(other); - var o = other as MultiMask; - if (o == null) - return; - // no need to re-initialize, just update the options - _defaultMask = o._defaultMask; - _options = o._options ?? new MaskOption[0]; - OptionDetected = o.OptionDetected; - Refresh(); - } - } -} diff --git a/src/Connected.Components/Utilities/MaskAlgorithms/PatternMask.cs b/src/Connected.Components/Utilities/MaskAlgorithms/PatternMask.cs deleted file mode 100644 index 2e6f6f5..0000000 --- a/src/Connected.Components/Utilities/MaskAlgorithms/PatternMask.cs +++ /dev/null @@ -1,269 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text.RegularExpressions; - -namespace Connected; - -public class PatternMask : BaseMask -{ - public PatternMask(string mask) - { - Mask = mask; - } - - /// - /// If set, the mask will print placeholders for all non-delimiters that haven't yet been typed. - /// For instance a mask "000-000" with input "1" will show "1__-___" as Text. - /// - public char? Placeholder { get; set; } - - /// - /// A function for changing input characters after they were typed, i.e. lower-case to upper-case, etc. - /// - public Func Transformation { get; set; } - - /// - /// Inserts given text at caret position - /// - /// One or multiple characters of input - public override void Insert(string input) - { - Init(); - DeleteSelection(align: false); - var text = Text ?? ""; - var pos = ConsolidateCaret(text, CaretPos); - (var beforeText, var afterText) = SplitAt(text, pos); - var alignedBefore = AlignAgainstMask(beforeText, 0); - CaretPos = pos = alignedBefore.Length; - var alignedInput = AlignAgainstMask(input, pos); - CaretPos = pos += alignedInput.Length; - if (Placeholder != null) - { - var p = Placeholder.Value; - if (afterText.Take(alignedInput.Length).All(c => IsDelimiter(c) || c==p)) - afterText = new string(afterText.Skip(alignedInput.Length).ToArray()); - } - var alignedAfter = AlignAgainstMask(afterText, pos); - UpdateText( FillWithPlaceholder(alignedBefore + alignedInput + alignedAfter)); - } - - protected override void DeleteSelection(bool align) - { - ConsolidateSelection(); - if (Selection == null) - return; - var sel = Selection.Value; - (var s1, _, var s3) = SplitSelection(Text, sel); - Selection = null; - CaretPos = sel.Item1; - if (!align) - UpdateText( s1 + s3); - else - UpdateText( FillWithPlaceholder( s1 + AlignAgainstMask(s3, CaretPos))); - } - - /// - /// Implements the effect of the Del key at the current cursor position - /// - public override void Delete() - { - Init(); - if (Selection != null) - { - DeleteSelection(align: true); - return; - } - var text = Text ?? ""; - var pos = CaretPos = ConsolidateCaret(text, CaretPos); - if (pos >= text.Length) - return; - (var beforeText, var afterText) = SplitAt(text, pos); - // delete as many delimiters as there are plus one char - var restText = new string(afterText.SkipWhile(IsDelimiter).Skip(1).ToArray()); - var alignedAfter = AlignAgainstMask(restText, pos); - var numDeleted = afterText.Length - restText.Length; - if (numDeleted > 1) - { - // since we just auto-deleted delimiters which were re-created by AlignAgainstMask we can just as well - // adjust the cursor position to after the delimiters - CaretPos += (numDeleted - 1); - } - UpdateText( FillWithPlaceholder(beforeText + alignedAfter)); - } - - /// - /// Implements the effect of the Backspace key at the current cursor position - /// - public override void Backspace() - { - Init(); - if (Selection != null) - { - DeleteSelection(align: true); - return; - } - var text = Text ?? ""; - var pos = CaretPos = ConsolidateCaret(text, CaretPos); - if (pos == 0) - return; - (var beforeText, var afterText) = SplitAt(text, pos); - // backspace as many delimiters as there are plus one char - var restText = new string(beforeText.Reverse().SkipWhile(IsDelimiter).Skip(1).Reverse().ToArray()); - var numDeleted = beforeText.Length - restText.Length; - CaretPos -= numDeleted; - var alignedAfter = AlignAgainstMask(afterText, CaretPos); - UpdateText( FillWithPlaceholder(restText + alignedAfter)); - } - - /// - /// Fill the rest of the text with Placeholder but only if it is set - /// - /// - /// - protected virtual string FillWithPlaceholder(string text) - { - if (Placeholder == null) - return text; - // fill the rest with placeholder - // don't fill if text is still empty - var filledText = text; - var len = text.Length; - var mask = Mask ?? ""; - if (len == 0 || len >= mask.Length) - return text; - for (var maskIndex = len; maskIndex < mask.Length; maskIndex++) - { - var maskChar = mask[maskIndex]; - if (IsDelimiter(maskChar)) - filledText += maskChar; - else - filledText += Placeholder.Value; - } - return filledText; - } - - /// - /// Applies the mask to the given text starting at the given offset and returns the masked text. - /// - /// - /// - protected virtual string AlignAgainstMask(string text, int maskOffset = 0) - { - text ??= ""; - var mask = Mask ?? ""; - var alignedText = ""; - var maskIndex = maskOffset; // index in mask - var textIndex = 0; // index in text - while (textIndex < text.Length) - { - if (maskIndex >= mask.Length) - break; - var maskChar = mask[maskIndex]; - var textChar = text[textIndex]; - if (IsDelimiter(maskChar)) - { - alignedText += maskChar; - maskIndex++; - ModifyPartiallyAlignedMask(mask, text, maskOffset, ref textIndex, ref maskIndex, ref alignedText); - continue; - } - var isPlaceholder = Placeholder != null && textChar == Placeholder.Value; - if (IsMatch(maskChar, textChar) || isPlaceholder) - { - var c = Transformation == null ? textChar : Transformation(textChar); - alignedText += c; - maskIndex++; - } - textIndex++; - ModifyPartiallyAlignedMask(mask, text, maskOffset, ref textIndex, ref maskIndex, ref alignedText); - } - // fill any delimiters if possible - for (int i = maskIndex; i < mask.Length; i++) - { - var maskChar = mask[i]; - if (!IsDelimiter(maskChar)) - break; - alignedText += maskChar; - } - return alignedText; - } - - protected virtual void ModifyPartiallyAlignedMask(string mask, string text, int maskOffset, ref int textIndex, ref int maskIndex, ref string alignedText) - { - /* this is an override hook for more specialized mask implementations deriving from this*/ - } - - protected virtual bool IsMatch(char maskChar, char textChar) - { - var maskDef = _maskDict[maskChar]; - return Regex.IsMatch(textChar.ToString(), maskDef.Regex); - } - - /// - /// If true, all characters which are not defined in the mask (delimiters) are stripped - /// from text. - /// - public bool CleanDelimiters { get; set; } - - /// - /// Return the Text without Placeholders. If CleanDelimiters is enabled, then also strip all - /// undefined characters. For instance, for a mask "0000 0000 0000 0000" the space would be - /// an undefined character (a delimiter) unless it were defined as a mask character in MaskChars. - /// - public override string GetCleanText() - { - Init(); - var cleanText = Text; - if (string.IsNullOrEmpty(cleanText)) - return cleanText; - if (CleanDelimiters) - cleanText=new string(cleanText.Where((c,i)=>_maskDict.ContainsKey(Mask[i])).ToArray()); - if (Placeholder != null) - cleanText = cleanText.Replace(Placeholder.Value.ToString(), ""); - return cleanText; - } - - protected override void InitInternals() - { - base.InitInternals(); - if (Placeholder!=null) - _delimiters.Add(Placeholder.Value); - } - - protected override void UpdateText(string text) - { - // don't show a text consisting only of delimiters and placeholders (no actual input) - if (text.All(c => _delimiters.Contains(c) || (Placeholder!=null && c==Placeholder.Value))) - { - Text = ""; - CaretPos = 0; - return; - } - Text = ModifyFinalText(text); - CaretPos = ConsolidateCaret(Text, CaretPos); - } - - protected virtual string ModifyFinalText(string text) - { - /* this can be overridden in derived classes to apply any necessary changes to the resulting text */ - return text; - } - - public override void UpdateFrom(IMask other) - { - base.UpdateFrom(other); - var o = other as PatternMask; - if (o == null) - return; - Placeholder = o.Placeholder; - CleanDelimiters = o.CleanDelimiters; - Transformation = o.Transformation; - _initialized = false; - Refresh(); - } -} diff --git a/src/Connected.Components/Utilities/MaskAlgorithms/RegexMask.cs b/src/Connected.Components/Utilities/MaskAlgorithms/RegexMask.cs deleted file mode 100644 index c72d642..0000000 --- a/src/Connected.Components/Utilities/MaskAlgorithms/RegexMask.cs +++ /dev/null @@ -1,271 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; - -namespace Connected; - -public class RegexMask : BaseMask -{ - /// - /// Add this filter to the end of a mask to block any space, tab or newline character. - /// - private const string WhiteSpaceFilter = "(?!\\s)"; - - /// - /// Create a mask that uses a regex to restrict input. - /// - /// - /// The general or progressive regex to be used for input checking. - /// - /// Note: a general regex must match every possible input, i.e. ^[0-9]+$. - /// Note: a progressive regex must match even partial input successfully! The - /// progressive regex must start with ^ and end with $ to work correctly! - /// - /// Example: to match input "abc" a progressive regex must match "a" or "ab" or "abc". The - /// progressive regex would look like this: ^a(b(c)?)?$ or like this ^(a|ab|abc)$ - /// It is best to generate the progressive regex automatically like BlockMask does. - /// - /// - /// The mask defining the structure of the accepted input. - /// - /// Note: if not included the regex will be the mask. - /// - public RegexMask(string regex, string mask = null) - { - _regexPattern = regex; - Mask = mask ?? regex; - } - - protected string _regexPattern; - protected Regex _regex; - - /// - /// Optional delimiter chars which will be jumped over if the caret is - /// in front of one and the user inputs the next non-delimiter - /// - public string Delimiters { get; protected set; } - - protected override void InitInternals() - { - base.InitInternals(); - Delimiters ??= ""; - _delimiters = new HashSet(Delimiters); - InitRegex(); - } - - protected virtual void InitRegex() - { - _regex = new Regex(_regexPattern); - } - - /// - /// Inserts given text at caret position - /// - /// One or multiple characters of input - public override void Insert(string input) - { - Init(); - DeleteSelection(align: false); - var text = Text ?? ""; - var pos = ConsolidateCaret(text, CaretPos); - (var beforeText, var afterText) = SplitAt(text, pos); - var alignedInput = AlignAgainstMask(beforeText + input); - CaretPos = alignedInput.Length; - UpdateText(AlignAgainstMask(alignedInput + afterText)); - } - - protected override void DeleteSelection(bool align) - { - ConsolidateSelection(); - if (Selection == null) - return; - var sel = Selection.Value; - (var s1, _, var s3) = SplitSelection(Text, sel); - Selection = null; - CaretPos = sel.Item1; - if (!align) - UpdateText(s1 + s3); - else - UpdateText(AlignAgainstMask(s1 + s3)); - } - - /// - /// Implements the effect of the Del key at the current cursor position - /// - public override void Delete() - { - Init(); - if (Selection != null) - { - DeleteSelection(align: true); - return; - } - var text = Text ?? ""; - var pos = ConsolidateCaret(text, CaretPos); - if (pos >= text.Length) - return; - (var beforeText, var afterText) = SplitAt(text, pos); - // delete as many delimiters as there are plus one char - var restText = new string(afterText.SkipWhile(IsDelimiter).Skip(1).ToArray()); - UpdateText( AlignAgainstMask(beforeText + restText)); - var numDeleted = afterText.Length - restText.Length; - if (numDeleted > 1) - { - // since we just auto-deleted delimiters which were re-created by AlignAgainstMask we can just as well - // adjust the cursor position to after the delimiters - CaretPos += (numDeleted - 1); - } - } - - /// - /// Implements the effect of the Backspace key at the current cursor position - /// - public override void Backspace() - { - Init(); - if (Selection != null) - { - DeleteSelection(align: true); - return; - } - var text = Text ?? ""; - var pos = ConsolidateCaret(text, CaretPos); - if (pos == 0) - return; - (var beforeText, var afterText) = SplitAt(text, pos); - // backspace as many delimiters as there are plus one char - var restText = new string(beforeText.Reverse().SkipWhile(IsDelimiter).Skip(1).Reverse().ToArray()); - var numDeleted = beforeText.Length - restText.Length; - CaretPos -= numDeleted; - UpdateText(AlignAgainstMask(restText + afterText)); - } - - /// - /// Applies the mask to the given text starting at the given offset and returns the masked text. - /// - /// - protected virtual string AlignAgainstMask(string text) - { - text ??= ""; - var alignedText = ""; - var textIndex = 0; // index in text - while (textIndex < text.Length) - { - var textChar = text[textIndex]; - if (_regex.IsMatch(alignedText + textChar)) - alignedText += textChar; - // try to skip over a delimiter (input of values only i.e. 31122021 => 31.12.2021) - else if (Delimiters.Length > 0) - { - foreach (var d in Delimiters) - { - if (_regex.IsMatch(alignedText + d + textChar)) - { - alignedText += (d.ToString() + textChar); - break; - } - } - } - textIndex++; - } - return alignedText; - } - - public override void UpdateFrom(IMask other) - { - base.UpdateFrom(other); - var o = other as RegexMask; - if (o == null) - return; - if (Delimiters != o.Delimiters) - { - Delimiters = o.Delimiters; - _initialized = false; - } - Refresh(); - } - - /// - /// Creates a predefined RegexMask for an IPv4 Address with or without port masking. - /// - /// - /// Set to true to include port to the mask. - /// - /// - /// Set the IPv4 maskChar. Default is '0' - /// - public static RegexMask IPv4(bool includePort = false, char maskChar = '0') - { - const string Octet = "25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{0,2}"; - - var ipv4 = $"(?:{Octet})(?:\\.(?:{Octet})){{0,3}}"; - var delimiters = "."; - var octetMask = new string(maskChar, 3); - var mask = string.Join(delimiters, Enumerable.Repeat(octetMask, 4)); - if (includePort) - { - const string IpPort = - "(:|:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{0,3}))?"; - ipv4 = $"{ipv4}{IpPort}"; - mask = $"{mask}:{new string(maskChar, 5)}"; - delimiters += ":"; - } - - var regex = $"^{ipv4}{WhiteSpaceFilter}$"; - var regexMask = new RegexMask(regex, mask) { Delimiters = delimiters }; - return regexMask; - } - - /// - /// Creates a predefined RegexMask for an IPv6 Address with or without port masking. - /// - /// - /// Set to true to include port to the mask. - /// - /// - /// Set the IPv6 maskChar. Default is 'X' - /// - /// - /// Set the IPv6 portMask. Default is '0' - /// - public static RegexMask IPv6(bool includePort = false, char maskChar = 'X', char portMaskChar = '0') - { - const string Hex = "[0-9A-Fa-f]{0,4}"; - const string IPv6Filter = "(?!.*?[:]{2}?:)"; - var ipv6 = $"{Hex}(:{Hex}){{0,7}}"; - var delimiters = ":"; - var hexMask = new string(maskChar, 4); - var mask = string.Join(delimiters, Enumerable.Repeat(hexMask, 8)); - if (includePort) - { - const string IpPort = - "(\\]|\\]:|\\]:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{0,3}))?"; - ipv6 = $"((\\[{ipv6}){IpPort})"; - mask = $"[{mask}]:{new(portMaskChar, 5)}"; - delimiters += "[]"; - } - - var regex = $"^{IPv6Filter}{ipv6}{WhiteSpaceFilter}$"; - var regexMask = new RegexMask(regex, mask) { Delimiters = delimiters, AllowOnlyDelimiters = true }; - return regexMask; - } - - /// - /// Creates a predefined RegexMask for Email Address. - /// - /// - /// Set the email mask. Default is "Ex. user@domain.com" - /// - public static RegexMask Email(string mask = "Ex. user@domain.com") - { - const string Regex = $"^(?>[\\w\\-\\+]+\\.?)+(?>@?|@)(?\\w+\\.)*(\\w+)?{WhiteSpaceFilter}$"; - const string Delimiters = "@."; - var regexMask = new RegexMask(Regex, mask) { Delimiters = Delimiters }; - return regexMask; - } -} diff --git a/src/Connected.Components/Utilities/RuntimeLocation.cs b/src/Connected.Components/Utilities/RuntimeLocation.cs deleted file mode 100644 index 22e9eb7..0000000 --- a/src/Connected.Components/Utilities/RuntimeLocation.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using System.Runtime.InteropServices; - -namespace Connected.Utilities -{ - [ExcludeFromCodeCoverage] - public class RuntimeLocation - { - public static bool IsClientSide => RuntimeInformation.OSDescription == "Browser"; // WASM - public static bool IsServerSide => RuntimeInformation.OSDescription != "Browser"; - } - -} diff --git a/src/Connected.Components/Utilities/SortingAssistent.cs b/src/Connected.Components/Utilities/SortingAssistent.cs deleted file mode 100644 index a2fb3d4..0000000 --- a/src/Connected.Components/Utilities/SortingAssistent.cs +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) MudBlazor 2021 -// MudBlazor licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Linq.Expressions; -using System.Reflection; -using Connected.Components; - -namespace Connected.Utilities; - -public static class SortingAssistent -{ - public static void UpdateOrder(this IEnumerable items, ItemDropInfo dropInfo, Expression> valueUpdater, int zoneOffset = 0) - { - var memberSelectorExpression = valueUpdater.Body as MemberExpression; - if (memberSelectorExpression == null) { throw new InvalidOperationException(); } - - var property = memberSelectorExpression.Member as PropertyInfo; - - if (property == null) { throw new InvalidOperationException(); } - - var newIndex = dropInfo.IndexInZone + zoneOffset; - - var item = dropInfo.Item; - - int index = 0; - foreach (var _item in items.OrderBy(x => (int)property.GetValue(x))) - { - if (_item.Equals(item) == true) - { - property.SetValue(item, newIndex); - } - else - { - if (index == newIndex) - { - index++; - } - - property.SetValue(_item, index); - - index++; - } - } - } -} diff --git a/src/Connected.Components/compilerconfig.json b/src/Connected.Components/compilerconfig.json index 39067b7..60ddc47 100644 --- a/src/Connected.Components/compilerconfig.json +++ b/src/Connected.Components/compilerconfig.json @@ -1,6 +1,6 @@ [ - { - "outputFile": "wwwroot/Connected.Components.css", - "inputFile": "Styles/Components.scss" - } + { + "outputFile": "Styles/Connected.Components.css", + "inputFile": "Styles/Connected.Components.scss" + } ] \ No newline at end of file