diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index 04f9e883..dfed996e 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -366,6 +366,14 @@ export function cleanServiceGroups(groups) { firstDayInWeek, view, maxEvents, + src, + sizes, + referrerPolicy, + allowPolicy, + allowFullscreen, + loadingStrategy, + allowScrolling, + border } = cleanedService.widget; let fieldsList = fields; @@ -413,6 +421,17 @@ export function cleanServiceGroups(groups) { if (app) cleanedService.widget.app = app; if (podSelector) cleanedService.widget.podSelector = podSelector; } + if (type === "iframe") { + if (src) cleanedService.widget.src = src + if (src) cleanedService.widget.sizes = sizes + if (src) cleanedService.widget.referrerPolicy = referrerPolicy + if (src) cleanedService.widget.allowPolicy = allowPolicy + if (src) cleanedService.widget.allowFullscreen = allowFullscreen + if (src) cleanedService.widget.loadingStrategy = loadingStrategy + if (src) cleanedService.widget.allowScrolling = allowScrolling + if (src) cleanedService.widget.border = border + if (src) cleanedService.widget.refreshInterval = refreshInterval + } if (["opnsense", "pfsense"].includes(type)) { if (wan) cleanedService.widget.wan = wan; } diff --git a/src/widgets/components.js b/src/widgets/components.js index 9d311b97..99da81ea 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -15,6 +15,7 @@ const components = { channelsdvrserver: dynamic(() => import("./channelsdvrserver/component")), cloudflared: dynamic(() => import("./cloudflared/component")), coinmarketcap: dynamic(() => import("./coinmarketcap/component")), + iframe: dynamic(() => import("./iframe/component")), customapi: dynamic(() => import("./customapi/component")), deluge: dynamic(() => import("./deluge/component")), diskstation: dynamic(() => import("./diskstation/component")), diff --git a/src/widgets/iframe/component.jsx b/src/widgets/iframe/component.jsx new file mode 100644 index 00000000..9f2551ed --- /dev/null +++ b/src/widgets/iframe/component.jsx @@ -0,0 +1,43 @@ +import { useState, useEffect } from "react"; + +import Block from "./components/block"; + +import Container from "components/services/widget/container"; + +export default function Component({ service }) { + const [refreshTimer, setRefreshTimer] = useState(0); + + const { widget } = service; + useEffect(() => { + const refreshInterval = setInterval( + () => {setRefreshTimer(refreshTimer + 1)}, + widget?.refreshInterval + ); + return () => clearInterval(refreshInterval) + }, [refreshTimer]); + + const scrollingDisableStyle = widget.scrolling + ? "pointer-events:none; overflow: hidden;" + : ""; + + return ( + + +