GUI: Cleanup menus
authorColeman Watts <coleman@civicrm.org>
Mon, 18 Nov 2019 13:22:37 +0000 (08:22 -0500)
committerCiviCRM <info@civicrm.org>
Wed, 16 Sep 2020 02:13:20 +0000 (19:13 -0700)
ext/afform/gui/ang/afGuiEditor.css
ext/afform/gui/ang/afGuiEditor/block-menu.html [new file with mode: 0644]
ext/afform/gui/ang/afGuiEditor/block.html
ext/afform/gui/ang/afGuiEditor/button-menu.html [new file with mode: 0644]
ext/afform/gui/ang/afGuiEditor/button.html
ext/afform/gui/ang/afGuiEditor/field-menu.html [new file with mode: 0644]
ext/afform/gui/ang/afGuiEditor/field.html
ext/afform/gui/ang/afGuiEditor/text-menu.html [new file with mode: 0644]
ext/afform/gui/ang/afGuiEditor/text.html

index 057031a2ce83ea0ff84c708595eff7ed1eff11a6..2c215c37cf2f2a83466c79dd27bb0eb8d8f7aa64 100644 (file)
   left: -4px;
 }
 
-#afGuiEditor li a.af-gui-field-select-in-dropdown {
-  padding-top: 2px;
-  padding-bottom: 2px;
-  background-color: white !important;
+#afGuiEditor .dropdown-menu li {
   cursor: default;
 }
 
+#afGuiEditor .dropdown-menu li .af-gui-field-select-in-dropdown {
+  padding: 2px 19px 2px 21px;
+  clear: both;
+  font-weight: 400;
+  line-height: 1.5384615385;
+  color: #4d4d69;
+  white-space: nowrap;
+}
+
+#afGuiEditor .dropdown-menu li > * > label {
+  font-weight: normal;
+}
+
+#afGuiEditor .dropdown-menu li .af-gui-field-select-in-dropdown > select {
+  max-width: 120px;
+  padding-left: 5px;
+  padding-right: 5px;
+}
+
+/* For editing field placeholder text */
 #afGuiEditor .af-gui-field-input input[type=text].form-control {
   color: #9a9a9a;
 }
diff --git a/ext/afform/gui/ang/afGuiEditor/block-menu.html b/ext/afform/gui/ang/afGuiEditor/block-menu.html
new file mode 100644 (file)
index 0000000..f42066e
--- /dev/null
@@ -0,0 +1,5 @@
+<li><a href ng-click="addBlock('div.af-block')">{{ ts('Add block') }}</a></li>
+<li><a href ng-click="addBlock('p.af-text')">{{ ts('Add text box') }}</a></li>
+<li><a href ng-click="addBlock('button.af-button.btn-primary', {'crm-icon': 'fa-check', 'ng-click': 'modelListCtrl.submit()'})">{{ ts('Add button') }}</a></li>
+<li role="separator" class="divider"></li>
+<li><a href ng-click="block.removeBlock(node)"><span class="text-danger">{{ ts('Delete this block') }}</span></a></li>
index 72d916f761df1def049b7b06fbbfc2f92c3482e1..8fc03edcc4cb2354ca661b328372113af7a0fba3 100644 (file)
     <button type="button" class="btn btn-default btn-xs dropdown-toggle af-gui-add-block-button" data-toggle="dropdown" title="{{ ts('Add block') }}">
       <span><i class="crm-i fa-plus"></i></span>
     </button>
