Loading editor/widgets/container/container.cpp +14 −5 Changes for editor/widgets/container/container.cpp: 14 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -341,7 +341,7 @@ extern "C" { addSpacingBox("margin", "Margin", "desktop"); addField("vertical_align", "Vertical Align", "select", nullptr, "desktop", mkOpts({"top","center","bottom"})); addField("shape_divider_type", "Shape Divider", "select", nullptr, "desktop", mkOpts({"none","wave","oval"}), "simple"); addField("shape_divider_position", "Shape Divider Position", "select", nullptr, "desktop", mkOpts({"bottom","top"}), "simple"); addField("shape_divider_position", "Shape Divider Position", "select", nullptr, "desktop", mkOpts({"bottom","top","both"}), "simple"); addField("shape_divider_color", "Shape Divider Color", "color_var", nullptr, "desktop", nullptr, "simple"); addField("shape_divider_height", "Shape Divider Height", "text", "80px", "desktop"); addField("shape_divider_flip", "Shape Divider Flip", "checkbox", nullptr, "desktop", nullptr, "simple"); Loading Loading @@ -1145,7 +1145,7 @@ extern "C" { cnt.setAttribute("class", cls.c_str()); // Shape divider: a decorative wave/oval SVG pinned to the // container's top or bottom edge (see member field comment). // container's top and/or bottom edge (see member field comment). if (hasShapeDivider) { std::string path; if (shapeDividerType == "wave") { Loading @@ -1156,17 +1156,18 @@ extern "C" { path = "M0,0Q600,100,1200,0V120H0Z"; } auto emitDivider = [&](const std::string &pos) { std::string dividerStyle = "position: absolute; left: 0; width: 100%; max-height: 100%; overflow: hidden;" " line-height: 0; pointer-events: none;"; dividerStyle += (shapeDividerPosition == "top") ? " top: 0;" : " bottom: 0;"; dividerStyle += (pos == "top") ? " top: 0;" : " bottom: 0;"; if (!shapeDividerHeight.empty()) dividerStyle += " height: " + shapeDividerHeight + ";"; std::string transform; if (shapeDividerPosition == "top") transform += "rotate(180deg) "; if (pos == "top") transform += "rotate(180deg) "; if (shapeDividerFlip) transform += "scaleX(-1) "; if (!transform.empty()) dividerStyle += " transform: " + transform + ";"; libhtmlpp::HtmlElement dividerWrap("div"); dividerWrap.setAttribute("class", (responsiveClass + "-shape-divider").c_str()); dividerWrap.setAttribute("class", (responsiveClass + "-shape-divider-" + pos).c_str()); dividerWrap.setAttribute("style", dividerStyle.c_str()); libhtmlpp::HtmlElement svg("svg"); Loading @@ -1182,6 +1183,14 @@ extern "C" { svg.appendChild(svgPath); dividerWrap.appendChild(svg); cnt.appendChild(dividerWrap); }; if (shapeDividerPosition == "both") { emitDivider("top"); emitDivider("bottom"); } else { emitDivider(shapeDividerPosition == "top" ? "top" : "bottom"); } } // Mobile responsive overrides via media query Loading editor/widgets/section/section.cpp +14 −5 Changes for editor/widgets/section/section.cpp: 14 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -251,7 +251,7 @@ extern "C" { addField("opacity", "Opacity", "text", "0.0 - 1.0", "desktop"); addField("vertical_align", "Vertical Align", "select", nullptr, "desktop", mkOpts({"top","center","bottom"})); addField("shape_divider_type", "Shape Divider", "select", nullptr, "desktop", mkOpts({"none","wave","oval"}), "simple"); addField("shape_divider_position", "Shape Divider Position", "select", nullptr, "desktop", mkOpts({"bottom","top"}), "simple"); addField("shape_divider_position", "Shape Divider Position", "select", nullptr, "desktop", mkOpts({"bottom","top","both"}), "simple"); addField("shape_divider_color", "Shape Divider Color", "color_var", nullptr, "desktop", nullptr, "simple"); addField("shape_divider_height", "Shape Divider Height", "text", "80px", "desktop"); addField("shape_divider_flip", "Shape Divider Flip", "checkbox", nullptr, "desktop", nullptr, "simple"); Loading Loading @@ -939,7 +939,7 @@ extern "C" { sect.setAttribute("class", cls.c_str()); // Shape divider: a decorative wave/oval SVG pinned to the // section's top or bottom edge (see member field comment). // section's top and/or bottom edge (see member field comment). if (hasShapeDivider) { std::string path; if (shapeDividerType == "wave") { Loading @@ -950,17 +950,18 @@ extern "C" { path = "M0,0Q600,100,1200,0V120H0Z"; } auto emitDivider = [&](const std::string &pos) { std::string dividerStyle = "position: absolute; left: 0; width: 100%; max-height: 100%; overflow: hidden;" " line-height: 0; pointer-events: none;"; dividerStyle += (shapeDividerPosition == "top") ? " top: 0;" : " bottom: 0;"; dividerStyle += (pos == "top") ? " top: 0;" : " bottom: 0;"; if (!shapeDividerHeight.empty()) dividerStyle += " height: " + shapeDividerHeight + ";"; std::string transform; if (shapeDividerPosition == "top") transform += "rotate(180deg) "; if (pos == "top") transform += "rotate(180deg) "; if (shapeDividerFlip) transform += "scaleX(-1) "; if (!transform.empty()) dividerStyle += " transform: " + transform + ";"; libhtmlpp::HtmlElement dividerWrap("div"); dividerWrap.setAttribute("class", (responsiveClass + "-shape-divider").c_str()); dividerWrap.setAttribute("class", (responsiveClass + "-shape-divider-" + pos).c_str()); dividerWrap.setAttribute("style", dividerStyle.c_str()); libhtmlpp::HtmlElement svg("svg"); Loading @@ -976,6 +977,14 @@ extern "C" { svg.appendChild(svgPath); dividerWrap.appendChild(svg); sect.appendChild(dividerWrap); }; if (shapeDividerPosition == "both") { emitDivider("top"); emitDivider("bottom"); } else { emitDivider(shapeDividerPosition == "top" ? "top" : "bottom"); } } // Mobile responsive overrides via media query Loading Loading
editor/widgets/container/container.cpp +14 −5 Changes for editor/widgets/container/container.cpp: 14 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -341,7 +341,7 @@ extern "C" { addSpacingBox("margin", "Margin", "desktop"); addField("vertical_align", "Vertical Align", "select", nullptr, "desktop", mkOpts({"top","center","bottom"})); addField("shape_divider_type", "Shape Divider", "select", nullptr, "desktop", mkOpts({"none","wave","oval"}), "simple"); addField("shape_divider_position", "Shape Divider Position", "select", nullptr, "desktop", mkOpts({"bottom","top"}), "simple"); addField("shape_divider_position", "Shape Divider Position", "select", nullptr, "desktop", mkOpts({"bottom","top","both"}), "simple"); addField("shape_divider_color", "Shape Divider Color", "color_var", nullptr, "desktop", nullptr, "simple"); addField("shape_divider_height", "Shape Divider Height", "text", "80px", "desktop"); addField("shape_divider_flip", "Shape Divider Flip", "checkbox", nullptr, "desktop", nullptr, "simple"); Loading Loading @@ -1145,7 +1145,7 @@ extern "C" { cnt.setAttribute("class", cls.c_str()); // Shape divider: a decorative wave/oval SVG pinned to the // container's top or bottom edge (see member field comment). // container's top and/or bottom edge (see member field comment). if (hasShapeDivider) { std::string path; if (shapeDividerType == "wave") { Loading @@ -1156,17 +1156,18 @@ extern "C" { path = "M0,0Q600,100,1200,0V120H0Z"; } auto emitDivider = [&](const std::string &pos) { std::string dividerStyle = "position: absolute; left: 0; width: 100%; max-height: 100%; overflow: hidden;" " line-height: 0; pointer-events: none;"; dividerStyle += (shapeDividerPosition == "top") ? " top: 0;" : " bottom: 0;"; dividerStyle += (pos == "top") ? " top: 0;" : " bottom: 0;"; if (!shapeDividerHeight.empty()) dividerStyle += " height: " + shapeDividerHeight + ";"; std::string transform; if (shapeDividerPosition == "top") transform += "rotate(180deg) "; if (pos == "top") transform += "rotate(180deg) "; if (shapeDividerFlip) transform += "scaleX(-1) "; if (!transform.empty()) dividerStyle += " transform: " + transform + ";"; libhtmlpp::HtmlElement dividerWrap("div"); dividerWrap.setAttribute("class", (responsiveClass + "-shape-divider").c_str()); dividerWrap.setAttribute("class", (responsiveClass + "-shape-divider-" + pos).c_str()); dividerWrap.setAttribute("style", dividerStyle.c_str()); libhtmlpp::HtmlElement svg("svg"); Loading @@ -1182,6 +1183,14 @@ extern "C" { svg.appendChild(svgPath); dividerWrap.appendChild(svg); cnt.appendChild(dividerWrap); }; if (shapeDividerPosition == "both") { emitDivider("top"); emitDivider("bottom"); } else { emitDivider(shapeDividerPosition == "top" ? "top" : "bottom"); } } // Mobile responsive overrides via media query Loading
editor/widgets/section/section.cpp +14 −5 Changes for editor/widgets/section/section.cpp: 14 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -251,7 +251,7 @@ extern "C" { addField("opacity", "Opacity", "text", "0.0 - 1.0", "desktop"); addField("vertical_align", "Vertical Align", "select", nullptr, "desktop", mkOpts({"top","center","bottom"})); addField("shape_divider_type", "Shape Divider", "select", nullptr, "desktop", mkOpts({"none","wave","oval"}), "simple"); addField("shape_divider_position", "Shape Divider Position", "select", nullptr, "desktop", mkOpts({"bottom","top"}), "simple"); addField("shape_divider_position", "Shape Divider Position", "select", nullptr, "desktop", mkOpts({"bottom","top","both"}), "simple"); addField("shape_divider_color", "Shape Divider Color", "color_var", nullptr, "desktop", nullptr, "simple"); addField("shape_divider_height", "Shape Divider Height", "text", "80px", "desktop"); addField("shape_divider_flip", "Shape Divider Flip", "checkbox", nullptr, "desktop", nullptr, "simple"); Loading Loading @@ -939,7 +939,7 @@ extern "C" { sect.setAttribute("class", cls.c_str()); // Shape divider: a decorative wave/oval SVG pinned to the // section's top or bottom edge (see member field comment). // section's top and/or bottom edge (see member field comment). if (hasShapeDivider) { std::string path; if (shapeDividerType == "wave") { Loading @@ -950,17 +950,18 @@ extern "C" { path = "M0,0Q600,100,1200,0V120H0Z"; } auto emitDivider = [&](const std::string &pos) { std::string dividerStyle = "position: absolute; left: 0; width: 100%; max-height: 100%; overflow: hidden;" " line-height: 0; pointer-events: none;"; dividerStyle += (shapeDividerPosition == "top") ? " top: 0;" : " bottom: 0;"; dividerStyle += (pos == "top") ? " top: 0;" : " bottom: 0;"; if (!shapeDividerHeight.empty()) dividerStyle += " height: " + shapeDividerHeight + ";"; std::string transform; if (shapeDividerPosition == "top") transform += "rotate(180deg) "; if (pos == "top") transform += "rotate(180deg) "; if (shapeDividerFlip) transform += "scaleX(-1) "; if (!transform.empty()) dividerStyle += " transform: " + transform + ";"; libhtmlpp::HtmlElement dividerWrap("div"); dividerWrap.setAttribute("class", (responsiveClass + "-shape-divider").c_str()); dividerWrap.setAttribute("class", (responsiveClass + "-shape-divider-" + pos).c_str()); dividerWrap.setAttribute("style", dividerStyle.c_str()); libhtmlpp::HtmlElement svg("svg"); Loading @@ -976,6 +977,14 @@ extern "C" { svg.appendChild(svgPath); dividerWrap.appendChild(svg); sect.appendChild(dividerWrap); }; if (shapeDividerPosition == "both") { emitDivider("top"); emitDivider("bottom"); } else { emitDivider(shapeDividerPosition == "top" ? "top" : "bottom"); } } // Mobile responsive overrides via media query Loading