示例#1
0
        private EventCallback <MouseEventArgs> CreateOnClickCallback(DropDownMenuItem item)
        {
            var factory = new EventCallbackFactory();

            return(item.OnClick != null?
                   factory.Create(this, item.OnClick) :
                       factory.Create(this, item.OnClickAsync));
        }
示例#2
0
        public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, FormField field) where TItem : class
        {
            var localColumnName = actualItemContext.ActualColumnName;
            var value           = actualItemContext.GetActualItemColumnValue(localColumnName);

            var valueExpression = GetValueExpression(actualItemContext.ActualItem, field);
            var convertedValue  = ConvertToDateTime(value);

            actualItemContext.SetActualItemColumnValue(localColumnName, convertedValue);

            return(builder =>
            {
                builder
                .OpenElement(HtmlTagNames.Div, "form-field-wrapper")
                .OpenComponent(typeof(InputDate <>).MakeGenericType(field.Type))
                .AddAttribute("id", $"create-form-{localColumnName}")
                .AddAttribute("class", "edit-text-field")
                .AddAttribute("Value", convertedValue)
                .AddAttribute("ValueExpression", valueExpression);

                if (field.UnderlyneType == typeof(DateTime))
                {
                    if (field.IsNullable)
                    {
                        builder
                        .AddAttribute("ValueChanged", eventCallbackFactory.Create <DateTime?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <DateTime?>(valueExpression);
                    }
                    else
                    {
                        builder
                        .AddAttribute("ValueChanged", eventCallbackFactory.Create <DateTime>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <DateTime>(valueExpression);
                    }
                }
                else
                {
                    if (field.IsNullable)
                    {
                        builder
                        .AddAttribute("ValueChanged", eventCallbackFactory.Create <DateTimeOffset?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <DateTimeOffset?>(valueExpression);
                    }
                    else
                    {
                        builder
                        .AddAttribute("ValueChanged", eventCallbackFactory.Create <DateTimeOffset>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <DateTimeOffset>(valueExpression);
                    }
                }

                builder.CloseElement();
            });
        }
示例#3
0
        public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, PropertyInfo field) where TItem : class
        {
            var localColumnName = actualItemContext.ActualColumnName;
            var value           = actualItemContext.GetActualItemColumnValue(localColumnName);

            var valueExpression = GetValueExpression(value, actualItemContext.ActualItem, field);

            return(builder =>
            {
                builder
                .OpenElement(HtmlTagNames.Div, "form-field-wrapper")
                .OpenComponent(typeof(InputNumber <>).MakeGenericType(field.GetMemberType()))
                .AddAttribute("Id", $"create-form-{localColumnName}")
                .AddAttribute("Class", "edit-text-field")
                .AddAttribute("Value", value)
                .AddAttribute("ValueExpression", valueExpression);

                if (value is int)
                {
                    builder
                    .AddAttribute("ValueChanged", eventCallbackFactory.Create <int>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                    .CloseComponent()
                    .AddValidationMessage <int>(valueExpression);
                }
                else if (value is long)
                {
                    builder
                    .AddAttribute("ValueChanged", eventCallbackFactory.Create <long>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                    .CloseComponent()
                    .AddValidationMessage <long>(valueExpression);
                }
                else if (value is decimal)
                {
                    builder
                    .AddAttribute("ValueChanged", eventCallbackFactory.Create <decimal>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                    .CloseComponent()
                    .AddValidationMessage <decimal>(valueExpression);
                }
                else if (value is double)
                {
                    builder
                    .AddAttribute("ValueChanged", eventCallbackFactory.Create <double>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                    .CloseComponent()
                    .AddValidationMessage <double>(valueExpression);
                }
                else if (value is float)
                {
                    builder
                    .AddAttribute("ValueChanged", eventCallbackFactory.Create <float>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                    .CloseComponent()
                    .AddValidationMessage <float>(valueExpression);
                }

                builder.CloseElement();
            });
        }
示例#4
0
 private void ToggleClearBtn()
 {
     Suffix = (builder) =>
     {
         builder.OpenComponent <Icon>(31);
         builder.AddAttribute(32, "Type", "close-circle");
         builder.AddAttribute(33, "Class", GetClearIconCls());
         if (string.IsNullOrEmpty(Value?.ToString()))
         {
             builder.AddAttribute(34, "Style", "visibility: hidden;");
         }
         else
         {
             builder.AddAttribute(34, "Style", "visibility: visible;");
         }
         builder.AddAttribute(35, "OnClick", CallbackFactory.Create <MouseEventArgs>(this, (args) =>
         {
             CurrentValue = default;
             if (OnChange.HasDelegate)
             {
                 OnChange.InvokeAsync(Value);
             }
             ToggleClearBtn();
         }));
         builder.CloseComponent();
     };
 }
示例#5
0
        public void BuildRendererTree(
            IFormLayout <TModel> createFormLayout,
            CreateItemRendererContext <TModel> createItemRendererContext,
            IRendererTreeBuilder rendererTreeBuilder)
        {
            var bodyAction   = createFormLayout.BuildBodyRendererTree(createItemRendererContext, formInputRendererTreeProvider);
            var footerAction = createFormLayout.BuildFooterRendererTree(createItemRendererContext);

            RenderFragment <EditContext> formBody = (EditContext context) => delegate(RenderTreeBuilder builder)
            {
                var internalBuilder = new BlazorRendererTreeBuilder(builder);
                bodyAction?.Invoke(internalBuilder);
                footerAction?.Invoke(internalBuilder);

                internalBuilder
                .OpenComponent(typeof(DataAnnotationsValidator))
                .CloseComponent();
            };

            rendererTreeBuilder
            .OpenComponent(typeof(EditForm))
            .AddAttribute(nameof(EditContext), createItemRendererContext.ViewModel.EditContext)
            .AddAttribute("OnValidSubmit", eventCallbackFactory.Create <EditContext>(this,
                                                                                     context => createItemRendererContext.ViewModel.SaveAction.Invoke(createItemRendererContext.ViewModel.Model)))
            .AddAttribute(RenderTreeBuilder.ChildContent, formBody)
            .CloseComponent();

            createItemRendererContext.ViewModel.ValidateModel();
        }
示例#6
0
        public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, FormField field) where TItem : class
        {
            var localColumnName = actualItemContext.ActualColumnName;
            var value           = actualItemContext.GetActualItemColumnValue(localColumnName);

            var valueExpression = Expression.Lambda <Func <string> >(
                Expression.Property(
                    Expression.Constant(actualItemContext.ActualItem),
                    field.Info));

            return(builder =>
            {
                builder
                .OpenElement(HtmlTagNames.Div, "form-field-wrapper")
                .OpenComponent(typeof(InputText))
                .AddAttribute("id", $"create-form-{localColumnName}")
                .AddAttribute("class", "edit-text-field")
                .AddAttribute("Value", value)
                .AddAttribute("ValueExpression", valueExpression)
                .AddAttribute("ValueChanged", eventCallbackFactory.Create <string>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                .CloseComponent()
                .AddValidationMessage <string>(valueExpression)
                .CloseElement();
            });
        }
示例#7
0
        public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, PropertyInfo field) where TItem : class
        {
            var localColumnName = actualItemContext.ActualColumnName;
            var value           = actualItemContext.GetActualItemColumnValue(localColumnName);

            var valueExpression = Expression.Lambda <Func <bool> >(
                Expression.Property(
                    Expression.Constant(actualItemContext.ActualItem),
                    field));

            return(builder =>
            {
                builder
                .OpenElement(HtmlTagNames.Div, "checkbox")
                .OpenElement(HtmlTagNames.Label)
                .OpenComponent(typeof(InputCheckbox))
                .AddAttribute("Id", $"create-form-{localColumnName}")
                .AddAttribute("Class", string.Empty)
                .AddAttribute("Value", value)
                .AddAttribute("ValueExpression", valueExpression)
                .AddAttribute("ValueChanged", eventCallbackFactory.Create <bool>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                .CloseComponent()
                .OpenElement(HtmlTagNames.Span, "cr")
                .OpenElement(HtmlTagNames.I, "cr-icon fa fa-check")
                .CloseElement()
                .CloseElement()
                .CloseElement()
                .CloseElement()
                .AddValidationMessage <bool>(valueExpression);
            });
        }
示例#8
0
        public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, FormField field) where TItem : class
        {
            var localColumnName = actualItemContext.ActualColumnName;
            var value           = actualItemContext.GetActualItemColumnValue(localColumnName);

            var valueExpression = GetValueExpression(actualItemContext.ActualItem, field);

            return(builder =>
            {
                builder
                .OpenElement(HtmlTagNames.Div, "checkbox")
                .OpenElement(HtmlTagNames.Label)
                .OpenComponent(typeof(InputCheckbox))
                .AddAttribute("Id", $"create-form-{localColumnName}")
                .AddAttribute("Class", string.Empty)
                .AddAttribute("Value", value)
                .AddAttribute("ValueExpression", valueExpression);

                if (field.IsNullable)
                {
                    builder.AddAttribute("ValueChanged", eventCallbackFactory.Create <bool?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)));
                }
                else
                {
                    builder.AddAttribute("ValueChanged", eventCallbackFactory.Create <bool>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)));
                }

                builder
                .CloseComponent()
                .OpenElement(HtmlTagNames.Span, "cr")
                .OpenElement(HtmlTagNames.I, "cr-icon fa fa-check")
                .CloseElement()
                .CloseElement()
                .CloseElement()
                .CloseElement();

                if (field.IsNullable)
                {
                    builder.AddValidationMessage <bool?>(valueExpression);
                }
                else
                {
                    builder.AddValidationMessage <bool>(valueExpression);
                }
            });
        }
示例#9
0
 private EventCallback ConsoleSetHeight(int height)
 {
     return(EventCallbackFactory.Create(this, () =>
     {
         ConsoleHeight = height;
         InvokeAsync(StateHasChanged);
     }));
 }
        public static EventCallback <ErrorEventArgs> Create(this EventCallbackFactory factory, object receiver, Action <ErrorEventArgs> callback)
        {
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            return(factory.Create <ErrorEventArgs>(receiver, callback));
        }
        public static EventCallback <ClipboardEventArgs> Create(this EventCallbackFactory factory, object receiver, Func <ClipboardEventArgs, Task> callback)
        {
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            return(factory.Create <ClipboardEventArgs>(receiver, callback));
        }
示例#12
0
 private void ToggleClearBtn()
 {
     suffix = new RenderFragment((builder) =>
     {
         builder.OpenComponent <AntIcon>(31);
         builder.AddAttribute(32, "type", "close-circle");
         if (string.IsNullOrEmpty(Value))
         {
             builder.AddAttribute(33, "style", "visibility: hidden;");
         }
         else
         {
             builder.AddAttribute(33, "style", "visibility: visible;");
         }
         builder.AddAttribute(34, "onclick", _callbackFactory.Create <MouseEventArgs>(this, (args) =>
         {
             Value = string.Empty;
             ToggleClearBtn();
         }));
         builder.CloseComponent();
     });
 }
示例#13
0
        public async Task when_suppressing_item_if_the_pop_up_retrieve_no_the_item_should_not_be_suppressed()
        {
            ConfirmDisplayer.Setup(x => x.Confirm(It.IsAny <string>(), It.IsAny <string>())).Returns(Task.Factory.StartNew(() => false));
            bool hasCallRemoveCallback   = false;
            var  removeItemEventCallBack = EventCallbackFactory.Create <StarpointsItem>(new object(), _ => hasCallRemoveCallback = true);
            var  starpointsItem          = CreateStarpointsItem();

            Authorize(starpointsItem, false);
            var component = CreateComponent(ComponentParameter.CreateParameter("Item", starpointsItem)
                                            , ComponentParameter.CreateParameter("PleaseRemoveItem", removeItemEventCallBack));

            component.WaitForState(() => component.Nodes?.Length > 0);
            await component.Instance.CancelItem();

            await Task.Delay(30);

            hasCallRemoveCallback.Should().BeFalse();
        }
示例#14
0
        public async Task when_updating_status_the_update_status_api_method_should_be_called()
        {
            ConfirmDisplayer.Setup(x => x.Confirm(It.IsAny <string>(), It.IsAny <string>())).Returns(Task.Factory.StartNew(() => true));
            var removeItemEventCallBack = EventCallbackFactory.Create <StarpointsItem>(new object(), _ => { });
            var starpointsItem          = CreateStarpointsItem();

            MockHttp.Expect($"http://localhost/StarpointsManager/CancelStarpoints/-1/{starpointsItem.Id}").Respond(HttpStatusCode.OK);
            Authorize(starpointsItem, false);
            var component = CreateComponent(ComponentParameter.CreateParameter("Item", starpointsItem)
                                            , ComponentParameter.CreateParameter("PleaseRemoveItem", removeItemEventCallBack));

            component.WaitForState(() => component.Nodes?.Length > 0);
            await component.Instance.CancelItem();

            await Task.Delay(30);

            MockHttp.VerifyNoOutstandingExpectation();
        }
示例#15
0
        public void Setup()
        {
            IActivityDefinitionService service = Substitute.For <IActivityDefinitionService>();

            service.GetActivitySetNames().Returns(_activitySetNames);
            _host.AddService(service);

            EventCallbackFactory   eventCallbackFactory = new EventCallbackFactory();
            EventCallback <string> eventCallback        = eventCallbackFactory.Create <string>(this, x =>
            {
                _callBackValue = x;
            });
            IDictionary <string, object> parameters = new Dictionary <string, object>
            {
                { "CurrentActivitySetChanged", eventCallback }
            };

            _component = _host.AddComponent <ActivitySetSelector>(parameters);
        }
示例#16
0
        public async Task when_suppressing_item_if_the_pop_up_retrieve_yes_the_item_should_be_suppressed()
        {
            ConfirmDisplayer.Setup(x => x.Confirm(It.IsAny <string>(), It.IsAny <string>())).Returns(Task.Factory.StartNew(() => true));
            bool hasCallRemoveCallback   = false;
            var  removeItemEventCallBack = EventCallbackFactory.Create <StarpointsItem>(new object(), _ => hasCallRemoveCallback = true);
            var  starpointsItem          = CreateStarpointsItem();

            MockHttp.Expect($"http://localhost/StarpointsManager/CancelStarpoints/-1/{starpointsItem.Id}").Respond(HttpStatusCode.OK);
            Authorize(starpointsItem, false);
            var component = CreateComponent(ComponentParameter.CreateParameter("Item", starpointsItem)
                                            , ComponentParameter.CreateParameter("PleaseRemoveItem", removeItemEventCallBack));

            component.WaitForState(() => component.Nodes?.Length > 0);
            await component.Instance.CancelItem();

            await Task.Delay(30);

            hasCallRemoveCallback.Should().BeTrue();
        }
示例#17
0
 private void ToggleClearBtn()
 {
     Suffix = (builder) =>
     {
         builder.OpenComponent <Icon>(31);
         builder.AddAttribute(32, "Type", "close-circle");
         if (string.IsNullOrEmpty(Value?.ToString()))
         {
             builder.AddAttribute(33, "Style", "visibility: hidden;");
         }
         else
         {
             builder.AddAttribute(33, "Style", "visibility: visible;");
         }
         builder.AddAttribute(34, "onclick", CallbackFactory.Create <MouseEventArgs>(this, (args) =>
         {
             Value = default;//string.Empty;
             ToggleClearBtn();
         }));
         builder.CloseComponent();
     };
 }
示例#18
0
        public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, FormField field, string localColumnName) where TItem : class
        {
            var value = actualItemContext.GetActualItemColumnValue(localColumnName);

            var valueExpression = GetValueExpression(actualItemContext.ActualItem, field);

            return(builder =>
            {
                builder
                .OpenElement(HtmlTagNames.Div, "form-field-wrapper")
                .OpenComponent(typeof(InputNumber <>).MakeGenericType(field.Type))
                .AddAttribute("id", $"create-form-{localColumnName}")
                .AddAttribute("class", "edit-text-field")
                .AddAttribute("Value", value)
                .AddAttribute("ValueExpression", valueExpression);

                if (field.UnderlyingType == typeof(int))
                {
                    if (field.IsNullable)
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <int?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <int?>(valueExpression);
                    }
                    else
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <int>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <int>(valueExpression);
                    }
                }
                else if (field.UnderlyingType == typeof(long))
                {
                    if (field.IsNullable)
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <long?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <long?>(valueExpression);
                    }
                    else
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <long>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <long>(valueExpression);
                    }
                }
                else if (field.UnderlyingType == typeof(decimal))
                {
                    if (field.IsNullable)
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <decimal?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <decimal?>(valueExpression);
                    }
                    else
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <decimal>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <decimal>(valueExpression);
                    }
                }
                else if (field.UnderlyingType == typeof(double))
                {
                    if (field.IsNullable)
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <double?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <double?>(valueExpression);
                    }
                    else
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <double>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <double>(valueExpression);
                    }
                }
                else if (field.UnderlyingType == typeof(float))
                {
                    if (field.IsNullable)
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <float?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <float?>(valueExpression);
                    }
                    else
                    {
                        builder
                        .AddAttribute("ValueChanged", _eventCallbackFactory.Create <float>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v)))
                        .CloseComponent()
                        .AddValidationMessage <float>(valueExpression);
                    }
                }

                builder.CloseElement();
            });
        }
示例#19
0
 public FileEditPlus()
 {
     EventFactory = new EventCallbackFactory();
     Changed      = EventFactory.Create <FileChangedEventArgs>(this, OnChanged);
     Progressed   = EventFactory.Create <FileProgressedEventArgs>(this, OnProgressed);
 }