-    <ul class="dropdown-menu" ng-if="menu.open">
-      <li><a href ng-click="addBlock('div.af-block')">{{ ts('Add block') }}</a></li>
-      <li><a href ng-click="addBlock('p.af-text')">{{ ts('Add text box') }}</a></li>
-      <li><a href ng-click="addBlock('button.af-button.btn-primary', {'crm-icon': 'fa-check', 'ng-click': 'modelListCtrl.submit()'})">{{ ts('Add button') }}</a></li>
-      <li role="separator" class="divider"></li>
-      <li><a href ng-click="block.removeBlock(node)"><span class="text-danger">{{ ts('Delete this block') }}</span></a></li>
-    </ul>
+    <ul class="dropdown-menu" ng-if="menu.open" ng-include="'~/afGuiEditor/block-menu.html'"></ul>
   </div>
 </div>
 <div class="af-gui-bar" ng-if="node['#tag'] === 'af-form'" >
diff --git a/ext/afform/gui/ang/afGuiEditor/button-menu.html b/ext/afform/gui/ang/afGuiEditor/button-menu.html
new file mode 100644 (file)
index 0000000..ab67fb5
--- /dev/null
@@ -0,0 +1,10 @@
+<li>
+  <div ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown form-inline" >
+    <label>{{ ts('Style:') }}</label>
+    <select class="form-control {{ getSetStyle().replace('btn', 'text') }}" ng-model="getSetStyle" ng-model-options="{getterSetter: true}" title="{{ ts('Button style') }}">
+      <option ng-repeat="(style, label) in styles" class="{{ style.replace('btn', 'bg') }}" value="{{ style }}">{{ label }}</option>
+    </select>
+  </div>
+</li>
+<li role="separator" class="divider"></li>
+<li><a href ng-click="block.removeBlock(node)"><span class="text-danger">{{ ts('Delete this button') }}</span></a></li>
index fe35de767484114262375e1c528fa60d9baf5a8c..be75644dff5741db6e3b8765024531aa4b32ba4e 100644 (file)
@@ -4,17 +4,7 @@
       <button type="button" class="btn btn-default btn-xs dropdown-toggle af-gui-add-block-button" data-toggle="dropdown" title="{{ ts('Configure') }}">
         <span><i class="crm-i fa-gear"></i></span>
       </button>
-      <ul class="dropdown-menu" ng-if="menu.open">
-        <li title="{{ ts('Button style') }}">
-          <a href ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown" >
-            <select class="form-control {{ getSetStyle().replace('btn', 'text') }}" ng-model="getSetStyle" ng-model-options="{getterSetter: true}">
-              <option ng-repeat="(style, label) in styles" class="{{ style.replace('btn', 'bg') }}" value="{{ style }}">{{ ts('Color: %1', {1: label}) }}</option>
-            </select>
-          </a>
-        </li>
-        <li role="separator" class="divider"></li>
-        <li><a href ng-click="block.removeBlock(node)"><span class="text-danger">{{ ts('Delete this button') }}</span></a></li>
-      </ul>
+      <ul class="dropdown-menu" ng-if="menu.open" ng-include="'~/afGuiEditor/button-menu.html'"></ul>
     </div>
   </div>
 </div>
