public DropdownsDemoForm() { _view = new DropdownsDemoFormView(); _view.MultiChoice.PermittedValues = KnownSomeDtos; var choosenMultipleCount = LocalValueFieldBuilder.BuildInt(_view.MultiChoiceState); var choosenMultiple = LocalValueFieldBuilder.Build(_view.MultiChoice); choosenMultiple.Changed += async(_, __, newValue, ___, ____) => { await choosenMultipleCount.DoChange(newValue.Count(), false); }; _view.SingleChoice.PermittedValues = KnownSomeDtos; var choosenSingleSomeText = LocalValueFieldBuilder.Build(_view.SingleChoiceState); var choosenSingle = LocalValueFieldBuilder.Build(_view.SingleChoice); choosenSingle.Changed += async(_, __, newValue, ___, ____) => { await choosenSingleSomeText.DoChange(newValue?.SomeText ?? "(not choosen)", false); }; }
public IntroduceItemForm() { _view = new IntroduceItemFormView(); _someText = LocalValueFieldBuilder.Build(_view.SomeText, Validator.IsNotEmptyOrWhitespaceOnly); _someNumber = LocalValueFieldBuilder.BuildInt(_view.SomeNumber, Validator.MustBePositive); _someBool = LocalValueFieldBuilder.Build(_view.SomeBool); _view.SomeTrait.PermittedValues = EnumExtensions.GetEnumValues <SomeTraitType>().Select(x => (SomeTraitType?)x); _someTrait = LocalValueFieldBuilder.Build(_view.SomeTrait, Validator.IsNotNull); var isFormValid = new AggregatedErrorsValue <bool>(false, self => !self.Errors.Any(), x => { x.Observes(_someText); x.Observes(_someNumber); x.Observes(_someBool); x.Observes(_someTrait); }); LocalActionBuilder .Build(_view.Create, () => Ended?.Invoke(this, Outcome.Saved)) .With(x => x.BindEnableAndInitialize(isFormValid)); }