From bc8c35efff4659485aae1057b5397beaab67e7e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Kohlschu=CC=88tter?= Date: Tue, 7 May 2024 01:51:14 +0200 Subject: [PATCH] extensions: Add PlaceholdersExtension --- .../placeholders/PlaceholdersExtension.java | 29 +++++++++++++++++++ .../placeholders/webapp/css/placeholders.css | 7 +++++ .../placeholders/webapp/js/placeholders.js | 6 ++++ 3 files changed, 42 insertions(+) create mode 100644 dumbo-extensions/src/main/java/com/kohlschutter/dumbo/placeholders/PlaceholdersExtension.java create mode 100644 dumbo-extensions/src/main/resources/com/kohlschutter/dumbo/placeholders/webapp/css/placeholders.css create mode 100644 dumbo-extensions/src/main/resources/com/kohlschutter/dumbo/placeholders/webapp/js/placeholders.js diff --git a/dumbo-extensions/src/main/java/com/kohlschutter/dumbo/placeholders/PlaceholdersExtension.java b/dumbo-extensions/src/main/java/com/kohlschutter/dumbo/placeholders/PlaceholdersExtension.java new file mode 100644 index 0000000..73cca5a --- /dev/null +++ b/dumbo-extensions/src/main/java/com/kohlschutter/dumbo/placeholders/PlaceholdersExtension.java @@ -0,0 +1,29 @@ +/* + * Copyright 2022,2023 Christian Kohlschütter + * Copyright 2014,2015 Evernote Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.kohlschutter.dumbo.placeholders; + +import com.kohlschutter.dumbo.annotations.CSSResource; +import com.kohlschutter.dumbo.annotations.JavaScriptResource; +import com.kohlschutter.dumbo.api.DumboComponent; + +/** + * Improves handling of placeholder resources + */ +@CSSResource(value = "css/placeholders.css", group = "dumbo") +@JavaScriptResource(value = "js/placeholders.js", group = "dumbo", async = true) +public interface PlaceholdersExtension extends DumboComponent { +} diff --git a/dumbo-extensions/src/main/resources/com/kohlschutter/dumbo/placeholders/webapp/css/placeholders.css b/dumbo-extensions/src/main/resources/com/kohlschutter/dumbo/placeholders/webapp/css/placeholders.css new file mode 100644 index 0000000..29823cf --- /dev/null +++ b/dumbo-extensions/src/main/resources/com/kohlschutter/dumbo/placeholders/webapp/css/placeholders.css @@ -0,0 +1,7 @@ +BODY:not([class*=dumbo-ready]) .dumbo-placeholder { + opacity: 0; +} + +BODY[class*=dumbo-ready]:not([class*=static-design-mode]) .dumbo-placeholder { + transition: opacity 0.33s ease-in; +} diff --git a/dumbo-extensions/src/main/resources/com/kohlschutter/dumbo/placeholders/webapp/js/placeholders.js b/dumbo-extensions/src/main/resources/com/kohlschutter/dumbo/placeholders/webapp/js/placeholders.js new file mode 100644 index 0000000..4871ffc --- /dev/null +++ b/dumbo-extensions/src/main/resources/com/kohlschutter/dumbo/placeholders/webapp/js/placeholders.js @@ -0,0 +1,6 @@ +Dumbo.whenReady(function() { + setTimeout(() => document.body.classList.add("dumbo-ready"), 0); +}); +Dumbo.whenStatic(function() { + document.body.classList.add("dumbo-ready"); +});