├── readme.md ├── Organize.WASM ├── wwwroot │ ├── css │ │ ├── components │ │ │ ├── itemEdit.css │ │ │ ├── itemEdit.min.css │ │ │ ├── itemEdit.scss │ │ │ ├── itemCheckBox.min.css │ │ │ ├── sign.min.css │ │ │ ├── itemCheckBox.css │ │ │ ├── itemCheckBox.scss │ │ │ ├── sign.css │ │ │ ├── itemsList.min.css │ │ │ ├── sign.scss │ │ │ ├── itemsOverview.min.css │ │ │ ├── itemElement.min.css │ │ │ ├── itemsList.css │ │ │ ├── itemsOverview.css │ │ │ ├── itemsList.scss │ │ │ ├── itemElement.css │ │ │ ├── itemsOverview.scss │ │ │ └── itemElement.scss │ │ ├── open-iconic │ │ │ ├── font │ │ │ │ └── fonts │ │ │ │ │ ├── open-iconic.eot │ │ │ │ │ ├── open-iconic.otf │ │ │ │ │ ├── open-iconic.ttf │ │ │ │ │ └── open-iconic.woff │ │ │ └── ICON-LICENSE │ │ ├── _bootstrap-global.scss │ │ └── _variables.scss │ ├── appsettings.json │ ├── bootstrap │ │ ├── scss │ │ │ ├── utilities │ │ │ │ ├── _clearfix.scss │ │ │ │ ├── _overflow.scss │ │ │ │ ├── _interactions.scss │ │ │ │ ├── _screenreaders.scss │ │ │ │ ├── _visibility.scss │ │ │ │ ├── _shadows.scss │ │ │ │ ├── _float.scss │ │ │ │ ├── _align.scss │ │ │ │ ├── _background.scss │ │ │ │ ├── _stretched-link.scss │ │ │ │ ├── _sizing.scss │ │ │ │ ├── _position.scss │ │ │ │ ├── _display.scss │ │ │ │ └── _embed.scss │ │ │ ├── _media.scss │ │ │ ├── mixins │ │ │ │ ├── _clearfix.scss │ │ │ │ ├── _size.scss │ │ │ │ ├── _lists.scss │ │ │ │ ├── _text-truncate.scss │ │ │ │ ├── _resize.scss │ │ │ │ ├── _visibility.scss │ │ │ │ ├── _alert.scss │ │ │ │ ├── _text-hide.scss │ │ │ │ ├── _badge.scss │ │ │ │ ├── _nav-divider.scss │ │ │ │ ├── _float.scss │ │ │ │ ├── _list-group.scss │ │ │ │ ├── _text-emphasis.scss │ │ │ │ ├── _reset-text.scss │ │ │ │ ├── _pagination.scss │ │ │ │ ├── _box-shadow.scss │ │ │ │ ├── _deprecate.scss │ │ │ │ ├── _transition.scss │ │ │ │ ├── _background-variant.scss │ │ │ │ ├── _hover.scss │ │ │ │ ├── _screen-reader.scss │ │ │ │ ├── _table-row.scss │ │ │ │ ├── _image.scss │ │ │ │ └── _caret.scss │ │ │ ├── _transitions.scss │ │ │ ├── bootstrap-reboot.scss │ │ │ ├── _jumbotron.scss │ │ │ ├── _utilities.scss │ │ │ ├── bootstrap-grid.scss │ │ │ ├── _root.scss │ │ │ ├── _close.scss │ │ │ ├── bootstrap.scss │ │ │ ├── _code.scss │ │ │ ├── _mixins.scss │ │ │ ├── _spinners.scss │ │ │ ├── _toasts.scss │ │ │ ├── _images.scss │ │ │ ├── _badge.scss │ │ │ ├── _alert.scss │ │ │ ├── _progress.scss │ │ │ └── _breadcrumb.scss │ │ ├── js │ │ │ ├── src │ │ │ │ └── index.js │ │ │ └── dist │ │ │ │ └── index.js │ │ └── LICENSE │ ├── favicon.ico │ ├── jquery │ │ ├── src │ │ │ ├── var │ │ │ │ ├── arr.js │ │ │ │ ├── document.js │ │ │ │ ├── getProto.js │ │ │ │ ├── push.js │ │ │ │ ├── rcheckableType.js │ │ │ │ ├── slice.js │ │ │ │ ├── class2type.js │ │ │ │ ├── indexOf.js │ │ │ │ ├── pnum.js │ │ │ │ ├── fnToString.js │ │ │ │ ├── toString.js │ │ │ │ ├── documentElement.js │ │ │ │ ├── hasOwn.js │ │ │ │ ├── support.js │ │ │ │ ├── ObjectFunctionString.js │ │ │ │ ├── isWindow.js │ │ │ │ ├── rcssNum.js │ │ │ │ ├── rnothtmlwhite.js │ │ │ │ ├── flat.js │ │ │ │ └── isFunction.js │ │ │ ├── selector.js │ │ │ ├── ajax │ │ │ │ └── var │ │ │ │ │ ├── rquery.js │ │ │ │ │ ├── location.js │ │ │ │ │ └── nonce.js │ │ │ ├── css │ │ │ │ ├── var │ │ │ │ │ ├── cssExpand.js │ │ │ │ │ ├── rboxStyle.js │ │ │ │ │ ├── rnumnonpx.js │ │ │ │ │ ├── getStyles.js │ │ │ │ │ ├── swap.js │ │ │ │ │ └── isHiddenWithinTree.js │ │ │ │ ├── hiddenVisibleSelectors.js │ │ │ │ ├── addGetHookIf.js │ │ │ │ └── finalPropName.js │ │ │ ├── data │ │ │ │ └── var │ │ │ │ │ ├── dataPriv.js │ │ │ │ │ ├── dataUser.js │ │ │ │ │ └── acceptData.js │ │ │ ├── manipulation │ │ │ │ ├── var │ │ │ │ │ ├── rscriptType.js │ │ │ │ │ └── rtagName.js │ │ │ │ ├── setGlobalEval.js │ │ │ │ ├── getAll.js │ │ │ │ ├── _evalUrl.js │ │ │ │ ├── wrapMap.js │ │ │ │ └── support.js │ │ │ ├── traversing │ │ │ │ └── var │ │ │ │ │ ├── rneedsContext.js │ │ │ │ │ ├── siblings.js │ │ │ │ │ └── dir.js │ │ │ ├── event │ │ │ │ └── support.js │ │ │ ├── core │ │ │ │ ├── nodeName.js │ │ │ │ ├── readyException.js │ │ │ │ ├── var │ │ │ │ │ └── rsingleTag.js │ │ │ │ ├── stripAndCollapse.js │ │ │ │ ├── toType.js │ │ │ │ ├── camelCase.js │ │ │ │ ├── parseXML.js │ │ │ │ ├── support.js │ │ │ │ ├── isAttached.js │ │ │ │ ├── DOMEval.js │ │ │ │ └── access.js │ │ │ ├── attributes.js │ │ │ ├── effects │ │ │ │ └── animatedSelector.js │ │ │ ├── deprecated │ │ │ │ ├── ajax-event-alias.js │ │ │ │ └── event.js │ │ │ ├── selector-sizzle.js │ │ │ ├── deferred │ │ │ │ └── exceptionHook.js │ │ │ ├── queue │ │ │ │ └── delay.js │ │ │ ├── exports │ │ │ │ ├── global.js │ │ │ │ └── amd.js │ │ │ ├── jquery.js │ │ │ ├── attributes │ │ │ │ └── support.js │ │ │ └── wrap.js │ │ ├── bower.json │ │ ├── LICENSE.txt │ │ └── external │ │ │ └── sizzle │ │ │ └── LICENSE.txt │ ├── images │ │ └── blazor.png │ ├── js │ │ ├── jsIsolation.js │ │ └── jsInterop.js │ └── sample-data │ │ └── weather.json ├── Components │ ├── ModalMessage.razor │ ├── ObservableCollectionObserver.razor │ ├── BaseStyles │ │ └── _ItemElementBase.scss │ ├── ItemsList.razor.min.css │ ├── ItemsList.razor.css │ ├── ItemsList.razor.scss │ ├── ModalMessage.cs │ ├── ItemCheckBox.razor │ ├── ChildItemEdit.razor │ ├── ItemEdit.razor.scss │ ├── ItemCheckBoxBase.cs │ ├── ChildItemEdit.razor.cs │ ├── ItemElement.razor │ └── ItemEdit.razor ├── Pages │ ├── Index.razor │ ├── Settings.razor │ ├── ItemsOverview.razor │ ├── SignBase.cs │ ├── Settings.razor.cs │ └── SignIn.razor ├── Shared │ ├── UnAuthLayout.razor │ ├── SurveyPrompt.razor │ ├── NavMenu.razor │ └── MainLayout.razor ├── ItemEdit │ ├── ItemEditEventArgs.cs │ └── ItemEditService.cs ├── OrganizeAuthenticationStateProvider │ └── IAuthenticationStateProvider.cs ├── _Imports.razor ├── App.razor ├── Properties │ └── launchSettings.json ├── compilerconfig.json └── compilerconfig.json.defaults ├── GeneralUi ├── About.razor.min.css ├── About.razor.css ├── About.razor.scss ├── _Imports.razor ├── compilerconfig.json ├── BusyOverlay │ ├── BusyOverlay.razor │ ├── BusyEnum.cs │ ├── BusyChangedEventArgs.cs │ ├── BusyOverlayService.cs │ └── BusyOverlayBase.cs ├── About.razor ├── DropdownControl │ ├── DropdownItem.cs │ ├── Dropdown.razor │ └── Dropdown.razor.cs ├── GeneralUi.csproj ├── Validation │ ├── ValidationInput.razor │ └── ValidationInputBase.cs ├── compilerconfig.json.defaults └── wwwroot │ └── css │ └── styles.css ├── Organize.IndexedDB ├── _Imports.razor ├── Organize.IndexedDB.csproj └── SimplePropertyContractResolver.cs ├── BlazorExample ├── wwwroot │ ├── css │ │ ├── vars.css │ │ └── open-iconic │ │ │ ├── font │ │ │ └── fonts │ │ │ │ ├── open-iconic.eot │ │ │ │ ├── open-iconic.otf │ │ │ │ ├── open-iconic.ttf │ │ │ │ └── open-iconic.woff │ │ │ └── ICON-LICENSE │ ├── favicon.ico │ ├── sample-data │ │ └── weather.json │ └── index.html ├── Components │ ├── DependencyInjection │ │ ├── DependencyInjectionComponent.razor │ │ ├── Contracts │ │ │ ├── IScoped.cs │ │ │ ├── ISingleton.cs │ │ │ ├── ITransient.cs │ │ │ ├── IConstructorInjectionOne.cs │ │ │ └── IConstructorInjectionTwo.cs │ │ ├── DependencyInjectionParentComponent.razor │ │ ├── Implementations │ │ │ ├── ConstructorInjectionTwo.cs │ │ │ ├── Scoped.cs │ │ │ ├── ConstructorInjectionOne.cs │ │ │ ├── Transient.cs │ │ │ └── Singleton.cs │ │ ├── DependencyInjectionParentComponentBase.cs │ │ └── DependencyInjectionComponentBase.cs │ ├── LifeCycle.razor │ ├── ForProblem.razor │ ├── ParentComponent.razor │ ├── ChildComponent.razor │ ├── RazorSyntax.razor │ └── TwoWayBinding.razor ├── Pages │ ├── CascadingParameters │ │ ├── Child.razor │ │ ├── ChildOfChild.razor │ │ ├── CascadingParent.razor.cs │ │ ├── CascadingParent.razor │ │ ├── Child.razor.cs │ │ └── ChildOfChild.razor.cs │ ├── RouteParameters.razor │ ├── Counter.razor │ ├── Index.razor │ └── FetchData.razor ├── Entities │ └── User.cs ├── compilerconfig.json ├── Shared │ ├── MainLayout.razor │ ├── SurveyPrompt.razor │ └── NavMenu.razor ├── App.razor ├── _Imports.razor ├── BlazorExample.csproj ├── Properties │ └── launchSettings.json ├── compilerconfig.json.defaults └── Program.cs ├── Organize.Shared ├── Class1.cs ├── Enitites │ ├── ChildItem.cs │ ├── UrlItem.cs │ ├── TextItem.cs │ ├── BaseEntity.cs │ ├── ParentItem.cs │ ├── BaseItem.cs │ ├── NotifyingObject.cs │ └── User.cs ├── Enums │ ├── GenderTypeEnum.cs │ └── ItemTypeEnum.cs ├── Contracts │ ├── ICurrentUserService.cs │ ├── IUserManager.cs │ ├── IUserDataAccess.cs │ ├── IItemDataAccess.cs │ ├── IUserItemManager.cs │ └── IPersistenceService.cs └── Organize.Shared.csproj ├── Organize.WebApi ├── appsettings.Development.json ├── AppSettings.cs ├── Authuser.cs ├── appsettings.json ├── Program.cs ├── Controllers │ └── TestController.cs ├── Organize.WebApi.csproj └── Properties │ └── launchSettings.json ├── Organize.WebAPIAccess ├── ErrorMessage.cs ├── Organize.WebAPIAccess.csproj ├── WebAPIUserDataAccess.cs └── EntityRouteAssignments.cs ├── Organize.Business ├── Organize.Business.csproj ├── CurrentUserService.cs └── UserManager.cs ├── Organize.TestFake ├── Organize.TestFake.csproj └── UserManagerFake.cs ├── Organize.DataAccess ├── Organize.DataAccess.csproj ├── UserDataAccess.cs └── ItemDataAccess.cs └── Organize.InMemoryStorage └── Organize.InMemoryStorage.csproj /readme.md: -------------------------------------------------------------------------------- 1 | Blazor Project With Clean Architecture -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemEdit.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemEdit.min.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /GeneralUi/About.razor.min.css: -------------------------------------------------------------------------------- 1 | .title{font-weight:bold;} -------------------------------------------------------------------------------- /GeneralUi/About.razor.css: -------------------------------------------------------------------------------- 1 | .title { 2 | font-weight: bold; } 3 | -------------------------------------------------------------------------------- /Organize.WASM/Components/ModalMessage.razor: -------------------------------------------------------------------------------- 1 |
@Message
2 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemEdit.scss: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /GeneralUi/About.razor.scss: -------------------------------------------------------------------------------- 1 | .title { 2 | font-weight: bold; 3 | } 4 | -------------------------------------------------------------------------------- /GeneralUi/_Imports.razor: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNetCore.Components.Web 2 | -------------------------------------------------------------------------------- /Organize.IndexedDB/_Imports.razor: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNetCore.Components.Web 2 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "apiAddress": "https://localhost:44384" 3 | } -------------------------------------------------------------------------------- /Organize.WASM/Components/ObservableCollectionObserver.razor: -------------------------------------------------------------------------------- 1 | @typeparam TProp 2 | 3 | @ChildContent -------------------------------------------------------------------------------- /BlazorExample/wwwroot/css/vars.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --red: #f00; 3 | --green: #0f0; 4 | --blue: #00f; 5 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/utilities/_clearfix.scss: -------------------------------------------------------------------------------- 1 | .clearfix { 2 | @include clearfix(); 3 | } 4 | -------------------------------------------------------------------------------- /BlazorExample/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/Organize/HEAD/BlazorExample/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/Organize/HEAD/Organize.WASM/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/arr.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return []; 5 | } ); 6 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/selector.js: -------------------------------------------------------------------------------- 1 | define( [ "./selector-sizzle" ], function() { 2 | "use strict"; 3 | } ); 4 | -------------------------------------------------------------------------------- /GeneralUi/compilerconfig.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "outputFile": "About.razor.css", 4 | "inputFile": "About.razor.scss" 5 | } 6 | ] -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/images/blazor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/Organize/HEAD/Organize.WASM/wwwroot/images/blazor.png -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/ajax/var/rquery.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return ( /\?/ ); 5 | } ); 6 | -------------------------------------------------------------------------------- /Organize.Shared/Class1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Organize.Shared 4 | { 5 | public class Class1 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/document.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return window.document; 5 | } ); 6 | -------------------------------------------------------------------------------- /Organize.WASM/Components/BaseStyles/_ItemElementBase.scss: -------------------------------------------------------------------------------- 1 | .title-base { 2 | font-weight: bold; 3 | text-transform: uppercase; 4 | } 5 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/ajax/var/location.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return window.location; 5 | } ); 6 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/ajax/var/nonce.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return { guid: Date.now() }; 5 | } ); 6 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/getProto.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return Object.getPrototypeOf; 5 | } ); 6 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/push.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./arr" 3 | ], function( arr ) { 4 | "use strict"; 5 | 6 | return arr.push; 7 | } ); 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/rcheckableType.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return ( /^(?:checkbox|radio)$/i ); 5 | } ); 6 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/slice.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./arr" 3 | ], function( arr ) { 4 | "use strict"; 5 | 6 | return arr.slice; 7 | } ); 8 | -------------------------------------------------------------------------------- /Organize.WASM/Components/ItemsList.razor.min.css: -------------------------------------------------------------------------------- 1 | .title-base,.title{font-weight:bold;text-transform:uppercase;}.title{font-size:1.5rem;font-family:monospace;} -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/class2type.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | // [[Class]] -> type pairs 5 | return {}; 6 | } ); 7 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/indexOf.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./arr" 3 | ], function( arr ) { 4 | "use strict"; 5 | 6 | return arr.indexOf; 7 | } ); 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_media.scss: -------------------------------------------------------------------------------- 1 | .media { 2 | display: flex; 3 | align-items: flex-start; 4 | } 5 | 6 | .media-body { 7 | flex: 1; 8 | } 9 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/css/var/cssExpand.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return [ "Top", "Right", "Bottom", "Left" ]; 5 | } ); 6 | -------------------------------------------------------------------------------- /BlazorExample/Components/DependencyInjection/DependencyInjectionComponent.razor: -------------------------------------------------------------------------------- 1 | @inherits DependencyInjectionComponentBase 2 |

ChildDependencyInjectionComponent

-------------------------------------------------------------------------------- /BlazorExample/Pages/CascadingParameters/Child.razor: -------------------------------------------------------------------------------- 1 |

Child

2 | 3 |
Count: @Count
4 |
Text: @Text
5 | 6 | -------------------------------------------------------------------------------- /Organize.WASM/Pages/Index.razor: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello, world!

