From 4e6861e89b9858430fc416da8adc4a139c961576 Mon Sep 17 00:00:00 2001
From: David Sehnal <david.sehnal@gmail.com>
Date: Mon, 26 Nov 2018 13:07:12 +0100
Subject: [PATCH] ParamDefinition.Group.isFlat support

---
 src/mol-plugin/state/actions/basic.ts     | 8 ++++----
 src/mol-plugin/ui/controls/parameters.tsx | 8 +++++++-
 src/mol-util/param-definition.ts          | 6 ++++--
 3 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/mol-plugin/state/actions/basic.ts b/src/mol-plugin/state/actions/basic.ts
index e9607ca09..92da1e4c6 100644
--- a/src/mol-plugin/state/actions/basic.ts
+++ b/src/mol-plugin/state/actions/basic.ts
@@ -30,20 +30,20 @@ const DownloadStructure = StateAction.build({
             'pdbe-updated': PD.Group({
                 id: PD.Text('1cbs', { label: 'Id' }),
                 supportProps: PD.Boolean(false)
-            }, { isExpanded: true }),
+            }, { isFlat: true }),
             'rcsb': PD.Group({
                 id: PD.Text('1tqn', { label: 'Id' }),
                 supportProps: PD.Boolean(false)
-            }, { isExpanded: true }),
+            }, { isFlat: true }),
             'bcif-static': PD.Group({
                 id: PD.Text('1tqn', { label: 'Id' }),
                 supportProps: PD.Boolean(false)
-            }, { isExpanded: true }),
+            }, { isFlat: true }),
             'url': PD.Group({
                 url: PD.Text(''),
                 isBinary: PD.Boolean(false),
                 supportProps: PD.Boolean(false)
-            }, { isExpanded: true })
+            }, { isFlat: true })
         }, {
             options: [
                 ['pdbe-updated', 'PDBe Updated'],
diff --git a/src/mol-plugin/ui/controls/parameters.tsx b/src/mol-plugin/ui/controls/parameters.tsx
index bfaff131f..b1a8775dd 100644
--- a/src/mol-plugin/ui/controls/parameters.tsx
+++ b/src/mol-plugin/ui/controls/parameters.tsx
@@ -284,6 +284,12 @@ export class GroupControl extends React.PureComponent<ParamProps<PD.Group<any>>,
         const params = this.props.param.params;
         const label = this.props.param.label || camelCaseToWords(this.props.name);
 
+        const controls = <ParameterControls params={params} onChange={this.onChangeParam} values={this.props.value} onEnter={this.props.onEnter} isDisabled={this.props.isDisabled} />;
+
+        if (this.props.param.isFlat) {
+            return controls;
+        }
+
         return <div className='msp-control-group-wrapper'>
             <div className='msp-control-group-header'>
                 <button className='msp-btn msp-btn-block' onClick={this.toggleExpanded}>
@@ -292,7 +298,7 @@ export class GroupControl extends React.PureComponent<ParamProps<PD.Group<any>>,
                 </button>
             </div>
             {this.state.isExpanded && <div className='msp-control-offset' style={{ display: this.state.isExpanded ? 'block' : 'none' }}>
-                <ParameterControls params={params} onChange={this.onChangeParam} values={this.props.value} onEnter={this.props.onEnter} isDisabled={this.props.isDisabled} />
+                {controls}
             </div>
             }
         </div>
diff --git a/src/mol-util/param-definition.ts b/src/mol-util/param-definition.ts
index 403fa6136..b618052cf 100644
--- a/src/mol-util/param-definition.ts
+++ b/src/mol-util/param-definition.ts
@@ -141,11 +141,13 @@ export namespace ParamDefinition {
     export interface Group<T> extends Base<T> {
         type: 'group',
         params: Params,
-        isExpanded?: boolean
+        isExpanded?: boolean,
+        isFlat?: boolean
     }
-    export function Group<P extends Params>(params: P, info?: Info & { isExpanded?: boolean }): Group<Values<P>> {
+    export function Group<P extends Params>(params: P, info?: Info & { isExpanded?: boolean, isFlat?: boolean }): Group<Values<P>> {
         const ret = setInfo<Group<Values<P>>>({ type: 'group', defaultValue: getDefaultValues(params) as any, params }, info);
         if (info && info.isExpanded) ret.isExpanded = info.isExpanded;
+        if (info && info.isFlat) ret.isFlat = info.isFlat;
         return ret;
     }
 
-- 
GitLab