]> git.immae.eu Git - github/bastienwirtz/homer.git/blobdiff - src/components/services/Generic.vue
fix: resolve typo in Healthchecks service name
[github/bastienwirtz/homer.git] / src / components / services / Generic.vue
index 3238eadbe047a07c64b709feba912f3aa4cec4b3..af65a8c6ad8580f496906b53891e47035b58afca 100644 (file)
@@ -1,16 +1,3 @@
-<script>
-export default {};
-</script>
-
-<style></style>
-*/
-
-<script>
-export default {};
-</script>
-
-<style></style>
-
 <template>
   <div>
     <div
@@ -20,21 +7,28 @@ export default {};
     >
       <a :href="item.url" :target="item.target" rel="noreferrer">
         <div class="card-content">
-          <div class="media">
-            <div v-if="item.logo" class="media-left">
-              <figure class="image is-48x48">
-                <img :src="item.logo" :alt="`${item.name} logo`" />
-              </figure>
-            </div>
-            <div v-if="item.icon" class="media-left">
-              <figure class="image is-48x48">
-                <i style="font-size: 35px" :class="['fa-fw', item.icon]"></i>
-              </figure>
-            </div>
+          <div :class="mediaClass">
+            <slot name="icon">
+              <div v-if="item.logo" class="media-left">
+                <figure class="image is-48x48">
+                  <img :src="item.logo" :alt="`${item.name} logo`" />
+                </figure>
+              </div>
+              <div v-if="item.icon" class="media-left">
+                <figure class="image is-48x48">
+                  <i style="font-size: 35px" :class="['fa-fw', item.icon]"></i>
+                </figure>
+              </div>
+            </slot>
             <div class="media-content">
-              <p class="title is-4">{{ item.name }}</p>
-              <p class="subtitle is-6">{{ item.subtitle }}</p>
+              <slot name="content">
+                <p class="title is-4">{{ item.name }}</p>
+                <p class="subtitle is-6" v-if="item.subtitle">
+                  {{ item.subtitle }}
+                </p>
+              </slot>
             </div>
+            <slot name="indicator" class="indicator"></slot>
           </div>
           <div class="tag" :class="item.tagstyle" v-if="item.tag">
             <strong class="tag-text">#{{ item.tag }}</strong>
@@ -51,11 +45,23 @@ export default {
   props: {
     item: Object,
   },
+  computed: {
+    mediaClass: function () {
+      return { media: true, "no-subtitle": !this.item.subtitle };
+    },
+  },
 };
 </script>
 
 <style scoped lang="scss">
-.media-left img {
-  max-height: 100%;
+.media-left {
+  .image {
+    display: flex;
+    align-items: center;
+  }
+
+  img {
+    max-height: 100%;
+  }
 }
 </style>