private string getJsInitStatements()
 {
     if (webFormsLocalData == null)
     {
         throw new ApplicationException("webFormsLocalData not set");
     }
     webFormsFocusDependentData = webFormsLocalData.FocusDependentDataGetter(isFocused);
     return(webFormsFocusDependentData.JsInitStatements);
 }
示例#2
0
        private PageNode buildNode(PageComponent component, IdGenerator idGenerator, bool inEtherealContainer, bool inJsInitElement)
        {
            nodeCount += 1;

            IReadOnlyCollection <PageNode> buildChildren(IEnumerable <PageComponent> children, IdGenerator g) =>
            children.Select(i => buildNode(i, g, inEtherealContainer, inJsInitElement)).Materialize();

            if (component is ElementNode elementNode)
            {
                FormState.Current.SetForNextElement();

                var id = idGenerator.GenerateId();
                idSetter(id);

                var data = elementNode.ElementDataGetter(new ElementContext(id));
                ElementNodeLocalData          localData          = null;
                ElementNodeFocusDependentData focusDependentData = null;
                var node = new PageNode(
                    elementNode,
                    elementNode.FormValue,
                    buildChildren(data.Children, idGenerator),
                    buildChildren(data.EtherealChildren, idGenerator),
                    () => {
                    // Defer attribute creation for the JavaScript initialization element.
                    if (inJsInitElement)
                    {
                        return(new FocusabilityCondition(false));
                    }

                    localData = data.LocalDataGetter();
                    return(localData.FocusabilityCondition);
                },
                    (isFocused, writer) => {
                    // Defer attribute creation for the JavaScript initialization element.
                    if (inJsInitElement)
                    {
                        return;
                    }

                    focusDependentData = localData.FocusDependentDataGetter(isFocused);
                    writer.Write(focusDependentData.JsInitStatements);
                },
                    () => {
                    if (inJsInitElement)
                    {
                        localData          = data.LocalDataGetter();
                        focusDependentData = localData.FocusDependentDataGetter(false);
                    }

                    var attributes = focusDependentData.Attributes;
                    if (focusDependentData.IncludeIdAttribute)
                    {
                        attributes = attributes.Append(new ElementAttribute("id", data.ClientSideIdOverride.Any() ? data.ClientSideIdOverride : id));
                    }
                    return(localData.ElementName, attributes);
                });
示例#3
0
 /// <summary>
 /// Creates a local-data object for a nonfocusable element node.
 /// </summary>
 public ElementNodeLocalData(string elementName, ElementNodeFocusDependentData focusDependentData)
 {
     ElementName              = elementName;
     FocusabilityCondition    = new FocusabilityCondition(false);
     FocusDependentDataGetter = isFocused => focusDependentData;
 }