Пример #1
0
        void IFormItem.AddControl <TValue>(AntInputComponentBase <TValue> control)
        {
            if (control.FieldIdentifier.Model == null)
            {
                throw new InvalidOperationException($"Please use @bind-Value in the control with generic type `{typeof(TValue)}`.");
            }

            this._control = control;

            CurrentEditContext.OnValidationStateChanged += (s, e) =>
            {
                control.ValidationMessages = CurrentEditContext.GetValidationMessages(control.FieldIdentifier).ToArray();
                this._isValid = !control.ValidationMessages.Any();

                StateHasChanged();
            };

            _formValidationMessages = builder =>
            {
                var i = 0;
                builder.OpenComponent <FormValidationMessage <TValue> >(i++);
                builder.AddAttribute(i++, "Control", control);
                builder.CloseComponent();
            };

            _propertyReflector = PropertyReflector.Create(control.ValueExpression);

            if (_propertyReflector.RequiredAttributes.Any())
            {
                _labelCls = $"{_prefixCls}-required";
            }
        }
Пример #2
0
        void IFormItem.AddControl <TValue>(AntInputComponentBase <TValue> control)
        {
            this._control = control;

            CurrentEditContext.OnValidationStateChanged += (s, e) =>
            {
                control.ValidationMessages = CurrentEditContext.GetValidationMessages(control.FieldIdentifier).ToArray();
                this._isValid = !control.ValidationMessages.Any();

                StateHasChanged();
            };

            _formValidationMessages = builder =>
            {
                var i = 0;
                builder.OpenComponent <FormValidationMessage <TValue> >(i++);
                builder.AddAttribute(i++, "Control", control);
                builder.CloseComponent();
            };

            if (control.FieldIdentifier.TryGetValidateProperty(out var propertyInfo))
            {
                var requiredAttribute = propertyInfo.GetCustomAttributes(typeof(RequiredAttribute), true);
                if (requiredAttribute.Length > 0)
                {
                    _labelCls = $"{_prefixCls}-required";
                }
            }
        }
Пример #3
0
 private string[] GetValidationErrors()
 {
     if (CurrentEditContext != null)
     {
         return(CurrentEditContext.GetValidationMessages().ToArray());
     }
     return(Array.Empty <string>());
 }
Пример #4
0
        void IFormItem.AddControl <TValue>(AntInputComponentBase <TValue> control)
        {
            if (_control != null)
            {
                return;
            }

            if (control.FieldIdentifier.Model == null)
            {
                throw new InvalidOperationException($"Please use @bind-Value (or @bind-Values for selected components) in the control with generic type `{typeof(TValue)}`.");
            }

            _fieldIdentifier = control.FieldIdentifier;
            this._control    = control;


            if (Form.ValidateMode.IsIn(FormValidateMode.Rules, FormValidateMode.Complex))
            {
                _fieldPropertyInfo = _fieldIdentifier.Model.GetType().GetProperty(_fieldIdentifier.FieldName);
            }

            _validationStateChangedHandler = (s, e) =>
            {
                control.ValidationMessages = CurrentEditContext.GetValidationMessages(control.FieldIdentifier).Distinct().ToArray();
                this._isValid = !control.ValidationMessages.Any();

                StateHasChanged();
            };

            CurrentEditContext.OnValidationStateChanged += _validationStateChangedHandler;

            _formValidationMessages = builder =>
            {
                var i = 0;
                builder.OpenComponent <FormValidationMessage <TValue> >(i++);
                builder.AddAttribute(i++, "Control", control);
                builder.CloseComponent();
            };

            if (control.ValueExpression is not null)
            {
                _propertyReflector = PropertyReflector.Create(control.ValueExpression);
            }
            else
            {
                _propertyReflector = PropertyReflector.Create(control.ValuesExpression);
            }

            if (_propertyReflector.RequiredAttribute != null)
            {
                _labelCls = $"{_prefixCls}-required";
            }
            if (_propertyReflector.DisplayName != null)
            {
                Label ??= _propertyReflector.DisplayName;
            }
        }
Пример #5
0
 /// <inheritdoc />
 protected override void BuildRenderTree(RenderTreeBuilder builder)
 {
     foreach (var message in CurrentEditContext.GetValidationMessages(_fieldIdentifier))
     {
         builder.OpenElement(0, "div");
         builder.AddAttribute(1, "class", "validation-message");
         builder.AddContent(2, message);
         builder.CloseElement();
     }
 }
Пример #6
0
 /// <inheritdoc />
 protected override void BuildRenderTree(RenderTreeBuilder builder)
 {
     foreach (string message in CurrentEditContext.GetValidationMessages(FieldIdentifier))
     {
         builder.OpenElement(0, "div");
         builder.AddMultipleAttributes(1, AdditionalAttributes);
         builder.AddContent(2, message);
         builder.CloseElement();
     }
 }
        /// <summary>`
        /// Constructs an instance of <see cref="ValidationMessage{TValue}"/>.
        /// </summary>
        public FormValidationMessage()
        {
            _validationStateChangedHandler = (sender, eventArgs) =>
            {
                bool valid = !CurrentEditContext.GetValidationMessages(_fieldIdentifier).Any();
                OnStateChange.InvokeAsync(valid);

                StateHasChanged();
            };
        }
