diff --git a/modules/system/assets/ui/docs/scoreboard.md b/modules/system/assets/ui/docs/scoreboard.md
index 3bae06666..33e985984 100644
--- a/modules/system/assets/ui/docs/scoreboard.md
+++ b/modules/system/assets/ui/docs/scoreboard.md
@@ -4,7 +4,6 @@ Scoreboard
# Example
-
diff --git a/modules/system/assets/ui/docs/tab.md b/modules/system/assets/ui/docs/tab.md
index f755debef..16c9357a6 100644
--- a/modules/system/assets/ui/docs/tab.md
+++ b/modules/system/assets/ui/docs/tab.md
@@ -1,32 +1,159 @@
-# Tabs
+# Tab control
-## Content tabs
+This plugin is a wrapper for the Twitter Bootstrap Tab component. It provides the following features:
-Content tabs are heavier tabs designed for displaying content.
+- Adding tabs
+- Optional close icons with 2 states (modified / unmodified). The icon state can be changed by triggering the modified.oc.tab/unmodified.oc.tab events on any element within tab, or on the tab itself.
+- Removing tabs with the Close icon, or with triggering an event from inside a tab pane or tab. The removing can be canceled if the confirm.oc.tab event handler returns false.
+- Scrolling tabs if they do not fit the screen
+- Collapsible tabs
+
+### Supported data attributes:
+
+- data-control="tab" - creates the tab control from an element
+- data-closable - enables the Close Tab feature
+- data-pane-classes - a list of CSS classes to apply new pane elements
+
+Example with data attributes (data-control="tab"):
+
+
+
+### JavaScript API:
+
+- $('#mytabs').ocTab({closable: true, closeConfirmation: 'Do you really want to close this tab? Unsaved data will be lost.'})
+- $('#mytabs').ocTab('addTab', 'Tab title', 'Tab content', identifier) - adds tab. The optional identifier parameter allows to associate a identifier with a tab. The identifier can be used with the goTo() method to find and open a tab by it's identifier.
+- $('#mytabs').ocTab('closeTab', '.nav-tabs > li.active', true) - closes a tab. The second argument can point to a tab or tab pane. The thrid argument determines whether the tab should be closed without the user confirmation. The default value is false.
+- $('.nav-tabs > li.active').trigger('close.oc.tab') - another way to close a tab. The event can be triggered on a tab, tab pane or any element inside a tab or tab pane.
+- $('#mytabs').ocTab('modifyTab', '.nav-tabs > li.active') - marks a tab as modified. Use the 'unmodifyTab' to mark a tab as unmodified.
+- $('.nav-tabs > li.active').trigger('modified.oc.tab') - another way to mark a tab as modified. The event can be triggered on a tab, tab pane or any element inside a tab or tab pane. Use the 'unmodified.oc.tab' to mark a tab as unmodified.
+- $('#mytabs').ocTab('goTo', 'someidentifier') - Finds a tab by it's identifier and opens it.
+- $('#mytabs').ocTab('goToPane', '.tab-content .tab-pane:first') - Opens a tab in context of it's content (pane element)
+
+### Supported options:
+
+ - closable - adds the "close" icon to the tab and lets users to close tabs. Corresponds the data-closable attribute.
+ - closeConfirmation - a confirmation to show when a user tries to close a modified tab. Corresponds the data-close-confirmation
+ attribute. The confirmation is displayed only if the tab was modified.
+ - slidable - allows the tabs to be switched with the swipe gesture on touch devices. Corresponds the data-slidable attribute.
+ - paneClasses - a list of CSS classes to apply new pane elements. Corresponds to the data-pane-classes attribute.
+ - maxTitleSymbols - the maximum number of characters in tab titles.
+ - titleAsFileNames - treat tab titles as file names. In this mode only the file name part is displayed in the tab, and the directory part
+ is hidden.
+
+### Supported events:
+
+- beforeClose.oc.tab - triggered on a tab pane element before tab is closed by the user. Call the event's
+ preventDefault() method to cancel the action.
+- afterAllClosed.oc.tab - triggered after all tabs have been closed
# Example
-
+
Master
+
+
-
- Tab one content
-
+ Tab one content
-
- Tab two content
-
+ Tab two content
-
- Tab three content
-
+ Tab three content
+
+
+
+
+
+
+
+
Primary
+
+
+
+
+
+ Tab one content
+
+
+ Tab two content
+
+
+ Tab three content
+
+
+
+
+
+
+
+
+
+
+
Secondary
+
+
+
+
+
+ Tab one content
+
+
+ Tab two content
+
+
+ Tab three content
+
+
+
+
+
+
+
+
+
+
+
Content
+
+
+
+
+
+ Tab one content
+
+
+ Tab two content
+
+
+ Tab three content
+
+
+
+
diff --git a/modules/backend/assets/images/primary-tab-shape.png b/modules/system/assets/ui/images/primary-tab-shape.png
similarity index 100%
rename from modules/backend/assets/images/primary-tab-shape.png
rename to modules/system/assets/ui/images/primary-tab-shape.png
diff --git a/modules/system/assets/ui/js/tab.js b/modules/system/assets/ui/js/tab.js
index 4cffd2d0b..ca3dc609f 100644
--- a/modules/system/assets/ui/js/tab.js
+++ b/modules/system/assets/ui/js/tab.js
@@ -1,71 +1,13 @@
/*
=require ../vendor/bootstrap/js/transition.js
=require ../vendor/bootstrap/js/tab.js
+=require toolbar.js
*/
-
/*
- * Tab control.
+ * Tab control
*
- * This plugin is a wrapper for the Twitter Bootstrap Tab component. It provides the following features:
- * - Adding tabs
- * - Optional close icons with 2 states (modified / unmodified). The icon state can be changed by
- * triggering the modified.oc.tab/unmodified.oc.tab events on any element within tab, or on the tab itself.
- * - Removing tabs with the Close icon, or with triggering an event from inside a tab pane or tab.
- * The removing can be canceled if the confirm.oc.tab event handler returns false.
- * - Scrolling tabs if they do not fit the screen
- * - Collapsible tabs
- *
- * Data attributes:
- * - data-control="tab" - creates the tab control from an element
- * - data-closable - enables the Close Tab feature
- * - data-pane-classes - a list of CSS classes to apply new pane elements
- *
- * Example with data attributes (data-control="tab"):
- *
- *
- *
- * JavaScript methods:
- * - $('#mytabs').ocTab({closable: true, closeConfirmation: 'Do you really want to close this tab? Unsaved data will be lost.'})
- * - $('#mytabs').ocTab('addTab', 'Tab title', 'Tab content', identifier) - adds tab. The optional identifier parameter allows to
- associate a identifier with a tab. The identifier can be used with the goTo() method to find and open a tab by it's identifier.
- * - $('#mytabs').ocTab('closeTab', '.nav-tabs > li.active', true) - closes a tab. The second argument can point to a tab or tab pane.
- The thrid argument determines whether the tab should be closed without the user confirmation. The default value is false.
- * - $('.nav-tabs > li.active').trigger('close.oc.tab') - another way to close a tab. The event can be triggered on a tab, tab pane
- * or any element inside a tab or tab pane.
- * - $('#mytabs').ocTab('modifyTab', '.nav-tabs > li.active') - marks a tab as modified. Use the 'unmodifyTab' to mark a tab as unmodified.
- * - $('.nav-tabs > li.active').trigger('modified.oc.tab') - another way to mark a tab as modified. The event can be triggered on a tab, tab pane
- * or any element inside a tab or tab pane. Use the 'unmodified.oc.tab' to mark a tab as unmodified.
- * - $('#mytabs').ocTab('goTo', 'someidentifier') - Finds a tab by it's identifier and opens it.
- * - $('#mytabs').ocTab('goToPane', '.tab-content .tab-pane:first') - Opens a tab in context of it's content (pane element)
- *
- * Supported options:
- * - closable - adds the "close" icon to the tab and lets users to close tabs. Corresponds the data-closable attribute.
- * - closeConfirmation - a confirmation to show when a user tries to close a modified tab. Corresponds the data-close-confirmation
- * attribute. The confirmation is displayed only if the tab was modified.
- * - slidable - allows the tabs to be switched with the swipe gesture on touch devices. Corresponds the data-slidable attribute.
- * - paneClasses - a list of CSS classes to apply new pane elements. Corresponds to the data-pane-classes attribute.
- * - maxTitleSymbols - the maximum number of characters in tab titles.
- * - titleAsFileNames - treat tab titles as file names. In this mode only the file name part is displayed in the tab, and the directory part
- * is hidden.
- *
- * Events:
- * - beforeClose.oc.tab - triggered on a tab pane element before tab is closed by the user. Call the event's
- * preventDefault() method to cancel the action.
- * - afterAllClosed.oc.tab - triggered after all tabs have been closed
- *
- * Dependences:
- * - DragScroll (october.dragscroll.js)
- * - Toolbar (october.toolbar.js)
- * - Touchwipe (jquery.touchwipe.min.js)
+ * - Documentation: ../docs/tab.md
*/
-
+function ($) { "use strict";
var Tab = function (element, options) {
diff --git a/modules/system/assets/ui/less/list.less b/modules/system/assets/ui/less/list.less
index a3f99491a..05fb8991c 100644
--- a/modules/system/assets/ui/less/list.less
+++ b/modules/system/assets/ui/less/list.less
@@ -150,6 +150,12 @@ table.table.data {
}
}
+ tr.frozen {
+ td, th, td a, th a {
+ color: #337ab7;
+ }
+ }
+
tr.processing {
td, th, td a, th a {
color: #666666;
diff --git a/modules/system/assets/ui/less/tab.less b/modules/system/assets/ui/less/tab.less
index 604271abe..c5544c9ad 100644
--- a/modules/system/assets/ui/less/tab.less
+++ b/modules/system/assets/ui/less/tab.less
@@ -46,6 +46,7 @@
@nav-pills-active-link-hover-bg: @component-active-bg;
@nav-pills-active-link-hover-color: @component-active-color;
+@tab-image-path: @image-path;
.control-tabs {
position: relative;
@@ -206,7 +207,12 @@
}
}
- &.master {
+ //
+ // Master tabs
+ //
+
+ &.master, // Deprecated
+ &.master-tabs {
> ul.nav-tabs, > div > ul.nav-tabs, > div > div > ul.nav-tabs {
> li {
a {
@@ -224,13 +230,18 @@
}
}
- &.primary {
+ //
+ // Primary tabs
+ //
+
+ &.primary, // Deprecated
+ &.primary-tabs {
margin-bottom: 5px;
> ul.nav-tabs, > div > ul.nav-tabs, > div > div > ul.nav-tabs {
position: relative;
- margin-left: -20px;
- margin-right: -20px;
+ margin-left: 0;
+ margin-right: 0;
&:before {
position: absolute;
@@ -250,9 +261,9 @@
&:first-child {
margin-left: 0;
- padding-left: 15px!important;
+ padding-left: 15px !important;
}
-
+
a {
font-size: 12px;
padding-bottom: 3px;
@@ -274,7 +285,7 @@
&:before, &:after {
content: ' ';
position: absolute;
- background: transparent url(../images/primary-tab-shape.png?v2) no-repeat left -31px;
+ background: transparent url('@{tab-image-path}/primary-tab-shape.png') no-repeat left -31px;
width: 16px;
height: 26px;
display: block;
@@ -337,16 +348,21 @@
> div.tab-content {
}
- // Tabs to sit in by the standard offset (0px)
- &.tabs-offset {
+ // Tab divider to sit inset the standard padding (20px)
+ &.tabs-inset {
> ul.nav-tabs, > div > ul.nav-tabs, > div > div > ul.nav-tabs {
- margin-left: 0;
- margin-right: 0;
+ margin-left: -20px;
+ margin-right: -20px;
}
}
}
- &.secondary {
+ //
+ // Secondary tabs
+ //
+
+ &.secondary, // Deprecated
+ &.secondary-tabs {
> ul.nav-tabs, > div > ul.nav-tabs, > div > div > ul.nav-tabs {
> li {
padding-right: 10px;
@@ -368,6 +384,10 @@
}
}
+ //
+ // Content tabs
+ //
+
&.content-tabs {
> ul.nav-tabs {
@@ -425,6 +445,17 @@
}
}
+ // Tab divider to sit inset the standard padding (20px)
+ &.tabs-inset {
+ > ul.nav-tabs, > div > ul.nav-tabs, > div > div > ul.nav-tabs {
+ margin-left: -20px;
+ margin-right: -20px;
+ li:first-child {
+ margin-left: 20px;
+ }
+ }
+ }
+
// Tabs to sit in by the standard offset (20px)
&.tabs-offset {
> ul.nav-tabs {