diff --git a/dev/js/src/plugin/widget.js b/dev/js/src/plugin/widget.js
index 707f5f0..25bc6cc 100644
--- a/dev/js/src/plugin/widget.js
+++ b/dev/js/src/plugin/widget.js
@@ -31,10 +31,14 @@
      */
     show : function () {
 
-      if (this._load)
+      if (this._load) {
+        if (this._element)
+          this._element.classList.add('show');
         return this._load;
+      }
 
       let obj = this.load();
+      this._load.classList.add("widget", "show");
       obj.setAttribute('loading', 'lazy');
 
       // Per default there should at least be a button
diff --git a/dev/js/src/view.js b/dev/js/src/view.js
index 7243837..27d1ab2 100644
--- a/dev/js/src/view.js
+++ b/dev/js/src/view.js
@@ -36,19 +36,20 @@
       return this;
     },
 
-    
     /**
      * Element of the view
      */
     element : function () {
-      if (this._element)
+      if (this._element) {
+        this._element.classList.add('show');
         return this._element;
+      };
 
       // Create panel element
       var e = document.createElement('div');
 
       var cl = e.classList;
-      cl.add('view');
+      cl.add('view', 'show');
       if (this._classes)
         cl.add.apply(cl, this._classes);
 
@@ -67,6 +68,7 @@
       e.appendChild(this.actions.element());
 
       this._element = e;
+
       return e;
     },
 
@@ -78,6 +80,16 @@
       return this._shown;
     },
 
+    
+    /**
+     * Hide the widget if shown.
+     */
+    minimize : function () {
+      if (this._element) {
+        this._element.classList.remove("show");
+      }
+    },
+
     // onClose : function () {},
 
     /**