4 | 5 | Welcome to your new app. 6 | 7 | 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/data/var/dataPriv.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../Data" 3 | ], function( Data ) { 4 | "use strict"; 5 | 6 | return new Data(); 7 | } ); 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/data/var/dataUser.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../Data" 3 | ], function( Data ) { 4 | "use strict"; 5 | 6 | return new Data(); 7 | } ); 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/pnum.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; 5 | } ); 6 | -------------------------------------------------------------------------------- /BlazorExample/Entities/User.cs: -------------------------------------------------------------------------------- 1 | namespace BlazorExample.Entities 2 | { 3 | public class User 4 | { 5 | public string FirstName { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /BlazorExample/Pages/CascadingParameters/ChildOfChild.razor: -------------------------------------------------------------------------------- 1 |

ChildOfChild

2 | 3 |
Number: @Number
4 |
Text1: @Text1
5 |
Text2: @Text2
-------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/fnToString.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./hasOwn" 3 | ], function( hasOwn ) { 4 | "use strict"; 5 | 6 | return hasOwn.toString; 7 | } ); 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/manipulation/var/rscriptType.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return ( /^$|^module$|\/(?:java|ecma)script/i ); 5 | } ); 6 | -------------------------------------------------------------------------------- /BlazorExample/wwwroot/css/open-iconic/font/fonts/open-iconic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/Organize/HEAD/BlazorExample/wwwroot/css/open-iconic/font/fonts/open-iconic.eot -------------------------------------------------------------------------------- /BlazorExample/wwwroot/css/open-iconic/font/fonts/open-iconic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/Organize/HEAD/BlazorExample/wwwroot/css/open-iconic/font/fonts/open-iconic.otf -------------------------------------------------------------------------------- /BlazorExample/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/Organize/HEAD/BlazorExample/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf -------------------------------------------------------------------------------- /BlazorExample/wwwroot/css/open-iconic/font/fonts/open-iconic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/Organize/HEAD/BlazorExample/wwwroot/css/open-iconic/font/fonts/open-iconic.woff -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_clearfix.scss: -------------------------------------------------------------------------------- 1 | @mixin clearfix() { 2 | &::after { 3 | display: block; 4 | clear: both; 5 | content: ""; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/open-iconic/font/fonts/open-iconic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/Organize/HEAD/Organize.WASM/wwwroot/css/open-iconic/font/fonts/open-iconic.eot -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/open-iconic/font/fonts/open-iconic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/Organize/HEAD/Organize.WASM/wwwroot/css/open-iconic/font/fonts/open-iconic.otf -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/Organize/HEAD/Organize.WASM/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/open-iconic/font/fonts/open-iconic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/Organize/HEAD/Organize.WASM/wwwroot/css/open-iconic/font/fonts/open-iconic.woff -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/toString.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./class2type" 3 | ], function( class2type ) { 4 | "use strict"; 5 | 6 | return class2type.toString; 7 | } ); 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/documentElement.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./document" 3 | ], function( document ) { 4 | "use strict"; 5 | 6 | return document.documentElement; 7 | } ); 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/hasOwn.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./class2type" 3 | ], function( class2type ) { 4 | "use strict"; 5 | 6 | return class2type.hasOwnProperty; 7 | } ); 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/support.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | // All support tests are defined in their respective modules. 5 | return {}; 6 | } ); 7 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/_bootstrap-global.scss: -------------------------------------------------------------------------------- 1 | @import '../bootstrap/scss/_mixins.scss'; 2 | @import '../bootstrap/scss/_functions.scss'; 3 | @import '../bootstrap/scss/_variables.scss'; 4 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/ObjectFunctionString.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./fnToString" 3 | ], function( fnToString ) { 4 | "use strict"; 5 | 6 | return fnToString.call( Object ); 7 | } ); 8 | -------------------------------------------------------------------------------- /Organize.WASM/Components/ItemsList.razor.css: -------------------------------------------------------------------------------- 1 | .title-base, .title { 2 | font-weight: bold; 3 | text-transform: uppercase; } 4 | 5 | .title { 6 | font-size: 1.5rem; 7 | font-family: monospace; } 8 | -------------------------------------------------------------------------------- /Organize.WASM/Components/ItemsList.razor.scss: -------------------------------------------------------------------------------- 1 | @import 'BaseStyles/_ItemElementBase.scss'; 2 | 3 | .title { 4 | @extend .title-base; 5 | font-size: 1.5rem; 6 | font-family: monospace; 7 | } 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/css/var/rboxStyle.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./cssExpand" 3 | ], function( cssExpand ) { 4 | "use strict"; 5 | 6 | return new RegExp( cssExpand.join( "|" ), "i" ); 7 | } ); 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/isWindow.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return function isWindow( obj ) { 5 | return obj != null && obj === obj.window; 6 | }; 7 | 8 | } ); 9 | -------------------------------------------------------------------------------- /GeneralUi/BusyOverlay/BusyOverlay.razor: -------------------------------------------------------------------------------- 1 | @inherits BusyOverlayBase 2 | @if (IsBusy) 3 | { 4 |
5 |
6 | @ChildContent 7 |
8 |
9 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/css/var/rnumnonpx.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../../var/pnum" 3 | ], function( pnum ) { 4 | "use strict"; 5 | 6 | return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); 7 | } ); 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/utilities/_overflow.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $value in $overflows { 4 | .overflow-#{$value} { overflow: $value !important; } 5 | } 6 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/utilities/_interactions.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $value in $user-selects { 4 | .user-select-#{$value} { user-select: $value !important; } 5 | } 6 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/traversing/var/rneedsContext.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../../core", 3 | "../../selector" 4 | ], function( jQuery ) { 5 | "use strict"; 6 | 7 | return jQuery.expr.match.needsContext; 8 | } ); 9 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_size.scss: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | @mixin size($width, $height: $width) { 4 | width: $width; 5 | height: $height; 6 | @include deprecate("`size()`", "v4.3.0", "v5"); 7 | } 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/rcssNum.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/pnum" 3 | ], function( pnum ) { 4 | 5 | "use strict"; 6 | 7 | return new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); 8 | 9 | } ); 10 | -------------------------------------------------------------------------------- /BlazorExample/Components/DependencyInjection/Contracts/IScoped.cs: -------------------------------------------------------------------------------- 1 | namespace BlazorExample.Components.DependencyInjection.Contracts 2 | { 3 | public interface IScoped 4 | { 5 | int InstanceNumber { get; } 6 | } 7 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/utilities/_screenreaders.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Screenreaders 3 | // 4 | 5 | .sr-only { 6 | @include sr-only(); 7 | } 8 | 9 | .sr-only-focusable { 10 | @include sr-only-focusable(); 11 | } 12 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/event/support.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | "use strict"; 6 | 7 | support.focusin = "onfocusin" in window; 8 | 9 | return support; 10 | 11 | } ); 12 | -------------------------------------------------------------------------------- /BlazorExample/Components/DependencyInjection/Contracts/ISingleton.cs: -------------------------------------------------------------------------------- 1 | namespace BlazorExample.Components.DependencyInjection.Contracts 2 | { 3 | public interface ISingleton 4 | { 5 | int InstanceNumber { get; } 6 | } 7 | } -------------------------------------------------------------------------------- /BlazorExample/Components/DependencyInjection/Contracts/ITransient.cs: -------------------------------------------------------------------------------- 1 | namespace BlazorExample.Components.DependencyInjection.Contracts 2 | { 3 | public interface ITransient 4 | { 5 | int InstanceNumber { get; } 6 | } 7 | } -------------------------------------------------------------------------------- /BlazorExample/Pages/RouteParameters.razor: -------------------------------------------------------------------------------- 1 | @page "/params" 2 | @page "/params/{id:int}" 3 | 4 |

RouteParameters