diff --git a/ext/afform/gui/ang/afGuiEditor/field-menu.html b/ext/afform/gui/ang/afGuiEditor/field-menu.html
new file mode 100644 (file)
index 0000000..701dfcf
--- /dev/null
@@ -0,0 +1,45 @@
+<li>
+  <div href ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown">
+    <label>{{ ts('Type:') }}</label>
+    <select class="form-control" ng-model="getSet('input_type')" ng-model-options="{getterSetter: true}" title="{{ ts('Field type') }}">
+      <option ng-repeat="(type, label) in editor.meta.inputType" value="{{ type }}" ng-if="inputTypeCanBe(type)">{{ label }}</option>
+    </select>
+  </div>
+</li>
+<li>
+  <a href ng-click="toggleRequired(); $event.stopPropagation();" title="{{ ts('Require this field') }}">
+    <i class="crm-i" ng-class="{'fa-square-o': !getProp('required'), 'fa-check-square-o': getProp('required')}"></i>
+    {{ ts('Required') }}
+  </a>
+</li>
+<li>
+  <a href ng-click="toggleHelp('pre'); $event.stopPropagation();" title="{{ ts('Show help text above this field') }}">
+    <i class="crm-i" ng-class="{'fa-square-o': !propIsset('help_pre'), 'fa-check-square-o': propIsset('help_pre')}"></i>
+    {{ ts('Pre help text') }}
+  </a>
+</li>
+<li>
+  <a href ng-click="toggleHelp('post'); $event.stopPropagation();" title="{{ ts('Show help text below this field') }}">
+    <i class="crm-i" ng-class="{'fa-square-o': !propIsset('help_post'), 'fa-check-square-o': propIsset('help_post')}"></i>
+    {{ ts('Post help text') }}
+  </a>
+</li>
+<li role="separator" class="divider" ng-if="hasOptions()"></li>
+<li ng-if="hasOptions()" ng-click="$event.stopPropagation()">
+  <a href ng-click="resetOptions()" title="{{ ts('Reset the option list for this field') }}">
+    <i class="crm-i fa-{{ node.defn.options ? '' : 'check-' }}circle-o"></i>
+    {{ ts('Use default option list') }}
+  </a>
+</li>
+<li ng-if="hasOptions()">
+  <a href ng-click="editOptions()" title="{{ ts('Customize the option list for this field') }}">
+    <i class="crm-i fa-{{ !node.defn.options ? '' : 'check-' }}circle-o"></i>
+    {{ ts('Customize field options') }}
+  </a>
+</li>
+<li role="separator" class="divider"></li>
+<li>
+  <a href ng-click="block.removeBlock(node)" title="{{ ts('Remove field from form') }}">
+    <span class="text-danger">{{ ts('Delete this field') }}</span>
+  </a>
+</li>
index b04caaf519559ce1ef513ce102d016ba9ed564c5..70288523f313a90c474d4dbdb5c6d668f910c026 100644 (file)
@@ -6,50 +6,7 @@
         <button type="button" class="btn btn-default btn-xs dropdown-toggle af-gui-add-block-button" data-toggle="dropdown" title="{{ ts('Configure') }}">
           <span><i class="crm-i fa-gear"></i></span>
         </button>
-        <ul class="dropdown-menu dropdown-menu-right" ng-if="menu.open">
-          <li title="{{ ts('Field type') }}">
-            <a href ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown">
-              <select class="form-control" ng-model="getSet('input_type')" ng-model-options="{getterSetter: true}">
-                <option ng-repeat="(type, label) in editor.meta.inputType" value="{{ type }}" ng-if="inputTypeCanBe(type)">{{ label }}</option>
-              </select>
-            </a>
-          </li>
-          <li title="{{ ts('Require this field') }}">
-            <a href ng-click="toggleRequired(); $event.stopPropagation();">
-              <i class="crm-i" ng-class="{'fa-square-o': !getProp('required'), 'fa-check-square-o': getProp('required')}"></i>
-              {{ ts('Required') }}
-            </a>
-          </li>
-          <li title="{{ ts('Show help text above this field') }}">
-            <a href ng-click="toggleHelp('pre'); $event.stopPropagation();">
-              <i class="crm-i" ng-class="{'fa-square-o': !propIsset('help_pre'), 'fa-check-square-o': propIsset('help_pre')}"></i>
-              {{ ts('Pre help text') }}
-            </a>
-          </li>
-          <li title="{{ ts('Show help text below this field') }}">
-            <a href ng-click="toggleHelp('post'); $event.stopPropagation();">
-              <i class="crm-i" ng-class="{'fa-square-o': !propIsset('help_post'), 'fa-check-square-o': propIsset('help_post')}"></i>
-              {{ ts('Post help text') }}
-            </a>
-          </li>
-          <li role="separator" class="divider" ng-if="hasOptions()"></li>
-          <li title="{{ ts('Reset the option list for this field') }}" ng-if="hasOptions()" ng-click="$event.stopPropagation()">
-            <a href ng-click="resetOptions()">
-              <i class="crm-i fa-{{ node.defn.options ? '' : 'check-' }}circle-o"></i>
-              {{ ts('Use default option list') }}
-            </a>
-          </li>
-          <li title="{{ ts('Customize the option list for this field') }}" ng-if="hasOptions()">
-            <a href ng-click="editOptions()">
-              <i class="crm-i fa-{{ !node.defn.options ? '' : 'check-' }}circle-o"></i>
-              {{ ts('Customize field options') }}
-            </a>
-          </li>
-          <li role="separator" class="divider"></li>
-          <li title="{{ ts('Remove field from form') }}">
-            <a href ng-click="block.removeBlock(node)"><span class="text-danger">{{ ts('Delete this field') }}</span></a>
-          </li>
-        </ul>
+        <ul class="dropdown-menu dropdown-menu-right" ng-if="menu.open" ng-include="'~/afGuiEditor/field-menu.html'"></ul>
       </div>
     </div>
   </div>
