You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2018/02/21 18:53:17 UTC

[myfaces-tobago] branch master updated (513ffc7 -> da3ef85)

This is an automated email from the ASF dual-hosted git repository.

lofwyr pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git.


    from 513ffc7  rebuild themes after update
     new aaeda50  Better sorter icons
     new d0042c8  Better sorter
     new 9938a79  Better sorter
     new da3ef85  Better sorter

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/myfaces/tobago/component/Sorter.java    | 100 ++++++++++++---------
 .../tobago/internal/component/AbstractUISheet.java |   3 +-
 .../internal/renderkit/renderer/SheetRenderer.java |   9 --
 .../apache/myfaces/tobago/model/SheetState.java    |  21 +++--
 .../apache/myfaces/tobago/util/MessageUtils.java   |  37 +++++---
 .../myfaces/tobago/context/TobagoMessage.xml       |   2 +
 .../myfaces/tobago/context/TobagoMessage_de.xml    |   2 +
 .../myfaces/tobago/context/TobagoMessage_es.xml    |   2 +
 tobago-core/src/main/resources/scss/_tobago.scss   |  32 +++++--
 .../080-sheet/10-sort/sheet-sorting.xhtml          |   4 +
 .../60-multiheader/sheet-multi-header.xhtml        |  24 ++---
 .../tobago-theme-charlotteville/rebuild-theme.txt  |  54 +++++------
 .../tobago-theme-roxborough/rebuild-theme.txt      |  36 ++++----
 .../tobago-bootstrap/_version/css/bootstrap.css    |  31 +++++--
 .../_version/css/bootstrap.css.map                 |   2 +-
 .../_version/css/bootstrap.min.css                 |   2 +-
 .../_version/css/bootstrap.min.css.map             |   2 +-
 .../tobago-theme-scarborough/rebuild-theme.txt     |  30 +++----
 .../tobago-bootstrap/_version/css/bootstrap.css    |  31 +++++--
 .../_version/css/bootstrap.css.map                 |   2 +-
 .../_version/css/bootstrap.min.css                 |   2 +-
 .../_version/css/bootstrap.min.css.map             |   2 +-
 .../tobago-theme-speyside/rebuild-theme.txt        |  34 +++----
 .../tobago-bootstrap/_version/css/bootstrap.css    |  31 +++++--
 .../_version/css/bootstrap.css.map                 |   2 +-
 .../_version/css/bootstrap.min.css                 |   2 +-
 .../_version/css/bootstrap.min.css.map             |   2 +-
 .../tobago-theme-standard/rebuild-theme.txt        |  86 +++++++++++-------
 .../tobago-bootstrap/_version/css/bootstrap.css    |  31 +++++--
 .../_version/css/bootstrap.css.map                 |   2 +-
 .../_version/css/bootstrap.min.css                 |   2 +-
 .../_version/css/bootstrap.min.css.map             |   2 +-
 32 files changed, 394 insertions(+), 230 deletions(-)

-- 
To stop receiving notification emails like this one, please contact
lofwyr@apache.org.

[myfaces-tobago] 03/04: Better sorter

Posted by lo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lofwyr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git

commit 9938a796d6a37bd93e567f5863455445484178a9
Author: Udo Schnurpfeil <lo...@apache.org>
AuthorDate: Wed Feb 21 19:36:41 2018 +0100

    Better sorter
    
    TOBAGO-1859: Better feedback, if sorting isn't possible
---
 .../apache/myfaces/tobago/component/Sorter.java    | 100 ++++++++++++---------
 .../tobago/internal/component/AbstractUISheet.java |   3 +-
 .../apache/myfaces/tobago/model/SheetState.java    |  21 +++--
 .../apache/myfaces/tobago/util/MessageUtils.java   |  37 +++++---
 .../myfaces/tobago/context/TobagoMessage.xml       |   2 +
 .../myfaces/tobago/context/TobagoMessage_de.xml    |   2 +
 .../myfaces/tobago/context/TobagoMessage_es.xml    |   2 +
 7 files changed, 104 insertions(+), 63 deletions(-)

diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Sorter.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Sorter.java
index 9a629f3..8c2571a 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Sorter.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Sorter.java
@@ -25,11 +25,13 @@ import org.apache.myfaces.tobago.internal.component.AbstractUISheet;
 import org.apache.myfaces.tobago.internal.util.StringUtils;
 import org.apache.myfaces.tobago.model.SheetState;
 import org.apache.myfaces.tobago.util.BeanComparator;
+import org.apache.myfaces.tobago.util.MessageUtils;
 import org.apache.myfaces.tobago.util.ValueExpressionComparator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.el.ValueExpression;
+import javax.faces.application.FacesMessage;
 import javax.faces.component.UIColumn;
 import javax.faces.component.UICommand;
 import javax.faces.component.UIComponent;