5 |
Id: @Id
6 | 7 | @code { 8 | 9 | [Parameter] 10 | public int Id { get; set; } 11 | 12 | } -------------------------------------------------------------------------------- /Organize.Shared/Enitites/ChildItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Organize.Shared.Enitites 6 | { 7 | public class ChildItem : BaseItem 8 | { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemCheckBox.min.css: -------------------------------------------------------------------------------- 1 | #itemCheckBox{width:100%;height:100%;}.outer-container{background:#fff;width:100%;height:100%;display:flex;justify-content:center;align-items:center;}.inner-container{width:70%;height:70%;} -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_lists.scss: -------------------------------------------------------------------------------- 1 | // Lists 2 | 3 | // Unstyled keeps list items block level, just removes default browser padding and list-style 4 | @mixin list-unstyled() { 5 | padding-left: 0; 6 | list-style: none; 7 | } 8 | -------------------------------------------------------------------------------- /Organize.WebApi/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /BlazorExample/Pages/CascadingParameters/CascadingParent.razor.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Components; 2 | 3 | namespace BlazorExample.Pages.CascadingParameters 4 | { 5 | public partial class CascadingParent : ComponentBase 6 | { 7 | } 8 | } -------------------------------------------------------------------------------- /BlazorExample/Components/DependencyInjection/Contracts/IConstructorInjectionOne.cs: -------------------------------------------------------------------------------- 1 | namespace BlazorExample.Components.DependencyInjection.Contracts 2 | { 3 | public interface IConstructorInjectionOne 4 | { 5 | void MethodOfOne(); 6 | } 7 | } -------------------------------------------------------------------------------- /BlazorExample/Components/DependencyInjection/Contracts/IConstructorInjectionTwo.cs: -------------------------------------------------------------------------------- 1 | namespace BlazorExample.Components.DependencyInjection.Contracts 2 | { 3 | public interface IConstructorInjectionTwo 4 | { 5 | void MethodOfTwo(); 6 | } 7 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_text-truncate.scss: -------------------------------------------------------------------------------- 1 | // Text truncate 2 | // Requires inline-block or block for proper styling 3 | 4 | @mixin text-truncate() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/js/jsIsolation.js: -------------------------------------------------------------------------------- 1 | export const getWidth = () => { 2 | console.log("isolated") 3 | return window.innerWidth 4 | } 5 | 6 | //export function getWidth() { 7 | // console.log("isolated"); 8 | // return window.innerWidth; 9 | //} -------------------------------------------------------------------------------- /GeneralUi/BusyOverlay/BusyEnum.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace GeneralUi.BusyOverlay 6 | { 7 | public enum BusyEnum 8 | { 9 | Busy = 1, 10 | NotBusy = 2 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Organize.WASM/Components/ModalMessage.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Components; 2 | 3 | namespace Organize.WASM.Components 4 | { 5 | public partial class ModalMessage : ComponentBase 6 | { 7 | [Parameter] public string Message { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /Organize.WASM/Shared/UnAuthLayout.razor: -------------------------------------------------------------------------------- 1 | @inherits LayoutComponentBase 2 | 3 | 6 | 7 |
8 | @Body 9 |
10 | -------------------------------------------------------------------------------- /Organize.WebAPIAccess/ErrorMessage.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Organize.WebAPIAccess 6 | { 7 | class ErrorMessage 8 | { 9 | public string Message { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_resize.scss: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | @mixin resizable($direction) { 4 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 5 | resize: $direction; // Options: horizontal, vertical, both 6 | } 7 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_visibility.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Visibility 4 | 5 | @mixin invisible($visibility) { 6 | visibility: $visibility !important; 7 | @include deprecate("`invisible()`", "v4.3.0", "v5"); 8 | } 9 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/rnothtmlwhite.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | // Only count HTML whitespace 5 | // Other whitespace should count in values 6 | // https://infra.spec.whatwg.org/#ascii-whitespace 7 | return ( /[^\x20\t\r\n\f]+/g ); 8 | } ); 9 | -------------------------------------------------------------------------------- /BlazorExample/compilerconfig.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "outputFile": "wwwroot/css/componentA.css", 4 | "inputFile": "wwwroot/css/componentA.scss" 5 | }, 6 | { 7 | "outputFile": "wwwroot/css/componentB.css", 8 | "inputFile": "wwwroot/css/componentB.scss" 9 | } 10 | ] -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/core/nodeName.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | 3 | "use strict"; 4 | 5 | function nodeName( elem, name ) { 6 | 7 | return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); 8 | 9 | }; 10 | 11 | return nodeName; 12 | 13 | } ); 14 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/core/readyException.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | jQuery.readyException = function( error ) { 8 | window.setTimeout( function() { 9 | throw error; 10 | } ); 11 | }; 12 | 13 | } ); 14 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "main": "dist/jquery.js", 4 | "license": "MIT", 5 | "ignore": [ 6 | "package.json" 7 | ], 8 | "keywords": [ 9 | "jquery", 10 | "javascript", 11 | "browser", 12 | "library" 13 | ] 14 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/utilities/_visibility.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // 4 | // Visibility utilities 5 | // 6 | 7 | .visible { 8 | visibility: visible !important; 9 | } 10 | 11 | .invisible { 12 | visibility: hidden !important; 13 | } 14 | -------------------------------------------------------------------------------- /Organize.WebApi/AppSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace Organize.WebApi 7 | { 8 | public class AppSettings 9 | { 10 | public string Secret { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Organize.Shared/Enums/GenderTypeEnum.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Organize.Shared.Enums 6 | { 7 | public enum GenderTypeEnum 8 | { 9 | Male = 1, 10 | Female = 2, 11 | Neutral = 3 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /GeneralUi/About.razor: -------------------------------------------------------------------------------- 1 | @page "/about" 2 | 3 |

This app was created by ...

4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
First name:Mohamed
Last name:Fazrin
14 | -------------------------------------------------------------------------------- /GeneralUi/BusyOverlay/BusyChangedEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace GeneralUi.BusyOverlay 6 | { 7 | public class BusyChangedEventArgs : EventArgs 8 | { 9 | public BusyEnum BusyState { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/_variables.scss: -------------------------------------------------------------------------------- 1 | $primary-color: #00B0F0; 2 | $secondary-color: #654321; 3 | $tertiary-color: #8A00C0; 4 | 5 | 6 | $primary-color-disabled: lighten($primary-color,20%); 7 | $secondary-color-disabled: lighten($secondary-color,20%); 8 | $tertiary-color-disabled: lighten($tertiary-color,20%); 9 | -------------------------------------------------------------------------------- /Organize.Shared/Enums/ItemTypeEnum.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Organize.Shared.Enums 6 | { 7 | public enum ItemTypeEnum 8 | { 9 | Text = 1, 10 | Url = 2, 11 | Parent = 3, 12 | Child = 4 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/core/var/rsingleTag.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | // rsingleTag matches a string consisting of a single HTML element with no attributes 5 | // and captures the element's name 6 | return ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); 7 | } ); 8 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/utilities/_shadows.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | .shadow-sm { box-shadow: $box-shadow-sm !important; } 4 | .shadow { box-shadow: $box-shadow !important; } 5 | .shadow-lg { box-shadow: $box-shadow-lg !important; } 6 | .shadow-none { box-shadow: none !important; } 7 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/attributes.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./core", 3 | "./attributes/attr", 4 | "./attributes/prop", 5 | "./attributes/classes", 6 | "./attributes/val" 7 | ], function( jQuery ) { 8 | 9 | "use strict"; 10 | 11 | // Return jQuery for attributes-only inclusion 12 | return jQuery; 13 | } ); 14 | -------------------------------------------------------------------------------- /Organize.WASM/Components/ItemCheckBox.razor: -------------------------------------------------------------------------------- 1 | @inherits ItemCheckBoxBase 2 | 3 |
4 |
5 | @if (Item.IsDone) 6 | { 7 |
8 | } 9 |
10 |
-------------------------------------------------------------------------------- /Organize.Business/Organize.Business.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Organize.Shared/Contracts/ICurrentUserService.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Enitites; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Organize.Shared.Contracts 7 | { 8 | public interface ICurrentUserService 9 | { 10 | User CurrentUser { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Organize.TestFake/Organize.TestFake.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Organize.DataAccess/Organize.DataAccess.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Organize.Shared/Organize.Shared.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /GeneralUi/DropdownControl/DropdownItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace GeneralUi.DropdownControl 6 | { 7 | public class DropdownItem 8 | { 9 | public string DisplayText { get; set; } 10 | 11 | public T ItemObject { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/sign.min.css: -------------------------------------------------------------------------------- 1 | .sign-form{width:100%;max-width:330px;padding:15px;margin:auto;}.welcome-text{text-align:center;margin-bottom:32px;}.sign-input{width:100%;margin-top:32px;}.sign-button{width:100%;margin-top:64px;margin-bottom:64px;}.signup{text-align:center;width:100%;margin-top:32px;}.sign-validation{margin-top:32px;} -------------------------------------------------------------------------------- /Organize.WebApi/Authuser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace Organize.WebApi 7 | { 8 | public class AuthUser 9 | { 10 | public string UserName { get; set; } 11 | public string Password { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_alert.scss: -------------------------------------------------------------------------------- 1 | @mixin alert-variant($background, $border, $color) { 2 | color: $color; 3 | @include gradient-bg($background); 4 | border-color: $border; 5 | 6 | hr { 7 | border-top-color: darken($border, 5%); 8 | } 9 | 10 | .alert-link { 11 | color: darken($color, 10%); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/traversing/var/siblings.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | 3 | "use strict"; 4 | 5 | return function( n, elem ) { 6 | var matched = []; 7 | 8 | for ( ; n; n = n.nextSibling ) { 9 | if ( n.nodeType === 1 && n !== elem ) { 10 | matched.push( n ); 11 | } 12 | } 13 | 14 | return matched; 15 | }; 16 | 17 | } ); 18 | -------------------------------------------------------------------------------- /Organize.WebApi/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | }, 9 | "AllowedHosts": "*", 10 | "AppSettings": { 11 | "Secret" : "This is the secret for the JWT token" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemCheckBox.css: -------------------------------------------------------------------------------- 1 | #itemCheckBox { 2 | width: 100%; 3 | height: 100%; } 4 | 5 | .outer-container { 6 | background: white; 7 | width: 100%; 8 | height: 100%; 9 | display: flex; 10 | justify-content: center; 11 | align-items: center; } 12 | 13 | .inner-container { 14 | width: 70%; 15 | height: 70%; } 16 | -------------------------------------------------------------------------------- /Organize.WASM/ItemEdit/ItemEditEventArgs.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Enitites; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace Organize.WASM.ItemEdit 8 | { 9 | public class ItemEditEventArgs : EventArgs 10 | { 11 | public BaseItem Item { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /BlazorExample/Components/DependencyInjection/DependencyInjectionParentComponent.razor: -------------------------------------------------------------------------------- 1 | @inherits DependencyInjectionParentComponentBase 2 | 3 |

DependencyInjectionParentComponent

4 | 5 | Show Component 6 | @if (IsComponentVisible) 7 | { 8 | 9 | } -------------------------------------------------------------------------------- /BlazorExample/Pages/CascadingParameters/CascadingParent.razor: -------------------------------------------------------------------------------- 1 | @page "/cascading" 2 | 3 |

Parent

4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/effects/animatedSelector.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../selector", 4 | "../effects" 5 | ], function( jQuery ) { 6 | 7 | "use strict"; 8 | 9 | jQuery.expr.pseudos.animated = function( elem ) { 10 | return jQuery.grep( jQuery.timers, function( fn ) { 11 | return elem === fn.elem; 12 | } ).length; 13 | }; 14 | 15 | } ); 16 | -------------------------------------------------------------------------------- /Organize.Business/CurrentUserService.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Contracts; 2 | using Organize.Shared.Enitites; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | 7 | namespace Organize.Business 8 | { 9 | public class CurrentUserService : ICurrentUserService 10 | { 11 | public User CurrentUser { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /BlazorExample/Shared/MainLayout.razor: -------------------------------------------------------------------------------- 1 | @inherits LayoutComponentBase 2 | 3 | 6 | 7 |
8 |
9 | About 10 |
11 | 12 |
13 | @Body 14 |
15 |
-------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/manipulation/var/rtagName.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | // rtagName captures the name from the first start tag in a string of HTML 5 | // https://html.spec.whatwg.org/multipage/syntax.html#tag-open-state 6 | // https://html.spec.whatwg.org/multipage/syntax.html#tag-name-state 7 | return ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); 8 | } ); 9 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemCheckBox.scss: -------------------------------------------------------------------------------- 1 | #itemCheckBox { 2 | width: 100%; 3 | height: 100%; 4 | } 5 | 6 | .outer-container { 7 | background: white; 8 | width: 100%; 9 | height: 100%; 10 | display: flex; 11 | justify-content: center; 12 | align-items: center 13 | } 14 | 15 | .inner-container { 16 | width: 70%; 17 | height: 70% 18 | } 19 | -------------------------------------------------------------------------------- /BlazorExample/App.razor: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Sorry, there's nothing at this address.

8 |
9 |
10 |
-------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_transitions.scss: -------------------------------------------------------------------------------- 1 | .fade { 2 | @include transition($transition-fade); 3 | 4 | &:not(.show) { 5 | opacity: 0; 6 | } 7 | } 8 | 9 | .collapse { 10 | &:not(.show) { 11 | display: none; 12 | } 13 | } 14 | 15 | .collapsing { 16 | position: relative; 17 | height: 0; 18 | overflow: hidden; 19 | @include transition($transition-collapse); 20 | } 21 | -------------------------------------------------------------------------------- /Organize.Shared/Enitites/UrlItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Organize.Shared.Enitites 6 | { 7 | public class UrlItem : BaseItem 8 | { 9 | public string Url 10 | { 11 | get => _url; 12 | set => SetProperty(ref _url, value); 13 | } 14 | private string _url; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Organize.WASM/Pages/Settings.razor: -------------------------------------------------------------------------------- 1 | @page "/settings" 2 | 3 | 4 | 5 |
6 | 7 |
8 |
9 | 10 |
You're not authorized to see this page.
11 |
12 |
13 | -------------------------------------------------------------------------------- /BlazorExample/Pages/CascadingParameters/Child.razor.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Components; 2 | 3 | namespace BlazorExample.Pages.CascadingParameters 4 | { 5 | public partial class Child : ComponentBase 6 | { 7 | [CascadingParameter] public int Count { get; set; } 8 | 9 | //[CascadingParameter] 10 | [CascadingParameter(Name = "H2")] public string Text { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /Organize.Shared/Contracts/IUserManager.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Enitites; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Organize.Shared.Contracts 8 | { 9 | public interface IUserManager 10 | { 11 | Task TrySignInAndGetUserAsync(User user); 12 | 13 | Task InsertUserAsync(User user); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_text-hide.scss: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | @mixin text-hide($ignore-warning: false) { 3 | // stylelint-disable-next-line font-family-no-missing-generic-family-keyword 4 | font: 0/0 a; 5 | color: transparent; 6 | text-shadow: none; 7 | background-color: transparent; 8 | border: 0; 9 | 10 | @include deprecate("`text-hide()`", "v4.1.0", "v5", $ignore-warning); 11 | } 12 | -------------------------------------------------------------------------------- /BlazorExample/Components/LifeCycle.razor: -------------------------------------------------------------------------------- 1 | @page "/lifecycle" 2 | @page "/lifecycle/{SomeIntValue:int}" 3 | @inherits LifeCycleBase 4 | 5 | @if (User != null) 6 | { 7 |
Firstname: @User.FirstName
8 | } 9 | else 10 | { 11 |
Loading...
12 | } 13 | 14 |
15 | @SomeIntValue 16 |
17 | 18 |
19 | Reload 20 |
21 |
22 | Index 23 |
-------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/css/hiddenVisibleSelectors.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../selector" 4 | ], function( jQuery ) { 5 | 6 | "use strict"; 7 | 8 | jQuery.expr.pseudos.hidden = function( elem ) { 9 | return !jQuery.expr.pseudos.visible( elem ); 10 | }; 11 | jQuery.expr.pseudos.visible = function( elem ) { 12 | return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); 13 | }; 14 | 15 | } ); 16 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_badge.scss: -------------------------------------------------------------------------------- 1 | @mixin badge-variant($bg) { 2 | color: color-yiq($bg); 3 | background-color: $bg; 4 | 5 | @at-root a#{&} { 6 | @include hover-focus() { 7 | color: color-yiq($bg); 8 | background-color: darken($bg, 10%); 9 | } 10 | 11 | &:focus, 12 | &.focus { 13 | outline: 0; 14 | box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /BlazorExample/Components/DependencyInjection/Implementations/ConstructorInjectionTwo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using BlazorExample.Components.DependencyInjection.Contracts; 3 | 4 | namespace BlazorExample.Components.DependencyInjection.Implementations 5 | { 6 | public class ConstructorInjectionTwo : IConstructorInjectionTwo 7 | { 8 | public void MethodOfTwo() 9 | { 10 | Console.WriteLine("Two"); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/data/var/acceptData.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | 3 | "use strict"; 4 | 5 | /** 6 | * Determines whether an object can have data 7 | */ 8 | return function( owner ) { 9 | 10 | // Accepts only: 11 | // - Node 12 | // - Node.ELEMENT_NODE 13 | // - Node.DOCUMENT_NODE 14 | // - Object 15 | // - Any 16 | return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); 17 | }; 18 | 19 | } ); 20 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/deprecated/ajax-event-alias.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../ajax", 4 | "../event" 5 | ], function( jQuery ) { 6 | 7 | "use strict"; 8 | 9 | jQuery.each( [ 10 | "ajaxStart", 11 | "ajaxStop", 12 | "ajaxComplete", 13 | "ajaxError", 14 | "ajaxSuccess", 15 | "ajaxSend" 16 | ], function( _i, type ) { 17 | jQuery.fn[ type ] = function( fn ) { 18 | return this.on( type, fn ); 19 | }; 20 | } ); 21 | 22 | } ); 23 | -------------------------------------------------------------------------------- /Organize.WebAPIAccess/Organize.WebAPIAccess.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Organize.InMemoryStorage/Organize.InMemoryStorage.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Organize.WASM/OrganizeAuthenticationStateProvider/IAuthenticationStateProvider.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Enitites; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace Organize.WASM.OrganizeAuthenticationStateProvider 8 | { 9 | public interface IAuthenticationStateProvider 10 | { 11 | void SetAuthenticatedState(User user); 12 | void UnsetUser(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /BlazorExample/Pages/Counter.razor: -------------------------------------------------------------------------------- 1 | @page "/counter" 2 | 3 |

Counter

4 | 5 |

Current count: @currentCount

6 | 7 | 12 | 13 | 14 | 15 | @code { 16 | private int currentCount; 17 | 18 | private void IncrementCount() 19 | { 20 | currentCount++; 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_nav-divider.scss: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | @mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y, $ignore-warning: false) { 6 | height: 0; 7 | margin: $margin-y 0; 8 | overflow: hidden; 9 | border-top: 1px solid $color; 10 | @include deprecate("The `nav-divider()` mixin", "v4.4.0", "v5", $ignore-warning); 11 | } 12 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/utilities/_float.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $breakpoint in map-keys($grid-breakpoints) { 4 | @include media-breakpoint-up($breakpoint) { 5 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 6 | 7 | .float#{$infix}-left { float: left !important; } 8 | .float#{$infix}-right { float: right !important; } 9 | .float#{$infix}-none { float: none !important; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/core/stripAndCollapse.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/rnothtmlwhite" 3 | ], function( rnothtmlwhite ) { 4 | "use strict"; 5 | 6 | // Strip and collapse whitespace according to HTML spec 7 | // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace 8 | function stripAndCollapse( value ) { 9 | var tokens = value.match( rnothtmlwhite ) || []; 10 | return tokens.join( " " ); 11 | } 12 | 13 | return stripAndCollapse; 14 | } ); 15 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/flat.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./arr" 3 | ], function( arr ) { 4 | 5 | "use strict"; 6 | 7 | // Support: IE 9 - 11+, Edge 18+, Android Browser 4.0 - 4.3 only, iOS 7 - 11 only, Safari 11 only, 8 | // Firefox <= 61 only 9 | // Provide fallback for browsers without Array#flat. 10 | return arr.flat ? function( array ) { 11 | return arr.flat.call( array ); 12 | } : function( array ) { 13 | return arr.concat.apply( [], array ); 14 | }; 15 | 16 | } ); 17 | -------------------------------------------------------------------------------- /Organize.Shared/Contracts/IUserDataAccess.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Enitites; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Organize.Shared.Contracts 8 | { 9 | public interface IUserDataAccess 10 | { 11 | Task AuthenticateAndGetUserAsync(User user); 12 | Task InsertUserAsync(User user); 13 | Task IsUserWithNameAvailableAsync(User user); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /BlazorExample/Components/ForProblem.razor: -------------------------------------------------------------------------------- 1 |

ForProblem

2 | 3 | @for (var i = 1; i <= 4; i++) 4 | { 5 | var buttonNumber = i; 6 | 7 | 11 | } 12 | 13 |
@_current
14 | 15 | @code { 16 | 17 | private int _current = -1; 18 | 19 | private void Update(int buttonNumber) 20 | { 21 | _current = buttonNumber; 22 | } 23 | 24 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/utilities/_align.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | .align-baseline { vertical-align: baseline !important; } // Browser default 4 | .align-top { vertical-align: top !important; } 5 | .align-middle { vertical-align: middle !important; } 6 | .align-bottom { vertical-align: bottom !important; } 7 | .align-text-bottom { vertical-align: text-bottom !important; } 8 | .align-text-top { vertical-align: text-top !important; } 9 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_float.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @mixin float-left() { 4 | float: left !important; 5 | @include deprecate("The `float-left` mixin", "v4.3.0", "v5"); 6 | } 7 | @mixin float-right() { 8 | float: right !important; 9 | @include deprecate("The `float-right` mixin", "v4.3.0", "v5"); 10 | } 11 | @mixin float-none() { 12 | float: none !important; 13 | @include deprecate("The `float-none` mixin", "v4.3.0", "v5"); 14 | } 15 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/bootstrap-reboot.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.5.2 (https://getbootstrap.com/) 3 | * Copyright 2011-2020 The Bootstrap Authors 4 | * Copyright 2011-2020 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | 9 | @import "functions"; 10 | @import "variables"; 11 | @import "mixins"; 12 | @import "reboot"; 13 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/core/toType.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/class2type", 3 | "../var/toString" 4 | ], function( class2type, toString ) { 5 | 6 | "use strict"; 7 | 8 | function toType( obj ) { 9 | if ( obj == null ) { 10 | return obj + ""; 11 | } 12 | 13 | // Support: Android <=2.3 only (functionish RegExp) 14 | return typeof obj === "object" || typeof obj === "function" ? 15 | class2type[ toString.call( obj ) ] || "object" : 16 | typeof obj; 17 | } 18 | 19 | return toType; 20 | } ); 21 | -------------------------------------------------------------------------------- /BlazorExample/_Imports.razor: -------------------------------------------------------------------------------- 1 | @using System.Net.Http 2 | @using System.Net.Http.Json 3 | @using Microsoft.AspNetCore.Components.Forms 4 | @using Microsoft.AspNetCore.Components.Routing 5 | @using Microsoft.AspNetCore.Components.Web 6 | @using Microsoft.AspNetCore.Components.WebAssembly.Http 7 | @using Microsoft.JSInterop 8 | @using BlazorExample 9 | @using BlazorExample.Shared 10 | @using BlazorExample.Components 11 | @using BlazorExample.Components.DependencyInjection 12 | @using BlazorExample.Pages.CascadingParameters -------------------------------------------------------------------------------- /GeneralUi/GeneralUi.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net5.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/traversing/var/dir.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../../core" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | return function( elem, dir, until ) { 8 | var matched = [], 9 | truncate = until !== undefined; 10 | 11 | while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { 12 | if ( elem.nodeType === 1 ) { 13 | if ( truncate && jQuery( elem ).is( until ) ) { 14 | break; 15 | } 16 | matched.push( elem ); 17 | } 18 | } 19 | return matched; 20 | }; 21 | 22 | } ); 23 | -------------------------------------------------------------------------------- /BlazorExample/Pages/Index.razor: -------------------------------------------------------------------------------- 1 | @page "/" 2 | 3 |

Hello, world!

4 | 5 | Welcome to your new app. 6 | 7 | @**@ 8 | 9 | @**@ 10 | 11 | @**@ 12 | 13 | @**@ 14 | 15 | @**@ 16 | 17 | 18 | 19 | @**@ 20 | 21 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_jumbotron.scss: -------------------------------------------------------------------------------- 1 | .jumbotron { 2 | padding: $jumbotron-padding ($jumbotron-padding / 2); 3 | margin-bottom: $jumbotron-padding; 4 | color: $jumbotron-color; 5 | background-color: $jumbotron-bg; 6 | @include border-radius($border-radius-lg); 7 | 8 | @include media-breakpoint-up(sm) { 9 | padding: ($jumbotron-padding * 2) $jumbotron-padding; 10 | } 11 | } 12 | 13 | .jumbotron-fluid { 14 | padding-right: 0; 15 | padding-left: 0; 16 | @include border-radius(0); 17 | } 18 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/css/var/getStyles.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return function( elem ) { 5 | 6 | // Support: IE <=11 only, Firefox <=30 (#15098, #14150) 7 | // IE throws on elements created in popups 8 | // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" 9 | var view = elem.ownerDocument.defaultView; 10 | 11 | if ( !view || !view.opener ) { 12 | view = window; 13 | } 14 | 15 | return view.getComputedStyle( elem ); 16 | }; 17 | } ); 18 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/var/isFunction.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | "use strict"; 3 | 4 | return function isFunction( obj ) { 5 | 6 | // Support: Chrome <=57, Firefox <=52 7 | // In some browsers, typeof returns "function" for HTML elements 8 | // (i.e., `typeof document.createElement( "object" ) === "function"`). 9 | // We don't want to classify *any* DOM node as a function. 10 | return typeof obj === "function" && typeof obj.nodeType !== "number"; 11 | }; 12 | 13 | } ); 14 | -------------------------------------------------------------------------------- /Organize.WASM/Components/ChildItemEdit.razor: -------------------------------------------------------------------------------- 1 |
Add new child items
2 | 3 | 4 | 5 |
    6 | @foreach (var childItem in ParentItem.ChildItems) 7 | { 8 |
  • 9 | 11 |
  • 12 | } 13 |
-------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/manipulation/setGlobalEval.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../data/var/dataPriv" 3 | ], function( dataPriv ) { 4 | 5 | "use strict"; 6 | 7 | // Mark scripts as having already been evaluated 8 | function setGlobalEval( elems, refElements ) { 9 | var i = 0, 10 | l = elems.length; 11 | 12 | for ( ; i < l; i++ ) { 13 | dataPriv.set( 14 | elems[ i ], 15 | "globalEval", 16 | !refElements || dataPriv.get( refElements[ i ], "globalEval" ) 17 | ); 18 | } 19 | } 20 | 21 | return setGlobalEval; 22 | } ); 23 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/selector-sizzle.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./core", 3 | "../external/sizzle/dist/sizzle" 4 | ], function( jQuery, Sizzle ) { 5 | 6 | "use strict"; 7 | 8 | jQuery.find = Sizzle; 9 | jQuery.expr = Sizzle.selectors; 10 | 11 | // Deprecated 12 | jQuery.expr[ ":" ] = jQuery.expr.pseudos; 13 | jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; 14 | jQuery.text = Sizzle.getText; 15 | jQuery.isXMLDoc = Sizzle.isXML; 16 | jQuery.contains = Sizzle.contains; 17 | jQuery.escapeSelector = Sizzle.escape; 18 | 19 | } ); 20 | -------------------------------------------------------------------------------- /Organize.IndexedDB/Organize.IndexedDB.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net5.0 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/sign.css: -------------------------------------------------------------------------------- 1 | .sign-form { 2 | width: 100%; 3 | max-width: 330px; 4 | padding: 15px; 5 | margin: auto; } 6 | 7 | .welcome-text { 8 | text-align: center; 9 | margin-bottom: 32px; } 10 | 11 | .sign-input { 12 | width: 100%; 13 | margin-top: 32px; } 14 | 15 | .sign-button { 16 | width: 100%; 17 | margin-top: 64px; 18 | margin-bottom: 64px; } 19 | 20 | .signup { 21 | text-align: center; 22 | width: 100%; 23 | margin-top: 32px; } 24 | 25 | .sign-validation { 26 | margin-top: 32px; } 27 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/utilities/_background.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $color, $value in $theme-colors { 4 | @include bg-variant(".bg-#{$color}", $value, true); 5 | } 6 | 7 | @if $enable-gradients { 8 | @each $color, $value in $theme-colors { 9 | @include bg-gradient-variant(".bg-gradient-#{$color}", $value, true); 10 | } 11 | } 12 | 13 | .bg-white { 14 | background-color: $white !important; 15 | } 16 | 17 | .bg-transparent { 18 | background-color: transparent !important; 19 | } 20 | -------------------------------------------------------------------------------- /BlazorExample/Pages/CascadingParameters/ChildOfChild.razor.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Components; 2 | 3 | namespace BlazorExample.Pages.CascadingParameters 4 | { 5 | public partial class ChildOfChild : ComponentBase 6 | { 7 | [CascadingParameter] public int Number { get; set; } 8 | 9 | [CascadingParameter(Name = "H1")] 10 | //[CascadingParameter] 11 | public string Text1 { get; set; } 12 | 13 | [CascadingParameter(Name = "H2")] 14 | //[CascadingParameter] 15 | public string Text2 { get; set; } 16 | } 17 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/utilities/_stretched-link.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Stretched link 3 | // 4 | 5 | .stretched-link { 6 | &::after { 7 | position: absolute; 8 | top: 0; 9 | right: 0; 10 | bottom: 0; 11 | left: 0; 12 | z-index: 1; 13 | // Just in case `pointer-events: none` is set on a parent 14 | pointer-events: auto; 15 | content: ""; 16 | // IE10 bugfix, see https://stackoverflow.com/questions/16947967/ie10-hover-pseudo-class-doesnt-work-without-background-color 17 | background-color: rgba(0, 0, 0, 0); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_list-group.scss: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | @mixin list-group-item-variant($state, $background, $color) { 4 | .list-group-item-#{$state} { 5 | color: $color; 6 | background-color: $background; 7 | 8 | &.list-group-item-action { 9 | @include hover-focus() { 10 | color: $color; 11 | background-color: darken($background, 5%); 12 | } 13 | 14 | &.active { 15 | color: $white; 16 | background-color: $color; 17 | border-color: $color; 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/sample-data/weather.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "date": "2018-05-06", 4 | "temperatureC": 1, 5 | "summary": "Freezing" 6 | }, 7 | { 8 | "date": "2018-05-07", 9 | "temperatureC": 14, 10 | "summary": "Bracing" 11 | }, 12 | { 13 | "date": "2018-05-08", 14 | "temperatureC": -13, 15 | "summary": "Freezing" 16 | }, 17 | { 18 | "date": "2018-05-09", 19 | "temperatureC": -16, 20 | "summary": "Balmy" 21 | }, 22 | { 23 | "date": "2018-05-10", 24 | "temperatureC": -2, 25 | "summary": "Chilly" 26 | } 27 | ] 28 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemsList.min.css: -------------------------------------------------------------------------------- 1 | .item-main-container{display:flex;flex-flow:column;height:100%;}.content-text-top{flex:1 1 auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.content-text-bottom{flex:0 1 auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#fff;}a.content-text-bottom{font-weight:bold;text-overflow:unset;}.detail-text{margin-left:80px;}.detail-image{margin-left:80px;width:100px;height:100px;}.extended-child{display:flex;flex-direction:row;margin-top:4px;margin-bottom:4px;}.child-title{height:100%;overflow:hidden;display:flex;align-items:center;} -------------------------------------------------------------------------------- /Organize.WebApi/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Hosting; 2 | using Microsoft.Extensions.Hosting; 3 | 4 | namespace Organize.WebApi 5 | { 6 | public static class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | CreateHostBuilder(args).Build().Run(); 11 | } 12 | 13 | private static IHostBuilder CreateHostBuilder(string[] args) 14 | { 15 | return Host.CreateDefaultBuilder(args) 16 | .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_text-emphasis.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Typography 4 | 5 | @mixin text-emphasis-variant($parent, $color, $ignore-warning: false) { 6 | #{$parent} { 7 | color: $color !important; 8 | } 9 | @if $emphasized-link-hover-darken-percentage != 0 { 10 | a#{$parent} { 11 | @include hover-focus() { 12 | color: darken($color, $emphasized-link-hover-darken-percentage) !important; 13 | } 14 | } 15 | } 16 | @include deprecate("`text-emphasis-variant()`", "v4.4.0", "v5", $ignore-warning); 17 | } 18 | -------------------------------------------------------------------------------- /BlazorExample/Shared/SurveyPrompt.razor: -------------------------------------------------------------------------------- 1 | 11 | 12 | @code { 13 | // Demonstrates how a parent component can supply parameters 14 | [Parameter] 15 | public string Title { get; set; } 16 | 17 | } -------------------------------------------------------------------------------- /Organize.WASM/Shared/SurveyPrompt.razor: -------------------------------------------------------------------------------- 1 | 11 | 12 | @code { 13 | // Demonstrates how a parent component can supply parameters 14 | [Parameter] 15 | public string Title { get; set; } 16 | } 17 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_reset-text.scss: -------------------------------------------------------------------------------- 1 | @mixin reset-text() { 2 | font-family: $font-family-base; 3 | // We deliberately do NOT reset font-size or word-wrap. 4 | font-style: normal; 5 | font-weight: $font-weight-normal; 6 | line-height: $line-height-base; 7 | text-align: left; // Fallback for where `start` is not supported 8 | text-align: start; 9 | text-decoration: none; 10 | text-shadow: none; 11 | text-transform: none; 12 | letter-spacing: normal; 13 | word-break: normal; 14 | word-spacing: normal; 15 | white-space: normal; 16 | line-break: auto; 17 | } 18 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_pagination.scss: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | @mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) { 4 | .page-link { 5 | padding: $padding-y $padding-x; 6 | @include font-size($font-size); 7 | line-height: $line-height; 8 | } 9 | 10 | .page-item { 11 | &:first-child { 12 | .page-link { 13 | @include border-left-radius($border-radius); 14 | } 15 | } 16 | &:last-child { 17 | .page-link { 18 | @include border-right-radius($border-radius); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/sign.scss: -------------------------------------------------------------------------------- 1 | .sign-form { 2 | width: 100%; 3 | max-width: 330px; 4 | padding: 15px; 5 | margin: auto; 6 | } 7 | 8 | .welcome-text { 9 | text-align: center; 10 | margin-bottom: 32px; 11 | } 12 | 13 | .sign-input { 14 | width: 100%; 15 | margin-top: 32px; 16 | } 17 | 18 | .sign-button { 19 | width: 100%; 20 | margin-top: 64px; 21 | margin-bottom: 64px; 22 | } 23 | 24 | .signup { 25 | text-align: center; 26 | width: 100%; 27 | margin-top: 32px; 28 | } 29 | 30 | .sign-validation { 31 | margin-top: 32px; 32 | } 33 | 34 | -------------------------------------------------------------------------------- /Organize.WebApi/Controllers/TestController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Authorization; 6 | using Microsoft.AspNetCore.Http; 7 | using Microsoft.AspNetCore.Mvc; 8 | 9 | namespace Organize.WebApi.Controllers 10 | { 11 | [Route("api/[controller]")] 12 | [ApiController] 13 | public class TestController : ControllerBase 14 | { 15 | public IActionResult IsUserWithNameAvailable([FromBody] AuthUser user) 16 | { 17 | return Ok("Works"); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Organize.Shared/Enitites/TextItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Organize.Shared.Enitites 6 | { 7 | public class TextItem : BaseItem 8 | { 9 | public string SubTitle 10 | { 11 | get => _subTitle; 12 | set => SetProperty(ref _subTitle, value); 13 | 14 | } 15 | private string _subTitle; 16 | 17 | public string Detail 18 | { 19 | get => _detail; 20 | set => SetProperty(ref _detail, value); 21 | } 22 | private string _detail; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /BlazorExample/Components/ParentComponent.razor: -------------------------------------------------------------------------------- 1 |

ParentComponent

2 |

Current count parent: @_childCounterValue

3 | 4 | @**@ 5 | @**@ 6 | 7 | 8 | 9 | @code { 10 | 11 | private int _childCounterValue; 12 | 13 | public void OnCounterIncreased(int counterValue) 14 | { 15 | _childCounterValue = counterValue; 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/utilities/_sizing.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Width and height 4 | 5 | @each $prop, $abbrev in (width: w, height: h) { 6 | @each $size, $length in $sizes { 7 | .#{$abbrev}-#{$size} { #{$prop}: $length !important; } 8 | } 9 | } 10 | 11 | .mw-100 { max-width: 100% !important; } 12 | .mh-100 { max-height: 100% !important; } 13 | 14 | // Viewport additional helpers 15 | 16 | .min-vw-100 { min-width: 100vw !important; } 17 | .min-vh-100 { min-height: 100vh !important; } 18 | 19 | .vw-100 { width: 100vw !important; } 20 | .vh-100 { height: 100vh !important; } 21 | -------------------------------------------------------------------------------- /Organize.WASM/_Imports.razor: -------------------------------------------------------------------------------- 1 | @using System.Net.Http 2 | @using System.Net.Http.Json 3 | @using Microsoft.AspNetCore.Components.Forms 4 | @using Microsoft.AspNetCore.Components.Routing 5 | @using Microsoft.AspNetCore.Components.Web 6 | @using Microsoft.AspNetCore.Components.WebAssembly.Http 7 | @using Microsoft.JSInterop 8 | @using Organize.WASM 9 | @using Organize.WASM.Shared 10 | @using GeneralUi.Validation 11 | @using GeneralUi.DropdownControl 12 | @using Organize.WASM.Components 13 | @using Organize.Shared.Enitites 14 | @using Microsoft.AspNetCore.Components.Authorization 15 | 16 | @using Blazored.Modal 17 | @using Blazored.Modal.Services 18 | -------------------------------------------------------------------------------- /Organize.Shared/Contracts/IItemDataAccess.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Enitites; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Organize.Shared.Contracts 8 | { 9 | public interface IItemDataAccess 10 | { 11 | Task> GetItemsOfUserAsync(int parentId) where TItem : BaseItem; 12 | Task InsertItemAsync(TItem item) where TItem : BaseItem; 13 | Task UpdateItemAsync(TItem item) where TItem : BaseItem; 14 | Task DeleteItemsAsync(IEnumerable items) where TItem : BaseItem; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Organize.Shared/Enitites/BaseEntity.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Organize.Shared.Enitites 6 | { 7 | public class BaseEntity : NotifyingObject 8 | { 9 | public int Id { get 10 | { 11 | return _id; 12 | } 13 | set 14 | { 15 | if(_id == value) 16 | { 17 | return; 18 | } 19 | 20 | _id = value; 21 | NotifyPropertyChanged(); 22 | } 23 | } 24 | 25 | private int _id; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Organize.WebApi/Organize.WebApi.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net5.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /GeneralUi/Validation/ValidationInput.razor: -------------------------------------------------------------------------------- 1 | @inherits ValidationInputBase 2 |
3 | 7 | @if (!string.IsNullOrEmpty(Error)) 8 | { 9 |
10 |

!

11 | @Error 12 |
13 | } 14 |
15 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_utilities.scss: -------------------------------------------------------------------------------- 1 | @import "utilities/align"; 2 | @import "utilities/background"; 3 | @import "utilities/borders"; 4 | @import "utilities/clearfix"; 5 | @import "utilities/display"; 6 | @import "utilities/embed"; 7 | @import "utilities/flex"; 8 | @import "utilities/float"; 9 | @import "utilities/interactions"; 10 | @import "utilities/overflow"; 11 | @import "utilities/position"; 12 | @import "utilities/screenreaders"; 13 | @import "utilities/shadows"; 14 | @import "utilities/sizing"; 15 | @import "utilities/spacing"; 16 | @import "utilities/stretched-link"; 17 | @import "utilities/text"; 18 | @import "utilities/visibility"; 19 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/css/var/swap.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | 3 | "use strict"; 4 | 5 | // A method for quickly swapping in/out CSS properties to get correct calculations. 6 | return function( elem, options, callback ) { 7 | var ret, name, 8 | old = {}; 9 | 10 | // Remember the old values, and insert the new ones 11 | for ( name in options ) { 12 | old[ name ] = elem.style[ name ]; 13 | elem.style[ name ] = options[ name ]; 14 | } 15 | 16 | ret = callback.call( elem ); 17 | 18 | // Revert the old values 19 | for ( name in options ) { 20 | elem.style[ name ] = old[ name ]; 21 | } 22 | 23 | return ret; 24 | }; 25 | 26 | } ); 27 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_box-shadow.scss: -------------------------------------------------------------------------------- 1 | @mixin box-shadow($shadow...) { 2 | @if $enable-shadows { 3 | $result: (); 4 | 5 | @if (length($shadow) == 1) { 6 | // We can pass `@include box-shadow(none);` 7 | $result: $shadow; 8 | } @else { 9 | // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;` 10 | @for $i from 1 through length($shadow) { 11 | @if nth($shadow, $i) != "none" { 12 | $result: append($result, nth($shadow, $i), "comma"); 13 | } 14 | } 15 | } 16 | @if (length($result) > 0) { 17 | box-shadow: $result; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Organize.TestFake/UserManagerFake.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Contracts; 2 | using Organize.Shared.Enitites; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Organize.TestFake 9 | { 10 | public class UserManagerFake : IUserManager 11 | { 12 | public Task InsertUserAsync(User user) 13 | { 14 | return Task.FromResult(true); 15 | } 16 | 17 | public Task TrySignInAndGetUserAsync(User user) 18 | { 19 | Console.WriteLine("Hello from fake"); 20 | return Task.FromResult(new User()); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemsOverview.min.css: -------------------------------------------------------------------------------- 1 | .items-container{display:flex;flex-direction:row;padding-bottom:58px;height:100%;width:100%;}.items-list-container{display:flex;flex-direction:column;align-items:center;flex:1 1 50%;overflow-y:auto;padding-left:24px;padding-right:24px;height:100%;}.item-edit-container{flex:1 1 50%;height:100%;width:100%;background:#fff;overflow-y:auto;padding:20px;padding-left:24px;padding-right:24px;border:#1c7430;}.item-add-box{border:1px solid #00b0f0;width:100%;height:60px;display:flex;align-items:center;background:#fff;display:flex;flex-direction:row;padding-right:24px;padding-left:24px;}.item-add-input{width:100%;flex:1 1 auto;margin-right:40px;} -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/utilities/_position.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Common values 4 | @each $position in $positions { 5 | .position-#{$position} { position: $position !important; } 6 | } 7 | 8 | // Shorthand 9 | 10 | .fixed-top { 11 | position: fixed; 12 | top: 0; 13 | right: 0; 14 | left: 0; 15 | z-index: $zindex-fixed; 16 | } 17 | 18 | .fixed-bottom { 19 | position: fixed; 20 | right: 0; 21 | bottom: 0; 22 | left: 0; 23 | z-index: $zindex-fixed; 24 | } 25 | 26 | .sticky-top { 27 | @supports (position: sticky) { 28 | position: sticky; 29 | top: 0; 30 | z-index: $zindex-sticky; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/utilities/_display.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // 4 | // Utilities for common `display` values 5 | // 6 | 7 | @each $breakpoint in map-keys($grid-breakpoints) { 8 | @include media-breakpoint-up($breakpoint) { 9 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 10 | 11 | @each $value in $displays { 12 | .d#{$infix}-#{$value} { display: $value !important; } 13 | } 14 | } 15 | } 16 | 17 | 18 | // 19 | // Utilities for toggling `display` in print 20 | // 21 | 22 | @media print { 23 | @each $value in $displays { 24 | .d-print-#{$value} { display: $value !important; } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/core/camelCase.js: -------------------------------------------------------------------------------- 1 | define( [], function() { 2 | 3 | "use strict"; 4 | 5 | // Matches dashed string for camelizing 6 | var rmsPrefix = /^-ms-/, 7 | rdashAlpha = /-([a-z])/g; 8 | 9 | // Used by camelCase as callback to replace() 10 | function fcamelCase( _all, letter ) { 11 | return letter.toUpperCase(); 12 | } 13 | 14 | // Convert dashed to camelCase; used by the css and data modules 15 | // Support: IE <=9 - 11, Edge 12 - 15 16 | // Microsoft forgot to hump their vendor prefix (#9572) 17 | function camelCase( string ) { 18 | return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); 19 | } 20 | 21 | return camelCase; 22 | 23 | } ); 24 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/css/addGetHookIf.js: -------------------------------------------------------------------------------- 1 | define( function() { 2 | 3 | "use strict"; 4 | 5 | function addGetHookIf( conditionFn, hookFn ) { 6 | 7 | // Define the hook, we'll check on the first run if it's really needed. 8 | return { 9 | get: function() { 10 | if ( conditionFn() ) { 11 | 12 | // Hook not needed (or it's not possible to use it due 13 | // to missing dependency), remove it. 14 | delete this.get; 15 | return; 16 | } 17 | 18 | // Hook needed; redefine it so that the support test is not executed again. 19 | return ( this.get = hookFn ).apply( this, arguments ); 20 | } 21 | }; 22 | } 23 | 24 | return addGetHookIf; 25 | 26 | } ); 27 | -------------------------------------------------------------------------------- /Organize.WASM/Components/ItemEdit.razor.scss: -------------------------------------------------------------------------------- 1 | @import '../wwwroot/css/_bootstrap-global.scss'; 2 | @import '../wwwroot/bootstrap/scss/_forms.scss'; 3 | 4 | @import 'BaseStyles/_ItemElementBase.scss'; 5 | 6 | ::deep .title { 7 | @extend .title-base; 8 | text-decoration: underline; 9 | } 10 | 11 | 12 | .item-edit-info { 13 | display: flex; 14 | flex-direction: row; 15 | margin-bottom: 24px; 16 | } 17 | 18 | .item-edit-info-text { 19 | flex: 1 1 auto 20 | } 21 | 22 | .item-edit-info-count { 23 | flex: 1 1 auto; 24 | text-align: right 25 | } 26 | 27 | .item-edit-input { 28 | @extend .form-control; 29 | width: 100%; 30 | margin-bottom: 12px; 31 | } 32 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_deprecate.scss: -------------------------------------------------------------------------------- 1 | // Deprecate mixin 2 | // 3 | // This mixin can be used to deprecate mixins or functions. 4 | // `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to 5 | // some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap) 6 | @mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) { 7 | @if ($enable-deprecation-messages != false and $ignore-warning != true) { 8 | @warn "#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}."; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /BlazorExample/Components/DependencyInjection/DependencyInjectionParentComponentBase.cs: -------------------------------------------------------------------------------- 1 | using BlazorExample.Components.DependencyInjection.Contracts; 2 | using Microsoft.AspNetCore.Components; 3 | 4 | namespace BlazorExample.Components.DependencyInjection 5 | { 6 | public class DependencyInjectionParentComponentBase : ComponentBase 7 | { 8 | [Inject] private IConstructorInjectionOne ConstructorInjectionOne { get; set; } 9 | 10 | protected bool IsComponentVisible { get; set; } = false; 11 | 12 | protected override void OnInitialized() 13 | { 14 | base.OnInitialized(); 15 | ConstructorInjectionOne.MethodOfOne(); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /GeneralUi/Validation/ValidationInputBase.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Components; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace GeneralUi.Validation 8 | { 9 | public class ValidationInputBase : ComponentBase 10 | { 11 | [Parameter] 12 | public EventCallback ValueChanged { get; set; } 13 | 14 | [Parameter] 15 | public string Value { get; set; } 16 | 17 | [Parameter] 18 | public string Error { get; set; } 19 | 20 | [Parameter(CaptureUnmatchedValues = true)] 21 | public Dictionary InputAttributes { get; set; } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Organize.WASM/Components/ItemCheckBoxBase.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | using Microsoft.AspNetCore.Components; 3 | using Organize.Shared.Contracts; 4 | using Organize.Shared.Enitites; 5 | 6 | namespace Organize.WASM.Components 7 | { 8 | public class ItemCheckBoxBase : ComponentBase 9 | { 10 | [Parameter] public BaseItem Item { get; set; } 11 | 12 | [CascadingParameter] public string ColorPrefix { get; set; } 13 | 14 | [Inject] private IUserItemManager UserItemManager { get; set; } 15 | 16 | public async Task ChangeIsDone() 17 | { 18 | Item.IsDone = !Item.IsDone; 19 | await UserItemManager.UpdateAsync(Item); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /BlazorExample/wwwroot/sample-data/weather.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "date": "2018-05-06", 4 | "temperatureC": 1, 5 | "summary": "Freezing", 6 | "temperatureF": 33 7 | }, 8 | { 9 | "date": "2018-05-07", 10 | "temperatureC": 14, 11 | "summary": "Bracing", 12 | "temperatureF": 57 13 | }, 14 | { 15 | "date": "2018-05-08", 16 | "temperatureC": -13, 17 | "summary": "Freezing", 18 | "temperatureF": 9 19 | }, 20 | { 21 | "date": "2018-05-09", 22 | "temperatureC": -16, 23 | "summary": "Balmy", 24 | "temperatureF": 4 25 | }, 26 | { 27 | "date": "2018-05-10", 28 | "temperatureC": -2, 29 | "summary": "Chilly", 30 | "temperatureF": 29 31 | } 32 | ] -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemElement.min.css: -------------------------------------------------------------------------------- 1 | .item-element{margin-top:20px;margin-bottom:20px;width:100%;}.item-element-main{width:100%;display:flex;flex-direction:row;height:80px;color:#fff;border-radius:0;}.check-container{flex:0 0 80px;display:flex;justify-content:center;align-items:center;border-right:1px solid #fff;}.checkbox{width:30px;height:30px;}.main-container{flex:1 1 auto;padding:6px;min-width:0;display:flex;flex-direction:row;}.main-fragment{flex:1 1 auto;min-width:0;height:100%;}.position{flex:0 1 auto;}.arrow-container{flex:0 0 80px;border-left:1px solid #fff;display:flex;justify-content:center;align-items:center;}.detail-fragment{border-width:2px;border-style:solid;border-top:0;width:100%;padding:10px 0;} -------------------------------------------------------------------------------- /BlazorExample/BlazorExample.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net5.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/core/parseXML.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | // Cross-browser xml parsing 8 | jQuery.parseXML = function( data ) { 9 | var xml; 10 | if ( !data || typeof data !== "string" ) { 11 | return null; 12 | } 13 | 14 | // Support: IE 9 - 11 only 15 | // IE throws on parseFromString with invalid input. 16 | try { 17 | xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); 18 | } catch ( e ) { 19 | xml = undefined; 20 | } 21 | 22 | if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { 23 | jQuery.error( "Invalid XML: " + data ); 24 | } 25 | return xml; 26 | }; 27 | 28 | return jQuery.parseXML; 29 | 30 | } ); 31 | -------------------------------------------------------------------------------- /GeneralUi/DropdownControl/Dropdown.razor: -------------------------------------------------------------------------------- 1 | @typeparam TValue 2 | -------------------------------------------------------------------------------- /Organize.Shared/Contracts/IUserItemManager.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Enitites; 2 | using Organize.Shared.Enums; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Organize.Shared.Contracts 9 | { 10 | public interface IUserItemManager 11 | { 12 | Task RetrieveAllUserItemsOfUserAndSetToUserAsync(User user); 13 | 14 | 15 | Task CreateNewChildItemAndAddItToParentItemAsync(ParentItem parent); 16 | 17 | Task CreateNewUserItemAndAddItToUserAsync(User user, ItemTypeEnum typeEnum); 18 | 19 | Task UpdateAsync(T item) where T : BaseItem; 20 | 21 | Task DeleteAllDoneAsync(User user); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Organize.Shared/Enitites/ParentItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.Text; 5 | 6 | namespace Organize.Shared.Enitites 7 | { 8 | public class ParentItem : BaseItem 9 | { 10 | public ObservableCollection ChildItems 11 | { 12 | get => _childItems; 13 | set 14 | { 15 | if (value == _childItems) 16 | { 17 | return; 18 | } 19 | 20 | _childItems = value; 21 | NotifyPropertyChanged(); 22 | } 23 | } 24 | private ObservableCollection _childItems; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/bootstrap-grid.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grid v4.5.2 (https://getbootstrap.com/) 3 | * Copyright 2011-2020 The Bootstrap Authors 4 | * Copyright 2011-2020 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | */ 7 | 8 | html { 9 | box-sizing: border-box; 10 | -ms-overflow-style: scrollbar; 11 | } 12 | 13 | *, 14 | *::before, 15 | *::after { 16 | box-sizing: inherit; 17 | } 18 | 19 | @import "functions"; 20 | @import "variables"; 21 | 22 | @import "mixins/breakpoints"; 23 | @import "mixins/grid-framework"; 24 | @import "mixins/grid"; 25 | 26 | @import "grid"; 27 | @import "utilities/display"; 28 | @import "utilities/flex"; 29 | @import "utilities/spacing"; 30 | -------------------------------------------------------------------------------- /Organize.Shared/Contracts/IPersistenceService.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Enitites; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq.Expressions; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Organize.Shared.Contracts 9 | { 10 | public interface IPersistenceService 11 | { 12 | Task> GetAsync(Expression> whereExpression) where T : BaseEntity; 13 | Task InsertAsync(T entity) where T : BaseEntity; 14 | Task UpdateAsync(T entity) where T : BaseEntity; 15 | Task DeleteAsync(T entity) where T : BaseEntity; 16 | Task InitAsync(); 17 | Task AuthenticateAndGetUserAsync(User user); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_root.scss: -------------------------------------------------------------------------------- 1 | // Do not forget to update getting-started/theming.md! 2 | :root { 3 | // Custom variable values only support SassScript inside `#{}`. 4 | @each $color, $value in $colors { 5 | --#{$color}: #{$value}; 6 | } 7 | 8 | @each $color, $value in $theme-colors { 9 | --#{$color}: #{$value}; 10 | } 11 | 12 | @each $bp, $value in $grid-breakpoints { 13 | --breakpoint-#{$bp}: #{$value}; 14 | } 15 | 16 | // Use `inspect` for lists so that quoted items keep the quotes. 17 | // See https://github.com/sass/sass/issues/2383#issuecomment-336349172 18 | --font-family-sans-serif: #{inspect($font-family-sans-serif)}; 19 | --font-family-monospace: #{inspect($font-family-monospace)}; 20 | } 21 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/core/support.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/document", 3 | "../var/support" 4 | ], function( document, support ) { 5 | 6 | "use strict"; 7 | 8 | // Support: Safari 8 only 9 | // In Safari 8 documents created via document.implementation.createHTMLDocument 10 | // collapse sibling forms: the second one becomes a child of the first one. 11 | // Because of that, this security measure has to be disabled in Safari 8. 12 | // https://bugs.webkit.org/show_bug.cgi?id=137337 13 | support.createHTMLDocument = ( function() { 14 | var body = document.implementation.createHTMLDocument( "" ).body; 15 | body.innerHTML = "
"; 16 | return body.childNodes.length === 2; 17 | } )(); 18 | 19 | return support; 20 | } ); 21 | -------------------------------------------------------------------------------- /BlazorExample/Components/DependencyInjection/Implementations/Scoped.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | using BlazorExample.Components.DependencyInjection.Contracts; 4 | 5 | namespace BlazorExample.Components.DependencyInjection.Implementations 6 | { 7 | public class Scoped : IScoped, IDisposable 8 | { 9 | private static volatile int _previousInstanceNumber; 10 | 11 | public Scoped() 12 | { 13 | Console.WriteLine("Scoped Created"); 14 | InstanceNumber = Interlocked.Increment(ref _previousInstanceNumber); 15 | } 16 | 17 | public void Dispose() 18 | { 19 | Console.WriteLine("Transient Disposed"); 20 | } 21 | 22 | public int InstanceNumber { get; } 23 | } 24 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/deferred/exceptionHook.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../deferred" 4 | ], function( jQuery ) { 5 | 6 | "use strict"; 7 | 8 | // These usually indicate a programmer mistake during development, 9 | // warn about them ASAP rather than swallowing them by default. 10 | var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; 11 | 12 | jQuery.Deferred.exceptionHook = function( error, stack ) { 13 | 14 | // Support: IE 8 - 9 only 15 | // Console exists when dev tools are open, which can happen at any time 16 | if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { 17 | window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); 18 | } 19 | }; 20 | 21 | } ); 22 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/queue/delay.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../queue", 4 | "../effects" // Delay is optional because of this dependency 5 | ], function( jQuery ) { 6 | 7 | "use strict"; 8 | 9 | // Based off of the plugin by Clint Helfers, with permission. 10 | // https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ 11 | jQuery.fn.delay = function( time, type ) { 12 | time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; 13 | type = type || "fx"; 14 | 15 | return this.queue( type, function( next, hooks ) { 16 | var timeout = window.setTimeout( next, time ); 17 | hooks.stop = function() { 18 | window.clearTimeout( timeout ); 19 | }; 20 | } ); 21 | }; 22 | 23 | return jQuery.fn.delay; 24 | } ); 25 | -------------------------------------------------------------------------------- /BlazorExample/Components/DependencyInjection/Implementations/ConstructorInjectionOne.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using BlazorExample.Components.DependencyInjection.Contracts; 3 | 4 | namespace BlazorExample.Components.DependencyInjection.Implementations 5 | { 6 | public class ConstructorInjectionOne : IConstructorInjectionOne 7 | { 8 | private readonly IConstructorInjectionTwo _constructorInjectionTwo; 9 | 10 | public ConstructorInjectionOne(IConstructorInjectionTwo constructorInjectionTwo) 11 | { 12 | _constructorInjectionTwo = constructorInjectionTwo; 13 | } 14 | 15 | public void MethodOfOne() 16 | { 17 | Console.WriteLine("One"); 18 | _constructorInjectionTwo.MethodOfTwo(); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /BlazorExample/Components/DependencyInjection/Implementations/Transient.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | using BlazorExample.Components.DependencyInjection.Contracts; 4 | 5 | namespace BlazorExample.Components.DependencyInjection.Implementations 6 | { 7 | public class Transient : ITransient, IDisposable 8 | { 9 | private static volatile int _previousInstanceNumber; 10 | 11 | public Transient() 12 | { 13 | Console.WriteLine("Transient Created"); 14 | InstanceNumber = Interlocked.Increment(ref _previousInstanceNumber); 15 | } 16 | 17 | public void Dispose() 18 | { 19 | Console.WriteLine("Transient Disposed"); 20 | } 21 | 22 | public int InstanceNumber { get; } 23 | } 24 | } -------------------------------------------------------------------------------- /BlazorExample/Components/DependencyInjection/Implementations/Singleton.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | using BlazorExample.Components.DependencyInjection.Contracts; 4 | 5 | namespace BlazorExample.Components.DependencyInjection.Implementations 6 | { 7 | public class Singleton : ISingleton, IDisposable 8 | { 9 | private static volatile int _previousInstanceNumber; 10 | 11 | 12 | public Singleton() 13 | { 14 | Console.WriteLine("Singleton Created"); 15 | InstanceNumber = Interlocked.Increment(ref _previousInstanceNumber); 16 | } 17 | 18 | public void Dispose() 19 | { 20 | Console.WriteLine("Transient Disposed"); 21 | } 22 | 23 | public int InstanceNumber { get; } 24 | } 25 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/exports/global.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | var 8 | 9 | // Map over jQuery in case of overwrite 10 | _jQuery = window.jQuery, 11 | 12 | // Map over the $ in case of overwrite 13 | _$ = window.$; 14 | 15 | jQuery.noConflict = function( deep ) { 16 | if ( window.$ === jQuery ) { 17 | window.$ = _$; 18 | } 19 | 20 | if ( deep && window.jQuery === jQuery ) { 21 | window.jQuery = _jQuery; 22 | } 23 | 24 | return jQuery; 25 | }; 26 | 27 | // Expose jQuery and $ identifiers, even in AMD 28 | // (#7102#comment:10, https://github.com/jquery/jquery/pull/557) 29 | // and CommonJS for browser emulators (#13566) 30 | if ( typeof noGlobal === "undefined" ) { 31 | window.jQuery = window.$ = jQuery; 32 | } 33 | 34 | } ); 35 | -------------------------------------------------------------------------------- /BlazorExample/wwwroot/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | BlazorExample 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | Loading... 17 | 18 |
19 | An unhandled error has occurred. 20 | Reload 21 | 🗙 22 |
23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Organize.WASM/Pages/ItemsOverview.razor: -------------------------------------------------------------------------------- 1 | @page "/items" 2 | @page "/items/{TypeString}/{Id:int}" 3 | 4 |
5 |
6 | 7 |
8 | 9 | @if (ShowEdit) 10 | { 11 |
12 | 13 |
14 | } 15 |
16 | 17 |
18 | 24 | 25 | 26 |
-------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_transition.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable property-blacklist 2 | @mixin transition($transition...) { 3 | @if length($transition) == 0 { 4 | $transition: $transition-base; 5 | } 6 | 7 | @if length($transition) > 1 { 8 | @each $value in $transition { 9 | @if $value == null or $value == none { 10 | @warn "The keyword 'none' or 'null' must be used as a single argument."; 11 | } 12 | } 13 | } 14 | 15 | @if $enable-transitions { 16 | @if nth($transition, 1) != null { 17 | transition: $transition; 18 | } 19 | 20 | @if $enable-prefers-reduced-motion-media-query and nth($transition, 1) != null and nth($transition, 1) != none { 21 | @media (prefers-reduced-motion: reduce) { 22 | transition: none; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/manipulation/getAll.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../core/nodeName" 4 | ], function( jQuery, nodeName ) { 5 | 6 | "use strict"; 7 | 8 | function getAll( context, tag ) { 9 | 10 | // Support: IE <=9 - 11 only 11 | // Use typeof to avoid zero-argument method invocation on host objects (#15151) 12 | var ret; 13 | 14 | if ( typeof context.getElementsByTagName !== "undefined" ) { 15 | ret = context.getElementsByTagName( tag || "*" ); 16 | 17 | } else if ( typeof context.querySelectorAll !== "undefined" ) { 18 | ret = context.querySelectorAll( tag || "*" ); 19 | 20 | } else { 21 | ret = []; 22 | } 23 | 24 | if ( tag === undefined || tag && nodeName( context, tag ) ) { 25 | return jQuery.merge( [ context ], ret ); 26 | } 27 | 28 | return ret; 29 | } 30 | 31 | return getAll; 32 | } ); 33 | -------------------------------------------------------------------------------- /GeneralUi/DropdownControl/Dropdown.razor.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Components; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace GeneralUi.DropdownControl 7 | { 8 | public partial class Dropdown : ComponentBase 9 | { 10 | [Parameter] 11 | public IList> SelectableItems { get; set; } 12 | 13 | [Parameter] 14 | public DropdownItem SelectedItem { get; set; } 15 | 16 | [Parameter] 17 | public EventCallback> SelectedItemChanged { get; set; } 18 | 19 | public async void OnItemClicked(DropdownItem item) 20 | { 21 | SelectedItem = item; 22 | StateHasChanged(); 23 | await SelectedItemChanged.InvokeAsync(item); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_background-variant.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Contextual backgrounds 4 | 5 | @mixin bg-variant($parent, $color, $ignore-warning: false) { 6 | #{$parent} { 7 | background-color: $color !important; 8 | } 9 | a#{$parent}, 10 | button#{$parent} { 11 | @include hover-focus() { 12 | background-color: darken($color, 10%) !important; 13 | } 14 | } 15 | @include deprecate("The `bg-variant` mixin", "v4.4.0", "v5", $ignore-warning); 16 | } 17 | 18 | @mixin bg-gradient-variant($parent, $color, $ignore-warning: false) { 19 | #{$parent} { 20 | background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important; 21 | } 22 | @include deprecate("The `bg-gradient-variant` mixin", "v4.5.0", "v5", $ignore-warning); 23 | } 24 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/jquery.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./core", 3 | "./selector", 4 | "./traversing", 5 | "./callbacks", 6 | "./deferred", 7 | "./deferred/exceptionHook", 8 | "./core/ready", 9 | "./data", 10 | "./queue", 11 | "./queue/delay", 12 | "./attributes", 13 | "./event", 14 | "./event/focusin", 15 | "./manipulation", 16 | "./manipulation/_evalUrl", 17 | "./wrap", 18 | "./css", 19 | "./css/hiddenVisibleSelectors", 20 | "./serialize", 21 | "./ajax", 22 | "./ajax/xhr", 23 | "./ajax/script", 24 | "./ajax/jsonp", 25 | "./ajax/load", 26 | "./core/parseXML", 27 | "./core/parseHTML", 28 | "./effects", 29 | "./effects/animatedSelector", 30 | "./offset", 31 | "./dimensions", 32 | "./deprecated", 33 | "./exports/amd", 34 | "./exports/global" 35 | ], function( jQuery ) { 36 | 37 | "use strict"; 38 | 39 | return jQuery; 40 | 41 | } ); 42 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/manipulation/_evalUrl.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../ajax" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | jQuery._evalUrl = function( url, options, doc ) { 8 | return jQuery.ajax( { 9 | url: url, 10 | 11 | // Make this explicit, since user can override this through ajaxSetup (#11264) 12 | type: "GET", 13 | dataType: "script", 14 | cache: true, 15 | async: false, 16 | global: false, 17 | 18 | // Only evaluate the response if it is successful (gh-4126) 19 | // dataFilter is not invoked for failure responses, so using it instead 20 | // of the default converter is kludgy but it works. 21 | converters: { 22 | "text script": function() {} 23 | }, 24 | dataFilter: function( response ) { 25 | jQuery.globalEval( response, options, doc ); 26 | } 27 | } ); 28 | }; 29 | 30 | return jQuery._evalUrl; 31 | 32 | } ); 33 | -------------------------------------------------------------------------------- /BlazorExample/Components/DependencyInjection/DependencyInjectionComponentBase.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using BlazorExample.Components.DependencyInjection.Contracts; 3 | using Microsoft.AspNetCore.Components; 4 | 5 | namespace BlazorExample.Components.DependencyInjection 6 | { 7 | public class DependencyInjectionComponentBase : ComponentBase 8 | { 9 | [Inject] protected IScoped Scoped { get; set; } 10 | 11 | [Inject] protected ISingleton Singleton { get; set; } 12 | 13 | [Inject] protected ITransient Transient { get; set; } 14 | 15 | protected override void OnInitialized() 16 | { 17 | base.OnInitialized(); 18 | Console.WriteLine("Scoped " + Scoped.InstanceNumber); 19 | Console.WriteLine("Singleton " + Singleton.InstanceNumber); 20 | Console.WriteLine("Transient " + Transient.InstanceNumber); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /Organize.WASM/Components/ChildItemEdit.razor.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | using Microsoft.AspNetCore.Components; 3 | using Organize.Shared.Contracts; 4 | using Organize.Shared.Enitites; 5 | 6 | namespace Organize.WASM.Components 7 | { 8 | public partial class ChildItemEdit : ComponentBase 9 | { 10 | [Inject] private IUserItemManager UserItemManager { get; set; } 11 | 12 | [Parameter] public ParentItem ParentItem { get; set; } 13 | 14 | 15 | private async Task AddNewChildToParentAsync() 16 | { 17 | await UserItemManager.CreateNewChildItemAndAddItToParentItemAsync(ParentItem); 18 | } 19 | 20 | private async void OnChildItemTitleChanged(ChildItem childItem, ChangeEventArgs eventArgs) 21 | { 22 | childItem.Title = eventArgs.Value.ToString(); 23 | await UserItemManager.UpdateAsync(childItem); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/core/isAttached.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../var/documentElement", 4 | "../selector" // jQuery.contains 5 | ], function( jQuery, documentElement ) { 6 | "use strict"; 7 | 8 | var isAttached = function( elem ) { 9 | return jQuery.contains( elem.ownerDocument, elem ); 10 | }, 11 | composed = { composed: true }; 12 | 13 | // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only 14 | // Check attachment across shadow DOM boundaries when possible (gh-3504) 15 | // Support: iOS 10.0-10.2 only 16 | // Early iOS 10 versions support `attachShadow` but not `getRootNode`, 17 | // leading to errors. We need to check for `getRootNode`. 18 | if ( documentElement.getRootNode ) { 19 | isAttached = function( elem ) { 20 | return jQuery.contains( elem.ownerDocument, elem ) || 21 | elem.getRootNode( composed ) === elem.ownerDocument; 22 | }; 23 | } 24 | 25 | return isAttached; 26 | } ); 27 | -------------------------------------------------------------------------------- /Organize.WebApi/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:64320", 8 | "sslPort": 44384 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": true, 15 | "launchUrl": "api/test", 16 | "environmentVariables": { 17 | "ASPNETCORE_ENVIRONMENT": "Development" 18 | } 19 | }, 20 | "Organize.WebApi": { 21 | "commandName": "Project", 22 | "launchBrowser": true, 23 | "launchUrl": "api/test", 24 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 25 | "environmentVariables": { 26 | "ASPNETCORE_ENVIRONMENT": "Development" 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemsList.css: -------------------------------------------------------------------------------- 1 | .item-main-container { 2 | display: flex; 3 | flex-flow: column; 4 | height: 100%; } 5 | 6 | .content-text-top { 7 | flex: 1 1 auto; 8 | overflow: hidden; 9 | white-space: nowrap; 10 | text-overflow: ellipsis; } 11 | 12 | .content-text-bottom { 13 | flex: 0 1 auto; 14 | overflow: hidden; 15 | white-space: nowrap; 16 | text-overflow: ellipsis; 17 | color: white; } 18 | 19 | a.content-text-bottom { 20 | font-weight: bold; 21 | text-overflow: unset; } 22 | 23 | /*Detail area styling*/ 24 | .detail-text { 25 | margin-left: 80px; } 26 | 27 | .detail-image { 28 | margin-left: 80px; 29 | width: 100px; 30 | height: 100px; } 31 | 32 | .extended-child { 33 | display: flex; 34 | flex-direction: row; 35 | margin-top: 4px; 36 | margin-bottom: 4px; } 37 | 38 | .child-title { 39 | height: 100%; 40 | overflow: hidden; 41 | display: flex; 42 | align-items: center; } 43 | -------------------------------------------------------------------------------- /BlazorExample/Components/ChildComponent.razor: -------------------------------------------------------------------------------- 1 |

ChildComponent

2 | 3 | 4 |

Current count child: @CounterValue

5 | 6 | 10 | 11 | @code { 12 | 13 | //private int _counterValue = 0; 14 | [Parameter] 15 | public int CounterValue { get; set; } 16 | 17 | [Parameter] 18 | public EventCallback OnCounterIncreasedCallback { get; set; } 19 | 20 | [Parameter] 21 | public EventCallback CounterValueChanged { get; set; } 22 | 23 | //Warum async und warum invoke async 24 | private async Task IncrementCounterValue() 25 | { 26 | //_counterValue++; 27 | CounterValue++; 28 | //await OnCounterIncreasedCallback.InvokeAsync(_counterValue); 29 | await OnCounterIncreasedCallback.InvokeAsync(CounterValue); 30 | await CounterValueChanged.InvokeAsync(CounterValue); 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/js/src/index.js: -------------------------------------------------------------------------------- 1 | import Alert from './alert' 2 | import Button from './button' 3 | import Carousel from './carousel' 4 | import Collapse from './collapse' 5 | import Dropdown from './dropdown' 6 | import Modal from './modal' 7 | import Popover from './popover' 8 | import Scrollspy from './scrollspy' 9 | import Tab from './tab' 10 | import Toast from './toast' 11 | import Tooltip from './tooltip' 12 | import Util from './util' 13 | 14 | /** 15 | * -------------------------------------------------------------------------- 16 | * Bootstrap (v4.5.2): index.js 17 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 18 | * -------------------------------------------------------------------------- 19 | */ 20 | 21 | export { 22 | Util, 23 | Alert, 24 | Button, 25 | Carousel, 26 | Collapse, 27 | Dropdown, 28 | Modal, 29 | Popover, 30 | Scrollspy, 31 | Tab, 32 | Toast, 33 | Tooltip 34 | } 35 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_hover.scss: -------------------------------------------------------------------------------- 1 | // Hover mixin and `$enable-hover-media-query` are deprecated. 2 | // 3 | // Originally added during our alphas and maintained during betas, this mixin was 4 | // designed to prevent `:hover` stickiness on iOS-an issue where hover styles 5 | // would persist after initial touch. 6 | // 7 | // For backward compatibility, we've kept these mixins and updated them to 8 | // always return their regular pseudo-classes instead of a shimmed media query. 9 | // 10 | // Issue: https://github.com/twbs/bootstrap/issues/25195 11 | 12 | @mixin hover() { 13 | &:hover { @content; } 14 | } 15 | 16 | @mixin hover-focus() { 17 | &:hover, 18 | &:focus { 19 | @content; 20 | } 21 | } 22 | 23 | @mixin plain-hover-focus() { 24 | &, 25 | &:hover, 26 | &:focus { 27 | @content; 28 | } 29 | } 30 | 31 | @mixin hover-focus-active() { 32 | &:hover, 33 | &:focus, 34 | &:active { 35 | @content; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/attributes/support.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/document", 3 | "../var/support" 4 | ], function( document, support ) { 5 | 6 | "use strict"; 7 | 8 | ( function() { 9 | var input = document.createElement( "input" ), 10 | select = document.createElement( "select" ), 11 | opt = select.appendChild( document.createElement( "option" ) ); 12 | 13 | input.type = "checkbox"; 14 | 15 | // Support: Android <=4.3 only 16 | // Default value for a checkbox should be "on" 17 | support.checkOn = input.value !== ""; 18 | 19 | // Support: IE <=11 only 20 | // Must access selectedIndex to make default options select 21 | support.optSelected = opt.selected; 22 | 23 | // Support: IE <=11 only 24 | // An input loses its value after becoming a radio 25 | input = document.createElement( "input" ); 26 | input.value = "t"; 27 | input.type = "radio"; 28 | support.radioValue = input.value === "t"; 29 | } )(); 30 | 31 | return support; 32 | 33 | } ); 34 | -------------------------------------------------------------------------------- /GeneralUi/BusyOverlay/BusyOverlayService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace GeneralUi.BusyOverlay 6 | { 7 | public class BusyOverlayService 8 | { 9 | public event EventHandler BusyStateChanged; 10 | 11 | protected virtual void OnBusyStateChanged(BusyChangedEventArgs e) 12 | { 13 | EventHandler handler = BusyStateChanged; 14 | if (handler != null) 15 | { 16 | handler(this, e); 17 | } 18 | } 19 | 20 | public BusyEnum CurrentBusyState { get; set; } 21 | 22 | public void SetBusyState(BusyEnum busyState) 23 | { 24 | CurrentBusyState = busyState; 25 | var eventArgs = new BusyChangedEventArgs(); 26 | eventArgs.BusyState = CurrentBusyState; 27 | OnBusyStateChanged(eventArgs); 28 | } 29 | 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/manipulation/wrapMap.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./support" 3 | ], function( support ) { 4 | 5 | "use strict"; 6 | 7 | // We have to close these tags to support XHTML (#13200) 8 | var wrapMap = { 9 | 10 | // XHTML parsers do not magically insert elements in the 11 | // same way that tag soup parsers do. So we cannot shorten 12 | // this by omitting or other required elements. 13 | thead: [ 1, "", "
" ], 14 | col: [ 2, "", "
" ], 15 | tr: [ 2, "", "
" ], 16 | td: [ 3, "", "
" ], 17 | 18 | _default: [ 0, "", "" ] 19 | }; 20 | 21 | wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; 22 | wrapMap.th = wrapMap.td; 23 | 24 | // Support: IE <=9 only 25 | if ( !support.option ) { 26 | wrapMap.optgroup = wrapMap.option = [ 1, "" ]; 27 | } 28 | 29 | return wrapMap; 30 | } ); 31 | -------------------------------------------------------------------------------- /BlazorExample/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:64277", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", 15 | "environmentVariables": { 16 | "ASPNETCORE_ENVIRONMENT": "Development" 17 | } 18 | }, 19 | "BlazorExample": { 20 | "commandName": "Project", 21 | "launchBrowser": true, 22 | "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", 23 | "applicationUrl": "http://localhost:5000", 24 | "environmentVariables": { 25 | "ASPNETCORE_ENVIRONMENT": "Development" 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Organize.WASM/App.razor: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 |
8 | Loading... 9 |
10 |
11 | 12 |
13 | 14 | 15 |

Sorry, there's nothing at this address.

16 |
17 |
18 |
19 |
20 |
21 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_screen-reader.scss: -------------------------------------------------------------------------------- 1 | // Only display content to screen readers 2 | // 3 | // See: https://a11yproject.com/posts/how-to-hide-content/ 4 | // See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/ 5 | 6 | @mixin sr-only() { 7 | position: absolute; 8 | width: 1px; 9 | height: 1px; 10 | padding: 0; 11 | margin: -1px; // Fix for https://github.com/twbs/bootstrap/issues/25686 12 | overflow: hidden; 13 | clip: rect(0, 0, 0, 0); 14 | white-space: nowrap; 15 | border: 0; 16 | } 17 | 18 | // Use in conjunction with .sr-only to only display content when it's focused. 19 | // 20 | // Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 21 | // 22 | // Credit: HTML5 Boilerplate 23 | 24 | @mixin sr-only-focusable() { 25 | &:active, 26 | &:focus { 27 | position: static; 28 | width: auto; 29 | height: auto; 30 | overflow: visible; 31 | clip: auto; 32 | white-space: normal; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /GeneralUi/BusyOverlay/BusyOverlayBase.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Components; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace GeneralUi.BusyOverlay 7 | { 8 | public class BusyOverlayBase : ComponentBase 9 | { 10 | [Parameter] 11 | public RenderFragment ChildContent { get; set; } 12 | 13 | [Inject] 14 | public BusyOverlayService BusyOverlayService { get; set; } 15 | 16 | protected bool IsBusy { get; set; } 17 | 18 | protected override void OnParametersSet() 19 | { 20 | base.OnParametersSet(); 21 | BusyOverlayService.BusyStateChanged += HandleBusyStateChanged; 22 | IsBusy = BusyOverlayService.CurrentBusyState == BusyEnum.Busy; 23 | } 24 | 25 | private void HandleBusyStateChanged(object sender, BusyChangedEventArgs e) 26 | { 27 | IsBusy = e.BusyState == BusyEnum.Busy; 28 | StateHasChanged(); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Organize.WASM/Pages/SignBase.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Components; 2 | using Microsoft.AspNetCore.Components.Forms; 3 | using Organize.Shared.Enitites; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using System.Linq.Expressions; 8 | using System.Threading.Tasks; 9 | 10 | namespace Organize.WASM.Pages 11 | { 12 | public class SignBase : ComponentBase 13 | { 14 | protected User User { get; set; } = new User(); 15 | 16 | protected EditContext EditContext { get; set; } 17 | 18 | protected override void OnInitialized() 19 | { 20 | base.OnInitialized(); 21 | 22 | EditContext = new EditContext(User); 23 | } 24 | 25 | public string GetError(Expression> fu) 26 | { 27 | if (EditContext == null) 28 | { 29 | return null; 30 | } 31 | return EditContext.GetValidationMessages(fu).FirstOrDefault(); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_table-row.scss: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | @mixin table-row-variant($state, $background, $border: null) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table-#{$state} { 7 | &, 8 | > th, 9 | > td { 10 | background-color: $background; 11 | } 12 | 13 | @if $border != null { 14 | th, 15 | td, 16 | thead th, 17 | tbody + tbody { 18 | border-color: $border; 19 | } 20 | } 21 | } 22 | 23 | // Hover states for `.table-hover` 24 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 25 | .table-hover { 26 | $hover-background: darken($background, 5%); 27 | 28 | .table-#{$state} { 29 | @include hover() { 30 | background-color: $hover-background; 31 | 32 | > td, 33 | > th { 34 | background-color: $hover-background; 35 | } 36 | } 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/js/dist/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * -------------------------------------------------------------------------- 3 | * Bootstrap (v4.4.0): index.js 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | * -------------------------------------------------------------------------- 6 | */ 7 | (function ($) { 8 | if (typeof $ === 'undefined') { 9 | throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.'); 10 | } 11 | 12 | var version = $.fn.jquery.split(' ')[0].split('.'); 13 | var minMajor = 1; 14 | var ltMajor = 2; 15 | var minMinor = 9; 16 | var minPatch = 1; 17 | var maxMajor = 4; 18 | 19 | if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) { 20 | throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0'); 21 | } 22 | })($); 23 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /Organize.WASM/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:59350", 7 | "sslPort": 44310 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", 15 | "environmentVariables": { 16 | "ASPNETCORE_ENVIRONMENT": "Development" 17 | } 18 | }, 19 | "Organize.WASM": { 20 | "commandName": "Project", 21 | "launchBrowser": true, 22 | "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", 23 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 24 | "environmentVariables": { 25 | "ASPNETCORE_ENVIRONMENT": "Development" 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemsOverview.css: -------------------------------------------------------------------------------- 1 | .items-container { 2 | display: flex; 3 | flex-direction: row; 4 | padding-bottom: 58px; 5 | height: 100%; 6 | width: 100%; } 7 | 8 | .items-list-container { 9 | display: flex; 10 | flex-direction: column; 11 | align-items: center; 12 | flex: 1 1 50%; 13 | overflow-y: auto; 14 | padding-left: 24px; 15 | padding-right: 24px; 16 | height: 100%; } 17 | 18 | .item-edit-container { 19 | flex: 1 1 50%; 20 | height: 100%; 21 | width: 100%; 22 | background: white; 23 | overflow-y: auto; 24 | padding: 20px; 25 | padding-left: 24px; 26 | padding-right: 24px; 27 | border: #1c7430; } 28 | 29 | .item-add-box { 30 | border: 1px solid #00B0F0; 31 | width: 100%; 32 | height: 60px; 33 | display: flex; 34 | align-items: center; 35 | background: white; 36 | display: flex; 37 | flex-direction: row; 38 | padding-right: 24px; 39 | padding-left: 24px; } 40 | 41 | .item-add-input { 42 | width: 100%; 43 | flex: 1 1 auto; 44 | margin-right: 40px; } 45 | -------------------------------------------------------------------------------- /Organize.WASM/ItemEdit/ItemEditService.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Enitites; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | 7 | namespace Organize.WASM.ItemEdit 8 | { 9 | public sealed class ItemEditService 10 | { 11 | public event EventHandler EditItemChanged; 12 | 13 | private BaseItem _editItem; 14 | 15 | public BaseItem EditItem 16 | { 17 | get => _editItem; 18 | set 19 | { 20 | if (_editItem == value) 21 | { 22 | return; 23 | } 24 | 25 | _editItem = value; 26 | var args = new ItemEditEventArgs {Item = _editItem}; 27 | OnEditItemChanged(args); 28 | } 29 | } 30 | 31 | private void OnEditItemChanged(ItemEditEventArgs e) 32 | { 33 | var handler = EditItemChanged; 34 | handler?.Invoke(this, e); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/utilities/_embed.scss: -------------------------------------------------------------------------------- 1 | // Credit: Nicolas Gallagher and SUIT CSS. 2 | 3 | .embed-responsive { 4 | position: relative; 5 | display: block; 6 | width: 100%; 7 | padding: 0; 8 | overflow: hidden; 9 | 10 | &::before { 11 | display: block; 12 | content: ""; 13 | } 14 | 15 | .embed-responsive-item, 16 | iframe, 17 | embed, 18 | object, 19 | video { 20 | position: absolute; 21 | top: 0; 22 | bottom: 0; 23 | left: 0; 24 | width: 100%; 25 | height: 100%; 26 | border: 0; 27 | } 28 | } 29 | 30 | @each $embed-responsive-aspect-ratio in $embed-responsive-aspect-ratios { 31 | $embed-responsive-aspect-ratio-x: nth($embed-responsive-aspect-ratio, 1); 32 | $embed-responsive-aspect-ratio-y: nth($embed-responsive-aspect-ratio, 2); 33 | 34 | .embed-responsive-#{$embed-responsive-aspect-ratio-x}by#{$embed-responsive-aspect-ratio-y} { 35 | &::before { 36 | padding-top: percentage($embed-responsive-aspect-ratio-y / $embed-responsive-aspect-ratio-x); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemsList.scss: -------------------------------------------------------------------------------- 1 | 2 | .item-main-container { 3 | display: flex; 4 | flex-flow: column; 5 | height: 100%; 6 | } 7 | 8 | .content-text-top { 9 | flex: 1 1 auto; 10 | overflow: hidden; 11 | white-space: nowrap; 12 | text-overflow: ellipsis; 13 | } 14 | 15 | .content-text-bottom { 16 | flex: 0 1 auto; 17 | overflow: hidden; 18 | white-space: nowrap; 19 | text-overflow: ellipsis; 20 | color: white; 21 | } 22 | 23 | a.content-text-bottom { 24 | font-weight: bold; 25 | text-overflow: unset; 26 | } 27 | 28 | 29 | /*Detail area styling*/ 30 | 31 | .detail-text { 32 | margin-left: 80px; 33 | } 34 | 35 | .detail-image { 36 | margin-left: 80px; 37 | width: 100px; 38 | height: 100px; 39 | } 40 | 41 | .extended-child { 42 | display: flex; 43 | flex-direction: row; 44 | margin-top: 4px; 45 | margin-bottom: 4px; 46 | } 47 | 48 | .child-title { 49 | height: 100%; 50 | overflow: hidden; 51 | display: flex; 52 | align-items: center; 53 | } 54 | 55 | -------------------------------------------------------------------------------- /Organize.WebAPIAccess/WebAPIUserDataAccess.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Contracts; 2 | using Organize.Shared.Enitites; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Organize.WebAPIAccess 9 | { 10 | public class WebAPIUserDataAccess : IUserDataAccess 11 | { 12 | private WebAPIAccess _webAPIAccess; 13 | 14 | public WebAPIUserDataAccess(IPersistenceService persistenceService) 15 | { 16 | _webAPIAccess = (WebAPIAccess)persistenceService; 17 | } 18 | 19 | public async Task AuthenticateAndGetUserAsync(User user) 20 | { 21 | return await _webAPIAccess.AuthenticateAndGetUserAsync(user); 22 | } 23 | 24 | public async Task InsertUserAsync(User user) 25 | { 26 | await _webAPIAccess.InsertAsync(user); 27 | } 28 | 29 | public Task IsUserWithNameAvailableAsync(User user) 30 | { 31 | return Task.FromResult(false); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Organize.WASM/Pages/Settings.razor.cs: -------------------------------------------------------------------------------- 1 | using GeneralUi.BusyOverlay; 2 | using Microsoft.AspNetCore.Components; 3 | using Organize.Shared.Contracts; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using System.Threading.Tasks; 8 | 9 | namespace Organize.WASM.Pages 10 | { 11 | public partial class Settings : ComponentBase 12 | { 13 | [Inject] 14 | private IUserItemManager UserItemManager { get; set; } 15 | 16 | [Inject] 17 | private BusyOverlayService BusyOverlayService { get; set; } 18 | 19 | [Inject] 20 | private ICurrentUserService CurrentUserService { get; set; } 21 | 22 | private async void DeleteAllDone() 23 | { 24 | try 25 | { 26 | BusyOverlayService.SetBusyState(BusyEnum.Busy); 27 | await UserItemManager.DeleteAllDoneAsync(CurrentUserService.CurrentUser); 28 | } 29 | finally 30 | { 31 | BusyOverlayService.SetBusyState(BusyEnum.NotBusy); 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/css/finalPropName.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/document", 3 | "../core" 4 | ], function( document, jQuery ) { 5 | 6 | "use strict"; 7 | 8 | var cssPrefixes = [ "Webkit", "Moz", "ms" ], 9 | emptyStyle = document.createElement( "div" ).style, 10 | vendorProps = {}; 11 | 12 | // Return a vendor-prefixed property or undefined 13 | function vendorPropName( name ) { 14 | 15 | // Check for vendor prefixed names 16 | var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), 17 | i = cssPrefixes.length; 18 | 19 | while ( i-- ) { 20 | name = cssPrefixes[ i ] + capName; 21 | if ( name in emptyStyle ) { 22 | return name; 23 | } 24 | } 25 | } 26 | 27 | // Return a potentially-mapped jQuery.cssProps or vendor prefixed property 28 | function finalPropName( name ) { 29 | var final = jQuery.cssProps[ name ] || vendorProps[ name ]; 30 | 31 | if ( final ) { 32 | return final; 33 | } 34 | if ( name in emptyStyle ) { 35 | return name; 36 | } 37 | return vendorProps[ name ] = vendorPropName( name ) || name; 38 | } 39 | 40 | return finalPropName; 41 | 42 | } ); 43 | -------------------------------------------------------------------------------- /Organize.Business/UserManager.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Contracts; 2 | using Organize.Shared.Enitites; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Organize.Business 9 | { 10 | public class UserManager : IUserManager 11 | { 12 | private readonly IUserDataAccess _userDataAccess; 13 | 14 | public UserManager(IUserDataAccess userDataAccess) 15 | { 16 | _userDataAccess = userDataAccess; 17 | } 18 | 19 | public async Task TrySignInAndGetUserAsync(User user) 20 | { 21 | return await _userDataAccess.AuthenticateAndGetUserAsync(user); 22 | } 23 | 24 | public async Task InsertUserAsync(User user) 25 | { 26 | var isUserAlreadyAvailable = await _userDataAccess.IsUserWithNameAvailableAsync(user); 27 | if (isUserAlreadyAvailable) 28 | { 29 | throw new Exception("Username already exists"); 30 | } 31 | 32 | await _userDataAccess.InsertUserAsync(user); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemElement.css: -------------------------------------------------------------------------------- 1 | .item-element { 2 | margin-top: 20px; 3 | margin-bottom: 20px; 4 | width: 100%; } 5 | 6 | .item-element-main { 7 | width: 100%; 8 | display: flex; 9 | flex-direction: row; 10 | height: 80px; 11 | color: white; 12 | border-radius: 0; } 13 | 14 | .check-container { 15 | flex: 0 0 80px; 16 | display: flex; 17 | justify-content: center; 18 | align-items: center; 19 | border-right: 1px solid white; } 20 | 21 | .checkbox { 22 | width: 30px; 23 | height: 30px; } 24 | 25 | .main-container { 26 | flex: 1 1 auto; 27 | padding: 6px; 28 | min-width: 0; 29 | display: flex; 30 | flex-direction: row; } 31 | 32 | .main-fragment { 33 | flex: 1 1 auto; 34 | min-width: 0; 35 | height: 100%; } 36 | 37 | .position { 38 | flex: 0 1 auto; } 39 | 40 | .arrow-container { 41 | flex: 0 0 80px; 42 | border-left: 1px solid white; 43 | display: flex; 44 | justify-content: center; 45 | align-items: center; } 46 | 47 | .detail-fragment { 48 | border-width: 2px; 49 | border-style: solid; 50 | border-top: 0; 51 | width: 100%; 52 | padding: 10px 0; } 53 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_close.scss: -------------------------------------------------------------------------------- 1 | .close { 2 | float: right; 3 | @include font-size($close-font-size); 4 | font-weight: $close-font-weight; 5 | line-height: 1; 6 | color: $close-color; 7 | text-shadow: $close-text-shadow; 8 | opacity: .5; 9 | 10 | // Override 's hover style 11 | @include hover() { 12 | color: $close-color; 13 | text-decoration: none; 14 | } 15 | 16 | &:not(:disabled):not(.disabled) { 17 | @include hover-focus() { 18 | opacity: .75; 19 | } 20 | } 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile 27 | 28 | // stylelint-disable-next-line selector-no-qualifying-type 29 | button.close { 30 | padding: 0; 31 | background-color: transparent; 32 | border: 0; 33 | } 34 | 35 | // Future-proof disabling of clicks on `` elements 36 | 37 | // stylelint-disable-next-line selector-no-qualifying-type 38 | a.close.disabled { 39 | pointer-events: none; 40 | } 41 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/bootstrap.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v4.5.2 (https://getbootstrap.com/) 3 | * Copyright 2011-2020 The Bootstrap Authors 4 | * Copyright 2011-2020 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | */ 7 | 8 | @import "functions"; 9 | @import "variables"; 10 | @import "mixins"; 11 | @import "root"; 12 | @import "reboot"; 13 | @import "type"; 14 | @import "images"; 15 | @import "code"; 16 | @import "grid"; 17 | @import "tables"; 18 | @import "forms"; 19 | @import "buttons"; 20 | @import "transitions"; 21 | @import "dropdown"; 22 | @import "button-group"; 23 | @import "input-group"; 24 | @import "custom-forms"; 25 | @import "nav"; 26 | @import "navbar"; 27 | @import "card"; 28 | @import "breadcrumb"; 29 | @import "pagination"; 30 | @import "badge"; 31 | @import "jumbotron"; 32 | @import "alert"; 33 | @import "progress"; 34 | @import "media"; 35 | @import "list-group"; 36 | @import "close"; 37 | @import "toasts"; 38 | @import "modal"; 39 | @import "tooltip"; 40 | @import "popover"; 41 | @import "carousel"; 42 | @import "spinners"; 43 | @import "utilities"; 44 | @import "print"; 45 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/exports/amd.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | // Register as a named AMD module, since jQuery can be concatenated with other 8 | // files that may use define, but not via a proper concatenation script that 9 | // understands anonymous AMD modules. A named AMD is safest and most robust 10 | // way to register. Lowercase jquery is used because AMD module names are 11 | // derived from file names, and jQuery is normally delivered in a lowercase 12 | // file name. Do this after creating the global so that if an AMD module wants 13 | // to call noConflict to hide this version of jQuery, it will work. 14 | 15 | // Note that for maximum portability, libraries that are not jQuery should 16 | // declare themselves as anonymous modules, and avoid setting a global if an 17 | // AMD loader is present. jQuery is a special case. For more information, see 18 | // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon 19 | 20 | if ( typeof define === "function" && define.amd ) { 21 | define( "jquery", [], function() { 22 | return jQuery; 23 | } ); 24 | } 25 | 26 | } ); 27 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemsOverview.scss: -------------------------------------------------------------------------------- 1 | @import '../_variables.scss'; 2 | 3 | .items-container { 4 | display: flex; 5 | flex-direction: row; 6 | padding-bottom: 58px; 7 | height: 100%; 8 | width: 100%; 9 | } 10 | 11 | .items-list-container { 12 | display: flex; 13 | flex-direction: column; 14 | align-items: center; 15 | flex: 1 1 50%; 16 | overflow-y: auto; 17 | padding-left: 24px; 18 | padding-right: 24px; 19 | height: 100%; 20 | } 21 | 22 | .item-edit-container { 23 | flex: 1 1 50%; 24 | height: 100%; 25 | width: 100%; 26 | background: white; 27 | overflow-y: auto; 28 | padding: 20px; 29 | padding-left: 24px; 30 | padding-right: 24px; 31 | border: #1c7430 32 | } 33 | 34 | .item-add-box { 35 | border: 1px solid $primary-color; 36 | width: 100%; 37 | height: 60px; 38 | display: flex; 39 | align-items: center; 40 | background: white; 41 | display: flex; 42 | flex-direction: row; 43 | padding-right: 24px; 44 | padding-left: 24px; 45 | } 46 | 47 | .item-add-input { 48 | width: 100%; 49 | flex: 1 1 auto; 50 | margin-right: 40px; 51 | } 52 | -------------------------------------------------------------------------------- /BlazorExample/wwwroot/css/open-iconic/ICON-LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Waybury 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/open-iconic/ICON-LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Waybury 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright JS Foundation and other contributors, https://js.foundation/ 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /Organize.WASM/compilerconfig.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "outputFile": "wwwroot/css/components/itemCheckBox.css", 4 | "inputFile": "wwwroot/css/components/itemCheckBox.scss" 5 | }, 6 | { 7 | "outputFile": "wwwroot/css/components/itemElement.css", 8 | "inputFile": "wwwroot/css/components/itemElement.scss" 9 | }, 10 | { 11 | "outputFile": "wwwroot/css/components/itemsList.css", 12 | "inputFile": "wwwroot/css/components/itemsList.scss" 13 | }, 14 | { 15 | "outputFile": "wwwroot/css/components/sign.css", 16 | "inputFile": "wwwroot/css/components/sign.scss" 17 | }, 18 | { 19 | "outputFile": "wwwroot/css/app.css", 20 | "inputFile": "wwwroot/css/app.scss" 21 | }, 22 | { 23 | "outputFile": "wwwroot/css/components/itemsOverview.css", 24 | "inputFile": "wwwroot/css/components/itemsOverview.scss" 25 | }, 26 | { 27 | "outputFile": "wwwroot/css/components/itemEdit.css", 28 | "inputFile": "wwwroot/css/components/itemEdit.scss" 29 | }, 30 | { 31 | "outputFile": "Components/ItemEdit.razor.css", 32 | "inputFile": "Components/ItemEdit.razor.scss" 33 | }, 34 | { 35 | "outputFile": "Components/ItemsList.razor.css", 36 | "inputFile": "Components/ItemsList.razor.scss" 37 | } 38 | ] -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2020 Twitter, Inc. 4 | Copyright (c) 2011-2020 The Bootstrap Authors 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /Organize.Shared/Enitites/BaseItem.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Enums; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Organize.Shared.Enitites 7 | { 8 | public class BaseItem : BaseEntity 9 | { 10 | public int ParentId 11 | { 12 | get => _parentId; 13 | set => SetProperty(ref _parentId, value); 14 | } 15 | private int _parentId; 16 | 17 | public ItemTypeEnum ItemTypeEnum { 18 | get => _itemTypeEnum; 19 | set => SetProperty(ref _itemTypeEnum,value); 20 | } 21 | private ItemTypeEnum _itemTypeEnum; 22 | 23 | public int Position 24 | { 25 | get => _position; 26 | set => SetProperty(ref _position, value); 27 | } 28 | private int _position; 29 | 30 | public bool IsDone 31 | { 32 | get => _isDone; 33 | set => SetProperty(ref _isDone, value); 34 | } 35 | private bool _isDone = false; 36 | 37 | public string Title 38 | { 39 | get => _title; 40 | set => SetProperty(ref _title, value); 41 | } 42 | private string _title; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/css/components/itemElement.scss: -------------------------------------------------------------------------------- 1 | .item-element { 2 | margin-top: 20px; 3 | margin-bottom: 20px; 4 | width: 100%; 5 | } 6 | 7 | .item-element-main { 8 | width: 100%; 9 | display: flex; 10 | flex-direction: row; 11 | height: 80px; 12 | color: white; 13 | border-radius: 0; 14 | } 15 | 16 | .check-container { 17 | flex: 0 0 80px; 18 | display: flex; 19 | justify-content: center; 20 | align-items: center; 21 | border-right: 1px solid white; 22 | } 23 | 24 | .checkbox { 25 | width: 30px; 26 | height: 30px 27 | } 28 | 29 | .main-container { 30 | flex: 1 1 auto; 31 | padding: 6px; 32 | min-width: 0; 33 | display: flex; 34 | flex-direction: row; 35 | } 36 | 37 | .main-fragment { 38 | flex: 1 1 auto; 39 | min-width: 0; 40 | height: 100%; 41 | } 42 | 43 | .position { 44 | flex: 0 1 auto; 45 | } 46 | 47 | .arrow-container { 48 | flex: 0 0 80px; 49 | border-left: 1px solid white; 50 | display: flex; 51 | justify-content: center; 52 | align-items: center; 53 | } 54 | 55 | .detail-fragment { 56 | border-width: 2px; 57 | border-style: solid; 58 | border-top: 0; 59 | width: 100%; 60 | padding: 10px 0; 61 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/js/jsInterop.js: -------------------------------------------------------------------------------- 1 | window.addEventListener('resize', 2 | () => { 3 | //Call the static Method OnResize in the Organize assembly 4 | console.log("Static Resize from js"); 5 | DotNet.invokeMethodAsync("Organize.WASM", "OnResize"); 6 | }); 7 | 8 | //window.blazorDimension = { 9 | // getWidth: () => window.innerWidth 10 | //} 11 | 12 | window.blazorResize = { 13 | assignments: [], 14 | registerReferenceForResizeEvent: (name,dotnetReference) => { 15 | const handler = () => { 16 | console.log("HandleResize from js"); 17 | dotnetReference.invokeMethodAsync("HandleResize", window.innerWidth, window.innerHeight); 18 | } 19 | const assignment = { 20 | name: name, 21 | handler: handler 22 | } 23 | blazorResize.assignments.push(assignment); 24 | window.addEventListener("resize", assignment.handler); 25 | }, 26 | unRegister: (name) => { 27 | const assignment = blazorResize.assignments.find(a => a.name === name); 28 | if (assignment != null) { 29 | console.log(assignment); 30 | window.removeEventListener("resize", assignment.handler); 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_code.scss: -------------------------------------------------------------------------------- 1 | // Inline code 2 | code { 3 | @include font-size($code-font-size); 4 | color: $code-color; 5 | word-wrap: break-word; 6 | 7 | // Streamline the style when inside anchors to avoid broken underline and more 8 | a > & { 9 | color: inherit; 10 | } 11 | } 12 | 13 | // User input typically entered via keyboard 14 | kbd { 15 | padding: $kbd-padding-y $kbd-padding-x; 16 | @include font-size($kbd-font-size); 17 | color: $kbd-color; 18 | background-color: $kbd-bg; 19 | @include border-radius($border-radius-sm); 20 | @include box-shadow($kbd-box-shadow); 21 | 22 | kbd { 23 | padding: 0; 24 | @include font-size(100%); 25 | font-weight: $nested-kbd-font-weight; 26 | @include box-shadow(none); 27 | } 28 | } 29 | 30 | // Blocks of code 31 | pre { 32 | display: block; 33 | @include font-size($code-font-size); 34 | color: $pre-color; 35 | 36 | // Account for some code outputs that place code tags in pre tags 37 | code { 38 | @include font-size(inherit); 39 | color: inherit; 40 | word-break: normal; 41 | } 42 | } 43 | 44 | // Enable scrollable blocks of code 45 | .pre-scrollable { 46 | max-height: $pre-scrollable-max-height; 47 | overflow-y: scroll; 48 | } 49 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Toggles 2 | // 3 | // Used in conjunction with global variables to enable certain theme features. 4 | 5 | // Vendor 6 | @import "vendor/rfs"; 7 | 8 | // Deprecate 9 | @import "mixins/deprecate"; 10 | 11 | // Utilities 12 | @import "mixins/breakpoints"; 13 | @import "mixins/hover"; 14 | @import "mixins/image"; 15 | @import "mixins/badge"; 16 | @import "mixins/resize"; 17 | @import "mixins/screen-reader"; 18 | @import "mixins/size"; 19 | @import "mixins/reset-text"; 20 | @import "mixins/text-emphasis"; 21 | @import "mixins/text-hide"; 22 | @import "mixins/text-truncate"; 23 | @import "mixins/visibility"; 24 | 25 | // Components 26 | @import "mixins/alert"; 27 | @import "mixins/buttons"; 28 | @import "mixins/caret"; 29 | @import "mixins/pagination"; 30 | @import "mixins/lists"; 31 | @import "mixins/list-group"; 32 | @import "mixins/nav-divider"; 33 | @import "mixins/forms"; 34 | @import "mixins/table-row"; 35 | 36 | // Skins 37 | @import "mixins/background-variant"; 38 | @import "mixins/border-radius"; 39 | @import "mixins/box-shadow"; 40 | @import "mixins/gradients"; 41 | @import "mixins/transition"; 42 | 43 | // Layout 44 | @import "mixins/clearfix"; 45 | @import "mixins/grid-framework"; 46 | @import "mixins/grid"; 47 | @import "mixins/float"; 48 | -------------------------------------------------------------------------------- /Organize.Shared/Enitites/NotifyingObject.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Runtime.CompilerServices; 5 | using System.Text; 6 | 7 | namespace Organize.Shared.Enitites 8 | { 9 | public class NotifyingObject : INotifyPropertyChanged 10 | { 11 | public event PropertyChangedEventHandler PropertyChanged; 12 | 13 | // This method is called by the Set accessor of each property. 14 | // The CallerMemberName attribute that is applied to the optional propertyName 15 | // parameter causes the property name of the caller to be substituted as an argument. 16 | protected void NotifyPropertyChanged([CallerMemberName] String propertyName = "") 17 | { 18 | if (PropertyChanged != null) 19 | { 20 | PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 21 | 22 | } 23 | } 24 | 25 | protected bool SetProperty(ref T field, T value, [CallerMemberName] string propertyName = null) 26 | { 27 | if (EqualityComparer.Default.Equals(field, value)) return false; 28 | field = value; 29 | NotifyPropertyChanged(propertyName); 30 | return true; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /BlazorExample/Components/RazorSyntax.razor: -------------------------------------------------------------------------------- 1 | @*@page "/razorSyntax"*@ 2 | @*@implements IDisposable*@ 3 | 4 |

RazorSyntax

5 | 6 | @*-------------Call a method (implicit expression)-------------*@ 7 |

@GetTestString()

8 | 9 | @*-------------Call a generic method (explicit expression)-------------*@ 10 |

@(WriteObject("use explicit expression for generics"))

11 | 12 | @*-------------FOR-------------*@ 13 |
14 | All even number up to 20: 15 | @for (var i = 0; i <= 10; i++) 16 | { 17 | @*

@(i * 2)

*@ 18 | 19 | //No HTML tag is rendered 20 | @*@(i * 2),*@ 21 | @:Result @(i * 2) 22 | } 23 |
24 | 25 |
26 | All even number up to 20: 27 | @for (var i = 0; i <= 10; i++) 28 | { 29 |

@i * 2 = @(i * 2)

30 | } 31 |
32 | 33 | @*-------------Escaped-------------*@ 34 |

rrr@test

35 |

@@test

36 |

@test

37 | 38 | @*-------------IF/Else-------------*@ 39 | 40 | 41 | 42 | 43 | 44 | 45 | @code{ 46 | 47 | private readonly string test = "X"; 48 | 49 | private string GetTestString() 50 | { 51 | return "This is a test"; 52 | } 53 | 54 | private string WriteObject(T obj) 55 | { 56 | return obj.ToString(); 57 | } 58 | 59 | } -------------------------------------------------------------------------------- /Organize.DataAccess/UserDataAccess.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Contracts; 2 | using Organize.Shared.Enitites; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace Organize.DataAccess 10 | { 11 | public class UserDataAccess : IUserDataAccess 12 | { 13 | private IPersistenceService _persistenceService; 14 | 15 | public UserDataAccess(IPersistenceService persistenceService) 16 | { 17 | _persistenceService = persistenceService; 18 | } 19 | 20 | public async Task IsUserWithNameAvailableAsync(User user) 21 | { 22 | var users = await _persistenceService.GetAsync(u => u.UserName == user.UserName); 23 | return users.FirstOrDefault() != null; 24 | } 25 | 26 | public async Task InsertUserAsync(User user) 27 | { 28 | await _persistenceService.InsertAsync(user); 29 | } 30 | 31 | public async Task AuthenticateAndGetUserAsync(User user) 32 | { 33 | var users = await _persistenceService 34 | .GetAsync(u => u.UserName == user.UserName && user.Password == u.Password); 35 | return users.FirstOrDefault(); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_image.scss: -------------------------------------------------------------------------------- 1 | // Image Mixins 2 | // - Responsive image 3 | // - Retina image 4 | 5 | 6 | // Responsive image 7 | // 8 | // Keep images from scaling beyond the width of their parents. 9 | 10 | @mixin img-fluid() { 11 | // Part 1: Set a maximum relative to the parent 12 | max-width: 100%; 13 | // Part 2: Override the height to auto, otherwise images will be stretched 14 | // when setting a width and height attribute on the img element. 15 | height: auto; 16 | } 17 | 18 | 19 | // Retina image 20 | // 21 | // Short retina mixin for setting background-image and -size. 22 | 23 | @mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) { 24 | background-image: url($file-1x); 25 | 26 | // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio, 27 | // but doesn't convert dppx=>dpi. 28 | // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard. 29 | // Compatibility info: https://caniuse.com/#feat=css-media-resolution 30 | @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx 31 | only screen and (min-resolution: 2dppx) { // Standardized 32 | background-image: url($file-2x); 33 | background-size: $width-1x $height-1x; 34 | } 35 | @include deprecate("`img-retina()`", "v4.3.0", "v5"); 36 | } 37 | -------------------------------------------------------------------------------- /Organize.WASM/Shared/NavMenu.razor: -------------------------------------------------------------------------------- 1 |
7 | 8 |
9 | 26 |
27 | 28 | @code { 29 | private bool collapseNavMenu = true; 30 | 31 | private string NavMenuCssClass => collapseNavMenu ? "collapse" : null; 32 | 33 | private void ToggleNavMenu() 34 | { 35 | collapseNavMenu = !collapseNavMenu; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_spinners.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Rotating border 3 | // 4 | 5 | @keyframes spinner-border { 6 | to { transform: rotate(360deg); } 7 | } 8 | 9 | .spinner-border { 10 | display: inline-block; 11 | width: $spinner-width; 12 | height: $spinner-height; 13 | vertical-align: text-bottom; 14 | border: $spinner-border-width solid currentColor; 15 | border-right-color: transparent; 16 | // stylelint-disable-next-line property-blacklist 17 | border-radius: 50%; 18 | animation: spinner-border .75s linear infinite; 19 | } 20 | 21 | .spinner-border-sm { 22 | width: $spinner-width-sm; 23 | height: $spinner-height-sm; 24 | border-width: $spinner-border-width-sm; 25 | } 26 | 27 | // 28 | // Growing circle 29 | // 30 | 31 | @keyframes spinner-grow { 32 | 0% { 33 | transform: scale(0); 34 | } 35 | 50% { 36 | opacity: 1; 37 | transform: none; 38 | } 39 | } 40 | 41 | .spinner-grow { 42 | display: inline-block; 43 | width: $spinner-width; 44 | height: $spinner-height; 45 | vertical-align: text-bottom; 46 | background-color: currentColor; 47 | // stylelint-disable-next-line property-blacklist 48 | border-radius: 50%; 49 | opacity: 0; 50 | animation: spinner-grow .75s linear infinite; 51 | } 52 | 53 | .spinner-grow-sm { 54 | width: $spinner-width-sm; 55 | height: $spinner-height-sm; 56 | } 57 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_toasts.scss: -------------------------------------------------------------------------------- 1 | .toast { 2 | // Prevents from shrinking in IE11, when in a flex container 3 | // See https://github.com/twbs/bootstrap/issues/28341 4 | flex-basis: $toast-max-width; 5 | max-width: $toast-max-width; 6 | @include font-size($toast-font-size); 7 | color: $toast-color; 8 | background-color: $toast-background-color; 9 | background-clip: padding-box; 10 | border: $toast-border-width solid $toast-border-color; 11 | box-shadow: $toast-box-shadow; 12 | opacity: 0; 13 | @include border-radius($toast-border-radius); 14 | 15 | &:not(:last-child) { 16 | margin-bottom: $toast-padding-x; 17 | } 18 | 19 | &.showing { 20 | opacity: 1; 21 | } 22 | 23 | &.show { 24 | display: block; 25 | opacity: 1; 26 | } 27 | 28 | &.hide { 29 | display: none; 30 | } 31 | } 32 | 33 | .toast-header { 34 | display: flex; 35 | align-items: center; 36 | padding: $toast-padding-y $toast-padding-x; 37 | color: $toast-header-color; 38 | background-color: $toast-header-background-color; 39 | background-clip: padding-box; 40 | border-bottom: $toast-border-width solid $toast-header-border-color; 41 | @include border-top-radius(subtract($toast-border-radius, $toast-border-width)); 42 | } 43 | 44 | .toast-body { 45 | padding: $toast-padding-x; // apply to both vertical and horizontal 46 | } 47 | -------------------------------------------------------------------------------- /Organize.WASM/Shared/MainLayout.razor: -------------------------------------------------------------------------------- 1 | @inherits LayoutComponentBase 2 | 3 | @if (IsAuthenticated) 4 | { 5 | 28 | 29 |
30 | @Body 31 |
32 | } 33 | else 34 | { 35 | 38 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_images.scss: -------------------------------------------------------------------------------- 1 | // Responsive images (ensure images don't scale beyond their parents) 2 | // 3 | // This is purposefully opt-in via an explicit class rather than being the default for all ``s. 4 | // We previously tried the "images are responsive by default" approach in Bootstrap v2, 5 | // and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps) 6 | // which weren't expecting the images within themselves to be involuntarily resized. 7 | // See also https://github.com/twbs/bootstrap/issues/18178 8 | .img-fluid { 9 | @include img-fluid(); 10 | } 11 | 12 | 13 | // Image thumbnails 14 | .img-thumbnail { 15 | padding: $thumbnail-padding; 16 | background-color: $thumbnail-bg; 17 | border: $thumbnail-border-width solid $thumbnail-border-color; 18 | @include border-radius($thumbnail-border-radius); 19 | @include box-shadow($thumbnail-box-shadow); 20 | 21 | // Keep them at most 100% wide 22 | @include img-fluid(); 23 | } 24 | 25 | // 26 | // Figures 27 | // 28 | 29 | .figure { 30 | // Ensures the caption's text aligns with the image. 31 | display: inline-block; 32 | } 33 | 34 | .figure-img { 35 | margin-bottom: $spacer / 2; 36 | line-height: 1; 37 | } 38 | 39 | .figure-caption { 40 | @include font-size($figure-caption-font-size); 41 | color: $figure-caption-color; 42 | } 43 | -------------------------------------------------------------------------------- /BlazorExample/Shared/NavMenu.razor: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | 26 |
27 | 28 | @code { 29 | private bool collapseNavMenu = true; 30 | 31 | private string NavMenuCssClass => collapseNavMenu ? "collapse" : null; 32 | 33 | private void ToggleNavMenu() 34 | { 35 | collapseNavMenu = !collapseNavMenu; 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/core/DOMEval.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/document" 3 | ], function( document ) { 4 | "use strict"; 5 | 6 | var preservedScriptAttributes = { 7 | type: true, 8 | src: true, 9 | nonce: true, 10 | noModule: true 11 | }; 12 | 13 | function DOMEval( code, node, doc ) { 14 | doc = doc || document; 15 | 16 | var i, val, 17 | script = doc.createElement( "script" ); 18 | 19 | script.text = code; 20 | if ( node ) { 21 | for ( i in preservedScriptAttributes ) { 22 | 23 | // Support: Firefox 64+, Edge 18+ 24 | // Some browsers don't support the "nonce" property on scripts. 25 | // On the other hand, just using `getAttribute` is not enough as 26 | // the `nonce` attribute is reset to an empty string whenever it 27 | // becomes browsing-context connected. 28 | // See https://github.com/whatwg/html/issues/2369 29 | // See https://html.spec.whatwg.org/#nonce-attributes 30 | // The `node.getAttribute` check was added for the sake of 31 | // `jQuery.globalEval` so that it can fake a nonce-containing node 32 | // via an object. 33 | val = node[ i ] || node.getAttribute && node.getAttribute( i ); 34 | if ( val ) { 35 | script.setAttribute( i, val ); 36 | } 37 | } 38 | } 39 | doc.head.appendChild( script ).parentNode.removeChild( script ); 40 | } 41 | 42 | return DOMEval; 43 | } ); 44 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/deprecated/event.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | 4 | "../event", 5 | "../event/trigger" 6 | ], function( jQuery ) { 7 | 8 | "use strict"; 9 | 10 | jQuery.fn.extend( { 11 | 12 | bind: function( types, data, fn ) { 13 | return this.on( types, null, data, fn ); 14 | }, 15 | unbind: function( types, fn ) { 16 | return this.off( types, null, fn ); 17 | }, 18 | 19 | delegate: function( selector, types, data, fn ) { 20 | return this.on( types, selector, data, fn ); 21 | }, 22 | undelegate: function( selector, types, fn ) { 23 | 24 | // ( namespace ) or ( selector, types [, fn] ) 25 | return arguments.length === 1 ? 26 | this.off( selector, "**" ) : 27 | this.off( types, selector || "**", fn ); 28 | }, 29 | 30 | hover: function( fnOver, fnOut ) { 31 | return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); 32 | } 33 | } ); 34 | 35 | jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + 36 | "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 37 | "change select submit keydown keypress keyup contextmenu" ).split( " " ), 38 | function( _i, name ) { 39 | 40 | // Handle event binding 41 | jQuery.fn[ name ] = function( data, fn ) { 42 | return arguments.length > 0 ? 43 | this.on( name, null, data, fn ) : 44 | this.trigger( name ); 45 | }; 46 | } ); 47 | 48 | } ); 49 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_badge.scss: -------------------------------------------------------------------------------- 1 | // Base class 2 | // 3 | // Requires one of the contextual, color modifier classes for `color` and 4 | // `background-color`. 5 | 6 | .badge { 7 | display: inline-block; 8 | padding: $badge-padding-y $badge-padding-x; 9 | @include font-size($badge-font-size); 10 | font-weight: $badge-font-weight; 11 | line-height: 1; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | @include border-radius($badge-border-radius); 16 | @include transition($badge-transition); 17 | 18 | @at-root a#{&} { 19 | @include hover-focus() { 20 | text-decoration: none; 21 | } 22 | } 23 | 24 | // Empty badges collapse automatically 25 | &:empty { 26 | display: none; 27 | } 28 | } 29 | 30 | // Quick fix for badges in buttons 31 | .btn .badge { 32 | position: relative; 33 | top: -1px; 34 | } 35 | 36 | // Pill badges 37 | // 38 | // Make them extra rounded with a modifier to replace v3's badges. 39 | 40 | .badge-pill { 41 | padding-right: $badge-pill-padding-x; 42 | padding-left: $badge-pill-padding-x; 43 | @include border-radius($badge-pill-border-radius); 44 | } 45 | 46 | // Colors 47 | // 48 | // Contextual variations (linked badges get darker on :hover). 49 | 50 | @each $color, $value in $theme-colors { 51 | .badge-#{$color} { 52 | @include badge-variant($value); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_alert.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .alert { 6 | position: relative; 7 | padding: $alert-padding-y $alert-padding-x; 8 | margin-bottom: $alert-margin-bottom; 9 | border: $alert-border-width solid transparent; 10 | @include border-radius($alert-border-radius); 11 | } 12 | 13 | // Headings for larger alerts 14 | .alert-heading { 15 | // Specified to prevent conflicts of changing $headings-color 16 | color: inherit; 17 | } 18 | 19 | // Provide class for links that match alerts 20 | .alert-link { 21 | font-weight: $alert-link-font-weight; 22 | } 23 | 24 | 25 | // Dismissible alerts 26 | // 27 | // Expand the right padding and account for the close button's positioning. 28 | 29 | .alert-dismissible { 30 | padding-right: $close-font-size + $alert-padding-x * 2; 31 | 32 | // Adjust close link position 33 | .close { 34 | position: absolute; 35 | top: 0; 36 | right: 0; 37 | padding: $alert-padding-y $alert-padding-x; 38 | color: inherit; 39 | } 40 | } 41 | 42 | 43 | // Alternate styles 44 | // 45 | // Generate contextual modifier classes for colorizing the alert. 46 | 47 | @each $color, $value in $theme-colors { 48 | .alert-#{$color} { 49 | @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level)); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_progress.scss: -------------------------------------------------------------------------------- 1 | // Disable animation if transitions are disabled 2 | @if $enable-transitions { 3 | @keyframes progress-bar-stripes { 4 | from { background-position: $progress-height 0; } 5 | to { background-position: 0 0; } 6 | } 7 | } 8 | 9 | .progress { 10 | display: flex; 11 | height: $progress-height; 12 | overflow: hidden; // force rounded corners by cropping it 13 | line-height: 0; 14 | @include font-size($progress-font-size); 15 | background-color: $progress-bg; 16 | @include border-radius($progress-border-radius); 17 | @include box-shadow($progress-box-shadow); 18 | } 19 | 20 | .progress-bar { 21 | display: flex; 22 | flex-direction: column; 23 | justify-content: center; 24 | overflow: hidden; 25 | color: $progress-bar-color; 26 | text-align: center; 27 | white-space: nowrap; 28 | background-color: $progress-bar-bg; 29 | @include transition($progress-bar-transition); 30 | } 31 | 32 | .progress-bar-striped { 33 | @include gradient-striped(); 34 | background-size: $progress-height $progress-height; 35 | } 36 | 37 | @if $enable-transitions { 38 | .progress-bar-animated { 39 | animation: progress-bar-stripes $progress-bar-animation-timing; 40 | 41 | @if $enable-prefers-reduced-motion-media-query { 42 | @media (prefers-reduced-motion: reduce) { 43 | animation: none; 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/manipulation/support.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../var/document", 3 | "../var/support" 4 | ], function( document, support ) { 5 | 6 | "use strict"; 7 | 8 | ( function() { 9 | var fragment = document.createDocumentFragment(), 10 | div = fragment.appendChild( document.createElement( "div" ) ), 11 | input = document.createElement( "input" ); 12 | 13 | // Support: Android 4.0 - 4.3 only 14 | // Check state lost if the name is set (#11217) 15 | // Support: Windows Web Apps (WWA) 16 | // `name` and `type` must use .setAttribute for WWA (#14901) 17 | input.setAttribute( "type", "radio" ); 18 | input.setAttribute( "checked", "checked" ); 19 | input.setAttribute( "name", "t" ); 20 | 21 | div.appendChild( input ); 22 | 23 | // Support: Android <=4.1 only 24 | // Older WebKit doesn't clone checked state correctly in fragments 25 | support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; 26 | 27 | // Support: IE <=11 only 28 | // Make sure textarea (and checkbox) defaultValue is properly cloned 29 | div.innerHTML = ""; 30 | support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; 31 | 32 | // Support: IE <=9 only 33 | // IE <=9 replaces "; 36 | support.option = !!div.lastChild; 37 | } )(); 38 | 39 | return support; 40 | 41 | } ); 42 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/css/var/isHiddenWithinTree.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../../core", 3 | "../../core/isAttached" 4 | 5 | // css is assumed 6 | ], function( jQuery, isAttached ) { 7 | "use strict"; 8 | 9 | // isHiddenWithinTree reports if an element has a non-"none" display style (inline and/or 10 | // through the CSS cascade), which is useful in deciding whether or not to make it visible. 11 | // It differs from the :hidden selector (jQuery.expr.pseudos.hidden) in two important ways: 12 | // * A hidden ancestor does not force an element to be classified as hidden. 13 | // * Being disconnected from the document does not force an element to be classified as hidden. 14 | // These differences improve the behavior of .toggle() et al. when applied to elements that are 15 | // detached or contained within hidden ancestors (gh-2404, gh-2863). 16 | return function( elem, el ) { 17 | 18 | // isHiddenWithinTree might be called from jQuery#filter function; 19 | // in that case, element will be second argument 20 | elem = el || elem; 21 | 22 | // Inline style trumps all 23 | return elem.style.display === "none" || 24 | elem.style.display === "" && 25 | 26 | // Otherwise, check computed style 27 | // Support: Firefox <=43 - 45 28 | // Disconnected elements can have computed display: none, so first confirm that elem is 29 | // in the document. 30 | isAttached( elem ) && 31 | 32 | jQuery.css( elem, "display" ) === "none"; 33 | }; 34 | } ); 35 | -------------------------------------------------------------------------------- /Organize.IndexedDB/SimplePropertyContractResolver.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using Newtonsoft.Json.Serialization; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Reflection; 6 | using System.Text; 7 | 8 | namespace Organize.IndexedDB 9 | { 10 | class SimplePropertyContractResolver : DefaultContractResolver 11 | { 12 | public SimplePropertyContractResolver() 13 | { 14 | NamingStrategy = new CamelCaseNamingStrategy(); 15 | } 16 | 17 | protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) 18 | { 19 | var property = base.CreateProperty(member, memberSerialization); 20 | 21 | var propertyType = property.PropertyType; 22 | var isSimpleProperty = propertyType == typeof(int) || propertyType == typeof(string) || 23 | propertyType == typeof(decimal) || propertyType == typeof(float) || 24 | propertyType == typeof(double) || propertyType == typeof(bool) 25 | || propertyType.IsEnum; 26 | 27 | if (isSimpleProperty) 28 | { 29 | property.ShouldSerialize = instance => true; 30 | } 31 | else 32 | { 33 | property.ShouldSerialize = instance => false; 34 | } 35 | return property; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /BlazorExample/Pages/FetchData.razor: -------------------------------------------------------------------------------- 1 | @page "/fetchdata" 2 | @inject HttpClient Http 3 | 4 |

Weather forecast

5 | 6 |

This component demonstrates fetching data from the server.

7 | 8 | @if (forecasts == null) 9 | { 10 |

11 | Loading... 12 |

13 | } 14 | else 15 | { 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | @foreach (var forecast in forecasts) 27 | { 28 | 29 | 30 | 31 | 32 | 33 | 34 | } 35 | 36 |
DateTemp. (C)Temp. (F)Summary
@forecast.Date.ToShortDateString()@forecast.TemperatureC@forecast.TemperatureF@forecast.Summary
37 | } 38 | 39 | @code { 40 | private WeatherForecast[] forecasts; 41 | 42 | protected override async Task OnInitializedAsync() 43 | { 44 | forecasts = await Http.GetFromJsonAsync("sample-data/weather.json"); 45 | } 46 | 47 | public class WeatherForecast 48 | { 49 | public DateTime Date { get; set; } 50 | 51 | public int TemperatureC { get; set; } 52 | 53 | public string Summary { get; set; } 54 | 55 | public int TemperatureF => 32 + (int) (TemperatureC / 0.5556); 56 | } 57 | 58 | } -------------------------------------------------------------------------------- /Organize.DataAccess/ItemDataAccess.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Contracts; 2 | using Organize.Shared.Enitites; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Organize.DataAccess 9 | { 10 | public class ItemDataAccess : IItemDataAccess 11 | { 12 | private readonly IPersistenceService _persistenceService; 13 | 14 | public ItemDataAccess(IPersistenceService persistenceService) 15 | { 16 | _persistenceService = persistenceService; 17 | } 18 | 19 | public async Task DeleteItemsAsync(IEnumerable items) where TItem : BaseItem 20 | { 21 | foreach(var item in items) 22 | { 23 | await _persistenceService.DeleteAsync(item); 24 | } 25 | } 26 | 27 | public async Task> GetItemsOfUserAsync(int parentId) where TItem : BaseItem 28 | { 29 | return await _persistenceService.GetAsync(i => i.ParentId == parentId); 30 | } 31 | 32 | public async Task InsertItemAsync(TItem item) where TItem : BaseItem 33 | { 34 | var id = await _persistenceService.InsertAsync(item); 35 | item.Id = id; 36 | } 37 | 38 | public Task UpdateItemAsync(TItem item) where TItem : BaseItem 39 | { 40 | return _persistenceService.UpdateAsync(item); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /GeneralUi/compilerconfig.json.defaults: -------------------------------------------------------------------------------- 1 | { 2 | "compilers": { 3 | "less": { 4 | "autoPrefix": "", 5 | "cssComb": "none", 6 | "ieCompat": true, 7 | "strictMath": false, 8 | "strictUnits": false, 9 | "relativeUrls": true, 10 | "rootPath": "", 11 | "sourceMapRoot": "", 12 | "sourceMapBasePath": "", 13 | "sourceMap": false 14 | }, 15 | "sass": { 16 | "autoPrefix": "", 17 | "includePath": "", 18 | "indentType": "space", 19 | "indentWidth": 2, 20 | "outputStyle": "nested", 21 | "Precision": 5, 22 | "relativeUrls": true, 23 | "sourceMapRoot": "", 24 | "lineFeed": "", 25 | "sourceMap": false 26 | }, 27 | "stylus": { 28 | "sourceMap": false 29 | }, 30 | "babel": { 31 | "sourceMap": false 32 | }, 33 | "coffeescript": { 34 | "bare": false, 35 | "runtimeMode": "node", 36 | "sourceMap": false 37 | }, 38 | "handlebars": { 39 | "root": "", 40 | "noBOM": false, 41 | "name": "", 42 | "namespace": "", 43 | "knownHelpersOnly": false, 44 | "forcePartial": false, 45 | "knownHelpers": [], 46 | "commonjs": "", 47 | "amd": false, 48 | "sourceMap": false 49 | } 50 | }, 51 | "minifiers": { 52 | "css": { 53 | "enabled": true, 54 | "termSemicolons": true, 55 | "gzip": false 56 | }, 57 | "javascript": { 58 | "enabled": true, 59 | "termSemicolons": true, 60 | "gzip": false 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Organize.WASM/Components/ItemElement.razor: -------------------------------------------------------------------------------- 1 | @typeparam TItem 2 | 3 |
4 |
5 |
6 |
7 | 8 |
9 |
10 |
11 |
12 | @MainFragment 13 |
14 |
@Item.Position/@TotalNumber
15 |
16 | 26 |
27 |
28 |
29 | @DetailFragment 30 |
31 |
32 |
-------------------------------------------------------------------------------- /BlazorExample/compilerconfig.json.defaults: -------------------------------------------------------------------------------- 1 | { 2 | "compilers": { 3 | "less": { 4 | "autoPrefix": "", 5 | "cssComb": "none", 6 | "ieCompat": true, 7 | "strictMath": false, 8 | "strictUnits": false, 9 | "relativeUrls": true, 10 | "rootPath": "", 11 | "sourceMapRoot": "", 12 | "sourceMapBasePath": "", 13 | "sourceMap": false 14 | }, 15 | "sass": { 16 | "autoPrefix": "", 17 | "includePath": "", 18 | "indentType": "space", 19 | "indentWidth": 2, 20 | "outputStyle": "nested", 21 | "Precision": 5, 22 | "relativeUrls": true, 23 | "sourceMapRoot": "", 24 | "lineFeed": "", 25 | "sourceMap": false 26 | }, 27 | "stylus": { 28 | "sourceMap": false 29 | }, 30 | "babel": { 31 | "sourceMap": false 32 | }, 33 | "coffeescript": { 34 | "bare": false, 35 | "runtimeMode": "node", 36 | "sourceMap": false 37 | }, 38 | "handlebars": { 39 | "root": "", 40 | "noBOM": false, 41 | "name": "", 42 | "namespace": "", 43 | "knownHelpersOnly": false, 44 | "forcePartial": false, 45 | "knownHelpers": [], 46 | "commonjs": "", 47 | "amd": false, 48 | "sourceMap": false 49 | } 50 | }, 51 | "minifiers": { 52 | "css": { 53 | "enabled": true, 54 | "termSemicolons": true, 55 | "gzip": false 56 | }, 57 | "javascript": { 58 | "enabled": true, 59 | "termSemicolons": true, 60 | "gzip": false 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Organize.WASM/compilerconfig.json.defaults: -------------------------------------------------------------------------------- 1 | { 2 | "compilers": { 3 | "less": { 4 | "autoPrefix": "", 5 | "cssComb": "none", 6 | "ieCompat": true, 7 | "strictMath": false, 8 | "strictUnits": false, 9 | "relativeUrls": true, 10 | "rootPath": "", 11 | "sourceMapRoot": "", 12 | "sourceMapBasePath": "", 13 | "sourceMap": false 14 | }, 15 | "sass": { 16 | "autoPrefix": "", 17 | "includePath": "", 18 | "indentType": "space", 19 | "indentWidth": 2, 20 | "outputStyle": "nested", 21 | "Precision": 5, 22 | "relativeUrls": true, 23 | "sourceMapRoot": "", 24 | "lineFeed": "", 25 | "sourceMap": false 26 | }, 27 | "stylus": { 28 | "sourceMap": false 29 | }, 30 | "babel": { 31 | "sourceMap": false 32 | }, 33 | "coffeescript": { 34 | "bare": false, 35 | "runtimeMode": "node", 36 | "sourceMap": false 37 | }, 38 | "handlebars": { 39 | "root": "", 40 | "noBOM": false, 41 | "name": "", 42 | "namespace": "", 43 | "knownHelpersOnly": false, 44 | "forcePartial": false, 45 | "knownHelpers": [], 46 | "commonjs": "", 47 | "amd": false, 48 | "sourceMap": false 49 | } 50 | }, 51 | "minifiers": { 52 | "css": { 53 | "enabled": true, 54 | "termSemicolons": true, 55 | "gzip": false 56 | }, 57 | "javascript": { 58 | "enabled": true, 59 | "termSemicolons": true, 60 | "gzip": false 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /BlazorExample/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Net.Http; 3 | using System.Threading.Tasks; 4 | using BlazorExample.Components.DependencyInjection.Contracts; 5 | using BlazorExample.Components.DependencyInjection.Implementations; 6 | using Microsoft.AspNetCore.Components.WebAssembly.Hosting; 7 | using Microsoft.Extensions.DependencyInjection; 8 | 9 | namespace BlazorExample 10 | { 11 | public class Program 12 | { 13 | public static async Task Main(string[] args) 14 | { 15 | var builder = WebAssemblyHostBuilder.CreateDefault(args); 16 | builder.RootComponents.Add("app"); 17 | 18 | builder.Services.AddScoped(); 19 | builder.Services.AddScoped(); 20 | 21 | 22 | builder.Services.AddScoped(); 23 | builder.Services.AddSingleton(); 24 | builder.Services.AddTransient(); 25 | 26 | //****other variants for service registration on singleton example**** 27 | //builder.Services.AddSingleton(); 28 | 29 | //var singleton = new Scoped(); 30 | //builder.Services.AddSingleton(singleton); 31 | 32 | //**** 33 | 34 | builder.Services.AddScoped( 35 | sp => new HttpClient {BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)}); 36 | 37 | await builder.Build().RunAsync(); 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | .breadcrumb { 2 | display: flex; 3 | flex-wrap: wrap; 4 | padding: $breadcrumb-padding-y $breadcrumb-padding-x; 5 | margin-bottom: $breadcrumb-margin-bottom; 6 | @include font-size($breadcrumb-font-size); 7 | list-style: none; 8 | background-color: $breadcrumb-bg; 9 | @include border-radius($breadcrumb-border-radius); 10 | } 11 | 12 | .breadcrumb-item { 13 | display: flex; 14 | 15 | // The separator between breadcrumbs (by default, a forward-slash: "/") 16 | + .breadcrumb-item { 17 | padding-left: $breadcrumb-item-padding; 18 | 19 | &::before { 20 | display: inline-block; // Suppress underlining of the separator in modern browsers 21 | padding-right: $breadcrumb-item-padding; 22 | color: $breadcrumb-divider-color; 23 | content: escape-svg($breadcrumb-divider); 24 | } 25 | } 26 | 27 | // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built 28 | // without `
    `s. The `::before` pseudo-element generates an element 29 | // *within* the .breadcrumb-item and thereby inherits the `text-decoration`. 30 | // 31 | // To trick IE into suppressing the underline, we give the pseudo-element an 32 | // underline and then immediately remove it. 33 | + .breadcrumb-item:hover::before { 34 | text-decoration: underline; 35 | } 36 | // stylelint-disable-next-line no-duplicate-selectors 37 | + .breadcrumb-item:hover::before { 38 | text-decoration: none; 39 | } 40 | 41 | &.active { 42 | color: $breadcrumb-active-color; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /GeneralUi/wwwroot/css/styles.css: -------------------------------------------------------------------------------- 1 | /* 2 | This file is to show how CSS and other static resources (such as images) can be 3 | used from a library project/package. 4 | */ 5 | 6 | .validation-container { 7 | display: flex; 8 | flex-flow: row 9 | } 10 | 11 | .validation-input { 12 | flex: 1 1 auto; 13 | /*flex-grow:1; 14 | flex-shrink:1; 15 | flex-basis:auto*/ 16 | } 17 | 18 | .val-tooltip { 19 | position: relative; 20 | display: flex; 21 | flex: 0 0 20px; 22 | background: red; 23 | border-top-right-radius: 0.25rem; 24 | border-bottom-right-radius: 0.25rem 25 | } 26 | 27 | .val-tooltip p { 28 | color: white; 29 | margin: auto; 30 | font-size: 1.2em 31 | } 32 | 33 | .val-tooltip .val-tooltiptext { 34 | visibility: hidden; 35 | width: 120px; 36 | background-color: black; 37 | color: #fff; 38 | text-align: center; 39 | border-radius: 6px; 40 | padding: 5px 0; 41 | /* Position the tooltip */ 42 | position: absolute; 43 | z-index: 1; 44 | top: 100%; 45 | left: 50%; 46 | margin-left: -60px; 47 | } 48 | 49 | .val-tooltip:hover .val-tooltiptext { 50 | visibility: visible; 51 | } 52 | 53 | 54 | .busy-overlay { 55 | background: beige; 56 | position: absolute; 57 | top: 0; 58 | left: 0; 59 | width: 100%; 60 | height: 100%; 61 | z-index: 10000; 62 | opacity: 0.6; 63 | display: flex 64 | } 65 | 66 | .busy-overlay > div { 67 | margin: auto; 68 | } 69 | 70 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/core/access.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../core/toType", 4 | "../var/isFunction" 5 | ], function( jQuery, toType, isFunction ) { 6 | 7 | "use strict"; 8 | 9 | // Multifunctional method to get and set values of a collection 10 | // The value/s can optionally be executed if it's a function 11 | var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { 12 | var i = 0, 13 | len = elems.length, 14 | bulk = key == null; 15 | 16 | // Sets many values 17 | if ( toType( key ) === "object" ) { 18 | chainable = true; 19 | for ( i in key ) { 20 | access( elems, fn, i, key[ i ], true, emptyGet, raw ); 21 | } 22 | 23 | // Sets one value 24 | } else if ( value !== undefined ) { 25 | chainable = true; 26 | 27 | if ( !isFunction( value ) ) { 28 | raw = true; 29 | } 30 | 31 | if ( bulk ) { 32 | 33 | // Bulk operations run against the entire set 34 | if ( raw ) { 35 | fn.call( elems, value ); 36 | fn = null; 37 | 38 | // ...except when executing function values 39 | } else { 40 | bulk = fn; 41 | fn = function( elem, _key, value ) { 42 | return bulk.call( jQuery( elem ), value ); 43 | }; 44 | } 45 | } 46 | 47 | if ( fn ) { 48 | for ( ; i < len; i++ ) { 49 | fn( 50 | elems[ i ], key, raw ? 51 | value : 52 | value.call( elems[ i ], i, fn( elems[ i ], key ) ) 53 | ); 54 | } 55 | } 56 | } 57 | 58 | if ( chainable ) { 59 | return elems; 60 | } 61 | 62 | // Gets 63 | if ( bulk ) { 64 | return fn.call( elems ); 65 | } 66 | 67 | return len ? fn( elems[ 0 ], key ) : emptyGet; 68 | }; 69 | 70 | return access; 71 | 72 | } ); 73 | -------------------------------------------------------------------------------- /Organize.WASM/Components/ItemEdit.razor: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    Type: @Item.ItemTypeEnum.ToString()
    4 | 5 |
    @Item.Position/@CurrentUserService.CurrentUser.UserItems.Count
    6 |
    7 |
    8 | 9 | 10 | 11 | 12 | @switch (Item) 13 | { 14 | case TextItem textItem: 15 | 16 | 17 | 18 | 19 | 23 | break; 24 | 25 | case UrlItem urlItem: 26 | 27 | 28 | Open 29 | break; 30 | 31 | case ParentItem parentItem: 32 | 33 | break; 34 | } 35 |
    -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/bootstrap/scss/mixins/_caret.scss: -------------------------------------------------------------------------------- 1 | @mixin caret-down() { 2 | border-top: $caret-width solid; 3 | border-right: $caret-width solid transparent; 4 | border-bottom: 0; 5 | border-left: $caret-width solid transparent; 6 | } 7 | 8 | @mixin caret-up() { 9 | border-top: 0; 10 | border-right: $caret-width solid transparent; 11 | border-bottom: $caret-width solid; 12 | border-left: $caret-width solid transparent; 13 | } 14 | 15 | @mixin caret-right() { 16 | border-top: $caret-width solid transparent; 17 | border-right: 0; 18 | border-bottom: $caret-width solid transparent; 19 | border-left: $caret-width solid; 20 | } 21 | 22 | @mixin caret-left() { 23 | border-top: $caret-width solid transparent; 24 | border-right: $caret-width solid; 25 | border-bottom: $caret-width solid transparent; 26 | } 27 | 28 | @mixin caret($direction: down) { 29 | @if $enable-caret { 30 | &::after { 31 | display: inline-block; 32 | margin-left: $caret-spacing; 33 | vertical-align: $caret-vertical-align; 34 | content: ""; 35 | @if $direction == down { 36 | @include caret-down(); 37 | } @else if $direction == up { 38 | @include caret-up(); 39 | } @else if $direction == right { 40 | @include caret-right(); 41 | } 42 | } 43 | 44 | @if $direction == left { 45 | &::after { 46 | display: none; 47 | } 48 | 49 | &::before { 50 | display: inline-block; 51 | margin-right: $caret-spacing; 52 | vertical-align: $caret-vertical-align; 53 | content: ""; 54 | @include caret-left(); 55 | } 56 | } 57 | 58 | &:empty::after { 59 | margin-left: 0; 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/external/sizzle/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright JS Foundation and other contributors, https://js.foundation/ 2 | 3 | This software consists of voluntary contributions made by many 4 | individuals. For exact contribution history, see the revision history 5 | available at https://github.com/jquery/sizzle 6 | 7 | The following license applies to all parts of this software except as 8 | documented below: 9 | 10 | ==== 11 | 12 | Permission is hereby granted, free of charge, to any person obtaining 13 | a copy of this software and associated documentation files (the 14 | "Software"), to deal in the Software without restriction, including 15 | without limitation the rights to use, copy, modify, merge, publish, 16 | distribute, sublicense, and/or sell copies of the Software, and to 17 | permit persons to whom the Software is furnished to do so, subject to 18 | the following conditions: 19 | 20 | The above copyright notice and this permission notice shall be 21 | included in all copies or substantial portions of the Software. 22 | 23 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 27 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 28 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 29 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 30 | 31 | ==== 32 | 33 | All files located in the node_modules and external directories are 34 | externally maintained libraries used by this software which have their 35 | own licenses; we recommend you read them, as their terms may differ from 36 | the terms above. 37 | -------------------------------------------------------------------------------- /Organize.Shared/Enitites/User.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Enums; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Collections.ObjectModel; 5 | using System.ComponentModel.DataAnnotations; 6 | using System.Text; 7 | 8 | namespace Organize.Shared.Enitites 9 | { 10 | public class User : BaseEntity 11 | { 12 | [Required] 13 | [StringLength(10, ErrorMessage = "user name is too long.")] 14 | public string UserName { get; set; } 15 | 16 | [Required(ErrorMessage = "The password is required!!!")] 17 | public string Password { get; set; } 18 | 19 | [Required] 20 | public string FirstName { get; set; } 21 | 22 | [Required] 23 | public string LastName { get; set; } 24 | 25 | [Required] 26 | [Phone] 27 | public string PhoneNumber { get; set; } 28 | 29 | public GenderTypeEnum GenderType { get; set; } 30 | 31 | public bool IsUserItemsPropertyLoaded { get; set; } = false; 32 | 33 | public ObservableCollection UserItems { 34 | get => _userItems; 35 | set => SetProperty(ref _userItems, value); 36 | } 37 | private ObservableCollection _userItems = new ObservableCollection(); 38 | 39 | public string Token { get; set; } 40 | 41 | public override string ToString() 42 | { 43 | var salutation = string.Empty; 44 | if(GenderType == GenderTypeEnum.Male) 45 | { 46 | salutation = "Mr"; 47 | } 48 | 49 | if(GenderType == GenderTypeEnum.Female) 50 | { 51 | salutation = "Mrs"; 52 | } 53 | 54 | return $"{salutation}. {FirstName} {LastName}"; 55 | } 56 | 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /Organize.WebAPIAccess/EntityRouteAssignments.cs: -------------------------------------------------------------------------------- 1 | using Organize.Shared.Enitites; 2 | using Organize.Shared.Enums; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | 7 | namespace Organize.WebAPIAccess 8 | { 9 | class EntityRouteAssignments 10 | { 11 | public static Dictionary GetEntityRouteAssignment { get; } = new Dictionary 12 | { 13 | {typeof(TextItem), "api/items?type="+(int)ItemTypeEnum.Text}, 14 | {typeof(UrlItem), "api/items?type="+(int)ItemTypeEnum.Url}, 15 | {typeof(ParentItem), "api/items?type="+(int)ItemTypeEnum.Parent}, 16 | {typeof(ChildItem), "api/items?type="+(int)ItemTypeEnum.Child}, 17 | }; 18 | 19 | public static Dictionary PostEntityRouteAssignment { get; } = new Dictionary 20 | { 21 | {typeof(TextItem), "api/items"}, 22 | {typeof(UrlItem), "api/items"}, 23 | {typeof(ParentItem), "api/items"}, 24 | {typeof(ChildItem), "api/items"}, 25 | {typeof(User), "api/users"}, 26 | }; 27 | 28 | public static Dictionary PutEntityRouteAssignment { get; } = new Dictionary 29 | { 30 | {typeof(TextItem), "api/items"}, 31 | {typeof(UrlItem), "api/items"}, 32 | {typeof(ParentItem), "api/items"}, 33 | {typeof(ChildItem), "api/items"} 34 | }; 35 | 36 | public static Dictionary DeleteEntityRouteAssignment { get; } = new Dictionary 37 | { 38 | {typeof(TextItem), "api/items"}, 39 | {typeof(UrlItem), "api/items"}, 40 | {typeof(ParentItem), "api/items"}, 41 | {typeof(ChildItem), "api/items"}, 42 | }; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Organize.WASM/wwwroot/jquery/src/wrap.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "./core", 3 | "./var/isFunction", 4 | "./core/init", 5 | "./manipulation", // clone 6 | "./traversing" // parent, contents 7 | ], function( jQuery, isFunction ) { 8 | 9 | "use strict"; 10 | 11 | jQuery.fn.extend( { 12 | wrapAll: function( html ) { 13 | var wrap; 14 | 15 | if ( this[ 0 ] ) { 16 | if ( isFunction( html ) ) { 17 | html = html.call( this[ 0 ] ); 18 | } 19 | 20 | // The elements to wrap the target around 21 | wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); 22 | 23 | if ( this[ 0 ].parentNode ) { 24 | wrap.insertBefore( this[ 0 ] ); 25 | } 26 | 27 | wrap.map( function() { 28 | var elem = this; 29 | 30 | while ( elem.firstElementChild ) { 31 | elem = elem.firstElementChild; 32 | } 33 | 34 | return elem; 35 | } ).append( this ); 36 | } 37 | 38 | return this; 39 | }, 40 | 41 | wrapInner: function( html ) { 42 | if ( isFunction( html ) ) { 43 | return this.each( function( i ) { 44 | jQuery( this ).wrapInner( html.call( this, i ) ); 45 | } ); 46 | } 47 | 48 | return this.each( function() { 49 | var self = jQuery( this ), 50 | contents = self.contents(); 51 | 52 | if ( contents.length ) { 53 | contents.wrapAll( html ); 54 | 55 | } else { 56 | self.append( html ); 57 | } 58 | } ); 59 | }, 60 | 61 | wrap: function( html ) { 62 | var htmlIsFunction = isFunction( html ); 63 | 64 | return this.each( function( i ) { 65 | jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); 66 | } ); 67 | }, 68 | 69 | unwrap: function( selector ) { 70 | this.parent( selector ).not( "body" ).each( function() { 71 | jQuery( this ).replaceWith( this.childNodes ); 72 | } ); 73 | return this; 74 | } 75 | } ); 76 | 77 | return jQuery; 78 | } ); 79 | -------------------------------------------------------------------------------- /BlazorExample/Components/TwoWayBinding.razor: -------------------------------------------------------------------------------- 1 |
    2 | Example 1: 3 | 4 | 5 | 7 |
    8 | 9 | @*
    10 | Example 3: 11 | 12 |
    *@ 13 | 14 |
    15 | Example 2: 16 | 17 |

    18 | Blazorify the app! 19 |

    20 |
    21 | 22 | @*

    23 | Blazorify the app! 24 |

    25 | 26 |

    27 | Blazorify the app! 28 |

    *@ 29 | 30 |
    31 | Example 3: 32 | 33 |
    34 | 35 | @*no chance*@ 36 | @* 37 | *@ 38 | 39 |
    40 | Example 4: 41 | 42 | 47 |
    48 | 49 | @code { 50 | private bool _is = true; 51 | private string _width = "10px"; 52 | private string _height; 53 | private string _text = "Blazor"; 54 | private string _paragraphStyle = "color:red"; 55 | 56 | private int _option = 2; 57 | } -------------------------------------------------------------------------------- /Organize.WASM/Pages/SignIn.razor: -------------------------------------------------------------------------------- 1 | @page "/signin" 2 | @page "/" 3 | @inherits SignInBase 4 | @layout UnAuthLayout 5 | 6 |
    7 |

    Hello @(string.IsNullOrEmpty(User.UserName) ? "User" : User.UserName) - Today is @Day!

    8 | 9 | 10 | 11 | @* 12 | *@ 13 |
    14 | 17 |
    18 | @* 19 | *@ 20 |
    21 | 25 | Show password 26 |
    27 | 28 |
    29 | 33 | 34 |
    35 | --------------------------------------------------------------------------------