Пример #8
0
 /// <inheritdoc />
 protected override void BuildRenderTree(RenderTreeBuilder builder)
 {
     foreach (var message in CurrentEditContext.GetValidationMessages(_fieldIdentifier))
     {
         builder.OpenElement(0, "div");
         builder.AddMultipleAttributes(1, AdditionalAttributes);
         builder.AddAttribute(2, "class", "invalid-feedback");
         builder.AddContent(3, message);
         builder.CloseElement();
     }
 }
 /// <inheritdoc />
 protected override void BuildRenderTree(RenderTreeBuilder builder)
 {
     foreach (var message in CurrentEditContext.GetValidationMessages(_fieldIdentifier))
     {
         builder.OpenElement(0, "div");
         builder.AddMultipleAttributes(1, AdditionalAttributes);
         builder.AddAttribute(2, "id", Id);
         builder.AddAttribute(2, "class", "mdc-text-field-helper-text mdc-text-field-helper-text--persistent mdc-text-field-helper-text--validation-msg");
         builder.AddAttribute(2, "data-valmsg-for", ForId);
         builder.AddContent(3, message);
         builder.CloseElement();
     }
 }
Пример #10
0
 protected override void OnParametersSet()
 {
     this.IsValid = true;
     {
         if (this.IsRequired)
         {
             this.IsValid = false;
             var messages = CurrentEditContext.GetValidationMessages(_fieldIdentifier).ToList();
             if (messages is null || messages.Count == 0)
             {
                 this.IsValid = true;
             }
         }
     }
 }
Пример #11
0
        protected override void BuildRenderTree(RenderTreeBuilder builder)
        {
            var classes = ((Dictionary <string, object>)AdditionalAttributes).VorN("class")?.ToString().Split(" ").ToList() ?? new List <string>();

            classes.Insert(0, "validation-message");
            var strClasses = string.Join(" ", classes);

            foreach (var message in CurrentEditContext.GetValidationMessages(_fieldIdentifier))
            {
                builder.OpenElement(0, "div");
                builder.AddMultipleAttributes(1, AdditionalAttributes);
                builder.AddAttribute(2, "class", strClasses);
                builder.AddContent(3, message);
                builder.CloseElement();
            }
        }
Пример #12
0
        private async void CurrentEditContextOnValidationStateChanged(object sender, ValidationStateChangedEventArgs e)
        {
            Log.LogInformation("-> CurrentEditContextOnValidationStateChanged");

            if (CurrentEditContext.GetValidationMessages().Count() == 0)
            {
                Log.LogTrace("Saving");

                if (!await Host.SaveSession())
                {
                    return;
                }

                await Host.UpdateRemoteHosts(
                    UpdateAction.UpdateClock,
                    null,
                    CurrentClockMessage,
                    null);
            }
        }
Пример #13
0
        void IFormItem.AddControl <TValue>(AntInputComponentBase <TValue> control)
        {
            if (control.FieldIdentifier.Model == null)
            {
                throw new InvalidOperationException($"Please use @bind-Value in the control with generic type `{typeof(TValue)}`.");
            }

            this._control = control;

            CurrentEditContext.OnValidationStateChanged += (s, e) =>
            {
                control.ValidationMessages = CurrentEditContext.GetValidationMessages(control.FieldIdentifier).ToArray();
                this._isValid = !control.ValidationMessages.Any();

                StateHasChanged();
            };

            _formValidationMessages = builder =>
            {
                var i = 0;
                builder.OpenComponent <FormValidationMessage <TValue> >(i++);
                builder.AddAttribute(i++, "Control", control);
                builder.CloseComponent();
            };

            if (control.FieldIdentifier.TryGetValidateProperty(out var propertyInfo))
            {
                var requiredAttribute = propertyInfo.GetCustomAttributes(typeof(RequiredAttribute), true);
                if (requiredAttribute.Length > 0)
                {
                    _labelCls = $"{_prefixCls}-required";
                }
            }
            else
            {
                throw new InvalidOperationException($"Unable to match property `{control.FieldIdentifier.FieldName}` in Model `{control.FieldIdentifier.Model.GetType()}`, please confirm that the Model contains this property.");
            }
        }
        protected override void BuildRenderTree(RenderTreeBuilder builder)
        {
            bool hasContent = false;

            foreach (var message in CurrentEditContext.GetValidationMessages(_fieldIdentifier))
            {
                builder.OpenElement(0, "div");
                builder.AddMultipleAttributes(1, AdditionalAttributes);
                builder.AddAttribute(2, "class", "validation-message");
                builder.AddContent(3, message);
                builder.CloseElement();
                hasContent = true;
            }

            if (AddEmptyErrorDiv && !hasContent)
            {
                builder.OpenElement(0, "div");
                builder.AddMultipleAttributes(1, AdditionalAttributes);
                builder.AddAttribute(2, "class", "validation-message");
                builder.AddContent(3, (MarkupString)"&nbsp;");
                builder.CloseElement();
            }
        }
 protected override void OnInitialized()
 {
     ValidationMessages = Model is null?CurrentEditContext.GetValidationMessages() :
                              CurrentEditContext.GetValidationMessages(new FieldIdentifier(Model, string.Empty));
 }