diff --git a/ext/afform/gui/ang/afGuiEditor/text-menu.html b/ext/afform/gui/ang/afGuiEditor/text-menu.html
new file mode 100644 (file)
index 0000000..8fed553
--- /dev/null
@@ -0,0 +1,21 @@
+<li>
+  <div class="af-gui-field-select-in-dropdown" ng-click="$event.stopPropagation()">
+    <label>{{ ts('Style:') }}</label>
+    <select class="form-control" ng-model="node['#tag']" title="{{ ts('Text style') }}">
+      <option ng-repeat="(opt, label) in tags" value="{{ opt }}">{{ label }}</option>
+    </select>
+  </div>
+</li>
+<li>
+  <div class="af-gui-field-select-in-dropdown" ng-click="$event.stopPropagation()">
+    <div class="btn-group btn-group-sm" role="group">
+      <button type="button" class="btn btn-default" ng-class="{active: opt === getAlign()}" ng-repeat="(opt, label) in alignments" ng-click="setAlign(opt)" title="{{ label }}">
+        <i class="crm-i fa-{{ opt.replace('text', 'align') }}" ></i>
+      </button>
+    </div>
+  </div>
+</li>
+<li role="separator" class="divider"></li>
+<li>
+  <a href ng-click="block.removeBlock(node)"><span class="text-danger">{{ ts('Delete this text') }}</span></a>
+</li>
index 7c69daac6416f9a6021fd5c246f3cffd70c82c1a..a5a6261fc62129504384eb04f1be949bc909c8e8 100644 (file)
@@ -4,28 +4,7 @@
       <button type="button" class="btn btn-default btn-xs dropdown-toggle af-gui-add-block-button" data-toggle="dropdown" title="{{ ts('Configure') }}">
         <span><i class="crm-i fa-gear"></i></span>
       </button>
-      <ul class="dropdown-menu" ng-if="menu.open">
-        <li title="{{ ts('Text style') }}">
-          <a href ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown">
-            <select class="form-control" ng-model="node['#tag']">
-              <option ng-repeat="(opt, label) in tags" value="{{ opt }}">{{ label }}</option>
-            </select>
-          </a>
-        </li>
-        <li>
-          <a href ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown">
-            <div class="btn-group btn-group-sm" role="group">
-              <button type="button" class="btn btn-default" ng-class="{active: opt === getAlign()}" ng-repeat="(opt, label) in alignments" ng-click="setAlign(opt)" title="{{ label }}">
-                <i class="crm-i fa-{{ opt.replace('text', 'align') }}" ></i>
-              </button>
-            </div>
-          </a>
-        </li>
-        <li role="separator" class="divider"></li>
-        <li>
-          <a href ng-click="block.removeBlock(node)"><span class="text-danger">{{ ts('Delete this text') }}</span></a>
-        </li>
-      </ul>
+      <ul class="dropdown-menu" ng-if="menu.open" ng-include="'~/afGuiEditor/text-menu.html'"></ul>
     </div>
   </div>
 </div>