From 79fd4c895d638fa36428560816811df3dd137456 Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Thu, 9 Sep 2021 14:45:51 +0300 Subject: [PATCH] Using css module for Signed-off-by: Alex Andreev --- .../components/layout/sidebar.module.css | 55 ++++++++++++++ src/renderer/components/layout/sidebar.scss | 75 ------------------- src/renderer/components/layout/sidebar.tsx | 10 +-- 3 files changed, 60 insertions(+), 80 deletions(-) create mode 100644 src/renderer/components/layout/sidebar.module.css delete mode 100644 src/renderer/components/layout/sidebar.scss diff --git a/src/renderer/components/layout/sidebar.module.css b/src/renderer/components/layout/sidebar.module.css new file mode 100644 index 0000000000..a42d643fc5 --- /dev/null +++ b/src/renderer/components/layout/sidebar.module.css @@ -0,0 +1,55 @@ +/** + * Copyright (c) 2021 OpenLens Authors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +.sidebarNav { + @apply flex overflow-auto flex-col; + width: var(--sidebar-width); + padding-bottom: calc(var(--padding) * 3); + + /* Shadow above scrolling content from https://gist.github.com/distinctgrey/7548778 */ + background: + linear-gradient(var(--sidebarBackground) 30%, rgba(255,255,255,0)), + linear-gradient(rgba(255,255,255,0), var(--sidebarBackground) 70%) 0 100%, + radial-gradient(farthest-side at 50% 0, rgba(0,0,0,.2), rgba(0,0,0,0)), + radial-gradient(farthest-side at 50% 100%, rgba(0,0,0,.2), rgba(0,0,0,0)) 0 100%; + background-repeat: no-repeat; + background-size: 100% 40px, 100% 40px, 100% 12px, 100% 12px; + background-attachment: local, local, scroll, scroll; +} + +.sidebarNav :global(.Icon) { + box-sizing: content-box; + padding: 3px; + border-radius: 50%; +} + +.cluster { + @apply flex items-center m-5; +} + +.clusterName { + @apply break-words font-bold overflow-hidden; + color: var(--textColorAccent); + display: -webkit-box; + /* Simulate text-overflow:ellipsis styles but for multiple text lines */ + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; +} \ No newline at end of file diff --git a/src/renderer/components/layout/sidebar.scss b/src/renderer/components/layout/sidebar.scss deleted file mode 100644 index 407d2f5f93..0000000000 --- a/src/renderer/components/layout/sidebar.scss +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright (c) 2021 OpenLens Authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -.Sidebar { - $iconSize: 24px; - $itemSpacing: floor($unit / 2.6) floor($unit / 1.6); - - .sidebar-nav { - width: var(--sidebar-width); - padding-bottom: calc(var(--padding) * 3); - overflow: auto; - - /* Shadow above scrolling content from https://gist.github.com/distinctgrey/7548778 */ - background: - linear-gradient(var(--sidebarBackground) 30%, rgba(255,255,255,0)), - linear-gradient(rgba(255,255,255,0), var(--sidebarBackground) 70%) 0 100%, - radial-gradient(farthest-side at 50% 0, rgba(0,0,0,.2), rgba(0,0,0,0)), - radial-gradient(farthest-side at 50% 100%, rgba(0,0,0,.2), rgba(0,0,0,0)) 0 100%; - background-repeat: no-repeat; - background-size: 100% 40px, 100% 40px, 100% 12px, 100% 12px; - background-attachment: local, local, scroll, scroll; - - .Icon { - --size: #{$iconSize}; - - box-sizing: content-box; - padding: floor($padding / 2.6); - border-radius: 50%; - } - - hr { - background-color: transparent; - } - } - - .loading { - padding: $padding; - text-align: center; - } - - .cluster-description { - display: flex; - align-items: center; - padding: 1.25rem; - } - - .cluster-name { - word-break: break-word; - font-weight: bold; - color: var(--textColorAccent); - display: -webkit-box; - /* Simulate text-overflow:ellipsis styles but for multiple text lines */ - -webkit-line-clamp: 3; - -webkit-box-orient: vertical; - overflow: hidden; - } -} diff --git a/src/renderer/components/layout/sidebar.tsx b/src/renderer/components/layout/sidebar.tsx index 3d0b0c03c7..1179dd49b9 100644 --- a/src/renderer/components/layout/sidebar.tsx +++ b/src/renderer/components/layout/sidebar.tsx @@ -19,7 +19,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import "./sidebar.scss"; +import styles from "./sidebar.module.css"; import type { TabLayoutRoute } from "./tab-layout"; import React from "react"; @@ -186,9 +186,9 @@ export class Sidebar extends React.Component { const { className } = this.props; return ( -
+
{this.clusterEntity && ( -
+
{ src={this.clusterEntity.spec.icon?.src} className="mr-5" /> -
+
{this.clusterEntity.metadata.name}
)} -
+