@@ -53,7 +55,7 @@ public class Sorter {
   private Comparator comparator;
 
   /**
-   * @deprecated Please use {@link #perform(org.apache.myfaces.tobago.internal.component.AbstractUISheet)}
+   * @deprecated since 2.0.7, please use {@link #perform(org.apache.myfaces.tobago.internal.component.AbstractUISheet)}
    */
   @Deprecated
   public void perform(final SortActionEvent sortEvent) {
@@ -61,34 +63,45 @@ public class Sorter {
     perform(data);
   }
 
-  public void perform(final AbstractUISheet data) {
-
-    Object value = data.getValue();
-    if (value instanceof DataModel) {
-      value = ((DataModel) value).getWrappedData();
-    }
+  public void perform(final AbstractUISheet sheet) {
     final FacesContext facesContext = FacesContext.getCurrentInstance();
-    final SheetState sheetState = data.getSheetState(facesContext);
+    Object data = sheet.getValue();
+    if (data instanceof DataModel) {
+      data = ((DataModel) data).getWrappedData();
+    }
+    final SheetState sheetState = sheet.getSheetState(facesContext);
 
     final String sortedColumnId = sheetState.getSortedColumnId();
     if (LOG.isDebugEnabled()) {
       LOG.debug("sorterId = '{}'", sortedColumnId);
     }
 
-    if (sortedColumnId == null) {
-      // not to be sorted
-      return;
+    boolean success = false;
+    if (sortedColumnId != null) {
+      final UIColumn column = (UIColumn) sheet.findComponent(sortedColumnId);
+      if (column != null) {
+        success = perform(facesContext, sheet, data, column, sheetState);
+      } else {
+        LOG.error("No column to sort found, sorterId = '{}'!", sortedColumnId);
+        addNotSortableMessage(facesContext, null);
+      }
+    } else {
+      LOG.error("No sorterId!");
+      addNotSortableMessage(facesContext, null);
     }
 
-    final UIColumn column = (UIColumn) data.findComponent(sortedColumnId);
-    if (column == null) {
-      LOG.warn("No column to sort found, sorterId = '{}'", sortedColumnId);
-      return;
+    if (!success) {
+      sheetState.resetSortState();
     }
+  }
+
+  private boolean perform(
+      final FacesContext facesContext, final AbstractUISheet sheet, final Object data, final UIColumn column,
+      final SheetState sheetState) {
 
     final Comparator actualComparator;
 
-    if (value instanceof List || value instanceof Object[]) {
+    if (data instanceof List || data instanceof Object[]) {
       final String sortProperty;
 
       try {
@@ -97,11 +110,11 @@ public class Sorter {
 
           final Attributes attribute = child instanceof AbstractUICommand ? Attributes.label : Attributes.value;
           if (child.getValueExpression(attribute.getName()) != null) {
-            final String var = data.getVar();
+            final String var = sheet.getVar();
             if (var == null) {
                 LOG.error("No sorting performed. Property var of sheet is not set!");
-                unsetSortableAttribute(column);
-                return;
+                addNotSortableMessage(facesContext, column);
+                return false;
             }
             String expressionString = child.getValueExpression(attribute.getName()).getExpressionString();
             if (isSimpleProperty(expressionString)) {
@@ -126,21 +139,21 @@ public class Sorter {
               actualComparator = new ValueExpressionComparator(facesContext, var, expression, descending, comparator);
             }
           } else {
-              LOG.error("No sorting performed. No Expression target found for sorting!");
-              unsetSortableAttribute(column);
-              return;
+            LOG.error("No sorting performed, because no expression found for "
+                    + "attribute '{}' in component '{}' with id='{}'! You may check the type of the component!",
+                attribute.getName(), child.getClass().getName(), child.getClientId());
+            addNotSortableMessage(facesContext, column);
+            return false;
           }
         } else {
           LOG.error("No sorting performed. Value is not instanceof List or Object[]!");
-          unsetSortableAttribute(column);
-          return;
+          addNotSortableMessage(facesContext, column);
+          return false;
         }
       } catch (final Exception e) {
         LOG.error("Error while extracting sortMethod :" + e.getMessage(), e);
-        if (column != null) {
-          unsetSortableAttribute(column);
-        }
-        return;
+        addNotSortableMessage(facesContext, column);
+        return false;
       }
 
       // TODO: locale / comparator parameter?
@@ -154,20 +167,20 @@ public class Sorter {
         selectedDataRows = new ArrayList<>(sheetState.getSelectedRows().size());
         Object dataRow;
         for (final Integer index : sheetState.getSelectedRows()) {
-          if (value instanceof List) {
-            dataRow = ((List) value).get(index);
+          if (data instanceof List) {
+            dataRow = ((List) data).get(index);
           } else {
-            dataRow = ((Object[]) value)[index];
+            dataRow = ((Object[]) data)[index];
           }
           selectedDataRows.add(dataRow);
         }
       }
 
       // do sorting
-      if (value instanceof List) {
-        Collections.sort((List) value, actualComparator);
+      if (data instanceof List) {
+        Collections.sort((List) data, actualComparator);
       } else { // value is instanceof Object[]
-        Arrays.sort((Object[]) value, actualComparator);
+        Arrays.sort((Object[]) data, actualComparator);
       }
 
       // restore selected rows
@@ -175,15 +188,15 @@ public class Sorter {
         sheetState.getSelectedRows().clear();
         for (final Object dataRow : selectedDataRows) {
           int index = -1;
-          if (value instanceof List) {
-            for (int i = 0; i < ((List) value).size() && index < 0; i++) {
-              if (dataRow == ((List) value).get(i)) {
+          if (data instanceof List) {
+            for (int i = 0; i < ((List) data).size() && index < 0; i++) {
+              if (dataRow == ((List) data).get(i)) {
                 index = i;
               }
             }
           } else {
-            for (int i = 0; i < ((Object[]) value).length && index < 0; i++) {
-              if (dataRow == ((Object[]) value)[i]) {
+            for (int i = 0; i < ((Object[]) data).length && index < 0; i++) {
+              if (dataRow == ((Object[]) data)[i]) {
                 index = i;
               }
             }
@@ -196,8 +209,9 @@ public class Sorter {
 
     } else {  // DataModel?, ResultSet, Result or Object
       LOG.warn("Sorting not supported for type "
-          + (value != null ? value.getClass().toString() : "null"));
+          + (data != null ? data.getClass().toString() : "null"));
     }
+    return true;
   }
 
   // XXX needs to be tested
@@ -216,9 +230,9 @@ public class Sorter {
     return false;
   }
 
-  private void unsetSortableAttribute(final UIColumn uiColumn) {
-    LOG.warn("removing attribute sortable from column " + uiColumn.getId());
-    uiColumn.getAttributes().put(Attributes.sortable.getName(), Boolean.FALSE);
+  private void addNotSortableMessage(final FacesContext facesContext, final UIColumn column) {
+    MessageUtils.addMessage(facesContext, column, FacesMessage.SEVERITY_WARN,
+        AbstractUISheet.NOT_SORTABLE_MESSAGE_ID, new Object[]{MessageUtils.getLabel(facesContext, column)});
   }
 
   private UIComponent getFirstSortableChild(final List<UIComponent> children) {
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISheet.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISheet.java
index 2b38563..48be4f4 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISheet.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISheet.java
@@ -72,6 +72,7 @@ public abstract class AbstractUISheet extends AbstractUIData
   public static final String COMPONENT_TYPE = "org.apache.myfaces.tobago.Data";
 
   public static final String SORTER_ID = "sorter";
+  public static final String NOT_SORTABLE_MESSAGE_ID = "org.apache.myfaces.tobago.Sheet.SORTING_ERROR";
 
   private SheetState state;
   private transient MeasureList columnLayout;
@@ -389,7 +390,7 @@ public abstract class AbstractUISheet extends AbstractUIData
         performPaging((PageActionEvent) facesEvent);
       }
     } else if (facesEvent instanceof SortActionEvent) {
-      getSheetState(getFacesContext()).updateSortState((SortActionEvent) facesEvent);
+      getSheetState(getFacesContext()).updateSortState(((SortActionEvent) facesEvent).getColumn().getId());
       sort(getFacesContext(), (SortActionEvent) facesEvent);
     }
   }
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/model/SheetState.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/model/SheetState.java
index f9b322e..be8fd38 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/model/SheetState.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/model/SheetState.java
@@ -24,7 +24,6 @@ import org.apache.myfaces.tobago.internal.util.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.faces.component.UIColumn;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
@@ -116,7 +115,7 @@ public class SheetState implements Serializable, ScrollPositionState {
 
   public boolean isDefinedColumnWidths() {
     for (final Integer columnWidth : columnWidths) {
-      if(columnWidth < 0) {
+      if (columnWidth < 0) {
         return false;
       }
     }
@@ -131,18 +130,28 @@ public class SheetState implements Serializable, ScrollPositionState {
     this.first = first;
   }
 
+  /**
+   * @deprecated since 4.2.0, please use {@link #updateSortState(String id)}
+   */
+  @Deprecated
   public void updateSortState(final SortActionEvent sortEvent) {
+    updateSortState(sortEvent.getColumn().getId());
+  }
 
-    final UIColumn actualColumn = sortEvent.getColumn();
-
-    if (actualColumn.getId().equals(sortedColumnId)) {
+  public void updateSortState(final String columnId) {
+    if (columnId.equals(sortedColumnId)) {
       setAscending(!isAscending());
     } else {
       setAscending(true);
-      setSortedColumnId(actualColumn.getId());
+      setSortedColumnId(columnId);
     }
   }
 
+  public void resetSortState() {
+    setAscending(true);
+    setSortedColumnId(null);
+  }
+
   @Override
   public ScrollPosition getScrollPosition() {
     return scrollPosition;
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/util/MessageUtils.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/util/MessageUtils.java
index de5e24d..aaed48f 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/util/MessageUtils.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/util/MessageUtils.java
@@ -20,6 +20,8 @@
 package org.apache.myfaces.tobago.util;
 
 import org.apache.myfaces.tobago.application.LabelValueExpressionFacesMessage;
+import org.apache.myfaces.tobago.context.TobagoContext;
+import org.apache.myfaces.tobago.context.TobagoMessageBundle;
 import org.apache.myfaces.tobago.context.TobagoResourceBundle;
 
 import javax.el.ValueExpression;
@@ -32,12 +34,8 @@ import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
 /**
- * Utility to create and add {@link FacesMessage} object to the context.
- * The message will be internationalized with a bundle in the following order:
- * <ol>
- * <li>Application bundle</li>
- * <li>Tobago bundle</li>
- * <li>Default JSF bundle</li>
+ * Utility to create and add {@link FacesMessage} object to the context. The message will be internationalized with a
+ * bundle in the following order: <ol> <li>Application bundle</li> <li>Tobago bundle</li> <li>Default JSF bundle</li>
  * </ol>
  */
 public final class MessageUtils {
@@ -50,7 +48,7 @@ public final class MessageUtils {
   public static void addMessage(
       final FacesContext facesContext, final UIComponent component, final FacesMessage.Severity severity,
       final String messageId, final Object[] args) {
-    facesContext.addMessage(component.getClientId(facesContext),
+    facesContext.addMessage(component != null ? component.getClientId(facesContext) : null,
         getMessage(facesContext, facesContext.getViewRoot().getLocale(), severity, messageId, args));
   }
 
@@ -63,21 +61,31 @@ public final class MessageUtils {
     String detail = getBundleString(appBundle, messageId + DETAIL_SUFFIX);
 
     if (summary == null || detail == null) {
-      final ResourceBundle tobagoBundle = new TobagoResourceBundle();
+      final TobagoMessageBundle tobagoMessages = TobagoContext.getInstance(facesContext).getMessageBundle();
       if (summary == null) {
-        summary = getBundleString(tobagoBundle, messageId);
+        summary = getBundleString(tobagoMessages, messageId);
       }
       if (detail == null) {
-        detail = getBundleString(tobagoBundle, messageId + DETAIL_SUFFIX);
+        detail = getBundleString(tobagoMessages, messageId + DETAIL_SUFFIX);
       }
 
       if (summary == null || detail == null) {
-        final ResourceBundle defBundle = getDefaultBundle(facesContext, locale);
+        final TobagoResourceBundle tobagoBundle = TobagoContext.getInstance(facesContext).getResourceBundle();
         if (summary == null) {
-          summary = getBundleString(defBundle, messageId);
+          summary = getBundleString(tobagoBundle, messageId);
         }
         if (detail == null) {
-          detail = getBundleString(defBundle, messageId + DETAIL_SUFFIX);
+          detail = getBundleString(tobagoBundle, messageId + DETAIL_SUFFIX);
+        }
+
+        if (summary == null || detail == null) {
+          final ResourceBundle defBundle = getDefaultBundle(facesContext, locale);
+          if (summary == null) {
+            summary = getBundleString(defBundle, messageId);
+          }
+          if (detail == null) {
+            detail = getBundleString(defBundle, messageId + DETAIL_SUFFIX);
+          }
         }
       }
     }
@@ -136,6 +144,9 @@ public final class MessageUtils {
   }
 
   public static String getLabel(final FacesContext facesContext, final UIComponent component) {
+    if (component == null) {
+      return null;
+    }
     final Object label = component.getAttributes().get("label");
     if (label != null) {
       return label.toString();
diff --git a/tobago-core/src/main/resources/org/apache/myfaces/tobago/context/TobagoMessage.xml b/tobago-core/src/main/resources/org/apache/myfaces/tobago/context/TobagoMessage.xml
index 88eb9e5..c1b1457 100644
--- a/tobago-core/src/main/resources/org/apache/myfaces/tobago/context/TobagoMessage.xml
+++ b/tobago-core/src/main/resources/org/apache/myfaces/tobago/context/TobagoMessage.xml
@@ -35,6 +35,8 @@
   <entry key="tobago.tree.MESSAGE_NOT_LEAF">Only leaf selection allowed.</entry>
   <entry key="tobago.SelectOne.MESSAGE_VALUE_REQUIRED">Selection required</entry>
 
+  <entry key="org.apache.myfaces.tobago.Sheet.SORTING_ERROR">Sorting not possible!</entry>
+  <entry key="org.apache.myfaces.tobago.Sheet.SORTING_ERROR_detail">Can't sort the column ''{0}''!</entry>
   <entry key="org.apache.myfaces.tobago.FileItemValidator.CONTENT_TYPE">Content type error</entry>
   <entry key="org.apache.myfaces.tobago.FileItemValidator.CONTENT_TYPE_detail">The given file is not content type of "{0}".</entry>
   <entry key="org.apache.myfaces.tobago.FileItemValidator.SIZE_LIMIT">File size error</entry>
diff --git a/tobago-core/src/main/resources/org/apache/myfaces/tobago/context/TobagoMessage_de.xml b/tobago-core/src/main/resources/org/apache/myfaces/tobago/context/TobagoMessage_de.xml
index a5f6717..d475d3d 100644
--- a/tobago-core/src/main/resources/org/apache/myfaces/tobago/context/TobagoMessage_de.xml
+++ b/tobago-core/src/main/resources/org/apache/myfaces/tobago/context/TobagoMessage_de.xml
@@ -39,6 +39,8 @@
   <entry key="tobago.SelectOne.MESSAGE_VALUE_REQUIRED">Eine Auswahl wird benötigt!</entry>
 
   <entry key="tobago.ajax.response.error">Server Error: Fehler beim Bearbeiten der Anfrage. Eventuell ein Session Timeout!</entry>
+  <entry key="org.apache.myfaces.tobago.Sheet.SORTING_ERROR">Sortieren nicht möglich!</entry>
+  <entry key="org.apache.myfaces.tobago.Sheet.SORTING_ERROR_detail">Nach Spalte ''{0}'' kann nicht sortiert werden!</entry>
   <entry key="org.apache.myfaces.tobago.FileItemValidator.CONTENT_TYPE">Dateityp Fehler</entry>
   <entry key="org.apache.myfaces.tobago.FileItemValidator.CONTENT_TYPE_detail">Die hochgeladene Datei ist nicht vom Typ "{0}".</entry>
   <entry key="org.apache.myfaces.tobago.FileItemValidator.SIZE_LIMIT">Dateigröße Fehler</entry>
diff --git a/tobago-core/src/main/resources/org/apache/myfaces/tobago/context/TobagoMessage_es.xml b/tobago-core/src/main/resources/org/apache/myfaces/tobago/context/TobagoMessage_es.xml
index 59193f0..6ddd5f4 100644
--- a/tobago-core/src/main/resources/org/apache/myfaces/tobago/context/TobagoMessage_es.xml
+++ b/tobago-core/src/main/resources/org/apache/myfaces/tobago/context/TobagoMessage_es.xml
@@ -36,6 +36,8 @@
   <entry key="tobago.SelectOne.MESSAGE_VALUE_REQUIRED">Se requiere seleccionar.</entry>
 
   <entry key="tobago.ajax.response.error">Error en el servidor: No hay respuesta del servidor. Probablemente debido a un tiempo agotado de sesion!</entry>
+  <entry key="org.apache.myfaces.tobago.Sheet.SORTING_ERROR">Después de columna ''{0}'' no se puede ordenar!</entry>
+  <entry key="org.apache.myfaces.tobago.Sheet.SORTING_ERROR_detail">No se puede ordenar!</entry>
   <entry key="org.apache.myfaces.tobago.FileItemValidator.CONTENT_TYPE">Error de tipo de contenido</entry>
   <entry key="org.apache.myfaces.tobago.FileItemValidator.CONTENT_TYPE_detail">El archivo no es del tipo de contenido "{0}".</entry>
   <entry key="org.apache.myfaces.tobago.FileItemValidator.SIZE_LIMIT">Error en el tamaño del archivo</entry>

-- 
To stop receiving notification emails like this one, please contact
lofwyr@apache.org.

[myfaces-tobago] 04/04: Better sorter

Posted by lo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lofwyr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git

commit da3ef853b98999e741a71a80a885766e2da8a713
Author: Udo Schnurpfeil <lo...@apache.org>
AuthorDate: Wed Feb 21 19:54:09 2018 +0100

    Better sorter
    
    TOBAGO-1859: Better feedback, if sorting isn't possible
---
 .../webapp/content/20-component/080-sheet/10-sort/sheet-sorting.xhtml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/10-sort/sheet-sorting.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/10-sort/sheet-sorting.xhtml
index 84d6a8a..89ded18 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/10-sort/sheet-sorting.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/10-sort/sheet-sorting.xhtml
@@ -26,6 +26,10 @@
     <code class="language-markup">&lt;tc:column/></code>.
     A custom sorting implementation can be set in the <code>sortActionListener</code> attribute in the
     <code class="language-markup">&lt;tc:sheet/></code>.</p>
+  <p>It's important to have a component inside the <code class="language-markup">&lt;tc:column/></code>,
+    e. g. <code class="language-markup">&lt;tc:out value="\#{object.name}"/></code>.
+  If there is only a fragment like <code class="language-markup">\#{object.name}</code>,
+    sorting will not be possible!</p>
   <p>Tag Library Documentation:
     <tc:link label="&lt;tc:sheet/>" image="#{request.contextPath}/image/feather-leaf.png"
              link="#{demoBundle.tagDocUrl}/#{info.stableVersion}/tld/tc/sheet.html"/>

-- 
To stop receiving notification emails like this one, please contact
lofwyr@apache.org.

[myfaces-tobago] 01/04: Better sorter icons

Posted by lo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lofwyr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git

commit aaeda50d72ad3ecb4841086d987a8f3c9119d1a3
Author: Udo Schnurpfeil <lo...@apache.org>
AuthorDate: Wed Feb 21 15:09:37 2018 +0100

    Better sorter icons
    
    TOBAGO-1857: Sorting icon in table header was shown in a separate line
    TOBAGO-1858: Icon for sortable column
---
 .../internal/renderkit/renderer/SheetRenderer.java |  9 ---
 tobago-core/src/main/resources/scss/_tobago.scss   | 32 ++++++--
 .../tobago-theme-charlotteville/rebuild-theme.txt  | 54 +++++++-------
 .../tobago-theme-roxborough/rebuild-theme.txt      | 36 ++++-----
 .../tobago-bootstrap/_version/css/bootstrap.css    | 31 ++++++--
 .../_version/css/bootstrap.css.map                 |  2 +-
 .../_version/css/bootstrap.min.css                 |  2 +-
 .../_version/css/bootstrap.min.css.map             |  2 +-
 .../tobago-theme-scarborough/rebuild-theme.txt     | 30 ++++----
 .../tobago-bootstrap/_version/css/bootstrap.css    | 31 ++++++--
 .../_version/css/bootstrap.css.map                 |  2 +-
 .../_version/css/bootstrap.min.css                 |  2 +-
 .../_version/css/bootstrap.min.css.map             |  2 +-
 .../tobago-theme-speyside/rebuild-theme.txt        | 34 ++++-----
 .../tobago-bootstrap/_version/css/bootstrap.css    | 31 ++++++--
 .../_version/css/bootstrap.css.map                 |  2 +-
 .../_version/css/bootstrap.min.css                 |  2 +-
 .../_version/css/bootstrap.min.css.map             |  2 +-
 .../tobago-theme-standard/rebuild-theme.txt        | 86 ++++++++++++++--------
 .../tobago-bootstrap/_version/css/bootstrap.css    | 31 ++++++--
 .../_version/css/bootstrap.css.map                 |  2 +-
 .../_version/css/bootstrap.min.css                 |  2 +-
 .../_version/css/bootstrap.min.css.map             |  2 +-
 23 files changed, 274 insertions(+), 155 deletions(-)

diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SheetRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SheetRenderer.java
index c142f14..c6235ce 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SheetRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SheetRenderer.java
@@ -815,7 +815,6 @@ public class SheetRenderer extends RendererBase {
                 TobagoClass.SHEET__CELL.createMarkup(align),
                 column.getCustomClass());
             writer.startElement(HtmlElements.SPAN);
-            Icons sorterIcon = null;
             Markup markup = Markup.NULL;
             String tip = ComponentUtils.getStringAttribute(column, Attributes.tip);
             // sorter icons should only displayed when there is only 1 column and not input
@@ -851,11 +850,9 @@ public class SheetRenderer extends RendererBase {
                 if (column.getId().equals(sheetState.getSortedColumnId())) {
                   final String sortTitle;
                   if (sheetState.isAscending()) {
-                    sorterIcon = Icons.ANGLE_UP;
                     sortTitle = TobagoResourceBundle.getString(facesContext, "sheetAscending");
                     markup = markup.add(Markup.ASCENDING);
                   } else {
-                    sorterIcon = Icons.ANGLE_DOWN;
                     sortTitle = TobagoResourceBundle.getString(facesContext, "sheetDescending");
                     markup = markup.add(Markup.DESCENDING);
                   }
@@ -883,12 +880,6 @@ public class SheetRenderer extends RendererBase {
               cellComponent.encodeAll(facesContext);
             }
 
-            if (sorterIcon != null) {
-              writer.startElement(HtmlElements.I);
-              writer.writeClassAttribute(Icons.FA, sorterIcon);
-              writer.endElement(HtmlElements.I);
-            }
-
             writer.endElement(HtmlElements.SPAN);
             if (!autoLayout) {
               if (column.isResizable()) {
diff --git a/tobago-core/src/main/resources/scss/_tobago.scss b/tobago-core/src/main/resources/scss/_tobago.scss
index 3504fa7..dd3cf4a 100644
--- a/tobago-core/src/main/resources/scss/_tobago.scss
+++ b/tobago-core/src/main/resources/scss/_tobago.scss
@@ -592,6 +592,10 @@ a.tobago-messages-button {
 
 /* out -------------------------------------------------------------------- */
 
+.tobago-out {
+  display: inline-block;
+}
+
 .tobago-out-markup-strong {
   font-weight: bold;
 }
@@ -1039,6 +1043,28 @@ th.tobago-sheet-headerCell {
 .tobago-sheet-header {
   overflow: hidden;
   flex-shrink: 0;
+  display: block;
+}
+
+.tobago-sheet-headerCell > .tobago-sheet-header > * {
+  display: inline;
+}
+
+.tobago-sheet-header-markup-sortable::after {
+  content: "\f0dc";
+  font-family: FontAwesome;
+  color: $gray-300;
+  margin-left: $spacer-x;
+}
+
+.tobago-sheet-header-markup-ascending::after {
+  content: "\f0de";
+  color: inherit;
+}
+
+.tobago-sheet-header-markup-descending::after {
+  content: "\f0dd";
+  color: inherit;
 }
 
 th.tobago-sheet-headerCell-markup-filler > .tobago-sheet-header {
@@ -1364,12 +1390,6 @@ th.tobago-sheet-headerCell-markup-filler > .tobago-sheet-header {
   }
 }
 
-/* out -------------------------------------------------------------- */
-
-.tobago-out {
-  display: inline-block;
-}
-
 /* textarea --------------------------------------------------------- */
 .tobago-textarea {
 }
diff --git a/tobago-theme/tobago-theme-charlotteville/rebuild-theme.txt b/tobago-theme/tobago-theme-charlotteville/rebuild-theme.txt
index 32ea7d3..9c9fe2d 100644
--- a/tobago-theme/tobago-theme-charlotteville/rebuild-theme.txt
+++ b/tobago-theme/tobago-theme-charlotteville/rebuild-theme.txt
@@ -1,11 +1,11 @@
-Build date: 2018-02-20 09:51:07
+Build date: 2018-02-21 14:51:29
 [INFO] Scanning for projects...
 [INFO] 
 [INFO] ------------------------------------------------------------------------
 [INFO] Building Tobago Theme Charlotteville 4.1.0-SNAPSHOT
 [INFO] ------------------------------------------------------------------------
-[INFO] Downloading from apache.snapshots: https://repository.apache.org/snapshots/org/apache/myfaces/tobago/tobago-theme-standard/4.1.0-SNAPSHOT/maven-metadata.xml
-[INFO] Downloading from apache.snapshots: https://repository.apache.org/snapshots/org/apache/myfaces/tobago/tobago-core/4.1.0-SNAPSHOT/maven-metadata.xml
+[INFO] Downloading: https://repository.apache.org/snapshots/org/apache/myfaces/tobago/tobago-theme-standard/4.1.0-SNAPSHOT/maven-metadata.xml
+[INFO] Downloading: https://repository.apache.org/snapshots/org/apache/myfaces/tobago/tobago-core/4.1.0-SNAPSHOT/maven-metadata.xml
 [INFO] 
 [INFO] --- maven-enforcer-plugin:3.0.0-M1:enforce (enforce) @ tobago-theme-charlotteville ---
 [INFO] 
@@ -68,12 +68,12 @@ Build date: 2018-02-20 09:51:07
 [INFO] > nodemon@1.14.10 postinstall __CURRENT__/tobago-theme-charlotteville/target/bootstrap/node_modules/nodemon
 [INFO] > node -e "console.log('\u001b[32mLove nodemon? You can now support the project via the open collective:\u001b[22m\u001b[39m\n > \u001b[96m\u001b[1mhttps://opencollective.com/nodemon/donate\u001b[0m\n')" || exit 0
 [INFO] 
-[INFO] Love nodemon? You can now support the project via the open collective:
-[INFO]  > https://opencollective.com/nodemon/donate
+[INFO] Love nodemon? You can now support the project via the open collective:
+[INFO]  > https://opencollective.com/nodemon/donate
 [INFO] 
 [WARNING] npm WARN bootstrap@4.0.0 requires a peer of jquery@1.9.1 - 3 but none is installed. You must install peer dependencies yourself.
 [ERROR] 
-[INFO] added 1405 packages in 15.945s
+[INFO] added 1405 packages in 27.212s
 [INFO] 
 [INFO] --- frontend-maven-plugin:1.4:npm (step #8: npm run css-compile) @ tobago-theme-charlotteville ---
 [INFO] Running 'npm run css-compile' in __CURRENT__/tobago-theme-charlotteville/target/bootstrap
@@ -82,14 +82,14 @@ Build date: 2018-02-20 09:51:07
 [INFO] > node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/bootstrap.scss dist/css/bootstrap.css && node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/bootstrap-grid.scss dist/css/bootstrap-grid.css && node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/bootstrap-reboot.scss dist/css/bootstrap-reboot.css
 [INFO] 
 [ERROR] Rendering Complete, saving .css file...
-[ERROR] Wrote CSS to __CURRENT__/tobago-theme-charlotteville/target/bootstrap/dist/css/bootstrap.css
 [ERROR] Wrote Source Map to __CURRENT__/tobago-theme-charlotteville/target/bootstrap/dist/css/bootstrap.css.map
+[ERROR] Wrote CSS to __CURRENT__/tobago-theme-charlotteville/target/bootstrap/dist/css/bootstrap.css
 [ERROR] Rendering Complete, saving .css file...
-[ERROR] Wrote CSS to __CURRENT__/tobago-theme-charlotteville/target/bootstrap/dist/css/bootstrap-grid.css
 [ERROR] Wrote Source Map to __CURRENT__/tobago-theme-charlotteville/target/bootstrap/dist/css/bootstrap-grid.css.map
+[ERROR] Wrote CSS to __CURRENT__/tobago-theme-charlotteville/target/bootstrap/dist/css/bootstrap-grid.css
 [ERROR] Rendering Complete, saving .css file...
-[ERROR] Wrote Source Map to __CURRENT__/tobago-theme-charlotteville/target/bootstrap/dist/css/bootstrap-reboot.css.map
 [ERROR] Wrote CSS to __CURRENT__/tobago-theme-charlotteville/target/bootstrap/dist/css/bootstrap-reboot.css
+[ERROR] Wrote Source Map to __CURRENT__/tobago-theme-charlotteville/target/bootstrap/dist/css/bootstrap-reboot.css.map
 [INFO] 
 [INFO] --- frontend-maven-plugin:1.4:npm (step #9: npm run css-prefix) @ tobago-theme-charlotteville ---
 [INFO] Running 'npm run css-prefix' in __CURRENT__/tobago-theme-charlotteville/target/bootstrap
@@ -97,9 +97,9 @@ Build date: 2018-02-20 09:51:07
 [INFO] > bootstrap@4.0.0 css-prefix __CURRENT__/tobago-theme-charlotteville/target/bootstrap
 [INFO] > postcss --config build/postcss.config.js --replace "dist/css/*.css" "!dist/css/*.min.css"
 [INFO] 
-[ERROR] ✔ Finished dist/css/bootstrap-grid.css (1.15 s)
-[ERROR] ✔ Finished dist/css/bootstrap-reboot.css (1.15 s)
-[ERROR] ✔ Finished dist/css/bootstrap.css (1.15 s)
+[ERROR] ✔ Finished dist/css/bootstrap-grid.css (875 ms)
+[ERROR] ✔ Finished dist/css/bootstrap-reboot.css (877 ms)
+[ERROR] ✔ Finished dist/css/bootstrap.css (877 ms)
 [INFO] 
 [INFO] --- frontend-maven-plugin:1.4:npm (step #10: npm run css-minify) @ tobago-theme-charlotteville ---
 [INFO] Running 'npm run css-minify' in __CURRENT__/tobago-theme-charlotteville/target/bootstrap
@@ -127,21 +127,21 @@ Build date: 2018-02-20 09:51:07
 [INFO] > npm-run-all --parallel js-compile-*
 [INFO] 
 [INFO] 
-[INFO] > bootstrap@4.0.0 js-compile-standalone __CURRENT__/tobago-theme-charlotteville/target/bootstrap
-[INFO] > rollup --environment BUNDLE:false --config build/rollup.config.js --sourcemap
+[INFO] > bootstrap@4.0.0 js-compile-bundle __CURRENT__/tobago-theme-charlotteville/target/bootstrap
+[INFO] > rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap
 [INFO] 
 [INFO] 
 [INFO] > bootstrap@4.0.0 js-compile-plugins __CURRENT__/tobago-theme-charlotteville/target/bootstrap
 [INFO] > cross-env PLUGINS=true babel js/src/ --out-dir js/dist/ --source-maps
 [INFO] 
 [INFO] 
-[INFO] > bootstrap@4.0.0 js-compile-bundle __CURRENT__/tobago-theme-charlotteville/target/bootstrap
-[INFO] > rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap
+[INFO] > bootstrap@4.0.0 js-compile-standalone __CURRENT__/tobago-theme-charlotteville/target/bootstrap
+[INFO] > rollup --environment BUNDLE:false --config build/rollup.config.js --sourcemap
 [INFO] 
 [ERROR] 
-[ERROR] __CURRENT__/tobago-theme-charlotteville/target/bootstrap/js/src/index.js → dist/js/bootstrap.js...
-[ERROR] 
 [ERROR] __CURRENT__/tobago-theme-charlotteville/target/bootstrap/js/src/index.js → dist/js/bootstrap.bundle.js...
+[ERROR] 
+[ERROR] __CURRENT__/tobago-theme-charlotteville/target/bootstrap/js/src/index.js → dist/js/bootstrap.js...
 [INFO] js/src/alert.js -> js/dist/alert.js
 [INFO] js/src/button.js -> js/dist/button.js
 [INFO] js/src/carousel.js -> js/dist/carousel.js
@@ -154,21 +154,21 @@ Build date: 2018-02-20 09:51:07
 [INFO] js/src/tab.js -> js/dist/tab.js
 [INFO] js/src/tooltip.js -> js/dist/tooltip.js
 [INFO] js/src/util.js -> js/dist/util.js
-[ERROR] created dist/js/bootstrap.js in 2.2s
-[ERROR] created dist/js/bootstrap.bundle.js in 2.4s
+[ERROR] created dist/js/bootstrap.js in 1.5s
+[ERROR] created dist/js/bootstrap.bundle.js in 1.6s
 [INFO] 
 [INFO] > bootstrap@4.0.0 js-minify __CURRENT__/tobago-theme-charlotteville/target/bootstrap
 [INFO] > npm-run-all --parallel js-minify-*
 [INFO] 
 [INFO] 
-[INFO] > bootstrap@4.0.0 js-minify-standalone __CURRENT__/tobago-theme-charlotteville/target/bootstrap
-[INFO] > uglifyjs --compress typeofs=false --mangle --comments "/^!/" --source-map "content=dist/js/bootstrap.js.map,includeSources,url=bootstrap.min.js.map" --output dist/js/bootstrap.min.js dist/js/bootstrap.js
-[INFO] 
-[INFO] 
 [INFO] > bootstrap@4.0.0 js-minify-docs __CURRENT__/tobago-theme-charlotteville/target/bootstrap
 [INFO] > uglifyjs --mangle --comments "/^!/" --output assets/js/docs.min.js assets/js/vendor/anchor.min.js assets/js/vendor/clipboard.min.js assets/js/vendor/holder.min.js "assets/js/src/*.js"
 [INFO] 
 [INFO] 
+[INFO] > bootstrap@4.0.0 js-minify-standalone __CURRENT__/tobago-theme-charlotteville/target/bootstrap
+[INFO] > uglifyjs --compress typeofs=false --mangle --comments "/^!/" --source-map "content=dist/js/bootstrap.js.map,includeSources,url=bootstrap.min.js.map" --output dist/js/bootstrap.min.js dist/js/bootstrap.js
+[INFO] 
+[INFO] 
 [INFO] > bootstrap@4.0.0 js-minify-bundle __CURRENT__/tobago-theme-charlotteville/target/bootstrap
 [INFO] > uglifyjs --compress typeofs=false --mangle --comments "/^!/" --source-map "content=dist/js/bootstrap.bundle.js.map,includeSources,url=bootstrap.bundle.min.js.map" --output dist/js/bootstrap.bundle.min.js dist/js/bootstrap.bundle.js
 [INFO] 
@@ -218,7 +218,7 @@ main:
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESS
 [INFO] ------------------------------------------------------------------------
-[INFO] Total time: 46.544 s
-[INFO] Finished at: 2018-02-20T09:51:54+01:00
-[INFO] Final Memory: 31M/538M
+[INFO] Total time: 52.679 s
+[INFO] Finished at: 2018-02-21T14:52:23+01:00
+[INFO] Final Memory: 30M/523M
 [INFO] ------------------------------------------------------------------------
diff --git a/tobago-theme/tobago-theme-roxborough/rebuild-theme.txt b/tobago-theme/tobago-theme-roxborough/rebuild-theme.txt
index 2f8c9b1..7fbb9f6 100644
--- a/tobago-theme/tobago-theme-roxborough/rebuild-theme.txt
+++ b/tobago-theme/tobago-theme-roxborough/rebuild-theme.txt
@@ -1,4 +1,4 @@
-Build date: 2018-02-20 09:51:55
+Build date: 2018-02-21 14:52:23
 [INFO] Scanning for projects...
 [INFO] 
 [INFO] ------------------------------------------------------------------------
@@ -64,12 +64,12 @@ Build date: 2018-02-20 09:51:55
 [INFO] > nodemon@1.14.10 postinstall __CURRENT__/tobago-theme-roxborough/target/bootstrap/node_modules/nodemon
 [INFO] > node -e "console.log('\u001b[32mLove nodemon? You can now support the project via the open collective:\u001b[22m\u001b[39m\n > \u001b[96m\u001b[1mhttps://opencollective.com/nodemon/donate\u001b[0m\n')" || exit 0
 [INFO] 
-[INFO] Love nodemon? You can now support the project via the open collective:
-[INFO]  > https://opencollective.com/nodemon/donate
+[INFO] Love nodemon? You can now support the project via the open collective:
+[INFO]  > https://opencollective.com/nodemon/donate
 [INFO] 
 [WARNING] npm WARN bootstrap@4.0.0 requires a peer of jquery@1.9.1 - 3 but none is installed. You must install peer dependencies yourself.
 [ERROR] 
-[INFO] added 1405 packages in 13.811s
+[INFO] added 1405 packages in 28.638s
 [INFO] 
 [INFO] --- frontend-maven-plugin:1.6:npm (step #8: npm run css-compile) @ tobago-theme-roxborough ---
 [INFO] Running 'npm run css-compile' in __CURRENT__/tobago-theme-roxborough/target/bootstrap
@@ -78,14 +78,14 @@ Build date: 2018-02-20 09:51:55
 [INFO] > node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/bootstrap.scss dist/css/bootstrap.css && node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/bootstrap-grid.scss dist/css/bootstrap-grid.css && node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/bootstrap-reboot.scss dist/css/bootstrap-reboot.css
 [INFO] 
 [ERROR] Rendering Complete, saving .css file...
-[ERROR] Wrote Source Map to __CURRENT__/tobago-theme-roxborough/target/bootstrap/dist/css/bootstrap.css.map
 [ERROR] Wrote CSS to __CURRENT__/tobago-theme-roxborough/target/bootstrap/dist/css/bootstrap.css
+[ERROR] Wrote Source Map to __CURRENT__/tobago-theme-roxborough/target/bootstrap/dist/css/bootstrap.css.map
 [ERROR] Rendering Complete, saving .css file...
 [ERROR] Wrote Source Map to __CURRENT__/tobago-theme-roxborough/target/bootstrap/dist/css/bootstrap-grid.css.map
 [ERROR] Wrote CSS to __CURRENT__/tobago-theme-roxborough/target/bootstrap/dist/css/bootstrap-grid.css
 [ERROR] Rendering Complete, saving .css file...
-[ERROR] Wrote CSS to __CURRENT__/tobago-theme-roxborough/target/bootstrap/dist/css/bootstrap-reboot.css
 [ERROR] Wrote Source Map to __CURRENT__/tobago-theme-roxborough/target/bootstrap/dist/css/bootstrap-reboot.css.map
+[ERROR] Wrote CSS to __CURRENT__/tobago-theme-roxborough/target/bootstrap/dist/css/bootstrap-reboot.css
 [INFO] 
 [INFO] --- frontend-maven-plugin:1.6:npm (step #9: npm run css-prefix) @ tobago-theme-roxborough ---
 [INFO] Running 'npm run css-prefix' in __CURRENT__/tobago-theme-roxborough/target/bootstrap
@@ -93,9 +93,9 @@ Build date: 2018-02-20 09:51:55
 [INFO] > bootstrap@4.0.0 css-prefix __CURRENT__/tobago-theme-roxborough/target/bootstrap
 [INFO] > postcss --config build/postcss.config.js --replace "dist/css/*.css" "!dist/css/*.min.css"
 [INFO] 
-[ERROR] ✔ Finished dist/css/bootstrap-grid.css (1.16 s)
-[ERROR] ✔ Finished dist/css/bootstrap.css (1.16 s)
-[ERROR] ✔ Finished dist/css/bootstrap-reboot.css (1.16 s)
+[ERROR] ✔ Finished dist/css/bootstrap-reboot.css (861 ms)
+[ERROR] ✔ Finished dist/css/bootstrap-grid.css (863 ms)
+[ERROR] ✔ Finished dist/css/bootstrap.css (863 ms)
 [INFO] 
 [INFO] --- frontend-maven-plugin:1.6:npm (step #10: npm run css-minify) @ tobago-theme-roxborough ---
 [INFO] Running 'npm run css-minify' in __CURRENT__/tobago-theme-roxborough/target/bootstrap
@@ -150,17 +150,13 @@ Build date: 2018-02-20 09:51:55
 [INFO] js/src/tab.js -> js/dist/tab.js
 [INFO] js/src/tooltip.js -> js/dist/tooltip.js
 [INFO] js/src/util.js -> js/dist/util.js
-[ERROR] created dist/js/bootstrap.js in 1.6s
-[ERROR] created dist/js/bootstrap.bundle.js in 1.8s
+[ERROR] created dist/js/bootstrap.js in 1.5s
+[ERROR] created dist/js/bootstrap.bundle.js in 1.6s
 [INFO] 
 [INFO] > bootstrap@4.0.0 js-minify __CURRENT__/tobago-theme-roxborough/target/bootstrap
 [INFO] > npm-run-all --parallel js-minify-*
 [INFO] 
 [INFO] 
-[INFO] > bootstrap@4.0.0 js-minify-bundle __CURRENT__/tobago-theme-roxborough/target/bootstrap
-[INFO] > uglifyjs --compress typeofs=false --mangle --comments "/^!/" --source-map "content=dist/js/bootstrap.bundle.js.map,includeSources,url=bootstrap.bundle.min.js.map" --output dist/js/bootstrap.bundle.min.js dist/js/bootstrap.bundle.js
-[INFO] 
-[INFO] 
 [INFO] > bootstrap@4.0.0 js-minify-standalone __CURRENT__/tobago-theme-roxborough/target/bootstrap
 [INFO] > uglifyjs --compress typeofs=false --mangle --comments "/^!/" --source-map "content=dist/js/bootstrap.js.map,includeSources,url=bootstrap.min.js.map" --output dist/js/bootstrap.min.js dist/js/bootstrap.js
 [INFO] 
@@ -168,6 +164,10 @@ Build date: 2018-02-20 09:51:55
 [INFO] > bootstrap@4.0.0 js-minify-docs __CURRENT__/tobago-theme-roxborough/target/bootstrap
 [INFO] > uglifyjs --mangle --comments "/^!/" --output assets/js/docs.min.js assets/js/vendor/anchor.min.js assets/js/vendor/clipboard.min.js assets/js/vendor/holder.min.js "assets/js/src/*.js"
 [INFO] 
+[INFO] 
+[INFO] > bootstrap@4.0.0 js-minify-bundle __CURRENT__/tobago-theme-roxborough/target/bootstrap
+[INFO] > uglifyjs --compress typeofs=false --mangle --comments "/^!/" --source-map "content=dist/js/bootstrap.bundle.js.map,includeSources,url=bootstrap.bundle.min.js.map" --output dist/js/bootstrap.bundle.min.js dist/js/bootstrap.bundle.js
+[INFO] 
 [ERROR] INFO: Using input source map: dist/js/bootstrap.js.map
 [ERROR] INFO: Using input source map: dist/js/bootstrap.bundle.js.map
 [INFO] 
@@ -214,7 +214,7 @@ main:
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESS
 [INFO] ------------------------------------------------------------------------
-[INFO] Total time: 41.120 s
-[INFO] Finished at: 2018-02-20T09:52:37+01:00
-[INFO] Final Memory: 31M/410M
+[INFO] Total time: 53.600 s
+[INFO] Finished at: 2018-02-21T14:53:17+01:00
+[INFO] Final Memory: 32M/372M
 [INFO] ------------------------------------------------------------------------
diff --git a/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.css b/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.css
index 378789e..dc0d6e1 100644
--- a/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.css
+++ b/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.css
@@ -9515,6 +9515,10 @@ a.tobago-messages-button {
 
 /* object ----------------------------------------------------------------- */
 /* out -------------------------------------------------------------------- */
+.tobago-out {
+  display: inline-block;
+}
+
 .tobago-out-markup-strong {
   font-weight: bold;
 }
@@ -9938,6 +9942,28 @@ th.tobago-sheet-headerCell .tobago-out {
   overflow: hidden;
   -ms-flex-negative: 0;
   flex-shrink: 0;
+  display: block;
+}
+
+.tobago-sheet-headerCell > .tobago-sheet-header > * {
+  display: inline;
+}
+
+.tobago-sheet-header-markup-sortable::after {
+  content: "\f0dc";
+  font-family: FontAwesome;
+  color: #dee2e6;
+  margin-left: 1rem;
+}
+
+.tobago-sheet-header-markup-ascending::after {
+  content: "\f0de";
+  color: inherit;
+}
+
+.tobago-sheet-header-markup-descending::after {
+  content: "\f0dd";
+  color: inherit;
 }
 
 th.tobago-sheet-headerCell-markup-filler > .tobago-sheet-header {
@@ -10338,11 +10364,6 @@ th.tobago-sheet-headerCell-markup-filler > .tobago-sheet-header {
   margin-left: 20rem;
 }
 
-/* out -------------------------------------------------------------- */
-.tobago-out {
-  display: inline-block;
-}
-
 /* textarea --------------------------------------------------------- */
 /* facesMessages messageLayout focus shadows ------------------------ */
 .tobago-date-markup-fatal.border-danger:focus, .tobago-date-markup-error.border-danger:focus,
diff --git a/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.css.map b/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.css.map
index 0da5095..5b8ceee 100644
--- a/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.css.map
+++ b/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.css.map
@@ -1 +1 @@
-{"version":3,"sources":["bootstrap.css","../../scss/bootstrap.scss","../../scss/_custom.scss","../../scss/_root.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixi [...]
\ No newline at end of file
+{"version":3,"sources":["bootstrap.css","../../scss/bootstrap.scss","../../scss/_custom.scss","../../scss/_root.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixi [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.min.css b/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.min.css
index a11c2c0..3ef3062 100644
--- a/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.min.css
+++ b/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.min.css
@@ -3,5 +3,5 @@
  * Copyright 2011-2018 The Bootstrap Authors
  * Copyright 2011-2018 Twitter, Inc.
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */@font-face{font-family:Amaranth;font-style:normal;font-weight:400;src:url(../fonts/Amaranth-Regular.otf) format("opentype")}@font-face{font-family:Amaranth;font-style:normal;font-weight:700;src:url(../fonts/Amaranth-Bold.otf) format("opentype")}@font-face{font-family:Amaranth;font-style:italic;src:url(../fonts/Amaranth-Italic.otf) format("opentype")}@font-face{font-family:Amaranth;font-style:italic;font-weight:700;src:url(../fonts/Amaranth-BoldItalic.otf) format("opentype")}.tobago-bo [...]
+ */@font-face{font-family:Amaranth;font-style:normal;font-weight:400;src:url(../fonts/Amaranth-Regular.otf) format("opentype")}@font-face{font-family:Amaranth;font-style:normal;font-weight:700;src:url(../fonts/Amaranth-Bold.otf) format("opentype")}@font-face{font-family:Amaranth;font-style:italic;src:url(../fonts/Amaranth-Italic.otf) format("opentype")}@font-face{font-family:Amaranth;font-style:italic;font-weight:700;src:url(../fonts/Amaranth-BoldItalic.otf) format("opentype")}.tobago-bo [...]
 /*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.min.css.map b/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.min.css.map
index c540ede..f683e2b 100644
--- a/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.min.css.map
+++ b/tobago-theme/tobago-theme-roxborough/src/main/resources/META-INF/resources/tobago/roxborough/tobago-bootstrap/_version/css/bootstrap.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_custom.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_ [...]
\ No newline at end of file
+{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_custom.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_ [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-scarborough/rebuild-theme.txt b/tobago-theme/tobago-theme-scarborough/rebuild-theme.txt
index 8885871..63ad8e7 100644
--- a/tobago-theme/tobago-theme-scarborough/rebuild-theme.txt
+++ b/tobago-theme/tobago-theme-scarborough/rebuild-theme.txt
@@ -1,4 +1,4 @@
-Build date: 2018-02-20 09:52:37
+Build date: 2018-02-21 14:53:18
 [INFO] Scanning for projects...
 [INFO] 
 [INFO] ------------------------------------------------------------------------
@@ -64,12 +64,12 @@ Build date: 2018-02-20 09:52:37
 [INFO] > nodemon@1.14.10 postinstall __CURRENT__/tobago-theme-scarborough/target/bootstrap/node_modules/nodemon
 [INFO] > node -e "console.log('\u001b[32mLove nodemon? You can now support the project via the open collective:\u001b[22m\u001b[39m\n > \u001b[96m\u001b[1mhttps://opencollective.com/nodemon/donate\u001b[0m\n')" || exit 0
 [INFO] 
-[INFO] Love nodemon? You can now support the project via the open collective:
-[INFO]  > https://opencollective.com/nodemon/donate
+[INFO] Love nodemon? You can now support the project via the open collective:
+[INFO]  > https://opencollective.com/nodemon/donate
 [INFO] 
 [WARNING] npm WARN bootstrap@4.0.0 requires a peer of jquery@1.9.1 - 3 but none is installed. You must install peer dependencies yourself.
 [ERROR] 
-[INFO] added 1405 packages in 18.578s
+[INFO] added 1405 packages in 27.116s
 [INFO] 
 [INFO] --- frontend-maven-plugin:1.6:npm (step #8: npm run css-compile) @ tobago-theme-scarborough ---
 [INFO] Running 'npm run css-compile' in __CURRENT__/tobago-theme-scarborough/target/bootstrap
@@ -93,9 +93,9 @@ Build date: 2018-02-20 09:52:37
 [INFO] > bootstrap@4.0.0 css-prefix __CURRENT__/tobago-theme-scarborough/target/bootstrap
 [INFO] > postcss --config build/postcss.config.js --replace "dist/css/*.css" "!dist/css/*.min.css"
 [INFO] 
-[ERROR] ✔ Finished dist/css/bootstrap-grid.css (1.17 s)
-[ERROR] ✔ Finished dist/css/bootstrap-reboot.css (1.17 s)
-[ERROR] ✔ Finished dist/css/bootstrap.css (1.17 s)
+[ERROR] ✔ Finished dist/css/bootstrap-grid.css (927 ms)
+[ERROR] ✔ Finished dist/css/bootstrap-reboot.css (929 ms)
+[ERROR] ✔ Finished dist/css/bootstrap.css (929 ms)
 [INFO] 
 [INFO] --- frontend-maven-plugin:1.6:npm (step #10: npm run css-minify) @ tobago-theme-scarborough ---
 [INFO] Running 'npm run css-minify' in __CURRENT__/tobago-theme-scarborough/target/bootstrap
@@ -127,13 +127,13 @@ Build date: 2018-02-20 09:52:37
 [INFO] > rollup --environment BUNDLE:false --config build/rollup.config.js --sourcemap
 [INFO] 
 [INFO] 
-[INFO] > bootstrap@4.0.0 js-compile-plugins __CURRENT__/tobago-theme-scarborough/target/bootstrap
-[INFO] > cross-env PLUGINS=true babel js/src/ --out-dir js/dist/ --source-maps
-[INFO] 
-[INFO] 
 [INFO] > bootstrap@4.0.0 js-compile-bundle __CURRENT__/tobago-theme-scarborough/target/bootstrap
 [INFO] > rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap
 [INFO] 
+[INFO] 
+[INFO] > bootstrap@4.0.0 js-compile-plugins __CURRENT__/tobago-theme-scarborough/target/bootstrap
+[INFO] > cross-env PLUGINS=true babel js/src/ --out-dir js/dist/ --source-maps
+[INFO] 
 [ERROR] 
 [ERROR] __CURRENT__/tobago-theme-scarborough/target/bootstrap/js/src/index.js → dist/js/bootstrap.js...
 [ERROR] 
@@ -150,7 +150,7 @@ Build date: 2018-02-20 09:52:37
 [INFO] js/src/tab.js -> js/dist/tab.js
 [INFO] js/src/tooltip.js -> js/dist/tooltip.js
 [INFO] js/src/util.js -> js/dist/util.js
-[ERROR] created dist/js/bootstrap.js in 1.6s
+[ERROR] created dist/js/bootstrap.js in 1.7s
 [ERROR] created dist/js/bootstrap.bundle.js in 1.9s
 [INFO] 
 [INFO] > bootstrap@4.0.0 js-minify __CURRENT__/tobago-theme-scarborough/target/bootstrap
@@ -214,7 +214,7 @@ main:
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESS
 [INFO] ------------------------------------------------------------------------
-[INFO] Total time: 46.941 s
-[INFO] Finished at: 2018-02-20T09:53:25+01:00
-[INFO] Final Memory: 31M/416M
+[INFO] Total time: 53.124 s
+[INFO] Finished at: 2018-02-21T14:54:12+01:00
+[INFO] Final Memory: 32M/379M
 [INFO] ------------------------------------------------------------------------
diff --git a/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.css b/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.css
index e07d61e..a855cb3 100644
--- a/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.css
+++ b/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.css
@@ -9518,6 +9518,10 @@ a.tobago-messages-button {
 
 /* object ----------------------------------------------------------------- */
 /* out -------------------------------------------------------------------- */
+.tobago-out {
+  display: inline-block;
+}
+
 .tobago-out-markup-strong {
   font-weight: bold;
 }
@@ -9941,6 +9945,28 @@ th.tobago-sheet-headerCell .tobago-out {
   overflow: hidden;
   -ms-flex-negative: 0;
   flex-shrink: 0;
+  display: block;
+}
+
+.tobago-sheet-headerCell > .tobago-sheet-header > * {
+  display: inline;
+}
+
+.tobago-sheet-header-markup-sortable::after {
+  content: "\f0dc";
+  font-family: FontAwesome;
+  color: #dee2e6;
+  margin-left: 1rem;
+}
+
+.tobago-sheet-header-markup-ascending::after {
+  content: "\f0de";
+  color: inherit;
+}
+
+.tobago-sheet-header-markup-descending::after {
+  content: "\f0dd";
+  color: inherit;
 }
 
 th.tobago-sheet-headerCell-markup-filler > .tobago-sheet-header {
@@ -10341,11 +10367,6 @@ th.tobago-sheet-headerCell-markup-filler > .tobago-sheet-header {
   margin-left: 20rem;
 }
 
-/* out -------------------------------------------------------------- */
-.tobago-out {
-  display: inline-block;
-}
-
 /* textarea --------------------------------------------------------- */
 /* facesMessages messageLayout focus shadows ------------------------ */
 .tobago-date-markup-fatal.border-danger:focus, .tobago-date-markup-error.border-danger:focus,
diff --git a/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.css.map b/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.css.map
index 4bc8372..2a6bedc 100644
--- a/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.css.map
+++ b/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.css.map
@@ -1 +1 @@
-{"version":3,"sources":["bootstrap.css","../../scss/bootstrap.scss","../../scss/_custom.scss","../../scss/_root.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixi [...]
\ No newline at end of file
+{"version":3,"sources":["bootstrap.css","../../scss/bootstrap.scss","../../scss/_custom.scss","../../scss/_root.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixi [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.min.css b/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.min.css
index 0e99ffd..9a2507e 100644
--- a/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.min.css
+++ b/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.min.css
@@ -3,5 +3,5 @@
  * Copyright 2011-2018 The Bootstrap Authors
  * Copyright 2011-2018 Twitter, Inc.
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-s [...]
+ */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-s [...]
 /*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.min.css.map b/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.min.css.map
index ca1f6a4..ec419ce 100644
--- a/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.min.css.map
+++ b/tobago-theme/tobago-theme-scarborough/src/main/resources/META-INF/resources/tobago/scarborough/tobago-bootstrap/_version/css/bootstrap.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../. [...]
\ No newline at end of file
+{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../. [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-speyside/rebuild-theme.txt b/tobago-theme/tobago-theme-speyside/rebuild-theme.txt
index a6ea0f8..fbd8e15 100644
--- a/tobago-theme/tobago-theme-speyside/rebuild-theme.txt
+++ b/tobago-theme/tobago-theme-speyside/rebuild-theme.txt
@@ -1,4 +1,4 @@
-Build date: 2018-02-20 09:53:26
+Build date: 2018-02-21 14:54:12
 [INFO] Scanning for projects...
 [INFO] 
 [INFO] ------------------------------------------------------------------------
@@ -64,12 +64,12 @@ Build date: 2018-02-20 09:53:26
 [INFO] > nodemon@1.14.10 postinstall __CURRENT__/tobago-theme-speyside/target/bootstrap/node_modules/nodemon
 [INFO] > node -e "console.log('\u001b[32mLove nodemon? You can now support the project via the open collective:\u001b[22m\u001b[39m\n > \u001b[96m\u001b[1mhttps://opencollective.com/nodemon/donate\u001b[0m\n')" || exit 0
 [INFO] 
-[INFO] Love nodemon? You can now support the project via the open collective:
-[INFO]  > https://opencollective.com/nodemon/donate
+[INFO] Love nodemon? You can now support the project via the open collective:
+[INFO]  > https://opencollective.com/nodemon/donate
 [INFO] 
 [WARNING] npm WARN bootstrap@4.0.0 requires a peer of jquery@1.9.1 - 3 but none is installed. You must install peer dependencies yourself.
 [ERROR] 
-[INFO] added 1405 packages in 15.06s
+[INFO] added 1405 packages in 27.446s
 [INFO] 
 [INFO] --- frontend-maven-plugin:1.6:npm (step #8: npm run css-compile) @ tobago-theme-speyside ---
 [INFO] Running 'npm run css-compile' in __CURRENT__/tobago-theme-speyside/target/bootstrap
@@ -93,9 +93,9 @@ Build date: 2018-02-20 09:53:26
 [INFO] > bootstrap@4.0.0 css-prefix __CURRENT__/tobago-theme-speyside/target/bootstrap
 [INFO] > postcss --config build/postcss.config.js --replace "dist/css/*.css" "!dist/css/*.min.css"
 [INFO] 
-[ERROR] ✔ Finished dist/css/bootstrap-grid.css (898 ms)
-[ERROR] ✔ Finished dist/css/bootstrap-reboot.css (900 ms)
-[ERROR] ✔ Finished dist/css/bootstrap.css (900 ms)
+[ERROR] ✔ Finished dist/css/bootstrap.css (966 ms)
+[ERROR] ✔ Finished dist/css/bootstrap-grid.css (969 ms)
+[ERROR] ✔ Finished dist/css/bootstrap-reboot.css (969 ms)
 [INFO] 
 [INFO] --- frontend-maven-plugin:1.6:npm (step #10: npm run css-minify) @ tobago-theme-speyside ---
 [INFO] Running 'npm run css-minify' in __CURRENT__/tobago-theme-speyside/target/bootstrap
@@ -123,14 +123,14 @@ Build date: 2018-02-20 09:53:26
 [INFO] > npm-run-all --parallel js-compile-*
 [INFO] 
 [INFO] 
-[INFO] > bootstrap@4.0.0 js-compile-bundle __CURRENT__/tobago-theme-speyside/target/bootstrap
-[INFO] > rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap
-[INFO] 
-[INFO] 
 [INFO] > bootstrap@4.0.0 js-compile-standalone __CURRENT__/tobago-theme-speyside/target/bootstrap
 [INFO] > rollup --environment BUNDLE:false --config build/rollup.config.js --sourcemap
 [INFO] 
 [INFO] 
+[INFO] > bootstrap@4.0.0 js-compile-bundle __CURRENT__/tobago-theme-speyside/target/bootstrap
+[INFO] > rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap
+[INFO] 
+[INFO] 
 [INFO] > bootstrap@4.0.0 js-compile-plugins __CURRENT__/tobago-theme-speyside/target/bootstrap
 [INFO] > cross-env PLUGINS=true babel js/src/ --out-dir js/dist/ --source-maps
 [INFO] 
@@ -150,8 +150,8 @@ Build date: 2018-02-20 09:53:26
 [INFO] js/src/tab.js -> js/dist/tab.js
 [INFO] js/src/tooltip.js -> js/dist/tooltip.js
 [INFO] js/src/util.js -> js/dist/util.js
-[ERROR] created dist/js/bootstrap.js in 2s
-[ERROR] created dist/js/bootstrap.bundle.js in 2.3s
+[ERROR] created dist/js/bootstrap.js in 1.5s
+[ERROR] created dist/js/bootstrap.bundle.js in 1.7s
 [INFO] 
 [INFO] > bootstrap@4.0.0 js-minify __CURRENT__/tobago-theme-speyside/target/bootstrap
 [INFO] > npm-run-all --parallel js-minify-*
@@ -168,8 +168,8 @@ Build date: 2018-02-20 09:53:26
 [INFO] > bootstrap@4.0.0 js-minify-docs __CURRENT__/tobago-theme-speyside/target/bootstrap
 [INFO] > uglifyjs --mangle --comments "/^!/" --output assets/js/docs.min.js assets/js/vendor/anchor.min.js assets/js/vendor/clipboard.min.js assets/js/vendor/holder.min.js "assets/js/src/*.js"
 [INFO] 
-[ERROR] INFO: Using input source map: dist/js/bootstrap.bundle.js.map
 [ERROR] INFO: Using input source map: dist/js/bootstrap.js.map
+[ERROR] INFO: Using input source map: dist/js/bootstrap.bundle.js.map
 [INFO] 
 [INFO] --- maven-resources-plugin:2.7:resources (default-resources) @ tobago-theme-speyside ---
 [INFO] Using 'UTF-8' encoding to copy filtered resources.
@@ -214,7 +214,7 @@ main:
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESS
 [INFO] ------------------------------------------------------------------------
-[INFO] Total time: 41.454 s
-[INFO] Finished at: 2018-02-20T09:54:09+01:00
-[INFO] Final Memory: 32M/424M
+[INFO] Total time: 53.964 s
+[INFO] Finished at: 2018-02-21T14:55:07+01:00
+[INFO] Final Memory: 32M/392M
 [INFO] ------------------------------------------------------------------------
diff --git a/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.css b/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.css
index 961567d..329d6f5 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.css
+++ b/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.css
@@ -9275,6 +9275,10 @@ a.tobago-messages-button {
 
 /* object ----------------------------------------------------------------- */
 /* out -------------------------------------------------------------------- */
+.tobago-out {
+  display: inline-block;
+}
+
 .tobago-out-markup-strong {
   font-weight: bold;
 }
@@ -9698,6 +9702,28 @@ th.tobago-sheet-headerCell .tobago-out {
   overflow: hidden;
   -ms-flex-negative: 0;
   flex-shrink: 0;
+  display: block;
+}
+
+.tobago-sheet-headerCell > .tobago-sheet-header > * {
+  display: inline;
+}
+
+.tobago-sheet-header-markup-sortable::after {
+  content: "\f0dc";
+  font-family: FontAwesome;
+  color: #d7d7d7;
+  margin-left: 1rem;
+}
+
+.tobago-sheet-header-markup-ascending::after {
+  content: "\f0de";
+  color: inherit;
+}
+
+.tobago-sheet-header-markup-descending::after {
+  content: "\f0dd";
+  color: inherit;
 }
 
 th.tobago-sheet-headerCell-markup-filler > .tobago-sheet-header {
@@ -10098,11 +10124,6 @@ th.tobago-sheet-headerCell-markup-filler > .tobago-sheet-header {
   margin-left: 20rem;
 }
 
-/* out -------------------------------------------------------------- */
-.tobago-out {
-  display: inline-block;
-}
-
 /* textarea --------------------------------------------------------- */
 /* facesMessages messageLayout focus shadows ------------------------ */
 .tobago-date-markup-fatal.border-danger:focus, .tobago-date-markup-error.border-danger:focus,
diff --git a/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.css.map b/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.css.map
index 9b5c93c..225c15a 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.css.map
+++ b/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.css.map
@@ -1 +1 @@
-{"version":3,"sources":["bootstrap.css","../../scss/bootstrap.scss","../../scss/_custom.scss","../../scss/_root.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_ta [...]
\ No newline at end of file
+{"version":3,"sources":["bootstrap.css","../../scss/bootstrap.scss","../../scss/_custom.scss","../../scss/_root.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_ta [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.min.css b/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.min.css
index 9c05131..738bfc6 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.min.css
+++ b/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.min.css
@@ -3,5 +3,5 @@
  * Copyright 2011-2018 The Bootstrap Authors
  * Copyright 2011-2018 Twitter, Inc.
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#185722;--secondary:#d7d7d7;--success:#1da332;--info:#5bc0de;--warning:#f0ad4e;--danger:#d30040;--light:#f7f7f7;--dark:#323232;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:verdana, [...]
+ */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#185722;--secondary:#d7d7d7;--success:#1da332;--info:#5bc0de;--warning:#f0ad4e;--danger:#d30040;--light:#f7f7f7;--dark:#323232;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:verdana, [...]
 /*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.min.css.map b/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.min.css.map
index a6ecf47..ab663b0 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.min.css.map
+++ b/tobago-theme/tobago-theme-speyside/src/main/resources/META-INF/resources/tobago/speyside/tobago-bootstrap/_version/css/bootstrap.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/ [...]
\ No newline at end of file
+{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/ [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/rebuild-theme.txt b/tobago-theme/tobago-theme-standard/rebuild-theme.txt
index 6622c63..e828afe 100644
--- a/tobago-theme/tobago-theme-standard/rebuild-theme.txt
+++ b/tobago-theme/tobago-theme-standard/rebuild-theme.txt
@@ -1,4 +1,4 @@
-Build date: 2018-02-20 09:54:09
+Build date: 2018-02-21 14:55:08
 [INFO] Scanning for projects...
 [INFO] 
 [INFO] ------------------------------------------------------------------------
@@ -64,12 +64,12 @@ Build date: 2018-02-20 09:54:09
 [INFO] > nodemon@1.14.10 postinstall __CURRENT__/tobago-theme-standard/target/bootstrap/node_modules/nodemon
 [INFO] > node -e "console.log('\u001b[32mLove nodemon? You can now support the project via the open collective:\u001b[22m\u001b[39m\n > \u001b[96m\u001b[1mhttps://opencollective.com/nodemon/donate\u001b[0m\n')" || exit 0
 [INFO] 
-[INFO] Love nodemon? You can now support the project via the open collective:
-[INFO]  > https://opencollective.com/nodemon/donate
+[INFO] Love nodemon? You can now support the project via the open collective:
+[INFO]  > https://opencollective.com/nodemon/donate
 [INFO] 
 [WARNING] npm WARN bootstrap@4.0.0 requires a peer of jquery@1.9.1 - 3 but none is installed. You must install peer dependencies yourself.
 [ERROR] 
-[INFO] added 1405 packages in 17.075s
+[INFO] added 1405 packages in 25.697s
 [INFO] 
 [INFO] --- frontend-maven-plugin:1.6:npm (step #8: npm run css-compile) @ tobago-theme-standard ---
 [INFO] Running 'npm run css-compile' in __CURRENT__/tobago-theme-standard/target/bootstrap
@@ -78,8 +78,8 @@ Build date: 2018-02-20 09:54:09
 [INFO] > node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/bootstrap.scss dist/css/bootstrap.css && node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/bootstrap-grid.scss dist/css/bootstrap-grid.css && node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/bootstrap-reboot.scss dist/css/bootstrap-reboot.css
 [INFO] 
 [ERROR] Rendering Complete, saving .css file...
-[ERROR] Wrote CSS to __CURRENT__/tobago-theme-standard/target/bootstrap/dist/css/bootstrap.css
 [ERROR] Wrote Source Map to __CURRENT__/tobago-theme-standard/target/bootstrap/dist/css/bootstrap.css.map
+[ERROR] Wrote CSS to __CURRENT__/tobago-theme-standard/target/bootstrap/dist/css/bootstrap.css
 [ERROR] Rendering Complete, saving .css file...
 [ERROR] Wrote Source Map to __CURRENT__/tobago-theme-standard/target/bootstrap/dist/css/bootstrap-grid.css.map
 [ERROR] Wrote CSS to __CURRENT__/tobago-theme-standard/target/bootstrap/dist/css/bootstrap-grid.css
@@ -93,9 +93,9 @@ Build date: 2018-02-20 09:54:09
 [INFO] > bootstrap@4.0.0 css-prefix __CURRENT__/tobago-theme-standard/target/bootstrap
 [INFO] > postcss --config build/postcss.config.js --replace "dist/css/*.css" "!dist/css/*.min.css"
 [INFO] 
-[ERROR] ✔ Finished dist/css/bootstrap-reboot.css (1.02 s)
-[ERROR] ✔ Finished dist/css/bootstrap-grid.css (1.02 s)
-[ERROR] ✔ Finished dist/css/bootstrap.css (1.02 s)
+[ERROR] ✔ Finished dist/css/bootstrap.css (954 ms)
+[ERROR] ✔ Finished dist/css/bootstrap-grid.css (957 ms)
+[ERROR] ✔ Finished dist/css/bootstrap-reboot.css (957 ms)
 [INFO] 
 [INFO] --- frontend-maven-plugin:1.6:npm (step #10: npm run css-minify) @ tobago-theme-standard ---
 [INFO] Running 'npm run css-minify' in __CURRENT__/tobago-theme-standard/target/bootstrap
@@ -123,10 +123,6 @@ Build date: 2018-02-20 09:54:09
 [INFO] > npm-run-all --parallel js-compile-*
 [INFO] 
 [INFO] 
-[INFO] > bootstrap@4.0.0 js-compile-bundle __CURRENT__/tobago-theme-standard/target/bootstrap
-[INFO] > rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap
-[INFO] 
-[INFO] 
 [INFO] > bootstrap@4.0.0 js-compile-standalone __CURRENT__/tobago-theme-standard/target/bootstrap
 [INFO] > rollup --environment BUNDLE:false --config build/rollup.config.js --sourcemap
 [INFO] 
@@ -134,10 +130,14 @@ Build date: 2018-02-20 09:54:09
 [INFO] > bootstrap@4.0.0 js-compile-plugins __CURRENT__/tobago-theme-standard/target/bootstrap
 [INFO] > cross-env PLUGINS=true babel js/src/ --out-dir js/dist/ --source-maps
 [INFO] 
-[ERROR] 
-[ERROR] __CURRENT__/tobago-theme-standard/target/bootstrap/js/src/index.js → dist/js/bootstrap.bundle.js...
+[INFO] 
+[INFO] > bootstrap@4.0.0 js-compile-bundle __CURRENT__/tobago-theme-standard/target/bootstrap
+[INFO] > rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap
+[INFO] 
 [ERROR] 
 [ERROR] __CURRENT__/tobago-theme-standard/target/bootstrap/js/src/index.js → dist/js/bootstrap.js...
+[ERROR] 
+[ERROR] __CURRENT__/tobago-theme-standard/target/bootstrap/js/src/index.js → dist/js/bootstrap.bundle.js...
 [INFO] js/src/alert.js -> js/dist/alert.js
 [INFO] js/src/button.js -> js/dist/button.js
 [INFO] js/src/carousel.js -> js/dist/carousel.js
@@ -150,31 +150,31 @@ Build date: 2018-02-20 09:54:09
 [INFO] js/src/tab.js -> js/dist/tab.js
 [INFO] js/src/tooltip.js -> js/dist/tooltip.js
 [INFO] js/src/util.js -> js/dist/util.js
-[ERROR] created dist/js/bootstrap.js in 2.1s
-[ERROR] created dist/js/bootstrap.bundle.js in 2.3s
+[ERROR] created dist/js/bootstrap.js in 1.5s
+[ERROR] created dist/js/bootstrap.bundle.js in 1.7s
 [INFO] 
 [INFO] > bootstrap@4.0.0 js-minify __CURRENT__/tobago-theme-standard/target/bootstrap
 [INFO] > npm-run-all --parallel js-minify-*
 [INFO] 
 [INFO] 
-[INFO] > bootstrap@4.0.0 js-minify-docs __CURRENT__/tobago-theme-standard/target/bootstrap
-[INFO] > uglifyjs --mangle --comments "/^!/" --output assets/js/docs.min.js assets/js/vendor/anchor.min.js assets/js/vendor/clipboard.min.js assets/js/vendor/holder.min.js "assets/js/src/*.js"
+[INFO] > bootstrap@4.0.0 js-minify-standalone __CURRENT__/tobago-theme-standard/target/bootstrap
+[INFO] > uglifyjs --compress typeofs=false --mangle --comments "/^!/" --source-map "content=dist/js/bootstrap.js.map,includeSources,url=bootstrap.min.js.map" --output dist/js/bootstrap.min.js dist/js/bootstrap.js
 [INFO] 
 [INFO] 
 [INFO] > bootstrap@4.0.0 js-minify-bundle __CURRENT__/tobago-theme-standard/target/bootstrap
 [INFO] > uglifyjs --compress typeofs=false --mangle --comments "/^!/" --source-map "content=dist/js/bootstrap.bundle.js.map,includeSources,url=bootstrap.bundle.min.js.map" --output dist/js/bootstrap.bundle.min.js dist/js/bootstrap.bundle.js
 [INFO] 
 [INFO] 
-[INFO] > bootstrap@4.0.0 js-minify-standalone __CURRENT__/tobago-theme-standard/target/bootstrap
-[INFO] > uglifyjs --compress typeofs=false --mangle --comments "/^!/" --source-map "content=dist/js/bootstrap.js.map,includeSources,url=bootstrap.min.js.map" --output dist/js/bootstrap.min.js dist/js/bootstrap.js
+[INFO] > bootstrap@4.0.0 js-minify-docs __CURRENT__/tobago-theme-standard/target/bootstrap
+[INFO] > uglifyjs --mangle --comments "/^!/" --output assets/js/docs.min.js assets/js/vendor/anchor.min.js assets/js/vendor/clipboard.min.js assets/js/vendor/holder.min.js "assets/js/src/*.js"
 [INFO] 
-[ERROR] INFO: Using input source map: dist/js/bootstrap.bundle.js.map
 [ERROR] INFO: Using input source map: dist/js/bootstrap.js.map
+[ERROR] INFO: Using input source map: dist/js/bootstrap.bundle.js.map
 [INFO] 
 [INFO] --- maven-resources-plugin:2.7:resources (default-resources) @ tobago-theme-standard ---
 [INFO] Using 'UTF-8' encoding to copy filtered resources.
 [INFO] Copying 1 resource
-[INFO] Copying 57 resources
+[INFO] Copying 99 resources
 [INFO] Copying 3 resources
 [INFO] Copying 3 resources
 [INFO] 
@@ -193,10 +193,22 @@ Build date: 2018-02-20 09:54:09
 [INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/tether/1.1.1/css/tether-theme-basic.min.css is younger than original, use 'force' option or clean your target
 [INFO] tether-theme-arrows-dark.min.css (4681b) -> tether-theme-arrows-dark.min.min.css (4681b)[100%]
 [INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/tether/1.1.1/css/tether-theme-arrows.min.css is younger than original, use 'force' option or clean your target
-[INFO] bootstrap.min.css (167054b) -> bootstrap.min.min.css (166792b)[99%]
-[INFO] bootstrap.css (213744b) -> bootstrap.min.css (167291b)[78%]
+[INFO] bootstrap.min.css (167397b) -> bootstrap.min.min.css (167135b)[99%]
+[INFO] bootstrap.css (214078b) -> bootstrap.min.css (167634b)[78%]
 [INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/4.7.0/css/font-awesome.min.css is younger than original, use 'force' option or clean your target
 [INFO] font-awesome.min.css (31000b) -> font-awesome.min.min.css (30990b)[99%]
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fa-svg-with-js.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fa-regular.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fa-solid.min.css is younger than original, use 'force' option or clean your target
+[INFO] fontawesome-all.min.css (34734b) -> fontawesome-all.min.min.css (34733b)[99%]
+[INFO] fontawesome.min.css (33369b) -> fontawesome.min.min.css (33368b)[99%]
+[INFO] fa-svg-with-js.min.css (5697b) -> fa-svg-with-js.min.min.css (5696b)[99%]
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fa-brands.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fontawesome-all.min.css is younger than original, use 'force' option or clean your target
+[INFO] fa-regular.min.css (648b) -> fa-regular.min.min.css (647b)[99%]
+[INFO] fa-solid.min.css (640b) -> fa-solid.min.min.css (639b)[99%]
+[INFO] fa-brands.min.css (630b) -> fa-brands.min.min.css (629b)[99%]
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fontawesome.min.css is younger than original, use 'force' option or clean your target
 [INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/bootstrap-datetimepicker/4.17.45/css/bootstrap-datetimepicker.min.css is younger than original, use 'force' option or clean your target
 [INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/bootstrap-datetimepicker/4.17.45/css/bootstrap-datetimepicker.min.min.css is younger than original, use 'force' option or clean your target
 [INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/tether/1.1.1/css/tether-theme-basic.min.min.css is younger than original, use 'force' option or clean your target
@@ -207,11 +219,23 @@ Build date: 2018-02-20 09:54:09
 [INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/tether/1.1.1/css/tether-theme-basic.min.css is younger than original, use 'force' option or clean your target
 [INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/tether/1.1.1/css/tether-theme-arrows-dark.min.min.css is younger than original, use 'force' option or clean your target
 [INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/tether/1.1.1/css/tether-theme-arrows.min.css is younger than original, use 'force' option or clean your target
-[INFO] bootstrap.min.css (167054b) -> bootstrap.min.min.css (166792b)[99%]
-[INFO] bootstrap.css (213744b) -> bootstrap.min.css (167291b)[78%]
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.min.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.min.css is younger than original, use 'force' option or clean your target
 [INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/4.7.0/css/font-awesome.min.css is younger than original, use 'force' option or clean your target
 [INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/4.7.0/css/font-awesome.min.min.css is younger than original, use 'force' option or clean your target
-[INFO] total input (810512b) -> output (717014b)[88%]
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fa-svg-with-js.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fa-regular.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fa-solid.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fontawesome-all.min.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fontawesome.min.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fa-svg-with-js.min.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fa-brands.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fontawesome-all.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fa-regular.min.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fa-solid.min.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fa-brands.min.min.css is younger than original, use 'force' option or clean your target
+[INFO] nothing to do, __CURRENT__/tobago-theme-standard/target/classes/META-INF/resources/tobago/standard/font-awesome/5.0.6/css/fontawesome.min.css is younger than original, use 'force' option or clean your target
+[INFO] total input (506109b) -> output (459329b)[90%]
 [INFO] nb warnings: 0, nb errors: 0
 [INFO] 
 [INFO] --- maven-compiler-plugin:3.6.2:compile (default-compile) @ tobago-theme-standard ---
@@ -246,7 +270,7 @@ main:
  T E S T S
 -------------------------------------------------------
 Running org.apache.myfaces.tobago.renderkit.css.BootstrapClassUnitTest
-Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.265 sec - in org.apache.myfaces.tobago.renderkit.css.BootstrapClassUnitTest
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.261 sec - in org.apache.myfaces.tobago.renderkit.css.BootstrapClassUnitTest
 
 Results :
 
@@ -265,7 +289,7 @@ Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESS
 [INFO] ------------------------------------------------------------------------
-[INFO] Total time: 47.866 s
-[INFO] Finished at: 2018-02-20T09:54:58+01:00
-[INFO] Final Memory: 43M/796M
+[INFO] Total time: 55.833 s
+[INFO] Finished at: 2018-02-21T14:56:05+01:00
+[INFO] Final Memory: 41M/604M
 [INFO] ------------------------------------------------------------------------
diff --git a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.css b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.css
index 5100c30..9fd64ea 100644
--- a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.css
+++ b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.css
@@ -9484,6 +9484,10 @@ a.tobago-messages-button {
 
 /* object ----------------------------------------------------------------- */
 /* out -------------------------------------------------------------------- */
+.tobago-out {
+  display: inline-block;
+}
+
 .tobago-out-markup-strong {
   font-weight: bold;
 }
@@ -9907,6 +9911,28 @@ th.tobago-sheet-headerCell .tobago-out {
   overflow: hidden;
   -ms-flex-negative: 0;
   flex-shrink: 0;
+  display: block;
+}
+
+.tobago-sheet-headerCell > .tobago-sheet-header > * {
+  display: inline;
+}
+
+.tobago-sheet-header-markup-sortable::after {
+  content: "\f0dc";
+  font-family: FontAwesome;
+  color: #dee2e6;
+  margin-left: 1rem;
+}
+
+.tobago-sheet-header-markup-ascending::after {
+  content: "\f0de";
+  color: inherit;
+}
+
+.tobago-sheet-header-markup-descending::after {
+  content: "\f0dd";
+  color: inherit;
 }
 
 th.tobago-sheet-headerCell-markup-filler > .tobago-sheet-header {
@@ -10307,11 +10333,6 @@ th.tobago-sheet-headerCell-markup-filler > .tobago-sheet-header {
   margin-left: 20rem;
 }
 
-/* out -------------------------------------------------------------- */
-.tobago-out {
-  display: inline-block;
-}
-
 /* textarea --------------------------------------------------------- */
 /* facesMessages messageLayout focus shadows ------------------------ */
 .tobago-date-markup-fatal.border-danger:focus, .tobago-date-markup-error.border-danger:focus,
diff --git a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.css.map b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.css.map
index e4895be..ecce3a9 100644
--- a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.css.map
+++ b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.css.map
@@ -1 +1 @@
-{"version":3,"sources":["bootstrap.css","../../scss/bootstrap.scss","../../scss/_custom.scss","../../scss/_root.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixi [...]
\ No newline at end of file
+{"version":3,"sources":["bootstrap.css","../../scss/bootstrap.scss","../../scss/_custom.scss","../../scss/_root.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixi [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.min.css b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.min.css
index 1794e00..792baad 100644
--- a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.min.css
+++ b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.min.css
@@ -3,5 +3,5 @@
  * Copyright 2011-2018 The Bootstrap Authors
  * Copyright 2011-2018 Twitter, Inc.
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-s [...]
+ */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-s [...]
 /*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.min.css.map b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.min.css.map
index 35895c1..4b30115 100644
--- a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.min.css.map
+++ b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/css/bootstrap.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../. [...]
\ No newline at end of file
+{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../. [...]
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
lofwyr@apache.org.

[myfaces-tobago] 02/04: Better sorter

Posted by lo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lofwyr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git

commit d0042c8a1d7cb167568fbdefd586e8638deae65b
Author: Udo Schnurpfeil <lo...@apache.org>
AuthorDate: Wed Feb 21 18:55:40 2018 +0100

    Better sorter
    
    TOBAGO-1847: Sorting in sheet doesn't work with multi header
---
 .../60-multiheader/sheet-multi-header.xhtml        | 24 +++++++++++-----------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/60-multiheader/sheet-multi-header.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/60-multiheader/sheet-multi-header.xhtml
index e1a97ec..a3c9867 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/60-multiheader/sheet-multi-header.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/60-multiheader/sheet-multi-header.xhtml
@@ -92,32 +92,32 @@
         </tc:panel>
       </f:facet>
 
-      <tc:column align="center">
-        #{luminary.name}
+      <tc:column id="c_name" align="center" sortable="true">
+        <tc:out value="#{luminary.name}" labelLayout="skip"/>
       </tc:column>
-      <tc:column sortable="true">
-        #{luminary.orbit}
+      <tc:column id="c_orbit" sortable="true">
+        <tc:out value="#{luminary.orbit}" labelLayout="skip"/>
       </tc:column>
-      <tc:column align="center">
-        #{luminary.number}
+      <tc:column  id="c_number" align="center">
+        <tc:out value="#{luminary.number}" labelLayout="skip"/>
       </tc:column>
       <tc:column align="right" sortable="true">
-        #{luminary.distance}
+        <tc:out value="#{luminary.distance}" labelLayout="skip"/>
       </tc:column>
       <tc:column align="right" sortable="true">
-        #{luminary.period}
+        <tc:out value="#{luminary.period}" labelLayout="skip"/>
       </tc:column>
       <tc:column align="right" sortable="true">
-        #{luminary.incl}
+        <tc:out value="#{luminary.incl}" labelLayout="skip"/>
       </tc:column>
       <tc:column align="right" sortable="true">
-        #{luminary.eccen}
+        <tc:out value="#{luminary.eccen}" labelLayout="skip"/>
       </tc:column>
       <tc:column sortable="true">
-        #{luminary.discoverer}
+        <tc:out value="#{luminary.discoverer}" labelLayout="skip"/>
       </tc:column>
       <tc:column align="center" sortable="true">
-        #{luminary.discoverYear}
+        <tc:out value="#{luminary.discoverYear}" labelLayout="skip"/>
       </tc:column>
     </tc:sheet>
   </tc:section>

-- 
To stop receiving notification emails like this one, please contact
lofwyr@apache.org.