PluginProbe
Smart Post – Post Grid, Post Carousel, Post Slider Gutenberg Blocks for Blog & News / 4.0.8
Smart Post – Post Grid, Post Carousel, Post Slider Gutenberg Blocks for Blog & News v4.0.8
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 4.0.2 4.0.1 2.3.5 2.3.6 2.4.0 2.4.1 2.4.10 2.4.11 2.4.12 2.4.13 2.4.14 2.4.15 2.4.16 2.4.17 2.4.18 2.4.19 2.4.2 2.4.20 2.4.21 All 88 releases
post-carousel / src / blocks / buttons / dynamicCss.js

dynamicCss.js in Smart Post – Post Grid, Post Carousel, Post Slider Gutenberg Blocks for Blog & News 4.0.8, at src/blocks/buttons/dynamicCss.js

94 lines 2.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { objectToCssString, spacingGenerate, wrapInMediaQuery } from "../shared/helpFn";
2
3 const cacheCss = { desktop: "", mobile: "", tablet: "" };
4
5 // eslint-disable-next-line no-unused-vars
6 const dynamicCss = (attributes, page = "frontend", currentDevice = "all") => {
7 const {
8 uniqueId,
9 buttonGap,
10 buttonsMargin,
11 buttonsHorizontalAlignment,
12 fullWidthBtnEnable,
13 buttonsAlignment,
14 buttonsVerticalAlignment,
15 globalBreakPointData,
16 } = attributes;
17
18 const rangerCss = (attr, device = "Desktop") => {
19 const _unit = attr?.unit?.[device] || "";
20 return `${attr?.device?.[device]}${_unit}`;
21 };
22
23 const desktopCss = [
24 {
25 class: `#${uniqueId} .block-editor-block-list__layout, #${uniqueId}.sp-smart-post-buttons-front-page`,
26 styles: {
27 display: "flex",
28 "flex-wrap": "wrap",
29 "flex-direction": `${buttonsAlignment === "horizontal" ? "row" : "column"}`,
30 gap: rangerCss(buttonGap),
31 margin: spacingGenerate(buttonsMargin, "Desktop"),
32 "justify-content": `${fullWidthBtnEnable ? "" : buttonsHorizontalAlignment}`,
33 "align-items": `${fullWidthBtnEnable ? "" : buttonsVerticalAlignment}`,
34 },
35 },
36
37 {
38 class: `#${uniqueId} .block-editor-block-list__layout > * , #${uniqueId}.sp-smart-post-buttons-front-page .wp-block-sp-smart-post-show-button`,
39 styles: {
40 flex: `${fullWidthBtnEnable ? "1" : " "} `,
41 },
42 },
43 {
44 class: `#${uniqueId} .block-editor-block-list__layout .sp-smart-post-btn, #${uniqueId}.sp-smart-post-buttons-front-page .sp-smart-post-btn`,
45 styles: {
46 display: `${fullWidthBtnEnable ? "flex" : "inline-flex"} `,
47 width: `${fullWidthBtnEnable ? "100%" : "auto"} `,
48 "justify-content": `${fullWidthBtnEnable ? "center" : "center"} `,
49 "align-items": `${fullWidthBtnEnable ? "center" : "center"} `,
50 },
51 },
52 ];
53
54 cacheCss.desktop = objectToCssString(desktopCss);
55
56 if ("Tablet" === currentDevice || "all" === currentDevice) {
57 // Tablet CSS styles.
58 const tabletCss = [
59 {
60 class: `#${uniqueId} .block-editor-block-list__layout, #${uniqueId}.sp-smart-post-buttons-front-page`,
61 styles: {
62 gap: rangerCss(buttonGap, "Tablet"),
63 margin: spacingGenerate(buttonsMargin, "Tablet"),
64 },
65 },
66 ];
67
68 cacheCss.tablet = wrapInMediaQuery(
69 objectToCssString(tabletCss),
70 `only screen and (max-width: ${globalBreakPointData?.tablet}px)`
71 );
72 }
73 if ("Mobile" === currentDevice || "all" === currentDevice) {
74 // Mobile CSS styles.
75 const mobileCss = [
76 {
77 class: `#${uniqueId} .block-editor-block-list__layout, #${uniqueId}.sp-smart-post-buttons-front-page`,
78 styles: {
79 gap: rangerCss(buttonGap, "Mobile"),
80 margin: spacingGenerate(buttonsMargin, "Mobile"),
81 },
82 },
83 ];
84 cacheCss.mobile = wrapInMediaQuery(
85 objectToCssString(mobileCss),
86 `only screen and (max-width: ${globalBreakPointData?.mobile}px)`
87 );
88 }
89
90 return `${cacheCss.desktop} ${cacheCss.tablet} ${cacheCss.mobile}`;
91 };
92
93 export default dynamicCss;
94