From 4beac9ed46ab49eaf68b6dda552258324e6f2a7c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr>
Date: Wed, 7 Dec 2022 15:48:45 +0100
Subject: [PATCH] [dome] icon & icon-button visibility & display

---
 ivette/src/dome/renderer/controls/icons.tsx | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/ivette/src/dome/renderer/controls/icons.tsx b/ivette/src/dome/renderer/controls/icons.tsx
index e35035d03d5..a6acd231e16 100644
--- a/ivette/src/dome/renderer/controls/icons.tsx
+++ b/ivette/src/dome/renderer/controls/icons.tsx
@@ -36,7 +36,7 @@
 
 import _ from 'lodash';
 import React from 'react';
-import { classes } from 'dome/misc/utils';
+import { classes, styles } from 'dome/misc/utils';
 import Gallery from './gallery.json';
 import './style.css';
 
@@ -84,7 +84,7 @@ export function SVG(props: SVGprops): null | JSX.Element {
       width={size}
       style={{ bottom: offset }}
       viewBox={viewBox}
-      className = {className}
+      className={className}
     >
       {title && <title>{title}</title>}
       <path d={path} fill={fill} />
@@ -100,6 +100,10 @@ export function SVG(props: SVGprops): null | JSX.Element {
 export interface IconProps extends SVGprops {
   /** Additional class name(s). */
   className?: string;
+  /** Display (default is true). */
+  display?: boolean;
+  /** Visibility (default is true). */
+  visible?: boolean;
   /** Additional DIV style. */
   style?: React.CSSProperties;
   /** Fill style property. */
@@ -115,10 +119,16 @@ export interface IconProps extends SVGprops {
 export function Icon(props: IconProps): JSX.Element {
   const {
     id, title, onClick, fill,
-    size, className = '', offset, style,
+    size, className, offset, style,
+    visible = true, display = true,
   } = props;
-  const divClass = classes('dome-xIcon', className);
-  const divStyle = fill ? { fill, ...style } : style;
+  const divClass = classes(
+    'dome-xIcon',
+    !visible && 'dome-control-hidden',
+    !display && 'dome-control-erased',
+    className
+  );
+  const divStyle = styles(fill && { fill }, style);
   return (
     <div
       className={divClass}
-- 
GitLab