Beispiel #1
0
        public div[] GetValidationAlerts(string validation_input_id, string invalid_text = "Укажите значение", string valid_text = null)
        {
            div valid_element = new div()
            {
                InnerText = valid_text, Id_DOM = "valid-tooltip-" + validation_input_id, inline = true
            };

            valid_element.AddCSS("valid-feedback");
            div invalid_element = new div()
            {
                InnerText = invalid_text, Id_DOM = "invalid-tooltip-" + validation_input_id, inline = true
            };

            invalid_element.AddCSS("invalid-feedback");
            //
            if (!string.IsNullOrEmpty(valid_text))
            {
                return new div[] { valid_element, invalid_element }
            }
            ;
            else
            {
                return new div[] { invalid_element }
            };
        }
    }
        public static div GetBootstrapSelectList(string label, select select_body, string Tooltip = null, string wrap_class = "input-group mb-4 col-auto")
        {
            div ret_dom = new div();

            ret_dom.AddCSS(wrap_class, true);
            if (!string.IsNullOrEmpty(label))
            {
                using (div input_group_prepend = new div())
                {
                    input_group_prepend.AddCSS("input-group-prepend");
                    ret_dom.AddDomNode(input_group_prepend);
                }
                //ret_dom.Childs[0].Childs.Add(new label(label, select_body.Id_DOM) { css_class = "input-group-text" });
            }
            select_body.AddCSS("custom-select");

            if (!string.IsNullOrEmpty(Tooltip))
            {
                ret_dom.title = Tooltip;
            }

            ret_dom.SetAttribute("data-toggle", "tooltip");
            ret_dom.AddDomNode(select_body);
            return(ret_dom);
        }
        public static div GetTextarea(string label_text, string value_input, string name_input, string placeholder, bool input_readonly = false, int rows = 2, bool required = false)
        {
            div returned_input = new div();

            returned_input.AddCSS("form-group");
            if (!string.IsNullOrEmpty(label_text))
            {
                returned_input.AddDomNode(new label(label_text, name_input));
            }

            textarea ret_textarea = new textarea()
            {
                InnerText = value_input, required = required, @readonly = input_readonly
            };

            ret_textarea.AddCSS("form-control");
            if (rows > 0)
            {
                ret_textarea.rows = rows;
            }

            if (!string.IsNullOrEmpty(value_input))
            {
                ret_textarea.InnerText = value_input;
            }

            ret_textarea.Name_DOM = name_input;

            returned_input.AddDomNode(ret_textarea);

            return(returned_input);
        }
        /// <summary>
        /// Добавить вложеную группу, как dropdown menus
        /// </summary>
        /// <param name="nesting">Набор вложеной группы кнопок</param>
        /// <param name="id_node">Уникальный идентификатор вложеного узла. Если IsNullOrEmpty => будет сгенерирован guid</param>
        public void AddNestingDropdownGroup(List <DataParticleItem> nesting, string title_node, string id_node = null)
        {
            if (string.IsNullOrEmpty(id_node))
            {
                id_node = Guid.NewGuid().ToString().Replace("-", "");
            }

            GroupElements nested_group = new GroupElements()
            {
                aria_label = "nested group - " + id_node
            };
            button node_button = new button(title_node)
            {
                Id_DOM = id_node
            };

            node_button.AddCSS("btn btn-" + default_style.ToString() + " dropdown-toggle", true);
            node_button.SetAttribute("data-toggle", "dropdown");
            node_button.SetAttribute("aria-haspopup", "true");
            node_button.SetAttribute("aria-expanded", "false");
            nested_group.Childs.Add(node_button);

            div dropdown_node = new div();

            dropdown_node.AddCSS("dropdown-menu");
            dropdown_node.SetAttribute("aria-labelledby", id_node);
            foreach (DataParticleItem item in nesting)
            {
                using (a a_item = new a()
                {
                    href = item.Value, InnerText = item.Title
                })
                {
                    a_item.AddCSS("dropdown-item");
                    dropdown_node.AddDomNode(a_item);
                }
            }
            Childs.Add(nested_group);
        }
        /// <summary>
        /// Стандартная карточка/панель для размещения информации
        /// </summary>
        /// <param name="card_head">Заголовок карточки</param>
        /// <param name="body_elements">Элементы содержимого</param>
        /// <param name="css_card">Стиль офрмления карточки</param>
        /// <returns>Готовая карточка информации</returns>
        public static div Get_DIV_Bootstrap_Card(string card_head, List <base_dom_root> body_elements, string css_card = "bg-light")
        {
            div card_header = new div()
            {
                InnerText = card_head
            };

            card_header.AddCSS("card-header");
            div card_body = new div();

            card_body.AddCSS("card-body");
            foreach (div he in body_elements)
            {
                card_body.AddDomNode(he);
            }

            div card_set = new div();

            card_set.AddCSS("card " + css_card, true);
            card_set.AddDomNode(card_header);
            card_set.AddDomNode(card_body);

            return(card_set);
        }
        public override string GetHTML(int deep = 0)
        {
            Childs.Clear();
            div input_group_prepend = new div();

            input_group_prepend.AddCSS("input-group-prepend");
            using (div input_group_text = new div()
            {
                InnerText = LabelText
            })
            {
                input_group_text.AddCSS("input-group-text");
                input_group_prepend.Childs.Add(input_group_text);
            }
            Childs.Add(input_group_prepend);
            Childs.Add(Input);

            if (Input.required)
            {
                Childs.AddRange(GetValidationAlerts(Input.Name));
            }

            return(base.GetHTML(deep));
        }
        /// <summary>
        /// Получить форму регистрации/авторизации
        /// </summary>
        /// <param name="user_login_input_id">html dom id/name - идентификатор/имя input-a ввода логина</param>
        /// <param name="user_password_input_id">html dom id/name - идентификатор/имя input-a ввода пароля</param>
        /// <param name="user_password_repeat_input_id">html dom id/name - идентификатор/имя input-a ввода повтора пороля</param>
        /// <param name="reg_new_user_chekbox_id">html dom id/name - идентификатор/имя chekbox-a для регистрации нового пользователя</param>
        /// <param name="button_send_login_form_id">html dom id/name - идентификатор/имя button-a </param>
        /// <param name="re_captcha_key">api - ключ reCaptcha</param>
        /// <param name="collapse_info_new_user_input_css">css класс - области сворачивания и разворачивания для регистрации</param>
        /// <returns></returns>
        public static List <base_dom_root> GetLoginForm(
            string re_captcha_key                   = null,
            string user_password_input_id           = "user_password_input_id",
            string user_password_repeat_input_id    = "user_password_repeat_input_id",
            string user_login_input_id              = "user_login_input_id",
            string reg_new_user_chekbox_id          = "reg_new_user_chekbox_id",
            string button_send_login_form_id        = "button_send_login_form_id",
            string collapse_info_new_user_input_css = "collapse_info_new_user_input")
        {
            List <base_dom_root> dom_elements = new List <base_dom_root>();

            form html_response = new form()
            {
                Id_DOM      = "login_form_id",
                target      = TargetsEnum._self,
                method_form = MethodsFormEnum.POST
            };

            html_response.AddCSS("was-validated");
            html_response.SetAttribute("novalidate", null);

            TextInput textInput = new TextInput("Ваш логин", user_login_input_id)
            {
                InputInfoFooter = "Введите логин для входа"
            };

            textInput.Input.placeholder = "Логин";
            textInput.Input.required    = true;
            html_response.AddDomNode(textInput);

            textInput = new TextInput("Ваш пароль", user_password_input_id)
            {
                InputInfoFooter = "Пароль для входа"
            };
            textInput.Input.type        = InputTypesEnum.password;
            textInput.Input.placeholder = "Пароль";
            html_response.AddDomNode(textInput);

            textInput = new TextInput("Повторите пароль", user_password_repeat_input_id)
            {
                InputInfoFooter = "Повторно введите пароль"
            };
            textInput.Input.type        = InputTypesEnum.password;
            textInput.Input.placeholder = "Повтор";

            textInput.AddCSS("panel-collapse collapse " + collapse_info_new_user_input_css, true);
            html_response.AddDomNode(textInput);

            html_response.Childs[html_response.Childs.Count - 1].AddCSS("panel-collapse collapse " + collapse_info_new_user_input_css, true);

            html_response.Childs.Add(new CheckboxInput("Зарегистрироваться", reg_new_user_chekbox_id));

            p reg_new_user_info = new p("");

            reg_new_user_info.AddCSS("clearfix");
            using (ul panel_collapse = new ul())
            {
                panel_collapse.AddCSS("panel-collapse collapse " + collapse_info_new_user_input_css, true);
                reg_new_user_info.Childs.Add(panel_collapse);
            }

            reg_new_user_info.Childs[0].Childs.Add(new li()
            {
                InnerText = "Придумайте/запомните надёжный логин/пароль и входите"
            });
            reg_new_user_info.Childs[0].Childs.Add(new li()
            {
                InnerText = "Учётная запись будет создана автоматически"
            });

            html_response.Childs.Add(reg_new_user_info);
            if (!string.IsNullOrEmpty(re_captcha_key))
            {
                html_response.Childs.Add(new hr());
                html_response.Childs.Add(new h4("Пройдите проверку reCAPTCHA"));
                div sitekey = new div();
                sitekey.AddCSS("g-recaptcha");
                sitekey.SetAttribute("data-size", "compact");
                sitekey.SetAttribute("data-sitekey", re_captcha_key);
                html_response.Childs.Add(sitekey);
            }
            html_response.Childs.Add(GetButton("Войти", button_send_login_form_id, null, VisualBootstrapStylesEnum.primary, SizingBootstrap.Lg, true));

            dom_elements.Add(Get_DIV_Bootstrap_Card("Вход/Регистрация", html_response));
            return(dom_elements);
        }
        /// <summary>
        /// Сформировать модальное окно
        /// </summary>
        /// <param name="title">Заголовок модального окна</param>
        /// <param name="text_ok_button">Текст конопки Ok (если null or empty), то кнопка не выводится вовсе</param>
        /// <param name="id_ok_button">ID атрибут конопки Ok</param>
        /// <param name="text_cansel_button">Текст конопки Cancel (если null or empty), то кнопка не выводится вовсе</param>
        /// <param name="body_html">Тело модального окна</param>
        /// <param name="id_modal_dialog">ID атрибут модального окна</param>
        public static div GetModalDialog(string title, string text_ok_button, string text_cansel_button, base_dom_root body_html, string id_modal_dialog = "exampleModal", string id_ok_button = "button_try_write")
        {
            span span_close_modal_header = new span("&times;");

            span_close_modal_header.SetAttribute("aria-hidden", "true");
            //
            button button_close_modal_header = new button(null);

            button_close_modal_header.AddCSS("close");
            button_close_modal_header.SetAttribute("data-dismiss", "modal");
            button_close_modal_header.SetAttribute("aria-label", "Close");
            button_close_modal_header.AddDomNode(span_close_modal_header);
            //
            h5 h5_modal_header = new h5(title);

            h5_modal_header.AddCSS("modal-title");
            div div_modal_header = new div();

            div_modal_header.AddCSS("modal-header");
            div_modal_header.AddDomNode(h5_modal_header);
            div_modal_header.AddDomNode(button_close_modal_header);
            //
            div modal_footer = new div();

            modal_footer.AddCSS("modal-footer");
            if (!string.IsNullOrEmpty(text_cansel_button))
            {
                button button_close_modal_footer = GetButton(text_cansel_button, null, null, VisualBootstrapStylesEnum.secondary);
                button_close_modal_footer.SetAttribute("data-dismiss", "modal");
                modal_footer.AddDomNode(button_close_modal_footer);
            }

            if (!string.IsNullOrEmpty(text_ok_button))
            {
                button button_send_modal_footer = GetButton(text_ok_button, null, "#", VisualBootstrapStylesEnum.primary);
                button_send_modal_footer.Id_DOM = id_ok_button;
                modal_footer.AddDomNode(button_send_modal_footer);
            }
            //
            div modal_content = new div();

            modal_content.AddCSS("modal-content");
            modal_content.AddDomNode(div_modal_header);
            //
            div modal_body = new div();

            modal_body.AddCSS("modal-body");
            modal_body.AddDomNode(body_html);
            modal_content.AddDomNode(modal_body);
            //
            modal_content.AddDomNode(modal_footer);
            //
            div modal_dialog_document = new div();

            modal_dialog_document.AddCSS("modal-dialog");

            modal_dialog_document.CustomAttributes.Add("role", "document");
            modal_dialog_document.AddDomNode(modal_content);
            //
            div ModalDialog = new div()
            {
                Id_DOM = id_modal_dialog
            };

            ModalDialog.AddCSS("modal fade", true);
            ModalDialog.CustomAttributes.Add("tabindex", "-1");
            ModalDialog.CustomAttributes.Add("role", "dialog");
            ModalDialog.CustomAttributes.Add("aria-labelledby", id_modal_dialog);
            ModalDialog.CustomAttributes.Add("aria-hidden", "true");

            ModalDialog.AddDomNode(modal_dialog_document);
            ModalDialog.before_coment_block = "Modal dialog";
            return(ModalDialog);
        }