From: John Spray Date: Wed, 2 Aug 2017 14:11:07 +0000 (+0100) Subject: mgr/dashboard: remove unneeded bits of AdminLTE X-Git-Tag: v12.2.3~225^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F19925%2Fhead;p=ceph.git mgr/dashboard: remove unneeded bits of AdminLTE AdminLTE is delivered in a handy all-in format, but we don't need all this stuff at runtime. Signed-off-by: John Spray (cherry picked from commit 38df5150ee026c6dc9ec763f757713c7e4d99cdb) --- diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/Gruntfile.js b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/Gruntfile.js deleted file mode 100644 index 05c94287c576..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/Gruntfile.js +++ /dev/null @@ -1,172 +0,0 @@ -// AdminLTE Gruntfile -module.exports = function (grunt) { - - 'use strict'; - - grunt.initConfig({ - watch: { - // If any .less file changes in directory "build/less/" run the "less"-task. - files: ["build/less/*.less", "build/less/skins/*.less", "dist/js/app.js"], - tasks: ["less", "uglify"] - }, - // "less"-task configuration - // This task will compile all less files upon saving to create both AdminLTE.css and AdminLTE.min.css - less: { - // Development not compressed - development: { - options: { - // Whether to compress or not - compress: false - }, - files: { - // compilation.css : source.less - "dist/css/AdminLTE.css": "build/less/AdminLTE.less", - //Non minified skin files - "dist/css/skins/skin-blue.css": "build/less/skins/skin-blue.less", - "dist/css/skins/skin-black.css": "build/less/skins/skin-black.less", - "dist/css/skins/skin-yellow.css": "build/less/skins/skin-yellow.less", - "dist/css/skins/skin-green.css": "build/less/skins/skin-green.less", - "dist/css/skins/skin-red.css": "build/less/skins/skin-red.less", - "dist/css/skins/skin-purple.css": "build/less/skins/skin-purple.less", - "dist/css/skins/skin-blue-light.css": "build/less/skins/skin-blue-light.less", - "dist/css/skins/skin-black-light.css": "build/less/skins/skin-black-light.less", - "dist/css/skins/skin-yellow-light.css": "build/less/skins/skin-yellow-light.less", - "dist/css/skins/skin-green-light.css": "build/less/skins/skin-green-light.less", - "dist/css/skins/skin-red-light.css": "build/less/skins/skin-red-light.less", - "dist/css/skins/skin-purple-light.css": "build/less/skins/skin-purple-light.less", - "dist/css/skins/_all-skins.css": "build/less/skins/_all-skins.less" - } - }, - // Production compresses version - production: { - options: { - // Whether to compress or not - compress: true - }, - files: { - // compilation.css : source.less - "dist/css/AdminLTE.min.css": "build/less/AdminLTE.less", - // Skins minified - "dist/css/skins/skin-blue.min.css": "build/less/skins/skin-blue.less", - "dist/css/skins/skin-black.min.css": "build/less/skins/skin-black.less", - "dist/css/skins/skin-yellow.min.css": "build/less/skins/skin-yellow.less", - "dist/css/skins/skin-green.min.css": "build/less/skins/skin-green.less", - "dist/css/skins/skin-red.min.css": "build/less/skins/skin-red.less", - "dist/css/skins/skin-purple.min.css": "build/less/skins/skin-purple.less", - "dist/css/skins/skin-blue-light.min.css": "build/less/skins/skin-blue-light.less", - "dist/css/skins/skin-black-light.min.css": "build/less/skins/skin-black-light.less", - "dist/css/skins/skin-yellow-light.min.css": "build/less/skins/skin-yellow-light.less", - "dist/css/skins/skin-green-light.min.css": "build/less/skins/skin-green-light.less", - "dist/css/skins/skin-red-light.min.css": "build/less/skins/skin-red-light.less", - "dist/css/skins/skin-purple-light.min.css": "build/less/skins/skin-purple-light.less", - "dist/css/skins/_all-skins.min.css": "build/less/skins/_all-skins.less" - } - } - }, - // Uglify task info. Compress the js files. - uglify: { - options: { - mangle: true, - preserveComments: 'some' - }, - my_target: { - files: { - 'dist/js/app.min.js': ['dist/js/app.js'] - } - } - }, - // Build the documentation files - includes: { - build: { - src: ['*.html'], // Source files - dest: 'documentation/', // Destination directory - flatten: true, - cwd: 'documentation/build', - options: { - silent: true, - includePath: 'documentation/build/include' - } - } - }, - - // Optimize images - image: { - dynamic: { - files: [{ - expand: true, - cwd: 'build/img/', - src: ['**/*.{png,jpg,gif,svg,jpeg}'], - dest: 'dist/img/' - }] - } - }, - - // Validate JS code - jshint: { - options: { - jshintrc: '.jshintrc' - }, - core: { - src: 'dist/js/app.js' - }, - demo: { - src: 'dist/js/demo.js' - }, - pages: { - src: 'dist/js/pages/*.js' - } - }, - - // Validate CSS files - csslint: { - options: { - csslintrc: 'build/less/.csslintrc' - }, - dist: [ - 'dist/css/AdminLTE.css', - ] - }, - - // Validate Bootstrap HTML - bootlint: { - options: { - relaxerror: ['W005'] - }, - files: ['pages/**/*.html', '*.html'] - }, - - // Delete images in build directory - // After compressing the images in the build/img dir, there is no need - // for them - clean: { - build: ["build/img/*"] - } - }); - - // Load all grunt tasks - - // LESS Compiler - grunt.loadNpmTasks('grunt-contrib-less'); - // Watch File Changes - grunt.loadNpmTasks('grunt-contrib-watch'); - // Compress JS Files - grunt.loadNpmTasks('grunt-contrib-uglify'); - // Include Files Within HTML - grunt.loadNpmTasks('grunt-includes'); - // Optimize images - grunt.loadNpmTasks('grunt-image'); - // Validate JS code - grunt.loadNpmTasks('grunt-contrib-jshint'); - // Delete not needed files - grunt.loadNpmTasks('grunt-contrib-clean'); - // Lint CSS - grunt.loadNpmTasks('grunt-contrib-csslint'); - // Lint Bootstrap - grunt.loadNpmTasks('grunt-bootlint'); - - // Linting task - grunt.registerTask('lint', ['jshint', 'csslint', 'bootlint']); - - // The default task (running "grunt" in console) is "watch" - grunt.registerTask('default', ['watch']); -}; diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/bower.json b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/bower.json deleted file mode 100644 index 4f2059f206cc..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/bower.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "AdminLTE", - "homepage": "http://almsaeedstudio.com", - "authors": [ - "Abdullah Almsaeed " - ], - "description": "Admin dashboard and control panel template", - "main": [ - "index2.html", - "dist/css/AdminLTE.css", - "dist/js/app.js", - "build/less/AdminLTE.less" - ], - "keywords": [ - "css", - "js", - "html", - "template", - "admin", - "bootstrap", - "theme", - "backend", - "responsive" - ], - "license": "MIT", - "ignore": [ - "/.*", - "node_modules", - "bower_components", - "composer.json", - "documentation" - ] -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins.less deleted file mode 100755 index 0cdf66e0ce29..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins.less +++ /dev/null @@ -1,36 +0,0 @@ -// Mixins -// -------------------------------------------------- -// Utilities -@import "mixins/hide-text.less"; -@import "mixins/opacity.less"; -@import "mixins/image.less"; -@import "mixins/labels.less"; -@import "mixins/reset-filter.less"; -@import "mixins/resize.less"; -@import "mixins/responsive-visibility.less"; -@import "mixins/size.less"; -@import "mixins/tab-focus.less"; -@import "mixins/reset-text.less"; -@import "mixins/text-emphasis.less"; -@import "mixins/text-overflow.less"; -@import "mixins/vendor-prefixes.less"; -// Components -@import "mixins/alerts.less"; -@import "mixins/buttons.less"; -@import "mixins/panels.less"; -@import "mixins/pagination.less"; -@import "mixins/list-group.less"; -@import "mixins/nav-divider.less"; -@import "mixins/forms.less"; -@import "mixins/progress-bar.less"; -@import "mixins/table-row.less"; -// Skins -@import "mixins/background-variant.less"; -@import "mixins/border-radius.less"; -@import "mixins/gradients.less"; -// Layout -@import "mixins/clearfix.less"; -@import "mixins/center-block.less"; -@import "mixins/nav-vertical-align.less"; -@import "mixins/grid-framework.less"; -@import "mixins/grid.less"; diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/alerts.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/alerts.less deleted file mode 100644 index 396196f438fd..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/alerts.less +++ /dev/null @@ -1,14 +0,0 @@ -// Alerts - -.alert-variant(@background; @border; @text-color) { - background-color: @background; - border-color: @border; - color: @text-color; - - hr { - border-top-color: darken(@border, 5%); - } - .alert-link { - color: darken(@text-color, 10%); - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/background-variant.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/background-variant.less deleted file mode 100755 index a85c22b74530..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/background-variant.less +++ /dev/null @@ -1,9 +0,0 @@ -// Contextual backgrounds - -.bg-variant(@color) { - background-color: @color; - a&:hover, - a&:focus { - background-color: darken(@color, 10%); - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/border-radius.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/border-radius.less deleted file mode 100644 index 727cc150e319..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/border-radius.less +++ /dev/null @@ -1,21 +0,0 @@ -// Single side border-radius - -.border-top-radius(@radius) { - border-top-right-radius: @radius; - border-top-left-radius: @radius; -} - -.border-right-radius(@radius) { - border-bottom-right-radius: @radius; - border-top-right-radius: @radius; -} - -.border-bottom-radius(@radius) { - border-bottom-right-radius: @radius; - border-bottom-left-radius: @radius; -} - -.border-left-radius(@radius) { - border-bottom-left-radius: @radius; - border-top-left-radius: @radius; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/buttons.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/buttons.less deleted file mode 100755 index cd9635a99a81..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/buttons.less +++ /dev/null @@ -1,68 +0,0 @@ -// Button variants -// -// Easily pump out default styles, as well as :hover, :focus, :active, -// and disabled options for all buttons - -.button-variant(@color; @background; @border) { - color: @color; - background-color: @background; - border-color: @border; - - &:focus, - &.focus { - color: @color; - background-color: darken(@background, 10%); - border-color: darken(@border, 25%); - } - &:hover { - color: @color; - background-color: darken(@background, 10%); - border-color: darken(@border, 12%); - } - &:active, - &.active, - .open > .dropdown-toggle& { - color: @color; - background-color: darken(@background, 10%); - border-color: darken(@border, 12%); - - &:hover, - &:focus, - &.focus { - color: @color; - background-color: darken(@background, 17%); - border-color: darken(@border, 25%); - } - } - &:active, - &.active, - .open > .dropdown-toggle& { - background-image: none; - } - &.disabled, - &[disabled], - fieldset[disabled] & { - &, - &:hover, - &:focus, - &.focus, - &:active, - &.active { - background-color: @background; - border-color: @border; - } - } - - .badge { - color: @background; - background-color: @color; - } -} - -// Button sizes -.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { - padding: @padding-vertical @padding-horizontal; - font-size: @font-size; - line-height: @line-height; - border-radius: @border-radius; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/center-block.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/center-block.less deleted file mode 100644 index d18d6de9ed6a..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/center-block.less +++ /dev/null @@ -1,7 +0,0 @@ -// Center-align a block level element - -.center-block() { - display: block; - margin-left: auto; - margin-right: auto; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/clearfix.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/clearfix.less deleted file mode 100644 index 3f7a3820c1cf..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/clearfix.less +++ /dev/null @@ -1,22 +0,0 @@ -// Clearfix -// -// For modern browsers -// 1. The space content is one way to avoid an Opera bug when the -// contenteditable attribute is included anywhere else in the document. -// Otherwise it causes space to appear at the top and bottom of elements -// that are clearfixed. -// 2. The use of `table` rather than `block` is only necessary if using -// `:before` to contain the top-margins of child elements. -// -// Source: http://nicolasgallagher.com/micro-clearfix-hack/ - -.clearfix() { - &:before, - &:after { - content: " "; // 1 - display: table; // 2 - } - &:after { - clear: both; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/forms.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/forms.less deleted file mode 100644 index 3e864e71e8d4..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/bootstrap-less/mixins/forms.less +++ /dev/null @@ -1,84 +0,0 @@ -// Form validation states -// -// Used in forms.less to generate the form validation CSS for warnings, errors, -// and successes. - -.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) { - // Color the label and help text - .help-block, - .control-label, - .radio, - .checkbox, - .radio-inline, - .checkbox-inline, - &.radio label, - &.checkbox label, - &.radio-inline label, - &.checkbox-inline label { - color: @text-color; - } - // Set the border and box shadow on specific inputs to match - .form-control { - border-color: @border-color; - .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075)); // Redeclare so transitions work - &:focus { - border-color: darken(@border-color, 10%); - @shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px lighten(@border-color, 20%); - .box-shadow(@shadow); - } - } - // Set validation states also for addons - .input-group-addon { - color: @text-color; - border-color: @border-color; - background-color: @background-color; - } - // Optional feedback icon - .form-control-feedback { - color: @text-color; - } -} - -// Form control focus state -// -// Generate a customized focus state and for any input with the specified color, -// which defaults to the `@input-border-focus` variable. -// -// We highly encourage you to not customize the default value, but instead use -// this to tweak colors on an as-needed basis. This aesthetic change is based on -// WebKit's default styles, but applicable to a wider range of browsers. Its -// usability and accessibility should be taken into account with any change. -// -// Example usage: change the default blue border and shadow to white for better -// contrast against a dark gray background. -.form-control-focus(@color: @input-border-focus) { - @color-rgba: rgba(red(@color), green(@color), blue(@color), .6); - &:focus { - border-color: @color; - outline: 0; - .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}"); - } -} - -// Form control sizing -// -// Relative text size, padding, and border-radii changes for form controls. For -// horizontal sizing, wrap controls in the predefined grid classes. `` background color -@input-bg: #fff; -//** `` background color -@input-bg-disabled: @gray-lighter; - -//** Text color for ``s -@input-color: @gray; -//** `` border color -@input-border: #ccc; - -// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4 -//** Default `.form-control` border radius -// This has no effect on ``s in CSS. -@input-border-radius: @border-radius-base; -//** Large `.form-control` border radius -@input-border-radius-large: @border-radius-large; -//** Small `.form-control` border radius -@input-border-radius-small: @border-radius-small; - -//** Border color for inputs on focus -@input-border-focus: #66afe9; - -//** Placeholder text color -@input-color-placeholder: #999; - -//** Default `.form-control` height -@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2); -//** Large `.form-control` height -@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2); -//** Small `.form-control` height -@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2); - -//** `.form-group` margin -@form-group-margin-bottom: 15px; - -@legend-color: @gray-dark; -@legend-border-color: #e5e5e5; - -//** Background color for textual input addons -@input-group-addon-bg: @gray-lighter; -//** Border color for textual input addons -@input-group-addon-border-color: @input-border; - -//** Disabled cursor for form controls and buttons. -@cursor-disabled: not-allowed; - -//== Dropdowns -// -//## Dropdown menu container and contents. - -//** Background for the dropdown menu. -@dropdown-bg: #fff; -//** Dropdown menu `border-color`. -@dropdown-border: rgba(0, 0, 0, .15); -//** Dropdown menu `border-color` **for IE8**. -@dropdown-fallback-border: #ccc; -//** Divider color for between dropdown items. -@dropdown-divider-bg: #e5e5e5; - -//** Dropdown link text color. -@dropdown-link-color: @gray-dark; -//** Hover color for dropdown links. -@dropdown-link-hover-color: darken(@gray-dark, 5%); -//** Hover background for dropdown links. -@dropdown-link-hover-bg: #f5f5f5; - -//** Active dropdown menu item text color. -@dropdown-link-active-color: @component-active-color; -//** Active dropdown menu item background color. -@dropdown-link-active-bg: @component-active-bg; - -//** Disabled dropdown menu item background color. -@dropdown-link-disabled-color: @gray-light; - -//** Text color for headers within dropdown menus. -@dropdown-header-color: @gray-light; - -//** Deprecated `@dropdown-caret-color` as of v3.1.0 -@dropdown-caret-color: #000; - -//-- Z-index master list -// -// Warning: Avoid customizing these values. They're used for a bird's eye view -// of components dependent on the z-axis and are designed to all work together. -// -// Note: These variables are not generated into the Customizer. - -@zindex-navbar: 1000; -@zindex-dropdown: 1000; -@zindex-popover: 1060; -@zindex-tooltip: 1070; -@zindex-navbar-fixed: 1030; -@zindex-modal-background: 1040; -@zindex-modal: 1050; - -//== Media queries breakpoints -// -//## Define the breakpoints at which your layout will change, adapting to different screen sizes. - -// Extra small screen / phone -//** Deprecated `@screen-xs` as of v3.0.1 -@screen-xs: 480px; -//** Deprecated `@screen-xs-min` as of v3.2.0 -@screen-xs-min: @screen-xs; -//** Deprecated `@screen-phone` as of v3.0.1 -@screen-phone: @screen-xs-min; - -// Small screen / tablet -//** Deprecated `@screen-sm` as of v3.0.1 -@screen-sm: 768px; -@screen-sm-min: @screen-sm; -//** Deprecated `@screen-tablet` as of v3.0.1 -@screen-tablet: @screen-sm-min; - -// Medium screen / desktop -//** Deprecated `@screen-md` as of v3.0.1 -@screen-md: 992px; -@screen-md-min: @screen-md; -//** Deprecated `@screen-desktop` as of v3.0.1 -@screen-desktop: @screen-md-min; - -// Large screen / wide desktop -//** Deprecated `@screen-lg` as of v3.0.1 -@screen-lg: 1200px; -@screen-lg-min: @screen-lg; -//** Deprecated `@screen-lg-desktop` as of v3.0.1 -@screen-lg-desktop: @screen-lg-min; - -// So media queries don't overlap when required, provide a maximum -@screen-xs-max: (@screen-sm-min - 1); -@screen-sm-max: (@screen-md-min - 1); -@screen-md-max: (@screen-lg-min - 1); - -//== Grid system -// -//## Define your custom responsive grid. - -//** Number of columns in the grid. -@grid-columns: 12; -//** Padding between columns. Gets divided in half for the left and right. -@grid-gutter-width: 30px; -// Navbar collapse -//** Point at which the navbar becomes uncollapsed. -@grid-float-breakpoint: @screen-sm-min; -//** Point at which the navbar begins collapsing. -@grid-float-breakpoint-max: (@grid-float-breakpoint - 1); - -//== Container sizes -// -//## Define the maximum width of `.container` for different screen sizes. - -// Small screen / tablet -@container-tablet: (720px + @grid-gutter-width); -//** For `@screen-sm-min` and up. -@container-sm: @container-tablet; - -// Medium screen / desktop -@container-desktop: (940px + @grid-gutter-width); -//** For `@screen-md-min` and up. -@container-md: @container-desktop; - -// Large screen / wide desktop -@container-large-desktop: (1140px + @grid-gutter-width); -//** For `@screen-lg-min` and up. -@container-lg: @container-large-desktop; - -//== Navbar -// -//## - -// Basics of a navbar -@navbar-height: 50px; -@navbar-margin-bottom: @line-height-computed; -@navbar-border-radius: @border-radius-base; -@navbar-padding-horizontal: floor((@grid-gutter-width / 2)); -@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2); -@navbar-collapse-max-height: 340px; - -@navbar-default-color: #777; -@navbar-default-bg: #f8f8f8; -@navbar-default-border: darken(@navbar-default-bg, 6.5%); - -// Navbar links -@navbar-default-link-color: #777; -@navbar-default-link-hover-color: #333; -@navbar-default-link-hover-bg: transparent; -@navbar-default-link-active-color: #555; -@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%); -@navbar-default-link-disabled-color: #ccc; -@navbar-default-link-disabled-bg: transparent; - -// Navbar brand label -@navbar-default-brand-color: @navbar-default-link-color; -@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%); -@navbar-default-brand-hover-bg: transparent; - -// Navbar toggle -@navbar-default-toggle-hover-bg: #ddd; -@navbar-default-toggle-icon-bar-bg: #888; -@navbar-default-toggle-border-color: #ddd; - -// Inverted navbar -// Reset inverted navbar basics -@navbar-inverse-color: lighten(@gray-light, 15%); -@navbar-inverse-bg: #222; -@navbar-inverse-border: darken(@navbar-inverse-bg, 10%); - -// Inverted navbar links -@navbar-inverse-link-color: lighten(@gray-light, 15%); -@navbar-inverse-link-hover-color: #fff; -@navbar-inverse-link-hover-bg: transparent; -@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color; -@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%); -@navbar-inverse-link-disabled-color: #444; -@navbar-inverse-link-disabled-bg: transparent; - -// Inverted navbar brand label -@navbar-inverse-brand-color: @navbar-inverse-link-color; -@navbar-inverse-brand-hover-color: #fff; -@navbar-inverse-brand-hover-bg: transparent; - -// Inverted navbar toggle -@navbar-inverse-toggle-hover-bg: #333; -@navbar-inverse-toggle-icon-bar-bg: #fff; -@navbar-inverse-toggle-border-color: #333; - -//== Navs -// -//## - -//=== Shared nav styles -@nav-link-padding: 10px 15px; -@nav-link-hover-bg: @gray-lighter; - -@nav-disabled-link-color: @gray-light; -@nav-disabled-link-hover-color: @gray-light; - -//== Tabs -@nav-tabs-border-color: #ddd; - -@nav-tabs-link-hover-border-color: @gray-lighter; - -@nav-tabs-active-link-hover-bg: @body-bg; -@nav-tabs-active-link-hover-color: @gray; -@nav-tabs-active-link-hover-border-color: #ddd; - -@nav-tabs-justified-link-border-color: #ddd; -@nav-tabs-justified-active-link-border-color: @body-bg; - -//== Pills -@nav-pills-border-radius: @border-radius-base; -@nav-pills-active-link-hover-bg: @component-active-bg; -@nav-pills-active-link-hover-color: @component-active-color; - -//== Pagination -// -//## - -@pagination-color: @link-color; -@pagination-bg: #fff; -@pagination-border: #ddd; - -@pagination-hover-color: @link-hover-color; -@pagination-hover-bg: @gray-lighter; -@pagination-hover-border: #ddd; - -@pagination-active-color: #fff; -@pagination-active-bg: @brand-primary; -@pagination-active-border: @brand-primary; - -@pagination-disabled-color: @gray-light; -@pagination-disabled-bg: #fff; -@pagination-disabled-border: #ddd; - -//== Pager -// -//## - -@pager-bg: @pagination-bg; -@pager-border: @pagination-border; -@pager-border-radius: 15px; - -@pager-hover-bg: @pagination-hover-bg; - -@pager-active-bg: @pagination-active-bg; -@pager-active-color: @pagination-active-color; - -@pager-disabled-color: @pagination-disabled-color; - -//== Jumbotron -// -//## - -@jumbotron-padding: 30px; -@jumbotron-color: inherit; -@jumbotron-bg: @gray-lighter; -@jumbotron-heading-color: inherit; -@jumbotron-font-size: ceil((@font-size-base * 1.5)); - -//== Form states and alerts -// -//## Define colors for form feedback states and, by default, alerts. - -@state-success-text: #3c763d; -@state-success-bg: #dff0d8; -@state-success-border: darken(spin(@state-success-bg, -10), 5%); - -@state-info-text: #31708f; -@state-info-bg: #d9edf7; -@state-info-border: darken(spin(@state-info-bg, -10), 7%); - -@state-warning-text: #8a6d3b; -@state-warning-bg: #fcf8e3; -@state-warning-border: darken(spin(@state-warning-bg, -10), 5%); - -@state-danger-text: #a94442; -@state-danger-bg: #f2dede; -@state-danger-border: darken(spin(@state-danger-bg, -10), 5%); - -//== Tooltips -// -//## - -//** Tooltip max width -@tooltip-max-width: 200px; -//** Tooltip text color -@tooltip-color: #fff; -//** Tooltip background color -@tooltip-bg: #000; -@tooltip-opacity: .9; - -//** Tooltip arrow width -@tooltip-arrow-width: 5px; -//** Tooltip arrow color -@tooltip-arrow-color: @tooltip-bg; - -//== Popovers -// -//## - -//** Popover body background color -@popover-bg: #fff; -//** Popover maximum width -@popover-max-width: 276px; -//** Popover border color -@popover-border-color: rgba(0, 0, 0, .2); -//** Popover fallback border color -@popover-fallback-border-color: #ccc; - -//** Popover title background color -@popover-title-bg: darken(@popover-bg, 3%); - -//** Popover arrow width -@popover-arrow-width: 10px; -//** Popover arrow color -@popover-arrow-color: @popover-bg; - -//** Popover outer arrow width -@popover-arrow-outer-width: (@popover-arrow-width + 1); -//** Popover outer arrow color -@popover-arrow-outer-color: fadein(@popover-border-color, 5%); -//** Popover outer arrow fallback color -@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%); - -//== Labels -// -//## - -//** Default label background color -@label-default-bg: @gray-light; -//** Primary label background color -@label-primary-bg: @brand-primary; -//** Success label background color -@label-success-bg: @brand-success; -//** Info label background color -@label-info-bg: @brand-info; -//** Warning label background color -@label-warning-bg: @brand-warning; -//** Danger label background color -@label-danger-bg: @brand-danger; - -//** Default label text color -@label-color: #fff; -//** Default text color of a linked label -@label-link-hover-color: #fff; - -//== Modals -// -//## - -//** Padding applied to the modal body -@modal-inner-padding: 15px; - -//** Padding applied to the modal title -@modal-title-padding: 15px; -//** Modal title line-height -@modal-title-line-height: @line-height-base; - -//** Background color of modal content area -@modal-content-bg: #fff; -//** Modal content border color -@modal-content-border-color: rgba(0, 0, 0, .2); -//** Modal content border color **for IE8** -@modal-content-fallback-border-color: #999; - -//** Modal backdrop background color -@modal-backdrop-bg: #000; -//** Modal backdrop opacity -@modal-backdrop-opacity: .5; -//** Modal header border color -@modal-header-border-color: #e5e5e5; -//** Modal footer border color -@modal-footer-border-color: @modal-header-border-color; - -@modal-lg: 900px; -@modal-md: 600px; -@modal-sm: 300px; - -//== Alerts -// -//## Define alert colors, border radius, and padding. - -@alert-padding: 15px; -@alert-border-radius: @border-radius-base; -@alert-link-font-weight: bold; - -@alert-success-bg: @state-success-bg; -@alert-success-text: @state-success-text; -@alert-success-border: @state-success-border; - -@alert-info-bg: @state-info-bg; -@alert-info-text: @state-info-text; -@alert-info-border: @state-info-border; - -@alert-warning-bg: @state-warning-bg; -@alert-warning-text: @state-warning-text; -@alert-warning-border: @state-warning-border; - -@alert-danger-bg: @state-danger-bg; -@alert-danger-text: @state-danger-text; -@alert-danger-border: @state-danger-border; - -//== Progress bars -// -//## - -//** Background color of the whole progress component -@progress-bg: #f5f5f5; -//** Progress bar text color -@progress-bar-color: #fff; -//** Variable for setting rounded corners on progress bar. -@progress-border-radius: @border-radius-base; - -//** Default progress bar color -@progress-bar-bg: @brand-primary; -//** Success progress bar color -@progress-bar-success-bg: @brand-success; -//** Warning progress bar color -@progress-bar-warning-bg: @brand-warning; -//** Danger progress bar color -@progress-bar-danger-bg: @brand-danger; -//** Info progress bar color -@progress-bar-info-bg: @brand-info; - -//== List group -// -//## - -//** Background color on `.list-group-item` -@list-group-bg: #fff; -//** `.list-group-item` border color -@list-group-border: #ddd; -//** List group border radius -@list-group-border-radius: @border-radius-base; - -//** Background color of single list items on hover -@list-group-hover-bg: #f5f5f5; -//** Text color of active list items -@list-group-active-color: @component-active-color; -//** Background color of active list items -@list-group-active-bg: @component-active-bg; -//** Border color of active list elements -@list-group-active-border: @list-group-active-bg; -//** Text color for content within active list items -@list-group-active-text-color: lighten(@list-group-active-bg, 40%); - -//** Text color of disabled list items -@list-group-disabled-color: @gray-light; -//** Background color of disabled list items -@list-group-disabled-bg: @gray-lighter; -//** Text color for content within disabled list items -@list-group-disabled-text-color: @list-group-disabled-color; - -@list-group-link-color: #555; -@list-group-link-hover-color: @list-group-link-color; -@list-group-link-heading-color: #333; - -//== Panels -// -//## - -@panel-bg: #fff; -@panel-body-padding: 15px; -@panel-heading-padding: 10px 15px; -@panel-footer-padding: @panel-heading-padding; -@panel-border-radius: @border-radius-base; - -//** Border color for elements within panels -@panel-inner-border: #ddd; -@panel-footer-bg: #f5f5f5; - -@panel-default-text: @gray-dark; -@panel-default-border: #ddd; -@panel-default-heading-bg: #f5f5f5; - -@panel-primary-text: #fff; -@panel-primary-border: @brand-primary; -@panel-primary-heading-bg: @brand-primary; - -@panel-success-text: @state-success-text; -@panel-success-border: @state-success-border; -@panel-success-heading-bg: @state-success-bg; - -@panel-info-text: @state-info-text; -@panel-info-border: @state-info-border; -@panel-info-heading-bg: @state-info-bg; - -@panel-warning-text: @state-warning-text; -@panel-warning-border: @state-warning-border; -@panel-warning-heading-bg: @state-warning-bg; - -@panel-danger-text: @state-danger-text; -@panel-danger-border: @state-danger-border; -@panel-danger-heading-bg: @state-danger-bg; - -//== Thumbnails -// -//## - -//** Padding around the thumbnail image -@thumbnail-padding: 4px; -//** Thumbnail background color -@thumbnail-bg: @body-bg; -//** Thumbnail border color -@thumbnail-border: #ddd; -//** Thumbnail border radius -@thumbnail-border-radius: @border-radius-base; - -//** Custom text color for thumbnail captions -@thumbnail-caption-color: @text-color; -//** Padding around the thumbnail caption -@thumbnail-caption-padding: 9px; - -//== Wells -// -//## - -@well-bg: #f5f5f5; -@well-border: darken(@well-bg, 7%); - -//== Badges -// -//## - -@badge-color: #fff; -//** Linked badge text color on hover -@badge-link-hover-color: #fff; -@badge-bg: @gray-light; - -//** Badge text color in active nav link -@badge-active-color: @link-color; -//** Badge background color in active nav link -@badge-active-bg: #fff; - -@badge-font-weight: bold; -@badge-line-height: 1; -@badge-border-radius: 10px; - -//== Breadcrumbs -// -//## - -@breadcrumb-padding-vertical: 8px; -@breadcrumb-padding-horizontal: 15px; -//** Breadcrumb background color -@breadcrumb-bg: #f5f5f5; -//** Breadcrumb text color -@breadcrumb-color: #ccc; -//** Text color of current page in the breadcrumb -@breadcrumb-active-color: @gray-light; -//** Textual separator for between breadcrumb elements -@breadcrumb-separator: "/"; - -//== Carousel -// -//## - -@carousel-text-shadow: 0 1px 2px rgba(0, 0, 0, .6); - -@carousel-control-color: #fff; -@carousel-control-width: 15%; -@carousel-control-opacity: .5; -@carousel-control-font-size: 20px; - -@carousel-indicator-active-bg: #fff; -@carousel-indicator-border-color: #fff; - -@carousel-caption-color: #fff; - -//== Close -// -//## - -@close-font-weight: bold; -@close-color: #000; -@close-text-shadow: 0 1px 0 #fff; - -//== Code -// -//## - -@code-color: #c7254e; -@code-bg: #f9f2f4; - -@kbd-color: #fff; -@kbd-bg: #333; - -@pre-bg: #f5f5f5; -@pre-color: @gray-dark; -@pre-border-color: #ccc; -@pre-scrollable-max-height: 340px; - -//== Type -// -//## - -//** Horizontal offset for forms and lists. -@component-offset-horizontal: 180px; -//** Text muted color -@text-muted: @gray-light; -//** Abbreviations and acronyms border color -@abbr-border-color: @gray-light; -//** Headings small color -@headings-small-color: @gray-light; -//** Blockquote small color -@blockquote-small-color: @gray-light; -//** Blockquote font size -@blockquote-font-size: (@font-size-base * 1.25); -//** Blockquote border color -@blockquote-border-color: @gray-lighter; -//** Page header border color -@page-header-border-color: @gray-lighter; -//** Width of horizontal description list titles -@dl-horizontal-offset: @component-offset-horizontal; -//** Horizontal line color. -@hr-border: @gray-lighter; diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/.csslintrc b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/.csslintrc deleted file mode 100644 index c77a7cbb42ef..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/.csslintrc +++ /dev/null @@ -1,23 +0,0 @@ -{ - "adjoining-classes": false, - "box-sizing": false, - "box-model": false, - "compatible-vendor-prefixes": false, - "floats": false, - "font-sizes": false, - "gradients": false, - "important": false, - "known-properties": false, - "outline-none": false, - "qualified-headings": false, - "regex-selectors": false, - "shorthand": false, - "text-indent": false, - "unique-headings": false, - "universal-selector": false, - "unqualified-attributes": false, - "ids": false, - "fallback-colors": false, - "vendor-prefix": false, - "import": false -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/404_500_errors.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/404_500_errors.less deleted file mode 100644 index f7fadcf54458..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/404_500_errors.less +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Page: 400 and 500 error pages - * ------------------------------ - */ -.error-page { - width: 600px; - margin: 20px auto 0 auto; - @media (max-width: @screen-sm-max) { - width: 100%; - } - //For the error number e.g: 404 - > .headline { - float: left; - font-size: 100px; - font-weight: 300; - @media (max-width: @screen-sm-max) { - float: none; - text-align: center; - } - } - //For the message - > .error-content { - margin-left: 190px; - @media (max-width: @screen-sm-max) { - margin-left: 0; - } - > h3 { - font-weight: 300; - font-size: 25px; - @media (max-width: @screen-sm-max) { - text-align: center; - } - } - display: block; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/AdminLTE.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/AdminLTE.less deleted file mode 100644 index a4494167dc3b..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/AdminLTE.less +++ /dev/null @@ -1,61 +0,0 @@ -/*! - * AdminLTE v2.3.7 - * Author: Almsaeed Studio - * Website: Almsaeed Studio - * License: Open source - MIT - * Please visit http://opensource.org/licenses/MIT for more information -!*/ -//google fonts -@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic); -//Bootstrap Variables & Mixins -//The core bootstrap code have not been modified. These files -//are included only for reference. -@import (reference) "../bootstrap-less/mixins.less"; -@import (reference) "../bootstrap-less/variables.less"; -//MISC -//---- -@import "core.less"; -@import "variables.less"; -@import "mixins.less"; -//COMPONENTS -//----------- -@import "header.less"; -@import "sidebar.less"; -@import "sidebar-mini.less"; -@import "control-sidebar.less"; -@import "dropdown.less"; -@import "forms.less"; -@import "progress-bars.less"; -@import "small-box.less"; -@import "boxes.less"; -@import "info-box.less"; -@import "timeline.less"; -@import "buttons.less"; -@import "callout.less"; -@import "alerts.less"; -@import "navs.less"; -@import "products.less"; -@import "table.less"; -@import "labels.less"; -@import "direct-chat.less"; -@import "users-list.less"; -@import "carousel.less"; -@import "modal.less"; -@import "social-widgets.less"; -//PAGES -//------ -@import "mailbox.less"; -@import "lockscreen.less"; -@import "login_and_register.less"; -@import "404_500_errors.less"; -@import "invoice.less"; -@import "profile"; -//Plugins -//-------- -@import "bootstrap-social.less"; -@import "fullcalendar.less"; -@import "select2.less"; -//Miscellaneous -//------------- -@import "miscellaneous.less"; -@import "print.less"; diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/alerts.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/alerts.less deleted file mode 100644 index dc15cb63ab7b..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/alerts.less +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Component: alert - * ---------------- - */ - -.alert { - .border-radius(3px); - h4 { - font-weight: 600; - } - .icon { - margin-right: 10px; - } - .close { - color: #000; - .opacity(.2); - &:hover { - .opacity(.5); - } - } - a { - color: #fff; - text-decoration: underline; - } -} - -//Alert Variants -.alert-success { - &:extend(.bg-green); - border-color: darken(@green, 5%); -} - -.alert-danger, -.alert-error { - &:extend(.bg-red); - border-color: darken(@red, 5%); -} - -.alert-warning { - &:extend(.bg-yellow); - border-color: darken(@yellow, 5%); -} - -.alert-info { - &:extend(.bg-aqua); - border-color: darken(@aqua, 5%); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/bootstrap-social.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/bootstrap-social.less deleted file mode 100644 index 93cfabd85960..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/bootstrap-social.less +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Social Buttons for Bootstrap - * - * Copyright 2013-2015 Panayiotis Lipiridis - * Licensed under the MIT License - * - * https://github.com/lipis/bootstrap-social - */ - -@bs-height-base: (@line-height-computed + @padding-base-vertical * 2); -@bs-height-lg: (floor(@font-size-large * @line-height-base) + @padding-large-vertical * 2); -@bs-height-sm: (floor(@font-size-small * 1.5) + @padding-small-vertical * 2); -@bs-height-xs: (floor(@font-size-small * 1.2) + @padding-small-vertical + 1); - -.btn-social { - position: relative; - padding-left: (@bs-height-base + @padding-base-horizontal); - text-align: left; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - > :first-child { - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: @bs-height-base; - line-height: (@bs-height-base + 2); - font-size: 1.6em; - text-align: center; - border-right: 1px solid rgba(0, 0, 0, 0.2); - } - &.btn-lg { - padding-left: (@bs-height-lg + @padding-large-horizontal); - > :first-child { - line-height: @bs-height-lg; - width: @bs-height-lg; - font-size: 1.8em; - } - } - &.btn-sm { - padding-left: (@bs-height-sm + @padding-small-horizontal); - > :first-child { - line-height: @bs-height-sm; - width: @bs-height-sm; - font-size: 1.4em; - } - } - &.btn-xs { - padding-left: (@bs-height-xs + @padding-small-horizontal); - > :first-child { - line-height: @bs-height-xs; - width: @bs-height-xs; - font-size: 1.2em; - } - } -} - -.btn-social-icon { - .btn-social; - height: (@bs-height-base + 2); - width: (@bs-height-base + 2); - padding: 0; - > :first-child { - border: none; - text-align: center; - width: 100%; - } - &.btn-lg { - height: @bs-height-lg; - width: @bs-height-lg; - padding-left: 0; - padding-right: 0; - } - &.btn-sm { - height: (@bs-height-sm + 2); - width: (@bs-height-sm + 2); - padding-left: 0; - padding-right: 0; - } - &.btn-xs { - height: (@bs-height-xs + 2); - width: (@bs-height-xs + 2); - padding-left: 0; - padding-right: 0; - } -} - -.btn-social(@color-bg, @color: #fff) { - background-color: @color-bg; - .button-variant(@color, @color-bg, rgba(0, 0, 0, .2)); -} - -.btn-adn { - .btn-social(#d87a68); -} - -.btn-bitbucket { - .btn-social(#205081); -} - -.btn-dropbox { - .btn-social(#1087dd); -} - -.btn-facebook { - .btn-social(#3b5998); -} - -.btn-flickr { - .btn-social(#ff0084); -} - -.btn-foursquare { - .btn-social(#f94877); -} - -.btn-github { - .btn-social(#444444); -} - -.btn-google { - .btn-social(#dd4b39); -} - -.btn-instagram { - .btn-social(#3f729b); -} - -.btn-linkedin { - .btn-social(#007bb6); -} - -.btn-microsoft { - .btn-social(#2672ec); -} - -.btn-openid { - .btn-social(#f7931e); -} - -.btn-pinterest { - .btn-social(#cb2027); -} - -.btn-reddit { - .btn-social(#eff7ff, #000); -} - -.btn-soundcloud { - .btn-social(#ff5500); -} - -.btn-tumblr { - .btn-social(#2c4762); -} - -.btn-twitter { - .btn-social(#55acee); -} - -.btn-vimeo { - .btn-social(#1ab7ea); -} - -.btn-vk { - .btn-social(#587ea3); -} - -.btn-yahoo { - .btn-social(#720e9e); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/boxes.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/boxes.less deleted file mode 100644 index c92ef3bab09e..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/boxes.less +++ /dev/null @@ -1,485 +0,0 @@ -/* - * Component: Box - * -------------- - */ -.box { - position: relative; - .border-radius(@box-border-radius); - background: #ffffff; - border-top: 3px solid @box-default-border-top-color; - margin-bottom: 20px; - width: 100%; - box-shadow: @box-boxshadow; - - // Box color variations - &.box-primary { - border-top-color: @light-blue; - } - &.box-info { - border-top-color: @aqua; - } - &.box-danger { - border-top-color: @red; - } - &.box-warning { - border-top-color: @yellow; - } - &.box-success { - border-top-color: @green; - } - &.box-default { - border-top-color: @gray; - } - - // collapsed mode - &.collapsed-box { - .box-body, - .box-footer { - display: none; - } - } - - .nav-stacked { - > li { - border-bottom: 1px solid @box-border-color; - margin: 0; - &:last-of-type { - border-bottom: none; - } - } - } - - // fixed height to 300px - &.height-control { - .box-body { - max-height: 300px; - overflow: auto; - } - } - - .border-right { - border-right: 1px solid @box-border-color; - } - .border-left { - border-left: 1px solid @box-border-color; - } - - //SOLID BOX - //--------- - //use this class to get a colored header and borders - - &.box-solid { - border-top: 0; - > .box-header { - .btn.btn-default { - background: transparent; - } - .btn, - a { - &:hover { - background: rgba(0, 0, 0, 0.1); - } - } - } - - // Box color variations - &.box-default { - .box-solid-variant(@gray, #444); - } - &.box-primary { - .box-solid-variant(@light-blue); - } - &.box-info { - .box-solid-variant(@aqua); - } - &.box-danger { - .box-solid-variant(@red); - } - &.box-warning { - .box-solid-variant(@yellow); - } - &.box-success { - .box-solid-variant(@green); - } - - > .box-header > .box-tools .btn { - border: 0; - box-shadow: none; - } - - // Fix font color for tiles - &[class*='bg'] { - > .box-header { - color: #fff; - } - } - - } - - //BOX GROUP - .box-group { - > .box { - margin-bottom: 5px; - } - } - - // jQuery Knob in a box - .knob-label { - text-align: center; - color: #333; - font-weight: 100; - font-size: 12px; - margin-bottom: 0.3em; - } -} - -.box, -.overlay-wrapper { - // Box overlay for LOADING STATE effect - > .overlay, - > .loading-img { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - } - - .overlay { - z-index: 50; - background: rgba(255, 255, 255, 0.7); - .border-radius(@box-border-radius); - > .fa { - position: absolute; - top: 50%; - left: 50%; - margin-left: -15px; - margin-top: -15px; - color: #000; - font-size: 30px; - } - } - - .overlay.dark { - background: rgba(0, 0, 0, 0.5); - } -} - -//Add clearfix to header, body and footer -.box-header, -.box-body, -.box-footer { - .clearfix(); -} - -//Box header -.box-header { - color: #444; - display: block; - padding: @box-padding; - position: relative; - - //Add bottom border - &.with-border { - border-bottom: 1px solid @box-border-color; - .collapsed-box & { - border-bottom: none; - } - } - - //Icons and box title - > .fa, - > .glyphicon, - > .ion, - .box-title { - display: inline-block; - font-size: 18px; - margin: 0; - line-height: 1; - } - > .fa, - > .glyphicon, - > .ion { - margin-right: 5px; - } - > .box-tools { - position: absolute; - right: 10px; - top: 5px; - [data-toggle="tooltip"] { - position: relative; - } - - &.pull-right { - .dropdown-menu { - right: 0; - left: auto; - } - } - } -} - -//Box Tools Buttons -.btn-box-tool { - padding: 5px; - font-size: 12px; - background: transparent; - color: darken(@box-default-border-top-color, 20%); - .open &, - &:hover { - color: darken(@box-default-border-top-color, 40%); - } - &.btn:active { - box-shadow: none; - } -} - -//Box Body -.box-body { - .border-radius(0; 0; @box-border-radius; @box-border-radius); - padding: @box-padding; - .no-header & { - .border-top-radius(@box-border-radius); - } - // Tables within the box body - > .table { - margin-bottom: 0; - } - - // Calendar within the box body - .fc { - margin-top: 5px; - } - - .full-width-chart { - margin: -19px; - } - &.no-padding .full-width-chart { - margin: -9px; - } - - .box-pane { - .border-radius(0; 0; @box-border-radius; 0); - } - .box-pane-right { - .border-radius(0; 0; 0; @box-border-radius); - } -} - -//Box footer -.box-footer { - .border-radius(0; 0; @box-border-radius; @box-border-radius); - border-top: 1px solid @box-border-color; - padding: @box-padding; - background-color: @box-footer-bg; -} - -.chart-legend { - &:extend(.list-unstyled); - margin: 10px 0; - > li { - @media (max-width: @screen-sm-max) { - float: left; - margin-right: 10px; - } - } -} - -//Comment Box -.box-comments { - background: #f7f7f7; - .box-comment { - .clearfix(); - padding: 8px 0; - border-bottom: 1px solid #eee; - &:last-of-type { - border-bottom: 0; - } - &:first-of-type { - padding-top: 0; - } - img { - &:extend(.img-sm); - float: left; - } - } - .comment-text { - margin-left: 40px; - color: #555; - } - .username { - color: #444; - display: block; - font-weight: 600; - } - .text-muted { - font-weight: 400; - font-size: 12px; - } -} - -//Widgets -//----------- - -/* Widget: TODO LIST */ - -.todo-list { - margin: 0; - padding: 0; - list-style: none; - overflow: auto; - // Todo list element - > li { - .border-radius(2px); - padding: 10px; - background: #f4f4f4; - margin-bottom: 2px; - border-left: 2px solid #e6e7e8; - color: #444; - &:last-of-type { - margin-bottom: 0; - } - - > input[type='checkbox'] { - margin: 0 10px 0 5px; - } - - .text { - display: inline-block; - margin-left: 5px; - font-weight: 600; - } - - // Time labels - .label { - margin-left: 10px; - font-size: 9px; - } - - // Tools and options box - .tools { - display: none; - float: right; - color: @red; - // icons - > .fa, > .glyphicon, > .ion { - margin-right: 5px; - cursor: pointer; - } - - } - &:hover .tools { - display: inline-block; - } - - &.done { - color: #999; - .text { - text-decoration: line-through; - font-weight: 500; - } - - .label { - background: @gray !important; - } - } - } - - // Color varaity - .danger { - border-left-color: @red; - } - .warning { - border-left-color: @yellow; - } - .info { - border-left-color: @aqua; - } - .success { - border-left-color: @green; - } - .primary { - border-left-color: @light-blue; - } - - .handle { - display: inline-block; - cursor: move; - margin: 0 5px; - } - -} - -// END TODO WIDGET - -/* Chat widget (DEPRECATED - this will be removed in the next major release. Use Direct Chat instead)*/ -.chat { - padding: 5px 20px 5px 10px; - - .item { - .clearfix(); - margin-bottom: 10px; - // The image - > img { - width: 40px; - height: 40px; - border: 2px solid transparent; - .border-radius(50%); - } - - > .online { - border: 2px solid @green; - } - > .offline { - border: 2px solid @red; - } - - // The message body - > .message { - margin-left: 55px; - margin-top: -40px; - > .name { - display: block; - font-weight: 600; - } - } - - // The attachment - > .attachment { - .border-radius(@attachment-border-radius); - background: #f4f4f4; - margin-left: 65px; - margin-right: 15px; - padding: 10px; - > h4 { - margin: 0 0 5px 0; - font-weight: 600; - font-size: 14px; - } - > p, > .filename { - font-weight: 600; - font-size: 13px; - font-style: italic; - margin: 0; - - } - .clearfix(); - } - } - -} - -//END CHAT WIDGET - -//Input in box -.box-input { - max-width: 200px; -} - -//A fix for panels body text color when placed within -// a modal -.modal { - .panel-body { - color: #444; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/buttons.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/buttons.less deleted file mode 100644 index 7a0aaa69ed84..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/buttons.less +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Component: Button - * ----------------- - */ - -.btn { - .border-radius(@btn-border-radius); - .box-shadow(@btn-boxshadow); - border: 1px solid transparent; - - &.uppercase { - text-transform: uppercase - } - - // Flat buttons - &.btn-flat { - .border-radius(0); - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - border-width: 1px; - } - - // Active state - &:active { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - } - - &:focus { - outline: none; - } - - // input file btn - &.btn-file { - position: relative; - overflow: hidden; - > input[type='file'] { - position: absolute; - top: 0; - right: 0; - min-width: 100%; - min-height: 100%; - font-size: 100px; - text-align: right; - .opacity(0); - outline: none; - background: white; - cursor: inherit; - display: block; - } - } -} - -//Button color variations -.btn-default { - background-color: #f4f4f4; - color: #444; - border-color: #ddd; - &:hover, - &:active, - &.hover { - background-color: darken(#f4f4f4, 5%); - } -} - -.btn-primary { - background-color: @light-blue; - border-color: darken(@light-blue, 5%); - &:hover, &:active, &.hover { - background-color: darken(@light-blue, 5%); - } -} - -.btn-success { - background-color: @green; - border-color: darken(@green, 5%); - &:hover, &:active, &.hover { - background-color: darken(@green, 5%); - } -} - -.btn-info { - background-color: @aqua; - border-color: darken(@aqua, 5%); - &:hover, &:active, &.hover { - background-color: darken(@aqua, 5%); - } -} - -.btn-danger { - background-color: @red; - border-color: darken(@red, 5%); - &:hover, &:active, &.hover { - background-color: darken(@red, 5%); - } -} - -.btn-warning { - background-color: @yellow; - border-color: darken(@yellow, 5%); - &:hover, &:active, &.hover { - background-color: darken(@yellow, 5%); - } -} - -.btn-outline { - border: 1px solid #fff; - background: transparent; - color: #fff; - &:hover, - &:focus, - &:active { - color: rgba(255, 255, 255, .7); - border-color: rgba(255, 255, 255, .7); - } -} - -.btn-link { - .box-shadow(none); -} - -//General .btn with bg class -.btn[class*='bg-']:hover { - .box-shadow(inset 0 0 100px rgba(0, 0, 0, 0.2)); -} - -// Application buttons -.btn-app { - .border-radius(3px); - position: relative; - padding: 15px 5px; - margin: 0 0 10px 10px; - min-width: 80px; - height: 60px; - text-align: center; - color: #666; - border: 1px solid #ddd; - background-color: #f4f4f4; - font-size: 12px; - //Icons within the btn - > .fa, > .glyphicon, > .ion { - font-size: 20px; - display: block; - } - - &:hover { - background: #f4f4f4; - color: #444; - border-color: #aaa; - } - - &:active, &:focus { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - } - - //The badge - > .badge { - position: absolute; - top: -3px; - right: -10px; - font-size: 10px; - font-weight: 400; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/callout.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/callout.less deleted file mode 100644 index 9f6aaa1a252d..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/callout.less +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Component: Callout - * ------------------ - */ - -// Base styles (regardless of theme) -.callout { - .border-radius(3px); - margin: 0 0 20px 0; - padding: 15px 30px 15px 15px; - border-left: 5px solid #eee; - a { - color: #fff; - text-decoration: underline; - &:hover { - color: #eee; - } - } - h4 { - margin-top: 0; - font-weight: 600; - } - p:last-child { - margin-bottom: 0; - } - code, - .highlight { - background-color: #fff; - } - - // Themes for different contexts - &.callout-danger { - &:extend(.bg-red); - border-color: darken(@red, 10%); - } - &.callout-warning { - &:extend(.bg-yellow); - border-color: darken(@yellow, 10%); - } - &.callout-info { - &:extend(.bg-aqua); - border-color: darken(@aqua, 10%); - } - &.callout-success { - &:extend(.bg-green); - border-color: darken(@green, 10%); - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/carousel.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/carousel.less deleted file mode 100644 index f069109aad7e..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/carousel.less +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Component: Carousel - * ------------------- - */ -.carousel-control { - &.left, - &.right { - background-image: none; - } - > .fa { - font-size: 40px; - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; - margin-top: -20px; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/control-sidebar.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/control-sidebar.less deleted file mode 100644 index fbb6d1f39ac7..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/control-sidebar.less +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Component: Control sidebar. By default, this is the right sidebar. - */ -//The sidebar's background control class -//This is a hack to make the background visible while scrolling -.control-sidebar-bg { - position: fixed; - z-index: 1000; - bottom: 0; -} - -//Transitions -.control-sidebar-bg, -.control-sidebar { - top: 0; - right: -@control-sidebar-width; - width: @control-sidebar-width; - .transition(right @transition-speed ease-in-out); -} - -//The sidebar -.control-sidebar { - position: absolute; - padding-top: @navbar-height; - z-index: 1010; - //Fix position after header collapse - @media (max-width: @screen-sm) { - padding-top: @navbar-height + 50; - } - //Tab panes - > .tab-content { - padding: 10px 15px; - } - //Open state with slide over content effect - &.control-sidebar-open { - &, - + .control-sidebar-bg { - right: 0; - } - } -} - -//Open without slide over content -.control-sidebar-open { - .control-sidebar-bg, - .control-sidebar { - right: 0; - } - @media (min-width: @screen-sm) { - .content-wrapper, - .right-side, - .main-footer { - margin-right: @control-sidebar-width; - } - } -} - -//Control sidebar tabs -.nav-tabs.control-sidebar-tabs { - > li { - &:first-of-type > a { - &, - &:hover, - &:focus { - border-left-width: 0; - } - } - > a { - .border-radius(0); - - //Hover and active states - &, - &:hover { - border-top: none; - border-right: none; - border-left: 1px solid transparent; - border-bottom: 1px solid transparent; - } - .icon { - font-size: 16px; - } - } - //Active state - &.active { - > a { - &, - &:hover, - &:focus, - &:active { - border-top: none; - border-right: none; - border-bottom: none; - } - } - } - } - //Remove responsiveness on small screens - @media (max-width: @screen-sm) { - display: table; - > li { - display: table-cell; - } - } -} - -//Headings in the sidebar content -.control-sidebar-heading { - font-weight: 400; - font-size: 16px; - padding: 10px 0; - margin-bottom: 10px; -} - -//Subheadings -.control-sidebar-subheading { - display: block; - font-weight: 400; - font-size: 14px; -} - -//Control Sidebar Menu -.control-sidebar-menu { - list-style: none; - padding: 0; - margin: 0 -15px; - > li > a { - .clearfix(); - display: block; - padding: 10px 15px; - > .control-sidebar-subheading { - margin-top: 0; - } - } - .menu-icon { - float: left; - width: 35px; - height: 35px; - border-radius: 50%; - text-align: center; - line-height: 35px; - } - .menu-info { - margin-left: 45px; - margin-top: 3px; - > .control-sidebar-subheading { - margin: 0; - } - > p { - margin: 0; - font-size: 11px; - } - } - .progress { - margin: 0; - } -} - -//Dark skin -.control-sidebar-dark { - color: @sidebar-dark-color; - // Background - &, - + .control-sidebar-bg { - background: @sidebar-dark-bg; - } - // Sidebar tabs - .nav-tabs.control-sidebar-tabs { - border-bottom: darken(@sidebar-dark-bg, 3%); - > li { - > a { - background: darken(@sidebar-dark-bg, 5%); - color: @sidebar-dark-color; - //Hover and active states - &, - &:hover, - &:focus { - border-left-color: darken(@sidebar-dark-bg, 7%); - border-bottom-color: darken(@sidebar-dark-bg, 7%); - } - &:hover, - &:focus, - &:active { - background: darken(@sidebar-dark-bg, 3%); - } - &:hover { - color: #fff; - } - } - //Active state - &.active { - > a { - &, - &:hover, - &:focus, - &:active { - background: @sidebar-dark-bg; - color: #fff; - } - } - } - } - } - //Heading & subheading - .control-sidebar-heading, - .control-sidebar-subheading { - color: #fff; - } - //Sidebar list - .control-sidebar-menu { - > li { - > a { - &:hover { - background: @sidebar-dark-hover-bg; - } - .menu-info { - > p { - color: @sidebar-dark-color; - } - } - } - } - } -} - -//Light skin -.control-sidebar-light { - color: lighten(@sidebar-light-color, 10%); - // Background - &, - + .control-sidebar-bg { - background: @sidebar-light-bg; - border-left: 1px solid @gray; - } - // Sidebar tabs - .nav-tabs.control-sidebar-tabs { - border-bottom: @gray; - > li { - > a { - background: darken(@sidebar-light-bg, 5%); - color: @sidebar-light-color; - //Hover and active states - &, - &:hover, - &:focus { - border-left-color: @gray; - border-bottom-color: @gray; - } - &:hover, - &:focus, - &:active { - background: darken(@sidebar-light-bg, 3%); - } - } - //Active state - &.active { - > a { - &, - &:hover, - &:focus, - &:active { - background: @sidebar-light-bg; - color: #111; - } - } - } - } - } - //Heading & subheading - .control-sidebar-heading, - .control-sidebar-subheading { - color: #111; - } - //Sidebar list - .control-sidebar-menu { - margin-left: -14px; - > li { - > a { - &:hover { - background: @sidebar-light-hover-bg; - } - .menu-info { - > p { - color: lighten(@sidebar-light-color, 10%); - } - } - } - } - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/core.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/core.less deleted file mode 100644 index a779a90912f0..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/core.less +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Core: General Layout Style - * ------------------------- - */ -html, -body { - min-height: 100%; - .layout-boxed & { - height: 100%; - } -} - -body { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-weight: 400; - overflow-x: hidden; - overflow-y: auto; -} - -/* Layout */ -.wrapper { - .clearfix(); - min-height: 100%; - position: relative; - overflow: hidden; - .layout-boxed & { - max-width: 1250px; - margin: 0 auto; - min-height: 100%; - box-shadow: 0 0 8px rgba(0, 0, 0, 0.5); - position: relative; - } -} - -.layout-boxed { - background: url('@{boxed-layout-bg-image-path}') repeat fixed; -} - -/* - * Content Wrapper - contains the main content - * ```.right-side has been deprecated as of v2.0.0 in favor of .content-wrapper ``` - */ -.content-wrapper, -.right-side, -.main-footer { - //Using disposable variable to join statements with a comma - @transition-rule: @transition-speed @transition-fn, - margin @transition-speed @transition-fn; - .transition-transform(@transition-rule); - margin-left: @sidebar-width; - z-index: 820; - //Top nav layout - .layout-top-nav & { - margin-left: 0; - } - @media (max-width: @screen-xs-max) { - margin-left: 0; - } - //When opening the sidebar on large screens - .sidebar-collapse & { - @media (min-width: @screen-sm) { - margin-left: 0; - } - } - //When opening the sidebar on small screens - .sidebar-open & { - @media (max-width: @screen-xs-max) { - .translate(@sidebar-width, 0); - } - } -} - -.content-wrapper, -.right-side { - min-height: 100%; - background-color: @body-bg; - z-index: 800; -} - -.main-footer { - background: #fff; - padding: 15px; - color: #444; - border-top: 1px solid @gray; -} - -/* Fixed layout */ -.fixed { - .main-header, - .main-sidebar, - .left-side { - position: fixed; - } - .main-header { - top: 0; - right: 0; - left: 0; - } - .content-wrapper, - .right-side { - padding-top: 50px; - @media (max-width: @screen-header-collapse) { - padding-top: 100px; - } - } - &.layout-boxed { - .wrapper { - max-width: 100%; - } - } -} - -body.hold-transition { - .content-wrapper, - .right-side, - .main-footer, - .main-sidebar, - .left-side, - .main-header .navbar, - .main-header .logo { - /* Fix for IE */ - .transition(none); - } -} - -/* Content */ -.content { - min-height: 250px; - padding: 15px; - .container-fixed(@grid-gutter-width); -} - -/* H1 - H6 font */ -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: 'Source Sans Pro', sans-serif; -} - -/* General Links */ -a { - color: @link-color; -} - -a:hover, -a:active, -a:focus { - outline: none; - text-decoration: none; - color: @link-hover-color; -} - -/* Page Header */ -.page-header { - margin: 10px 0 20px 0; - font-size: 22px; - - > small { - color: #666; - display: block; - margin-top: 5px; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/direct-chat.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/direct-chat.less deleted file mode 100644 index f35c07dd1e29..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/direct-chat.less +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Component: Direct Chat - * ---------------------- - */ -.direct-chat { - .box-body { - .border-bottom-radius(0); - position: relative; - overflow-x: hidden; - padding: 0; - } - &.chat-pane-open { - .direct-chat-contacts { - .translate(0, 0); - } - } -} - -.direct-chat-messages { - .translate(0, 0); - padding: 10px; - height: 250px; - overflow: auto; -} - -.direct-chat-msg, -.direct-chat-text { - display: block; -} - -.direct-chat-msg { - .clearfix(); - margin-bottom: 10px; -} - -.direct-chat-messages, -.direct-chat-contacts { - .transition-transform(.5s ease-in-out); -} - -.direct-chat-text { - .border-radius(5px); - position: relative; - padding: 5px 10px; - background: @direct-chat-default-msg-bg; - border: 1px solid @direct-chat-default-msg-border-color; - margin: 5px 0 0 50px; - color: @direct-chat-default-font-color; - - //Create the arrow - &:after, - &:before { - position: absolute; - right: 100%; - top: 15px; - border: solid transparent; - border-right-color: @direct-chat-default-msg-border-color; - content: ' '; - height: 0; - width: 0; - pointer-events: none; - } - - &:after { - border-width: 5px; - margin-top: -5px; - } - &:before { - border-width: 6px; - margin-top: -6px; - } - .right & { - margin-right: 50px; - margin-left: 0; - &:after, - &:before { - right: auto; - left: 100%; - border-right-color: transparent; - border-left-color: @direct-chat-default-msg-border-color; - } - } -} - -.direct-chat-img { - .border-radius(50%); - float: left; - width: 40px; - height: 40px; - .right & { - float: right; - } -} - -.direct-chat-info { - display: block; - margin-bottom: 2px; - font-size: 12px; -} - -.direct-chat-name { - font-weight: 600; -} - -.direct-chat-timestamp { - color: #999; -} - -//Direct chat contacts pane -.direct-chat-contacts-open { - .direct-chat-contacts { - .translate(0, 0); - } -} - -.direct-chat-contacts { - .translate(101%, 0); - position: absolute; - top: 0; - bottom: 0; - height: 250px; - width: 100%; - background: #222d32; - color: #fff; - overflow: auto; -} - -//Contacts list -- for displaying contacts in direct chat contacts pane -.contacts-list { - &:extend(.list-unstyled); - > li { - .clearfix(); - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - padding: 10px; - margin: 0; - &:last-of-type { - border-bottom: none; - } - } -} - -.contacts-list-img { - .border-radius(50%); - width: 40px; - float: left; -} - -.contacts-list-info { - margin-left: 45px; - color: #fff; -} - -.contacts-list-name, -.contacts-list-status { - display: block; -} - -.contacts-list-name { - font-weight: 600; -} - -.contacts-list-status { - font-size: 12px; -} - -.contacts-list-date { - color: #aaa; - font-weight: normal; -} - -.contacts-list-msg { - color: #999; -} - -//Direct Chat Variants -.direct-chat-danger { - .direct-chat-variant(@red); -} - -.direct-chat-primary { - .direct-chat-variant(@light-blue); -} - -.direct-chat-warning { - .direct-chat-variant(@yellow); -} - -.direct-chat-info { - .direct-chat-variant(@aqua); -} - -.direct-chat-success { - .direct-chat-variant(@green); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/dropdown.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/dropdown.less deleted file mode 100644 index 6c0e212dce64..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/dropdown.less +++ /dev/null @@ -1,350 +0,0 @@ -/* - * Component: Dropdown menus - * ------------------------- - */ - -/*Dropdowns in general*/ -.dropdown-menu { - box-shadow: none; - border-color: #eee; - > li > a { - color: #777; - } - > li > a > .glyphicon, - > li > a > .fa, - > li > a > .ion { - margin-right: 10px; - } - > li > a:hover { - background-color: lighten(@gray, 5%); - color: #333; - } - > .divider { - background-color: #eee; - } -} - -//Navbar custom dropdown menu -.navbar-nav > .notifications-menu, -.navbar-nav > .messages-menu, -.navbar-nav > .tasks-menu { - //fix width and padding - > .dropdown-menu { - > li { - position: relative; - } - width: 280px; - //Remove padding and margins - padding: 0 0 0 0; - margin: 0; - top: 100%; - } - //Define header class - > .dropdown-menu > li.header { - .border-radius(4px; 4px; 0; 0); - background-color: #ffffff; - padding: 7px 10px; - border-bottom: 1px solid #f4f4f4; - color: #444444; - font-size: 14px; - } - - //Define footer class - > .dropdown-menu > li.footer > a { - .border-radius(0; 0; 4px; 4px); - font-size: 12px; - background-color: #fff; - padding: 7px 10px; - border-bottom: 1px solid #eeeeee; - color: #444 !important; - @media (max-width: @screen-sm-max) { - background: #fff !important; - color: #444 !important; - } - text-align: center; - //Hover state - &:hover { - text-decoration: none; - font-weight: normal; - } - } - - //Clear inner menu padding and margins - > .dropdown-menu > li .menu { - max-height: 200px; - margin: 0; - padding: 0; - list-style: none; - overflow-x: hidden; - > li > a { - display: block; - white-space: nowrap; /* Prevent text from breaking */ - border-bottom: 1px solid #f4f4f4; - // Hove state - &:hover { - background: #f4f4f4; - text-decoration: none; - } - } - } -} - -//Notifications menu -.navbar-nav > .notifications-menu { - > .dropdown-menu > li .menu { - // Links inside the menu - > li > a { - color: #444444; - overflow: hidden; - text-overflow: ellipsis; - padding: 10px; - // Icons inside the menu - > .glyphicon, - > .fa, - > .ion { - width: 20px; - } - } - - } -} - -//Messages menu -.navbar-nav > .messages-menu { - //Inner menu - > .dropdown-menu > li .menu { - // Messages menu item - > li > a { - margin: 0; - //line-height: 20px; - padding: 10px 10px; - // User image - > div > img { - margin: auto 10px auto auto; - width: 40px; - height: 40px; - } - // Message heading - > h4 { - padding: 0; - margin: 0 0 0 45px; - color: #444444; - font-size: 15px; - position: relative; - // Small for message time display - > small { - color: #999999; - font-size: 10px; - position: absolute; - top: 0; - right: 0; - } - } - - > p { - margin: 0 0 0 45px; - font-size: 12px; - color: #888888; - } - - .clearfix(); - - } - - } -} - -//Tasks menu -.navbar-nav > .tasks-menu { - > .dropdown-menu > li .menu { - > li > a { - padding: 10px; - - > h3 { - font-size: 14px; - padding: 0; - margin: 0 0 10px 0; - color: #666666; - } - - > .progress { - padding: 0; - margin: 0; - } - } - } -} - -//User menu -.navbar-nav > .user-menu { - > .dropdown-menu { - .border-top-radius(0); - padding: 1px 0 0 0; - border-top-width: 0; - width: 280px; - - &, - > .user-body { - .border-bottom-radius(4px); - } - // Header menu - > li.user-header { - height: 175px; - padding: 10px; - text-align: center; - // User image - > img { - z-index: 5; - height: 90px; - width: 90px; - border: 3px solid; - border-color: transparent; - border-color: rgba(255, 255, 255, 0.2); - } - > p { - z-index: 5; - color: #fff; - color: rgba(255, 255, 255, 0.8); - font-size: 17px; - //text-shadow: 2px 2px 3px #333333; - margin-top: 10px; - > small { - display: block; - font-size: 12px; - } - } - } - - // Menu Body - > .user-body { - padding: 15px; - border-bottom: 1px solid #f4f4f4; - border-top: 1px solid #dddddd; - .clearfix(); - a { - color: #444 !important; - @media (max-width: @screen-sm-max) { - background: #fff !important; - color: #444 !important; - } - } - } - - // Menu Footer - > .user-footer { - background-color: #f9f9f9; - padding: 10px; - .clearfix(); - .btn-default { - color: #666666; - &:hover { - @media (max-width: @screen-sm-max) { - background-color: #f9f9f9; - } - } - } - } - } - .user-image { - float: left; - width: 25px; - height: 25px; - border-radius: 50%; - margin-right: 10px; - margin-top: -2px; - @media (max-width: @screen-xs-max) { - float: none; - margin-right: 0; - margin-top: -8px; - line-height: 10px; - } - } -} - -/* Add fade animation to dropdown menus by appending - the class .animated-dropdown-menu to the .dropdown-menu ul (or ol)*/ -.open:not(.dropup) > .animated-dropdown-menu { - backface-visibility: visible !important; - .animation(flipInX .7s both); - -} - -@keyframes flipInX { - 0% { - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transition-timing-function: ease-in; - opacity: 0; - } - - 40% { - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transition-timing-function: ease-in; - } - - 60% { - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - - 80% { - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - - 100% { - transform: perspective(400px); - } -} - -@-webkit-keyframes flipInX { - 0% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-transition-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-transition-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - - 100% { - -webkit-transform: perspective(400px); - } -} - -/* Fix dropdown menu in navbars */ -.navbar-custom-menu > .navbar-nav { - > li { - position: relative; - > .dropdown-menu { - position: absolute; - right: 0; - left: auto; - } - } -} - -@media (max-width: @screen-sm-max) { - .navbar-custom-menu > .navbar-nav { - float: right; - > li { - position: static; - > .dropdown-menu { - position: absolute; - right: 5%; - left: auto; - border: 1px solid #ddd; - background: #fff; - } - } - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/forms.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/forms.less deleted file mode 100644 index f8e4c5a2965c..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/forms.less +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Component: Form - * --------------- - */ -.form-control { - .border-radius(@input-radius); - box-shadow: none; - border-color: @gray; - &:focus { - border-color: @light-blue; - box-shadow: none; - } - &::-moz-placeholder, - &:-ms-input-placeholder, - &::-webkit-input-placeholder { - color: #bbb; - opacity: 1; - } - - &:not(select) { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - } -} - -.form-group { - &.has-success { - label { - color: @green; - } - .form-control, - .input-group-addon { - border-color: @green; - box-shadow: none; - } - .help-block { - color: @green; - } - } - - &.has-warning { - label { - color: @yellow; - } - .form-control, - .input-group-addon { - border-color: @yellow; - box-shadow: none; - } - .help-block { - color: @yellow; - } - } - - &.has-error { - label { - color: @red; - } - .form-control, - .input-group-addon { - border-color: @red; - box-shadow: none; - } - .help-block { - color: @red; - } - } -} - -/* Input group */ -.input-group { - .input-group-addon { - .border-radius(@input-radius); - border-color: @gray; - background-color: #fff; - } -} - -/* button groups */ -.btn-group-vertical { - .btn { - &.btn-flat:first-of-type, &.btn-flat:last-of-type { - .border-radius(0); - } - } -} - -.icheck > label { - padding-left: 0; -} - -/* support Font Awesome icons in form-control */ -.form-control-feedback.fa { - line-height: @input-height-base; -} - -.input-lg + .form-control-feedback.fa, -.input-group-lg + .form-control-feedback.fa, -.form-group-lg .form-control + .form-control-feedback.fa { - line-height: @input-height-large; -} - -.input-sm + .form-control-feedback.fa, -.input-group-sm + .form-control-feedback.fa, -.form-group-sm .form-control + .form-control-feedback.fa { - line-height: @input-height-small; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/fullcalendar.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/fullcalendar.less deleted file mode 100644 index f0285145f89e..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/fullcalendar.less +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Plugin: Full Calendar - * --------------------- - */ -//Fullcalendar buttons -.fc-button { - background: #f4f4f4; - background-image: none; - color: #444; - border-color: #ddd; - border-bottom-color: #ddd; - &:hover, - &:active, - &.hover { - background-color: #e9e9e9; - } -} - -// Calendar title -.fc-header-title h2 { - font-size: 15px; - line-height: 1.6em; - color: #666; - margin-left: 10px; -} - -.fc-header-right { - padding-right: 10px; -} - -.fc-header-left { - padding-left: 10px; -} - -// Calendar table header cells -.fc-widget-header { - background: #fafafa; -} - -.fc-grid { - width: 100%; - border: 0; -} - -.fc-widget-header:first-of-type, -.fc-widget-content:first-of-type { - border-left: 0; - border-right: 0; -} - -.fc-widget-header:last-of-type, -.fc-widget-content:last-of-type { - border-right: 0; -} - -.fc-toolbar { - padding: @box-padding; - margin: 0; -} - -.fc-day-number { - font-size: 20px; - font-weight: 300; - padding-right: 10px; -} - -.fc-color-picker { - list-style: none; - margin: 0; - padding: 0; - > li { - float: left; - font-size: 30px; - margin-right: 5px; - line-height: 30px; - .fa { - .transition-transform(linear .3s); - &:hover { - .rotate(30deg); - } - } - } -} - -#add-new-event { - .transition(all linear .3s); -} - -.external-event { - padding: 5px 10px; - font-weight: bold; - margin-bottom: 4px; - box-shadow: @box-boxshadow; - text-shadow: @box-boxshadow; - border-radius: @box-border-radius; - cursor: move; - &:hover { - box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2); - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/header.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/header.less deleted file mode 100644 index bdb202ac5e96..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/header.less +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Component: Main Header - * ---------------------- - */ - -.main-header { - position: relative; - max-height: 100px; - z-index: 1030; - //Navbar - .navbar { - .transition(margin-left @transition-speed @transition-fn); - margin-bottom: 0; - margin-left: @sidebar-width; - border: none; - min-height: @navbar-height; - border-radius: 0; - .layout-top-nav & { - margin-left: 0; - } - } - //Navbar search text input - #navbar-search-input.form-control { - background: rgba(255, 255, 255, .2); - border-color: transparent; - &:focus, - &:active { - border-color: rgba(0, 0, 0, .1); - background: rgba(255, 255, 255, .9); - } - &::-moz-placeholder { - color: #ccc; - opacity: 1; - } - &:-ms-input-placeholder { - color: #ccc; - } - &::-webkit-input-placeholder { - color: #ccc; - } - } - //Navbar Right Menu - .navbar-custom-menu, - .navbar-right { - float: right; - @media (max-width: @screen-sm-max) { - a { - color: inherit; - background: transparent; - } - } - } - .navbar-right { - @media (max-width: @screen-header-collapse) { - float: none; - .navbar-collapse & { - margin: 7.5px -15px; - } - - > li { - color: inherit; - border: 0; - } - } - } - //Navbar toggle button - .sidebar-toggle { - float: left; - background-color: transparent; - background-image: none; - padding: @navbar-padding-vertical @navbar-padding-horizontal; - //Add the fontawesome bars icon - font-family: fontAwesome; - &:before { - content: "\f0c9"; - } - &:hover { - color: #fff; - } - &:focus, - &:active { - background: transparent; - } - } - .sidebar-toggle .icon-bar { - display: none; - } - //Navbar User Menu - .navbar .nav > li.user > a { - > .fa, - > .glyphicon, - > .ion { - margin-right: 5px; - } - } - - //Labels in navbar - .navbar .nav > li > a > .label { - position: absolute; - top: 9px; - right: 7px; - text-align: center; - font-size: 9px; - padding: 2px 3px; - line-height: .9; - } - - //Logo bar - .logo { - .transition(width @transition-speed @transition-fn); - display: block; - float: left; - height: @navbar-height; - font-size: 20px; - line-height: 50px; - text-align: center; - width: @sidebar-width; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - padding: 0 15px; - font-weight: 300; - overflow: hidden; - //Add support to sidebar mini by allowing the user to create - //2 logo designs. mini and lg - .logo-lg { - //should be visibile when sidebar isn't collapsed - display: block; - } - .logo-mini { - display: none; - } - } - //Navbar Brand. Alternative logo with layout-top-nav - .navbar-brand { - color: #fff; - } -} - -// Content Header -.content-header { - position: relative; - padding: 15px 15px 0 15px; - // Header Text - > h1 { - margin: 0; - font-size: 24px; - > small { - font-size: 15px; - display: inline-block; - padding-left: 4px; - font-weight: 300; - } - } - - > .breadcrumb { - float: right; - background: transparent; - margin-top: 0; - margin-bottom: 0; - font-size: 12px; - padding: 7px 5px; - position: absolute; - top: 15px; - right: 10px; - .border-radius(2px); - > li > a { - color: #444; - text-decoration: none; - display: inline-block; - > .fa, > .glyphicon, > .ion { - margin-right: 5px; - } - } - > li + li:before { - content: '>\00a0'; - } - } - - @media (max-width: @screen-sm-max) { - > .breadcrumb { - position: relative; - margin-top: 5px; - top: 0; - right: 0; - float: none; - background: @gray; - padding-left: 10px; - li:before { - color: darken(@gray, 20%); - } - } - } -} - -.navbar-toggle { - color: #fff; - border: 0; - margin: 0; - padding: @navbar-padding-vertical @navbar-padding-horizontal; -} - -//Control navbar scaffolding on x-small screens -@media (max-width: @screen-sm-max) { - .navbar-custom-menu .navbar-nav > li { - float: left; - } - - //Dont't let links get full width - .navbar-custom-menu .navbar-nav { - margin: 0; - float: left; - } - - .navbar-custom-menu .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - line-height: 20px; - } -} - -// Collapse header -@media (max-width: @screen-header-collapse) { - .main-header { - position: relative; - .logo, - .navbar { - width: 100%; - float: none; - } - .navbar { - margin: 0; - } - .navbar-custom-menu { - float: right; - } - } -} - -.navbar-collapse.pull-left { - @media (max-width: @screen-sm-max) { - float: none !important; - + .navbar-custom-menu { - display: block; - position: absolute; - top: 0; - right: 40px; - } - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/info-box.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/info-box.less deleted file mode 100644 index f8df3a8bfb7b..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/info-box.less +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Component: Info Box - * ------------------- - */ -.info-box { - display: block; - min-height: 90px; - background: #fff; - width: 100%; - box-shadow: @box-boxshadow; - .border-radius(2px); - margin-bottom: 15px; - small { - font-size: 14px; - } - .progress { - background: rgba(0, 0, 0, .2); - margin: 5px -10px 5px -10px; - height: 2px; - &, - & .progress-bar { - .border-radius(0); - } - .progress-bar { - background: #fff; - } - } -} - -.info-box-icon { - .border-radius(2px; 0; 2px; 0); - display: block; - float: left; - height: 90px; - width: 90px; - text-align: center; - font-size: 45px; - line-height: 90px; - background: rgba(0, 0, 0, 0.2); - > img { - max-width: 100%; - } -} - -.info-box-content { - padding: 5px 10px; - margin-left: 90px; -} - -.info-box-number { - display: block; - font-weight: bold; - font-size: 18px; -} - -.progress-description, -.info-box-text { - display: block; - font-size: 14px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.info-box-text { - text-transform: uppercase; -} - -.info-box-more { - display: block; -} - -.progress-description { - margin: 0; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/invoice.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/invoice.less deleted file mode 100644 index 3d2fcf8dd0ec..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/invoice.less +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Page: Invoice - * ------------- - */ - -.invoice { - position: relative; - background: #fff; - border: 1px solid #f4f4f4; - padding: 20px; - margin: 10px 25px; -} - -.invoice-title { - margin-top: 0; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/labels.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/labels.less deleted file mode 100644 index 902ca00308e8..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/labels.less +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Component: Label - * ---------------- - */ -.label-default { - background-color: @gray; - color: #444; -} - -.label-danger { - &:extend(.bg-red); -} - -.label-info { - &:extend(.bg-aqua); -} - -.label-warning { - &:extend(.bg-yellow); -} - -.label-primary { - &:extend(.bg-light-blue); -} - -.label-success { - &:extend(.bg-green); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/lockscreen.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/lockscreen.less deleted file mode 100644 index df52e3bada86..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/lockscreen.less +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Page: Lock Screen - * ----------------- - */ -/* ADD THIS CLASS TO THE TAG */ -.lockscreen { - background: @gray; -} - -.lockscreen-logo { - font-size: 35px; - text-align: center; - margin-bottom: 25px; - font-weight: 300; - a { - color: #444; - } -} - -.lockscreen-wrapper { - max-width: 400px; - margin: 0 auto; - margin-top: 10%; -} - -/* User name [optional] */ -.lockscreen .lockscreen-name { - text-align: center; - font-weight: 600; -} - -/* Will contain the image and the sign in form */ -.lockscreen-item { - .border-radius(4px); - padding: 0; - background: #fff; - position: relative; - margin: 10px auto 30px auto; - width: 290px; -} - -/* User image */ -.lockscreen-image { - .border-radius(50%); - position: absolute; - left: -10px; - top: -25px; - background: #fff; - padding: 5px; - z-index: 10; - > img { - .border-radius(50%); - width: 70px; - height: 70px; - } -} - -/* Contains the password input and the login button */ -.lockscreen-credentials { - margin-left: 70px; - .form-control { - border: 0; - } - .btn { - background-color: #fff; - border: 0; - padding: 0 10px; - } -} - -.lockscreen-footer { - margin-top: 10px; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/login_and_register.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/login_and_register.less deleted file mode 100644 index 453043f0f030..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/login_and_register.less +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Page: Login & Register - * ---------------------- - */ - -.login-logo, -.register-logo { - font-size: 35px; - text-align: center; - margin-bottom: 25px; - font-weight: 300; - a { - color: #444; - } -} - -.login-page, -.register-page { - background: @gray; -} - -.login-box, -.register-box { - width: 360px; - margin: 7% auto; - @media (max-width: @screen-sm) { - width: 90%; - margin-top: 20px; - } -} - -.login-box-body, -.register-box-body { - background: #fff; - padding: 20px; - border-top: 0; - color: #666; - .form-control-feedback { - color: #777; - } -} - -.login-box-msg, -.register-box-msg { - margin: 0; - text-align: center; - padding: 0 20px 20px 20px; -} - -.social-auth-links { - margin: 10px 0; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/mailbox.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/mailbox.less deleted file mode 100644 index 8e7a429f5549..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/mailbox.less +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Page: Mailbox - * ------------- - */ -.mailbox-messages { - > .table { - margin: 0; - } -} - -.mailbox-controls { - padding: 5px; - &.with-border { - border-bottom: 1px solid @box-border-color; - } -} - -.mailbox-read-info { - border-bottom: 1px solid @box-border-color; - padding: 10px; - h3 { - font-size: 20px; - margin: 0; - } - h5 { - margin: 0; - padding: 5px 0 0 0; - } -} - -.mailbox-read-time { - color: #999; - font-size: 13px; -} - -.mailbox-read-message { - padding: 10px; -} - -.mailbox-attachments { - &:extend(.list-unstyled); - li { - float: left; - width: 200px; - border: 1px solid #eee; - margin-bottom: 10px; - margin-right: 10px; - } -} - -.mailbox-attachment-name { - font-weight: bold; - color: #666; -} - -.mailbox-attachment-icon, -.mailbox-attachment-info, -.mailbox-attachment-size { - display: block; -} - -.mailbox-attachment-info { - padding: 10px; - background: #f4f4f4; -} - -.mailbox-attachment-size { - color: #999; - font-size: 12px; -} - -.mailbox-attachment-icon { - text-align: center; - font-size: 65px; - color: #666; - padding: 20px 10px; - &.has-img { - padding: 0; - > img { - max-width: 100%; - height: auto; - } - } -} - -.mailbox-attachment-close { - &:extend(.close); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/miscellaneous.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/miscellaneous.less deleted file mode 100644 index 04f0f2d68cb1..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/miscellaneous.less +++ /dev/null @@ -1,606 +0,0 @@ -/* - * General: Miscellaneous - * ---------------------- - */ -// 10px padding and margins -.pad { - padding: 10px; -} - -.margin { - margin: 10px; -} - -.margin-bottom { - margin-bottom: 20px; -} - -.margin-bottom-none { - margin-bottom: 0; -} - -.margin-r-5 { - margin-right: 5px; -} - -// Display inline -.inline { - display: inline; -} - -// Description Blocks -.description-block { - display: block; - margin: 10px 0; - text-align: center; - &.margin-bottom { - margin-bottom: 25px; - } - > .description-header { - margin: 0; - padding: 0; - font-weight: 600; - font-size: 16px; - } - > .description-text { - text-transform: uppercase; - } -} - -// Background colors -.bg-red, -.bg-yellow, -.bg-aqua, -.bg-blue, -.bg-light-blue, -.bg-green, -.bg-navy, -.bg-teal, -.bg-olive, -.bg-lime, -.bg-orange, -.bg-fuchsia, -.bg-purple, -.bg-maroon, -.bg-black, -.bg-red-active, -.bg-yellow-active, -.bg-aqua-active, -.bg-blue-active, -.bg-light-blue-active, -.bg-green-active, -.bg-navy-active, -.bg-teal-active, -.bg-olive-active, -.bg-lime-active, -.bg-orange-active, -.bg-fuchsia-active, -.bg-purple-active, -.bg-maroon-active, -.bg-black-active { - color: #fff !important; -} - -.bg-gray { - color: #000; - background-color: @gray !important; -} - -.bg-gray-light { - background-color: #f7f7f7; -} - -.bg-black { - background-color: @black !important; -} - -.bg-red { - background-color: @red !important; -} - -.bg-yellow { - background-color: @yellow !important; -} - -.bg-aqua { - background-color: @aqua !important; -} - -.bg-blue { - background-color: @blue !important; -} - -.bg-light-blue { - background-color: @light-blue !important; -} - -.bg-green { - background-color: @green !important; -} - -.bg-navy { - background-color: @navy !important; -} - -.bg-teal { - background-color: @teal !important; -} - -.bg-olive { - background-color: @olive !important; -} - -.bg-lime { - background-color: @lime !important; -} - -.bg-orange { - background-color: @orange !important; -} - -.bg-fuchsia { - background-color: @fuchsia !important; -} - -.bg-purple { - background-color: @purple !important; -} - -.bg-maroon { - background-color: @maroon !important; -} - -//Set of Active Background Colors -.bg-gray-active { - color: #000; - background-color: darken(@gray, 10%) !important; -} - -.bg-black-active { - background-color: darken(@black, 10%) !important; -} - -.bg-red-active { - background-color: darken(@red , 6%) !important; -} - -.bg-yellow-active { - background-color: darken(@yellow , 6%) !important; -} - -.bg-aqua-active { - background-color: darken(@aqua , 6%) !important; -} - -.bg-blue-active { - background-color: darken(@blue , 10%) !important; -} - -.bg-light-blue-active { - background-color: darken(@light-blue , 6%) !important; -} - -.bg-green-active { - background-color: darken(@green , 5%) !important; -} - -.bg-navy-active { - background-color: darken(@navy , 2%) !important; -} - -.bg-teal-active { - background-color: darken(@teal , 5%) !important; -} - -.bg-olive-active { - background-color: darken(@olive , 5%) !important; -} - -.bg-lime-active { - background-color: darken(@lime , 5%) !important; -} - -.bg-orange-active { - background-color: darken(@orange , 5%) !important; -} - -.bg-fuchsia-active { - background-color: darken(@fuchsia , 5%) !important; -} - -.bg-purple-active { - background-color: darken(@purple , 5%) !important; -} - -.bg-maroon-active { - background-color: darken(@maroon , 3%) !important; -} - -//Disabled! -[class^="bg-"].disabled { - .opacity(.65); -} - -// Text colors -.text-red { - color: @red !important; -} - -.text-yellow { - color: @yellow !important; -} - -.text-aqua { - color: @aqua !important; -} - -.text-blue { - color: @blue !important; -} - -.text-black { - color: @black !important; -} - -.text-light-blue { - color: @light-blue !important; -} - -.text-green { - color: @green !important; -} - -.text-gray { - color: @gray !important; -} - -.text-navy { - color: @navy !important; -} - -.text-teal { - color: @teal !important; -} - -.text-olive { - color: @olive !important; -} - -.text-lime { - color: @lime !important; -} - -.text-orange { - color: @orange !important; -} - -.text-fuchsia { - color: @fuchsia !important; -} - -.text-purple { - color: @purple !important; -} - -.text-maroon { - color: @maroon !important; -} - -.link-muted { - color: darken(@gray, 30%); - &:hover, - &:focus { - color: darken(@gray, 40%); - } -} - -.link-black { - color: #666; - &:hover, - &:focus { - color: #999; - } -} - -// Hide elements by display none only -.hide { - display: none !important; -} - -// Remove borders -.no-border { - border: 0 !important; -} - -// Remove padding -.no-padding { - padding: 0 !important; -} - -// Remove margins -.no-margin { - margin: 0 !important; -} - -// Remove box shadow -.no-shadow { - box-shadow: none !important; -} - -// Unstyled List -.list-unstyled { - list-style: none; - margin: 0; - padding: 0; -} - -.list-group-unbordered { - > .list-group-item { - border-left: 0; - border-right: 0; - border-radius: 0; - padding-left: 0; - padding-right: 0; - } -} - -// Remove border radius -.flat { - .border-radius(0) !important; -} - -.text-bold { - &, &.table td, &.table th { - font-weight: 700; - } -} - -.text-sm { - font-size: 12px; -} - -// _fix for sparkline tooltip -.jqstooltip { - padding: 5px !important; - width: auto !important; - height: auto !important; -} - -// Gradient Background colors -.bg-teal-gradient { - .gradient(@teal; @teal; lighten(@teal, 16%)) !important; - color: #fff; -} - -.bg-light-blue-gradient { - .gradient(@light-blue; @light-blue; lighten(@light-blue, 12%)) !important; - color: #fff; -} - -.bg-blue-gradient { - .gradient(@blue; @blue; lighten(@blue, 7%)) !important; - color: #fff; -} - -.bg-aqua-gradient { - .gradient(@aqua; @aqua; lighten(@aqua, 7%)) !important; - color: #fff; -} - -.bg-yellow-gradient { - .gradient(@yellow; @yellow; lighten(@yellow, 16%)) !important; - color: #fff; -} - -.bg-purple-gradient { - .gradient(@purple; @purple; lighten(@purple, 16%)) !important; - color: #fff; -} - -.bg-green-gradient { - .gradient(@green; @green; lighten(@green, 7%)) !important; - color: #fff; -} - -.bg-red-gradient { - .gradient(@red; @red; lighten(@red, 10%)) !important; - color: #fff; -} - -.bg-black-gradient { - .gradient(@black; @black; lighten(@black, 10%)) !important; - color: #fff; -} - -.bg-maroon-gradient { - .gradient(@maroon; @maroon; lighten(@maroon, 10%)) !important; - color: #fff; -} - -//Description Block Extension -.description-block { - .description-icon { - font-size: 16px; - } -} - -//Remove top padding -.no-pad-top { - padding-top: 0; -} - -//Make position static -.position-static { - position: static !important; -} - -//List utility classes -.list-header { - font-size: 15px; - padding: 10px 4px; - font-weight: bold; - color: #666; -} - -.list-seperator { - height: 1px; - background: @box-border-color; - margin: 15px 0 9px 0; -} - -.list-link { - > a { - padding: 4px; - color: #777; - &:hover { - color: #222; - } - } -} - -//Light font weight -.font-light { - font-weight: 300; -} - -//User block -.user-block { - .clearfix(); - img { - width: 40px; - height: 40px; - float: left; - } - .username, - .description, - .comment { - display: block; - margin-left: 50px; - } - .username { - font-size: 16px; - font-weight: 600; - } - .description { - color: #999; - font-size: 13px; - } - &.user-block-sm { - img { - &:extend(.img-sm); - } - .username, - .description, - .comment { - margin-left: 40px; - } - .username { - font-size: 14px; - } - } -} - -//Image sizes -.img-sm, -.img-md, -.img-lg { - float: left; -} - -.img-sm { - width: 30px !important; - height: 30px !important; - + .img-push { - margin-left: 40px; - } -} - -.img-md { - width: 60px; - height: 60px; - + .img-push { - margin-left: 70px; - } -} - -.img-lg { - width: 100px; - height: 100px; - + .img-push { - margin-left: 110px; - } -} - -// Image bordered -.img-bordered { - border: 3px solid @gray; - padding: 3px; -} - -.img-bordered-sm { - border: 2px solid @gray; - padding: 2px; -} - -//General attachemnt block -.attachment-block { - border: 1px solid @box-border-color; - padding: 5px; - margin-bottom: 10px; - background: #f7f7f7; - - .attachment-img { - max-width: 100px; - max-height: 100px; - height: auto; - float: left; - } - .attachment-pushed { - margin-left: 110px; - } - .attachment-heading { - margin: 0; - } - .attachment-text { - color: #555; - } -} - -.connectedSortable { - min-height: 100px; -} - -.ui-helper-hidden-accessible { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} - -.sort-highlight { - background: #f4f4f4; - border: 1px dashed #ddd; - margin-bottom: 10px; -} - -.full-opacity-hover { - .opacity(.65); - &:hover { - .opacity(1); - } -} - -// Charts -.chart { - position: relative; - overflow: hidden; - width: 100%; - svg, - canvas { - width: 100% !important; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/mixins.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/mixins.less deleted file mode 100644 index f806538703f4..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/mixins.less +++ /dev/null @@ -1,315 +0,0 @@ -//AdminLTE mixins -//=============== - -//Changes the color and the hovering properties of the navbar -.navbar-variant(@color; @font-color: rgba(255, 255, 255, 0.8); @hover-color: #f6f6f6; @hover-bg: rgba(0, 0, 0, 0.1)) { - background-color: @color; - //Navbar links - .nav > li > a { - color: @font-color; - } - - .nav > li > a:hover, - .nav > li > a:active, - .nav > li > a:focus, - .nav .open > a, - .nav .open > a:hover, - .nav .open > a:focus, - .nav > .active > a { - background: @hover-bg; - color: @hover-color; - } - - //Add color to the sidebar toggle button - .sidebar-toggle { - color: @font-color; - &:hover { - color: @hover-color; - background: @hover-bg; - } - } -} - -//Logo color variation -.logo-variant(@bg-color; @color: #fff; @border-bottom-color: transparent; @border-bottom-width: 0) { - background-color: @bg-color; - color: @color; - border-bottom: @border-bottom-width solid @border-bottom-color; - - &:hover { - background-color: darken(@bg-color, 1%); - } -} - -//Box solid color variantion creator -.box-solid-variant(@color; @text-color: #fff) { - border: 1px solid @color; - > .box-header { - color: @text-color; - background: @color; - background-color: @color; - a, - .btn { - color: @text-color; - } - } -} - -//Direct Chat Variant -.direct-chat-variant(@bg-color; @color: #fff) { - .right > .direct-chat-text { - background: @bg-color; - border-color: @bg-color; - color: @color; - &:after, - &:before { - border-left-color: @bg-color; - } - } -} - -//border radius creator -.border-radius(@radius) { - border-radius: @radius; -} - -//Different radius each side -.border-radius(@top-left; -@top-right -; -@bottom-left -; -@bottom-right -) -{ - border-top-left-radius: @top-left -; - border-top-right-radius: @top-right -; - border-bottom-right-radius: @bottom-right -; - border-bottom-left-radius: @bottom-left -; -} - -//Gradient background -.gradient(@color: #F5F5F5, @start: #EEE, @stop: #FFF) { - background: @color; - background: -webkit-gradient(linear, - left bottom, - left top, - color-stop(0, @start), - color-stop(1, @stop)); - background: -ms-linear-gradient(bottom, - @start, - @stop); - background: -moz-linear-gradient(center bottom, - @start 0%, - @stop 100%); - background: -o-linear-gradient(@stop, - @start); - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@stop,@start)); -} - -//Added 2.1.0 -//Skins Mixins - -//Dark Sidebar Mixin -.skin-dark-sidebar(@link-hover-border-color) { - // Sidebar background color (Both .wrapper and .left-side are responsible for sidebar bg color) - .wrapper, - .main-sidebar, - .left-side { - background-color: @sidebar-dark-bg; - } - //User Panel (resides in the sidebar) - .user-panel { - > .info, > .info > a { - color: #fff; - } - } - //Sidebar Menu. First level links - .sidebar-menu > li { - //Section Headning - &.header { - color: lighten(@sidebar-dark-bg, 20%); - background: darken(@sidebar-dark-bg, 4%); - } - //links - > a { - border-left: 3px solid transparent; - } - //Hover and active states - &:hover > a, &.active > a { - color: @sidebar-dark-hover-color; - background: @sidebar-dark-hover-bg; - border-left-color: @link-hover-border-color; - } - //First Level Submenu - > .treeview-menu { - margin: 0 1px; - background: @sidebar-dark-submenu-bg; - } - } - //All links within the sidebar menu - .sidebar a { - color: @sidebar-dark-color; - &:hover { - text-decoration: none; - } - } - //All submenus - .treeview-menu { - > li { - > a { - color: @sidebar-dark-submenu-color; - } - &.active > a, > a:hover { - color: @sidebar-dark-submenu-hover-color; - } - } - } - //The sidebar search form - .sidebar-form { - .border-radius(3px); - border: 1px solid lighten(@sidebar-dark-bg, 10%); - margin: 10px 10px; - input[type="text"], .btn { - box-shadow: none; - background-color: lighten(@sidebar-dark-bg, 10%); - border: 1px solid transparent; - height: 35px; - //.transition(all @transition-speed @transition-fn); - } - input[type="text"] { - color: #666; - .border-radius(2px, 0, 2px, 0); - &:focus, - &:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; - } - &:focus + .input-group-btn .btn { - border-left-color: #fff; - - } - } - .btn { - color: #999; - .border-radius(0, 2px, 0, 2px); - } - } -} - -//Light Sidebar Mixin -.skin-light-sidebar(@icon-active-color) { - // Sidebar background color (Both .wrapper and .left-side are responsible for sidebar bg color) - .wrapper, - .main-sidebar, - .left-side { - background-color: @sidebar-light-bg; - } - .content-wrapper, - .main-footer { - border-left: 1px solid @gray; - } - //User Panel (resides in the sidebar) - .user-panel { - > .info, > .info > a { - color: @sidebar-light-color; - } - } - //Sidebar Menu. First level links - .sidebar-menu > li { - .transition(border-left-color .3s ease); - //border-left: 3px solid transparent; - //Section Headning - &.header { - color: lighten(@sidebar-light-color, 25%); - background: @sidebar-light-bg; - } - //links - > a { - border-left: 3px solid transparent; - font-weight: 600; - } - //Hover and active states - &:hover > a, - &.active > a { - color: @sidebar-light-hover-color; - background: @sidebar-light-hover-bg; - } - &:hover > a { - - } - &.active { - border-left-color: @icon-active-color; - > a { - font-weight: 600; - } - } - //First Level Submenu - > .treeview-menu { - background: @sidebar-light-submenu-bg; - } - } - //All links within the sidebar menu - .sidebar a { - color: @sidebar-light-color; - &:hover { - text-decoration: none; - } - } - //All submenus - .treeview-menu { - > li { - > a { - color: @sidebar-light-submenu-color; - } - &.active > a, - > a:hover { - color: @sidebar-light-submenu-hover-color; - } - &.active > a { - font-weight: 600; - } - } - } - //The sidebar search form - .sidebar-form { - .border-radius(3px); - border: 1px solid @gray; //darken(@sidebar-light-bg, 5%); - margin: 10px 10px; - input[type="text"], - .btn { - box-shadow: none; - background-color: #fff; //darken(@sidebar-light-bg, 3%); - border: 1px solid transparent; - height: 35px; - //.transition(all @transition-speed @transition-fn); - } - input[type="text"] { - color: #666; - .border-radius(2px, 0, 2px, 0); - &:focus, - &:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; - } - &:focus + .input-group-btn .btn { - border-left-color: #fff; - } - } - .btn { - color: #999; - .border-radius(0, 2px, 0, 2px); - } - } - @media (min-width: @screen-sm-min) { - &.sidebar-mini.sidebar-collapse { - .sidebar-menu > li > .treeview-menu { - border-left: 1px solid @gray; - } - } - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/modal.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/modal.less deleted file mode 100644 index f42db1ccb937..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/modal.less +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Component: modal - * ---------------- - */ -.modal { - background: rgba(0, 0, 0, .3); -} - -.modal-content { - .border-radius(0); - .box-shadow(0 2px 3px rgba(0, 0, 0, .125)); - border: 0; - @media (min-width: @screen-sm-min) { - .box-shadow(0 2px 3px rgba(0, 0, 0, .125)); - } -} - -.modal-header { - border-bottom-color: @box-border-color; -} - -.modal-footer { - border-top-color: @box-border-color; -} - -//Modal variants -.modal-primary { - .modal-body { - &:extend(.bg-light-blue); - } - .modal-header, - .modal-footer { - &:extend(.bg-light-blue-active); - border-color: darken(@light-blue, 10%); - } -} - -.modal-warning { - .modal-body { - &:extend(.bg-yellow); - } - .modal-header, - .modal-footer { - &:extend(.bg-yellow-active); - border-color: darken(@yellow, 10%); - } -} - -.modal-info { - .modal-body { - &:extend(.bg-aqua); - } - .modal-header, - .modal-footer { - &:extend(.bg-aqua-active); - border-color: darken(@aqua, 10%); - } -} - -.modal-success { - .modal-body { - &:extend(.bg-green); - } - .modal-header, - .modal-footer { - &:extend(.bg-green-active); - border-color: darken(@green, 10%); - } -} - -.modal-danger { - .modal-body { - &:extend(.bg-red); - } - .modal-header, - .modal-footer { - &:extend(.bg-red-active); - border-color: darken(@red, 10%); - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/navs.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/navs.less deleted file mode 100644 index af0dc6aa52e8..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/navs.less +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Component: Nav - * -------------- - */ - -.nav { - > li > a:hover, - > li > a:active, - > li > a:focus { - color: #444; - background: #f7f7f7; - } -} - -/* NAV PILLS */ -.nav-pills { - > li > a { - .border-radius(0); - border-top: 3px solid transparent; - color: #444; - > .fa, - > .glyphicon, - > .ion { - margin-right: 5px; - } - } - > li.active > a, - > li.active > a:hover, - > li.active > a:focus { - border-top-color: @light-blue; - } - > li.active > a { - font-weight: 600; - } -} - -/* NAV STACKED */ -.nav-stacked { - > li > a { - .border-radius(0); - border-top: 0; - border-left: 3px solid transparent; - color: #444; - } - > li.active > a, - > li.active > a:hover { - background: transparent; - color: #444; - border-top: 0; - border-left-color: @light-blue; - } - - > li.header { - border-bottom: 1px solid #ddd; - color: #777; - margin-bottom: 10px; - padding: 5px 10px; - text-transform: uppercase; - } -} - -/* NAV TABS */ -.nav-tabs-custom { - margin-bottom: 20px; - background: #fff; - box-shadow: @box-boxshadow; - border-radius: @box-border-radius; - > .nav-tabs { - margin: 0; - border-bottom-color: #f4f4f4; - .border-top-radius(@box-border-radius); - > li { - border-top: 3px solid transparent; - margin-bottom: -2px; - > a { - color: #444; - .border-radius(0); - &.text-muted { - color: #999; - } - &, - &:hover { - background: transparent; - margin: 0; - } - &:hover { - color: #999; - } - } - &:not(.active) { - > a:hover, - > a:focus, - > a:active { - border-color: transparent; - } - } - margin-right: 5px; - } - - > li.active { - border-top-color: @light-blue; - & > a, - &:hover > a { - background-color: #fff; - color: #444; - } - > a { - border-top-color: transparent; - border-left-color: #f4f4f4; - border-right-color: #f4f4f4; - } - - } - - > li:first-of-type { - margin-left: 0; - &.active { - > a { - border-left-color: transparent; - } - } - } - - //Pulled to the right - &.pull-right { - float: none !important; - > li { - float: right; - } - > li:first-of-type { - margin-right: 0; - > a { - border-left-width: 1px; - } - &.active { - > a { - border-left-color: #f4f4f4; - border-right-color: transparent; - } - } - } - } - - > li.header { - line-height: 35px; - padding: 0 10px; - font-size: 20px; - color: #444; - > .fa, - > .glyphicon, - > .ion { - margin-right: 5px; - } - } - } - - > .tab-content { - background: #fff; - padding: 10px; - .border-bottom-radius(@box-border-radius); - } - - .dropdown.open > a { - &:active, - &:focus { - background: transparent; - color: #999; - } - } - // Tab color variations - &.tab-primary { - > .nav-tabs { - > li.active { - border-top-color: @light-blue; - } - } - } - &.tab-info { - > .nav-tabs { - > li.active { - border-top-color: @aqua; - } - } - } - &.tab-danger { - > .nav-tabs { - > li.active { - border-top-color: @red; - } - } - } - &.tab-warning { - > .nav-tabs { - > li.active { - border-top-color: @yellow; - } - } - } - &.tab-success { - > .nav-tabs { - > li.active { - border-top-color: @green; - } - } - } - &.tab-default { - > .nav-tabs { - > li.active { - border-top-color: @gray; - } - } - } -} - -/* PAGINATION */ -.pagination { - > li > a { - background: #fafafa; - color: #666; - } - &.pagination-flat { - > li > a { - .border-radius(0) !important; - } - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/print.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/print.less deleted file mode 100644 index 52b14f205dd2..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/print.less +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Misc: print - * ----------- - */ -@media print { - //Add to elements that you do not want to show when printing - .no-print { - display: none !important; - } - - //Elements that we want to hide when printing - .main-sidebar, - .left-side, - .main-header, - .content-header { - &:extend(.no-print); - } - - //This is the only element that should appear, so let's remove the margins - .content-wrapper, - .right-side, - .main-footer { - margin-left: 0 !important; - min-height: 0 !important; - .translate(0, 0) !important; - } - - .fixed .content-wrapper, - .fixed .right-side { - padding-top: 0 !important; - } - - //Invoice printing - .invoice { - width: 100%; - border: 0; - margin: 0; - padding: 0; - } - - .invoice-col { - float: left; - width: 33.3333333%; - } - - //Make sure table content displays properly - .table-responsive { - overflow: auto; - > .table tr th, - > .table tr td { - white-space: normal !important; - } - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/products.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/products.less deleted file mode 100644 index 49f30a6be017..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/products.less +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Component: Products List - * ------------------------ - */ -.products-list { - list-style: none; - margin: 0; - padding: 0; - > .item { - .border-radius(@box-border-radius); - .box-shadow(@box-boxshadow); - .clearfix(); - padding: 10px 0; - background: #fff; - } - .product-img { - float: left; - img { - width: 50px; - height: 50px; - } - } - .product-info { - margin-left: 60px; - } - .product-title { - font-weight: 600; - } - .product-description { - display: block; - color: #999; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } -} - -.product-list-in-box > .item { - .box-shadow(none); - .border-radius(0); - border-bottom: 1px solid @box-border-color; - &:last-of-type { - border-bottom-width: 0; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/profile.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/profile.less deleted file mode 100644 index 3cb8e091464f..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/profile.less +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Page: Profile - * ------------- - */ - -.profile-user-img { - margin: 0 auto; - width: 100px; - padding: 3px; - border: 3px solid @gray; -} - -.profile-username { - font-size: 21px; - margin-top: 5px; -} - -.post { - border-bottom: 1px solid @gray; - margin-bottom: 15px; - padding-bottom: 15px; - color: #666; - &:last-of-type { - border-bottom: 0; - margin-bottom: 0; - padding-bottom: 0; - } - .user-block { - margin-bottom: 15px; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/progress-bars.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/progress-bars.less deleted file mode 100644 index 423edc44af1e..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/progress-bars.less +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Component: Progress Bar - * ----------------------- - */ - -//General CSS -.progress, -.progress > .progress-bar { - .box-shadow(none); - &, .progress-bar { - .border-radius(@progress-bar-border-radius); - } -} - -/* size variation */ -.progress.sm, -.progress-sm { - height: 10px; - &, .progress-bar { - .border-radius(@progress-bar-sm-border-radius); - } -} - -.progress.xs, -.progress-xs { - height: 7px; - &, .progress-bar { - .border-radius(@progress-bar-xs-border-radius); - } -} - -.progress.xxs, -.progress-xxs { - height: 3px; - &, .progress-bar { - .border-radius(@progress-bar-xs-border-radius); - } -} - -/* Vertical bars */ -.progress.vertical { - position: relative; - width: 30px; - height: 200px; - display: inline-block; - margin-right: 10px; - > .progress-bar { - width: 100%; - position: absolute; - bottom: 0; - } - - //Sizes - &.sm, - &.progress-sm { - width: 20px; - } - - &.xs, - &.progress-xs { - width: 10px; - } - &.xxs, - &.progress-xxs { - width: 3px; - } -} - -//Progress Groups -.progress-group { - .progress-text { - font-weight: 600; - } - .progress-number { - float: right; - } -} - -/* Remove margins from progress bars when put in a table */ -.table { - tr > td .progress { - margin: 0; - } -} - -// Variations -// ------------------------- -.progress-bar-light-blue, -.progress-bar-primary { - .progress-bar-variant(@light-blue); -} - -.progress-bar-green, -.progress-bar-success { - .progress-bar-variant(@green); -} - -.progress-bar-aqua, -.progress-bar-info { - .progress-bar-variant(@aqua); -} - -.progress-bar-yellow, -.progress-bar-warning { - .progress-bar-variant(@yellow); -} - -.progress-bar-red, -.progress-bar-danger { - .progress-bar-variant(@red); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/select2.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/select2.less deleted file mode 100644 index d144da0851c2..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/select2.less +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Plugin: Select2 - * --------------- - */ - -//Signle select -.select2-container--default, -.select2-selection { - &.select2-container--focus, - &:focus, - &:active { - outline: none; - } - .select2-selection--single { - border: 1px solid @gray; - border-radius: @input-radius; - padding: 6px 12px; - height: 34px; - } -} - -.select2-container--default.select2-container--open { - border-color: @light-blue; -} - -.select2-dropdown { - border: 1px solid @gray; - border-radius: @input-radius; -} - -.select2-container--default .select2-results__option--highlighted[aria-selected] { - background-color: @light-blue; - color: white; -} - -.select2-results__option { - padding: 6px 12px; - user-select: none; - -webkit-user-select: none; -} - -.select2-container .select2-selection--single .select2-selection__rendered { - padding-left: 0; - padding-right: 0; - height: auto; - margin-top: -4px; -} - -.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { - padding-right: 6px; - padding-left: 20px; -} - -.select2-container--default .select2-selection--single .select2-selection__arrow { - height: 28px; - right: 3px; -} - -.select2-container--default .select2-selection--single .select2-selection__arrow b { - margin-top: 0; -} - -.select2-dropdown, -.select2-search--inline { - .select2-search__field { - border: 1px solid @gray; - &:focus { - outline: none; - border: 1px solid @light-blue; - } - } -} - -.select2-container--default .select2-results__option[aria-disabled=true] { - color: #999; -} - -.select2-container--default .select2-results__option[aria-selected=true] { - background-color: #ddd; - &, - &:hover { - color: #444; - } -} - -//Multiple select -.select2-container--default { - .select2-selection--multiple { - border: 1px solid @gray; - border-radius: @input-radius; - &:focus { - border-color: @light-blue; - } - } - &.select2-container--focus .select2-selection--multiple { - border-color: @gray; - } -} - -.select2-container--default .select2-selection--multiple .select2-selection__choice { - background-color: @light-blue; - border-color: darken(@light-blue, 5%); - padding: 1px 10px; - color: #fff; -} - -.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { - margin-right: 5px; - color: rgba(255, 255, 255, .7); - &:hover { - color: #fff; - } -} - -.select2-container .select2-selection--single .select2-selection__rendered { - padding-right: 10px; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/sidebar-mini.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/sidebar-mini.less deleted file mode 100644 index 344176ec2b78..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/sidebar-mini.less +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Component: Sidebar Mini - */ - -//Add sidebar-mini class to the body tag to activate this feature -.sidebar-mini { - //Sidebar mini should work only on devices larger than @screen-sm - @media (min-width: @screen-sm) { - //When the sidebar is collapsed... - &.sidebar-collapse { - - //Apply the new margining to the main content and footer - .content-wrapper, - .right-side, - .main-footer { - margin-left: 50px !important; - z-index: 840; - } - - //Modify the sidebar to shrink instead of disappearing - .main-sidebar { - //Don't go away! Just shrink - .translate(0, 0); - width: 50px !important; - z-index: 850; - } - - .sidebar-menu { - > li { - position: relative; - > a { - margin-right: 0; - } - > a > span { - border-top-right-radius: 4px; - } - - &:not(.treeview) { - > a > span { - border-bottom-right-radius: 4px; - } - } - - > .treeview-menu { - //Add some padding to the treeview menu - padding-top: 5px; - padding-bottom: 5px; - border-bottom-right-radius: 4px; - } - - //Show menu items on hover - &:hover { - > a { - //overflow: visible; - } - > a > span:not(.pull-right),//:not(.pull-right-container), - > .treeview-menu { - display: block !important; - position: absolute; - width: @sidebar-width - 50; - left: 50px; - } - - //position the header & treeview menus - > a > span { - top: 0; - margin-left: -3px; - padding: 12px 5px 12px 20px; - background-color: inherit; - } - > a > .pull-right-container { - //display: block!important; - float: right; - width: auto!important; - left: 200px!important; - top: 10px!important; - > .label:not(:first-of-type) { - display: none; - } - } - > .treeview-menu { - top: 44px; - margin-left: 0; - } - } - } - } - - //Make the sidebar links, menus, labels, badges - //and angle icons disappear - .main-sidebar .user-panel > .info, - .sidebar-form, - .sidebar-menu > li > a > span, - .sidebar-menu > li > .treeview-menu, - .sidebar-menu > li > a > .pull-right, - .sidebar-menu li.header { - display: none !important; - -webkit-transform: translateZ(0); - } - - .main-header { - //Let's make the logo also shrink and the mini logo to appear - .logo { - width: 50px; - > .logo-mini { - display: block; - margin-left: -15px; - margin-right: -15px; - font-size: 18px; - } - > .logo-lg { - display: none; - } - } - - //Since the logo got smaller, we need to fix the navbar's position - .navbar { - margin-left: 50px; - } - } - } - } -} - -//A fix for text overflow while transitioning from sidebar mini to full sidebar -.sidebar-menu, -.main-sidebar .user-panel, -.sidebar-menu > li.header { - white-space: nowrap; - overflow: hidden; -} - -.sidebar-menu:hover { - overflow: visible; -} - -.sidebar-form, -.sidebar-menu > li.header { - overflow: hidden; - text-overflow: clip; -} - -.sidebar-menu li > a { - position: relative; - > .pull-right-container { - position: absolute; - right: 10px; - top: 50%; - margin-top: -7px; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/sidebar.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/sidebar.less deleted file mode 100644 index 541428782d3a..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/sidebar.less +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Component: Sidebar - * ------------------ - */ -//Main Sidebar -// ``` .left-side has been deprecated as of 2.0.0 in favor of .main-sidebar ``` - -.main-sidebar, -.left-side { - position: absolute; - top: 0; - left: 0; - padding-top: 50px; - min-height: 100%; - width: @sidebar-width; - z-index: 810; - //Using disposable variable to join statements with a comma - @transition-rule: @transition-speed @transition-fn, - width @transition-speed @transition-fn; - .transition-transform(@transition-rule); - @media (max-width: @screen-header-collapse) { - padding-top: 100px; - } - @media (max-width: @screen-xs-max) { - .translate(-@sidebar-width, 0); - } - .sidebar-collapse & { - @media (min-width: @screen-sm) { - .translate(-@sidebar-width, 0); - } - } - .sidebar-open & { - @media (max-width: @screen-xs-max) { - .translate(0, 0); - } - } -} - -.sidebar { - padding-bottom: 10px; -} - -// remove border from form -.sidebar-form { - input:focus { - border-color: transparent; - } -} - -//Sidebar user panel -.user-panel { - position: relative; - width: 100%; - padding: 10px; - overflow: hidden; - .clearfix(); - > .image > img { - width: 100%; - max-width: 45px; - height: auto; - } - > .info { - padding: 5px 5px 5px 15px; - line-height: 1; - position: absolute; - left: 55px; - > p { - font-weight: 600; - margin-bottom: 9px; - } - > a { - text-decoration: none; - padding-right: 5px; - margin-top: 3px; - font-size: 11px; - > .fa, - > .ion, - > .glyphicon { - margin-right: 3px; - } - } - } -} - -// Sidebar menu -.sidebar-menu { - list-style: none; - margin: 0; - padding: 0; - //First Level - > li { - position: relative; - margin: 0; - padding: 0; - > a { - padding: 12px 5px 12px 15px; - display: block; - > .fa, - > .glyphicon, - > .ion { - width: 20px; - } - } - .label, - .badge { - margin-right: 5px; - } - .badge { - margin-top: 3px; - } - } - li.header { - padding: 10px 25px 10px 15px; - font-size: 12px; - } - li > a > .fa-angle-left, - li > a > .pull-right-container > .fa-angle-left { - width: auto; - height: auto; - padding: 0; - margin-right: 10px; - } - li.active { - > a > .fa-angle-left, - > a > .pull-right-container > .fa-angle-left { - .rotate(-90deg); - } - > .treeview-menu { - display: block; - } - } - - // Tree view menu - .treeview-menu { - display: none; - list-style: none; - padding: 0; - margin: 0; - padding-left: 5px; - .treeview-menu { - padding-left: 20px; - } - > li { - margin: 0; - > a { - padding: 5px 5px 5px 15px; - display: block; - font-size: 14px; - > .fa, - > .glyphicon, - > .ion { - width: 20px; - } - > .pull-right-container > .fa-angle-left, - > .pull-right-container > .fa-angle-down, - > .fa-angle-left, - > .fa-angle-down { - width: auto; - } - } - } - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/_all-skins.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/_all-skins.less deleted file mode 100644 index ec07547ff107..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/_all-skins.less +++ /dev/null @@ -1,13 +0,0 @@ -//All skins in one file -@import "skin-blue.less"; -@import "skin-blue-light.less"; -@import "skin-black.less"; -@import "skin-black-light.less"; -@import "skin-green.less"; -@import "skin-green-light.less"; -@import "skin-red.less"; -@import "skin-red-light.less"; -@import "skin-yellow.less"; -@import "skin-yellow-light.less"; -@import "skin-purple.less"; -@import "skin-purple-light.less"; diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-black-light.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-black-light.less deleted file mode 100644 index 88ef165c0eee..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-black-light.less +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Skin: Black - * ----------- - */ -@import "../../bootstrap-less/mixins.less"; -@import "../../bootstrap-less/variables.less"; -@import "../variables.less"; -@import "../mixins.less"; - -/* skin-black navbar */ -.skin-black-light { - //Navbar & Logo - .main-header { - .box-shadow(0px 1px 1px rgba(0, 0, 0, 0.05)); - .navbar-toggle { - color: #333; - } - .navbar-brand { - color: #333; - border-right: 1px solid #eee; - } - .navbar { - .navbar-variant(#fff; #333; #999; #fff); - > .sidebar-toggle { - color: #333; - border-right: 1px solid #eee; - } - .navbar-nav { - > li > a { - border-right: 1px solid #eee; - } - } - .navbar-custom-menu .navbar-nav, - .navbar-right { - > li { - > a { - border-left: 1px solid #eee; - border-right-width: 0; - } - } - } - } - > .logo { - .logo-variant(#fff; #333); - border-right: 1px solid #eee; - @media (max-width: @screen-header-collapse) { - .logo-variant(#222; #fff); - border-right: none; - } - } - - li.user-header { - background-color: #222; - } - } - - //Content Header - .content-header { - background: transparent; - box-shadow: none; - } - //Create the sidebar skin - .skin-light-sidebar(#fff); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-black.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-black.less deleted file mode 100644 index 643e8eebfedb..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-black.less +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Skin: Black - * ----------- - */ -@import "../../bootstrap-less/mixins.less"; -@import "../../bootstrap-less/variables.less"; -@import "../variables.less"; -@import "../mixins.less"; - -/* skin-black navbar */ -.skin-black { - //Navbar & Logo - .main-header { - .box-shadow(0px 1px 1px rgba(0, 0, 0, 0.05)); - .navbar-toggle { - color: #333; - } - .navbar-brand { - color: #333; - border-right: 1px solid #eee; - } - .navbar { - .navbar-variant(#fff; #333; #999; #fff); - > .sidebar-toggle { - color: #333; - border-right: 1px solid #eee; - } - .navbar-nav { - > li > a { - border-right: 1px solid #eee; - } - } - .navbar-custom-menu .navbar-nav, - .navbar-right { - > li { - > a { - border-left: 1px solid #eee; - border-right-width: 0; - } - } - } - } - > .logo { - .logo-variant(#fff; #333); - border-right: 1px solid #eee; - @media (max-width: @screen-header-collapse) { - .logo-variant(#222; #fff); - border-right: none; - } - } - - li.user-header { - background-color: #222; - } - } - - //Content Header - .content-header { - background: transparent; - box-shadow: none; - } - //Create the sidebar skin - .skin-dark-sidebar(#fff); - - .pace { - .pace-progress { - background: #222; - } - .pace-activity { - border-top-color: #222; - border-left-color: #222; - } - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-blue-light.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-blue-light.less deleted file mode 100644 index cd7341cd214c..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-blue-light.less +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Skin: Blue - * ---------- - */ -@import "../../bootstrap-less/mixins.less"; -@import "../../bootstrap-less/variables.less"; -@import "../variables.less"; -@import "../mixins.less"; - -.skin-blue-light { - //Navbar - .main-header { - .navbar { - .navbar-variant(@light-blue; #fff); - .sidebar-toggle { - color: #fff; - &:hover { - background-color: darken(@light-blue, 5%); - } - } - @media (max-width: @screen-header-collapse) { - .dropdown-menu { - li { - &.divider { - background-color: rgba(255, 255, 255, 0.1); - } - a { - color: #fff; - &:hover { - background: darken(@light-blue, 5%); - } - } - } - } - } - } - //Logo - .logo { - .logo-variant(@light-blue); - } - - li.user-header { - background-color: @light-blue; - } - } - - //Content Header - .content-header { - background: transparent; - } - - //Create the sidebar skin - .skin-light-sidebar(@light-blue); - .main-footer { - border-top-color: @gray; - } -} - -.skin-blue.layout-top-nav .main-header > .logo { - .logo-variant(@light-blue); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-blue.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-blue.less deleted file mode 100644 index 63fb32ff41f9..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-blue.less +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Skin: Blue - * ---------- - */ -@import "../../bootstrap-less/mixins.less"; -@import "../../bootstrap-less/variables.less"; -@import "../variables.less"; -@import "../mixins.less"; - -.skin-blue { - //Navbar - .main-header { - .navbar { - .navbar-variant(@light-blue; #fff); - .sidebar-toggle { - color: #fff; - &:hover { - background-color: darken(@light-blue, 5%); - } - } - @media (max-width: @screen-header-collapse) { - .dropdown-menu { - li { - &.divider { - background-color: rgba(255, 255, 255, 0.1); - } - a { - color: #fff; - &:hover { - background: darken(@light-blue, 5%); - } - } - } - } - } - } - //Logo - .logo { - .logo-variant(darken(@light-blue, 5%)); - } - - li.user-header { - background-color: @light-blue; - } - } - - //Content Header - .content-header { - background: transparent; - } - - //Create the sidebar skin - .skin-dark-sidebar(@light-blue); -} - -.skin-blue.layout-top-nav .main-header > .logo { - .logo-variant(@light-blue); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-green-light.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-green-light.less deleted file mode 100644 index 2e483849c821..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-green-light.less +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Skin: Green - * ----------- - */ -@import "../../bootstrap-less/mixins.less"; -@import "../../bootstrap-less/variables.less"; -@import "../variables.less"; -@import "../mixins.less"; - -.skin-green-light { - //Navbar - .main-header { - .navbar { - .navbar-variant(@green; #fff); - .sidebar-toggle { - color: #fff; - &:hover { - background-color: darken(@green, 5%); - } - } - @media (max-width: @screen-header-collapse) { - .dropdown-menu { - li { - &.divider { - background-color: rgba(255, 255, 255, 0.1); - } - a { - color: #fff; - &:hover { - background: darken(@green, 5%); - } - } - } - } - } - } - //Logo - .logo { - .logo-variant(@green); - } - - li.user-header { - background-color: @green; - } - } - - //Content Header - .content-header { - background: transparent; - } - - //Create the sidebar skin - .skin-light-sidebar(@green); - -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-green.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-green.less deleted file mode 100644 index a729b7061a25..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-green.less +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Skin: Green - * ----------- - */ -@import "../../bootstrap-less/mixins.less"; -@import "../../bootstrap-less/variables.less"; -@import "../variables.less"; -@import "../mixins.less"; - -.skin-green { - //Navbar - .main-header { - .navbar { - .navbar-variant(@green; #fff); - .sidebar-toggle { - color: #fff; - &:hover { - background-color: darken(@green, 5%); - } - } - @media (max-width: @screen-header-collapse) { - .dropdown-menu { - li { - &.divider { - background-color: rgba(255, 255, 255, 0.1); - } - a { - color: #fff; - &:hover { - background: darken(@green, 5%); - } - } - } - } - } - } - //Logo - .logo { - .logo-variant(darken(@green, 5%)); - } - - li.user-header { - background-color: @green; - } - } - - //Content Header - .content-header { - background: transparent; - } - - //Create the sidebar skin - .skin-dark-sidebar(@green); - -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-purple-light.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-purple-light.less deleted file mode 100644 index 42d3fe05cf73..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-purple-light.less +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Skin: Purple - * ------------ - */ -@import "../../bootstrap-less/mixins.less"; -@import "../../bootstrap-less/variables.less"; -@import "../variables.less"; -@import "../mixins.less"; - -.skin-purple-light { - //Navbar - .main-header { - .navbar { - .navbar-variant(@purple; #fff); - .sidebar-toggle { - color: #fff; - &:hover { - background-color: darken(@purple, 5%); - } - } - @media (max-width: @screen-header-collapse) { - .dropdown-menu { - li { - &.divider { - background-color: rgba(255, 255, 255, 0.1); - } - a { - color: #fff; - &:hover { - background: darken(@purple, 5%); - } - } - } - } - } - } - //Logo - .logo { - .logo-variant(@purple); - } - - li.user-header { - background-color: @purple; - } - } - - //Content Header - .content-header { - background: transparent; - } - - //Create the sidebar skin - .skin-light-sidebar(@purple); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-purple.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-purple.less deleted file mode 100644 index 53a38fa4aab2..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-purple.less +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Skin: Purple - * ------------ - */ -@import "../../bootstrap-less/mixins.less"; -@import "../../bootstrap-less/variables.less"; -@import "../variables.less"; -@import "../mixins.less"; - -.skin-purple { - //Navbar - .main-header { - .navbar { - .navbar-variant(@purple; #fff); - .sidebar-toggle { - color: #fff; - &:hover { - background-color: darken(@purple, 5%); - } - } - @media (max-width: @screen-header-collapse) { - .dropdown-menu { - li { - &.divider { - background-color: rgba(255, 255, 255, 0.1); - } - a { - color: #fff; - &:hover { - background: darken(@purple, 5%); - } - } - } - } - } - } - //Logo - .logo { - .logo-variant(darken(@purple, 5%)); - } - - li.user-header { - background-color: @purple; - } - } - - //Content Header - .content-header { - background: transparent; - } - - //Create the sidebar skin - .skin-dark-sidebar(@purple); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-red-light.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-red-light.less deleted file mode 100644 index 792390bce635..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-red-light.less +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Skin: Red - * --------- - */ -@import "../../bootstrap-less/mixins.less"; -@import "../../bootstrap-less/variables.less"; -@import "../variables.less"; -@import "../mixins.less"; - -.skin-red-light { - //Navbar - .main-header { - .navbar { - .navbar-variant(@red; #fff); - .sidebar-toggle { - color: #fff; - &:hover { - background-color: darken(@red, 5%); - } - } - @media (max-width: @screen-header-collapse) { - .dropdown-menu { - li { - &.divider { - background-color: rgba(255, 255, 255, 0.1); - } - a { - color: #fff; - &:hover { - background: darken(@red, 5%); - } - } - } - } - } - } - //Logo - .logo { - .logo-variant(@red); - } - - li.user-header { - background-color: @red; - } - } - - //Content Header - .content-header { - background: transparent; - } - - //Create the sidebar skin - .skin-light-sidebar(@red); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-red.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-red.less deleted file mode 100644 index 6ca253d6ca9e..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-red.less +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Skin: Red - * --------- - */ -@import "../../bootstrap-less/mixins.less"; -@import "../../bootstrap-less/variables.less"; -@import "../variables.less"; -@import "../mixins.less"; - -.skin-red { - //Navbar - .main-header { - .navbar { - .navbar-variant(@red; #fff); - .sidebar-toggle { - color: #fff; - &:hover { - background-color: darken(@red, 5%); - } - } - @media (max-width: @screen-header-collapse) { - .dropdown-menu { - li { - &.divider { - background-color: rgba(255, 255, 255, 0.1); - } - a { - color: #fff; - &:hover { - background: darken(@red, 5%); - } - } - } - } - } - } - //Logo - .logo { - .logo-variant(darken(@red, 5%)); - } - - li.user-header { - background-color: @red; - } - } - - //Content Header - .content-header { - background: transparent; - } - - //Create the sidebar skin - .skin-dark-sidebar(@red); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-yellow-light.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-yellow-light.less deleted file mode 100644 index 02e4650988ab..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-yellow-light.less +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Skin: Yellow - * ------------ - */ -@import "../../bootstrap-less/mixins.less"; -@import "../../bootstrap-less/variables.less"; -@import "../variables.less"; -@import "../mixins.less"; - -.skin-yellow-light { - //Navbar - .main-header { - .navbar { - .navbar-variant(@yellow; #fff); - .sidebar-toggle { - color: #fff; - &:hover { - background-color: darken(@yellow, 5%); - } - } - @media (max-width: @screen-header-collapse) { - .dropdown-menu { - li { - &.divider { - background-color: rgba(255, 255, 255, 0.1); - } - a { - color: #fff; - &:hover { - background: darken(@yellow, 5%); - } - } - } - } - } - } - //Logo - .logo { - .logo-variant(@yellow); - } - - li.user-header { - background-color: @yellow; - } - } - - //Content Header - .content-header { - background: transparent; - } - - //Create the sidebar skin - .skin-light-sidebar(@yellow); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-yellow.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-yellow.less deleted file mode 100644 index 821723d8c6bd..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/skins/skin-yellow.less +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Skin: Yellow - * ------------ - */ -@import "../../bootstrap-less/mixins.less"; -@import "../../bootstrap-less/variables.less"; -@import "../variables.less"; -@import "../mixins.less"; - -.skin-yellow { - //Navbar - .main-header { - .navbar { - .navbar-variant(@yellow; #fff); - .sidebar-toggle { - color: #fff; - &:hover { - background-color: darken(@yellow, 5%); - } - } - @media (max-width: @screen-header-collapse) { - .dropdown-menu { - li { - &.divider { - background-color: rgba(255, 255, 255, 0.1); - } - a { - color: #fff; - &:hover { - background: darken(@yellow, 5%); - } - } - } - } - } - } - //Logo - .logo { - .logo-variant(darken(@yellow, 5%)); - } - - li.user-header { - background-color: @yellow; - } - } - - //Content Header - .content-header { - background: transparent; - } - - //Create the sidebar skin - .skin-dark-sidebar(@yellow); -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/small-box.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/small-box.less deleted file mode 100644 index 8ad7cc79db6b..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/small-box.less +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Component: Small Box - * -------------------- - */ - -.small-box { - .border-radius(2px); - position: relative; - display: block; - margin-bottom: 20px; - box-shadow: @box-boxshadow; - // content wrapper - > .inner { - padding: 10px; - } - - > .small-box-footer { - position: relative; - text-align: center; - padding: 3px 0; - color: #fff; - color: rgba(255, 255, 255, 0.8); - display: block; - z-index: 10; - background: rgba(0, 0, 0, 0.1); - text-decoration: none; - &:hover { - color: #fff; - background: rgba(0, 0, 0, 0.15); - } - } - - h3 { - font-size: 38px; - font-weight: bold; - margin: 0 0 10px 0; - white-space: nowrap; - padding: 0; - - } - - p { - font-size: 15px; - > small { - display: block; - color: #f9f9f9; - font-size: 13px; - margin-top: 5px; - } - } - - h3, p { - z-index: 5; - } - - // the icon - .icon { - .transition(all @transition-speed linear); - position: absolute; - top: -10px; - right: 10px; - z-index: 0; - font-size: 90px; - color: rgba(0, 0, 0, 0.15); - } - - // Small box hover state - &:hover { - text-decoration: none; - color: #f9f9f9; - // Animate icons on small box hover - .icon { - font-size: 95px; - } - } -} - -@media (max-width: @screen-xs-max) { - // No need for icons on very small devices - .small-box { - text-align: center; - .icon { - display: none; - } - p { - font-size: 12px; - } - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/social-widgets.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/social-widgets.less deleted file mode 100644 index e2861a39e7dd..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/social-widgets.less +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Component: Social Widgets - * ------------------------- - */ -//General widget style -.box-widget { - border: none; - position: relative; -} - -//User Widget Style 1 -.widget-user { - //User name container - .widget-user-header { - padding: 20px; - height: 120px; - .border-top-radius(@box-border-radius); - } - //User name - .widget-user-username { - margin-top: 0; - margin-bottom: 5px; - font-size: 25px; - font-weight: 300; - text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); - } - //User single line description - .widget-user-desc { - margin-top: 0; - } - //User image container - .widget-user-image { - position: absolute; - top: 65px; - left: 50%; - margin-left: -45px; - > img { - width: 90px; - height: auto; - border: 3px solid #fff; - } - } - .box-footer { - padding-top: 30px; - } -} - -//User Widget Style 2 -.widget-user-2 { - //User name container - .widget-user-header { - padding: 20px; - .border-top-radius(@box-border-radius); - } - //User name - .widget-user-username { - margin-top: 5px; - margin-bottom: 5px; - font-size: 25px; - font-weight: 300; - } - //User single line description - .widget-user-desc { - margin-top: 0; - } - .widget-user-username, - .widget-user-desc { - margin-left: 75px; - } - //User image container - .widget-user-image { - > img { - width: 65px; - height: auto; - float: left; - } - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/table.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/table.less deleted file mode 100644 index 4aa06a4c6145..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/table.less +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Component: Table - * ---------------- - */ - -.table { - //Cells - > thead, - > tbody, - > tfoot { - > tr { - > th, - > td { - border-top: 1px solid @box-border-color; - } - } - } - //thead cells - > thead > tr > th { - border-bottom: 2px solid @box-border-color; - } - //progress bars in tables - tr td .progress { - margin-top: 5px; - } -} - -//Bordered Table -.table-bordered { - border: 1px solid @box-border-color; - > thead, - > tbody, - > tfoot { - > tr { - > th, - > td { - border: 1px solid @box-border-color; - } - } - } - > thead > tr { - > th, - > td { - border-bottom-width: 2px; - } - } -} - -.table.no-border { - &, - td, - th { - border: 0; - } -} - -/* .text-center in tables */ -table.text-center { - &, td, th { - text-align: center; - } -} - -.table.align { - th { - text-align: left; - } - td { - text-align: right; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/timeline.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/timeline.less deleted file mode 100644 index 333d64856e86..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/timeline.less +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Component: Timeline - * ------------------- - */ - -.timeline { - position: relative; - margin: 0 0 30px 0; - padding: 0; - list-style: none; - - // The line - &:before { - content: ''; - position: absolute; - top: 0; - bottom: 0; - width: 4px; - background: #ddd; - left: 31px; - margin: 0; - .border-radius(2px); - } - - > li { - position: relative; - margin-right: 10px; - margin-bottom: 15px; - .clearfix(); - - // The content - > .timeline-item { - .box-shadow(@box-boxshadow); - .border-radius(@box-border-radius); - margin-top: 0; - background: #fff; - color: #444; - margin-left: 60px; - margin-right: 15px; - padding: 0; - position: relative; - - // The time and header - > .time { - color: #999; - float: right; - padding: 10px; - font-size: 12px; - } - > .timeline-header { - margin: 0; - color: #555; - border-bottom: 1px solid @box-border-color; - padding: 10px; - font-size: 16px; - line-height: 1.1; - > a { - font-weight: 600; - } - } - // Item body and footer - > .timeline-body, > .timeline-footer { - padding: 10px; - } - - } - - // The icons - > .fa, - > .glyphicon, - > .ion { - width: 30px; - height: 30px; - font-size: 15px; - line-height: 30px; - position: absolute; - color: #666; - background: @gray; - border-radius: 50%; - text-align: center; - left: 18px; - top: 0; - } - } - - // Time label - > .time-label { - > span { - font-weight: 600; - padding: 5px; - display: inline-block; - background-color: #fff; - - .border-radius(4px); - } - } -} - -.timeline-inverse { - > li { - > .timeline-item { - background: #f0f0f0; - border: 1px solid #ddd; - .box-shadow(none); - > .timeline-header { - border-bottom-color: #ddd; - } - } - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/users-list.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/users-list.less deleted file mode 100644 index c5ef2a5807b0..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/users-list.less +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Component: Users List - * --------------------- - */ -.users-list { - &:extend(.list-unstyled); - > li { - width: 25%; - float: left; - padding: 10px; - text-align: center; - img { - .border-radius(50%); - max-width: 100%; - height: auto; - } - > a:hover { - &, - .users-list-name { - color: #999; - } - } - } -} - -.users-list-name, -.users-list-date { - display: block; -} - -.users-list-name { - font-weight: 600; - color: #444; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.users-list-date { - color: #999; - font-size: 12px; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/variables.less b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/variables.less deleted file mode 100644 index 79b10bd119e2..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/build/less/variables.less +++ /dev/null @@ -1,123 +0,0 @@ -//AdminLTE 2 Variables.less -//========================= - -//PATHS -//-------------------------------------------------------- - -@boxed-layout-bg-image-path: "../img/boxed-bg.jpg"; - -//COLORS -//-------------------------------------------------------- -//Primary -@light-blue: #3c8dbc; -//Danger -@red: #dd4b39; -//Success -@green: #00a65a; -//Info -@aqua: #00c0ef; -//Warning -@yellow: #f39c12; -@blue: #0073b7; -@navy: #001F3F; -@teal: #39CCCC; -@olive: #3D9970; -@lime: #01FF70; -@orange: #FF851B; -@fuchsia: #F012BE; -@purple: #605ca8; -@maroon: #D81B60; -@black: #111; -@gray: #d2d6de; - -//LAYOUT -//-------------------------------------------------------- - -//Side bar and logo width -@sidebar-width: 230px; -//Boxed layout maximum width -@boxed-layout-max-width: 1024px; -//When the logo should go to the top of the screen -@screen-header-collapse: @screen-xs-max; - -//Link colors (Aka: tags) -@link-color: @light-blue; -@link-hover-color: lighten(@link-color, 15%); - -//Body background (Affects main content background only) -@body-bg: #ecf0f5; - -//SIDEBAR SKINS -//-------------------------------------------------------- - -//Dark sidebar -@sidebar-dark-bg: #222d32; -@sidebar-dark-hover-bg: darken(@sidebar-dark-bg, 2%); -@sidebar-dark-color: lighten(@sidebar-dark-bg, 60%); -@sidebar-dark-hover-color: #fff; -@sidebar-dark-submenu-bg: lighten(@sidebar-dark-bg, 5%); -@sidebar-dark-submenu-color: lighten(@sidebar-dark-submenu-bg, 40%); -@sidebar-dark-submenu-hover-color: #fff; - -//Light sidebar -@sidebar-light-bg: #f9fafc; -@sidebar-light-hover-bg: lighten(#f0f0f1, 1.5%); -@sidebar-light-color: #444; -@sidebar-light-hover-color: #000; -@sidebar-light-submenu-bg: @sidebar-light-hover-bg; -@sidebar-light-submenu-color: #777; -@sidebar-light-submenu-hover-color: #000; - -//CONTROL SIDEBAR -//-------------------------------------------------------- -@control-sidebar-width: @sidebar-width; - -//BOXES -//-------------------------------------------------------- -@box-border-color: #f4f4f4; -@box-border-radius: 3px; -@box-footer-bg: #fff; -@box-boxshadow: 0 1px 1px rgba(0, 0, 0, .1); -@box-padding: 10px; - -//Box variants -@box-default-border-top-color: #d2d6de; - -//BUTTONS -//-------------------------------------------------------- -@btn-boxshadow: none; - -//PROGRESS BARS -//-------------------------------------------------------- -@progress-bar-border-radius: 1px; -@progress-bar-sm-border-radius: 1px; -@progress-bar-xs-border-radius: 1px; - -//FORMS -//-------------------------------------------------------- -@input-radius: 0; - -//BUTTONS -//-------------------------------------------------------- - -//Border radius for non flat buttons -@btn-border-radius: 3px; - -//DIRECT CHAT -//-------------------------------------------------------- -@direct-chat-height: 250px; -@direct-chat-default-msg-bg: @gray; -@direct-chat-default-font-color: #444; -@direct-chat-default-msg-border-color: @gray; - -//CHAT WIDGET -//-------------------------------------------------------- -@attachment-border-radius: 3px; - -//TRANSITIONS SETTINGS -//-------------------------------------------------------- - -//Transition global options -@transition-speed: .3s; -@transition-fn: ease-in-out; -//cubic-bezier(0.32,1.25,0.375,1.15); diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/changelog.md b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/changelog.md deleted file mode 100644 index 73a46ec0cc02..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/changelog.md +++ /dev/null @@ -1,224 +0,0 @@ -### CHANGE LOG: -**v2.3.7** -- Merge pull request #1160 from antoniocambados/antoniocambados-patch-1158 -- Merge branch 'rickysang-master' -- merge pull request #1165 -- Merge pull request #1166 from liamgall/master -- Merge pull request #1178 from mortonfox/patch-1 -- Merge pull request #1184 from leoncheek/master -- Fix sidebar li.active fa-angle-left rotate. -- Fix link to changelog -- Merge pull request #1 from liamgall/liamgall-patch-1 -- changed index2.html to ../index2.html -- Fix issue #1008 -- Update sidebar.less - -**v2.3.6:** -- Update version -- Use markdown in the changelog file -- Patch for issue #1098 -- Update support emails -- Merge pull request #1096 from nobusugi246/fix_css_content_too_large -- min-height of .content is too large. - -**v2.3.5:** -- Fix issue #1097 -- Remove changelog from readme and specify new source -- Merge pull request #1040 from OskarStark/patch-1 -- Update package.json version -- updated changelog with already released versions - -**v2.3.4:** -- Fix issue #1093 -- Fix issue #427 by updating slimscroll -- Fix isse #683 -- Fix issue #1091 -- Merge branch 'master' of https://github.com/almasaeed2010/AdminLTE -- Fix issue #995 -- Merge pull request #1094 from xvonabur/patch-2 -- Merge pull request #1006 from Jerome1337/fix-sidebar-label -- Merge pull request #1090 from choonho/master -- Update typo replaced with jQuery -- Merge pull request #1003 from yu1ro/replace-year -- Merge pull request #1015 from Fl0ux/master -- Merge pull request #1029 from angelitomg/master -- Merge branch 'master' of https://github.com/almasaeed2010/AdminLTE -- Merge pull request #1089 from almasaeed2010/revert-1084-master -- Merge branch 'master' of https://github.com/almasaeed2010/AdminLTE -- Merge pull request #1084 from blz-ea/master -- Merge branch 'master' of https://github.com/almasaeed2010/AdminLTE -- Update ChartJS to 1.1.1 -- Merge pull request #1061 from freedayko/update-select2 -- Update Readme -- Merge pull request #1041 from OskarStark/patch-2 -- Update AdminLTE.css -- Update app.js -- Update Select2 plugin to version 4.0.3 -- added missing changelog to README. refs #1040 -- Update jQuery version to 2.2.3 -- Update Date Range Picker -- Update Date Range Picker -- Newest momentjs version -- Delete old momentjs version -- Update Date Range Picker -- Update sidebar label template to allow multiple labels -- replace 2015 to 2016 -- Merge pull request #991 from johnberberich/patch-1 -- Add Bower, NPM and Packagist versions to README.md -- Add notification for changelog -- Remove sidebar click handler, before assigning one - -**v2.3.3:** -- Update version number -- Merge pull request #976 from suvjunmd/markup -- Merge pull request #983 from johnberberich/fix-help-block-validation -- Apply form validation state colors to help blocks -- Fixed W3C Markup Validation errors and warnings -- Merge #918. Fix date-range button selection issue -- Merge pull request #944 from bluemanos/master -- Merge pull request #935 from schulzetenberg/master -- Merge pull request #904 from 0xMatt/master -- Merge pull request #816 from magikMaker/feature/package-json -- Fix #957. Make pace visible in skin black -- Update ckeditor -- Fix typo -- updated momentjs library to 2.11.2 -- update font-awesome to 4.5.0, change CDN to cdnjs.com -- Fix sentence -- Update README.md -- Formatting fix -- Add datepicker plugin to examples -- Merge remote-tracking branch 'refs/remotes/almasaeed2010/master' -- Update License -- Improve click event handler -- Merge pull request #877 from suvjunmd/jQuery -- Add Laravel implementation #858 -- Updated jQuery to version 2.2.0 -- Fix issue #812 -- Update BS to v3.3.6 -- Merge pull -- Add .sass-cache to gitignore -- Merge pull request #822 from condor-bird/patch-5 -- Merge pull request #818 from gabel/update_bootstrap_slider -- Merge pull request #821 from pdesmarais/master -- Merge pull request #829 from gabel/update_momentjs -- Merge pull request #831 from gabel/update_colorpicker -- Merge pull request #854 from aqnouch/patch-1 -- Merge pull request #825 from gabel/update_select2 -- Updated copyright to 2016 -- Update to bootstrap-colorpicker version 2.3.0 -- update moment.js cdn links to version 2.10.6 -- Update to select2 version 4.0.1 -- Duplicate attribute type button -- Changing the img paths in the css files -- Updating to ion.RangeSlider v2.1.2 -- update to bootsrap-slider 5.3.1 -- added npm install to readme -- added main property to package.json - -**v2.3.2:** -- Fix issue #752 (badges, labels and arrows didn't align on sidebar menu properly on FireFox) - -**v2.3.1:** -- Fix sidebar issue #676 -- Fix BootLint warnings and errors -- Minor bug fixes and code reformat - -**v2.3.0:** -- Added social widgets (found in the widgets page) -- Added profile page -- Fix issue #430 (requires ```.hold-transition``` to be added to ``````) -- Fix issue #578 -- Fix issue #579 - -**v2.2.1:** -- Bug Fixes -- Removed many ```!important``` statements in css -- Activate boxWidget automatically when created after the page has loaded -- Activate sidebar menu treeview links automatically when created after the page has loaded -- Updated Font Awesome thanks to @Dennis14e -- Added JSHint to Grunt tasks (Find JS errors) -- Added CSSLint to Grunt tasks (Find CSS errors) -- Added Image to Grunt tasks (compress images) -- Added Clean to Grunt tasks (remove unwanted files like uncompressed images) -- Updated Bootstrap to 3.3.5 - -**v2.2.0:** -- Bug fixes -- Added support for [Select2](https://select2.github.io/) -- Updated ChartJS - -**v2.1.2:** -- Added explicit BoxWidget activation function issue #450 -- Crushed some bugs - -**v2.1.1:** -- Fix version error - -**v2.1.0:** -- Update Ion Icons -- Added right sidebar ```.control-sidebar``` -- Control sidebar has 2 open effects: slide over content and push content -- Control sidebar converts to always slide over content on small screens -- Added 6 new light sidebar skins -- Updated demo menu -- Added ChartJS preview page -- Fixed some minor bugs -- Added light control sidebar skin -- Added expand on hover option for sidebar mini -- Added fixed control sidebar layout - -**v2.0.5:** -- Fixed issue #288 - -**v2.0.4:** -- Fixed bower.json to pick up newest release. - -**v2.0.3:** -- Bug fixes -- Fixed extra page when printing issue #264 -- Updated documentation and fixed links scrolling issue -- Created print.less file (this makes it easier if you want to create a seperate CSS file for printing) -- Fixed sidebar stretching issue #275 -- Fixed checkbox out of bounds issue in WYSIHTML5 editor. - -**v2.0.2:** -- Solved issue with hidden arrow in select inputs. - -**v2.0.1:** -- Updated README.md -- Fixed versioning issue in CSS, LESS, and JS -- Updated box-shadow for boxes -- Updated docs - -**v2.0.0:** -- Major layout bug fixes -- Change in layout mark up -- Added transitions to the sidebar -- New skins and modified previous skins -- Change in color scheme to a more complementing scheme -- Added footer support -- Removed pace.js from the main app.js -- Added support for collapsed sidebar as an initial state (add .sidebar-collapse to the body tag) -- Added boxed layout (.layout-boxed) -- Enhanced consistency in padding and margining -- Updated Bootstrap to 3.3.2 -- Fixed navbar dropdown menu on small screens positioning issues. -- Updated Ion Icons to 2.0.0 -- Updated FontAwesome to 4.3.0 -- Added ChartJS 1.0.1 -- Removed iCheck dependency -- Created Dashboard 2.0 -- Created new Chat widget (DirectChat) -- Added transitions to DirectChat -- Added contacts pane to DirectChat -- Changed .right-side to .content-wrapper -- Changed .navbar-right to .navbar-custom-menu -- Removed unused files -- Updated lockscreen style (HTML markup changed!) -- Updated Login & Registration pages (HTML markup changed!) -- Updated buttons style. -- Enhanced border-radius consistency -- Added mailbox: inbox, read, and compose pages -- Bootstrap & jQuery are now hosted locally -- Created documentation. diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/composer.json b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/composer.json deleted file mode 100644 index 2011f0373c7d..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/composer.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "almasaeed2010/adminlte", - "description": "AdminLTE - admin control panel and dashboard that's based on Bootstrap 3", - "homepage": "http://almsaeedstudio.com/", - "keywords": [ - "css", - "js", - "less", - "responsive", - "back-end", - "template", - "theme", - "web", - "admin" - ], - "authors": [ - { - "name": "Abdullah Almsaeed", - "email": "abdullah@almsaeedstudio.com" - } - ], - "license": "MIT", - "support": { - "issues": "https://github.com/almasaeed2010/AdminLTE/issues" - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/AdminLTE.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/AdminLTE.css deleted file mode 100644 index 97ef7bec14ad..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/AdminLTE.css +++ /dev/null @@ -1,4932 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic); -/*! - * AdminLTE v2.3.7 - * Author: Almsaeed Studio - * Website: Almsaeed Studio - * License: Open source - MIT - * Please visit http://opensource.org/licenses/MIT for more information -!*/ -/* - * Core: General Layout Style - * ------------------------- - */ -html, -body { - min-height: 100%; -} -.layout-boxed html, -.layout-boxed body { - height: 100%; -} -body { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-weight: 400; - overflow-x: hidden; - overflow-y: auto; -} -/* Layout */ -.wrapper { - min-height: 100%; - position: relative; - overflow: hidden; -} -.wrapper:before, -.wrapper:after { - content: " "; - display: table; -} -.wrapper:after { - clear: both; -} -.layout-boxed .wrapper { - max-width: 1250px; - margin: 0 auto; - min-height: 100%; - box-shadow: 0 0 8px rgba(0, 0, 0, 0.5); - position: relative; -} -.layout-boxed { - background: url('../img/boxed-bg.jpg') repeat fixed; -} -/* - * Content Wrapper - contains the main content - * ```.right-side has been deprecated as of v2.0.0 in favor of .content-wrapper ``` - */ -.content-wrapper, -.right-side, -.main-footer { - -webkit-transition: -webkit-transform 0.3s ease-in-out, margin 0.3s ease-in-out; - -moz-transition: -moz-transform 0.3s ease-in-out, margin 0.3s ease-in-out; - -o-transition: -o-transform 0.3s ease-in-out, margin 0.3s ease-in-out; - transition: transform 0.3s ease-in-out, margin 0.3s ease-in-out; - margin-left: 230px; - z-index: 820; -} -.layout-top-nav .content-wrapper, -.layout-top-nav .right-side, -.layout-top-nav .main-footer { - margin-left: 0; -} -@media (max-width: 767px) { - .content-wrapper, - .right-side, - .main-footer { - margin-left: 0; - } -} -@media (min-width: 768px) { - .sidebar-collapse .content-wrapper, - .sidebar-collapse .right-side, - .sidebar-collapse .main-footer { - margin-left: 0; - } -} -@media (max-width: 767px) { - .sidebar-open .content-wrapper, - .sidebar-open .right-side, - .sidebar-open .main-footer { - -webkit-transform: translate(230px, 0); - -ms-transform: translate(230px, 0); - -o-transform: translate(230px, 0); - transform: translate(230px, 0); - } -} -.content-wrapper, -.right-side { - min-height: 100%; - background-color: #ecf0f5; - z-index: 800; -} -.main-footer { - background: #fff; - padding: 15px; - color: #444; - border-top: 1px solid #d2d6de; -} -/* Fixed layout */ -.fixed .main-header, -.fixed .main-sidebar, -.fixed .left-side { - position: fixed; -} -.fixed .main-header { - top: 0; - right: 0; - left: 0; -} -.fixed .content-wrapper, -.fixed .right-side { - padding-top: 50px; -} -@media (max-width: 767px) { - .fixed .content-wrapper, - .fixed .right-side { - padding-top: 100px; - } -} -.fixed.layout-boxed .wrapper { - max-width: 100%; -} -body.hold-transition .content-wrapper, -body.hold-transition .right-side, -body.hold-transition .main-footer, -body.hold-transition .main-sidebar, -body.hold-transition .left-side, -body.hold-transition .main-header .navbar, -body.hold-transition .main-header .logo { - /* Fix for IE */ - -webkit-transition: none; - -o-transition: none; - transition: none; -} -/* Content */ -.content { - min-height: 250px; - padding: 15px; - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; -} -/* H1 - H6 font */ -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: 'Source Sans Pro', sans-serif; -} -/* General Links */ -a { - color: #3c8dbc; -} -a:hover, -a:active, -a:focus { - outline: none; - text-decoration: none; - color: #72afd2; -} -/* Page Header */ -.page-header { - margin: 10px 0 20px 0; - font-size: 22px; -} -.page-header > small { - color: #666; - display: block; - margin-top: 5px; -} -/* - * Component: Main Header - * ---------------------- - */ -.main-header { - position: relative; - max-height: 100px; - z-index: 1030; -} -.main-header .navbar { - -webkit-transition: margin-left 0.3s ease-in-out; - -o-transition: margin-left 0.3s ease-in-out; - transition: margin-left 0.3s ease-in-out; - margin-bottom: 0; - margin-left: 230px; - border: none; - min-height: 50px; - border-radius: 0; -} -.layout-top-nav .main-header .navbar { - margin-left: 0; -} -.main-header #navbar-search-input.form-control { - background: rgba(255, 255, 255, 0.2); - border-color: transparent; -} -.main-header #navbar-search-input.form-control:focus, -.main-header #navbar-search-input.form-control:active { - border-color: rgba(0, 0, 0, 0.1); - background: rgba(255, 255, 255, 0.9); -} -.main-header #navbar-search-input.form-control::-moz-placeholder { - color: #ccc; - opacity: 1; -} -.main-header #navbar-search-input.form-control:-ms-input-placeholder { - color: #ccc; -} -.main-header #navbar-search-input.form-control::-webkit-input-placeholder { - color: #ccc; -} -.main-header .navbar-custom-menu, -.main-header .navbar-right { - float: right; -} -@media (max-width: 991px) { - .main-header .navbar-custom-menu a, - .main-header .navbar-right a { - color: inherit; - background: transparent; - } -} -@media (max-width: 767px) { - .main-header .navbar-right { - float: none; - } - .navbar-collapse .main-header .navbar-right { - margin: 7.5px -15px; - } - .main-header .navbar-right > li { - color: inherit; - border: 0; - } -} -.main-header .sidebar-toggle { - float: left; - background-color: transparent; - background-image: none; - padding: 15px 15px; - font-family: fontAwesome; -} -.main-header .sidebar-toggle:before { - content: "\f0c9"; -} -.main-header .sidebar-toggle:hover { - color: #fff; -} -.main-header .sidebar-toggle:focus, -.main-header .sidebar-toggle:active { - background: transparent; -} -.main-header .sidebar-toggle .icon-bar { - display: none; -} -.main-header .navbar .nav > li.user > a > .fa, -.main-header .navbar .nav > li.user > a > .glyphicon, -.main-header .navbar .nav > li.user > a > .ion { - margin-right: 5px; -} -.main-header .navbar .nav > li > a > .label { - position: absolute; - top: 9px; - right: 7px; - text-align: center; - font-size: 9px; - padding: 2px 3px; - line-height: .9; -} -.main-header .logo { - -webkit-transition: width 0.3s ease-in-out; - -o-transition: width 0.3s ease-in-out; - transition: width 0.3s ease-in-out; - display: block; - float: left; - height: 50px; - font-size: 20px; - line-height: 50px; - text-align: center; - width: 230px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - padding: 0 15px; - font-weight: 300; - overflow: hidden; -} -.main-header .logo .logo-lg { - display: block; -} -.main-header .logo .logo-mini { - display: none; -} -.main-header .navbar-brand { - color: #fff; -} -.content-header { - position: relative; - padding: 15px 15px 0 15px; -} -.content-header > h1 { - margin: 0; - font-size: 24px; -} -.content-header > h1 > small { - font-size: 15px; - display: inline-block; - padding-left: 4px; - font-weight: 300; -} -.content-header > .breadcrumb { - float: right; - background: transparent; - margin-top: 0; - margin-bottom: 0; - font-size: 12px; - padding: 7px 5px; - position: absolute; - top: 15px; - right: 10px; - border-radius: 2px; -} -.content-header > .breadcrumb > li > a { - color: #444; - text-decoration: none; - display: inline-block; -} -.content-header > .breadcrumb > li > a > .fa, -.content-header > .breadcrumb > li > a > .glyphicon, -.content-header > .breadcrumb > li > a > .ion { - margin-right: 5px; -} -.content-header > .breadcrumb > li + li:before { - content: '>\00a0'; -} -@media (max-width: 991px) { - .content-header > .breadcrumb { - position: relative; - margin-top: 5px; - top: 0; - right: 0; - float: none; - background: #d2d6de; - padding-left: 10px; - } - .content-header > .breadcrumb li:before { - color: #97a0b3; - } -} -.navbar-toggle { - color: #fff; - border: 0; - margin: 0; - padding: 15px 15px; -} -@media (max-width: 991px) { - .navbar-custom-menu .navbar-nav > li { - float: left; - } - .navbar-custom-menu .navbar-nav { - margin: 0; - float: left; - } - .navbar-custom-menu .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - line-height: 20px; - } -} -@media (max-width: 767px) { - .main-header { - position: relative; - } - .main-header .logo, - .main-header .navbar { - width: 100%; - float: none; - } - .main-header .navbar { - margin: 0; - } - .main-header .navbar-custom-menu { - float: right; - } -} -@media (max-width: 991px) { - .navbar-collapse.pull-left { - float: none !important; - } - .navbar-collapse.pull-left + .navbar-custom-menu { - display: block; - position: absolute; - top: 0; - right: 40px; - } -} -/* - * Component: Sidebar - * ------------------ - */ -.main-sidebar, -.left-side { - position: absolute; - top: 0; - left: 0; - padding-top: 50px; - min-height: 100%; - width: 230px; - z-index: 810; - -webkit-transition: -webkit-transform 0.3s ease-in-out, width 0.3s ease-in-out; - -moz-transition: -moz-transform 0.3s ease-in-out, width 0.3s ease-in-out; - -o-transition: -o-transform 0.3s ease-in-out, width 0.3s ease-in-out; - transition: transform 0.3s ease-in-out, width 0.3s ease-in-out; -} -@media (max-width: 767px) { - .main-sidebar, - .left-side { - padding-top: 100px; - } -} -@media (max-width: 767px) { - .main-sidebar, - .left-side { - -webkit-transform: translate(-230px, 0); - -ms-transform: translate(-230px, 0); - -o-transform: translate(-230px, 0); - transform: translate(-230px, 0); - } -} -@media (min-width: 768px) { - .sidebar-collapse .main-sidebar, - .sidebar-collapse .left-side { - -webkit-transform: translate(-230px, 0); - -ms-transform: translate(-230px, 0); - -o-transform: translate(-230px, 0); - transform: translate(-230px, 0); - } -} -@media (max-width: 767px) { - .sidebar-open .main-sidebar, - .sidebar-open .left-side { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); - } -} -.sidebar { - padding-bottom: 10px; -} -.sidebar-form input:focus { - border-color: transparent; -} -.user-panel { - position: relative; - width: 100%; - padding: 10px; - overflow: hidden; -} -.user-panel:before, -.user-panel:after { - content: " "; - display: table; -} -.user-panel:after { - clear: both; -} -.user-panel > .image > img { - width: 100%; - max-width: 45px; - height: auto; -} -.user-panel > .info { - padding: 5px 5px 5px 15px; - line-height: 1; - position: absolute; - left: 55px; -} -.user-panel > .info > p { - font-weight: 600; - margin-bottom: 9px; -} -.user-panel > .info > a { - text-decoration: none; - padding-right: 5px; - margin-top: 3px; - font-size: 11px; -} -.user-panel > .info > a > .fa, -.user-panel > .info > a > .ion, -.user-panel > .info > a > .glyphicon { - margin-right: 3px; -} -.sidebar-menu { - list-style: none; - margin: 0; - padding: 0; -} -.sidebar-menu > li { - position: relative; - margin: 0; - padding: 0; -} -.sidebar-menu > li > a { - padding: 12px 5px 12px 15px; - display: block; -} -.sidebar-menu > li > a > .fa, -.sidebar-menu > li > a > .glyphicon, -.sidebar-menu > li > a > .ion { - width: 20px; -} -.sidebar-menu > li .label, -.sidebar-menu > li .badge { - margin-right: 5px; -} -.sidebar-menu > li .badge { - margin-top: 3px; -} -.sidebar-menu li.header { - padding: 10px 25px 10px 15px; - font-size: 12px; -} -.sidebar-menu li > a > .fa-angle-left, -.sidebar-menu li > a > .pull-right-container > .fa-angle-left { - width: auto; - height: auto; - padding: 0; - margin-right: 10px; -} -.sidebar-menu li.active > a > .fa-angle-left, -.sidebar-menu li.active > a > .pull-right-container > .fa-angle-left { - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - -o-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.sidebar-menu li.active > .treeview-menu { - display: block; -} -.sidebar-menu .treeview-menu { - display: none; - list-style: none; - padding: 0; - margin: 0; - padding-left: 5px; -} -.sidebar-menu .treeview-menu .treeview-menu { - padding-left: 20px; -} -.sidebar-menu .treeview-menu > li { - margin: 0; -} -.sidebar-menu .treeview-menu > li > a { - padding: 5px 5px 5px 15px; - display: block; - font-size: 14px; -} -.sidebar-menu .treeview-menu > li > a > .fa, -.sidebar-menu .treeview-menu > li > a > .glyphicon, -.sidebar-menu .treeview-menu > li > a > .ion { - width: 20px; -} -.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-left, -.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-down, -.sidebar-menu .treeview-menu > li > a > .fa-angle-left, -.sidebar-menu .treeview-menu > li > a > .fa-angle-down { - width: auto; -} -/* - * Component: Sidebar Mini - */ -@media (min-width: 768px) { - .sidebar-mini.sidebar-collapse .content-wrapper, - .sidebar-mini.sidebar-collapse .right-side, - .sidebar-mini.sidebar-collapse .main-footer { - margin-left: 50px !important; - z-index: 840; - } - .sidebar-mini.sidebar-collapse .main-sidebar { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); - width: 50px !important; - z-index: 850; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li { - position: relative; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li > a { - margin-right: 0; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span { - border-top-right-radius: 4px; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span { - border-bottom-right-radius: 4px; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - padding-top: 5px; - padding-bottom: 5px; - border-bottom-right-radius: 4px; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right), - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu { - display: block !important; - position: absolute; - width: 180px; - left: 50px; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span { - top: 0; - margin-left: -3px; - padding: 12px 5px 12px 20px; - background-color: inherit; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container { - float: right; - width: auto!important; - left: 200px!important; - top: 10px!important; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container > .label:not(:first-of-type) { - display: none; - } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu { - top: 44px; - margin-left: 0; - } - .sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info, - .sidebar-mini.sidebar-collapse .sidebar-form, - .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span, - .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu, - .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right, - .sidebar-mini.sidebar-collapse .sidebar-menu li.header { - display: none !important; - -webkit-transform: translateZ(0); - } - .sidebar-mini.sidebar-collapse .main-header .logo { - width: 50px; - } - .sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini { - display: block; - margin-left: -15px; - margin-right: -15px; - font-size: 18px; - } - .sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg { - display: none; - } - .sidebar-mini.sidebar-collapse .main-header .navbar { - margin-left: 50px; - } -} -.sidebar-menu, -.main-sidebar .user-panel, -.sidebar-menu > li.header { - white-space: nowrap; - overflow: hidden; -} -.sidebar-menu:hover { - overflow: visible; -} -.sidebar-form, -.sidebar-menu > li.header { - overflow: hidden; - text-overflow: clip; -} -.sidebar-menu li > a { - position: relative; -} -.sidebar-menu li > a > .pull-right-container { - position: absolute; - right: 10px; - top: 50%; - margin-top: -7px; -} -/* - * Component: Control sidebar. By default, this is the right sidebar. - */ -.control-sidebar-bg { - position: fixed; - z-index: 1000; - bottom: 0; -} -.control-sidebar-bg, -.control-sidebar { - top: 0; - right: -230px; - width: 230px; - -webkit-transition: right 0.3s ease-in-out; - -o-transition: right 0.3s ease-in-out; - transition: right 0.3s ease-in-out; -} -.control-sidebar { - position: absolute; - padding-top: 50px; - z-index: 1010; -} -@media (max-width: 768px) { - .control-sidebar { - padding-top: 100px; - } -} -.control-sidebar > .tab-content { - padding: 10px 15px; -} -.control-sidebar.control-sidebar-open, -.control-sidebar.control-sidebar-open + .control-sidebar-bg { - right: 0; -} -.control-sidebar-open .control-sidebar-bg, -.control-sidebar-open .control-sidebar { - right: 0; -} -@media (min-width: 768px) { - .control-sidebar-open .content-wrapper, - .control-sidebar-open .right-side, - .control-sidebar-open .main-footer { - margin-right: 230px; - } -} -.nav-tabs.control-sidebar-tabs > li:first-of-type > a, -.nav-tabs.control-sidebar-tabs > li:first-of-type > a:hover, -.nav-tabs.control-sidebar-tabs > li:first-of-type > a:focus { - border-left-width: 0; -} -.nav-tabs.control-sidebar-tabs > li > a { - border-radius: 0; -} -.nav-tabs.control-sidebar-tabs > li > a, -.nav-tabs.control-sidebar-tabs > li > a:hover { - border-top: none; - border-right: none; - border-left: 1px solid transparent; - border-bottom: 1px solid transparent; -} -.nav-tabs.control-sidebar-tabs > li > a .icon { - font-size: 16px; -} -.nav-tabs.control-sidebar-tabs > li.active > a, -.nav-tabs.control-sidebar-tabs > li.active > a:hover, -.nav-tabs.control-sidebar-tabs > li.active > a:focus, -.nav-tabs.control-sidebar-tabs > li.active > a:active { - border-top: none; - border-right: none; - border-bottom: none; -} -@media (max-width: 768px) { - .nav-tabs.control-sidebar-tabs { - display: table; - } - .nav-tabs.control-sidebar-tabs > li { - display: table-cell; - } -} -.control-sidebar-heading { - font-weight: 400; - font-size: 16px; - padding: 10px 0; - margin-bottom: 10px; -} -.control-sidebar-subheading { - display: block; - font-weight: 400; - font-size: 14px; -} -.control-sidebar-menu { - list-style: none; - padding: 0; - margin: 0 -15px; -} -.control-sidebar-menu > li > a { - display: block; - padding: 10px 15px; -} -.control-sidebar-menu > li > a:before, -.control-sidebar-menu > li > a:after { - content: " "; - display: table; -} -.control-sidebar-menu > li > a:after { - clear: both; -} -.control-sidebar-menu > li > a > .control-sidebar-subheading { - margin-top: 0; -} -.control-sidebar-menu .menu-icon { - float: left; - width: 35px; - height: 35px; - border-radius: 50%; - text-align: center; - line-height: 35px; -} -.control-sidebar-menu .menu-info { - margin-left: 45px; - margin-top: 3px; -} -.control-sidebar-menu .menu-info > .control-sidebar-subheading { - margin: 0; -} -.control-sidebar-menu .menu-info > p { - margin: 0; - font-size: 11px; -} -.control-sidebar-menu .progress { - margin: 0; -} -.control-sidebar-dark { - color: #b8c7ce; -} -.control-sidebar-dark, -.control-sidebar-dark + .control-sidebar-bg { - background: #222d32; -} -.control-sidebar-dark .nav-tabs.control-sidebar-tabs { - border-bottom: #1c2529; -} -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a { - background: #181f23; - color: #b8c7ce; -} -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a, -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover, -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus { - border-left-color: #141a1d; - border-bottom-color: #141a1d; -} -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover, -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus, -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:active { - background: #1c2529; -} -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover { - color: #fff; -} -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a, -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:hover, -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:focus, -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:active { - background: #222d32; - color: #fff; -} -.control-sidebar-dark .control-sidebar-heading, -.control-sidebar-dark .control-sidebar-subheading { - color: #fff; -} -.control-sidebar-dark .control-sidebar-menu > li > a:hover { - background: #1e282c; -} -.control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p { - color: #b8c7ce; -} -.control-sidebar-light { - color: #5e5e5e; -} -.control-sidebar-light, -.control-sidebar-light + .control-sidebar-bg { - background: #f9fafc; - border-left: 1px solid #d2d6de; -} -.control-sidebar-light .nav-tabs.control-sidebar-tabs { - border-bottom: #d2d6de; -} -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a { - background: #e8ecf4; - color: #444444; -} -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a, -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover, -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus { - border-left-color: #d2d6de; - border-bottom-color: #d2d6de; -} -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover, -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus, -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:active { - background: #eff1f7; -} -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a, -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:hover, -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:focus, -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:active { - background: #f9fafc; - color: #111; -} -.control-sidebar-light .control-sidebar-heading, -.control-sidebar-light .control-sidebar-subheading { - color: #111; -} -.control-sidebar-light .control-sidebar-menu { - margin-left: -14px; -} -.control-sidebar-light .control-sidebar-menu > li > a:hover { - background: #f4f4f5; -} -.control-sidebar-light .control-sidebar-menu > li > a .menu-info > p { - color: #5e5e5e; -} -/* - * Component: Dropdown menus - * ------------------------- - */ -/*Dropdowns in general*/ -.dropdown-menu { - box-shadow: none; - border-color: #eee; -} -.dropdown-menu > li > a { - color: #777; -} -.dropdown-menu > li > a > .glyphicon, -.dropdown-menu > li > a > .fa, -.dropdown-menu > li > a > .ion { - margin-right: 10px; -} -.dropdown-menu > li > a:hover { - background-color: #e1e3e9; - color: #333; -} -.dropdown-menu > .divider { - background-color: #eee; -} -.navbar-nav > .notifications-menu > .dropdown-menu, -.navbar-nav > .messages-menu > .dropdown-menu, -.navbar-nav > .tasks-menu > .dropdown-menu { - width: 280px; - padding: 0 0 0 0; - margin: 0; - top: 100%; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li, -.navbar-nav > .messages-menu > .dropdown-menu > li, -.navbar-nav > .tasks-menu > .dropdown-menu > li { - position: relative; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li.header, -.navbar-nav > .messages-menu > .dropdown-menu > li.header, -.navbar-nav > .tasks-menu > .dropdown-menu > li.header { - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - background-color: #ffffff; - padding: 7px 10px; - border-bottom: 1px solid #f4f4f4; - color: #444444; - font-size: 14px; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a, -.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a, -.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; - font-size: 12px; - background-color: #fff; - padding: 7px 10px; - border-bottom: 1px solid #eeeeee; - color: #444 !important; - text-align: center; -} -@media (max-width: 991px) { - .navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a, - .navbar-nav > .messages-menu > .dropdown-menu > li.footer > a, - .navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a { - background: #fff !important; - color: #444 !important; - } -} -.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover, -.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover, -.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover { - text-decoration: none; - font-weight: normal; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu, -.navbar-nav > .messages-menu > .dropdown-menu > li .menu, -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu { - max-height: 200px; - margin: 0; - padding: 0; - list-style: none; - overflow-x: hidden; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a, -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a, -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a { - display: block; - white-space: nowrap; - /* Prevent text from breaking */ - border-bottom: 1px solid #f4f4f4; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover, -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover, -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover { - background: #f4f4f4; - text-decoration: none; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a { - color: #444444; - overflow: hidden; - text-overflow: ellipsis; - padding: 10px; -} -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon, -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa, -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion { - width: 20px; -} -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a { - margin: 0; - padding: 10px 10px; -} -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img { - margin: auto 10px auto auto; - width: 40px; - height: 40px; -} -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 { - padding: 0; - margin: 0 0 0 45px; - color: #444444; - font-size: 15px; - position: relative; -} -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small { - color: #999999; - font-size: 10px; - position: absolute; - top: 0; - right: 0; -} -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p { - margin: 0 0 0 45px; - font-size: 12px; - color: #888888; -} -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before, -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after { - content: " "; - display: table; -} -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after { - clear: both; -} -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a { - padding: 10px; -} -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3 { - font-size: 14px; - padding: 0; - margin: 0 0 10px 0; - color: #666666; -} -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress { - padding: 0; - margin: 0; -} -.navbar-nav > .user-menu > .dropdown-menu { - border-top-right-radius: 0; - border-top-left-radius: 0; - padding: 1px 0 0 0; - border-top-width: 0; - width: 280px; -} -.navbar-nav > .user-menu > .dropdown-menu, -.navbar-nav > .user-menu > .dropdown-menu > .user-body { - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.navbar-nav > .user-menu > .dropdown-menu > li.user-header { - height: 175px; - padding: 10px; - text-align: center; -} -.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img { - z-index: 5; - height: 90px; - width: 90px; - border: 3px solid; - border-color: transparent; - border-color: rgba(255, 255, 255, 0.2); -} -.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p { - z-index: 5; - color: #fff; - color: rgba(255, 255, 255, 0.8); - font-size: 17px; - margin-top: 10px; -} -.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small { - display: block; - font-size: 12px; -} -.navbar-nav > .user-menu > .dropdown-menu > .user-body { - padding: 15px; - border-bottom: 1px solid #f4f4f4; - border-top: 1px solid #dddddd; -} -.navbar-nav > .user-menu > .dropdown-menu > .user-body:before, -.navbar-nav > .user-menu > .dropdown-menu > .user-body:after { - content: " "; - display: table; -} -.navbar-nav > .user-menu > .dropdown-menu > .user-body:after { - clear: both; -} -.navbar-nav > .user-menu > .dropdown-menu > .user-body a { - color: #444 !important; -} -@media (max-width: 991px) { - .navbar-nav > .user-menu > .dropdown-menu > .user-body a { - background: #fff !important; - color: #444 !important; - } -} -.navbar-nav > .user-menu > .dropdown-menu > .user-footer { - background-color: #f9f9f9; - padding: 10px; -} -.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before, -.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after { - content: " "; - display: table; -} -.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after { - clear: both; -} -.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default { - color: #666666; -} -@media (max-width: 991px) { - .navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover { - background-color: #f9f9f9; - } -} -.navbar-nav > .user-menu .user-image { - float: left; - width: 25px; - height: 25px; - border-radius: 50%; - margin-right: 10px; - margin-top: -2px; -} -@media (max-width: 767px) { - .navbar-nav > .user-menu .user-image { - float: none; - margin-right: 0; - margin-top: -8px; - line-height: 10px; - } -} -/* Add fade animation to dropdown menus by appending - the class .animated-dropdown-menu to the .dropdown-menu ul (or ol)*/ -.open:not(.dropup) > .animated-dropdown-menu { - backface-visibility: visible !important; - -webkit-animation: flipInX 0.7s both; - -o-animation: flipInX 0.7s both; - animation: flipInX 0.7s both; -} -@keyframes flipInX { - 0% { - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transition-timing-function: ease-in; - opacity: 0; - } - 40% { - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transition-timing-function: ease-in; - } - 60% { - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - 80% { - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - 100% { - transform: perspective(400px); - } -} -@-webkit-keyframes flipInX { - 0% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-transition-timing-function: ease-in; - opacity: 0; - } - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-transition-timing-function: ease-in; - } - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - 100% { - -webkit-transform: perspective(400px); - } -} -/* Fix dropdown menu in navbars */ -.navbar-custom-menu > .navbar-nav > li { - position: relative; -} -.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { - position: absolute; - right: 0; - left: auto; -} -@media (max-width: 991px) { - .navbar-custom-menu > .navbar-nav { - float: right; - } - .navbar-custom-menu > .navbar-nav > li { - position: static; - } - .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { - position: absolute; - right: 5%; - left: auto; - border: 1px solid #ddd; - background: #fff; - } -} -/* - * Component: Form - * --------------- - */ -.form-control { - border-radius: 0; - box-shadow: none; - border-color: #d2d6de; -} -.form-control:focus { - border-color: #3c8dbc; - box-shadow: none; -} -.form-control::-moz-placeholder, -.form-control:-ms-input-placeholder, -.form-control::-webkit-input-placeholder { - color: #bbb; - opacity: 1; -} -.form-control:not(select) { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} -.form-group.has-success label { - color: #00a65a; -} -.form-group.has-success .form-control, -.form-group.has-success .input-group-addon { - border-color: #00a65a; - box-shadow: none; -} -.form-group.has-success .help-block { - color: #00a65a; -} -.form-group.has-warning label { - color: #f39c12; -} -.form-group.has-warning .form-control, -.form-group.has-warning .input-group-addon { - border-color: #f39c12; - box-shadow: none; -} -.form-group.has-warning .help-block { - color: #f39c12; -} -.form-group.has-error label { - color: #dd4b39; -} -.form-group.has-error .form-control, -.form-group.has-error .input-group-addon { - border-color: #dd4b39; - box-shadow: none; -} -.form-group.has-error .help-block { - color: #dd4b39; -} -/* Input group */ -.input-group .input-group-addon { - border-radius: 0; - border-color: #d2d6de; - background-color: #fff; -} -/* button groups */ -.btn-group-vertical .btn.btn-flat:first-of-type, -.btn-group-vertical .btn.btn-flat:last-of-type { - border-radius: 0; -} -.icheck > label { - padding-left: 0; -} -/* support Font Awesome icons in form-control */ -.form-control-feedback.fa { - line-height: 34px; -} -.input-lg + .form-control-feedback.fa, -.input-group-lg + .form-control-feedback.fa, -.form-group-lg .form-control + .form-control-feedback.fa { - line-height: 46px; -} -.input-sm + .form-control-feedback.fa, -.input-group-sm + .form-control-feedback.fa, -.form-group-sm .form-control + .form-control-feedback.fa { - line-height: 30px; -} -/* - * Component: Progress Bar - * ----------------------- - */ -.progress, -.progress > .progress-bar { - -webkit-box-shadow: none; - box-shadow: none; -} -.progress, -.progress > .progress-bar, -.progress .progress-bar, -.progress > .progress-bar .progress-bar { - border-radius: 1px; -} -/* size variation */ -.progress.sm, -.progress-sm { - height: 10px; -} -.progress.sm, -.progress-sm, -.progress.sm .progress-bar, -.progress-sm .progress-bar { - border-radius: 1px; -} -.progress.xs, -.progress-xs { - height: 7px; -} -.progress.xs, -.progress-xs, -.progress.xs .progress-bar, -.progress-xs .progress-bar { - border-radius: 1px; -} -.progress.xxs, -.progress-xxs { - height: 3px; -} -.progress.xxs, -.progress-xxs, -.progress.xxs .progress-bar, -.progress-xxs .progress-bar { - border-radius: 1px; -} -/* Vertical bars */ -.progress.vertical { - position: relative; - width: 30px; - height: 200px; - display: inline-block; - margin-right: 10px; -} -.progress.vertical > .progress-bar { - width: 100%; - position: absolute; - bottom: 0; -} -.progress.vertical.sm, -.progress.vertical.progress-sm { - width: 20px; -} -.progress.vertical.xs, -.progress.vertical.progress-xs { - width: 10px; -} -.progress.vertical.xxs, -.progress.vertical.progress-xxs { - width: 3px; -} -.progress-group .progress-text { - font-weight: 600; -} -.progress-group .progress-number { - float: right; -} -/* Remove margins from progress bars when put in a table */ -.table tr > td .progress { - margin: 0; -} -.progress-bar-light-blue, -.progress-bar-primary { - background-color: #3c8dbc; -} -.progress-striped .progress-bar-light-blue, -.progress-striped .progress-bar-primary { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-green, -.progress-bar-success { - background-color: #00a65a; -} -.progress-striped .progress-bar-green, -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-aqua, -.progress-bar-info { - background-color: #00c0ef; -} -.progress-striped .progress-bar-aqua, -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-yellow, -.progress-bar-warning { - background-color: #f39c12; -} -.progress-striped .progress-bar-yellow, -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-red, -.progress-bar-danger { - background-color: #dd4b39; -} -.progress-striped .progress-bar-red, -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -/* - * Component: Small Box - * -------------------- - */ -.small-box { - border-radius: 2px; - position: relative; - display: block; - margin-bottom: 20px; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); -} -.small-box > .inner { - padding: 10px; -} -.small-box > .small-box-footer { - position: relative; - text-align: center; - padding: 3px 0; - color: #fff; - color: rgba(255, 255, 255, 0.8); - display: block; - z-index: 10; - background: rgba(0, 0, 0, 0.1); - text-decoration: none; -} -.small-box > .small-box-footer:hover { - color: #fff; - background: rgba(0, 0, 0, 0.15); -} -.small-box h3 { - font-size: 38px; - font-weight: bold; - margin: 0 0 10px 0; - white-space: nowrap; - padding: 0; -} -.small-box p { - font-size: 15px; -} -.small-box p > small { - display: block; - color: #f9f9f9; - font-size: 13px; - margin-top: 5px; -} -.small-box h3, -.small-box p { - z-index: 5; -} -.small-box .icon { - -webkit-transition: all 0.3s linear; - -o-transition: all 0.3s linear; - transition: all 0.3s linear; - position: absolute; - top: -10px; - right: 10px; - z-index: 0; - font-size: 90px; - color: rgba(0, 0, 0, 0.15); -} -.small-box:hover { - text-decoration: none; - color: #f9f9f9; -} -.small-box:hover .icon { - font-size: 95px; -} -@media (max-width: 767px) { - .small-box { - text-align: center; - } - .small-box .icon { - display: none; - } - .small-box p { - font-size: 12px; - } -} -/* - * Component: Box - * -------------- - */ -.box { - position: relative; - border-radius: 3px; - background: #ffffff; - border-top: 3px solid #d2d6de; - margin-bottom: 20px; - width: 100%; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); -} -.box.box-primary { - border-top-color: #3c8dbc; -} -.box.box-info { - border-top-color: #00c0ef; -} -.box.box-danger { - border-top-color: #dd4b39; -} -.box.box-warning { - border-top-color: #f39c12; -} -.box.box-success { - border-top-color: #00a65a; -} -.box.box-default { - border-top-color: #d2d6de; -} -.box.collapsed-box .box-body, -.box.collapsed-box .box-footer { - display: none; -} -.box .nav-stacked > li { - border-bottom: 1px solid #f4f4f4; - margin: 0; -} -.box .nav-stacked > li:last-of-type { - border-bottom: none; -} -.box.height-control .box-body { - max-height: 300px; - overflow: auto; -} -.box .border-right { - border-right: 1px solid #f4f4f4; -} -.box .border-left { - border-left: 1px solid #f4f4f4; -} -.box.box-solid { - border-top: 0; -} -.box.box-solid > .box-header .btn.btn-default { - background: transparent; -} -.box.box-solid > .box-header .btn:hover, -.box.box-solid > .box-header a:hover { - background: rgba(0, 0, 0, 0.1); -} -.box.box-solid.box-default { - border: 1px solid #d2d6de; -} -.box.box-solid.box-default > .box-header { - color: #444444; - background: #d2d6de; - background-color: #d2d6de; -} -.box.box-solid.box-default > .box-header a, -.box.box-solid.box-default > .box-header .btn { - color: #444444; -} -.box.box-solid.box-primary { - border: 1px solid #3c8dbc; -} -.box.box-solid.box-primary > .box-header { - color: #ffffff; - background: #3c8dbc; - background-color: #3c8dbc; -} -.box.box-solid.box-primary > .box-header a, -.box.box-solid.box-primary > .box-header .btn { - color: #ffffff; -} -.box.box-solid.box-info { - border: 1px solid #00c0ef; -} -.box.box-solid.box-info > .box-header { - color: #ffffff; - background: #00c0ef; - background-color: #00c0ef; -} -.box.box-solid.box-info > .box-header a, -.box.box-solid.box-info > .box-header .btn { - color: #ffffff; -} -.box.box-solid.box-danger { - border: 1px solid #dd4b39; -} -.box.box-solid.box-danger > .box-header { - color: #ffffff; - background: #dd4b39; - background-color: #dd4b39; -} -.box.box-solid.box-danger > .box-header a, -.box.box-solid.box-danger > .box-header .btn { - color: #ffffff; -} -.box.box-solid.box-warning { - border: 1px solid #f39c12; -} -.box.box-solid.box-warning > .box-header { - color: #ffffff; - background: #f39c12; - background-color: #f39c12; -} -.box.box-solid.box-warning > .box-header a, -.box.box-solid.box-warning > .box-header .btn { - color: #ffffff; -} -.box.box-solid.box-success { - border: 1px solid #00a65a; -} -.box.box-solid.box-success > .box-header { - color: #ffffff; - background: #00a65a; - background-color: #00a65a; -} -.box.box-solid.box-success > .box-header a, -.box.box-solid.box-success > .box-header .btn { - color: #ffffff; -} -.box.box-solid > .box-header > .box-tools .btn { - border: 0; - box-shadow: none; -} -.box.box-solid[class*='bg'] > .box-header { - color: #fff; -} -.box .box-group > .box { - margin-bottom: 5px; -} -.box .knob-label { - text-align: center; - color: #333; - font-weight: 100; - font-size: 12px; - margin-bottom: 0.3em; -} -.box > .overlay, -.overlay-wrapper > .overlay, -.box > .loading-img, -.overlay-wrapper > .loading-img { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.box .overlay, -.overlay-wrapper .overlay { - z-index: 50; - background: rgba(255, 255, 255, 0.7); - border-radius: 3px; -} -.box .overlay > .fa, -.overlay-wrapper .overlay > .fa { - position: absolute; - top: 50%; - left: 50%; - margin-left: -15px; - margin-top: -15px; - color: #000; - font-size: 30px; -} -.box .overlay.dark, -.overlay-wrapper .overlay.dark { - background: rgba(0, 0, 0, 0.5); -} -.box-header:before, -.box-body:before, -.box-footer:before, -.box-header:after, -.box-body:after, -.box-footer:after { - content: " "; - display: table; -} -.box-header:after, -.box-body:after, -.box-footer:after { - clear: both; -} -.box-header { - color: #444; - display: block; - padding: 10px; - position: relative; -} -.box-header.with-border { - border-bottom: 1px solid #f4f4f4; -} -.collapsed-box .box-header.with-border { - border-bottom: none; -} -.box-header > .fa, -.box-header > .glyphicon, -.box-header > .ion, -.box-header .box-title { - display: inline-block; - font-size: 18px; - margin: 0; - line-height: 1; -} -.box-header > .fa, -.box-header > .glyphicon, -.box-header > .ion { - margin-right: 5px; -} -.box-header > .box-tools { - position: absolute; - right: 10px; - top: 5px; -} -.box-header > .box-tools [data-toggle="tooltip"] { - position: relative; -} -.box-header > .box-tools.pull-right .dropdown-menu { - right: 0; - left: auto; -} -.btn-box-tool { - padding: 5px; - font-size: 12px; - background: transparent; - color: #97a0b3; -} -.open .btn-box-tool, -.btn-box-tool:hover { - color: #606c84; -} -.btn-box-tool.btn:active { - box-shadow: none; -} -.box-body { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; - padding: 10px; -} -.no-header .box-body { - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.box-body > .table { - margin-bottom: 0; -} -.box-body .fc { - margin-top: 5px; -} -.box-body .full-width-chart { - margin: -19px; -} -.box-body.no-padding .full-width-chart { - margin: -9px; -} -.box-body .box-pane { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 3px; -} -.box-body .box-pane-right { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 0; -} -.box-footer { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; - border-top: 1px solid #f4f4f4; - padding: 10px; - background-color: #ffffff; -} -.chart-legend { - margin: 10px 0; -} -@media (max-width: 991px) { - .chart-legend > li { - float: left; - margin-right: 10px; - } -} -.box-comments { - background: #f7f7f7; -} -.box-comments .box-comment { - padding: 8px 0; - border-bottom: 1px solid #eee; -} -.box-comments .box-comment:before, -.box-comments .box-comment:after { - content: " "; - display: table; -} -.box-comments .box-comment:after { - clear: both; -} -.box-comments .box-comment:last-of-type { - border-bottom: 0; -} -.box-comments .box-comment:first-of-type { - padding-top: 0; -} -.box-comments .box-comment img { - float: left; -} -.box-comments .comment-text { - margin-left: 40px; - color: #555; -} -.box-comments .username { - color: #444; - display: block; - font-weight: 600; -} -.box-comments .text-muted { - font-weight: 400; - font-size: 12px; -} -/* Widget: TODO LIST */ -.todo-list { - margin: 0; - padding: 0; - list-style: none; - overflow: auto; -} -.todo-list > li { - border-radius: 2px; - padding: 10px; - background: #f4f4f4; - margin-bottom: 2px; - border-left: 2px solid #e6e7e8; - color: #444; -} -.todo-list > li:last-of-type { - margin-bottom: 0; -} -.todo-list > li > input[type='checkbox'] { - margin: 0 10px 0 5px; -} -.todo-list > li .text { - display: inline-block; - margin-left: 5px; - font-weight: 600; -} -.todo-list > li .label { - margin-left: 10px; - font-size: 9px; -} -.todo-list > li .tools { - display: none; - float: right; - color: #dd4b39; -} -.todo-list > li .tools > .fa, -.todo-list > li .tools > .glyphicon, -.todo-list > li .tools > .ion { - margin-right: 5px; - cursor: pointer; -} -.todo-list > li:hover .tools { - display: inline-block; -} -.todo-list > li.done { - color: #999; -} -.todo-list > li.done .text { - text-decoration: line-through; - font-weight: 500; -} -.todo-list > li.done .label { - background: #d2d6de !important; -} -.todo-list .danger { - border-left-color: #dd4b39; -} -.todo-list .warning { - border-left-color: #f39c12; -} -.todo-list .info { - border-left-color: #00c0ef; -} -.todo-list .success { - border-left-color: #00a65a; -} -.todo-list .primary { - border-left-color: #3c8dbc; -} -.todo-list .handle { - display: inline-block; - cursor: move; - margin: 0 5px; -} -/* Chat widget (DEPRECATED - this will be removed in the next major release. Use Direct Chat instead)*/ -.chat { - padding: 5px 20px 5px 10px; -} -.chat .item { - margin-bottom: 10px; -} -.chat .item:before, -.chat .item:after { - content: " "; - display: table; -} -.chat .item:after { - clear: both; -} -.chat .item > img { - width: 40px; - height: 40px; - border: 2px solid transparent; - border-radius: 50%; -} -.chat .item > .online { - border: 2px solid #00a65a; -} -.chat .item > .offline { - border: 2px solid #dd4b39; -} -.chat .item > .message { - margin-left: 55px; - margin-top: -40px; -} -.chat .item > .message > .name { - display: block; - font-weight: 600; -} -.chat .item > .attachment { - border-radius: 3px; - background: #f4f4f4; - margin-left: 65px; - margin-right: 15px; - padding: 10px; -} -.chat .item > .attachment > h4 { - margin: 0 0 5px 0; - font-weight: 600; - font-size: 14px; -} -.chat .item > .attachment > p, -.chat .item > .attachment > .filename { - font-weight: 600; - font-size: 13px; - font-style: italic; - margin: 0; -} -.chat .item > .attachment:before, -.chat .item > .attachment:after { - content: " "; - display: table; -} -.chat .item > .attachment:after { - clear: both; -} -.box-input { - max-width: 200px; -} -.modal .panel-body { - color: #444; -} -/* - * Component: Info Box - * ------------------- - */ -.info-box { - display: block; - min-height: 90px; - background: #fff; - width: 100%; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - border-radius: 2px; - margin-bottom: 15px; -} -.info-box small { - font-size: 14px; -} -.info-box .progress { - background: rgba(0, 0, 0, 0.2); - margin: 5px -10px 5px -10px; - height: 2px; -} -.info-box .progress, -.info-box .progress .progress-bar { - border-radius: 0; -} -.info-box .progress .progress-bar { - background: #fff; -} -.info-box-icon { - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; - display: block; - float: left; - height: 90px; - width: 90px; - text-align: center; - font-size: 45px; - line-height: 90px; - background: rgba(0, 0, 0, 0.2); -} -.info-box-icon > img { - max-width: 100%; -} -.info-box-content { - padding: 5px 10px; - margin-left: 90px; -} -.info-box-number { - display: block; - font-weight: bold; - font-size: 18px; -} -.progress-description, -.info-box-text { - display: block; - font-size: 14px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.info-box-text { - text-transform: uppercase; -} -.info-box-more { - display: block; -} -.progress-description { - margin: 0; -} -/* - * Component: Timeline - * ------------------- - */ -.timeline { - position: relative; - margin: 0 0 30px 0; - padding: 0; - list-style: none; -} -.timeline:before { - content: ''; - position: absolute; - top: 0; - bottom: 0; - width: 4px; - background: #ddd; - left: 31px; - margin: 0; - border-radius: 2px; -} -.timeline > li { - position: relative; - margin-right: 10px; - margin-bottom: 15px; -} -.timeline > li:before, -.timeline > li:after { - content: " "; - display: table; -} -.timeline > li:after { - clear: both; -} -.timeline > li > .timeline-item { - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - border-radius: 3px; - margin-top: 0; - background: #fff; - color: #444; - margin-left: 60px; - margin-right: 15px; - padding: 0; - position: relative; -} -.timeline > li > .timeline-item > .time { - color: #999; - float: right; - padding: 10px; - font-size: 12px; -} -.timeline > li > .timeline-item > .timeline-header { - margin: 0; - color: #555; - border-bottom: 1px solid #f4f4f4; - padding: 10px; - font-size: 16px; - line-height: 1.1; -} -.timeline > li > .timeline-item > .timeline-header > a { - font-weight: 600; -} -.timeline > li > .timeline-item > .timeline-body, -.timeline > li > .timeline-item > .timeline-footer { - padding: 10px; -} -.timeline > li > .fa, -.timeline > li > .glyphicon, -.timeline > li > .ion { - width: 30px; - height: 30px; - font-size: 15px; - line-height: 30px; - position: absolute; - color: #666; - background: #d2d6de; - border-radius: 50%; - text-align: center; - left: 18px; - top: 0; -} -.timeline > .time-label > span { - font-weight: 600; - padding: 5px; - display: inline-block; - background-color: #fff; - border-radius: 4px; -} -.timeline-inverse > li > .timeline-item { - background: #f0f0f0; - border: 1px solid #ddd; - -webkit-box-shadow: none; - box-shadow: none; -} -.timeline-inverse > li > .timeline-item > .timeline-header { - border-bottom-color: #ddd; -} -/* - * Component: Button - * ----------------- - */ -.btn { - border-radius: 3px; - -webkit-box-shadow: none; - box-shadow: none; - border: 1px solid transparent; -} -.btn.uppercase { - text-transform: uppercase; -} -.btn.btn-flat { - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - border-width: 1px; -} -.btn:active { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn:focus { - outline: none; -} -.btn.btn-file { - position: relative; - overflow: hidden; -} -.btn.btn-file > input[type='file'] { - position: absolute; - top: 0; - right: 0; - min-width: 100%; - min-height: 100%; - font-size: 100px; - text-align: right; - opacity: 0; - filter: alpha(opacity=0); - outline: none; - background: white; - cursor: inherit; - display: block; -} -.btn-default { - background-color: #f4f4f4; - color: #444; - border-color: #ddd; -} -.btn-default:hover, -.btn-default:active, -.btn-default.hover { - background-color: #e7e7e7; -} -.btn-primary { - background-color: #3c8dbc; - border-color: #367fa9; -} -.btn-primary:hover, -.btn-primary:active, -.btn-primary.hover { - background-color: #367fa9; -} -.btn-success { - background-color: #00a65a; - border-color: #008d4c; -} -.btn-success:hover, -.btn-success:active, -.btn-success.hover { - background-color: #008d4c; -} -.btn-info { - background-color: #00c0ef; - border-color: #00acd6; -} -.btn-info:hover, -.btn-info:active, -.btn-info.hover { - background-color: #00acd6; -} -.btn-danger { - background-color: #dd4b39; - border-color: #d73925; -} -.btn-danger:hover, -.btn-danger:active, -.btn-danger.hover { - background-color: #d73925; -} -.btn-warning { - background-color: #f39c12; - border-color: #e08e0b; -} -.btn-warning:hover, -.btn-warning:active, -.btn-warning.hover { - background-color: #e08e0b; -} -.btn-outline { - border: 1px solid #fff; - background: transparent; - color: #fff; -} -.btn-outline:hover, -.btn-outline:focus, -.btn-outline:active { - color: rgba(255, 255, 255, 0.7); - border-color: rgba(255, 255, 255, 0.7); -} -.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn[class*='bg-']:hover { - -webkit-box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2); - box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2); -} -.btn-app { - border-radius: 3px; - position: relative; - padding: 15px 5px; - margin: 0 0 10px 10px; - min-width: 80px; - height: 60px; - text-align: center; - color: #666; - border: 1px solid #ddd; - background-color: #f4f4f4; - font-size: 12px; -} -.btn-app > .fa, -.btn-app > .glyphicon, -.btn-app > .ion { - font-size: 20px; - display: block; -} -.btn-app:hover { - background: #f4f4f4; - color: #444; - border-color: #aaa; -} -.btn-app:active, -.btn-app:focus { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn-app > .badge { - position: absolute; - top: -3px; - right: -10px; - font-size: 10px; - font-weight: 400; -} -/* - * Component: Callout - * ------------------ - */ -.callout { - border-radius: 3px; - margin: 0 0 20px 0; - padding: 15px 30px 15px 15px; - border-left: 5px solid #eee; -} -.callout a { - color: #fff; - text-decoration: underline; -} -.callout a:hover { - color: #eee; -} -.callout h4 { - margin-top: 0; - font-weight: 600; -} -.callout p:last-child { - margin-bottom: 0; -} -.callout code, -.callout .highlight { - background-color: #fff; -} -.callout.callout-danger { - border-color: #c23321; -} -.callout.callout-warning { - border-color: #c87f0a; -} -.callout.callout-info { - border-color: #0097bc; -} -.callout.callout-success { - border-color: #00733e; -} -/* - * Component: alert - * ---------------- - */ -.alert { - border-radius: 3px; -} -.alert h4 { - font-weight: 600; -} -.alert .icon { - margin-right: 10px; -} -.alert .close { - color: #000; - opacity: 0.2; - filter: alpha(opacity=20); -} -.alert .close:hover { - opacity: 0.5; - filter: alpha(opacity=50); -} -.alert a { - color: #fff; - text-decoration: underline; -} -.alert-success { - border-color: #008d4c; -} -.alert-danger, -.alert-error { - border-color: #d73925; -} -.alert-warning { - border-color: #e08e0b; -} -.alert-info { - border-color: #00acd6; -} -/* - * Component: Nav - * -------------- - */ -.nav > li > a:hover, -.nav > li > a:active, -.nav > li > a:focus { - color: #444; - background: #f7f7f7; -} -/* NAV PILLS */ -.nav-pills > li > a { - border-radius: 0; - border-top: 3px solid transparent; - color: #444; -} -.nav-pills > li > a > .fa, -.nav-pills > li > a > .glyphicon, -.nav-pills > li > a > .ion { - margin-right: 5px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - border-top-color: #3c8dbc; -} -.nav-pills > li.active > a { - font-weight: 600; -} -/* NAV STACKED */ -.nav-stacked > li > a { - border-radius: 0; - border-top: 0; - border-left: 3px solid transparent; - color: #444; -} -.nav-stacked > li.active > a, -.nav-stacked > li.active > a:hover { - background: transparent; - color: #444; - border-top: 0; - border-left-color: #3c8dbc; -} -.nav-stacked > li.header { - border-bottom: 1px solid #ddd; - color: #777; - margin-bottom: 10px; - padding: 5px 10px; - text-transform: uppercase; -} -/* NAV TABS */ -.nav-tabs-custom { - margin-bottom: 20px; - background: #fff; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - border-radius: 3px; -} -.nav-tabs-custom > .nav-tabs { - margin: 0; - border-bottom-color: #f4f4f4; - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.nav-tabs-custom > .nav-tabs > li { - border-top: 3px solid transparent; - margin-bottom: -2px; - margin-right: 5px; -} -.nav-tabs-custom > .nav-tabs > li > a { - color: #444; - border-radius: 0; -} -.nav-tabs-custom > .nav-tabs > li > a.text-muted { - color: #999; -} -.nav-tabs-custom > .nav-tabs > li > a, -.nav-tabs-custom > .nav-tabs > li > a:hover { - background: transparent; - margin: 0; -} -.nav-tabs-custom > .nav-tabs > li > a:hover { - color: #999; -} -.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover, -.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus, -.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active { - border-color: transparent; -} -.nav-tabs-custom > .nav-tabs > li.active { - border-top-color: #3c8dbc; -} -.nav-tabs-custom > .nav-tabs > li.active > a, -.nav-tabs-custom > .nav-tabs > li.active:hover > a { - background-color: #fff; - color: #444; -} -.nav-tabs-custom > .nav-tabs > li.active > a { - border-top-color: transparent; - border-left-color: #f4f4f4; - border-right-color: #f4f4f4; -} -.nav-tabs-custom > .nav-tabs > li:first-of-type { - margin-left: 0; -} -.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a { - border-left-color: transparent; -} -.nav-tabs-custom > .nav-tabs.pull-right { - float: none !important; -} -.nav-tabs-custom > .nav-tabs.pull-right > li { - float: right; -} -.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type { - margin-right: 0; -} -.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a { - border-left-width: 1px; -} -.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a { - border-left-color: #f4f4f4; - border-right-color: transparent; -} -.nav-tabs-custom > .nav-tabs > li.header { - line-height: 35px; - padding: 0 10px; - font-size: 20px; - color: #444; -} -.nav-tabs-custom > .nav-tabs > li.header > .fa, -.nav-tabs-custom > .nav-tabs > li.header > .glyphicon, -.nav-tabs-custom > .nav-tabs > li.header > .ion { - margin-right: 5px; -} -.nav-tabs-custom > .tab-content { - background: #fff; - padding: 10px; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.nav-tabs-custom .dropdown.open > a:active, -.nav-tabs-custom .dropdown.open > a:focus { - background: transparent; - color: #999; -} -.nav-tabs-custom.tab-primary > .nav-tabs > li.active { - border-top-color: #3c8dbc; -} -.nav-tabs-custom.tab-info > .nav-tabs > li.active { - border-top-color: #00c0ef; -} -.nav-tabs-custom.tab-danger > .nav-tabs > li.active { - border-top-color: #dd4b39; -} -.nav-tabs-custom.tab-warning > .nav-tabs > li.active { - border-top-color: #f39c12; -} -.nav-tabs-custom.tab-success > .nav-tabs > li.active { - border-top-color: #00a65a; -} -.nav-tabs-custom.tab-default > .nav-tabs > li.active { - border-top-color: #d2d6de; -} -/* PAGINATION */ -.pagination > li > a { - background: #fafafa; - color: #666; -} -.pagination.pagination-flat > li > a { - border-radius: 0 !important; -} -/* - * Component: Products List - * ------------------------ - */ -.products-list { - list-style: none; - margin: 0; - padding: 0; -} -.products-list > .item { - border-radius: 3px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - padding: 10px 0; - background: #fff; -} -.products-list > .item:before, -.products-list > .item:after { - content: " "; - display: table; -} -.products-list > .item:after { - clear: both; -} -.products-list .product-img { - float: left; -} -.products-list .product-img img { - width: 50px; - height: 50px; -} -.products-list .product-info { - margin-left: 60px; -} -.products-list .product-title { - font-weight: 600; -} -.products-list .product-description { - display: block; - color: #999; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.product-list-in-box > .item { - -webkit-box-shadow: none; - box-shadow: none; - border-radius: 0; - border-bottom: 1px solid #f4f4f4; -} -.product-list-in-box > .item:last-of-type { - border-bottom-width: 0; -} -/* - * Component: Table - * ---------------- - */ -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - border-top: 1px solid #f4f4f4; -} -.table > thead > tr > th { - border-bottom: 2px solid #f4f4f4; -} -.table tr td .progress { - margin-top: 5px; -} -.table-bordered { - border: 1px solid #f4f4f4; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #f4f4f4; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table.no-border, -.table.no-border td, -.table.no-border th { - border: 0; -} -/* .text-center in tables */ -table.text-center, -table.text-center td, -table.text-center th { - text-align: center; -} -.table.align th { - text-align: left; -} -.table.align td { - text-align: right; -} -/* - * Component: Label - * ---------------- - */ -.label-default { - background-color: #d2d6de; - color: #444; -} -/* - * Component: Direct Chat - * ---------------------- - */ -.direct-chat .box-body { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - position: relative; - overflow-x: hidden; - padding: 0; -} -.direct-chat.chat-pane-open .direct-chat-contacts { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.direct-chat-messages { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); - padding: 10px; - height: 250px; - overflow: auto; -} -.direct-chat-msg, -.direct-chat-text { - display: block; -} -.direct-chat-msg { - margin-bottom: 10px; -} -.direct-chat-msg:before, -.direct-chat-msg:after { - content: " "; - display: table; -} -.direct-chat-msg:after { - clear: both; -} -.direct-chat-messages, -.direct-chat-contacts { - -webkit-transition: -webkit-transform 0.5s ease-in-out; - -moz-transition: -moz-transform 0.5s ease-in-out; - -o-transition: -o-transform 0.5s ease-in-out; - transition: transform 0.5s ease-in-out; -} -.direct-chat-text { - border-radius: 5px; - position: relative; - padding: 5px 10px; - background: #d2d6de; - border: 1px solid #d2d6de; - margin: 5px 0 0 50px; - color: #444444; -} -.direct-chat-text:after, -.direct-chat-text:before { - position: absolute; - right: 100%; - top: 15px; - border: solid transparent; - border-right-color: #d2d6de; - content: ' '; - height: 0; - width: 0; - pointer-events: none; -} -.direct-chat-text:after { - border-width: 5px; - margin-top: -5px; -} -.direct-chat-text:before { - border-width: 6px; - margin-top: -6px; -} -.right .direct-chat-text { - margin-right: 50px; - margin-left: 0; -} -.right .direct-chat-text:after, -.right .direct-chat-text:before { - right: auto; - left: 100%; - border-right-color: transparent; - border-left-color: #d2d6de; -} -.direct-chat-img { - border-radius: 50%; - float: left; - width: 40px; - height: 40px; -} -.right .direct-chat-img { - float: right; -} -.direct-chat-info { - display: block; - margin-bottom: 2px; - font-size: 12px; -} -.direct-chat-name { - font-weight: 600; -} -.direct-chat-timestamp { - color: #999; -} -.direct-chat-contacts-open .direct-chat-contacts { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.direct-chat-contacts { - -webkit-transform: translate(101%, 0); - -ms-transform: translate(101%, 0); - -o-transform: translate(101%, 0); - transform: translate(101%, 0); - position: absolute; - top: 0; - bottom: 0; - height: 250px; - width: 100%; - background: #222d32; - color: #fff; - overflow: auto; -} -.contacts-list > li { - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - padding: 10px; - margin: 0; -} -.contacts-list > li:before, -.contacts-list > li:after { - content: " "; - display: table; -} -.contacts-list > li:after { - clear: both; -} -.contacts-list > li:last-of-type { - border-bottom: none; -} -.contacts-list-img { - border-radius: 50%; - width: 40px; - float: left; -} -.contacts-list-info { - margin-left: 45px; - color: #fff; -} -.contacts-list-name, -.contacts-list-status { - display: block; -} -.contacts-list-name { - font-weight: 600; -} -.contacts-list-status { - font-size: 12px; -} -.contacts-list-date { - color: #aaa; - font-weight: normal; -} -.contacts-list-msg { - color: #999; -} -.direct-chat-danger .right > .direct-chat-text { - background: #dd4b39; - border-color: #dd4b39; - color: #ffffff; -} -.direct-chat-danger .right > .direct-chat-text:after, -.direct-chat-danger .right > .direct-chat-text:before { - border-left-color: #dd4b39; -} -.direct-chat-primary .right > .direct-chat-text { - background: #3c8dbc; - border-color: #3c8dbc; - color: #ffffff; -} -.direct-chat-primary .right > .direct-chat-text:after, -.direct-chat-primary .right > .direct-chat-text:before { - border-left-color: #3c8dbc; -} -.direct-chat-warning .right > .direct-chat-text { - background: #f39c12; - border-color: #f39c12; - color: #ffffff; -} -.direct-chat-warning .right > .direct-chat-text:after, -.direct-chat-warning .right > .direct-chat-text:before { - border-left-color: #f39c12; -} -.direct-chat-info .right > .direct-chat-text { - background: #00c0ef; - border-color: #00c0ef; - color: #ffffff; -} -.direct-chat-info .right > .direct-chat-text:after, -.direct-chat-info .right > .direct-chat-text:before { - border-left-color: #00c0ef; -} -.direct-chat-success .right > .direct-chat-text { - background: #00a65a; - border-color: #00a65a; - color: #ffffff; -} -.direct-chat-success .right > .direct-chat-text:after, -.direct-chat-success .right > .direct-chat-text:before { - border-left-color: #00a65a; -} -/* - * Component: Users List - * --------------------- - */ -.users-list > li { - width: 25%; - float: left; - padding: 10px; - text-align: center; -} -.users-list > li img { - border-radius: 50%; - max-width: 100%; - height: auto; -} -.users-list > li > a:hover, -.users-list > li > a:hover .users-list-name { - color: #999; -} -.users-list-name, -.users-list-date { - display: block; -} -.users-list-name { - font-weight: 600; - color: #444; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.users-list-date { - color: #999; - font-size: 12px; -} -/* - * Component: Carousel - * ------------------- - */ -.carousel-control.left, -.carousel-control.right { - background-image: none; -} -.carousel-control > .fa { - font-size: 40px; - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; - margin-top: -20px; -} -/* - * Component: modal - * ---------------- - */ -.modal { - background: rgba(0, 0, 0, 0.3); -} -.modal-content { - border-radius: 0; - -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); - box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); - border: 0; -} -@media (min-width: 768px) { - .modal-content { - -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); - box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); - } -} -.modal-header { - border-bottom-color: #f4f4f4; -} -.modal-footer { - border-top-color: #f4f4f4; -} -.modal-primary .modal-header, -.modal-primary .modal-footer { - border-color: #307095; -} -.modal-warning .modal-header, -.modal-warning .modal-footer { - border-color: #c87f0a; -} -.modal-info .modal-header, -.modal-info .modal-footer { - border-color: #0097bc; -} -.modal-success .modal-header, -.modal-success .modal-footer { - border-color: #00733e; -} -.modal-danger .modal-header, -.modal-danger .modal-footer { - border-color: #c23321; -} -/* - * Component: Social Widgets - * ------------------------- - */ -.box-widget { - border: none; - position: relative; -} -.widget-user .widget-user-header { - padding: 20px; - height: 120px; - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.widget-user .widget-user-username { - margin-top: 0; - margin-bottom: 5px; - font-size: 25px; - font-weight: 300; - text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); -} -.widget-user .widget-user-desc { - margin-top: 0; -} -.widget-user .widget-user-image { - position: absolute; - top: 65px; - left: 50%; - margin-left: -45px; -} -.widget-user .widget-user-image > img { - width: 90px; - height: auto; - border: 3px solid #fff; -} -.widget-user .box-footer { - padding-top: 30px; -} -.widget-user-2 .widget-user-header { - padding: 20px; - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.widget-user-2 .widget-user-username { - margin-top: 5px; - margin-bottom: 5px; - font-size: 25px; - font-weight: 300; -} -.widget-user-2 .widget-user-desc { - margin-top: 0; -} -.widget-user-2 .widget-user-username, -.widget-user-2 .widget-user-desc { - margin-left: 75px; -} -.widget-user-2 .widget-user-image > img { - width: 65px; - height: auto; - float: left; -} -/* - * Page: Mailbox - * ------------- - */ -.mailbox-messages > .table { - margin: 0; -} -.mailbox-controls { - padding: 5px; -} -.mailbox-controls.with-border { - border-bottom: 1px solid #f4f4f4; -} -.mailbox-read-info { - border-bottom: 1px solid #f4f4f4; - padding: 10px; -} -.mailbox-read-info h3 { - font-size: 20px; - margin: 0; -} -.mailbox-read-info h5 { - margin: 0; - padding: 5px 0 0 0; -} -.mailbox-read-time { - color: #999; - font-size: 13px; -} -.mailbox-read-message { - padding: 10px; -} -.mailbox-attachments li { - float: left; - width: 200px; - border: 1px solid #eee; - margin-bottom: 10px; - margin-right: 10px; -} -.mailbox-attachment-name { - font-weight: bold; - color: #666; -} -.mailbox-attachment-icon, -.mailbox-attachment-info, -.mailbox-attachment-size { - display: block; -} -.mailbox-attachment-info { - padding: 10px; - background: #f4f4f4; -} -.mailbox-attachment-size { - color: #999; - font-size: 12px; -} -.mailbox-attachment-icon { - text-align: center; - font-size: 65px; - color: #666; - padding: 20px 10px; -} -.mailbox-attachment-icon.has-img { - padding: 0; -} -.mailbox-attachment-icon.has-img > img { - max-width: 100%; - height: auto; -} -/* - * Page: Lock Screen - * ----------------- - */ -/* ADD THIS CLASS TO THE TAG */ -.lockscreen { - background: #d2d6de; -} -.lockscreen-logo { - font-size: 35px; - text-align: center; - margin-bottom: 25px; - font-weight: 300; -} -.lockscreen-logo a { - color: #444; -} -.lockscreen-wrapper { - max-width: 400px; - margin: 0 auto; - margin-top: 10%; -} -/* User name [optional] */ -.lockscreen .lockscreen-name { - text-align: center; - font-weight: 600; -} -/* Will contain the image and the sign in form */ -.lockscreen-item { - border-radius: 4px; - padding: 0; - background: #fff; - position: relative; - margin: 10px auto 30px auto; - width: 290px; -} -/* User image */ -.lockscreen-image { - border-radius: 50%; - position: absolute; - left: -10px; - top: -25px; - background: #fff; - padding: 5px; - z-index: 10; -} -.lockscreen-image > img { - border-radius: 50%; - width: 70px; - height: 70px; -} -/* Contains the password input and the login button */ -.lockscreen-credentials { - margin-left: 70px; -} -.lockscreen-credentials .form-control { - border: 0; -} -.lockscreen-credentials .btn { - background-color: #fff; - border: 0; - padding: 0 10px; -} -.lockscreen-footer { - margin-top: 10px; -} -/* - * Page: Login & Register - * ---------------------- - */ -.login-logo, -.register-logo { - font-size: 35px; - text-align: center; - margin-bottom: 25px; - font-weight: 300; -} -.login-logo a, -.register-logo a { - color: #444; -} -.login-page, -.register-page { - background: #d2d6de; -} -.login-box, -.register-box { - width: 360px; - margin: 7% auto; -} -@media (max-width: 768px) { - .login-box, - .register-box { - width: 90%; - margin-top: 20px; - } -} -.login-box-body, -.register-box-body { - background: #fff; - padding: 20px; - border-top: 0; - color: #666; -} -.login-box-body .form-control-feedback, -.register-box-body .form-control-feedback { - color: #777; -} -.login-box-msg, -.register-box-msg { - margin: 0; - text-align: center; - padding: 0 20px 20px 20px; -} -.social-auth-links { - margin: 10px 0; -} -/* - * Page: 400 and 500 error pages - * ------------------------------ - */ -.error-page { - width: 600px; - margin: 20px auto 0 auto; -} -@media (max-width: 991px) { - .error-page { - width: 100%; - } -} -.error-page > .headline { - float: left; - font-size: 100px; - font-weight: 300; -} -@media (max-width: 991px) { - .error-page > .headline { - float: none; - text-align: center; - } -} -.error-page > .error-content { - margin-left: 190px; - display: block; -} -@media (max-width: 991px) { - .error-page > .error-content { - margin-left: 0; - } -} -.error-page > .error-content > h3 { - font-weight: 300; - font-size: 25px; -} -@media (max-width: 991px) { - .error-page > .error-content > h3 { - text-align: center; - } -} -/* - * Page: Invoice - * ------------- - */ -.invoice { - position: relative; - background: #fff; - border: 1px solid #f4f4f4; - padding: 20px; - margin: 10px 25px; -} -.invoice-title { - margin-top: 0; -} -/* - * Page: Profile - * ------------- - */ -.profile-user-img { - margin: 0 auto; - width: 100px; - padding: 3px; - border: 3px solid #d2d6de; -} -.profile-username { - font-size: 21px; - margin-top: 5px; -} -.post { - border-bottom: 1px solid #d2d6de; - margin-bottom: 15px; - padding-bottom: 15px; - color: #666; -} -.post:last-of-type { - border-bottom: 0; - margin-bottom: 0; - padding-bottom: 0; -} -.post .user-block { - margin-bottom: 15px; -} -/* - * Social Buttons for Bootstrap - * - * Copyright 2013-2015 Panayiotis Lipiridis - * Licensed under the MIT License - * - * https://github.com/lipis/bootstrap-social - */ -.btn-social { - position: relative; - padding-left: 44px; - text-align: left; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.btn-social > :first-child { - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: 32px; - line-height: 34px; - font-size: 1.6em; - text-align: center; - border-right: 1px solid rgba(0, 0, 0, 0.2); -} -.btn-social.btn-lg { - padding-left: 61px; -} -.btn-social.btn-lg > :first-child { - line-height: 45px; - width: 45px; - font-size: 1.8em; -} -.btn-social.btn-sm { - padding-left: 38px; -} -.btn-social.btn-sm > :first-child { - line-height: 28px; - width: 28px; - font-size: 1.4em; -} -.btn-social.btn-xs { - padding-left: 30px; -} -.btn-social.btn-xs > :first-child { - line-height: 20px; - width: 20px; - font-size: 1.2em; -} -.btn-social-icon { - position: relative; - padding-left: 44px; - text-align: left; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - height: 34px; - width: 34px; - padding: 0; -} -.btn-social-icon > :first-child { - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: 32px; - line-height: 34px; - font-size: 1.6em; - text-align: center; - border-right: 1px solid rgba(0, 0, 0, 0.2); -} -.btn-social-icon.btn-lg { - padding-left: 61px; -} -.btn-social-icon.btn-lg > :first-child { - line-height: 45px; - width: 45px; - font-size: 1.8em; -} -.btn-social-icon.btn-sm { - padding-left: 38px; -} -.btn-social-icon.btn-sm > :first-child { - line-height: 28px; - width: 28px; - font-size: 1.4em; -} -.btn-social-icon.btn-xs { - padding-left: 30px; -} -.btn-social-icon.btn-xs > :first-child { - line-height: 20px; - width: 20px; - font-size: 1.2em; -} -.btn-social-icon > :first-child { - border: none; - text-align: center; - width: 100%; -} -.btn-social-icon.btn-lg { - height: 45px; - width: 45px; - padding-left: 0; - padding-right: 0; -} -.btn-social-icon.btn-sm { - height: 30px; - width: 30px; - padding-left: 0; - padding-right: 0; -} -.btn-social-icon.btn-xs { - height: 22px; - width: 22px; - padding-left: 0; - padding-right: 0; -} -.btn-adn { - color: #ffffff; - background-color: #d87a68; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-adn:focus, -.btn-adn.focus { - color: #ffffff; - background-color: #ce563f; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-adn:hover { - color: #ffffff; - background-color: #ce563f; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-adn:active, -.btn-adn.active, -.open > .dropdown-toggle.btn-adn { - color: #ffffff; - background-color: #ce563f; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-adn:active, -.btn-adn.active, -.open > .dropdown-toggle.btn-adn { - background-image: none; -} -.btn-adn .badge { - color: #d87a68; - background-color: #ffffff; -} -.btn-bitbucket { - color: #ffffff; - background-color: #205081; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-bitbucket:focus, -.btn-bitbucket.focus { - color: #ffffff; - background-color: #163758; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-bitbucket:hover { - color: #ffffff; - background-color: #163758; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-bitbucket:active, -.btn-bitbucket.active, -.open > .dropdown-toggle.btn-bitbucket { - color: #ffffff; - background-color: #163758; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-bitbucket:active, -.btn-bitbucket.active, -.open > .dropdown-toggle.btn-bitbucket { - background-image: none; -} -.btn-bitbucket .badge { - color: #205081; - background-color: #ffffff; -} -.btn-dropbox { - color: #ffffff; - background-color: #1087dd; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-dropbox:focus, -.btn-dropbox.focus { - color: #ffffff; - background-color: #0d6aad; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-dropbox:hover { - color: #ffffff; - background-color: #0d6aad; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-dropbox:active, -.btn-dropbox.active, -.open > .dropdown-toggle.btn-dropbox { - color: #ffffff; - background-color: #0d6aad; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-dropbox:active, -.btn-dropbox.active, -.open > .dropdown-toggle.btn-dropbox { - background-image: none; -} -.btn-dropbox .badge { - color: #1087dd; - background-color: #ffffff; -} -.btn-facebook { - color: #ffffff; - background-color: #3b5998; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-facebook:focus, -.btn-facebook.focus { - color: #ffffff; - background-color: #2d4373; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-facebook:hover { - color: #ffffff; - background-color: #2d4373; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-facebook:active, -.btn-facebook.active, -.open > .dropdown-toggle.btn-facebook { - color: #ffffff; - background-color: #2d4373; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-facebook:active, -.btn-facebook.active, -.open > .dropdown-toggle.btn-facebook { - background-image: none; -} -.btn-facebook .badge { - color: #3b5998; - background-color: #ffffff; -} -.btn-flickr { - color: #ffffff; - background-color: #ff0084; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-flickr:focus, -.btn-flickr.focus { - color: #ffffff; - background-color: #cc006a; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-flickr:hover { - color: #ffffff; - background-color: #cc006a; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-flickr:active, -.btn-flickr.active, -.open > .dropdown-toggle.btn-flickr { - color: #ffffff; - background-color: #cc006a; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-flickr:active, -.btn-flickr.active, -.open > .dropdown-toggle.btn-flickr { - background-image: none; -} -.btn-flickr .badge { - color: #ff0084; - background-color: #ffffff; -} -.btn-foursquare { - color: #ffffff; - background-color: #f94877; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-foursquare:focus, -.btn-foursquare.focus { - color: #ffffff; - background-color: #f71752; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-foursquare:hover { - color: #ffffff; - background-color: #f71752; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-foursquare:active, -.btn-foursquare.active, -.open > .dropdown-toggle.btn-foursquare { - color: #ffffff; - background-color: #f71752; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-foursquare:active, -.btn-foursquare.active, -.open > .dropdown-toggle.btn-foursquare { - background-image: none; -} -.btn-foursquare .badge { - color: #f94877; - background-color: #ffffff; -} -.btn-github { - color: #ffffff; - background-color: #444444; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-github:focus, -.btn-github.focus { - color: #ffffff; - background-color: #2b2b2b; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-github:hover { - color: #ffffff; - background-color: #2b2b2b; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-github:active, -.btn-github.active, -.open > .dropdown-toggle.btn-github { - color: #ffffff; - background-color: #2b2b2b; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-github:active, -.btn-github.active, -.open > .dropdown-toggle.btn-github { - background-image: none; -} -.btn-github .badge { - color: #444444; - background-color: #ffffff; -} -.btn-google { - color: #ffffff; - background-color: #dd4b39; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-google:focus, -.btn-google.focus { - color: #ffffff; - background-color: #c23321; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-google:hover { - color: #ffffff; - background-color: #c23321; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-google:active, -.btn-google.active, -.open > .dropdown-toggle.btn-google { - color: #ffffff; - background-color: #c23321; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-google:active, -.btn-google.active, -.open > .dropdown-toggle.btn-google { - background-image: none; -} -.btn-google .badge { - color: #dd4b39; - background-color: #ffffff; -} -.btn-instagram { - color: #ffffff; - background-color: #3f729b; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-instagram:focus, -.btn-instagram.focus { - color: #ffffff; - background-color: #305777; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-instagram:hover { - color: #ffffff; - background-color: #305777; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-instagram:active, -.btn-instagram.active, -.open > .dropdown-toggle.btn-instagram { - color: #ffffff; - background-color: #305777; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-instagram:active, -.btn-instagram.active, -.open > .dropdown-toggle.btn-instagram { - background-image: none; -} -.btn-instagram .badge { - color: #3f729b; - background-color: #ffffff; -} -.btn-linkedin { - color: #ffffff; - background-color: #007bb6; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-linkedin:focus, -.btn-linkedin.focus { - color: #ffffff; - background-color: #005983; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-linkedin:hover { - color: #ffffff; - background-color: #005983; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-linkedin:active, -.btn-linkedin.active, -.open > .dropdown-toggle.btn-linkedin { - color: #ffffff; - background-color: #005983; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-linkedin:active, -.btn-linkedin.active, -.open > .dropdown-toggle.btn-linkedin { - background-image: none; -} -.btn-linkedin .badge { - color: #007bb6; - background-color: #ffffff; -} -.btn-microsoft { - color: #ffffff; - background-color: #2672ec; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-microsoft:focus, -.btn-microsoft.focus { - color: #ffffff; - background-color: #125acd; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-microsoft:hover { - color: #ffffff; - background-color: #125acd; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-microsoft:active, -.btn-microsoft.active, -.open > .dropdown-toggle.btn-microsoft { - color: #ffffff; - background-color: #125acd; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-microsoft:active, -.btn-microsoft.active, -.open > .dropdown-toggle.btn-microsoft { - background-image: none; -} -.btn-microsoft .badge { - color: #2672ec; - background-color: #ffffff; -} -.btn-openid { - color: #ffffff; - background-color: #f7931e; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-openid:focus, -.btn-openid.focus { - color: #ffffff; - background-color: #da7908; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-openid:hover { - color: #ffffff; - background-color: #da7908; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-openid:active, -.btn-openid.active, -.open > .dropdown-toggle.btn-openid { - color: #ffffff; - background-color: #da7908; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-openid:active, -.btn-openid.active, -.open > .dropdown-toggle.btn-openid { - background-image: none; -} -.btn-openid .badge { - color: #f7931e; - background-color: #ffffff; -} -.btn-pinterest { - color: #ffffff; - background-color: #cb2027; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-pinterest:focus, -.btn-pinterest.focus { - color: #ffffff; - background-color: #9f191f; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-pinterest:hover { - color: #ffffff; - background-color: #9f191f; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-pinterest:active, -.btn-pinterest.active, -.open > .dropdown-toggle.btn-pinterest { - color: #ffffff; - background-color: #9f191f; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-pinterest:active, -.btn-pinterest.active, -.open > .dropdown-toggle.btn-pinterest { - background-image: none; -} -.btn-pinterest .badge { - color: #cb2027; - background-color: #ffffff; -} -.btn-reddit { - color: #000000; - background-color: #eff7ff; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-reddit:focus, -.btn-reddit.focus { - color: #000000; - background-color: #bcddff; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-reddit:hover { - color: #000000; - background-color: #bcddff; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-reddit:active, -.btn-reddit.active, -.open > .dropdown-toggle.btn-reddit { - color: #000000; - background-color: #bcddff; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-reddit:active, -.btn-reddit.active, -.open > .dropdown-toggle.btn-reddit { - background-image: none; -} -.btn-reddit .badge { - color: #eff7ff; - background-color: #000000; -} -.btn-soundcloud { - color: #ffffff; - background-color: #ff5500; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-soundcloud:focus, -.btn-soundcloud.focus { - color: #ffffff; - background-color: #cc4400; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-soundcloud:hover { - color: #ffffff; - background-color: #cc4400; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-soundcloud:active, -.btn-soundcloud.active, -.open > .dropdown-toggle.btn-soundcloud { - color: #ffffff; - background-color: #cc4400; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-soundcloud:active, -.btn-soundcloud.active, -.open > .dropdown-toggle.btn-soundcloud { - background-image: none; -} -.btn-soundcloud .badge { - color: #ff5500; - background-color: #ffffff; -} -.btn-tumblr { - color: #ffffff; - background-color: #2c4762; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-tumblr:focus, -.btn-tumblr.focus { - color: #ffffff; - background-color: #1c2d3f; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-tumblr:hover { - color: #ffffff; - background-color: #1c2d3f; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-tumblr:active, -.btn-tumblr.active, -.open > .dropdown-toggle.btn-tumblr { - color: #ffffff; - background-color: #1c2d3f; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-tumblr:active, -.btn-tumblr.active, -.open > .dropdown-toggle.btn-tumblr { - background-image: none; -} -.btn-tumblr .badge { - color: #2c4762; - background-color: #ffffff; -} -.btn-twitter { - color: #ffffff; - background-color: #55acee; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-twitter:focus, -.btn-twitter.focus { - color: #ffffff; - background-color: #2795e9; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-twitter:hover { - color: #ffffff; - background-color: #2795e9; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-twitter:active, -.btn-twitter.active, -.open > .dropdown-toggle.btn-twitter { - color: #ffffff; - background-color: #2795e9; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-twitter:active, -.btn-twitter.active, -.open > .dropdown-toggle.btn-twitter { - background-image: none; -} -.btn-twitter .badge { - color: #55acee; - background-color: #ffffff; -} -.btn-vimeo { - color: #ffffff; - background-color: #1ab7ea; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-vimeo:focus, -.btn-vimeo.focus { - color: #ffffff; - background-color: #1295bf; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-vimeo:hover { - color: #ffffff; - background-color: #1295bf; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-vimeo:active, -.btn-vimeo.active, -.open > .dropdown-toggle.btn-vimeo { - color: #ffffff; - background-color: #1295bf; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-vimeo:active, -.btn-vimeo.active, -.open > .dropdown-toggle.btn-vimeo { - background-image: none; -} -.btn-vimeo .badge { - color: #1ab7ea; - background-color: #ffffff; -} -.btn-vk { - color: #ffffff; - background-color: #587ea3; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-vk:focus, -.btn-vk.focus { - color: #ffffff; - background-color: #466482; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-vk:hover { - color: #ffffff; - background-color: #466482; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-vk:active, -.btn-vk.active, -.open > .dropdown-toggle.btn-vk { - color: #ffffff; - background-color: #466482; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-vk:active, -.btn-vk.active, -.open > .dropdown-toggle.btn-vk { - background-image: none; -} -.btn-vk .badge { - color: #587ea3; - background-color: #ffffff; -} -.btn-yahoo { - color: #ffffff; - background-color: #720e9e; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-yahoo:focus, -.btn-yahoo.focus { - color: #ffffff; - background-color: #500a6f; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-yahoo:hover { - color: #ffffff; - background-color: #500a6f; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-yahoo:active, -.btn-yahoo.active, -.open > .dropdown-toggle.btn-yahoo { - color: #ffffff; - background-color: #500a6f; - border-color: rgba(0, 0, 0, 0.2); -} -.btn-yahoo:active, -.btn-yahoo.active, -.open > .dropdown-toggle.btn-yahoo { - background-image: none; -} -.btn-yahoo .badge { - color: #720e9e; - background-color: #ffffff; -} -/* - * Plugin: Full Calendar - * --------------------- - */ -.fc-button { - background: #f4f4f4; - background-image: none; - color: #444; - border-color: #ddd; - border-bottom-color: #ddd; -} -.fc-button:hover, -.fc-button:active, -.fc-button.hover { - background-color: #e9e9e9; -} -.fc-header-title h2 { - font-size: 15px; - line-height: 1.6em; - color: #666; - margin-left: 10px; -} -.fc-header-right { - padding-right: 10px; -} -.fc-header-left { - padding-left: 10px; -} -.fc-widget-header { - background: #fafafa; -} -.fc-grid { - width: 100%; - border: 0; -} -.fc-widget-header:first-of-type, -.fc-widget-content:first-of-type { - border-left: 0; - border-right: 0; -} -.fc-widget-header:last-of-type, -.fc-widget-content:last-of-type { - border-right: 0; -} -.fc-toolbar { - padding: 10px; - margin: 0; -} -.fc-day-number { - font-size: 20px; - font-weight: 300; - padding-right: 10px; -} -.fc-color-picker { - list-style: none; - margin: 0; - padding: 0; -} -.fc-color-picker > li { - float: left; - font-size: 30px; - margin-right: 5px; - line-height: 30px; -} -.fc-color-picker > li .fa { - -webkit-transition: -webkit-transform linear 0.3s; - -moz-transition: -moz-transform linear 0.3s; - -o-transition: -o-transform linear 0.3s; - transition: transform linear 0.3s; -} -.fc-color-picker > li .fa:hover { - -webkit-transform: rotate(30deg); - -ms-transform: rotate(30deg); - -o-transform: rotate(30deg); - transform: rotate(30deg); -} -#add-new-event { - -webkit-transition: all linear 0.3s; - -o-transition: all linear 0.3s; - transition: all linear 0.3s; -} -.external-event { - padding: 5px 10px; - font-weight: bold; - margin-bottom: 4px; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - border-radius: 3px; - cursor: move; -} -.external-event:hover { - box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2); -} -/* - * Plugin: Select2 - * --------------- - */ -.select2-container--default.select2-container--focus, -.select2-selection.select2-container--focus, -.select2-container--default:focus, -.select2-selection:focus, -.select2-container--default:active, -.select2-selection:active { - outline: none; -} -.select2-container--default .select2-selection--single, -.select2-selection .select2-selection--single { - border: 1px solid #d2d6de; - border-radius: 0; - padding: 6px 12px; - height: 34px; -} -.select2-container--default.select2-container--open { - border-color: #3c8dbc; -} -.select2-dropdown { - border: 1px solid #d2d6de; - border-radius: 0; -} -.select2-container--default .select2-results__option--highlighted[aria-selected] { - background-color: #3c8dbc; - color: white; -} -.select2-results__option { - padding: 6px 12px; - user-select: none; - -webkit-user-select: none; -} -.select2-container .select2-selection--single .select2-selection__rendered { - padding-left: 0; - padding-right: 0; - height: auto; - margin-top: -4px; -} -.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { - padding-right: 6px; - padding-left: 20px; -} -.select2-container--default .select2-selection--single .select2-selection__arrow { - height: 28px; - right: 3px; -} -.select2-container--default .select2-selection--single .select2-selection__arrow b { - margin-top: 0; -} -.select2-dropdown .select2-search__field, -.select2-search--inline .select2-search__field { - border: 1px solid #d2d6de; -} -.select2-dropdown .select2-search__field:focus, -.select2-search--inline .select2-search__field:focus { - outline: none; - border: 1px solid #3c8dbc; -} -.select2-container--default .select2-results__option[aria-disabled=true] { - color: #999; -} -.select2-container--default .select2-results__option[aria-selected=true] { - background-color: #ddd; -} -.select2-container--default .select2-results__option[aria-selected=true], -.select2-container--default .select2-results__option[aria-selected=true]:hover { - color: #444; -} -.select2-container--default .select2-selection--multiple { - border: 1px solid #d2d6de; - border-radius: 0; -} -.select2-container--default .select2-selection--multiple:focus { - border-color: #3c8dbc; -} -.select2-container--default.select2-container--focus .select2-selection--multiple { - border-color: #d2d6de; -} -.select2-container--default .select2-selection--multiple .select2-selection__choice { - background-color: #3c8dbc; - border-color: #367fa9; - padding: 1px 10px; - color: #fff; -} -.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { - margin-right: 5px; - color: rgba(255, 255, 255, 0.7); -} -.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { - color: #fff; -} -.select2-container .select2-selection--single .select2-selection__rendered { - padding-right: 10px; -} -/* - * General: Miscellaneous - * ---------------------- - */ -.pad { - padding: 10px; -} -.margin { - margin: 10px; -} -.margin-bottom { - margin-bottom: 20px; -} -.margin-bottom-none { - margin-bottom: 0; -} -.margin-r-5 { - margin-right: 5px; -} -.inline { - display: inline; -} -.description-block { - display: block; - margin: 10px 0; - text-align: center; -} -.description-block.margin-bottom { - margin-bottom: 25px; -} -.description-block > .description-header { - margin: 0; - padding: 0; - font-weight: 600; - font-size: 16px; -} -.description-block > .description-text { - text-transform: uppercase; -} -.bg-red, -.bg-yellow, -.bg-aqua, -.bg-blue, -.bg-light-blue, -.bg-green, -.bg-navy, -.bg-teal, -.bg-olive, -.bg-lime, -.bg-orange, -.bg-fuchsia, -.bg-purple, -.bg-maroon, -.bg-black, -.bg-red-active, -.bg-yellow-active, -.bg-aqua-active, -.bg-blue-active, -.bg-light-blue-active, -.bg-green-active, -.bg-navy-active, -.bg-teal-active, -.bg-olive-active, -.bg-lime-active, -.bg-orange-active, -.bg-fuchsia-active, -.bg-purple-active, -.bg-maroon-active, -.bg-black-active, -.callout.callout-danger, -.callout.callout-warning, -.callout.callout-info, -.callout.callout-success, -.alert-success, -.alert-danger, -.alert-error, -.alert-warning, -.alert-info, -.label-danger, -.label-info, -.label-warning, -.label-primary, -.label-success, -.modal-primary .modal-body, -.modal-primary .modal-header, -.modal-primary .modal-footer, -.modal-warning .modal-body, -.modal-warning .modal-header, -.modal-warning .modal-footer, -.modal-info .modal-body, -.modal-info .modal-header, -.modal-info .modal-footer, -.modal-success .modal-body, -.modal-success .modal-header, -.modal-success .modal-footer, -.modal-danger .modal-body, -.modal-danger .modal-header, -.modal-danger .modal-footer { - color: #fff !important; -} -.bg-gray { - color: #000; - background-color: #d2d6de !important; -} -.bg-gray-light { - background-color: #f7f7f7; -} -.bg-black { - background-color: #111111 !important; -} -.bg-red, -.callout.callout-danger, -.alert-danger, -.alert-error, -.label-danger, -.modal-danger .modal-body { - background-color: #dd4b39 !important; -} -.bg-yellow, -.callout.callout-warning, -.alert-warning, -.label-warning, -.modal-warning .modal-body { - background-color: #f39c12 !important; -} -.bg-aqua, -.callout.callout-info, -.alert-info, -.label-info, -.modal-info .modal-body { - background-color: #00c0ef !important; -} -.bg-blue { - background-color: #0073b7 !important; -} -.bg-light-blue, -.label-primary, -.modal-primary .modal-body { - background-color: #3c8dbc !important; -} -.bg-green, -.callout.callout-success, -.alert-success, -.label-success, -.modal-success .modal-body { - background-color: #00a65a !important; -} -.bg-navy { - background-color: #001f3f !important; -} -.bg-teal { - background-color: #39cccc !important; -} -.bg-olive { - background-color: #3d9970 !important; -} -.bg-lime { - background-color: #01ff70 !important; -} -.bg-orange { - background-color: #ff851b !important; -} -.bg-fuchsia { - background-color: #f012be !important; -} -.bg-purple { - background-color: #605ca8 !important; -} -.bg-maroon { - background-color: #d81b60 !important; -} -.bg-gray-active { - color: #000; - background-color: #b5bbc8 !important; -} -.bg-black-active { - background-color: #000000 !important; -} -.bg-red-active, -.modal-danger .modal-header, -.modal-danger .modal-footer { - background-color: #d33724 !important; -} -.bg-yellow-active, -.modal-warning .modal-header, -.modal-warning .modal-footer { - background-color: #db8b0b !important; -} -.bg-aqua-active, -.modal-info .modal-header, -.modal-info .modal-footer { - background-color: #00a7d0 !important; -} -.bg-blue-active { - background-color: #005384 !important; -} -.bg-light-blue-active, -.modal-primary .modal-header, -.modal-primary .modal-footer { - background-color: #357ca5 !important; -} -.bg-green-active, -.modal-success .modal-header, -.modal-success .modal-footer { - background-color: #008d4c !important; -} -.bg-navy-active { - background-color: #001a35 !important; -} -.bg-teal-active { - background-color: #30bbbb !important; -} -.bg-olive-active { - background-color: #368763 !important; -} -.bg-lime-active { - background-color: #00e765 !important; -} -.bg-orange-active { - background-color: #ff7701 !important; -} -.bg-fuchsia-active { - background-color: #db0ead !important; -} -.bg-purple-active { - background-color: #555299 !important; -} -.bg-maroon-active { - background-color: #ca195a !important; -} -[class^="bg-"].disabled { - opacity: 0.65; - filter: alpha(opacity=65); -} -.text-red { - color: #dd4b39 !important; -} -.text-yellow { - color: #f39c12 !important; -} -.text-aqua { - color: #00c0ef !important; -} -.text-blue { - color: #0073b7 !important; -} -.text-black { - color: #111111 !important; -} -.text-light-blue { - color: #3c8dbc !important; -} -.text-green { - color: #00a65a !important; -} -.text-gray { - color: #d2d6de !important; -} -.text-navy { - color: #001f3f !important; -} -.text-teal { - color: #39cccc !important; -} -.text-olive { - color: #3d9970 !important; -} -.text-lime { - color: #01ff70 !important; -} -.text-orange { - color: #ff851b !important; -} -.text-fuchsia { - color: #f012be !important; -} -.text-purple { - color: #605ca8 !important; -} -.text-maroon { - color: #d81b60 !important; -} -.link-muted { - color: #7a869d; -} -.link-muted:hover, -.link-muted:focus { - color: #606c84; -} -.link-black { - color: #666; -} -.link-black:hover, -.link-black:focus { - color: #999; -} -.hide { - display: none !important; -} -.no-border { - border: 0 !important; -} -.no-padding { - padding: 0 !important; -} -.no-margin { - margin: 0 !important; -} -.no-shadow { - box-shadow: none !important; -} -.list-unstyled, -.chart-legend, -.contacts-list, -.users-list, -.mailbox-attachments { - list-style: none; - margin: 0; - padding: 0; -} -.list-group-unbordered > .list-group-item { - border-left: 0; - border-right: 0; - border-radius: 0; - padding-left: 0; - padding-right: 0; -} -.flat { - border-radius: 0 !important; -} -.text-bold, -.text-bold.table td, -.text-bold.table th { - font-weight: 700; -} -.text-sm { - font-size: 12px; -} -.jqstooltip { - padding: 5px !important; - width: auto !important; - height: auto !important; -} -.bg-teal-gradient { - background: #39cccc !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #39cccc), color-stop(1, #7adddd)) !important; - background: -ms-linear-gradient(bottom, #39cccc, #7adddd) !important; - background: -moz-linear-gradient(center bottom, #39cccc 0%, #7adddd 100%) !important; - background: -o-linear-gradient(#7adddd, #39cccc) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39cccc', GradientType=0) !important; - color: #fff; -} -.bg-light-blue-gradient { - background: #3c8dbc !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #3c8dbc), color-stop(1, #67a8ce)) !important; - background: -ms-linear-gradient(bottom, #3c8dbc, #67a8ce) !important; - background: -moz-linear-gradient(center bottom, #3c8dbc 0%, #67a8ce 100%) !important; - background: -o-linear-gradient(#67a8ce, #3c8dbc) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce', endColorstr='#3c8dbc', GradientType=0) !important; - color: #fff; -} -.bg-blue-gradient { - background: #0073b7 !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #0073b7), color-stop(1, #0089db)) !important; - background: -ms-linear-gradient(bottom, #0073b7, #0089db) !important; - background: -moz-linear-gradient(center bottom, #0073b7 0%, #0089db 100%) !important; - background: -o-linear-gradient(#0089db, #0073b7) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db', endColorstr='#0073b7', GradientType=0) !important; - color: #fff; -} -.bg-aqua-gradient { - background: #00c0ef !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00c0ef), color-stop(1, #14d1ff)) !important; - background: -ms-linear-gradient(bottom, #00c0ef, #14d1ff) !important; - background: -moz-linear-gradient(center bottom, #00c0ef 0%, #14d1ff 100%) !important; - background: -o-linear-gradient(#14d1ff, #00c0ef) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#14d1ff', endColorstr='#00c0ef', GradientType=0) !important; - color: #fff; -} -.bg-yellow-gradient { - background: #f39c12 !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important; - background: -ms-linear-gradient(bottom, #f39c12, #f7bc60) !important; - background: -moz-linear-gradient(center bottom, #f39c12 0%, #f7bc60 100%) !important; - background: -o-linear-gradient(#f7bc60, #f39c12) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important; - color: #fff; -} -.bg-purple-gradient { - background: #605ca8 !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #605ca8), color-stop(1, #9491c4)) !important; - background: -ms-linear-gradient(bottom, #605ca8, #9491c4) !important; - background: -moz-linear-gradient(center bottom, #605ca8 0%, #9491c4 100%) !important; - background: -o-linear-gradient(#9491c4, #605ca8) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4', endColorstr='#605ca8', GradientType=0) !important; - color: #fff; -} -.bg-green-gradient { - background: #00a65a !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00a65a), color-stop(1, #00ca6d)) !important; - background: -ms-linear-gradient(bottom, #00a65a, #00ca6d) !important; - background: -moz-linear-gradient(center bottom, #00a65a 0%, #00ca6d 100%) !important; - background: -o-linear-gradient(#00ca6d, #00a65a) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ca6d', endColorstr='#00a65a', GradientType=0) !important; - color: #fff; -} -.bg-red-gradient { - background: #dd4b39 !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #dd4b39), color-stop(1, #e47365)) !important; - background: -ms-linear-gradient(bottom, #dd4b39, #e47365) !important; - background: -moz-linear-gradient(center bottom, #dd4b39 0%, #e47365 100%) !important; - background: -o-linear-gradient(#e47365, #dd4b39) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e47365', endColorstr='#dd4b39', GradientType=0) !important; - color: #fff; -} -.bg-black-gradient { - background: #111111 !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #111111), color-stop(1, #2b2b2b)) !important; - background: -ms-linear-gradient(bottom, #111111, #2b2b2b) !important; - background: -moz-linear-gradient(center bottom, #111111 0%, #2b2b2b 100%) !important; - background: -o-linear-gradient(#2b2b2b, #111111) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b', endColorstr='#111111', GradientType=0) !important; - color: #fff; -} -.bg-maroon-gradient { - background: #d81b60 !important; - background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #d81b60), color-stop(1, #e73f7c)) !important; - background: -ms-linear-gradient(bottom, #d81b60, #e73f7c) !important; - background: -moz-linear-gradient(center bottom, #d81b60 0%, #e73f7c 100%) !important; - background: -o-linear-gradient(#e73f7c, #d81b60) !important; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c', endColorstr='#d81b60', GradientType=0) !important; - color: #fff; -} -.description-block .description-icon { - font-size: 16px; -} -.no-pad-top { - padding-top: 0; -} -.position-static { - position: static !important; -} -.list-header { - font-size: 15px; - padding: 10px 4px; - font-weight: bold; - color: #666; -} -.list-seperator { - height: 1px; - background: #f4f4f4; - margin: 15px 0 9px 0; -} -.list-link > a { - padding: 4px; - color: #777; -} -.list-link > a:hover { - color: #222; -} -.font-light { - font-weight: 300; -} -.user-block:before, -.user-block:after { - content: " "; - display: table; -} -.user-block:after { - clear: both; -} -.user-block img { - width: 40px; - height: 40px; - float: left; -} -.user-block .username, -.user-block .description, -.user-block .comment { - display: block; - margin-left: 50px; -} -.user-block .username { - font-size: 16px; - font-weight: 600; -} -.user-block .description { - color: #999; - font-size: 13px; -} -.user-block.user-block-sm .username, -.user-block.user-block-sm .description, -.user-block.user-block-sm .comment { - margin-left: 40px; -} -.user-block.user-block-sm .username { - font-size: 14px; -} -.img-sm, -.img-md, -.img-lg, -.box-comments .box-comment img, -.user-block.user-block-sm img { - float: left; -} -.img-sm, -.box-comments .box-comment img, -.user-block.user-block-sm img { - width: 30px !important; - height: 30px !important; -} -.img-sm + .img-push { - margin-left: 40px; -} -.img-md { - width: 60px; - height: 60px; -} -.img-md + .img-push { - margin-left: 70px; -} -.img-lg { - width: 100px; - height: 100px; -} -.img-lg + .img-push { - margin-left: 110px; -} -.img-bordered { - border: 3px solid #d2d6de; - padding: 3px; -} -.img-bordered-sm { - border: 2px solid #d2d6de; - padding: 2px; -} -.attachment-block { - border: 1px solid #f4f4f4; - padding: 5px; - margin-bottom: 10px; - background: #f7f7f7; -} -.attachment-block .attachment-img { - max-width: 100px; - max-height: 100px; - height: auto; - float: left; -} -.attachment-block .attachment-pushed { - margin-left: 110px; -} -.attachment-block .attachment-heading { - margin: 0; -} -.attachment-block .attachment-text { - color: #555; -} -.connectedSortable { - min-height: 100px; -} -.ui-helper-hidden-accessible { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} -.sort-highlight { - background: #f4f4f4; - border: 1px dashed #ddd; - margin-bottom: 10px; -} -.full-opacity-hover { - opacity: 0.65; - filter: alpha(opacity=65); -} -.full-opacity-hover:hover { - opacity: 1; - filter: alpha(opacity=100); -} -.chart { - position: relative; - overflow: hidden; - width: 100%; -} -.chart svg, -.chart canvas { - width: 100% !important; -} -/* - * Misc: print - * ----------- - */ -@media print { - .no-print, - .main-sidebar, - .left-side, - .main-header, - .content-header { - display: none !important; - } - .content-wrapper, - .right-side, - .main-footer { - margin-left: 0 !important; - min-height: 0 !important; - -webkit-transform: translate(0, 0) !important; - -ms-transform: translate(0, 0) !important; - -o-transform: translate(0, 0) !important; - transform: translate(0, 0) !important; - } - .fixed .content-wrapper, - .fixed .right-side { - padding-top: 0 !important; - } - .invoice { - width: 100%; - border: 0; - margin: 0; - padding: 0; - } - .invoice-col { - float: left; - width: 33.3333333%; - } - .table-responsive { - overflow: auto; - } - .table-responsive > .table tr th, - .table-responsive > .table tr td { - white-space: normal !important; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/_all-skins.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/_all-skins.css deleted file mode 100644 index 53577c491dd4..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/_all-skins.css +++ /dev/null @@ -1,1770 +0,0 @@ -/* - * Skin: Blue - * ---------- - */ -.skin-blue .main-header .navbar { - background-color: #3c8dbc; -} -.skin-blue .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-blue .main-header .navbar .nav > li > a:hover, -.skin-blue .main-header .navbar .nav > li > a:active, -.skin-blue .main-header .navbar .nav > li > a:focus, -.skin-blue .main-header .navbar .nav .open > a, -.skin-blue .main-header .navbar .nav .open > a:hover, -.skin-blue .main-header .navbar .nav .open > a:focus, -.skin-blue .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-blue .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-blue .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-blue .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-blue .main-header .navbar .sidebar-toggle:hover { - background-color: #367fa9; -} -@media (max-width: 767px) { - .skin-blue .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-blue .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-blue .main-header .navbar .dropdown-menu li a:hover { - background: #367fa9; - } -} -.skin-blue .main-header .logo { - background-color: #367fa9; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-blue .main-header .logo:hover { - background-color: #357ca5; -} -.skin-blue .main-header li.user-header { - background-color: #3c8dbc; -} -.skin-blue .content-header { - background: transparent; -} -.skin-blue .wrapper, -.skin-blue .main-sidebar, -.skin-blue .left-side { - background-color: #222d32; -} -.skin-blue .user-panel > .info, -.skin-blue .user-panel > .info > a { - color: #fff; -} -.skin-blue .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-blue .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-blue .sidebar-menu > li:hover > a, -.skin-blue .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #3c8dbc; -} -.skin-blue .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-blue .sidebar a { - color: #b8c7ce; -} -.skin-blue .sidebar a:hover { - text-decoration: none; -} -.skin-blue .treeview-menu > li > a { - color: #8aa4af; -} -.skin-blue .treeview-menu > li.active > a, -.skin-blue .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-blue .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-blue .sidebar-form input[type="text"], -.skin-blue .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} -.skin-blue .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-blue .sidebar-form input[type="text"]:focus, -.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-blue .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -.skin-blue.layout-top-nav .main-header > .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-blue.layout-top-nav .main-header > .logo:hover { - background-color: #3b8ab8; -} -/* - * Skin: Blue - * ---------- - */ -.skin-blue-light .main-header .navbar { - background-color: #3c8dbc; -} -.skin-blue-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-blue-light .main-header .navbar .nav > li > a:hover, -.skin-blue-light .main-header .navbar .nav > li > a:active, -.skin-blue-light .main-header .navbar .nav > li > a:focus, -.skin-blue-light .main-header .navbar .nav .open > a, -.skin-blue-light .main-header .navbar .nav .open > a:hover, -.skin-blue-light .main-header .navbar .nav .open > a:focus, -.skin-blue-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-blue-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-blue-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-blue-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-blue-light .main-header .navbar .sidebar-toggle:hover { - background-color: #367fa9; -} -@media (max-width: 767px) { - .skin-blue-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-blue-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-blue-light .main-header .navbar .dropdown-menu li a:hover { - background: #367fa9; - } -} -.skin-blue-light .main-header .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-blue-light .main-header .logo:hover { - background-color: #3b8ab8; -} -.skin-blue-light .main-header li.user-header { - background-color: #3c8dbc; -} -.skin-blue-light .content-header { - background: transparent; -} -.skin-blue-light .wrapper, -.skin-blue-light .main-sidebar, -.skin-blue-light .left-side { - background-color: #f9fafc; -} -.skin-blue-light .content-wrapper, -.skin-blue-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-blue-light .user-panel > .info, -.skin-blue-light .user-panel > .info > a { - color: #444444; -} -.skin-blue-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-blue-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-blue-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-blue-light .sidebar-menu > li:hover > a, -.skin-blue-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-blue-light .sidebar-menu > li.active { - border-left-color: #3c8dbc; -} -.skin-blue-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-blue-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-blue-light .sidebar a { - color: #444444; -} -.skin-blue-light .sidebar a:hover { - text-decoration: none; -} -.skin-blue-light .treeview-menu > li > a { - color: #777777; -} -.skin-blue-light .treeview-menu > li.active > a, -.skin-blue-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-blue-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-blue-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-blue-light .sidebar-form input[type="text"], -.skin-blue-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} -.skin-blue-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-blue-light .sidebar-form input[type="text"]:focus, -.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-blue-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -@media (min-width: 768px) { - .skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} -.skin-blue-light .main-footer { - border-top-color: #d2d6de; -} -.skin-blue.layout-top-nav .main-header > .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-blue.layout-top-nav .main-header > .logo:hover { - background-color: #3b8ab8; -} -/* - * Skin: Black - * ----------- - */ -/* skin-black navbar */ -.skin-black .main-header { - -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); -} -.skin-black .main-header .navbar-toggle { - color: #333; -} -.skin-black .main-header .navbar-brand { - color: #333; - border-right: 1px solid #eee; -} -.skin-black .main-header .navbar { - background-color: #ffffff; -} -.skin-black .main-header .navbar .nav > li > a { - color: #333333; -} -.skin-black .main-header .navbar .nav > li > a:hover, -.skin-black .main-header .navbar .nav > li > a:active, -.skin-black .main-header .navbar .nav > li > a:focus, -.skin-black .main-header .navbar .nav .open > a, -.skin-black .main-header .navbar .nav .open > a:hover, -.skin-black .main-header .navbar .nav .open > a:focus, -.skin-black .main-header .navbar .nav > .active > a { - background: #ffffff; - color: #999999; -} -.skin-black .main-header .navbar .sidebar-toggle { - color: #333333; -} -.skin-black .main-header .navbar .sidebar-toggle:hover { - color: #999999; - background: #ffffff; -} -.skin-black .main-header .navbar > .sidebar-toggle { - color: #333; - border-right: 1px solid #eee; -} -.skin-black .main-header .navbar .navbar-nav > li > a { - border-right: 1px solid #eee; -} -.skin-black .main-header .navbar .navbar-custom-menu .navbar-nav > li > a, -.skin-black .main-header .navbar .navbar-right > li > a { - border-left: 1px solid #eee; - border-right-width: 0; -} -.skin-black .main-header > .logo { - background-color: #ffffff; - color: #333333; - border-bottom: 0 solid transparent; - border-right: 1px solid #eee; -} -.skin-black .main-header > .logo:hover { - background-color: #fcfcfc; -} -@media (max-width: 767px) { - .skin-black .main-header > .logo { - background-color: #222222; - color: #ffffff; - border-bottom: 0 solid transparent; - border-right: none; - } - .skin-black .main-header > .logo:hover { - background-color: #1f1f1f; - } -} -.skin-black .main-header li.user-header { - background-color: #222; -} -.skin-black .content-header { - background: transparent; - box-shadow: none; -} -.skin-black .wrapper, -.skin-black .main-sidebar, -.skin-black .left-side { - background-color: #222d32; -} -.skin-black .user-panel > .info, -.skin-black .user-panel > .info > a { - color: #fff; -} -.skin-black .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-black .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-black .sidebar-menu > li:hover > a, -.skin-black .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #ffffff; -} -.skin-black .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-black .sidebar a { - color: #b8c7ce; -} -.skin-black .sidebar a:hover { - text-decoration: none; -} -.skin-black .treeview-menu > li > a { - color: #8aa4af; -} -.skin-black .treeview-menu > li.active > a, -.skin-black .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-black .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-black .sidebar-form input[type="text"], -.skin-black .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} -.skin-black .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-black .sidebar-form input[type="text"]:focus, -.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-black .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -.skin-black .pace .pace-progress { - background: #222; -} -.skin-black .pace .pace-activity { - border-top-color: #222; - border-left-color: #222; -} -/* - * Skin: Black - * ----------- - */ -/* skin-black navbar */ -.skin-black-light .main-header { - -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); -} -.skin-black-light .main-header .navbar-toggle { - color: #333; -} -.skin-black-light .main-header .navbar-brand { - color: #333; - border-right: 1px solid #eee; -} -.skin-black-light .main-header .navbar { - background-color: #ffffff; -} -.skin-black-light .main-header .navbar .nav > li > a { - color: #333333; -} -.skin-black-light .main-header .navbar .nav > li > a:hover, -.skin-black-light .main-header .navbar .nav > li > a:active, -.skin-black-light .main-header .navbar .nav > li > a:focus, -.skin-black-light .main-header .navbar .nav .open > a, -.skin-black-light .main-header .navbar .nav .open > a:hover, -.skin-black-light .main-header .navbar .nav .open > a:focus, -.skin-black-light .main-header .navbar .nav > .active > a { - background: #ffffff; - color: #999999; -} -.skin-black-light .main-header .navbar .sidebar-toggle { - color: #333333; -} -.skin-black-light .main-header .navbar .sidebar-toggle:hover { - color: #999999; - background: #ffffff; -} -.skin-black-light .main-header .navbar > .sidebar-toggle { - color: #333; - border-right: 1px solid #eee; -} -.skin-black-light .main-header .navbar .navbar-nav > li > a { - border-right: 1px solid #eee; -} -.skin-black-light .main-header .navbar .navbar-custom-menu .navbar-nav > li > a, -.skin-black-light .main-header .navbar .navbar-right > li > a { - border-left: 1px solid #eee; - border-right-width: 0; -} -.skin-black-light .main-header > .logo { - background-color: #ffffff; - color: #333333; - border-bottom: 0 solid transparent; - border-right: 1px solid #eee; -} -.skin-black-light .main-header > .logo:hover { - background-color: #fcfcfc; -} -@media (max-width: 767px) { - .skin-black-light .main-header > .logo { - background-color: #222222; - color: #ffffff; - border-bottom: 0 solid transparent; - border-right: none; - } - .skin-black-light .main-header > .logo:hover { - background-color: #1f1f1f; - } -} -.skin-black-light .main-header li.user-header { - background-color: #222; -} -.skin-black-light .content-header { - background: transparent; - box-shadow: none; -} -.skin-black-light .wrapper, -.skin-black-light .main-sidebar, -.skin-black-light .left-side { - background-color: #f9fafc; -} -.skin-black-light .content-wrapper, -.skin-black-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-black-light .user-panel > .info, -.skin-black-light .user-panel > .info > a { - color: #444444; -} -.skin-black-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-black-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-black-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-black-light .sidebar-menu > li:hover > a, -.skin-black-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-black-light .sidebar-menu > li.active { - border-left-color: #ffffff; -} -.skin-black-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-black-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-black-light .sidebar a { - color: #444444; -} -.skin-black-light .sidebar a:hover { - text-decoration: none; -} -.skin-black-light .treeview-menu > li > a { - color: #777777; -} -.skin-black-light .treeview-menu > li.active > a, -.skin-black-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-black-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-black-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-black-light .sidebar-form input[type="text"], -.skin-black-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} -.skin-black-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-black-light .sidebar-form input[type="text"]:focus, -.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-black-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -@media (min-width: 768px) { - .skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} -/* - * Skin: Green - * ----------- - */ -.skin-green .main-header .navbar { - background-color: #00a65a; -} -.skin-green .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-green .main-header .navbar .nav > li > a:hover, -.skin-green .main-header .navbar .nav > li > a:active, -.skin-green .main-header .navbar .nav > li > a:focus, -.skin-green .main-header .navbar .nav .open > a, -.skin-green .main-header .navbar .nav .open > a:hover, -.skin-green .main-header .navbar .nav .open > a:focus, -.skin-green .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-green .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-green .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-green .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-green .main-header .navbar .sidebar-toggle:hover { - background-color: #008d4c; -} -@media (max-width: 767px) { - .skin-green .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-green .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-green .main-header .navbar .dropdown-menu li a:hover { - background: #008d4c; - } -} -.skin-green .main-header .logo { - background-color: #008d4c; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-green .main-header .logo:hover { - background-color: #008749; -} -.skin-green .main-header li.user-header { - background-color: #00a65a; -} -.skin-green .content-header { - background: transparent; -} -.skin-green .wrapper, -.skin-green .main-sidebar, -.skin-green .left-side { - background-color: #222d32; -} -.skin-green .user-panel > .info, -.skin-green .user-panel > .info > a { - color: #fff; -} -.skin-green .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-green .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-green .sidebar-menu > li:hover > a, -.skin-green .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #00a65a; -} -.skin-green .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-green .sidebar a { - color: #b8c7ce; -} -.skin-green .sidebar a:hover { - text-decoration: none; -} -.skin-green .treeview-menu > li > a { - color: #8aa4af; -} -.skin-green .treeview-menu > li.active > a, -.skin-green .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-green .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-green .sidebar-form input[type="text"], -.skin-green .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} -.skin-green .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-green .sidebar-form input[type="text"]:focus, -.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-green .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -/* - * Skin: Green - * ----------- - */ -.skin-green-light .main-header .navbar { - background-color: #00a65a; -} -.skin-green-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-green-light .main-header .navbar .nav > li > a:hover, -.skin-green-light .main-header .navbar .nav > li > a:active, -.skin-green-light .main-header .navbar .nav > li > a:focus, -.skin-green-light .main-header .navbar .nav .open > a, -.skin-green-light .main-header .navbar .nav .open > a:hover, -.skin-green-light .main-header .navbar .nav .open > a:focus, -.skin-green-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-green-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-green-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-green-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-green-light .main-header .navbar .sidebar-toggle:hover { - background-color: #008d4c; -} -@media (max-width: 767px) { - .skin-green-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-green-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-green-light .main-header .navbar .dropdown-menu li a:hover { - background: #008d4c; - } -} -.skin-green-light .main-header .logo { - background-color: #00a65a; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-green-light .main-header .logo:hover { - background-color: #00a157; -} -.skin-green-light .main-header li.user-header { - background-color: #00a65a; -} -.skin-green-light .content-header { - background: transparent; -} -.skin-green-light .wrapper, -.skin-green-light .main-sidebar, -.skin-green-light .left-side { - background-color: #f9fafc; -} -.skin-green-light .content-wrapper, -.skin-green-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-green-light .user-panel > .info, -.skin-green-light .user-panel > .info > a { - color: #444444; -} -.skin-green-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-green-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-green-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-green-light .sidebar-menu > li:hover > a, -.skin-green-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-green-light .sidebar-menu > li.active { - border-left-color: #00a65a; -} -.skin-green-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-green-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-green-light .sidebar a { - color: #444444; -} -.skin-green-light .sidebar a:hover { - text-decoration: none; -} -.skin-green-light .treeview-menu > li > a { - color: #777777; -} -.skin-green-light .treeview-menu > li.active > a, -.skin-green-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-green-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-green-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-green-light .sidebar-form input[type="text"], -.skin-green-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} -.skin-green-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-green-light .sidebar-form input[type="text"]:focus, -.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-green-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -@media (min-width: 768px) { - .skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} -/* - * Skin: Red - * --------- - */ -.skin-red .main-header .navbar { - background-color: #dd4b39; -} -.skin-red .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-red .main-header .navbar .nav > li > a:hover, -.skin-red .main-header .navbar .nav > li > a:active, -.skin-red .main-header .navbar .nav > li > a:focus, -.skin-red .main-header .navbar .nav .open > a, -.skin-red .main-header .navbar .nav .open > a:hover, -.skin-red .main-header .navbar .nav .open > a:focus, -.skin-red .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-red .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-red .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-red .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-red .main-header .navbar .sidebar-toggle:hover { - background-color: #d73925; -} -@media (max-width: 767px) { - .skin-red .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-red .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-red .main-header .navbar .dropdown-menu li a:hover { - background: #d73925; - } -} -.skin-red .main-header .logo { - background-color: #d73925; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-red .main-header .logo:hover { - background-color: #d33724; -} -.skin-red .main-header li.user-header { - background-color: #dd4b39; -} -.skin-red .content-header { - background: transparent; -} -.skin-red .wrapper, -.skin-red .main-sidebar, -.skin-red .left-side { - background-color: #222d32; -} -.skin-red .user-panel > .info, -.skin-red .user-panel > .info > a { - color: #fff; -} -.skin-red .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-red .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-red .sidebar-menu > li:hover > a, -.skin-red .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #dd4b39; -} -.skin-red .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-red .sidebar a { - color: #b8c7ce; -} -.skin-red .sidebar a:hover { - text-decoration: none; -} -.skin-red .treeview-menu > li > a { - color: #8aa4af; -} -.skin-red .treeview-menu > li.active > a, -.skin-red .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-red .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-red .sidebar-form input[type="text"], -.skin-red .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} -.skin-red .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-red .sidebar-form input[type="text"]:focus, -.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-red .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -/* - * Skin: Red - * --------- - */ -.skin-red-light .main-header .navbar { - background-color: #dd4b39; -} -.skin-red-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-red-light .main-header .navbar .nav > li > a:hover, -.skin-red-light .main-header .navbar .nav > li > a:active, -.skin-red-light .main-header .navbar .nav > li > a:focus, -.skin-red-light .main-header .navbar .nav .open > a, -.skin-red-light .main-header .navbar .nav .open > a:hover, -.skin-red-light .main-header .navbar .nav .open > a:focus, -.skin-red-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-red-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-red-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-red-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-red-light .main-header .navbar .sidebar-toggle:hover { - background-color: #d73925; -} -@media (max-width: 767px) { - .skin-red-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-red-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-red-light .main-header .navbar .dropdown-menu li a:hover { - background: #d73925; - } -} -.skin-red-light .main-header .logo { - background-color: #dd4b39; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-red-light .main-header .logo:hover { - background-color: #dc4735; -} -.skin-red-light .main-header li.user-header { - background-color: #dd4b39; -} -.skin-red-light .content-header { - background: transparent; -} -.skin-red-light .wrapper, -.skin-red-light .main-sidebar, -.skin-red-light .left-side { - background-color: #f9fafc; -} -.skin-red-light .content-wrapper, -.skin-red-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-red-light .user-panel > .info, -.skin-red-light .user-panel > .info > a { - color: #444444; -} -.skin-red-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-red-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-red-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-red-light .sidebar-menu > li:hover > a, -.skin-red-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-red-light .sidebar-menu > li.active { - border-left-color: #dd4b39; -} -.skin-red-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-red-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-red-light .sidebar a { - color: #444444; -} -.skin-red-light .sidebar a:hover { - text-decoration: none; -} -.skin-red-light .treeview-menu > li > a { - color: #777777; -} -.skin-red-light .treeview-menu > li.active > a, -.skin-red-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-red-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-red-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-red-light .sidebar-form input[type="text"], -.skin-red-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} -.skin-red-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-red-light .sidebar-form input[type="text"]:focus, -.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-red-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -@media (min-width: 768px) { - .skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} -/* - * Skin: Yellow - * ------------ - */ -.skin-yellow .main-header .navbar { - background-color: #f39c12; -} -.skin-yellow .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-yellow .main-header .navbar .nav > li > a:hover, -.skin-yellow .main-header .navbar .nav > li > a:active, -.skin-yellow .main-header .navbar .nav > li > a:focus, -.skin-yellow .main-header .navbar .nav .open > a, -.skin-yellow .main-header .navbar .nav .open > a:hover, -.skin-yellow .main-header .navbar .nav .open > a:focus, -.skin-yellow .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-yellow .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-yellow .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-yellow .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-yellow .main-header .navbar .sidebar-toggle:hover { - background-color: #e08e0b; -} -@media (max-width: 767px) { - .skin-yellow .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-yellow .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-yellow .main-header .navbar .dropdown-menu li a:hover { - background: #e08e0b; - } -} -.skin-yellow .main-header .logo { - background-color: #e08e0b; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-yellow .main-header .logo:hover { - background-color: #db8b0b; -} -.skin-yellow .main-header li.user-header { - background-color: #f39c12; -} -.skin-yellow .content-header { - background: transparent; -} -.skin-yellow .wrapper, -.skin-yellow .main-sidebar, -.skin-yellow .left-side { - background-color: #222d32; -} -.skin-yellow .user-panel > .info, -.skin-yellow .user-panel > .info > a { - color: #fff; -} -.skin-yellow .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-yellow .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-yellow .sidebar-menu > li:hover > a, -.skin-yellow .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #f39c12; -} -.skin-yellow .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-yellow .sidebar a { - color: #b8c7ce; -} -.skin-yellow .sidebar a:hover { - text-decoration: none; -} -.skin-yellow .treeview-menu > li > a { - color: #8aa4af; -} -.skin-yellow .treeview-menu > li.active > a, -.skin-yellow .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-yellow .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-yellow .sidebar-form input[type="text"], -.skin-yellow .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} -.skin-yellow .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-yellow .sidebar-form input[type="text"]:focus, -.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-yellow .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -/* - * Skin: Yellow - * ------------ - */ -.skin-yellow-light .main-header .navbar { - background-color: #f39c12; -} -.skin-yellow-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-yellow-light .main-header .navbar .nav > li > a:hover, -.skin-yellow-light .main-header .navbar .nav > li > a:active, -.skin-yellow-light .main-header .navbar .nav > li > a:focus, -.skin-yellow-light .main-header .navbar .nav .open > a, -.skin-yellow-light .main-header .navbar .nav .open > a:hover, -.skin-yellow-light .main-header .navbar .nav .open > a:focus, -.skin-yellow-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-yellow-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-yellow-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-yellow-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-yellow-light .main-header .navbar .sidebar-toggle:hover { - background-color: #e08e0b; -} -@media (max-width: 767px) { - .skin-yellow-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-yellow-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-yellow-light .main-header .navbar .dropdown-menu li a:hover { - background: #e08e0b; - } -} -.skin-yellow-light .main-header .logo { - background-color: #f39c12; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-yellow-light .main-header .logo:hover { - background-color: #f39a0d; -} -.skin-yellow-light .main-header li.user-header { - background-color: #f39c12; -} -.skin-yellow-light .content-header { - background: transparent; -} -.skin-yellow-light .wrapper, -.skin-yellow-light .main-sidebar, -.skin-yellow-light .left-side { - background-color: #f9fafc; -} -.skin-yellow-light .content-wrapper, -.skin-yellow-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-yellow-light .user-panel > .info, -.skin-yellow-light .user-panel > .info > a { - color: #444444; -} -.skin-yellow-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-yellow-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-yellow-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-yellow-light .sidebar-menu > li:hover > a, -.skin-yellow-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-yellow-light .sidebar-menu > li.active { - border-left-color: #f39c12; -} -.skin-yellow-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-yellow-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-yellow-light .sidebar a { - color: #444444; -} -.skin-yellow-light .sidebar a:hover { - text-decoration: none; -} -.skin-yellow-light .treeview-menu > li > a { - color: #777777; -} -.skin-yellow-light .treeview-menu > li.active > a, -.skin-yellow-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-yellow-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-yellow-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-yellow-light .sidebar-form input[type="text"], -.skin-yellow-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} -.skin-yellow-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-yellow-light .sidebar-form input[type="text"]:focus, -.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-yellow-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -@media (min-width: 768px) { - .skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} -/* - * Skin: Purple - * ------------ - */ -.skin-purple .main-header .navbar { - background-color: #605ca8; -} -.skin-purple .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-purple .main-header .navbar .nav > li > a:hover, -.skin-purple .main-header .navbar .nav > li > a:active, -.skin-purple .main-header .navbar .nav > li > a:focus, -.skin-purple .main-header .navbar .nav .open > a, -.skin-purple .main-header .navbar .nav .open > a:hover, -.skin-purple .main-header .navbar .nav .open > a:focus, -.skin-purple .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-purple .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-purple .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-purple .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-purple .main-header .navbar .sidebar-toggle:hover { - background-color: #555299; -} -@media (max-width: 767px) { - .skin-purple .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-purple .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-purple .main-header .navbar .dropdown-menu li a:hover { - background: #555299; - } -} -.skin-purple .main-header .logo { - background-color: #555299; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-purple .main-header .logo:hover { - background-color: #545096; -} -.skin-purple .main-header li.user-header { - background-color: #605ca8; -} -.skin-purple .content-header { - background: transparent; -} -.skin-purple .wrapper, -.skin-purple .main-sidebar, -.skin-purple .left-side { - background-color: #222d32; -} -.skin-purple .user-panel > .info, -.skin-purple .user-panel > .info > a { - color: #fff; -} -.skin-purple .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-purple .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-purple .sidebar-menu > li:hover > a, -.skin-purple .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #605ca8; -} -.skin-purple .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-purple .sidebar a { - color: #b8c7ce; -} -.skin-purple .sidebar a:hover { - text-decoration: none; -} -.skin-purple .treeview-menu > li > a { - color: #8aa4af; -} -.skin-purple .treeview-menu > li.active > a, -.skin-purple .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-purple .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-purple .sidebar-form input[type="text"], -.skin-purple .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} -.skin-purple .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-purple .sidebar-form input[type="text"]:focus, -.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-purple .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -/* - * Skin: Purple - * ------------ - */ -.skin-purple-light .main-header .navbar { - background-color: #605ca8; -} -.skin-purple-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-purple-light .main-header .navbar .nav > li > a:hover, -.skin-purple-light .main-header .navbar .nav > li > a:active, -.skin-purple-light .main-header .navbar .nav > li > a:focus, -.skin-purple-light .main-header .navbar .nav .open > a, -.skin-purple-light .main-header .navbar .nav .open > a:hover, -.skin-purple-light .main-header .navbar .nav .open > a:focus, -.skin-purple-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-purple-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-purple-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-purple-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-purple-light .main-header .navbar .sidebar-toggle:hover { - background-color: #555299; -} -@media (max-width: 767px) { - .skin-purple-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-purple-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-purple-light .main-header .navbar .dropdown-menu li a:hover { - background: #555299; - } -} -.skin-purple-light .main-header .logo { - background-color: #605ca8; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-purple-light .main-header .logo:hover { - background-color: #5d59a6; -} -.skin-purple-light .main-header li.user-header { - background-color: #605ca8; -} -.skin-purple-light .content-header { - background: transparent; -} -.skin-purple-light .wrapper, -.skin-purple-light .main-sidebar, -.skin-purple-light .left-side { - background-color: #f9fafc; -} -.skin-purple-light .content-wrapper, -.skin-purple-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-purple-light .user-panel > .info, -.skin-purple-light .user-panel > .info > a { - color: #444444; -} -.skin-purple-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-purple-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-purple-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-purple-light .sidebar-menu > li:hover > a, -.skin-purple-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-purple-light .sidebar-menu > li.active { - border-left-color: #605ca8; -} -.skin-purple-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-purple-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-purple-light .sidebar a { - color: #444444; -} -.skin-purple-light .sidebar a:hover { - text-decoration: none; -} -.skin-purple-light .treeview-menu > li > a { - color: #777777; -} -.skin-purple-light .treeview-menu > li.active > a, -.skin-purple-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-purple-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-purple-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-purple-light .sidebar-form input[type="text"], -.skin-purple-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} -.skin-purple-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-purple-light .sidebar-form input[type="text"]:focus, -.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-purple-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -@media (min-width: 768px) { - .skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-black-light.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-black-light.css deleted file mode 100644 index c6a2501ea9af..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-black-light.css +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Skin: Black - * ----------- - */ -/* skin-black navbar */ -.skin-black-light .main-header { - -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); -} -.skin-black-light .main-header .navbar-toggle { - color: #333; -} -.skin-black-light .main-header .navbar-brand { - color: #333; - border-right: 1px solid #eee; -} -.skin-black-light .main-header .navbar { - background-color: #ffffff; -} -.skin-black-light .main-header .navbar .nav > li > a { - color: #333333; -} -.skin-black-light .main-header .navbar .nav > li > a:hover, -.skin-black-light .main-header .navbar .nav > li > a:active, -.skin-black-light .main-header .navbar .nav > li > a:focus, -.skin-black-light .main-header .navbar .nav .open > a, -.skin-black-light .main-header .navbar .nav .open > a:hover, -.skin-black-light .main-header .navbar .nav .open > a:focus, -.skin-black-light .main-header .navbar .nav > .active > a { - background: #ffffff; - color: #999999; -} -.skin-black-light .main-header .navbar .sidebar-toggle { - color: #333333; -} -.skin-black-light .main-header .navbar .sidebar-toggle:hover { - color: #999999; - background: #ffffff; -} -.skin-black-light .main-header .navbar > .sidebar-toggle { - color: #333; - border-right: 1px solid #eee; -} -.skin-black-light .main-header .navbar .navbar-nav > li > a { - border-right: 1px solid #eee; -} -.skin-black-light .main-header .navbar .navbar-custom-menu .navbar-nav > li > a, -.skin-black-light .main-header .navbar .navbar-right > li > a { - border-left: 1px solid #eee; - border-right-width: 0; -} -.skin-black-light .main-header > .logo { - background-color: #ffffff; - color: #333333; - border-bottom: 0 solid transparent; - border-right: 1px solid #eee; -} -.skin-black-light .main-header > .logo:hover { - background-color: #fcfcfc; -} -@media (max-width: 767px) { - .skin-black-light .main-header > .logo { - background-color: #222222; - color: #ffffff; - border-bottom: 0 solid transparent; - border-right: none; - } - .skin-black-light .main-header > .logo:hover { - background-color: #1f1f1f; - } -} -.skin-black-light .main-header li.user-header { - background-color: #222; -} -.skin-black-light .content-header { - background: transparent; - box-shadow: none; -} -.skin-black-light .wrapper, -.skin-black-light .main-sidebar, -.skin-black-light .left-side { - background-color: #f9fafc; -} -.skin-black-light .content-wrapper, -.skin-black-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-black-light .user-panel > .info, -.skin-black-light .user-panel > .info > a { - color: #444444; -} -.skin-black-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-black-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-black-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-black-light .sidebar-menu > li:hover > a, -.skin-black-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-black-light .sidebar-menu > li.active { - border-left-color: #ffffff; -} -.skin-black-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-black-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-black-light .sidebar a { - color: #444444; -} -.skin-black-light .sidebar a:hover { - text-decoration: none; -} -.skin-black-light .treeview-menu > li > a { - color: #777777; -} -.skin-black-light .treeview-menu > li.active > a, -.skin-black-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-black-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-black-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-black-light .sidebar-form input[type="text"], -.skin-black-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} -.skin-black-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-black-light .sidebar-form input[type="text"]:focus, -.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-black-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -@media (min-width: 768px) { - .skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-black.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-black.css deleted file mode 100644 index 977b02e5da32..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-black.css +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Skin: Black - * ----------- - */ -/* skin-black navbar */ -.skin-black .main-header { - -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); -} -.skin-black .main-header .navbar-toggle { - color: #333; -} -.skin-black .main-header .navbar-brand { - color: #333; - border-right: 1px solid #eee; -} -.skin-black .main-header .navbar { - background-color: #ffffff; -} -.skin-black .main-header .navbar .nav > li > a { - color: #333333; -} -.skin-black .main-header .navbar .nav > li > a:hover, -.skin-black .main-header .navbar .nav > li > a:active, -.skin-black .main-header .navbar .nav > li > a:focus, -.skin-black .main-header .navbar .nav .open > a, -.skin-black .main-header .navbar .nav .open > a:hover, -.skin-black .main-header .navbar .nav .open > a:focus, -.skin-black .main-header .navbar .nav > .active > a { - background: #ffffff; - color: #999999; -} -.skin-black .main-header .navbar .sidebar-toggle { - color: #333333; -} -.skin-black .main-header .navbar .sidebar-toggle:hover { - color: #999999; - background: #ffffff; -} -.skin-black .main-header .navbar > .sidebar-toggle { - color: #333; - border-right: 1px solid #eee; -} -.skin-black .main-header .navbar .navbar-nav > li > a { - border-right: 1px solid #eee; -} -.skin-black .main-header .navbar .navbar-custom-menu .navbar-nav > li > a, -.skin-black .main-header .navbar .navbar-right > li > a { - border-left: 1px solid #eee; - border-right-width: 0; -} -.skin-black .main-header > .logo { - background-color: #ffffff; - color: #333333; - border-bottom: 0 solid transparent; - border-right: 1px solid #eee; -} -.skin-black .main-header > .logo:hover { - background-color: #fcfcfc; -} -@media (max-width: 767px) { - .skin-black .main-header > .logo { - background-color: #222222; - color: #ffffff; - border-bottom: 0 solid transparent; - border-right: none; - } - .skin-black .main-header > .logo:hover { - background-color: #1f1f1f; - } -} -.skin-black .main-header li.user-header { - background-color: #222; -} -.skin-black .content-header { - background: transparent; - box-shadow: none; -} -.skin-black .wrapper, -.skin-black .main-sidebar, -.skin-black .left-side { - background-color: #222d32; -} -.skin-black .user-panel > .info, -.skin-black .user-panel > .info > a { - color: #fff; -} -.skin-black .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-black .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-black .sidebar-menu > li:hover > a, -.skin-black .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #ffffff; -} -.skin-black .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-black .sidebar a { - color: #b8c7ce; -} -.skin-black .sidebar a:hover { - text-decoration: none; -} -.skin-black .treeview-menu > li > a { - color: #8aa4af; -} -.skin-black .treeview-menu > li.active > a, -.skin-black .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-black .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-black .sidebar-form input[type="text"], -.skin-black .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} -.skin-black .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-black .sidebar-form input[type="text"]:focus, -.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-black .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -.skin-black .pace .pace-progress { - background: #222; -} -.skin-black .pace .pace-activity { - border-top-color: #222; - border-left-color: #222; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-blue-light.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-blue-light.css deleted file mode 100644 index 7e63a6f12c82..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-blue-light.css +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Skin: Blue - * ---------- - */ -.skin-blue-light .main-header .navbar { - background-color: #3c8dbc; -} -.skin-blue-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-blue-light .main-header .navbar .nav > li > a:hover, -.skin-blue-light .main-header .navbar .nav > li > a:active, -.skin-blue-light .main-header .navbar .nav > li > a:focus, -.skin-blue-light .main-header .navbar .nav .open > a, -.skin-blue-light .main-header .navbar .nav .open > a:hover, -.skin-blue-light .main-header .navbar .nav .open > a:focus, -.skin-blue-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-blue-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-blue-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-blue-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-blue-light .main-header .navbar .sidebar-toggle:hover { - background-color: #367fa9; -} -@media (max-width: 767px) { - .skin-blue-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-blue-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-blue-light .main-header .navbar .dropdown-menu li a:hover { - background: #367fa9; - } -} -.skin-blue-light .main-header .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-blue-light .main-header .logo:hover { - background-color: #3b8ab8; -} -.skin-blue-light .main-header li.user-header { - background-color: #3c8dbc; -} -.skin-blue-light .content-header { - background: transparent; -} -.skin-blue-light .wrapper, -.skin-blue-light .main-sidebar, -.skin-blue-light .left-side { - background-color: #f9fafc; -} -.skin-blue-light .content-wrapper, -.skin-blue-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-blue-light .user-panel > .info, -.skin-blue-light .user-panel > .info > a { - color: #444444; -} -.skin-blue-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-blue-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-blue-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-blue-light .sidebar-menu > li:hover > a, -.skin-blue-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-blue-light .sidebar-menu > li.active { - border-left-color: #3c8dbc; -} -.skin-blue-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-blue-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-blue-light .sidebar a { - color: #444444; -} -.skin-blue-light .sidebar a:hover { - text-decoration: none; -} -.skin-blue-light .treeview-menu > li > a { - color: #777777; -} -.skin-blue-light .treeview-menu > li.active > a, -.skin-blue-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-blue-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-blue-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-blue-light .sidebar-form input[type="text"], -.skin-blue-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} -.skin-blue-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-blue-light .sidebar-form input[type="text"]:focus, -.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-blue-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -@media (min-width: 768px) { - .skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} -.skin-blue-light .main-footer { - border-top-color: #d2d6de; -} -.skin-blue.layout-top-nav .main-header > .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-blue.layout-top-nav .main-header > .logo:hover { - background-color: #3b8ab8; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-blue.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-blue.css deleted file mode 100644 index 603b65f078c3..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-blue.css +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Skin: Blue - * ---------- - */ -.skin-blue .main-header .navbar { - background-color: #3c8dbc; -} -.skin-blue .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-blue .main-header .navbar .nav > li > a:hover, -.skin-blue .main-header .navbar .nav > li > a:active, -.skin-blue .main-header .navbar .nav > li > a:focus, -.skin-blue .main-header .navbar .nav .open > a, -.skin-blue .main-header .navbar .nav .open > a:hover, -.skin-blue .main-header .navbar .nav .open > a:focus, -.skin-blue .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-blue .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-blue .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-blue .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-blue .main-header .navbar .sidebar-toggle:hover { - background-color: #367fa9; -} -@media (max-width: 767px) { - .skin-blue .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-blue .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-blue .main-header .navbar .dropdown-menu li a:hover { - background: #367fa9; - } -} -.skin-blue .main-header .logo { - background-color: #367fa9; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-blue .main-header .logo:hover { - background-color: #357ca5; -} -.skin-blue .main-header li.user-header { - background-color: #3c8dbc; -} -.skin-blue .content-header { - background: transparent; -} -.skin-blue .wrapper, -.skin-blue .main-sidebar, -.skin-blue .left-side { - background-color: #222d32; -} -.skin-blue .user-panel > .info, -.skin-blue .user-panel > .info > a { - color: #fff; -} -.skin-blue .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-blue .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-blue .sidebar-menu > li:hover > a, -.skin-blue .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #3c8dbc; -} -.skin-blue .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-blue .sidebar a { - color: #b8c7ce; -} -.skin-blue .sidebar a:hover { - text-decoration: none; -} -.skin-blue .treeview-menu > li > a { - color: #8aa4af; -} -.skin-blue .treeview-menu > li.active > a, -.skin-blue .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-blue .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-blue .sidebar-form input[type="text"], -.skin-blue .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} -.skin-blue .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-blue .sidebar-form input[type="text"]:focus, -.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-blue .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -.skin-blue.layout-top-nav .main-header > .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-blue.layout-top-nav .main-header > .logo:hover { - background-color: #3b8ab8; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-green-light.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-green-light.css deleted file mode 100644 index b230659208ba..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-green-light.css +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Skin: Green - * ----------- - */ -.skin-green-light .main-header .navbar { - background-color: #00a65a; -} -.skin-green-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-green-light .main-header .navbar .nav > li > a:hover, -.skin-green-light .main-header .navbar .nav > li > a:active, -.skin-green-light .main-header .navbar .nav > li > a:focus, -.skin-green-light .main-header .navbar .nav .open > a, -.skin-green-light .main-header .navbar .nav .open > a:hover, -.skin-green-light .main-header .navbar .nav .open > a:focus, -.skin-green-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-green-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-green-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-green-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-green-light .main-header .navbar .sidebar-toggle:hover { - background-color: #008d4c; -} -@media (max-width: 767px) { - .skin-green-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-green-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-green-light .main-header .navbar .dropdown-menu li a:hover { - background: #008d4c; - } -} -.skin-green-light .main-header .logo { - background-color: #00a65a; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-green-light .main-header .logo:hover { - background-color: #00a157; -} -.skin-green-light .main-header li.user-header { - background-color: #00a65a; -} -.skin-green-light .content-header { - background: transparent; -} -.skin-green-light .wrapper, -.skin-green-light .main-sidebar, -.skin-green-light .left-side { - background-color: #f9fafc; -} -.skin-green-light .content-wrapper, -.skin-green-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-green-light .user-panel > .info, -.skin-green-light .user-panel > .info > a { - color: #444444; -} -.skin-green-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-green-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-green-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-green-light .sidebar-menu > li:hover > a, -.skin-green-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-green-light .sidebar-menu > li.active { - border-left-color: #00a65a; -} -.skin-green-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-green-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-green-light .sidebar a { - color: #444444; -} -.skin-green-light .sidebar a:hover { - text-decoration: none; -} -.skin-green-light .treeview-menu > li > a { - color: #777777; -} -.skin-green-light .treeview-menu > li.active > a, -.skin-green-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-green-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-green-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-green-light .sidebar-form input[type="text"], -.skin-green-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} -.skin-green-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-green-light .sidebar-form input[type="text"]:focus, -.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-green-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -@media (min-width: 768px) { - .skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-green.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-green.css deleted file mode 100644 index ff750ccf0d05..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-green.css +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Skin: Green - * ----------- - */ -.skin-green .main-header .navbar { - background-color: #00a65a; -} -.skin-green .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-green .main-header .navbar .nav > li > a:hover, -.skin-green .main-header .navbar .nav > li > a:active, -.skin-green .main-header .navbar .nav > li > a:focus, -.skin-green .main-header .navbar .nav .open > a, -.skin-green .main-header .navbar .nav .open > a:hover, -.skin-green .main-header .navbar .nav .open > a:focus, -.skin-green .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-green .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-green .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-green .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-green .main-header .navbar .sidebar-toggle:hover { - background-color: #008d4c; -} -@media (max-width: 767px) { - .skin-green .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-green .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-green .main-header .navbar .dropdown-menu li a:hover { - background: #008d4c; - } -} -.skin-green .main-header .logo { - background-color: #008d4c; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-green .main-header .logo:hover { - background-color: #008749; -} -.skin-green .main-header li.user-header { - background-color: #00a65a; -} -.skin-green .content-header { - background: transparent; -} -.skin-green .wrapper, -.skin-green .main-sidebar, -.skin-green .left-side { - background-color: #222d32; -} -.skin-green .user-panel > .info, -.skin-green .user-panel > .info > a { - color: #fff; -} -.skin-green .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-green .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-green .sidebar-menu > li:hover > a, -.skin-green .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #00a65a; -} -.skin-green .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-green .sidebar a { - color: #b8c7ce; -} -.skin-green .sidebar a:hover { - text-decoration: none; -} -.skin-green .treeview-menu > li > a { - color: #8aa4af; -} -.skin-green .treeview-menu > li.active > a, -.skin-green .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-green .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-green .sidebar-form input[type="text"], -.skin-green .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} -.skin-green .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-green .sidebar-form input[type="text"]:focus, -.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-green .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-purple-light.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-purple-light.css deleted file mode 100644 index cfcb148d81e3..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-purple-light.css +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Skin: Purple - * ------------ - */ -.skin-purple-light .main-header .navbar { - background-color: #605ca8; -} -.skin-purple-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-purple-light .main-header .navbar .nav > li > a:hover, -.skin-purple-light .main-header .navbar .nav > li > a:active, -.skin-purple-light .main-header .navbar .nav > li > a:focus, -.skin-purple-light .main-header .navbar .nav .open > a, -.skin-purple-light .main-header .navbar .nav .open > a:hover, -.skin-purple-light .main-header .navbar .nav .open > a:focus, -.skin-purple-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-purple-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-purple-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-purple-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-purple-light .main-header .navbar .sidebar-toggle:hover { - background-color: #555299; -} -@media (max-width: 767px) { - .skin-purple-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-purple-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-purple-light .main-header .navbar .dropdown-menu li a:hover { - background: #555299; - } -} -.skin-purple-light .main-header .logo { - background-color: #605ca8; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-purple-light .main-header .logo:hover { - background-color: #5d59a6; -} -.skin-purple-light .main-header li.user-header { - background-color: #605ca8; -} -.skin-purple-light .content-header { - background: transparent; -} -.skin-purple-light .wrapper, -.skin-purple-light .main-sidebar, -.skin-purple-light .left-side { - background-color: #f9fafc; -} -.skin-purple-light .content-wrapper, -.skin-purple-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-purple-light .user-panel > .info, -.skin-purple-light .user-panel > .info > a { - color: #444444; -} -.skin-purple-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-purple-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-purple-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-purple-light .sidebar-menu > li:hover > a, -.skin-purple-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-purple-light .sidebar-menu > li.active { - border-left-color: #605ca8; -} -.skin-purple-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-purple-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-purple-light .sidebar a { - color: #444444; -} -.skin-purple-light .sidebar a:hover { - text-decoration: none; -} -.skin-purple-light .treeview-menu > li > a { - color: #777777; -} -.skin-purple-light .treeview-menu > li.active > a, -.skin-purple-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-purple-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-purple-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-purple-light .sidebar-form input[type="text"], -.skin-purple-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} -.skin-purple-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-purple-light .sidebar-form input[type="text"]:focus, -.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-purple-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -@media (min-width: 768px) { - .skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-purple.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-purple.css deleted file mode 100644 index cb21dd7d3863..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-purple.css +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Skin: Purple - * ------------ - */ -.skin-purple .main-header .navbar { - background-color: #605ca8; -} -.skin-purple .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-purple .main-header .navbar .nav > li > a:hover, -.skin-purple .main-header .navbar .nav > li > a:active, -.skin-purple .main-header .navbar .nav > li > a:focus, -.skin-purple .main-header .navbar .nav .open > a, -.skin-purple .main-header .navbar .nav .open > a:hover, -.skin-purple .main-header .navbar .nav .open > a:focus, -.skin-purple .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-purple .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-purple .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-purple .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-purple .main-header .navbar .sidebar-toggle:hover { - background-color: #555299; -} -@media (max-width: 767px) { - .skin-purple .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-purple .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-purple .main-header .navbar .dropdown-menu li a:hover { - background: #555299; - } -} -.skin-purple .main-header .logo { - background-color: #555299; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-purple .main-header .logo:hover { - background-color: #545096; -} -.skin-purple .main-header li.user-header { - background-color: #605ca8; -} -.skin-purple .content-header { - background: transparent; -} -.skin-purple .wrapper, -.skin-purple .main-sidebar, -.skin-purple .left-side { - background-color: #222d32; -} -.skin-purple .user-panel > .info, -.skin-purple .user-panel > .info > a { - color: #fff; -} -.skin-purple .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-purple .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-purple .sidebar-menu > li:hover > a, -.skin-purple .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #605ca8; -} -.skin-purple .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-purple .sidebar a { - color: #b8c7ce; -} -.skin-purple .sidebar a:hover { - text-decoration: none; -} -.skin-purple .treeview-menu > li > a { - color: #8aa4af; -} -.skin-purple .treeview-menu > li.active > a, -.skin-purple .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-purple .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-purple .sidebar-form input[type="text"], -.skin-purple .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} -.skin-purple .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-purple .sidebar-form input[type="text"]:focus, -.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-purple .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-red-light.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-red-light.css deleted file mode 100644 index 146bd3b2468d..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-red-light.css +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Skin: Red - * --------- - */ -.skin-red-light .main-header .navbar { - background-color: #dd4b39; -} -.skin-red-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-red-light .main-header .navbar .nav > li > a:hover, -.skin-red-light .main-header .navbar .nav > li > a:active, -.skin-red-light .main-header .navbar .nav > li > a:focus, -.skin-red-light .main-header .navbar .nav .open > a, -.skin-red-light .main-header .navbar .nav .open > a:hover, -.skin-red-light .main-header .navbar .nav .open > a:focus, -.skin-red-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-red-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-red-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-red-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-red-light .main-header .navbar .sidebar-toggle:hover { - background-color: #d73925; -} -@media (max-width: 767px) { - .skin-red-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-red-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-red-light .main-header .navbar .dropdown-menu li a:hover { - background: #d73925; - } -} -.skin-red-light .main-header .logo { - background-color: #dd4b39; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-red-light .main-header .logo:hover { - background-color: #dc4735; -} -.skin-red-light .main-header li.user-header { - background-color: #dd4b39; -} -.skin-red-light .content-header { - background: transparent; -} -.skin-red-light .wrapper, -.skin-red-light .main-sidebar, -.skin-red-light .left-side { - background-color: #f9fafc; -} -.skin-red-light .content-wrapper, -.skin-red-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-red-light .user-panel > .info, -.skin-red-light .user-panel > .info > a { - color: #444444; -} -.skin-red-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-red-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-red-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-red-light .sidebar-menu > li:hover > a, -.skin-red-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-red-light .sidebar-menu > li.active { - border-left-color: #dd4b39; -} -.skin-red-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-red-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-red-light .sidebar a { - color: #444444; -} -.skin-red-light .sidebar a:hover { - text-decoration: none; -} -.skin-red-light .treeview-menu > li > a { - color: #777777; -} -.skin-red-light .treeview-menu > li.active > a, -.skin-red-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-red-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-red-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-red-light .sidebar-form input[type="text"], -.skin-red-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} -.skin-red-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-red-light .sidebar-form input[type="text"]:focus, -.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-red-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -@media (min-width: 768px) { - .skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-red.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-red.css deleted file mode 100644 index 6a94895b3b61..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-red.css +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Skin: Red - * --------- - */ -.skin-red .main-header .navbar { - background-color: #dd4b39; -} -.skin-red .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-red .main-header .navbar .nav > li > a:hover, -.skin-red .main-header .navbar .nav > li > a:active, -.skin-red .main-header .navbar .nav > li > a:focus, -.skin-red .main-header .navbar .nav .open > a, -.skin-red .main-header .navbar .nav .open > a:hover, -.skin-red .main-header .navbar .nav .open > a:focus, -.skin-red .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-red .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-red .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-red .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-red .main-header .navbar .sidebar-toggle:hover { - background-color: #d73925; -} -@media (max-width: 767px) { - .skin-red .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-red .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-red .main-header .navbar .dropdown-menu li a:hover { - background: #d73925; - } -} -.skin-red .main-header .logo { - background-color: #d73925; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-red .main-header .logo:hover { - background-color: #d33724; -} -.skin-red .main-header li.user-header { - background-color: #dd4b39; -} -.skin-red .content-header { - background: transparent; -} -.skin-red .wrapper, -.skin-red .main-sidebar, -.skin-red .left-side { - background-color: #222d32; -} -.skin-red .user-panel > .info, -.skin-red .user-panel > .info > a { - color: #fff; -} -.skin-red .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-red .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-red .sidebar-menu > li:hover > a, -.skin-red .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #dd4b39; -} -.skin-red .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-red .sidebar a { - color: #b8c7ce; -} -.skin-red .sidebar a:hover { - text-decoration: none; -} -.skin-red .treeview-menu > li > a { - color: #8aa4af; -} -.skin-red .treeview-menu > li.active > a, -.skin-red .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-red .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-red .sidebar-form input[type="text"], -.skin-red .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} -.skin-red .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-red .sidebar-form input[type="text"]:focus, -.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-red .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-yellow-light.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-yellow-light.css deleted file mode 100644 index 1d8a6fed7952..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-yellow-light.css +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Skin: Yellow - * ------------ - */ -.skin-yellow-light .main-header .navbar { - background-color: #f39c12; -} -.skin-yellow-light .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-yellow-light .main-header .navbar .nav > li > a:hover, -.skin-yellow-light .main-header .navbar .nav > li > a:active, -.skin-yellow-light .main-header .navbar .nav > li > a:focus, -.skin-yellow-light .main-header .navbar .nav .open > a, -.skin-yellow-light .main-header .navbar .nav .open > a:hover, -.skin-yellow-light .main-header .navbar .nav .open > a:focus, -.skin-yellow-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-yellow-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-yellow-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-yellow-light .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-yellow-light .main-header .navbar .sidebar-toggle:hover { - background-color: #e08e0b; -} -@media (max-width: 767px) { - .skin-yellow-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-yellow-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-yellow-light .main-header .navbar .dropdown-menu li a:hover { - background: #e08e0b; - } -} -.skin-yellow-light .main-header .logo { - background-color: #f39c12; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-yellow-light .main-header .logo:hover { - background-color: #f39a0d; -} -.skin-yellow-light .main-header li.user-header { - background-color: #f39c12; -} -.skin-yellow-light .content-header { - background: transparent; -} -.skin-yellow-light .wrapper, -.skin-yellow-light .main-sidebar, -.skin-yellow-light .left-side { - background-color: #f9fafc; -} -.skin-yellow-light .content-wrapper, -.skin-yellow-light .main-footer { - border-left: 1px solid #d2d6de; -} -.skin-yellow-light .user-panel > .info, -.skin-yellow-light .user-panel > .info > a { - color: #444444; -} -.skin-yellow-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} -.skin-yellow-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} -.skin-yellow-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} -.skin-yellow-light .sidebar-menu > li:hover > a, -.skin-yellow-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} -.skin-yellow-light .sidebar-menu > li.active { - border-left-color: #f39c12; -} -.skin-yellow-light .sidebar-menu > li.active > a { - font-weight: 600; -} -.skin-yellow-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} -.skin-yellow-light .sidebar a { - color: #444444; -} -.skin-yellow-light .sidebar a:hover { - text-decoration: none; -} -.skin-yellow-light .treeview-menu > li > a { - color: #777777; -} -.skin-yellow-light .treeview-menu > li.active > a, -.skin-yellow-light .treeview-menu > li > a:hover { - color: #000000; -} -.skin-yellow-light .treeview-menu > li.active > a { - font-weight: 600; -} -.skin-yellow-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} -.skin-yellow-light .sidebar-form input[type="text"], -.skin-yellow-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} -.skin-yellow-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-yellow-light .sidebar-form input[type="text"]:focus, -.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-yellow-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -@media (min-width: 768px) { - .skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-yellow.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-yellow.css deleted file mode 100644 index 7834ba160f98..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/css/skins/skin-yellow.css +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Skin: Yellow - * ------------ - */ -.skin-yellow .main-header .navbar { - background-color: #f39c12; -} -.skin-yellow .main-header .navbar .nav > li > a { - color: #ffffff; -} -.skin-yellow .main-header .navbar .nav > li > a:hover, -.skin-yellow .main-header .navbar .nav > li > a:active, -.skin-yellow .main-header .navbar .nav > li > a:focus, -.skin-yellow .main-header .navbar .nav .open > a, -.skin-yellow .main-header .navbar .nav .open > a:hover, -.skin-yellow .main-header .navbar .nav .open > a:focus, -.skin-yellow .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} -.skin-yellow .main-header .navbar .sidebar-toggle { - color: #ffffff; -} -.skin-yellow .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} -.skin-yellow .main-header .navbar .sidebar-toggle { - color: #fff; -} -.skin-yellow .main-header .navbar .sidebar-toggle:hover { - background-color: #e08e0b; -} -@media (max-width: 767px) { - .skin-yellow .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - .skin-yellow .main-header .navbar .dropdown-menu li a { - color: #fff; - } - .skin-yellow .main-header .navbar .dropdown-menu li a:hover { - background: #e08e0b; - } -} -.skin-yellow .main-header .logo { - background-color: #e08e0b; - color: #ffffff; - border-bottom: 0 solid transparent; -} -.skin-yellow .main-header .logo:hover { - background-color: #db8b0b; -} -.skin-yellow .main-header li.user-header { - background-color: #f39c12; -} -.skin-yellow .content-header { - background: transparent; -} -.skin-yellow .wrapper, -.skin-yellow .main-sidebar, -.skin-yellow .left-side { - background-color: #222d32; -} -.skin-yellow .user-panel > .info, -.skin-yellow .user-panel > .info > a { - color: #fff; -} -.skin-yellow .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} -.skin-yellow .sidebar-menu > li > a { - border-left: 3px solid transparent; -} -.skin-yellow .sidebar-menu > li:hover > a, -.skin-yellow .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #f39c12; -} -.skin-yellow .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} -.skin-yellow .sidebar a { - color: #b8c7ce; -} -.skin-yellow .sidebar a:hover { - text-decoration: none; -} -.skin-yellow .treeview-menu > li > a { - color: #8aa4af; -} -.skin-yellow .treeview-menu > li.active > a, -.skin-yellow .treeview-menu > li > a:hover { - color: #ffffff; -} -.skin-yellow .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} -.skin-yellow .sidebar-form input[type="text"], -.skin-yellow .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} -.skin-yellow .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.skin-yellow .sidebar-form input[type="text"]:focus, -.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} -.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} -.skin-yellow .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar.png b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar.png deleted file mode 100644 index 309f8822e5bb..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar.png and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar04.png b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar04.png deleted file mode 100644 index 28e03406c9f6..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar04.png and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar2.png b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar2.png deleted file mode 100644 index 9eaf5486c18c..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar2.png and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar3.png b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar3.png deleted file mode 100644 index 9ca2b3e1bf3a..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar3.png and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar5.png b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar5.png deleted file mode 100644 index 49d4b9254d33..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/avatar5.png and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/american-express.png b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/american-express.png deleted file mode 100644 index 01f4741da9d4..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/american-express.png and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/cirrus.png b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/cirrus.png deleted file mode 100644 index 9675627567b9..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/cirrus.png and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/mastercard.png b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/mastercard.png deleted file mode 100644 index 5a8beca9eb93..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/mastercard.png and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/mestro.png b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/mestro.png deleted file mode 100644 index 8749b84ec751..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/mestro.png and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/paypal.png b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/paypal.png deleted file mode 100644 index a8421cae7377..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/paypal.png and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/paypal2.png b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/paypal2.png deleted file mode 100644 index 2ccdde9b749e..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/paypal2.png and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/visa.png b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/visa.png deleted file mode 100644 index af20eff6b60a..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/credit/visa.png and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/photo1.png b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/photo1.png deleted file mode 100644 index 24bc2ede22d2..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/photo1.png and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/photo2.png b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/photo2.png deleted file mode 100644 index 3071ee8cb6c4..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/photo2.png and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/photo3.jpg b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/photo3.jpg deleted file mode 100644 index 63daa811e91d..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/photo3.jpg and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/photo4.jpg b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/photo4.jpg deleted file mode 100644 index c700ef365fcd..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/photo4.jpg and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user1-128x128.jpg b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user1-128x128.jpg deleted file mode 100644 index b0ae99a3bae3..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user1-128x128.jpg and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user2-160x160.jpg b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user2-160x160.jpg deleted file mode 100644 index aec74cb233fc..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user2-160x160.jpg and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user3-128x128.jpg b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user3-128x128.jpg deleted file mode 100644 index caf5f9662419..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user3-128x128.jpg and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user4-128x128.jpg b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user4-128x128.jpg deleted file mode 100644 index eb8e2bb73f40..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user4-128x128.jpg and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user5-128x128.jpg b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user5-128x128.jpg deleted file mode 100644 index b637aad7c47b..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user5-128x128.jpg and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user6-128x128.jpg b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user6-128x128.jpg deleted file mode 100644 index 3ac24681a452..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user6-128x128.jpg and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user7-128x128.jpg b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user7-128x128.jpg deleted file mode 100644 index 97febc29834c..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user7-128x128.jpg and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user8-128x128.jpg b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user8-128x128.jpg deleted file mode 100644 index 6e717b4aa64d..000000000000 Binary files a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/img/user8-128x128.jpg and /dev/null differ diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/js/app.js b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/js/app.js deleted file mode 100644 index 31671e3ac5b6..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/js/app.js +++ /dev/null @@ -1,763 +0,0 @@ -/*! AdminLTE app.js - * ================ - * Main JS application file for AdminLTE v2. This file - * should be included in all pages. It controls some layout - * options and implements exclusive AdminLTE plugins. - * - * @Author Almsaeed Studio - * @Support - * @Email - * @version 2.3.7 - * @license MIT - */ - -//Make sure jQuery has been loaded before app.js -if (typeof jQuery === "undefined") { - throw new Error("AdminLTE requires jQuery"); -} - -/* AdminLTE - * - * @type Object - * @description $.AdminLTE is the main object for the template's app. - * It's used for implementing functions and options related - * to the template. Keeping everything wrapped in an object - * prevents conflict with other plugins and is a better - * way to organize our code. - */ -$.AdminLTE = {}; - -/* -------------------- - * - AdminLTE Options - - * -------------------- - * Modify these options to suit your implementation - */ -$.AdminLTE.options = { - //Add slimscroll to navbar menus - //This requires you to load the slimscroll plugin - //in every page before app.js - navbarMenuSlimscroll: true, - navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar - navbarMenuHeight: "200px", //The height of the inner menu - //General animation speed for JS animated elements such as box collapse/expand and - //sidebar treeview slide up/down. This options accepts an integer as milliseconds, - //'fast', 'normal', or 'slow' - animationSpeed: 500, - //Sidebar push menu toggle button selector - sidebarToggleSelector: "[data-toggle='offcanvas']", - //Activate sidebar push menu - sidebarPushMenu: true, - //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin) - sidebarSlimScroll: true, - //Enable sidebar expand on hover effect for sidebar mini - //This option is forced to true if both the fixed layout and sidebar mini - //are used together - sidebarExpandOnHover: false, - //BoxRefresh Plugin - enableBoxRefresh: true, - //Bootstrap.js tooltip - enableBSToppltip: true, - BSTooltipSelector: "[data-toggle='tooltip']", - //Enable Fast Click. Fastclick.js creates a more - //native touch experience with touch devices. If you - //choose to enable the plugin, make sure you load the script - //before AdminLTE's app.js - enableFastclick: false, - //Control Sidebar Options - enableControlSidebar: true, - controlSidebarOptions: { - //Which button should trigger the open/close event - toggleBtnSelector: "[data-toggle='control-sidebar']", - //The sidebar selector - selector: ".control-sidebar", - //Enable slide over content - slide: true - }, - //Box Widget Plugin. Enable this plugin - //to allow boxes to be collapsed and/or removed - enableBoxWidget: true, - //Box Widget plugin options - boxWidgetOptions: { - boxWidgetIcons: { - //Collapse icon - collapse: 'fa-minus', - //Open icon - open: 'fa-plus', - //Remove icon - remove: 'fa-times' - }, - boxWidgetSelectors: { - //Remove button selector - remove: '[data-widget="remove"]', - //Collapse button selector - collapse: '[data-widget="collapse"]' - } - }, - //Direct Chat plugin options - directChat: { - //Enable direct chat by default - enable: true, - //The button to open and close the chat contacts pane - contactToggleSelector: '[data-widget="chat-pane-toggle"]' - }, - //Define the set of colors to use globally around the website - colors: { - lightBlue: "#3c8dbc", - red: "#f56954", - green: "#00a65a", - aqua: "#00c0ef", - yellow: "#f39c12", - blue: "#0073b7", - navy: "#001F3F", - teal: "#39CCCC", - olive: "#3D9970", - lime: "#01FF70", - orange: "#FF851B", - fuchsia: "#F012BE", - purple: "#8E24AA", - maroon: "#D81B60", - black: "#222222", - gray: "#d2d6de" - }, - //The standard screen sizes that bootstrap uses. - //If you change these in the variables.less file, change - //them here too. - screenSizes: { - xs: 480, - sm: 768, - md: 992, - lg: 1200 - } -}; - -/* ------------------ - * - Implementation - - * ------------------ - * The next block of code implements AdminLTE's - * functions and plugins as specified by the - * options above. - */ -$(function () { - "use strict"; - - //Fix for IE page transitions - $("body").removeClass("hold-transition"); - - //Extend options if external options exist - if (typeof AdminLTEOptions !== "undefined") { - $.extend(true, - $.AdminLTE.options, - AdminLTEOptions); - } - - //Easy access to options - var o = $.AdminLTE.options; - - //Set up the object - _init(); - - //Activate the layout maker - $.AdminLTE.layout.activate(); - - //Enable sidebar tree view controls - $.AdminLTE.tree('.sidebar'); - - //Enable control sidebar - if (o.enableControlSidebar) { - $.AdminLTE.controlSidebar.activate(); - } - - //Add slimscroll to navbar dropdown - if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') { - $(".navbar .menu").slimscroll({ - height: o.navbarMenuHeight, - alwaysVisible: false, - size: o.navbarMenuSlimscrollWidth - }).css("width", "100%"); - } - - //Activate sidebar push menu - if (o.sidebarPushMenu) { - $.AdminLTE.pushMenu.activate(o.sidebarToggleSelector); - } - - //Activate Bootstrap tooltip - if (o.enableBSToppltip) { - $('body').tooltip({ - selector: o.BSTooltipSelector - }); - } - - //Activate box widget - if (o.enableBoxWidget) { - $.AdminLTE.boxWidget.activate(); - } - - //Activate fast click - if (o.enableFastclick && typeof FastClick != 'undefined') { - FastClick.attach(document.body); - } - - //Activate direct chat widget - if (o.directChat.enable) { - $(document).on('click', o.directChat.contactToggleSelector, function () { - var box = $(this).parents('.direct-chat').first(); - box.toggleClass('direct-chat-contacts-open'); - }); - } - - /* - * INITIALIZE BUTTON TOGGLE - * ------------------------ - */ - $('.btn-group[data-toggle="btn-toggle"]').each(function () { - var group = $(this); - $(this).find(".btn").on('click', function (e) { - group.find(".btn.active").removeClass("active"); - $(this).addClass("active"); - e.preventDefault(); - }); - - }); -}); - -/* ---------------------------------- - * - Initialize the AdminLTE Object - - * ---------------------------------- - * All AdminLTE functions are implemented below. - */ -function _init() { - 'use strict'; - /* Layout - * ====== - * Fixes the layout height in case min-height fails. - * - * @type Object - * @usage $.AdminLTE.layout.activate() - * $.AdminLTE.layout.fix() - * $.AdminLTE.layout.fixSidebar() - */ - $.AdminLTE.layout = { - activate: function () { - var _this = this; - _this.fix(); - _this.fixSidebar(); - $(window, ".wrapper").resize(function () { - _this.fix(); - _this.fixSidebar(); - }); - }, - fix: function () { - //Get window height and the wrapper height - var neg = $('.main-header').outerHeight() + $('.main-footer').outerHeight(); - var window_height = $(window).height(); - var sidebar_height = $(".sidebar").height(); - //Set the min-height of the content and sidebar based on the - //the height of the document. - if ($("body").hasClass("fixed")) { - $(".content-wrapper, .right-side").css('min-height', window_height - $('.main-footer').outerHeight()); - } else { - var postSetWidth; - if (window_height >= sidebar_height) { - $(".content-wrapper, .right-side").css('min-height', window_height - neg); - postSetWidth = window_height - neg; - } else { - $(".content-wrapper, .right-side").css('min-height', sidebar_height); - postSetWidth = sidebar_height; - } - - //Fix for the control sidebar height - var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector); - if (typeof controlSidebar !== "undefined") { - if (controlSidebar.height() > postSetWidth) - $(".content-wrapper, .right-side").css('min-height', controlSidebar.height()); - } - - } - }, - fixSidebar: function () { - //Make sure the body tag has the .fixed class - if (!$("body").hasClass("fixed")) { - if (typeof $.fn.slimScroll != 'undefined') { - $(".sidebar").slimScroll({destroy: true}).height("auto"); - } - return; - } else if (typeof $.fn.slimScroll == 'undefined' && window.console) { - window.console.error("Error: the fixed layout requires the slimscroll plugin!"); - } - //Enable slimscroll for fixed layout - if ($.AdminLTE.options.sidebarSlimScroll) { - if (typeof $.fn.slimScroll != 'undefined') { - //Destroy if it exists - $(".sidebar").slimScroll({destroy: true}).height("auto"); - //Add slimscroll - $(".sidebar").slimscroll({ - height: ($(window).height() - $(".main-header").height()) + "px", - color: "rgba(0,0,0,0.2)", - size: "3px" - }); - } - } - } - }; - - /* PushMenu() - * ========== - * Adds the push menu functionality to the sidebar. - * - * @type Function - * @usage: $.AdminLTE.pushMenu("[data-toggle='offcanvas']") - */ - $.AdminLTE.pushMenu = { - activate: function (toggleBtn) { - //Get the screen sizes - var screenSizes = $.AdminLTE.options.screenSizes; - - //Enable sidebar toggle - $(document).on('click', toggleBtn, function (e) { - e.preventDefault(); - - //Enable sidebar push menu - if ($(window).width() > (screenSizes.sm - 1)) { - if ($("body").hasClass('sidebar-collapse')) { - $("body").removeClass('sidebar-collapse').trigger('expanded.pushMenu'); - } else { - $("body").addClass('sidebar-collapse').trigger('collapsed.pushMenu'); - } - } - //Handle sidebar push menu for small screens - else { - if ($("body").hasClass('sidebar-open')) { - $("body").removeClass('sidebar-open').removeClass('sidebar-collapse').trigger('collapsed.pushMenu'); - } else { - $("body").addClass('sidebar-open').trigger('expanded.pushMenu'); - } - } - }); - - $(".content-wrapper").click(function () { - //Enable hide menu when clicking on the content-wrapper on small screens - if ($(window).width() <= (screenSizes.sm - 1) && $("body").hasClass("sidebar-open")) { - $("body").removeClass('sidebar-open'); - } - }); - - //Enable expand on hover for sidebar mini - if ($.AdminLTE.options.sidebarExpandOnHover - || ($('body').hasClass('fixed') - && $('body').hasClass('sidebar-mini'))) { - this.expandOnHover(); - } - }, - expandOnHover: function () { - var _this = this; - var screenWidth = $.AdminLTE.options.screenSizes.sm - 1; - //Expand sidebar on hover - $('.main-sidebar').hover(function () { - if ($('body').hasClass('sidebar-mini') - && $("body").hasClass('sidebar-collapse') - && $(window).width() > screenWidth) { - _this.expand(); - } - }, function () { - if ($('body').hasClass('sidebar-mini') - && $('body').hasClass('sidebar-expanded-on-hover') - && $(window).width() > screenWidth) { - _this.collapse(); - } - }); - }, - expand: function () { - $("body").removeClass('sidebar-collapse').addClass('sidebar-expanded-on-hover'); - }, - collapse: function () { - if ($('body').hasClass('sidebar-expanded-on-hover')) { - $('body').removeClass('sidebar-expanded-on-hover').addClass('sidebar-collapse'); - } - } - }; - - /* Tree() - * ====== - * Converts the sidebar into a multilevel - * tree view menu. - * - * @type Function - * @Usage: $.AdminLTE.tree('.sidebar') - */ - $.AdminLTE.tree = function (menu) { - var _this = this; - var animationSpeed = $.AdminLTE.options.animationSpeed; - $(document).off('click', menu + ' li a') - .on('click', menu + ' li a', function (e) { - //Get the clicked link and the next element - var $this = $(this); - var checkElement = $this.next(); - - //Check if the next element is a menu and is visible - if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible')) && (!$('body').hasClass('sidebar-collapse'))) { - //Close the menu - checkElement.slideUp(animationSpeed, function () { - checkElement.removeClass('menu-open'); - //Fix the layout in case the sidebar stretches over the height of the window - //_this.layout.fix(); - }); - checkElement.parent("li").removeClass("active"); - } - //If the menu is not visible - else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) { - //Get the parent menu - var parent = $this.parents('ul').first(); - //Close all open menus within the parent - var ul = parent.find('ul:visible').slideUp(animationSpeed); - //Remove the menu-open class from the parent - ul.removeClass('menu-open'); - //Get the parent li - var parent_li = $this.parent("li"); - - //Open the target menu and add the menu-open class - checkElement.slideDown(animationSpeed, function () { - //Add the class active to the parent li - checkElement.addClass('menu-open'); - parent.find('li.active').removeClass('active'); - parent_li.addClass('active'); - //Fix the layout in case the sidebar stretches over the height of the window - _this.layout.fix(); - }); - } - //if this isn't a link, prevent the page from being redirected - if (checkElement.is('.treeview-menu')) { - e.preventDefault(); - } - }); - }; - - /* ControlSidebar - * ============== - * Adds functionality to the right sidebar - * - * @type Object - * @usage $.AdminLTE.controlSidebar.activate(options) - */ - $.AdminLTE.controlSidebar = { - //instantiate the object - activate: function () { - //Get the object - var _this = this; - //Update options - var o = $.AdminLTE.options.controlSidebarOptions; - //Get the sidebar - var sidebar = $(o.selector); - //The toggle button - var btn = $(o.toggleBtnSelector); - - //Listen to the click event - btn.on('click', function (e) { - e.preventDefault(); - //If the sidebar is not open - if (!sidebar.hasClass('control-sidebar-open') - && !$('body').hasClass('control-sidebar-open')) { - //Open the sidebar - _this.open(sidebar, o.slide); - } else { - _this.close(sidebar, o.slide); - } - }); - - //If the body has a boxed layout, fix the sidebar bg position - var bg = $(".control-sidebar-bg"); - _this._fix(bg); - - //If the body has a fixed layout, make the control sidebar fixed - if ($('body').hasClass('fixed')) { - _this._fixForFixed(sidebar); - } else { - //If the content height is less than the sidebar's height, force max height - if ($('.content-wrapper, .right-side').height() < sidebar.height()) { - _this._fixForContent(sidebar); - } - } - }, - //Open the control sidebar - open: function (sidebar, slide) { - //Slide over content - if (slide) { - sidebar.addClass('control-sidebar-open'); - } else { - //Push the content by adding the open class to the body instead - //of the sidebar itself - $('body').addClass('control-sidebar-open'); - } - }, - //Close the control sidebar - close: function (sidebar, slide) { - if (slide) { - sidebar.removeClass('control-sidebar-open'); - } else { - $('body').removeClass('control-sidebar-open'); - } - }, - _fix: function (sidebar) { - var _this = this; - if ($("body").hasClass('layout-boxed')) { - sidebar.css('position', 'absolute'); - sidebar.height($(".wrapper").height()); - if (_this.hasBindedResize) { - return; - } - $(window).resize(function () { - _this._fix(sidebar); - }); - _this.hasBindedResize = true; - } else { - sidebar.css({ - 'position': 'fixed', - 'height': 'auto' - }); - } - }, - _fixForFixed: function (sidebar) { - sidebar.css({ - 'position': 'fixed', - 'max-height': '100%', - 'overflow': 'auto', - 'padding-bottom': '50px' - }); - }, - _fixForContent: function (sidebar) { - $(".content-wrapper, .right-side").css('min-height', sidebar.height()); - } - }; - - /* BoxWidget - * ========= - * BoxWidget is a plugin to handle collapsing and - * removing boxes from the screen. - * - * @type Object - * @usage $.AdminLTE.boxWidget.activate() - * Set all your options in the main $.AdminLTE.options object - */ - $.AdminLTE.boxWidget = { - selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors, - icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons, - animationSpeed: $.AdminLTE.options.animationSpeed, - activate: function (_box) { - var _this = this; - if (!_box) { - _box = document; // activate all boxes per default - } - //Listen for collapse event triggers - $(_box).on('click', _this.selectors.collapse, function (e) { - e.preventDefault(); - _this.collapse($(this)); - }); - - //Listen for remove event triggers - $(_box).on('click', _this.selectors.remove, function (e) { - e.preventDefault(); - _this.remove($(this)); - }); - }, - collapse: function (element) { - var _this = this; - //Find the box parent - var box = element.parents(".box").first(); - //Find the body and the footer - var box_content = box.find("> .box-body, > .box-footer, > form >.box-body, > form > .box-footer"); - if (!box.hasClass("collapsed-box")) { - //Convert minus into plus - element.children(":first") - .removeClass(_this.icons.collapse) - .addClass(_this.icons.open); - //Hide the content - box_content.slideUp(_this.animationSpeed, function () { - box.addClass("collapsed-box"); - }); - } else { - //Convert plus into minus - element.children(":first") - .removeClass(_this.icons.open) - .addClass(_this.icons.collapse); - //Show the content - box_content.slideDown(_this.animationSpeed, function () { - box.removeClass("collapsed-box"); - }); - } - }, - remove: function (element) { - //Find the box parent - var box = element.parents(".box").first(); - box.slideUp(this.animationSpeed); - } - }; -} - -/* ------------------ - * - Custom Plugins - - * ------------------ - * All custom plugins are defined below. - */ - -/* - * BOX REFRESH BUTTON - * ------------------ - * This is a custom plugin to use with the component BOX. It allows you to add - * a refresh button to the box. It converts the box's state to a loading state. - * - * @type plugin - * @usage $("#box-widget").boxRefresh( options ); - */ -(function ($) { - - "use strict"; - - $.fn.boxRefresh = function (options) { - - // Render options - var settings = $.extend({ - //Refresh button selector - trigger: ".refresh-btn", - //File source to be loaded (e.g: ajax/src.php) - source: "", - //Callbacks - onLoadStart: function (box) { - return box; - }, //Right after the button has been clicked - onLoadDone: function (box) { - return box; - } //When the source has been loaded - - }, options); - - //The overlay - var overlay = $('
'); - - return this.each(function () { - //if a source is specified - if (settings.source === "") { - if (window.console) { - window.console.log("Please specify a source first - boxRefresh()"); - } - return; - } - //the box - var box = $(this); - //the button - var rBtn = box.find(settings.trigger).first(); - - //On trigger click - rBtn.on('click', function (e) { - e.preventDefault(); - //Add loading overlay - start(box); - - //Perform ajax call - box.find(".box-body").load(settings.source, function () { - done(box); - }); - }); - }); - - function start(box) { - //Add overlay and loading img - box.append(overlay); - - settings.onLoadStart.call(box); - } - - function done(box) { - //Remove overlay and loading img - box.find(overlay).remove(); - - settings.onLoadDone.call(box); - } - - }; - -})(jQuery); - -/* - * EXPLICIT BOX CONTROLS - * ----------------------- - * This is a custom plugin to use with the component BOX. It allows you to activate - * a box inserted in the DOM after the app.js was loaded, toggle and remove box. - * - * @type plugin - * @usage $("#box-widget").activateBox(); - * @usage $("#box-widget").toggleBox(); - * @usage $("#box-widget").removeBox(); - */ -(function ($) { - - 'use strict'; - - $.fn.activateBox = function () { - $.AdminLTE.boxWidget.activate(this); - }; - - $.fn.toggleBox = function () { - var button = $($.AdminLTE.boxWidget.selectors.collapse, this); - $.AdminLTE.boxWidget.collapse(button); - }; - - $.fn.removeBox = function () { - var button = $($.AdminLTE.boxWidget.selectors.remove, this); - $.AdminLTE.boxWidget.remove(button); - }; - -})(jQuery); - -/* - * TODO LIST CUSTOM PLUGIN - * ----------------------- - * This plugin depends on iCheck plugin for checkbox and radio inputs - * - * @type plugin - * @usage $("#todo-widget").todolist( options ); - */ -(function ($) { - - 'use strict'; - - $.fn.todolist = function (options) { - // Render options - var settings = $.extend({ - //When the user checks the input - onCheck: function (ele) { - return ele; - }, - //When the user unchecks the input - onUncheck: function (ele) { - return ele; - } - }, options); - - return this.each(function () { - - if (typeof $.fn.iCheck != 'undefined') { - $('input', this).on('ifChecked', function () { - var ele = $(this).parents("li").first(); - ele.toggleClass("done"); - settings.onCheck.call(ele); - }); - - $('input', this).on('ifUnchecked', function () { - var ele = $(this).parents("li").first(); - ele.toggleClass("done"); - settings.onUncheck.call(ele); - }); - } else { - $('input', this).on('change', function () { - var ele = $(this).parents("li").first(); - ele.toggleClass("done"); - if ($('input', ele).is(":checked")) { - settings.onCheck.call(ele); - } else { - settings.onUncheck.call(ele); - } - }); - } - }); - }; -}(jQuery)); diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/js/demo.js b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/js/demo.js deleted file mode 100644 index b18b9bb3f9da..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/js/demo.js +++ /dev/null @@ -1,340 +0,0 @@ -/** - * AdminLTE Demo Menu - * ------------------ - * You should not use this file in production. - * This file is for demo purposes only. - */ -(function ($, AdminLTE) { - - "use strict"; - - /** - * List of all the available skins - * - * @type Array - */ - var my_skins = [ - "skin-blue", - "skin-black", - "skin-red", - "skin-yellow", - "skin-purple", - "skin-green", - "skin-blue-light", - "skin-black-light", - "skin-red-light", - "skin-yellow-light", - "skin-purple-light", - "skin-green-light" - ]; - - //Create the new tab - var tab_pane = $("
", { - "id": "control-sidebar-theme-demo-options-tab", - "class": "tab-pane active" - }); - - //Create the tab button - var tab_button = $("
  • ", {"class": "active"}) - .html("" - + "" - + ""); - - //Add the tab button to the right sidebar tabs - $("[href='#control-sidebar-home-tab']") - .parent() - .before(tab_button); - - //Create the menu - var demo_settings = $("
    "); - - //Layout options - demo_settings.append( - "

    " - + "Layout Options" - + "

    " - //Fixed layout - + "
    " - + "" - + "

    Activate the fixed layout. You can't use fixed and boxed layouts together

    " - + "
    " - //Boxed layout - + "
    " - + "" - + "

    Activate the boxed layout

    " - + "
    " - //Sidebar Toggle - + "
    " - + "" - + "

    Toggle the left sidebar's state (open or collapse)

    " - + "
    " - //Sidebar mini expand on hover toggle - + "
    " - + "" - + "

    Let the sidebar mini expand on hover

    " - + "
    " - //Control Sidebar Toggle - + "
    " - + "" - + "

    Toggle between slide over content and push content effects

    " - + "
    " - //Control Sidebar Skin Toggle - + "
    " - + "" - + "

    Toggle between dark and light skins for the right sidebar

    " - + "
    " - ); - var skins_list = $("
      ", {"class": 'list-unstyled clearfix'}); - - //Dark sidebar skins - var skin_blue = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Blue

      "); - skins_list.append(skin_blue); - var skin_black = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Black

      "); - skins_list.append(skin_black); - var skin_purple = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Purple

      "); - skins_list.append(skin_purple); - var skin_green = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Green

      "); - skins_list.append(skin_green); - var skin_red = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Red

      "); - skins_list.append(skin_red); - var skin_yellow = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Yellow

      "); - skins_list.append(skin_yellow); - - //Light sidebar skins - var skin_blue_light = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Blue Light

      "); - skins_list.append(skin_blue_light); - var skin_black_light = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Black Light

      "); - skins_list.append(skin_black_light); - var skin_purple_light = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Purple Light

      "); - skins_list.append(skin_purple_light); - var skin_green_light = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Green Light

      "); - skins_list.append(skin_green_light); - var skin_red_light = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Red Light

      "); - skins_list.append(skin_red_light); - var skin_yellow_light = - $("
    • ", {style: "float:left; width: 33.33333%; padding: 5px;"}) - .append("" - + "
      " - + "
      " - + "
      " - + "

      Yellow Light

      "); - skins_list.append(skin_yellow_light); - - demo_settings.append("

      Skins

      "); - demo_settings.append(skins_list); - - tab_pane.append(demo_settings); - $("#control-sidebar-home-tab").after(tab_pane); - - setup(); - - /** - * Toggles layout classes - * - * @param String cls the layout class to toggle - * @returns void - */ - function change_layout(cls) { - $("body").toggleClass(cls); - AdminLTE.layout.fixSidebar(); - //Fix the problem with right sidebar and layout boxed - if (cls == "layout-boxed") - AdminLTE.controlSidebar._fix($(".control-sidebar-bg")); - if ($('body').hasClass('fixed') && cls == 'fixed') { - AdminLTE.pushMenu.expandOnHover(); - AdminLTE.layout.activate(); - } - AdminLTE.controlSidebar._fix($(".control-sidebar-bg")); - AdminLTE.controlSidebar._fix($(".control-sidebar")); - } - - /** - * Replaces the old skin with the new skin - * @param String cls the new skin class - * @returns Boolean false to prevent link's default action - */ - function change_skin(cls) { - $.each(my_skins, function (i) { - $("body").removeClass(my_skins[i]); - }); - - $("body").addClass(cls); - store('skin', cls); - return false; - } - - /** - * Store a new settings in the browser - * - * @param String name Name of the setting - * @param String val Value of the setting - * @returns void - */ - function store(name, val) { - if (typeof (Storage) !== "undefined") { - localStorage.setItem(name, val); - } else { - window.alert('Please use a modern browser to properly view this template!'); - } - } - - /** - * Get a prestored setting - * - * @param String name Name of of the setting - * @returns String The value of the setting | null - */ - function get(name) { - if (typeof (Storage) !== "undefined") { - return localStorage.getItem(name); - } else { - window.alert('Please use a modern browser to properly view this template!'); - } - } - - /** - * Retrieve default settings and apply them to the template - * - * @returns void - */ - function setup() { - var tmp = get('skin'); - if (tmp && $.inArray(tmp, my_skins)) - change_skin(tmp); - - //Add the change skin listener - $("[data-skin]").on('click', function (e) { - if($(this).hasClass('knob')) - return; - e.preventDefault(); - change_skin($(this).data('skin')); - }); - - //Add the layout manager - $("[data-layout]").on('click', function () { - change_layout($(this).data('layout')); - }); - - $("[data-controlsidebar]").on('click', function () { - change_layout($(this).data('controlsidebar')); - var slide = !AdminLTE.options.controlSidebarOptions.slide; - AdminLTE.options.controlSidebarOptions.slide = slide; - if (!slide) - $('.control-sidebar').removeClass('control-sidebar-open'); - }); - - $("[data-sidebarskin='toggle']").on('click', function () { - var sidebar = $(".control-sidebar"); - if (sidebar.hasClass("control-sidebar-dark")) { - sidebar.removeClass("control-sidebar-dark") - sidebar.addClass("control-sidebar-light") - } else { - sidebar.removeClass("control-sidebar-light") - sidebar.addClass("control-sidebar-dark") - } - }); - - $("[data-enable='expandOnHover']").on('click', function () { - $(this).attr('disabled', true); - AdminLTE.pushMenu.expandOnHover(); - if (!$('body').hasClass('sidebar-collapse')) - $("[data-layout='sidebar-collapse']").click(); - }); - - // Reset options - if ($('body').hasClass('fixed')) { - $("[data-layout='fixed']").attr('checked', 'checked'); - } - if ($('body').hasClass('layout-boxed')) { - $("[data-layout='layout-boxed']").attr('checked', 'checked'); - } - if ($('body').hasClass('sidebar-collapse')) { - $("[data-layout='sidebar-collapse']").attr('checked', 'checked'); - } - - } -})(jQuery, $.AdminLTE); diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/js/pages/dashboard.js b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/js/pages/dashboard.js deleted file mode 100644 index 0f7c0077fbd4..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/js/pages/dashboard.js +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Author: Abdullah A Almsaeed - * Date: 4 Jan 2014 - * Description: - * This is a demo file used only for the main dashboard (index.html) - **/ - -$(function () { - - "use strict"; - - //Make the dashboard widgets sortable Using jquery UI - $(".connectedSortable").sortable({ - placeholder: "sort-highlight", - connectWith: ".connectedSortable", - handle: ".box-header, .nav-tabs", - forcePlaceholderSize: true, - zIndex: 999999 - }); - $(".connectedSortable .box-header, .connectedSortable .nav-tabs-custom").css("cursor", "move"); - - //jQuery UI sortable for the todo list - $(".todo-list").sortable({ - placeholder: "sort-highlight", - handle: ".handle", - forcePlaceholderSize: true, - zIndex: 999999 - }); - - //bootstrap WYSIHTML5 - text editor - $(".textarea").wysihtml5(); - - $('.daterange').daterangepicker({ - ranges: { - 'Today': [moment(), moment()], - 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], - 'Last 7 Days': [moment().subtract(6, 'days'), moment()], - 'Last 30 Days': [moment().subtract(29, 'days'), moment()], - 'This Month': [moment().startOf('month'), moment().endOf('month')], - 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] - }, - startDate: moment().subtract(29, 'days'), - endDate: moment() - }, function (start, end) { - window.alert("You chose: " + start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); - }); - - /* jQueryKnob */ - $(".knob").knob(); - - //jvectormap data - var visitorsData = { - "US": 398, //USA - "SA": 400, //Saudi Arabia - "CA": 1000, //Canada - "DE": 500, //Germany - "FR": 760, //France - "CN": 300, //China - "AU": 700, //Australia - "BR": 600, //Brazil - "IN": 800, //India - "GB": 320, //Great Britain - "RU": 3000 //Russia - }; - //World map by jvectormap - $('#world-map').vectorMap({ - map: 'world_mill_en', - backgroundColor: "transparent", - regionStyle: { - initial: { - fill: '#e4e4e4', - "fill-opacity": 1, - stroke: 'none', - "stroke-width": 0, - "stroke-opacity": 1 - } - }, - series: { - regions: [{ - values: visitorsData, - scale: ["#92c1dc", "#ebf4f9"], - normalizeFunction: 'polynomial' - }] - }, - onRegionLabelShow: function (e, el, code) { - if (typeof visitorsData[code] != "undefined") - el.html(el.html() + ': ' + visitorsData[code] + ' new visitors'); - } - }); - - //Sparkline charts - var myvalues = [1000, 1200, 920, 927, 931, 1027, 819, 930, 1021]; - $('#sparkline-1').sparkline(myvalues, { - type: 'line', - lineColor: '#92c1dc', - fillColor: "#ebf4f9", - height: '50', - width: '80' - }); - myvalues = [515, 519, 520, 522, 652, 810, 370, 627, 319, 630, 921]; - $('#sparkline-2').sparkline(myvalues, { - type: 'line', - lineColor: '#92c1dc', - fillColor: "#ebf4f9", - height: '50', - width: '80' - }); - myvalues = [15, 19, 20, 22, 33, 27, 31, 27, 19, 30, 21]; - $('#sparkline-3').sparkline(myvalues, { - type: 'line', - lineColor: '#92c1dc', - fillColor: "#ebf4f9", - height: '50', - width: '80' - }); - - //The Calender - $("#calendar").datepicker(); - - //SLIMSCROLL FOR CHAT WIDGET - $('#chat-box').slimScroll({ - height: '250px' - }); - - /* Morris.js Charts */ - // Sales chart - var area = new Morris.Area({ - element: 'revenue-chart', - resize: true, - data: [ - {y: '2011 Q1', item1: 2666, item2: 2666}, - {y: '2011 Q2', item1: 2778, item2: 2294}, - {y: '2011 Q3', item1: 4912, item2: 1969}, - {y: '2011 Q4', item1: 3767, item2: 3597}, - {y: '2012 Q1', item1: 6810, item2: 1914}, - {y: '2012 Q2', item1: 5670, item2: 4293}, - {y: '2012 Q3', item1: 4820, item2: 3795}, - {y: '2012 Q4', item1: 15073, item2: 5967}, - {y: '2013 Q1', item1: 10687, item2: 4460}, - {y: '2013 Q2', item1: 8432, item2: 5713} - ], - xkey: 'y', - ykeys: ['item1', 'item2'], - labels: ['Item 1', 'Item 2'], - lineColors: ['#a0d0e0', '#3c8dbc'], - hideHover: 'auto' - }); - var line = new Morris.Line({ - element: 'line-chart', - resize: true, - data: [ - {y: '2011 Q1', item1: 2666}, - {y: '2011 Q2', item1: 2778}, - {y: '2011 Q3', item1: 4912}, - {y: '2011 Q4', item1: 3767}, - {y: '2012 Q1', item1: 6810}, - {y: '2012 Q2', item1: 5670}, - {y: '2012 Q3', item1: 4820}, - {y: '2012 Q4', item1: 15073}, - {y: '2013 Q1', item1: 10687}, - {y: '2013 Q2', item1: 8432} - ], - xkey: 'y', - ykeys: ['item1'], - labels: ['Item 1'], - lineColors: ['#efefef'], - lineWidth: 2, - hideHover: 'auto', - gridTextColor: "#fff", - gridStrokeWidth: 0.4, - pointSize: 4, - pointStrokeColors: ["#efefef"], - gridLineColor: "#efefef", - gridTextFamily: "Open Sans", - gridTextSize: 10 - }); - - //Donut Chart - var donut = new Morris.Donut({ - element: 'sales-chart', - resize: true, - colors: ["#3c8dbc", "#f56954", "#00a65a"], - data: [ - {label: "Download Sales", value: 12}, - {label: "In-Store Sales", value: 30}, - {label: "Mail-Order Sales", value: 20} - ], - hideHover: 'auto' - }); - - //Fix for charts under tabs - $('.box ul.nav a').on('shown.bs.tab', function () { - area.redraw(); - donut.redraw(); - line.redraw(); - }); - - /* The todo list plugin */ - $(".todo-list").todolist({ - onCheck: function (ele) { - window.console.log("The element has been checked"); - return ele; - }, - onUncheck: function (ele) { - window.console.log("The element has been unchecked"); - return ele; - } - }); - -}); diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/js/pages/dashboard2.js b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/js/pages/dashboard2.js deleted file mode 100644 index cc67785e6e76..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/dist/js/pages/dashboard2.js +++ /dev/null @@ -1,274 +0,0 @@ -$(function () { - - 'use strict'; - - /* ChartJS - * ------- - * Here we will create a few charts using ChartJS - */ - - //----------------------- - //- MONTHLY SALES CHART - - //----------------------- - - // Get context with jQuery - using jQuery's .get() method. - var salesChartCanvas = $("#salesChart").get(0).getContext("2d"); - // This will get the first returned node in the jQuery collection. - var salesChart = new Chart(salesChartCanvas); - - var salesChartData = { - labels: ["January", "February", "March", "April", "May", "June", "July"], - datasets: [ - { - label: "Electronics", - fillColor: "rgb(210, 214, 222)", - strokeColor: "rgb(210, 214, 222)", - pointColor: "rgb(210, 214, 222)", - pointStrokeColor: "#c1c7d1", - pointHighlightFill: "#fff", - pointHighlightStroke: "rgb(220,220,220)", - data: [65, 59, 80, 81, 56, 55, 40] - }, - { - label: "Digital Goods", - fillColor: "rgba(60,141,188,0.9)", - strokeColor: "rgba(60,141,188,0.8)", - pointColor: "#3b8bba", - pointStrokeColor: "rgba(60,141,188,1)", - pointHighlightFill: "#fff", - pointHighlightStroke: "rgba(60,141,188,1)", - data: [28, 48, 40, 19, 86, 27, 90] - } - ] - }; - - var salesChartOptions = { - //Boolean - If we should show the scale at all - showScale: true, - //Boolean - Whether grid lines are shown across the chart - scaleShowGridLines: false, - //String - Colour of the grid lines - scaleGridLineColor: "rgba(0,0,0,.05)", - //Number - Width of the grid lines - scaleGridLineWidth: 1, - //Boolean - Whether to show horizontal lines (except X axis) - scaleShowHorizontalLines: true, - //Boolean - Whether to show vertical lines (except Y axis) - scaleShowVerticalLines: true, - //Boolean - Whether the line is curved between points - bezierCurve: true, - //Number - Tension of the bezier curve between points - bezierCurveTension: 0.3, - //Boolean - Whether to show a dot for each point - pointDot: false, - //Number - Radius of each point dot in pixels - pointDotRadius: 4, - //Number - Pixel width of point dot stroke - pointDotStrokeWidth: 1, - //Number - amount extra to add to the radius to cater for hit detection outside the drawn point - pointHitDetectionRadius: 20, - //Boolean - Whether to show a stroke for datasets - datasetStroke: true, - //Number - Pixel width of dataset stroke - datasetStrokeWidth: 2, - //Boolean - Whether to fill the dataset with a color - datasetFill: true, - //String - A legend template - legendTemplate: "
        -legend\"><% for (var i=0; i
      • \"><%=datasets[i].label%>
      • <%}%>
      ", - //Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container - maintainAspectRatio: true, - //Boolean - whether to make the chart responsive to window resizing - responsive: true - }; - - //Create the line chart - salesChart.Line(salesChartData, salesChartOptions); - - //--------------------------- - //- END MONTHLY SALES CHART - - //--------------------------- - - //------------- - //- PIE CHART - - //------------- - // Get context with jQuery - using jQuery's .get() method. - var pieChartCanvas = $("#pieChart").get(0).getContext("2d"); - var pieChart = new Chart(pieChartCanvas); - var PieData = [ - { - value: 700, - color: "#f56954", - highlight: "#f56954", - label: "Chrome" - }, - { - value: 500, - color: "#00a65a", - highlight: "#00a65a", - label: "IE" - }, - { - value: 400, - color: "#f39c12", - highlight: "#f39c12", - label: "FireFox" - }, - { - value: 600, - color: "#00c0ef", - highlight: "#00c0ef", - label: "Safari" - }, - { - value: 300, - color: "#3c8dbc", - highlight: "#3c8dbc", - label: "Opera" - }, - { - value: 100, - color: "#d2d6de", - highlight: "#d2d6de", - label: "Navigator" - } - ]; - var pieOptions = { - //Boolean - Whether we should show a stroke on each segment - segmentShowStroke: true, - //String - The colour of each segment stroke - segmentStrokeColor: "#fff", - //Number - The width of each segment stroke - segmentStrokeWidth: 1, - //Number - The percentage of the chart that we cut out of the middle - percentageInnerCutout: 50, // This is 0 for Pie charts - //Number - Amount of animation steps - animationSteps: 100, - //String - Animation easing effect - animationEasing: "easeOutBounce", - //Boolean - Whether we animate the rotation of the Doughnut - animateRotate: true, - //Boolean - Whether we animate scaling the Doughnut from the centre - animateScale: false, - //Boolean - whether to make the chart responsive to window resizing - responsive: true, - // Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container - maintainAspectRatio: false, - //String - A legend template - legendTemplate: "
        -legend\"><% for (var i=0; i
      • \"><%if(segments[i].label){%><%=segments[i].label%><%}%>
      • <%}%>
      ", - //String - A tooltip template - tooltipTemplate: "<%=value %> <%=label%> users" - }; - //Create pie or douhnut chart - // You can switch between pie and douhnut using the method below. - pieChart.Doughnut(PieData, pieOptions); - //----------------- - //- END PIE CHART - - //----------------- - - /* jVector Maps - * ------------ - * Create a world map with markers - */ - $('#world-map-markers').vectorMap({ - map: 'world_mill_en', - normalizeFunction: 'polynomial', - hoverOpacity: 0.7, - hoverColor: false, - backgroundColor: 'transparent', - regionStyle: { - initial: { - fill: 'rgba(210, 214, 222, 1)', - "fill-opacity": 1, - stroke: 'none', - "stroke-width": 0, - "stroke-opacity": 1 - }, - hover: { - "fill-opacity": 0.7, - cursor: 'pointer' - }, - selected: { - fill: 'yellow' - }, - selectedHover: {} - }, - markerStyle: { - initial: { - fill: '#00a65a', - stroke: '#111' - } - }, - markers: [ - {latLng: [41.90, 12.45], name: 'Vatican City'}, - {latLng: [43.73, 7.41], name: 'Monaco'}, - {latLng: [-0.52, 166.93], name: 'Nauru'}, - {latLng: [-8.51, 179.21], name: 'Tuvalu'}, - {latLng: [43.93, 12.46], name: 'San Marino'}, - {latLng: [47.14, 9.52], name: 'Liechtenstein'}, - {latLng: [7.11, 171.06], name: 'Marshall Islands'}, - {latLng: [17.3, -62.73], name: 'Saint Kitts and Nevis'}, - {latLng: [3.2, 73.22], name: 'Maldives'}, - {latLng: [35.88, 14.5], name: 'Malta'}, - {latLng: [12.05, -61.75], name: 'Grenada'}, - {latLng: [13.16, -61.23], name: 'Saint Vincent and the Grenadines'}, - {latLng: [13.16, -59.55], name: 'Barbados'}, - {latLng: [17.11, -61.85], name: 'Antigua and Barbuda'}, - {latLng: [-4.61, 55.45], name: 'Seychelles'}, - {latLng: [7.35, 134.46], name: 'Palau'}, - {latLng: [42.5, 1.51], name: 'Andorra'}, - {latLng: [14.01, -60.98], name: 'Saint Lucia'}, - {latLng: [6.91, 158.18], name: 'Federated States of Micronesia'}, - {latLng: [1.3, 103.8], name: 'Singapore'}, - {latLng: [1.46, 173.03], name: 'Kiribati'}, - {latLng: [-21.13, -175.2], name: 'Tonga'}, - {latLng: [15.3, -61.38], name: 'Dominica'}, - {latLng: [-20.2, 57.5], name: 'Mauritius'}, - {latLng: [26.02, 50.55], name: 'Bahrain'}, - {latLng: [0.33, 6.73], name: 'São Tomé and Príncipe'} - ] - }); - - /* SPARKLINE CHARTS - * ---------------- - * Create a inline charts with spark line - */ - - //----------------- - //- SPARKLINE BAR - - //----------------- - $('.sparkbar').each(function () { - var $this = $(this); - $this.sparkline('html', { - type: 'bar', - height: $this.data('height') ? $this.data('height') : '30', - barColor: $this.data('color') - }); - }); - - //----------------- - //- SPARKLINE PIE - - //----------------- - $('.sparkpie').each(function () { - var $this = $(this); - $this.sparkline('html', { - type: 'pie', - height: $this.data('height') ? $this.data('height') : '90', - sliceColors: $this.data('color') - }); - }); - - //------------------ - //- SPARKLINE LINE - - //------------------ - $('.sparkline').each(function () { - var $this = $(this); - $this.sparkline('html', { - type: 'line', - height: $this.data('height') ? $this.data('height') : '90', - width: '100%', - lineColor: $this.data('linecolor'), - fillColor: $this.data('fillcolor'), - spotColor: $this.data('spotcolor') - }); - }); -}); diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/adminlte-options.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/adminlte-options.html deleted file mode 100644 index 69b4da6ab70a..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/adminlte-options.html +++ /dev/null @@ -1,123 +0,0 @@ -
      - -

      Modifying the options of AdminLTE's app.js can be done using one of the following ways.

      - -

      Editing app.js

      -

      Within the main Javascript file, modify the $.AdminLTE.options object to suit your use case.

      - -

      Defining AdminLTEOptions

      -

      Alternatively, you can define a global options variable named AdminLTEOptions and initialize it before loading app.js.

      -

      Example

      -
      <script>
      -  var AdminLTEOptions = {
      -    //Enable sidebar expand on hover effect for sidebar mini
      -    //This option is forced to true if both the fixed layout and sidebar mini
      -    //are used together
      -    sidebarExpandOnHover: true,
      -    //BoxRefresh Plugin
      -    enableBoxRefresh: true,
      -    //Bootstrap.js tooltip
      -    enableBSToppltip: true
      -  };
      -</script>
      -<script src="dist/js/app.js" type="text/javascript"></script>
      - -

      Available AdminLTE Options

      -
      {
      -  //Add slimscroll to navbar menus
      -  //This requires you to load the slimscroll plugin
      -  //in every page before app.js
      -  navbarMenuSlimscroll: true,
      -  navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar
      -  navbarMenuHeight: "200px", //The height of the inner menu
      -  //General animation speed for JS animated elements such as box collapse/expand and
      -  //sidebar treeview slide up/down. This options accepts an integer as milliseconds,
      -  //'fast', 'normal', or 'slow'
      -  animationSpeed: 500,
      -  //Sidebar push menu toggle button selector
      -  sidebarToggleSelector: "[data-toggle='offcanvas']",
      -  //Activate sidebar push menu
      -  sidebarPushMenu: true,
      -  //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin)
      -  sidebarSlimScroll: true,
      -  //Enable sidebar expand on hover effect for sidebar mini
      -  //This option is forced to true if both the fixed layout and sidebar mini
      -  //are used together
      -  sidebarExpandOnHover: false,
      -  //BoxRefresh Plugin
      -  enableBoxRefresh: true,
      -  //Bootstrap.js tooltip
      -  enableBSToppltip: true,
      -  BSTooltipSelector: "[data-toggle='tooltip']",
      -  //Enable Fast Click. Fastclick.js creates a more
      -  //native touch experience with touch devices. If you
      -  //choose to enable the plugin, make sure you load the script
      -  //before AdminLTE's app.js
      -  enableFastclick: true,
      -  //Control Sidebar Options
      -  enableControlSidebar: true,
      -  controlSidebarOptions: {
      -    //Which button should trigger the open/close event
      -    toggleBtnSelector: "[data-toggle='control-sidebar']",
      -    //The sidebar selector
      -    selector: ".control-sidebar",
      -    //Enable slide over content
      -    slide: true
      -  },
      -  //Box Widget Plugin. Enable this plugin
      -  //to allow boxes to be collapsed and/or removed
      -  enableBoxWidget: true,
      -  //Box Widget plugin options
      -  boxWidgetOptions: {
      -    boxWidgetIcons: {
      -      //Collapse icon
      -      collapse: 'fa-minus',
      -      //Open icon
      -      open: 'fa-plus',
      -      //Remove icon
      -      remove: 'fa-times'
      -    },
      -    boxWidgetSelectors: {
      -      //Remove button selector
      -      remove: '[data-widget="remove"]',
      -      //Collapse button selector
      -      collapse: '[data-widget="collapse"]'
      -    }
      -  },
      -  //Direct Chat plugin options
      -  directChat: {
      -    //Enable direct chat by default
      -    enable: true,
      -    //The button to open and close the chat contacts pane
      -    contactToggleSelector: '[data-widget="chat-pane-toggle"]'
      -  },
      -  //Define the set of colors to use globally around the website
      -  colors: {
      -    lightBlue: "#3c8dbc",
      -    red: "#f56954",
      -    green: "#00a65a",
      -    aqua: "#00c0ef",
      -    yellow: "#f39c12",
      -    blue: "#0073b7",
      -    navy: "#001F3F",
      -    teal: "#39CCCC",
      -    olive: "#3D9970",
      -    lime: "#01FF70",
      -    orange: "#FF851B",
      -    fuchsia: "#F012BE",
      -    purple: "#8E24AA",
      -    maroon: "#D81B60",
      -    black: "#222222",
      -    gray: "#d2d6de"
      -  },
      -  //The standard screen sizes that bootstrap uses.
      -  //If you change these in the variables.less file, change
      -  //them here too.
      -  screenSizes: {
      -    xs: 480,
      -    sm: 768,
      -    md: 992,
      -    lg: 1200
      -  }
      -}
      -
      diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/advice.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/advice.html deleted file mode 100644 index 6c0d49ea8d92..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/advice.html +++ /dev/null @@ -1,17 +0,0 @@ -
      - -

      - Before you go to see your new awesome theme, here are few tips on how to familiarize yourself with it: -

      - -
        -
      • AdminLTE is based on Bootstrap 3. If you are unfamiliar with Bootstrap, visit their website and read through the documentation. All of Bootstrap components have been modified to fit the style of AdminLTE and provide a consistent look throughout the template. This way, we guarantee you will get the best of AdminLTE.
      • -
      • Go through the pages that are bundled with the theme. Most of the template example pages contain quick tips on how to create or use a component which can be really helpful when you need to create something on the fly.
      • -
      • Documentation. We are trying our best to make your experience with AdminLTE be smooth. One way to achieve that is to provide documentation and support. If you think that something is missing from the documentation, please do not hesitate to create an issue to tell us about it.
      • -
      • Built with LESS. This theme uses the LESS compiler to make it easier to customize and use. LESS is easy to learn if you know CSS or SASS. It is not necessary to learn LESS but it will benefit you a lot in the future.
      • -
      • Hosted on GitHub. Visit our GitHub repository to view issues, make requests, or contribute to the project.
      • -
      -

      - Note: LESS files are better commented than the compiled CSS file. -

      -
      diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/browsers.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/browsers.html deleted file mode 100644 index cb841214985b..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/browsers.html +++ /dev/null @@ -1,12 +0,0 @@ -
      - -

      AdminLTE supports the following browsers:

      -
        -
      • IE9+
      • -
      • Firefox (latest)
      • -
      • Safari (latest)
      • -
      • Chrome (latest)
      • -
      • Opera (latest)
      • -
      -

      Note: IE9 does not support transitions or animations. The template will function properly but it won't use animations/transitions on IE9.

      -
      diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/components.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/components.html deleted file mode 100644 index 5606575e69a6..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/components.html +++ /dev/null @@ -1,1545 +0,0 @@ -
      - -
      -

      Reminder!

      -

      - AdminLTE uses all of Bootstrap 3 components. It's a good start to review - the Bootstrap documentation to get an idea of the various components - that this documentation does not cover. -

      -
      -
      -

      Tip!

      -

      - If you go through the example pages and would like to copy a component, right-click on - the component and choose "inspect element" to get to the HTML quicker than scanning - the HTML page. -

      -
      -

      Main Header

      -

      The main header contains the logo and navbar. Construction of the - navbar differs slightly from Bootstrap because it has components that Bootstrap doesn't provide. - The navbar can be constructed in two way. This an example for the normal navbar and next we will provide an example for - the top nav layout.

      -
      -
      - Main Header Example -
      - - - - -
      -
      -
      -
      <header class="main-header">
      -  <a href="../../index2.html" class="logo">
      -    <!-- LOGO -->
      -    AdminLTE
      -  </a>
      -  <!-- Header Navbar: style can be found in header.less -->
      -  <nav class="navbar navbar-static-top" role="navigation">
      -    <!-- Navbar Right Menu -->
      -    <div class="navbar-custom-menu">
      -      <ul class="nav navbar-nav">
      -        <!-- Messages: style can be found in dropdown.less-->
      -        <li class="dropdown messages-menu">
      -          <a href="#" class="dropdown-toggle" data-toggle="dropdown">
      -            <i class="fa fa-envelope-o"></i>
      -            <span class="label label-success">4</span>
      -          </a>
      -          <ul class="dropdown-menu">
      -            <li class="header">You have 4 messages</li>
      -            <li>
      -              <!-- inner menu: contains the actual data -->
      -              <ul class="menu">
      -                <li><!-- start message -->
      -                  <a href="#">
      -                    <div class="pull-left">
      -                      <img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image">
      -                    </div>
      -                    <h4>
      -                      Sender Name
      -                      <small><i class="fa fa-clock-o"></i> 5 mins</small>
      -                    </h4>
      -                    <p>Message Excerpt</p>
      -                  </a>
      -                </li><!-- end message -->
      -                ...
      -              </ul>
      -            </li>
      -            <li class="footer"><a href="#">See All Messages</a></li>
      -          </ul>
      -        </li>
      -        <!-- Notifications: style can be found in dropdown.less -->
      -        <li class="dropdown notifications-menu">
      -          <a href="#" class="dropdown-toggle" data-toggle="dropdown">
      -            <i class="fa fa-bell-o"></i>
      -            <span class="label label-warning">10</span>
      -          </a>
      -          <ul class="dropdown-menu">
      -            <li class="header">You have 10 notifications</li>
      -            <li>
      -              <!-- inner menu: contains the actual data -->
      -              <ul class="menu">
      -                <li>
      -                  <a href="#">
      -                    <i class="ion ion-ios-people info"></i> Notification title
      -                  </a>
      -                </li>
      -                ...
      -              </ul>
      -            </li>
      -            <li class="footer"><a href="#">View all</a></li>
      -          </ul>
      -        </li>
      -        <!-- Tasks: style can be found in dropdown.less -->
      -        <li class="dropdown tasks-menu">
      -          <a href="#" class="dropdown-toggle" data-toggle="dropdown">
      -            <i class="fa fa-flag-o"></i>
      -            <span class="label label-danger">9</span>
      -          </a>
      -          <ul class="dropdown-menu">
      -            <li class="header">You have 9 tasks</li>
      -            <li>
      -              <!-- inner menu: contains the actual data -->
      -              <ul class="menu">
      -                <li><!-- Task item -->
      -                  <a href="#">
      -                    <h3>
      -                      Design some buttons
      -                      <small class="pull-right">20%</small>
      -                    </h3>
      -                    <div class="progress xs">
      -                      <div class="progress-bar progress-bar-aqua" style="width: 20%" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100">
      -                        <span class="sr-only">20% Complete</span>
      -                      </div>
      -                    </div>
      -                  </a>
      -                </li><!-- end task item -->
      -                ...
      -              </ul>
      -            </li>
      -            <li class="footer">
      -              <a href="#">View all tasks</a>
      -            </li>
      -          </ul>
      -        </li>
      -        <!-- User Account: style can be found in dropdown.less -->
      -        <li class="dropdown user user-menu">
      -          <a href="#" class="dropdown-toggle" data-toggle="dropdown">
      -            <img src="dist/img/user2-160x160.jpg" class="user-image" alt="User Image">
      -            <span class="hidden-xs">Alexander Pierce</span>
      -          </a>
      -          <ul class="dropdown-menu">
      -            <!-- User image -->
      -            <li class="user-header">
      -              <img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image">
      -              <p>
      -                Alexander Pierce - Web Developer
      -                <small>Member since Nov. 2012</small>
      -              </p>
      -            </li>
      -            <!-- Menu Body -->
      -            <li class="user-body">
      -              <div class="col-xs-4 text-center">
      -                <a href="#">Followers</a>
      -              </div>
      -              <div class="col-xs-4 text-center">
      -                <a href="#">Sales</a>
      -              </div>
      -              <div class="col-xs-4 text-center">
      -                <a href="#">Friends</a>
      -              </div>
      -            </li>
      -            <!-- Menu Footer-->
      -            <li class="user-footer">
      -              <div class="pull-left">
      -                <a href="#" class="btn btn-default btn-flat">Profile</a>
      -              </div>
      -              <div class="pull-right">
      -                <a href="#" class="btn btn-default btn-flat">Sign out</a>
      -              </div>
      -            </li>
      -          </ul>
      -        </li>
      -      </ul>
      -    </div>
      -  </nav>
      -</header>
      -

      Top Nav Layout. Main Header Example.

      -
      -

      Reminder!

      -

      To use this main header instead of the regular one, you must add the layout-top-nav class to the body tag.

      -
      -
      -
      - Top Nav Example -
      - -
      -
      -
      -
      -<header class="main-header">
      -  <nav class="navbar navbar-static-top">
      -    <div class="container-fluid">
      -    <div class="navbar-header">
      -      <a href="../../index2.html" class="navbar-brand"><b>Admin</b>LTE</a>
      -      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse">
      -        <i class="fa fa-bars"></i>
      -      </button>
      -    </div>
      -
      -    <!-- Collect the nav links, forms, and other content for toggling -->
      -    <div class="collapse navbar-collapse" id="navbar-collapse">
      -      <ul class="nav navbar-nav">
      -        <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
      -        <li><a href="#">Link</a></li>
      -        <li class="dropdown">
      -          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <span class="caret"></span></a>
      -          <ul class="dropdown-menu" role="menu">
      -            <li><a href="#">Action</a></li>
      -            <li><a href="#">Another action</a></li>
      -            <li><a href="#">Something else here</a></li>
      -            <li class="divider"></li>
      -            <li><a href="#">Separated link</a></li>
      -            <li class="divider"></li>
      -            <li><a href="#">One more separated link</a></li>
      -          </ul>
      -        </li>
      -      </ul>
      -      <form class="navbar-form navbar-left" role="search">
      -        <div class="form-group">
      -          <input type="text" class="form-control" id="navbar-search-input" placeholder="Search">
      -        </div>
      -      </form>
      -      <ul class="nav navbar-nav navbar-right">
      -        <li><a href="#">Link</a></li>
      -        <li class="dropdown">
      -          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <span class="caret"></span></a>
      -          <ul class="dropdown-menu" role="menu">
      -            <li><a href="#">Action</a></li>
      -            <li><a href="#">Another action</a></li>
      -            <li><a href="#">Something else here</a></li>
      -            <li class="divider"></li>
      -            <li><a href="#">Separated link</a></li>
      -          </ul>
      -        </li>
      -      </ul>
      -    </div><!-- /.navbar-collapse -->
      -    </div><!-- /.container-fluid -->
      -  </nav>
      -</header>
      - - - -

      Sidebar

      -

      - The sidebar used in this page to the left provides an example of what your sidebar should like. - Construction of a sidebar: -

      -
      -<div class="main-sidebar">
      -  <!-- Inner sidebar -->
      -  <div class="sidebar">
      -    <!-- user panel (Optional) -->
      -    <div class="user-panel">
      -      <div class="pull-left image">
      -        <img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image">
      -      </div>
      -      <div class="pull-left info">
      -        <p>User Name</p>
      -
      -        <a href="#"><i class="fa fa-circle text-success"></i> Online</a>
      -      </div>
      -    </div><!-- /.user-panel -->
      -
      -    <!-- Search Form (Optional) -->
      -    <form action="#" method="get" class="sidebar-form">
      -      <div class="input-group">
      -        <input type="text" name="q" class="form-control" placeholder="Search...">
      -        <span class="input-group-btn">
      -          <button type="submit" name="search" id="search-btn" class="btn btn-flat"><i class="fa fa-search"></i></button>
      -        </span>
      -      </div>
      -    </form><!-- /.sidebar-form -->
      -
      -    <!-- Sidebar Menu -->
      -    <ul class="sidebar-menu">
      -      <li class="header">HEADER</li>
      -      <!-- Optionally, you can add icons to the links -->
      -      <li class="active"><a href="#"><span>Link</span></a><</li>
      -      <li><a href="#"><span>Another Link</span></a></li>
      -      <li class="treeview">
      -        <a href="#"><span>Multilevel</span> <i class="fa fa-angle-left pull-right"></i></a>
      -        <ul class="treeview-menu">
      -          <li><a href="#">Link in level 2</a></li>
      -          <li><a href="#">Link in level 2</a></li>
      -        </ul>
      -      </li>
      -    </ul><!-- /.sidebar-menu -->
      -
      -  </div><!-- /.sidebar -->
      -</div><!-- /.main-sidebar -->
      - -

      Control Sidebar

      -

      Control sidebar is the right side bar. It can be used for many purposes and is extremely easy - to create. The sidebar ships with two different show/hide styles. The first allows the sidebar to - slide over the content. The second pushes the content to make space for the sidebar. Either of - these methods can be set through the Javascript options.

      -

      The following code should be placed within the .wrapper div. I prefer - to place it right after the footer.

      -

      Dark Sidebar Markup

      -
      <!-- The Right Sidebar -->
      -<aside class="control-sidebar control-sidebar-dark">
      -  <!-- Content of the sidebar goes here -->
      -</aside>
      -<!-- The sidebar's background -->
      -<!-- This div must placed right after the sidebar for it to work-->
      -<div class="control-sidebar-bg"></div>
      - -

      Light Sidebar Markup

      -
      <!-- The Right Sidebar -->
      -<aside class="control-sidebar control-sidebar-light">
      -  <!-- Content of the sidebar goes here -->
      -</aside>
      -<!-- The sidebar's background -->
      -<!-- This div must placed right after the sidebar for it to work-->
      -<div class="control-sidebar-bg"></div>
      - -

      Once you create the sidebar, you will need a toggle button to open/close it. - By adding the attribute data-toggle="control-sidebar" to any button, it will - automatically act as the toggle button.

      - -

      Toggle Button Example

      -

      - -

      Sidebar Toggle Markup

      -
      <button class="btn btn-default" data-toggle="control-sidebar">Toggle Right Sidebar</button>
      - - -

      Info Box

      -

      Info boxes are used to display statistical snippets. There are two types of info boxes.

      -

      First Type of Info Boxes

      - -
      -
      -
      - -
      - Messages - 1,410 -
      -
      -
      -
      -
      - -
      - Bookmarks - 410 -
      -
      -
      -
      -
      - -
      - Uploads - 13,648 -
      -
      -
      -
      -
      - -
      - Likes - 93,139 -
      -
      -
      -
      -

      Markup

      -
      <div class="info-box">
      -  <!-- Apply any bg-* class to to the icon to color it -->
      -  <span class="info-box-icon bg-red"><i class="fa fa-star-o"></i></span>
      -  <div class="info-box-content">
      -    <span class="info-box-text">Likes</span>
      -    <span class="info-box-number">93,139</span>
      -  </div><!-- /.info-box-content -->
      -</div><!-- /.info-box -->
      - -

      Second Type of Info Boxes

      -
      -
      -
      - -
      - Bookmarks - 41,410 -
      -
      -
      - - 70% Increase in 30 Days - -
      -
      -
      -
      -
      - -
      - Likes - 41,410 -
      -
      -
      - - 70% Increase in 30 Days - -
      -
      -
      -
      -
      - -
      - Events - 41,410 -
      -
      -
      - - 70% Increase in 30 Days - -
      -
      -
      -
      -
      - -
      - Comments - 41,410 -
      -
      -
      - - 70% Increase in 30 Days - -
      -
      -
      -
      -

      Markup

      -
      <!-- Apply any bg-* class to to the info-box to color it -->
      -<div class="info-box bg-red">
      -  <span class="info-box-icon"><i class="fa fa-comments-o"></i></span>
      -  <div class="info-box-content">
      -    <span class="info-box-text">Likes</span>
      -    <span class="info-box-number">41,410</span>
      -    <!-- The progress section is optional -->
      -    <div class="progress">
      -      <div class="progress-bar" style="width: 70%"></div>
      -    </div>
      -    <span class="progress-description">
      -      70% Increase in 30 Days
      -    </span>
      -  </div><!-- /.info-box-content -->
      -</div><!-- /.info-box -->
      -

      The only thing you need to change to alternate between these style is change the placement of the bg-* class. For the - first style apply any bg-* class to the icon itself. For the other style, apply the bg-* class to the info-box div.

      - - -

      Box

      -

      The box component is the most widely used component through out this template. You can - use it for anything from displaying charts to just blocks of text. It comes in many different - styles that we will explore below.

      -

      Default Box Markup

      -
      -
      -

      Default Box Example

      -
      - - - Label -
      -
      -
      - The body of the box -
      - -
      -
      <div class="box">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Default Box Example</h3>
      -    <div class="box-tools pull-right">
      -      <!-- Buttons, labels, and many other things can be placed here! -->
      -      <!-- Here is a label for example -->
      -      <span class="label label-primary">Label</span>
      -    </div><!-- /.box-tools -->
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    The body of the box
      -  </div><!-- /.box-body -->
      -  <div class="box-footer">
      -    The footer of the box
      -  </div><!-- box-footer -->
      -</div><!-- /.box -->
      -

      Box Variants

      -

      You can change the style of the box by adding any of the contextual classes.

      -
      -
      -
      -
      -

      Default Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Primary Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Info Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -
      -

      Warning Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Success Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Danger Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      <div class="box box-default">...</div>
      -<div class="box box-primary">...</div>
      -<div class="box box-info">...</div>
      -<div class="box box-warning">...</div>
      -<div class="box box-success">...</div>
      -<div class="box box-danger">...</div>
      - -

      Solid Box

      -

      Solid Boxes are alternative ways to display boxes. - They can be created by simply adding the box-solid class to the box component. - You may also use contextual classes with you solid boxes.

      -
      -
      -
      -
      -

      Default Solid Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Primary Solid Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Info Solid Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -
      -

      Warning Solid Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Success Solid Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Danger Solid Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -<div class="box box-solid box-default">...</div>
      -<div class="box box-solid box-primary">...</div>
      -<div class="box box-solid box-info">...</div>
      -<div class="box box-solid box-warning">...</div>
      -<div class="box box-solid box-success">...</div>
      -<div class="box box-solid box-danger">...</div>
      -

      Box Tools

      -

      Boxes can contain tools to deploy a specific event or provide simple info. The following examples makes use - of multiple AdminLTE components within the header of the box.

      -

      AdminLTE data-widget attribute provides boxes with the ability to collapse or be removed. The buttons - are placed in the box-tools which is placed in the box-header.

      -
      -<!-- This will cause the box to be removed when clicked -->
      -<button class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove"><i class="fa fa-times"></i></button>
      -<!-- This will cause the box to collapse when clicked -->
      -<button class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse"><i class="fa fa-minus"></i></button>
      -
      -
      -
      -
      -

      Collapsable

      -
      - -
      -
      -
      - The body of the box -
      -
      -
      -<div class="box box-default">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Collapsable</h3>
      -    <div class="box-tools pull-right">
      -      <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
      -    </div><!-- /.box-tools -->
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    The body of the box
      -  </div><!-- /.box-body -->
      -</div><!-- /.box -->
      -
      -
      -
      -
      -

      Removable

      -
      - -
      -
      -
      - The body of the box -
      -
      -
      -<div class="box box-default">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Removable</h3>
      -    <div class="box-tools pull-right">
      -      <button class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
      -    </div><!-- /.box-tools -->
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    The body of the box
      -  </div><!-- /.box-body -->
      -</div><!-- /.box -->
      -
      -
      -
      -
      -

      Expandable

      -
      - -
      -
      -
      - The body of the box -
      -
      -
      -<div class="box box-default collapsed-box">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Expandable</h3>
      -    <div class="box-tools pull-right">
      -      <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-plus"></i></button>
      -    </div><!-- /.box-tools -->
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    The body of the box
      -  </div><!-- /.box-body -->
      -</div><!-- /.box -->
      -
      -
      -

      We can also add labels, badges, pagination, tooltips, inputs and many more in the box tools. A few examples:

      -
      -
      -
      -
      -

      Labels

      -
      - Some Label -
      -
      -
      - The body of the box -
      -
      -
      -<div class="box box-default">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Labels</h3>
      -    <div class="box-tools pull-right">
      -      <span class="label label-default">8 New Messages</span>
      -    </div><!-- /.box-tools -->
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    The body of the box
      -  </div><!-- /.box-body -->
      -</div><!-- /.box -->
      -
      -
      -
      -
      -

      Input

      -
      -
      - - -
      -
      -
      -
      - The body of the box -
      -
      -
      -<div class="box box-default">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Input</h3>
      -    <div class="box-tools pull-right">
      -      <div class="has-feedback">
      -        <input type="text" class="form-control input-sm" placeholder="Search...">
      -        <span class="glyphicon glyphicon-search form-control-feedback"></span>
      -      </div>
      -    </div><!-- /.box-tools -->
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    The body of the box
      -  </div><!-- /.box-body -->
      -</div><!-- /.box -->
      -
      -
      -
      -
      -

      Tootips on buttons

      -
      - - -
      -
      -
      - The body of the box -
      -
      -
      -<div class="box box-default">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Tooltips on buttons</h3>
      -    <div class="box-tools pull-right">
      -      <button class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse"><i class="fa fa-minus"></i></button>
      -      <button class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove"><i class="fa fa-times"></i></button>
      -    </div><!-- /.box-tools -->
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    The body of the box
      -  </div><!-- /.box-body -->
      -</div><!-- /.box -->
      -
      -
      -

      - If you inserted a box into the document after app.js was loaded, you have to activate - the collapse/remove buttons explicitly by calling .activateBox(): -

      -
      <script>
      -    $("#box-widget").activateBox();
      -</script>
      - -

      Loading States

      -
      -
      -
      -
      -

      Loading state

      -
      -
      - The body of the box -
      - -
      - -
      - -
      -
      - -
      -
      -
      -

      Loading state (.box-solid)

      -
      -
      - The body of the box -
      - -
      - -
      - -
      -
      -
      -

      - To simulate a loading state, simply place this code before the .box closing tag. -

      -
      <div class="overlay">
      -  <i class="fa fa-refresh fa-spin"></i>
      -</div>
      -
      -

      Direct Chat

      -

      The direct chat widget extends the box component to create a beautiful chat interface. This widget - consists of a required messages pane and an optional contacts pane. Examples:

      - -
      -
      - -
      -
      -

      Direct Chat

      -
      - 3 - - - -
      -
      -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - message user image -
      - Is this template really for free? That's unbelievable! -
      -
      - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - message user image -
      - You better believe it! -
      -
      -
      - - - -
      - -
      -
      - -
      - -
      -
      -

      Direct Chat

      -
      - 3 - - - -
      -
      -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - message user image -
      - Is this template really for free? That's unbelievable! -
      -
      - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - message user image -
      - You better believe it! -
      -
      -
      - - - -
      - -
      -
      - -
      - -
      -
      -

      Direct Chat

      -
      - 3 - - - -
      -
      -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - message user image -
      - Is this template really for free? That's unbelievable! -
      -
      - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - message user image -
      - You better believe it! -
      -
      -
      - - - -
      - -
      -
      - -
      - -
      -
      -

      Direct Chat

      -
      - 3 - - - -
      -
      -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - message user image -
      - Is this template really for free? That's unbelievable! -
      -
      - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - message user image -
      - You better believe it! -
      -
      -
      - - - -
      - -
      -
      -
      -

      Direct Chat Markup

      -
      
      -<!-- Construct the box with style you want. Here we are using box-danger -->
      -<!-- Then add the class direct-chat and choose the direct-chat-* contexual class -->
      -<!-- The contextual class should match the box, so we are using direct-chat-danger -->
      -<div class="box box-danger direct-chat direct-chat-danger">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Direct Chat</h3>
      -    <div class="box-tools pull-right">
      -      <span data-toggle="tooltip" title="3 New Messages" class="badge bg-red">3</span>
      -      <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
      -      <!-- In box-tools add this button if you intend to use the contacts pane -->
      -      <button class="btn btn-box-tool" data-toggle="tooltip" title="Contacts" data-widget="chat-pane-toggle"><i class="fa fa-comments"></i></button>
      -      <button class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
      -    </div>
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    <!-- Conversations are loaded here -->
      -    <div class="direct-chat-messages">
      -      <!-- Message. Default to the left -->
      -      <div class="direct-chat-msg">
      -        <div class="direct-chat-info clearfix">
      -          <span class="direct-chat-name pull-left">Alexander Pierce</span>
      -          <span class="direct-chat-timestamp pull-right">23 Jan 2:00 pm</span>
      -        </div><!-- /.direct-chat-info -->
      -        <img class="direct-chat-img" src="../dist/img/user1-128x128.jpg" alt="message user image"><!-- /.direct-chat-img -->
      -        <div class="direct-chat-text">
      -          Is this template really for free? That's unbelievable!
      -        </div><!-- /.direct-chat-text -->
      -      </div><!-- /.direct-chat-msg -->
      -
      -      <!-- Message to the right -->
      -      <div class="direct-chat-msg right">
      -        <div class="direct-chat-info clearfix">
      -          <span class="direct-chat-name pull-right">Sarah Bullock</span>
      -          <span class="direct-chat-timestamp pull-left">23 Jan 2:05 pm</span>
      -        </div><!-- /.direct-chat-info -->
      -        <img class="direct-chat-img" src="../dist/img/user3-128x128.jpg" alt="message user image"><!-- /.direct-chat-img -->
      -        <div class="direct-chat-text">
      -          You better believe it!
      -        </div><!-- /.direct-chat-text -->
      -      </div><!-- /.direct-chat-msg -->
      -    </div><!--/.direct-chat-messages-->
      -
      -    <!-- Contacts are loaded here -->
      -    <div class="direct-chat-contacts">
      -      <ul class="contacts-list">
      -        <li>
      -          <a href="#">
      -            <img class="contacts-list-img" src="../dist/img/user1-128x128.jpg" alt="Contact Avatar">
      -            <div class="contacts-list-info">
      -              <span class="contacts-list-name">
      -                Count Dracula
      -                <small class="contacts-list-date pull-right">2/28/2015</small>
      -              </span>
      -              <span class="contacts-list-msg">How have you been? I was...</span>
      -            </div><!-- /.contacts-list-info -->
      -          </a>
      -        </li><!-- End Contact Item -->
      -      </ul><!-- /.contatcts-list -->
      -    </div><!-- /.direct-chat-pane -->
      -  </div><!-- /.box-body -->
      -  <div class="box-footer">
      -    <div class="input-group">
      -      <input type="text" name="message" placeholder="Type Message ..." class="form-control">
      -      <span class="input-group-btn">
      -        <button type="button" class="btn btn-danger btn-flat">Send</button>
      -      </span>
      -    </div>
      -  </div><!-- /.box-footer-->
      -</div><!--/.direct-chat -->
      -
      - -

      Of course you can use direct chat with a solid box by adding the class solid-box to the box. Here are a couple of examples:

      - - -
      -
      - -
      -
      -

      Direct Chat in a Solid Box

      -
      - 3 - - - -
      -
      -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - message user image -
      - Is this template really for free? That's unbelievable! -
      -
      - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - message user image -
      - You better believe it! -
      -
      -
      - - - -
      - -
      -
      - -
      - -
      -
      -

      Direct Chat in a Solid Box

      -
      - 3 - - - -
      -
      -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - message user image -
      - Is this template really for free? That's unbelievable! -
      -
      - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - message user image -
      - You better believe it! -
      -
      -
      - - - -
      - -
      -
      -
      -
      diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/dependencies.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/dependencies.html deleted file mode 100644 index 495e9074b447..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/dependencies.html +++ /dev/null @@ -1,10 +0,0 @@ -
      - -

      AdminLTE depends on two main frameworks. - The downloadable package contains both of these libraries, so you don't have to manually download them.

      - -
      diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/download.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/download.html deleted file mode 100644 index b8f0b47bed6b..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/download.html +++ /dev/null @@ -1,48 +0,0 @@ -
      - -

      - AdminLTE can be downloaded in two different versions, each appealing to different skill levels and use case. -

      -
      -
      -
      -
      -

      Ready

      - -
      -
      -

      Compiled and ready to use in production. Download this version if you don't want to customize AdminLTE's LESS files.

      - Download -
      -
      -
      -
      -
      -
      -

      Source Code

      - -
      -
      -

      All files including the compiled CSS. Download this version if you plan on customizing the template. Requires a LESS compiler.

      - Download -
      -
      -
      -
      -
      File Hierarchy of the Source Code Package
      -
      -AdminLTE/
      -├── dist/
      -│   ├── CSS/
      -│   ├── JS
      -│   ├── img
      -├── build/
      -│   ├── less/
      -│   │   ├── AdminLTE's Less files
      -│   └── Bootstrap-less/ (Only for reference. No modifications have been made)
      -│       ├── mixins/
      -│       ├── variables.less
      -│       ├── mixins.less
      -└── plugins/
      -    ├── All the customized plugins CSS and JS files
      -
      diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/faq.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/faq.html deleted file mode 100644 index 9c4bae6a9ccb..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/faq.html +++ /dev/null @@ -1,12 +0,0 @@ -
      - -

      Can AdminLTE be used with Wordpress?

      -

      AdminLTE is an HTML template that can be used for any purpose. However, it is not made to be easily installed on Wordpress. It will require some effort and enough knowledge of the Wordpress script to do so.

      - -

      Is there an integration guide for PHP frameworks such as Yii or Symfony?

      -

      Short answer, no. However, there are forks and tutorials around the web that provide info on how to integrate with many different frameworks. There are even versions of AdminLTE that are integrated with jQuery ajax, AngularJS and/or MVC5 ASP .NET.

      - -

      How do I get notified of new AdminLTE versions?

      -

      The best option is to subscribe to our mailing list using the subscription form on Almsaeed Studio. - If that's not appealing to you, you may watch the repository on Github or visit Almsaeed Studio every now and then for updates and announcements.

      -
      diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/implementations.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/implementations.html deleted file mode 100644 index 0399a0991f50..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/implementations.html +++ /dev/null @@ -1,18 +0,0 @@ -
      - -

      Thanks to many of AdminLTE users, there are multiple implementations of the template - for easy integration with back-end frameworks. The following are some of them:

      - - - -

      Note: these implementations are not supported by Almsaeed Studio. However, - they do provide a good example of how to integrate AdminLTE into different frameworks. For the latest release - of AdminLTE, please visit our repository or website

      -
      diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/introduction.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/introduction.html deleted file mode 100644 index 3a888506ac9e..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/introduction.html +++ /dev/null @@ -1,12 +0,0 @@ -
      - -

      - AdminLTE is a popular open source WebApp template for admin dashboards and control panels. - It is a responsive HTML template that is based on the CSS framework Bootstrap 3. - It utilizes all of the Bootstrap components in its design and re-styles many - commonly used plugins to create a consistent design that can be used as a user - interface for backend applications. AdminLTE is based on a modular design, which - allows it to be easily customized and built upon. This documentation will guide you through - installing the template and exploring the various components that are bundled with the template. -

      -
      diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/layout.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/layout.html deleted file mode 100644 index 8e046265b853..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/layout.html +++ /dev/null @@ -1,92 +0,0 @@ -
      - -

      The layout consists of four major parts:

      -
        -
      • Wrapper .wrapper. A div that wraps the whole site.
      • -
      • Main Header .main-header. Contains the logo and navbar.
      • -
      • Sidebar .sidebar-wrapper. Contains the user panel and sidebar menu.
      • -
      • Content .content-wrapper. Contains the page header and content.
      • -
      -
      -

      Tip!

      -

      The starter page is a good place to start building your app if you'd like to start from scratch.

      -
      - -

      Layout Options

      -

      AdminLTE 2.0 provides a set of options to apply to your main layout. Each on of these classes can be added - to the body tag to get the desired goal.

      -
        -
      • Fixed: use the class .fixed to get a fixed header and sidebar.
      • -
      • Collapsed Sidebar: use the class .sidebar-collapse to have a collapsed sidebar upon loading.
      • -
      • Boxed Layout: use the class .layout-boxed to get a boxed layout that stretches only to 1250px.
      • -
      • Top Navigation use the class .layout-top-nav to remove the sidebar and have your links at the top navbar.
      • -
      -

      Note: you cannot use both layout-boxed and fixed at the same time. Anything else can be mixed together.

      - -

      Skins

      -

      Skins can be found in the dist/css/skins folder. - Choose and the skin file that you want then add the appropriate - class to the body tag to change the template's appearance. Here is the list of available skins:

      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Skin ClassPreview
      skin-blue
      skin-blue-light
      skin-yellow
      skin-yellow-light
      skin-green
      skin-green-light
      skin-purple
      skin-purple-light
      skin-red
      skin-red-light
      skin-black
      skin-black-light
      -
      -
      -
      diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/license.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/license.html deleted file mode 100644 index b326240be844..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/license.html +++ /dev/null @@ -1,10 +0,0 @@ -
      - -

      AdminLTE

      -

      - AdminLTE is an open source project that is licensed under the MIT license. - This allows you to do pretty much anything you want as long as you include - the copyright in "all copies or substantial portions of the Software." - Attribution is not required (though very much appreciated). -

      -
      diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/plugins.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/plugins.html deleted file mode 100644 index e3a8779aa685..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/plugins.html +++ /dev/null @@ -1,47 +0,0 @@ -
      - -

      AdminLTE makes use of the following plugins. For documentation, updates or license information, please visit the provided links.

      - -
      diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/upgrade.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/upgrade.html deleted file mode 100644 index d339bc6f51db..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/include/upgrade.html +++ /dev/null @@ -1,26 +0,0 @@ -
      - -

      To upgrade from version 1.x to the lateset version, follow this guide.

      -

      New Files

      -

      Make sure you update all CSS and JS files that are related to AdminLTE. Otherwise, the layout will not - function properly. Most important files are AdminLTE.css, skins CSS files, and app.js.

      -

      Layout Changes

      -
        -
      1. The .wrapper div must be placed immediately after the body tag rather than after the header
      2. -
      3. Change the .header div to .main-header <div class="main-header">
      4. -
      5. Change the .right-side class to .content-wrapper <div class="content-wrapper">
      6. -
      7. Change the .left-side class to .main-sidebar <div class="main-sidebar">
      8. -
      9. In the navbar, change .navbar-right to .navbar-custom-menu <div class="navbar-custom-menu">
      10. -
      -

      Navbar Custom Dropdown Menus

      -
        -
      1. The icons in the notification menu do not need bg-* classes. They should be replaced with contextual text color class such as text-aqua or text-red.
      2. -
      -

      Login, Registration and Lockscreen Pages

      -

      There are major changes to the HTML markup and style to these pages. The best way is to copy the page's code and customize it.

      -

      And you should be set to go!

      -

      Mailbox

      -

      Mailbox got an upgrade to include three different views. The views are inbox, read mail, and compose new email. To use these views, - you should use the provided HTML files in the pages/mailbox folder.

      -

      Note: the old mailbox layout has been deprecated in favor of the new one and will be removed by the next release.

      -
      diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/index.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/index.html deleted file mode 100644 index e348f2b1485d..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/build/index.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - AdminLTE 2 | Documentation - - - - - - - - - - - - - - - - - -
      - -
      - - - - - -
      - - - - -
      - -
      -

      - AdminLTE Documentation - Current version 2.3.0 -

      - -
      - - -
      - -include "introduction.html" - - - -include "download.html" - - - -include "dependencies.html" - - - -include "advice.html" - - - -include "layout.html" - - - -include "adminlte-options.html" - - - -include "components.html" - - - -include "plugins.html" - - - -include "browsers.html" - - - -include "upgrade.html" - - - -include "implementations.html" - - - -include "faq.html" - - - -include "license.html" - -
      -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights reserved. -
      - - - - -
      - -
      - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/docs.js b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/docs.js deleted file mode 100644 index c89ae54f7abd..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/docs.js +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Documentation JS script - */ -$(function () { - var slideToTop = $("
      "); - slideToTop.html(''); - slideToTop.css({ - position: 'fixed', - bottom: '20px', - right: '25px', - width: '40px', - height: '40px', - color: '#eee', - 'font-size': '', - 'line-height': '40px', - 'text-align': 'center', - 'background-color': '#222d32', - cursor: 'pointer', - 'border-radius': '5px', - 'z-index': '99999', - opacity: '.7', - 'display': 'none' - }); - slideToTop.on('mouseenter', function () { - $(this).css('opacity', '1'); - }); - slideToTop.on('mouseout', function () { - $(this).css('opacity', '.7'); - }); - $('.wrapper').append(slideToTop); - $(window).scroll(function () { - if ($(window).scrollTop() >= 150) { - if (!$(slideToTop).is(':visible')) { - $(slideToTop).fadeIn(500); - } - } else { - $(slideToTop).fadeOut(500); - } - }); - $(slideToTop).click(function () { - $("body").animate({ - scrollTop: 0 - }, 500); - }); - $(".sidebar-menu li:not(.treeview) a").click(function () { - var $this = $(this); - var target = $this.attr("href"); - if (typeof target === 'string') { - $("body").animate({ - scrollTop: ($(target).offset().top) + "px" - }, 500); - } - }); - //Skin switcher - var current_skin = "skin-blue"; - $('#layout-skins-list [data-skin]').click(function(e) { - e.preventDefault(); - var skinName = $(this).data('skin'); - $('body').removeClass(current_skin); - $('body').addClass(skinName); - current_skin = skinName; - }); -}); diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/index.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/index.html deleted file mode 100644 index adb7a2ebf3ef..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/index.html +++ /dev/null @@ -1,2164 +0,0 @@ - - - - - - AdminLTE 2 | Documentation - - - - - - - - - - - - - - - - - -
      - -
      - - - - - -
      - - - - -
      - -
      -

      - AdminLTE Documentation - Current version 2.3.0 -

      - -
      - - -
      - -
      - -

      - AdminLTE is a popular open source WebApp template for admin dashboards and control panels. - It is a responsive HTML template that is based on the CSS framework Bootstrap 3. - It utilizes all of the Bootstrap components in its design and re-styles many - commonly used plugins to create a consistent design that can be used as a user - interface for backend applications. AdminLTE is based on a modular design, which - allows it to be easily customized and built upon. This documentation will guide you through - installing the template and exploring the various components that are bundled with the template. -

      -
      - - - - -
      - -

      - AdminLTE can be downloaded in two different versions, each appealing to different skill levels and use case. -

      -
      -
      -
      -
      -

      Ready

      - -
      -
      -

      Compiled and ready to use in production. Download this version if you don't want to customize AdminLTE's LESS files.

      - Download -
      -
      -
      -
      -
      -
      -

      Source Code

      - -
      -
      -

      All files including the compiled CSS. Download this version if you plan on customizing the template. Requires a LESS compiler.

      - Download -
      -
      -
      -
      -
      File Hierarchy of the Source Code Package
      -
      -AdminLTE/
      -├── dist/
      -│   ├── CSS/
      -│   ├── JS
      -│   ├── img
      -├── build/
      -│   ├── less/
      -│   │   ├── AdminLTE's Less files
      -│   └── Bootstrap-less/ (Only for reference. No modifications have been made)
      -│       ├── mixins/
      -│       ├── variables.less
      -│       ├── mixins.less
      -└── plugins/
      -    ├── All the customized plugins CSS and JS files
      -
      - - - - -
      - -

      AdminLTE depends on two main frameworks. - The downloadable package contains both of these libraries, so you don't have to manually download them.

      - -
      - - - - -
      - -

      - Before you go to see your new awesome theme, here are few tips on how to familiarize yourself with it: -

      - -
        -
      • AdminLTE is based on Bootstrap 3. If you are unfamiliar with Bootstrap, visit their website and read through the documentation. All of Bootstrap components have been modified to fit the style of AdminLTE and provide a consistent look throughout the template. This way, we guarantee you will get the best of AdminLTE.
      • -
      • Go through the pages that are bundled with the theme. Most of the template example pages contain quick tips on how to create or use a component which can be really helpful when you need to create something on the fly.
      • -
      • Documentation. We are trying our best to make your experience with AdminLTE be smooth. One way to achieve that is to provide documentation and support. If you think that something is missing from the documentation, please do not hesitate to create an issue to tell us about it.
      • -
      • Built with LESS. This theme uses the LESS compiler to make it easier to customize and use. LESS is easy to learn if you know CSS or SASS. It is not necessary to learn LESS but it will benefit you a lot in the future.
      • -
      • Hosted on GitHub. Visit our GitHub repository to view issues, make requests, or contribute to the project.
      • -
      -

      - Note: LESS files are better commented than the compiled CSS file. -

      -
      - - - - -
      - -

      The layout consists of four major parts:

      -
        -
      • Wrapper .wrapper. A div that wraps the whole site.
      • -
      • Main Header .main-header. Contains the logo and navbar.
      • -
      • Sidebar .sidebar-wrapper. Contains the user panel and sidebar menu.
      • -
      • Content .content-wrapper. Contains the page header and content.
      • -
      -
      -

      Tip!

      -

      The starter page is a good place to start building your app if you'd like to start from scratch.

      -
      - -

      Layout Options

      -

      AdminLTE 2.0 provides a set of options to apply to your main layout. Each on of these classes can be added - to the body tag to get the desired goal.

      -
        -
      • Fixed: use the class .fixed to get a fixed header and sidebar.
      • -
      • Collapsed Sidebar: use the class .sidebar-collapse to have a collapsed sidebar upon loading.
      • -
      • Boxed Layout: use the class .layout-boxed to get a boxed layout that stretches only to 1250px.
      • -
      • Top Navigation use the class .layout-top-nav to remove the sidebar and have your links at the top navbar.
      • -
      -

      Note: you cannot use both layout-boxed and fixed at the same time. Anything else can be mixed together.

      - -

      Skins

      -

      Skins can be found in the dist/css/skins folder. - Choose and the skin file that you want then add the appropriate - class to the body tag to change the template's appearance. Here is the list of available skins:

      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Skin ClassPreview
      skin-blue
      skin-blue-light
      skin-yellow
      skin-yellow-light
      skin-green
      skin-green-light
      skin-purple
      skin-purple-light
      skin-red
      skin-red-light
      skin-black
      skin-black-light
      -
      -
      -
      - - - - -
      - -

      Modifying the options of AdminLTE's app.js can be done using one of the following ways.

      - -

      Editing app.js

      -

      Within the main Javascript file, modify the $.AdminLTE.options object to suit your use case.

      - -

      Defining AdminLTEOptions

      -

      Alternatively, you can define a global options variable named AdminLTEOptions and initialize it before loading app.js.

      -

      Example

      -
      <script>
      -  var AdminLTEOptions = {
      -    //Enable sidebar expand on hover effect for sidebar mini
      -    //This option is forced to true if both the fixed layout and sidebar mini
      -    //are used together
      -    sidebarExpandOnHover: true,
      -    //BoxRefresh Plugin
      -    enableBoxRefresh: true,
      -    //Bootstrap.js tooltip
      -    enableBSToppltip: true
      -  };
      -</script>
      -<script src="dist/js/app.js" type="text/javascript"></script>
      - -

      Available AdminLTE Options

      -
      {
      -  //Add slimscroll to navbar menus
      -  //This requires you to load the slimscroll plugin
      -  //in every page before app.js
      -  navbarMenuSlimscroll: true,
      -  navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar
      -  navbarMenuHeight: "200px", //The height of the inner menu
      -  //General animation speed for JS animated elements such as box collapse/expand and
      -  //sidebar treeview slide up/down. This options accepts an integer as milliseconds,
      -  //'fast', 'normal', or 'slow'
      -  animationSpeed: 500,
      -  //Sidebar push menu toggle button selector
      -  sidebarToggleSelector: "[data-toggle='offcanvas']",
      -  //Activate sidebar push menu
      -  sidebarPushMenu: true,
      -  //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin)
      -  sidebarSlimScroll: true,
      -  //Enable sidebar expand on hover effect for sidebar mini
      -  //This option is forced to true if both the fixed layout and sidebar mini
      -  //are used together
      -  sidebarExpandOnHover: false,
      -  //BoxRefresh Plugin
      -  enableBoxRefresh: true,
      -  //Bootstrap.js tooltip
      -  enableBSToppltip: true,
      -  BSTooltipSelector: "[data-toggle='tooltip']",
      -  //Enable Fast Click. Fastclick.js creates a more
      -  //native touch experience with touch devices. If you
      -  //choose to enable the plugin, make sure you load the script
      -  //before AdminLTE's app.js
      -  enableFastclick: true,
      -  //Control Sidebar Options
      -  enableControlSidebar: true,
      -  controlSidebarOptions: {
      -    //Which button should trigger the open/close event
      -    toggleBtnSelector: "[data-toggle='control-sidebar']",
      -    //The sidebar selector
      -    selector: ".control-sidebar",
      -    //Enable slide over content
      -    slide: true
      -  },
      -  //Box Widget Plugin. Enable this plugin
      -  //to allow boxes to be collapsed and/or removed
      -  enableBoxWidget: true,
      -  //Box Widget plugin options
      -  boxWidgetOptions: {
      -    boxWidgetIcons: {
      -      //Collapse icon
      -      collapse: 'fa-minus',
      -      //Open icon
      -      open: 'fa-plus',
      -      //Remove icon
      -      remove: 'fa-times'
      -    },
      -    boxWidgetSelectors: {
      -      //Remove button selector
      -      remove: '[data-widget="remove"]',
      -      //Collapse button selector
      -      collapse: '[data-widget="collapse"]'
      -    }
      -  },
      -  //Direct Chat plugin options
      -  directChat: {
      -    //Enable direct chat by default
      -    enable: true,
      -    //The button to open and close the chat contacts pane
      -    contactToggleSelector: '[data-widget="chat-pane-toggle"]'
      -  },
      -  //Define the set of colors to use globally around the website
      -  colors: {
      -    lightBlue: "#3c8dbc",
      -    red: "#f56954",
      -    green: "#00a65a",
      -    aqua: "#00c0ef",
      -    yellow: "#f39c12",
      -    blue: "#0073b7",
      -    navy: "#001F3F",
      -    teal: "#39CCCC",
      -    olive: "#3D9970",
      -    lime: "#01FF70",
      -    orange: "#FF851B",
      -    fuchsia: "#F012BE",
      -    purple: "#8E24AA",
      -    maroon: "#D81B60",
      -    black: "#222222",
      -    gray: "#d2d6de"
      -  },
      -  //The standard screen sizes that bootstrap uses.
      -  //If you change these in the variables.less file, change
      -  //them here too.
      -  screenSizes: {
      -    xs: 480,
      -    sm: 768,
      -    md: 992,
      -    lg: 1200
      -  }
      -}
      -
      - - - - -
      - -
      -

      Reminder!

      -

      - AdminLTE uses all of Bootstrap 3 components. It's a good start to review - the Bootstrap documentation to get an idea of the various components - that this documentation does not cover. -

      -
      -
      -

      Tip!

      -

      - If you go through the example pages and would like to copy a component, right-click on - the component and choose "inspect element" to get to the HTML quicker than scanning - the HTML page. -

      -
      -

      Main Header

      -

      The main header contains the logo and navbar. Construction of the - navbar differs slightly from Bootstrap because it has components that Bootstrap doesn't provide. - The navbar can be constructed in two way. This an example for the normal navbar and next we will provide an example for - the top nav layout.

      -
      -
      - Main Header Example -
      - - - - -
      -
      -
      -
      <header class="main-header">
      -  <a href="../../index2.html" class="logo">
      -    <!-- LOGO -->
      -    AdminLTE
      -  </a>
      -  <!-- Header Navbar: style can be found in header.less -->
      -  <nav class="navbar navbar-static-top" role="navigation">
      -    <!-- Navbar Right Menu -->
      -    <div class="navbar-custom-menu">
      -      <ul class="nav navbar-nav">
      -        <!-- Messages: style can be found in dropdown.less-->
      -        <li class="dropdown messages-menu">
      -          <a href="#" class="dropdown-toggle" data-toggle="dropdown">
      -            <i class="fa fa-envelope-o"></i>
      -            <span class="label label-success">4</span>
      -          </a>
      -          <ul class="dropdown-menu">
      -            <li class="header">You have 4 messages</li>
      -            <li>
      -              <!-- inner menu: contains the actual data -->
      -              <ul class="menu">
      -                <li><!-- start message -->
      -                  <a href="#">
      -                    <div class="pull-left">
      -                      <img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image">
      -                    </div>
      -                    <h4>
      -                      Sender Name
      -                      <small><i class="fa fa-clock-o"></i> 5 mins</small>
      -                    </h4>
      -                    <p>Message Excerpt</p>
      -                  </a>
      -                </li><!-- end message -->
      -                ...
      -              </ul>
      -            </li>
      -            <li class="footer"><a href="#">See All Messages</a></li>
      -          </ul>
      -        </li>
      -        <!-- Notifications: style can be found in dropdown.less -->
      -        <li class="dropdown notifications-menu">
      -          <a href="#" class="dropdown-toggle" data-toggle="dropdown">
      -            <i class="fa fa-bell-o"></i>
      -            <span class="label label-warning">10</span>
      -          </a>
      -          <ul class="dropdown-menu">
      -            <li class="header">You have 10 notifications</li>
      -            <li>
      -              <!-- inner menu: contains the actual data -->
      -              <ul class="menu">
      -                <li>
      -                  <a href="#">
      -                    <i class="ion ion-ios-people info"></i> Notification title
      -                  </a>
      -                </li>
      -                ...
      -              </ul>
      -            </li>
      -            <li class="footer"><a href="#">View all</a></li>
      -          </ul>
      -        </li>
      -        <!-- Tasks: style can be found in dropdown.less -->
      -        <li class="dropdown tasks-menu">
      -          <a href="#" class="dropdown-toggle" data-toggle="dropdown">
      -            <i class="fa fa-flag-o"></i>
      -            <span class="label label-danger">9</span>
      -          </a>
      -          <ul class="dropdown-menu">
      -            <li class="header">You have 9 tasks</li>
      -            <li>
      -              <!-- inner menu: contains the actual data -->
      -              <ul class="menu">
      -                <li><!-- Task item -->
      -                  <a href="#">
      -                    <h3>
      -                      Design some buttons
      -                      <small class="pull-right">20%</small>
      -                    </h3>
      -                    <div class="progress xs">
      -                      <div class="progress-bar progress-bar-aqua" style="width: 20%" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100">
      -                        <span class="sr-only">20% Complete</span>
      -                      </div>
      -                    </div>
      -                  </a>
      -                </li><!-- end task item -->
      -                ...
      -              </ul>
      -            </li>
      -            <li class="footer">
      -              <a href="#">View all tasks</a>
      -            </li>
      -          </ul>
      -        </li>
      -        <!-- User Account: style can be found in dropdown.less -->
      -        <li class="dropdown user user-menu">
      -          <a href="#" class="dropdown-toggle" data-toggle="dropdown">
      -            <img src="dist/img/user2-160x160.jpg" class="user-image" alt="User Image">
      -            <span class="hidden-xs">Alexander Pierce</span>
      -          </a>
      -          <ul class="dropdown-menu">
      -            <!-- User image -->
      -            <li class="user-header">
      -              <img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image">
      -              <p>
      -                Alexander Pierce - Web Developer
      -                <small>Member since Nov. 2012</small>
      -              </p>
      -            </li>
      -            <!-- Menu Body -->
      -            <li class="user-body">
      -              <div class="col-xs-4 text-center">
      -                <a href="#">Followers</a>
      -              </div>
      -              <div class="col-xs-4 text-center">
      -                <a href="#">Sales</a>
      -              </div>
      -              <div class="col-xs-4 text-center">
      -                <a href="#">Friends</a>
      -              </div>
      -            </li>
      -            <!-- Menu Footer-->
      -            <li class="user-footer">
      -              <div class="pull-left">
      -                <a href="#" class="btn btn-default btn-flat">Profile</a>
      -              </div>
      -              <div class="pull-right">
      -                <a href="#" class="btn btn-default btn-flat">Sign out</a>
      -              </div>
      -            </li>
      -          </ul>
      -        </li>
      -      </ul>
      -    </div>
      -  </nav>
      -</header>
      -

      Top Nav Layout. Main Header Example.

      -
      -

      Reminder!

      -

      To use this main header instead of the regular one, you must add the layout-top-nav class to the body tag.

      -
      -
      -
      - Top Nav Example -
      - -
      -
      -
      -
      -<header class="main-header">
      -  <nav class="navbar navbar-static-top">
      -    <div class="container-fluid">
      -    <div class="navbar-header">
      -      <a href="../../index2.html" class="navbar-brand"><b>Admin</b>LTE</a>
      -      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse">
      -        <i class="fa fa-bars"></i>
      -      </button>
      -    </div>
      -
      -    <!-- Collect the nav links, forms, and other content for toggling -->
      -    <div class="collapse navbar-collapse" id="navbar-collapse">
      -      <ul class="nav navbar-nav">
      -        <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
      -        <li><a href="#">Link</a></li>
      -        <li class="dropdown">
      -          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <span class="caret"></span></a>
      -          <ul class="dropdown-menu" role="menu">
      -            <li><a href="#">Action</a></li>
      -            <li><a href="#">Another action</a></li>
      -            <li><a href="#">Something else here</a></li>
      -            <li class="divider"></li>
      -            <li><a href="#">Separated link</a></li>
      -            <li class="divider"></li>
      -            <li><a href="#">One more separated link</a></li>
      -          </ul>
      -        </li>
      -      </ul>
      -      <form class="navbar-form navbar-left" role="search">
      -        <div class="form-group">
      -          <input type="text" class="form-control" id="navbar-search-input" placeholder="Search">
      -        </div>
      -      </form>
      -      <ul class="nav navbar-nav navbar-right">
      -        <li><a href="#">Link</a></li>
      -        <li class="dropdown">
      -          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <span class="caret"></span></a>
      -          <ul class="dropdown-menu" role="menu">
      -            <li><a href="#">Action</a></li>
      -            <li><a href="#">Another action</a></li>
      -            <li><a href="#">Something else here</a></li>
      -            <li class="divider"></li>
      -            <li><a href="#">Separated link</a></li>
      -          </ul>
      -        </li>
      -      </ul>
      -    </div><!-- /.navbar-collapse -->
      -    </div><!-- /.container-fluid -->
      -  </nav>
      -</header>
      - - - -

      Sidebar

      -

      - The sidebar used in this page to the left provides an example of what your sidebar should like. - Construction of a sidebar: -

      -
      -<div class="main-sidebar">
      -  <!-- Inner sidebar -->
      -  <div class="sidebar">
      -    <!-- user panel (Optional) -->
      -    <div class="user-panel">
      -      <div class="pull-left image">
      -        <img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image">
      -      </div>
      -      <div class="pull-left info">
      -        <p>User Name</p>
      -
      -        <a href="#"><i class="fa fa-circle text-success"></i> Online</a>
      -      </div>
      -    </div><!-- /.user-panel -->
      -
      -    <!-- Search Form (Optional) -->
      -    <form action="#" method="get" class="sidebar-form">
      -      <div class="input-group">
      -        <input type="text" name="q" class="form-control" placeholder="Search...">
      -        <span class="input-group-btn">
      -          <button type="submit" name="search" id="search-btn" class="btn btn-flat"><i class="fa fa-search"></i></button>
      -        </span>
      -      </div>
      -    </form><!-- /.sidebar-form -->
      -
      -    <!-- Sidebar Menu -->
      -    <ul class="sidebar-menu">
      -      <li class="header">HEADER</li>
      -      <!-- Optionally, you can add icons to the links -->
      -      <li class="active"><a href="#"><span>Link</span></a><</li>
      -      <li><a href="#"><span>Another Link</span></a></li>
      -      <li class="treeview">
      -        <a href="#"><span>Multilevel</span> <i class="fa fa-angle-left pull-right"></i></a>
      -        <ul class="treeview-menu">
      -          <li><a href="#">Link in level 2</a></li>
      -          <li><a href="#">Link in level 2</a></li>
      -        </ul>
      -      </li>
      -    </ul><!-- /.sidebar-menu -->
      -
      -  </div><!-- /.sidebar -->
      -</div><!-- /.main-sidebar -->
      - -

      Control Sidebar

      -

      Control sidebar is the right side bar. It can be used for many purposes and is extremely easy - to create. The sidebar ships with two different show/hide styles. The first allows the sidebar to - slide over the content. The second pushes the content to make space for the sidebar. Either of - these methods can be set through the Javascript options.

      -

      The following code should be placed within the .wrapper div. I prefer - to place it right after the footer.

      -

      Dark Sidebar Markup

      -
      <!-- The Right Sidebar -->
      -<aside class="control-sidebar control-sidebar-dark">
      -  <!-- Content of the sidebar goes here -->
      -</aside>
      -<!-- The sidebar's background -->
      -<!-- This div must placed right after the sidebar for it to work-->
      -<div class="control-sidebar-bg"></div>
      - -

      Light Sidebar Markup

      -
      <!-- The Right Sidebar -->
      -<aside class="control-sidebar control-sidebar-light">
      -  <!-- Content of the sidebar goes here -->
      -</aside>
      -<!-- The sidebar's background -->
      -<!-- This div must placed right after the sidebar for it to work-->
      -<div class="control-sidebar-bg"></div>
      - -

      Once you create the sidebar, you will need a toggle button to open/close it. - By adding the attribute data-toggle="control-sidebar" to any button, it will - automatically act as the toggle button.

      - -

      Toggle Button Example

      -

      - -

      Sidebar Toggle Markup

      -
      <button class="btn btn-default" data-toggle="control-sidebar">Toggle Right Sidebar</button>
      - - -

      Info Box

      -

      Info boxes are used to display statistical snippets. There are two types of info boxes.

      -

      First Type of Info Boxes

      - -
      -
      -
      - -
      - Messages - 1,410 -
      -
      -
      -
      -
      - -
      - Bookmarks - 410 -
      -
      -
      -
      -
      - -
      - Uploads - 13,648 -
      -
      -
      -
      -
      - -
      - Likes - 93,139 -
      -
      -
      -
      -

      Markup

      -
      <div class="info-box">
      -  <!-- Apply any bg-* class to to the icon to color it -->
      -  <span class="info-box-icon bg-red"><i class="fa fa-star-o"></i></span>
      -  <div class="info-box-content">
      -    <span class="info-box-text">Likes</span>
      -    <span class="info-box-number">93,139</span>
      -  </div><!-- /.info-box-content -->
      -</div><!-- /.info-box -->
      - -

      Second Type of Info Boxes

      -
      -
      -
      - -
      - Bookmarks - 41,410 -
      -
      -
      - - 70% Increase in 30 Days - -
      -
      -
      -
      -
      - -
      - Likes - 41,410 -
      -
      -
      - - 70% Increase in 30 Days - -
      -
      -
      -
      -
      - -
      - Events - 41,410 -
      -
      -
      - - 70% Increase in 30 Days - -
      -
      -
      -
      -
      - -
      - Comments - 41,410 -
      -
      -
      - - 70% Increase in 30 Days - -
      -
      -
      -
      -

      Markup

      -
      <!-- Apply any bg-* class to to the info-box to color it -->
      -<div class="info-box bg-red">
      -  <span class="info-box-icon"><i class="fa fa-comments-o"></i></span>
      -  <div class="info-box-content">
      -    <span class="info-box-text">Likes</span>
      -    <span class="info-box-number">41,410</span>
      -    <!-- The progress section is optional -->
      -    <div class="progress">
      -      <div class="progress-bar" style="width: 70%"></div>
      -    </div>
      -    <span class="progress-description">
      -      70% Increase in 30 Days
      -    </span>
      -  </div><!-- /.info-box-content -->
      -</div><!-- /.info-box -->
      -

      The only thing you need to change to alternate between these style is change the placement of the bg-* class. For the - first style apply any bg-* class to the icon itself. For the other style, apply the bg-* class to the info-box div.

      - - -

      Box

      -

      The box component is the most widely used component through out this template. You can - use it for anything from displaying charts to just blocks of text. It comes in many different - styles that we will explore below.

      -

      Default Box Markup

      -
      -
      -

      Default Box Example

      -
      - - - Label -
      -
      -
      - The body of the box -
      - -
      -
      <div class="box">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Default Box Example</h3>
      -    <div class="box-tools pull-right">
      -      <!-- Buttons, labels, and many other things can be placed here! -->
      -      <!-- Here is a label for example -->
      -      <span class="label label-primary">Label</span>
      -    </div><!-- /.box-tools -->
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    The body of the box
      -  </div><!-- /.box-body -->
      -  <div class="box-footer">
      -    The footer of the box
      -  </div><!-- box-footer -->
      -</div><!-- /.box -->
      -

      Box Variants

      -

      You can change the style of the box by adding any of the contextual classes.

      -
      -
      -
      -
      -

      Default Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Primary Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Info Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -
      -

      Warning Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Success Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Danger Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      <div class="box box-default">...</div>
      -<div class="box box-primary">...</div>
      -<div class="box box-info">...</div>
      -<div class="box box-warning">...</div>
      -<div class="box box-success">...</div>
      -<div class="box box-danger">...</div>
      - -

      Solid Box

      -

      Solid Boxes are alternative ways to display boxes. - They can be created by simply adding the box-solid class to the box component. - You may also use contextual classes with you solid boxes.

      -
      -
      -
      -
      -

      Default Solid Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Primary Solid Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Info Solid Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -
      -

      Warning Solid Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Success Solid Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -
      -

      Danger Solid Box Example

      -
      -
      - The body of the box -
      -
      -
      -
      -
      -<div class="box box-solid box-default">...</div>
      -<div class="box box-solid box-primary">...</div>
      -<div class="box box-solid box-info">...</div>
      -<div class="box box-solid box-warning">...</div>
      -<div class="box box-solid box-success">...</div>
      -<div class="box box-solid box-danger">...</div>
      -

      Box Tools

      -

      Boxes can contain tools to deploy a specific event or provide simple info. The following examples makes use - of multiple AdminLTE components within the header of the box.

      -

      AdminLTE data-widget attribute provides boxes with the ability to collapse or be removed. The buttons - are placed in the box-tools which is placed in the box-header.

      -
      -<!-- This will cause the box to be removed when clicked -->
      -<button class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove"><i class="fa fa-times"></i></button>
      -<!-- This will cause the box to collapse when clicked -->
      -<button class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse"><i class="fa fa-minus"></i></button>
      -
      -
      -
      -
      -

      Collapsable

      -
      - -
      -
      -
      - The body of the box -
      -
      -
      -<div class="box box-default">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Collapsable</h3>
      -    <div class="box-tools pull-right">
      -      <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
      -    </div><!-- /.box-tools -->
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    The body of the box
      -  </div><!-- /.box-body -->
      -</div><!-- /.box -->
      -
      -
      -
      -
      -

      Removable

      -
      - -
      -
      -
      - The body of the box -
      -
      -
      -<div class="box box-default">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Removable</h3>
      -    <div class="box-tools pull-right">
      -      <button class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
      -    </div><!-- /.box-tools -->
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    The body of the box
      -  </div><!-- /.box-body -->
      -</div><!-- /.box -->
      -
      -
      -
      -
      -

      Expandable

      -
      - -
      -
      -
      - The body of the box -
      -
      -
      -<div class="box box-default collapsed-box">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Expandable</h3>
      -    <div class="box-tools pull-right">
      -      <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-plus"></i></button>
      -    </div><!-- /.box-tools -->
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    The body of the box
      -  </div><!-- /.box-body -->
      -</div><!-- /.box -->
      -
      -
      -

      We can also add labels, badges, pagination, tooltips, inputs and many more in the box tools. A few examples:

      -
      -
      -
      -
      -

      Labels

      -
      - Some Label -
      -
      -
      - The body of the box -
      -
      -
      -<div class="box box-default">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Labels</h3>
      -    <div class="box-tools pull-right">
      -      <span class="label label-default">8 New Messages</span>
      -    </div><!-- /.box-tools -->
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    The body of the box
      -  </div><!-- /.box-body -->
      -</div><!-- /.box -->
      -
      -
      -
      -
      -

      Input

      -
      -
      - - -
      -
      -
      -
      - The body of the box -
      -
      -
      -<div class="box box-default">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Input</h3>
      -    <div class="box-tools pull-right">
      -      <div class="has-feedback">
      -        <input type="text" class="form-control input-sm" placeholder="Search...">
      -        <span class="glyphicon glyphicon-search form-control-feedback"></span>
      -      </div>
      -    </div><!-- /.box-tools -->
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    The body of the box
      -  </div><!-- /.box-body -->
      -</div><!-- /.box -->
      -
      -
      -
      -
      -

      Tootips on buttons

      -
      - - -
      -
      -
      - The body of the box -
      -
      -
      -<div class="box box-default">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Tooltips on buttons</h3>
      -    <div class="box-tools pull-right">
      -      <button class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse"><i class="fa fa-minus"></i></button>
      -      <button class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove"><i class="fa fa-times"></i></button>
      -    </div><!-- /.box-tools -->
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    The body of the box
      -  </div><!-- /.box-body -->
      -</div><!-- /.box -->
      -
      -
      -

      - If you inserted a box into the document after app.js was loaded, you have to activate - the collapse/remove buttons explicitly by calling .activateBox(): -

      -
      <script>
      -    $("#box-widget").activateBox();
      -</script>
      - -

      Loading States

      -
      -
      -
      -
      -

      Loading state

      -
      -
      - The body of the box -
      - -
      - -
      - -
      -
      - -
      -
      -
      -

      Loading state (.box-solid)

      -
      -
      - The body of the box -
      - -
      - -
      - -
      -
      -
      -

      - To simulate a loading state, simply place this code before the .box closing tag. -

      -
      <div class="overlay">
      -  <i class="fa fa-refresh fa-spin"></i>
      -</div>
      -
      -

      Direct Chat

      -

      The direct chat widget extends the box component to create a beautiful chat interface. This widget - consists of a required messages pane and an optional contacts pane. Examples:

      - -
      -
      - -
      -
      -

      Direct Chat

      -
      - 3 - - - -
      -
      -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - message user image -
      - Is this template really for free? That's unbelievable! -
      -
      - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - message user image -
      - You better believe it! -
      -
      -
      - - - -
      - -
      -
      - -
      - -
      -
      -

      Direct Chat

      -
      - 3 - - - -
      -
      -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - message user image -
      - Is this template really for free? That's unbelievable! -
      -
      - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - message user image -
      - You better believe it! -
      -
      -
      - - - -
      - -
      -
      - -
      - -
      -
      -

      Direct Chat

      -
      - 3 - - - -
      -
      -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - message user image -
      - Is this template really for free? That's unbelievable! -
      -
      - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - message user image -
      - You better believe it! -
      -
      -
      - - - -
      - -
      -
      - -
      - -
      -
      -

      Direct Chat

      -
      - 3 - - - -
      -
      -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - message user image -
      - Is this template really for free? That's unbelievable! -
      -
      - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - message user image -
      - You better believe it! -
      -
      -
      - - - -
      - -
      -
      -
      -

      Direct Chat Markup

      -
      
      -<!-- Construct the box with style you want. Here we are using box-danger -->
      -<!-- Then add the class direct-chat and choose the direct-chat-* contexual class -->
      -<!-- The contextual class should match the box, so we are using direct-chat-danger -->
      -<div class="box box-danger direct-chat direct-chat-danger">
      -  <div class="box-header with-border">
      -    <h3 class="box-title">Direct Chat</h3>
      -    <div class="box-tools pull-right">
      -      <span data-toggle="tooltip" title="3 New Messages" class="badge bg-red">3</span>
      -      <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
      -      <!-- In box-tools add this button if you intend to use the contacts pane -->
      -      <button class="btn btn-box-tool" data-toggle="tooltip" title="Contacts" data-widget="chat-pane-toggle"><i class="fa fa-comments"></i></button>
      -      <button class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
      -    </div>
      -  </div><!-- /.box-header -->
      -  <div class="box-body">
      -    <!-- Conversations are loaded here -->
      -    <div class="direct-chat-messages">
      -      <!-- Message. Default to the left -->
      -      <div class="direct-chat-msg">
      -        <div class="direct-chat-info clearfix">
      -          <span class="direct-chat-name pull-left">Alexander Pierce</span>
      -          <span class="direct-chat-timestamp pull-right">23 Jan 2:00 pm</span>
      -        </div><!-- /.direct-chat-info -->
      -        <img class="direct-chat-img" src="../dist/img/user1-128x128.jpg" alt="message user image"><!-- /.direct-chat-img -->
      -        <div class="direct-chat-text">
      -          Is this template really for free? That's unbelievable!
      -        </div><!-- /.direct-chat-text -->
      -      </div><!-- /.direct-chat-msg -->
      -
      -      <!-- Message to the right -->
      -      <div class="direct-chat-msg right">
      -        <div class="direct-chat-info clearfix">
      -          <span class="direct-chat-name pull-right">Sarah Bullock</span>
      -          <span class="direct-chat-timestamp pull-left">23 Jan 2:05 pm</span>
      -        </div><!-- /.direct-chat-info -->
      -        <img class="direct-chat-img" src="../dist/img/user3-128x128.jpg" alt="message user image"><!-- /.direct-chat-img -->
      -        <div class="direct-chat-text">
      -          You better believe it!
      -        </div><!-- /.direct-chat-text -->
      -      </div><!-- /.direct-chat-msg -->
      -    </div><!--/.direct-chat-messages-->
      -
      -    <!-- Contacts are loaded here -->
      -    <div class="direct-chat-contacts">
      -      <ul class="contacts-list">
      -        <li>
      -          <a href="#">
      -            <img class="contacts-list-img" src="../dist/img/user1-128x128.jpg" alt="Contact Avatar">
      -            <div class="contacts-list-info">
      -              <span class="contacts-list-name">
      -                Count Dracula
      -                <small class="contacts-list-date pull-right">2/28/2015</small>
      -              </span>
      -              <span class="contacts-list-msg">How have you been? I was...</span>
      -            </div><!-- /.contacts-list-info -->
      -          </a>
      -        </li><!-- End Contact Item -->
      -      </ul><!-- /.contatcts-list -->
      -    </div><!-- /.direct-chat-pane -->
      -  </div><!-- /.box-body -->
      -  <div class="box-footer">
      -    <div class="input-group">
      -      <input type="text" name="message" placeholder="Type Message ..." class="form-control">
      -      <span class="input-group-btn">
      -        <button type="button" class="btn btn-danger btn-flat">Send</button>
      -      </span>
      -    </div>
      -  </div><!-- /.box-footer-->
      -</div><!--/.direct-chat -->
      -
      - -

      Of course you can use direct chat with a solid box by adding the class solid-box to the box. Here are a couple of examples:

      - - -
      -
      - -
      -
      -

      Direct Chat in a Solid Box

      -
      - 3 - - - -
      -
      -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - message user image -
      - Is this template really for free? That's unbelievable! -
      -
      - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - message user image -
      - You better believe it! -
      -
      -
      - - - -
      - -
      -
      - -
      - -
      -
      -

      Direct Chat in a Solid Box

      -
      - 3 - - - -
      -
      -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - message user image -
      - Is this template really for free? That's unbelievable! -
      -
      - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - message user image -
      - You better believe it! -
      -
      -
      - - - -
      - -
      -
      -
      -
      - - - - -
      - -

      AdminLTE makes use of the following plugins. For documentation, updates or license information, please visit the provided links.

      - -
      - - - - -
      - -

      AdminLTE supports the following browsers:

      -
        -
      • IE9+
      • -
      • Firefox (latest)
      • -
      • Safari (latest)
      • -
      • Chrome (latest)
      • -
      • Opera (latest)
      • -
      -

      Note: IE9 does not support transitions or animations. The template will function properly but it won't use animations/transitions on IE9.

      -
      - - - - -
      - -

      To upgrade from version 1.x to the lateset version, follow this guide.

      -

      New Files

      -

      Make sure you update all CSS and JS files that are related to AdminLTE. Otherwise, the layout will not - function properly. Most important files are AdminLTE.css, skins CSS files, and app.js.

      -

      Layout Changes

      -
        -
      1. The .wrapper div must be placed immediately after the body tag rather than after the header
      2. -
      3. Change the .header div to .main-header <div class="main-header">
      4. -
      5. Change the .right-side class to .content-wrapper <div class="content-wrapper">
      6. -
      7. Change the .left-side class to .main-sidebar <div class="main-sidebar">
      8. -
      9. In the navbar, change .navbar-right to .navbar-custom-menu <div class="navbar-custom-menu">
      10. -
      -

      Navbar Custom Dropdown Menus

      -
        -
      1. The icons in the notification menu do not need bg-* classes. They should be replaced with contextual text color class such as text-aqua or text-red.
      2. -
      -

      Login, Registration and Lockscreen Pages

      -

      There are major changes to the HTML markup and style to these pages. The best way is to copy the page's code and customize it.

      -

      And you should be set to go!

      -

      Mailbox

      -

      Mailbox got an upgrade to include three different views. The views are inbox, read mail, and compose new email. To use these views, - you should use the provided HTML files in the pages/mailbox folder.

      -

      Note: the old mailbox layout has been deprecated in favor of the new one and will be removed by the next release.

      -
      - - - - -
      - -

      Thanks to many of AdminLTE users, there are multiple implementations of the template - for easy integration with back-end frameworks. The following are some of them:

      - - - -

      Note: these implementations are not supported by Almsaeed Studio. However, - they do provide a good example of how to integrate AdminLTE into different frameworks. For the latest release - of AdminLTE, please visit our repository or website

      -
      - - - - -
      - -

      Can AdminLTE be used with Wordpress?

      -

      AdminLTE is an HTML template that can be used for any purpose. However, it is not made to be easily installed on Wordpress. It will require some effort and enough knowledge of the Wordpress script to do so.

      - -

      Is there an integration guide for PHP frameworks such as Yii or Symfony?

      -

      Short answer, no. However, there are forks and tutorials around the web that provide info on how to integrate with many different frameworks. There are even versions of AdminLTE that are integrated with jQuery ajax, AngularJS and/or MVC5 ASP .NET.

      - -

      How do I get notified of new AdminLTE versions?

      -

      The best option is to subscribe to our mailing list using the subscription form on Almsaeed Studio. - If that's not appealing to you, you may watch the repository on Github or visit Almsaeed Studio every now and then for updates and announcements.

      -
      - - - - -
      - -

      AdminLTE

      -

      - AdminLTE is an open source project that is licensed under the MIT license. - This allows you to do pretty much anything you want as long as you include - the copyright in "all copies or substantial portions of the Software." - Attribution is not required (though very much appreciated). -

      -
      - - -
      -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights reserved. -
      - - - - -
      - -
      - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/style.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/style.css deleted file mode 100644 index c68a50b27788..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/documentation/style.css +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Documentation specific stylesheet - */ -.content-wrapper p { - padding: 0 10px; - font-size: 16px; - position: relative; - z-index: 30; -} -.bring-up { - position: relative; - z-index: 30; -} -.nth-2-center > tbody > tr > td:last-of-type { - text-align: center!important; -} -.content { - font-size: 16px; - z-index: 500; -} - -#components > h3 { - font-size: 25px; - color: #000; -} - -#components > h4 { - font-size: 20px; - color: #000; -} -ul { - margin-bottom: 20px; -} -.page-header { - /*border-bottom: 1px solid #ddd; */ - margin: 20px 0 10px 0!important; - position: relative; - z-index: 1; - font-size: 30px; -} -.page-header span, -.page-header a { - z-index: 5; - display: block; - background-color: #ecf0f5; - color: #000; -} -.page-header span::before, -.page-header a::before { - content: '#'; - font-size: 25px; - margin-right: 10px; - color: #3c8dbc; -} -.page-header:before, -#components > h3:before { - display: block; - content: " "; - margin-top: -60px; - height: 60px; - visibility: hidden; - z-index: -10; -} - -.lead { - font-size: 18px; - font-weight: 400; -} -.eg{ - position: absolute; - top: 0; - left: 0; - display: inline-block; - background: #d2d6de; - padding: 5px; - border-bottom-right-radius: 3px; - border-top-left-radius: 3px; - border-bottom: 1px solid #d2d6dc; - border-right: 1px solid #d2d6dc; -} -.eg + * { - margin-top: 30px; -} -.content { - padding: 10px 25px; -} -.hierarchy { - background: #333; - color: #fff; -} -.plugins-list li { - width: 50%; - float: left; -} -pre { - border: none; -} - -.sidebar { - margin-top: 0; - padding-top: 0!important; -} -.box .main-header { - z-index: 1000; - position: relative; -} -.treeview .nav li a:hover, -.treeview .nav li a:active { - background: transparent; -} -p { - padding: 0!important; -} -/* Hemisu Light */ -/* Original theme - http://noahfrederick.com/vim-color-scheme-hemisu/ */ -pre.prettyprint { - background: white; - font-family: Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Consolas, monospace; - font-size: 12px; - line-height: 1.5; - border: 1px solid #dedede!important; - padding: 10px; - max-height: 300px; - width: auto; - overflow: auto!important; -} -pre.prettyprint > code { - width: auto; - overflow: auto!important; -} - -.pln { - color: #111111; -} - -@media screen { - .str { - color: #739200; - } - - .kwd { - color: #739200; - } - - .com { - color: #999999; - } - - .typ { - color: #ff0055; - } - - .lit { - color: #538192; - } - - .pun { - color: #111111; - } - - .opn { - color: #111111; - } - - .clo { - color: #111111; - } - - .tag { - color: #111111; - } - - .atn { - color: #739200; - } - - .atv { - color: #ff0055; - } - - .dec { - color: #111111; - } - - .var { - color: #111111; - } - - .fun { - color: #538192; - } -} -@media print, projection { - .str { - color: #006600; - } - - .kwd { - color: #006; - font-weight: bold; - } - - .com { - color: #600; - font-style: italic; - } - - .typ { - color: #404; - font-weight: bold; - } - - .lit { - color: #004444; - } - - .pun, .opn, .clo { - color: #444400; - } - - .tag { - color: #006; - font-weight: bold; - } - - .atn { - color: #440044; - } - - .atv { - color: #006600; - } -} -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { - margin-top: 0; - margin-bottom: 0; -} - -/* IE indents via margin-left */ -li.L0, -li.L1, -li.L2, -li.L3, -li.L4, -li.L5, -li.L6, -li.L7, -li.L8, -li.L9 { - /* */ -} - -/* Alternate shading for lines */ -li.L1, -li.L3, -li.L5, -li.L7, -li.L9 { - /* */ -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/index.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/index.html deleted file mode 100644 index be54ee17ede6..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/index.html +++ /dev/null @@ -1,1258 +0,0 @@ - - - - - - AdminLTE 2 | Dashboard - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Dashboard - Control panel -

      - -
      - - -
      - -
      -
      - -
      -
      -

      150

      - -

      New Orders

      -
      -
      - -
      - More info -
      -
      - -
      - -
      -
      -

      53%

      - -

      Bounce Rate

      -
      -
      - -
      - More info -
      -
      - -
      - -
      -
      -

      44

      - -

      User Registrations

      -
      -
      - -
      - More info -
      -
      - -
      - -
      -
      -

      65

      - -

      Unique Visitors

      -
      -
      - -
      - More info -
      -
      - -
      - - -
      - -
      - - - - - -
      -
      - - -

      Chat

      - -
      -
      - - -
      -
      -
      -
      - -
      - user image - -

      - - 2:15 - Mike Doe - - I would like to meet you to discuss the latest news about - the arrival of the new theme. They say it is going to be one the - best themes on the market -

      -
      -

      Attachments:

      - -

      - Theme-thumbnail-image.jpg -

      - -
      - -
      -
      - -
      - - -
      - user image - -

      - - 5:15 - Alexander Pierce - - I would like to meet you to discuss the latest news about - the arrival of the new theme. They say it is going to be one the - best themes on the market -

      -
      - - -
      - user image - -

      - - 5:30 - Susan Doe - - I would like to meet you to discuss the latest news about - the arrival of the new theme. They say it is going to be one the - best themes on the market -

      -
      - -
      - - -
      - - - -
      -
      - - -

      To Do List

      - -
      - -
      -
      - -
      -
        -
      • - - - - - - - - - Design a nice theme - - 2 mins - -
        - - -
        -
      • -
      • - - - - - - Make the theme responsive - 4 hours -
        - - -
        -
      • -
      • - - - - - - Let theme shine like a star - 1 day -
        - - -
        -
      • -
      • - - - - - - Let theme shine like a star - 3 days -
        - - -
        -
      • -
      • - - - - - - Check your messages and notifications - 1 week -
        - - -
        -
      • -
      • - - - - - - Let theme shine like a star - 1 month -
        - - -
        -
      • -
      -
      - - -
      - - - -
      -
      - - -

      Quick Email

      - -
      - -
      - -
      -
      -
      -
      - -
      -
      - -
      -
      - -
      -
      -
      - -
      - -
      - - -
      - - -
      -
      - -
      - - -
      - - - - -

      - Visitors -

      -
      -
      -
      -
      - - -
      - - - -
      -
      - - -

      Sales Graph

      - -
      - - -
      -
      -
      -
      -
      - - - -
      - - - -
      -
      - - -

      Calendar

      - -
      - - - - -
      - -
      - -
      - -
      -
      - - -
      - - -
      - -
      - - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/index2.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/index2.html deleted file mode 100644 index c4b49d41d5bc..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/index2.html +++ /dev/null @@ -1,1556 +0,0 @@ - - - - - - AdminLTE 2 | Dashboard - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - - - -
      - - - - -
      - -
      -

      - Dashboard - Version 2.0 -

      - -
      - - -
      - -
      -
      -
      - - -
      - CPU Traffic - 90% -
      - -
      - -
      - -
      -
      - - -
      - Likes - 41,410 -
      - -
      - -
      - - - -
      - -
      -
      - - -
      - Sales - 760 -
      - -
      - -
      - -
      -
      - - -
      - New Members - 2,000 -
      - -
      - -
      - -
      - - -
      -
      -
      -
      -

      Monthly Recap Report

      - - -
      - -
      -
      -
      -

      - Sales: 1 Jan, 2014 - 30 Jul, 2014 -

      - -
      - - -
      - -
      - -
      -

      - Goal Completion -

      - -
      - Add Products to Cart - 160/200 - -
      -
      -
      -
      - -
      - Complete Purchase - 310/400 - -
      -
      -
      -
      - -
      - Visit Premium Page - 480/800 - -
      -
      -
      -
      - -
      - Send Inquiries - 250/500 - -
      -
      -
      -
      - -
      - -
      - -
      - - - -
      - -
      - -
      - - - -
      - -
      - -
      -
      -

      Visitors Report

      - -
      - - -
      -
      - -
      -
      -
      -
      - -
      -
      -
      - -
      -
      -
      -
      90,70,90,70,75,80,70
      -
      8390
      - Visits -
      - -
      -
      90,50,90,70,61,83,63
      -
      30%
      - Referrals -
      - -
      -
      90,50,90,70,61,83,63
      -
      70%
      - Organic -
      - -
      -
      - -
      - -
      - -
      - -
      -
      - -
      -
      -

      Direct Chat

      - -
      - 3 - - - -
      -
      - -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - - message user image -
      - Is this template really for free? That's unbelievable! -
      - -
      - - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - - message user image -
      - You better believe it! -
      - -
      - - - -
      -
      - Alexander Pierce - 23 Jan 5:37 pm -
      - - message user image -
      - Working with AdminLTE on a great new app! Wanna join? -
      - -
      - - - -
      -
      - Sarah Bullock - 23 Jan 6:10 pm -
      - - message user image -
      - I would love to. -
      - -
      - - -
      - - - - - -
      - - - -
      - -
      - - -
      - -
      -
      -

      Latest Members

      - -
      - 8 New Members - - -
      -
      - -
      - - -
      - - - -
      - -
      - -
      - - - -
      -
      -

      Latest Orders

      - -
      - - -
      -
      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Order IDItemStatusPopularity
      OR9842Call of Duty IVShipped -
      90,80,90,-70,61,-83,63
      -
      OR1848Samsung Smart TVPending -
      90,80,-90,70,61,-83,68
      -
      OR7429iPhone 6 PlusDelivered -
      90,-80,90,70,-61,83,63
      -
      OR7429Samsung Smart TVProcessing -
      90,80,-90,70,-61,83,63
      -
      OR1848Samsung Smart TVPending -
      90,80,-90,70,61,-83,68
      -
      OR7429iPhone 6 PlusDelivered -
      90,-80,90,70,-61,83,63
      -
      OR9842Call of Duty IVShipped -
      90,80,90,-70,61,-83,63
      -
      -
      - -
      - - - -
      - -
      - - -
      - -
      - - -
      - Inventory - 5,200 - -
      -
      -
      - - 50% Increase in 30 Days - -
      - -
      - -
      - - -
      - Mentions - 92,050 - -
      -
      -
      - - 20% Increase in 30 Days - -
      - -
      - -
      - - -
      - Downloads - 114,381 - -
      -
      -
      - - 70% Increase in 30 Days - -
      - -
      - -
      - - -
      - Direct Messages - 163,921 - -
      -
      -
      - - 40% Increase in 30 Days - -
      - -
      - - -
      -
      -

      Browser Usage

      - -
      - - -
      -
      - -
      -
      -
      -
      - -
      - -
      - -
      -
        -
      • Chrome
      • -
      • IE
      • -
      • FireFox
      • -
      • Safari
      • -
      • Opera
      • -
      • Navigator
      • -
      -
      - -
      - -
      - - - -
      - - - -
      -
      -

      Recently Added Products

      - -
      - - -
      -
      - -
      -
        -
      • -
        - Product Image -
        -
        - Samsung TV - $1800 - - Samsung 32" 1080p 60Hz LED Smart HDTV. - -
        -
      • - -
      • -
        - Product Image -
        -
        - Bicycle - $700 - - 26" Mongoose Dolomite Men's 7-speed, Navy Blue. - -
        -
      • - -
      • -
        - Product Image -
        -
        - Xbox One $350 - - Xbox One Console Bundle with Halo Master Chief Collection. - -
        -
      • - -
      • -
        - Product Image -
        -
        - PlayStation 4 - $399 - - PlayStation 4 500GB Console (PS4) - -
        -
      • - -
      -
      - - - -
      - -
      - -
      - -
      - -
      - - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/package.json b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/package.json deleted file mode 100644 index abf5650c14fe..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "admin-lte", - "version": "2.3.6", - "main": "dist/js/app.min.js", - "repository": { - "type": "git", - "url": "git://github.com/almasaeed2010/AdminLTE.git" - }, - "license": "MIT", - "devDependencies": { - "R2": "^1.4.3", - "grunt": "~0.4.5", - "grunt-bootlint": "^0.9.1", - "grunt-contrib-clean": "^0.6.0", - "grunt-contrib-csslint": "^0.5.0", - "grunt-contrib-cssmin": "^0.12.2", - "grunt-contrib-jshint": "^0.11.2", - "grunt-contrib-less": "^0.12.0", - "grunt-contrib-uglify": "^0.7.0", - "grunt-contrib-watch": "~0.6.1", - "grunt-cssjanus": "^0.2.4", - "grunt-image": "^1.0.5", - "grunt-includes": "^0.4.5" - } -} diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/buttons.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/buttons.html deleted file mode 100644 index d3fd1f2a4258..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/buttons.html +++ /dev/null @@ -1,1710 +0,0 @@ - - - - - - AdminLTE 2 | Buttons - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Buttons - Control panel -

      - -
      - - -
      - -
      -
      -
      -
      - - -

      Buttons

      -
      -
      -

      Various types of buttons. Using the base class .btn

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      NormalLarge .btn-lgSmall .btn-smX-Small .btn-xsFlat .btn-flatDisabled .disabled
      - - - - - - - - - - - -
      - - - - - - - - - - - -
      - - - - - - - - - - - -
      - - - - - - - - - - - -
      - - - - - - - - - - - -
      - - - - - - - - - - - -
      -
      - -
      -
      - -
      - -
      -
      - -
      -
      -

      Block Buttons

      -
      -
      - - - -
      -
      - - - -
      -
      -

      Horizontal Button Group

      -
      -
      -

      - Horizontal button groups are easy to create with bootstrap. Just add your buttons - inside <div class="btn-group"></div> -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      ButtonIconsFlatDropdown
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      - - -
      -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      - - -
      -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      - - -
      -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      - - -
      -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      - - -
      -
      -
      -
      -
      - - -
      -
      -

      Button Addon

      -
      -
      -

      With dropdown

      - -
      - - - -
      - -

      Normal

      - -
      -
      - -
      - - -
      - -

      Flat

      - -
      - - - - -
      - -
      - -
      - - -
      -
      -

      Split buttons

      -
      -
      - -

      Normal split buttons:

      - -
      -
      - - - -
      -
      - - - -
      -
      - - - -
      -
      - - - -
      -
      - - - -
      -
      - -

      Flat split buttons:

      - -
      -
      - - - -
      -
      - - - -
      -
      - - - -
      -
      - - - -
      -
      - - - -
      -
      -
      - -
      - - - - - - -
      - -
      - -
      -
      -

      Application Buttons

      -
      - - -
      - - -
      -
      -

      Different colors

      -
      -
      -

      Mix and match with various background colors. Use base class .btn and add any available - .bg-* class

      - -

      - - - - - -

      - -

      - - - - - -

      -
      -
      - - - -
      -
      -

      Vertical Button Group

      -
      -
      - -

      - Vertical button groups are easy to create with bootstrap. Just add your buttons - inside <div class="btn-group-vertical"></div> -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      ButtonIconsFlatDropdown
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      - - -
      -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      - - -
      -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      - - -
      -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      - - -
      -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      -
      -
      - - - -
      - - -
      -
      -
      -
      - -
      - -
      - -
      - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/general.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/general.html deleted file mode 100644 index 32de4fb4097d..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/general.html +++ /dev/null @@ -1,1658 +0,0 @@ - - - - - - AdminLTE 2 | General UI - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - General UI - Preview of UI elements -

      - -
      - - -
      - -
      -
      -

      Color Palette

      -
      -
      -
      -
      -

      Primary

      - -
      -
      Disabled
      -
      #3c8dbc
      -
      Active
      -
      -
      - -
      -

      Info

      - -
      -
      Disabled
      -
      #00c0ef
      -
      Active
      -
      -
      - -
      -

      Success

      - -
      -
      Disabled
      -
      #00a65a
      -
      Active
      -
      -
      - -
      -

      Warning

      - -
      -
      Disabled
      -
      #f39c12
      -
      Active
      -
      -
      - -
      -

      Danger

      - -
      -
      Disabled
      -
      #f56954
      -
      Active
      -
      -
      - -
      -

      Gray

      - -
      -
      Disabled
      -
      #d2d6de
      -
      Active
      -
      -
      - -
      - -
      -
      -

      Navy

      - -
      -
      Disabled
      -
      #001F3F
      -
      Active
      -
      -
      - -
      -

      Teal

      - -
      -
      Disabled
      -
      #39CCCC
      -
      Active
      -
      -
      - -
      -

      Purple

      - -
      -
      Disabled
      -
      #605ca8
      -
      Active
      -
      -
      - -
      -

      Orange

      - -
      -
      Disabled
      -
      #ff851b
      -
      Active
      -
      -
      - -
      -

      Maroon

      - -
      -
      Disabled
      -
      #D81B60
      -
      Active
      -
      -
      - -
      -

      Black

      - -
      -
      Disabled
      -
      #111111
      -
      Active
      -
      -
      - -
      - -
      - -
      - - - - -
      -
      -
      -
      - - -

      Alerts

      -
      - -
      -
      - -

      Alert!

      - Danger alert preview. This alert is dismissable. A wonderful serenity has taken possession of my entire - soul, like these sweet mornings of spring which I enjoy with my whole heart. -
      -
      - -

      Alert!

      - Info alert preview. This alert is dismissable. -
      -
      - -

      Alert!

      - Warning alert preview. This alert is dismissable. -
      -
      - -

      Alert!

      - Success alert preview. This alert is dismissable. -
      -
      - -
      - -
      - - -
      -
      -
      - - -

      Callouts

      -
      - -
      -
      -

      I am a danger callout!

      - -

      There is a problem that we need to fix. A wonderful serenity has taken possession of my entire soul, - like these sweet mornings of spring which I enjoy with my whole heart.

      -
      -
      -

      I am an info callout!

      - -

      Follow the steps to continue to payment.

      -
      -
      -

      I am a warning callout!

      - -

      This is a yellow callout.

      -
      -
      -

      I am a success callout!

      - -

      This is a green callout.

      -
      -
      - -
      - -
      - -
      - - - - - -
      -
      - - - -
      - - -
      - - - -
      - -
      - - - - - -
      -
      -
      -
      -

      Progress Bars Different Sizes

      -
      - -
      -

      .progress

      - -
      -
      - 40% Complete (success) -
      -
      -

      Class: .sm

      - -
      -
      - 20% Complete -
      -
      -

      Class: .xs

      - -
      -
      - 60% Complete (warning) -
      -
      -

      Class: .xxs

      - -
      -
      - 60% Complete (warning) -
      -
      -
      - -
      - -
      - -
      -
      -
      -

      Progress bars

      -
      - -
      -
      -
      - 40% Complete (success) -
      -
      -
      -
      - 20% Complete -
      -
      -
      -
      - 60% Complete (warning) -
      -
      -
      -
      - 80% Complete -
      -
      -
      - -
      - -
      - -
      - -
      -
      -
      -
      -

      Vertical Progress Bars Different Sizes

      -
      - -
      -

      By adding the class .vertical and .progress-sm, .progress-xs or - .progress-xxs we achieve:

      - -
      -
      - 40% -
      -
      -
      -
      - 100% -
      -
      -
      -
      - 60% -
      -
      -
      -
      - 60% -
      -
      -
      - -
      - -
      - -
      -
      -
      -

      Vertical Progress bars

      -
      - -
      -

      By adding the class .vertical we achieve:

      - -
      -
      - 40% -
      -
      -
      -
      - 20% -
      -
      -
      -
      - 60% -
      -
      -
      -
      - 80% -
      -
      -
      - -
      - -
      - -
      - - - - - - -
      -
      -
      -
      -

      Collapsible Accordion

      -
      - -
      -
      - -
      - -
      -
      - Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 - wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum - eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla - assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred - nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer - farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus - labore sustainable VHS. -
      -
      -
      -
      - -
      -
      - Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 - wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum - eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla - assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred - nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer - farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus - labore sustainable VHS. -
      -
      -
      -
      - -
      -
      - Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 - wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum - eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla - assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred - nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer - farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus - labore sustainable VHS. -
      -
      -
      -
      -
      - -
      - -
      - -
      -
      -
      -

      Carousel

      -
      - -
      - -
      - -
      - -
      - -
      - - - - - - -
      -
      -
      -
      - - -

      Headlines

      -
      - -
      -

      h1. Bootstrap heading

      - -

      h2. Bootstrap heading

      - -

      h3. Bootstrap heading

      -

      h4. Bootstrap heading

      -
      h5. Bootstrap heading
      -
      h6. Bootstrap heading
      -
      - -
      - -
      - -
      -
      -
      - - -

      Text Emphasis

      -
      - -
      -

      Lead to emphasize importance

      - -

      Text green to emphasize success

      - -

      Text aqua to emphasize info

      - -

      Text light blue to emphasize info (2)

      - -

      Text red to emphasize danger

      - -

      Text yellow to emphasize warning

      - -

      Text muted to emphasize general

      -
      - -
      - -
      - -
      - - -
      -
      -
      -
      - - -

      Block Quotes

      -
      - -
      -
      -

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

      - Someone famous in Source Title -
      -
      - -
      - -
      - -
      -
      -
      - - -

      Block Quotes Pulled Right

      -
      - -
      -
      -

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

      - Someone famous in Source Title -
      -
      - -
      - -
      - -
      - - -
      -
      -
      -
      - - -

      Unordered List

      -
      - -
      -
        -
      • Lorem ipsum dolor sit amet
      • -
      • Consectetur adipiscing elit
      • -
      • Integer molestie lorem at massa
      • -
      • Facilisis in pretium nisl aliquet
      • -
      • Nulla volutpat aliquam velit -
          -
        • Phasellus iaculis neque
        • -
        • Purus sodales ultricies
        • -
        • Vestibulum laoreet porttitor sem
        • -
        • Ac tristique libero volutpat at
        • -
        -
      • -
      • Faucibus porta lacus fringilla vel
      • -
      • Aenean sit amet erat nunc
      • -
      • Eget porttitor lorem
      • -
      -
      - -
      - -
      - -
      -
      -
      - - -

      Ordered Lists

      -
      - -
      -
        -
      1. Lorem ipsum dolor sit amet
      2. -
      3. Consectetur adipiscing elit
      4. -
      5. Integer molestie lorem at massa
      6. -
      7. Facilisis in pretium nisl aliquet
      8. -
      9. Nulla volutpat aliquam velit -
          -
        1. Phasellus iaculis neque
        2. -
        3. Purus sodales ultricies
        4. -
        5. Vestibulum laoreet porttitor sem
        6. -
        7. Ac tristique libero volutpat at
        8. -
        -
      10. -
      11. Faucibus porta lacus fringilla vel
      12. -
      13. Aenean sit amet erat nunc
      14. -
      15. Eget porttitor lorem
      16. -
      -
      - -
      - -
      - -
      -
      -
      - - -

      Unstyled List

      -
      - -
      -
        -
      • Lorem ipsum dolor sit amet
      • -
      • Consectetur adipiscing elit
      • -
      • Integer molestie lorem at massa
      • -
      • Facilisis in pretium nisl aliquet
      • -
      • Nulla volutpat aliquam velit -
          -
        • Phasellus iaculis neque
        • -
        • Purus sodales ultricies
        • -
        • Vestibulum laoreet porttitor sem
        • -
        • Ac tristique libero volutpat at
        • -
        -
      • -
      • Faucibus porta lacus fringilla vel
      • -
      • Aenean sit amet erat nunc
      • -
      • Eget porttitor lorem
      • -
      -
      - -
      - -
      - -
      - - -
      -
      -
      -
      - - -

      Description

      -
      - -
      -
      -
      Description lists
      -
      A description list is perfect for defining terms.
      -
      Euismod
      -
      Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
      -
      Donec id elit non mi porta gravida at eget metus.
      -
      Malesuada porta
      -
      Etiam porta sem malesuada magna mollis euismod.
      -
      -
      - -
      - -
      - -
      -
      -
      - - -

      Description Horizontal

      -
      - -
      -
      -
      Description lists
      -
      A description list is perfect for defining terms.
      -
      Euismod
      -
      Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
      -
      Donec id elit non mi porta gravida at eget metus.
      -
      Malesuada porta
      -
      Etiam porta sem malesuada magna mollis euismod.
      -
      Felis euismod semper eget lacinia
      -
      Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo - sit amet risus. -
      -
      -
      - -
      - -
      - -
      - - - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/icons.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/icons.html deleted file mode 100644 index 1f8159df8077..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/icons.html +++ /dev/null @@ -1,3033 +0,0 @@ - - - - - - AdminLTE 2 | Icons - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Icons - a set of beautiful icons -

      - -
      - - -
      -
      -
      - - -
      - -
      - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/modals.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/modals.html deleted file mode 100644 index 62fa25faf94b..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/modals.html +++ /dev/null @@ -1,901 +0,0 @@ - - - - - - AdminLTE 2 | Modals - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Modals - new -

      - -
      - - -
      -
      -

      Reminder!

      - Instructions for how to use modals are available on the - Bootstrap documentation -
      - -
      - - -
      - - -
      - - -
      - - -
      - - -
      - - -
      - - -
      - - -
      - - -
      - - -
      - - -
      - -
      - -
      - - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/sliders.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/sliders.html deleted file mode 100644 index 2f257e942253..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/sliders.html +++ /dev/null @@ -1,894 +0,0 @@ - - - - - - AdminLTE 2 | UI Sliders - - - - - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Sliders - range sliders -

      - -
      - - -
      -
      -
      -
      -
      -

      Ion Slider

      -
      - -
      -
      -
      - -
      - -
      - -
      -
      -
      -
      - -
      -
      - -
      -
      -
      -
      - -
      -
      -
      - -
      - -
      - -
      - - -
      -
      -
      -
      -

      Bootstrap Slider

      -
      - -
      -
      -
      - - -

      data-slider-id="red"

      - - -

      data-slider-id="blue"

      - - -

      data-slider-id="green"

      - - -

      data-slider-id="yellow"

      - - -

      data-slider-id="aqua"

      - - -

      data-slider-id="purple"

      -
      -
      - - - - - - -
      -
      -
      - -
      - -
      - -
      - -
      - -
      - - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/timeline.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/timeline.html deleted file mode 100644 index 9a61afe6140e..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/UI/timeline.html +++ /dev/null @@ -1,905 +0,0 @@ - - - - - - AdminLTE 2 | Timeline - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Timeline - example -

      - -
      - - -
      - - -
      -
      - -
        - -
      • - - 10 Feb. 2014 - -
      • - - -
      • - - -
        - 12:05 - -

        Support Team sent you an email

        - -
        - Etsy doostang zoodles disqus groupon greplin oooj voxy zoodles, - weebly ning heekya handango imeem plugg dopplr jibjab, movity - jajah plickers sifteo edmodo ifttt zimbra. Babblely odeo kaboodle - quora plaxo ideeli hulu weebly balihoo... -
        - -
        -
      • - - -
      • - - -
        - 5 mins ago - -

        Sarah Young accepted your friend request

        -
        -
      • - - -
      • - - -
        - 27 mins ago - -

        Jay White commented on your post

        - -
        - Take me to your leader! - Switzerland is small and neutral! - We are more like Germany, ambitious and misunderstood! -
        - -
        -
      • - - -
      • - - 3 Jan. 2014 - -
      • - - -
      • - - -
        - 2 days ago - -

        Mina Lee uploaded new photos

        - -
        - ... - ... - ... - ... -
        -
        -
      • - - -
      • - - -
        - 5 days ago - -

        Mr. Doe shared a video

        - -
        -
        - -
        -
        - -
        -
      • - -
      • - -
      • -
      -
      - -
      - - -
      -
      -
      -
      -

      Timeline Markup

      -
      -
      -
      -<ul class="timeline">
      -
      -    <!-- timeline time label -->
      -    <li class="time-label">
      -        <span class="bg-red">
      -            10 Feb. 2014
      -        </span>
      -    </li>
      -    <!-- /.timeline-label -->
      -
      -    <!-- timeline item -->
      -    <li>
      -        <!-- timeline icon -->
      -        <i class="fa fa-envelope bg-blue"></i>
      -        <div class="timeline-item">
      -            <span class="time"><i class="fa fa-clock-o"></i> 12:05</span>
      -
      -            <h3 class="timeline-header"><a href="#">Support Team</a> ...</h3>
      -
      -            <div class="timeline-body">
      -                ...
      -                Content goes here
      -            </div>
      -
      -            <div class="timeline-footer">
      -                <a class="btn btn-primary btn-xs">...</a>
      -            </div>
      -        </div>
      -    </li>
      -    <!-- END timeline item -->
      -
      -    ...
      -
      -</ul>
      -                  
      -
      - -
      - -
      - -
      - - -
      - -
      - - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/calendar.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/calendar.html deleted file mode 100644 index edef3ec27132..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/calendar.html +++ /dev/null @@ -1,971 +0,0 @@ - - - - - - AdminLTE 2 | Calendar - - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Calendar - Control panel -

      - -
      - - -
      -
      -
      -
      -
      -

      Draggable Events

      -
      -
      - -
      -
      Lunch
      -
      Go home
      -
      Do homework
      -
      Work on UI design
      -
      Sleep tight
      -
      - -
      -
      -
      - -
      - -
      -
      -

      Create Event

      -
      -
      -
      - -
        -
      • -
      • -
      • -
      • -
      • -
      • -
      • -
      • -
      • -
      • -
      • -
      • -
      • -
      -
      - -
      - - -
      - -
      - -
      - -
      -
      -
      - -
      -
      -
      - -
      -
      - -
      - -
      - -
      - -
      - -
      - - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/charts/chartjs.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/charts/chartjs.html deleted file mode 100644 index 0e81b2df5d29..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/charts/chartjs.html +++ /dev/null @@ -1,917 +0,0 @@ - - - - - - AdminLTE 2 | ChartJS - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - ChartJS - Preview sample -

      - -
      - - -
      -
      -
      - -
      -
      -

      Area Chart

      - -
      - - -
      -
      -
      -
      - -
      -
      - -
      - - - -
      -
      -

      Donut Chart

      - -
      - - -
      -
      -
      - -
      - -
      - - -
      - -
      - -
      -
      -

      Line Chart

      - -
      - - -
      -
      -
      -
      - -
      -
      - -
      - - - -
      -
      -

      Bar Chart

      - -
      - - -
      -
      -
      -
      - -
      -
      - -
      - - -
      - -
      - - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/charts/flot.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/charts/flot.html deleted file mode 100644 index 07b0d4c90896..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/charts/flot.html +++ /dev/null @@ -1,1125 +0,0 @@ - - - - - - AdminLTE 2 | Flot Charts - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Flot Charts - preview sample -

      - -
      - - -
      -
      -
      - -
      -
      - - -

      Interactive Area Chart

      - -
      - Real time -
      - - -
      -
      -
      -
      -
      -
      - -
      - - -
      - -
      - - -
      -
      - -
      -
      - - -

      Line Chart

      - -
      - - -
      -
      -
      -
      -
      - -
      - - - -
      -
      - - -

      Full Width Area Chart

      - -
      - - -
      -
      -
      -
      -
      - -
      - - -
      - - -
      - -
      -
      - - -

      Bar Chart

      - -
      - - -
      -
      -
      -
      -
      - -
      - - - -
      -
      - - -

      Donut Chart

      - -
      - - -
      -
      -
      -
      -
      - -
      - -
      - -
      - -
      - - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/charts/inline.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/charts/inline.html deleted file mode 100644 index 8c23eddd13c5..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/charts/inline.html +++ /dev/null @@ -1,1303 +0,0 @@ - - - - - - AdminLTE 2 | Inline Charts - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Inline Charts - multiple types of charts -

      - -
      - - -
      - - -
      -
      - -
      -
      - - -

      jQuery Knob

      - -
      - - -
      -
      - -
      -
      -
      - - -
      New Visitors
      -
      - -
      - - -
      Bounce Rate
      -
      - -
      - - -
      Server Load
      -
      - -
      - - -
      Disk Space
      -
      - -
      - - -
      -
      - - -
      Bandwidth
      -
      - -
      - - -
      CPU
      -
      - -
      - -
      - -
      - -
      - -
      - - -
      -
      -
      -
      - - -

      jQuery Knob Different Sizes

      - -
      - - -
      -
      - -
      -
      -
      - - -
      data-width="90"
      -
      - -
      - - -
      data-width="120"
      -
      - -
      - - -
      data-thickness="0.1"
      -
      - -
      - - -
      data-angleArc="250"
      -
      - -
      - -
      - -
      - -
      - -
      - - -
      -
      -
      -
      - - -

      jQuery Knob Tron Style

      - -
      - - -
      -
      - -
      -
      -
      - - -
      data-width="90"
      -
      - -
      - - -
      data-width="120"
      -
      - -
      - - -
      data-thickness="0.1"
      -
      - -
      - - -
      data-angleArc="250"
      -
      - -
      - -
      - -
      - -
      - -
      - - - -
      -

      The following was created using data tags

      - -

      The following three inline (sparkline) chart have been initialized to read and interpret data tags

      -
      - - -
      -
      -
      -
      -

      Sparkline Pie

      - -
      - -
      -
      - -
      -
      - 6,4,8 -
      -
      - -
      - -
      - - -
      -
      -
      -

      Sparkline line

      - -
      - -
      -
      - -
      -
      - 6,4,7,8,4,3,2,2,5,6,7,4,1,5,7,9,9,8,7,6 -
      -
      - -
      - -
      - - -
      -
      -
      -

      Sparkline Bar

      - -
      - -
      -
      - -
      -
      - 6,4,8, 9, 10, 5, 13, 18, 21, 7, 9 -
      -
      - -
      - -
      - -
      - - -
      -
      -
      -
      -

      Sparkline examples

      - -
      - - -
      -
      - -
      -
      -
      -

      - Mouse speed Loading.. -

      - -

      - Inline 10,8,9,3,5,8,5 - line graphs - 8,4,0,0,0,0,1,4,4,10,10,10,10,0,0,0,4,6,5,9,10 -

      - -

      - Bar charts 10,8,9,3,5,8,5 - negative values: -3,1,2,0,3,-1 - stacked: 0:2,2:4,4:2,4:1 -

      - -

      - Composite inline - 8,4,0,0,0,0,1,4,4,10,10,10,10,0,0,0,4,6,5,9,10 -

      - -

      - Inline with normal range - 8,4,0,0,0,0,1,4,4,10,10,10,10,0,0,0,4,6,5,9,10 -

      - -

      - Composite bar - 4,6,7,7,4,3,2,1,4 -

      - -

      - Discrete - 4,6,7,7,4,3,2,1,4,4,5,6,7,6,6,2,4,5
      - - Discrete with threshold - 4,6,7,7,4,3,2,1,4 -

      - -

      - Bullet charts
      - 10,12,12,9,7
      - 14,12,12,9,7
      - 10,12,14,9,7
      -

      -
      - -
      -

      - Customize size and colours - 10,8,9,3,5,8,5,7 -

      - -

      - Tristate charts - 1,1,0,1,-1,-1,1,-1,0,0,1,1
      - (think games won, lost or drawn) -

      - -

      - Tristate chart using a colour map: - 1,2,0,2,-1,-2,1,-2,0,0,1,1 -

      - -

      - Box Plot: 4,27,34,52,54,59,61,68,78,82,85,87,91,93,100
      - Pre-computed box plot Loading.. -

      - -

      - Pie charts - 1,1,2 - 1,5 - 20,50,80 -

      -
      - -
      - -
      - -
      - -
      - -
      - - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/charts/morris.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/charts/morris.html deleted file mode 100644 index 73b0dc9ca7ad..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/charts/morris.html +++ /dev/null @@ -1,908 +0,0 @@ - - - - - - AdminLTE 2 | Morris.js Charts - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Morris Charts - Preview sample -

      - -
      - - -
      -
      -

      Warning!

      - -

      Morris.js charts are no longer maintained by its author. We would recommend using any of the other - charts that come with the template.

      -
      -
      -
      - -
      -
      -

      Area Chart

      - -
      - - -
      -
      -
      -
      -
      - -
      - - - -
      -
      -

      Donut Chart

      - -
      - - -
      -
      -
      -
      -
      - -
      - - -
      - -
      - -
      -
      -

      Line Chart

      - -
      - - -
      -
      -
      -
      -
      - -
      - - - -
      -
      -

      Bar Chart

      - -
      - - -
      -
      -
      -
      -
      - -
      - - -
      - -
      - - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/404.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/404.html deleted file mode 100644 index ac68a1948707..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/404.html +++ /dev/null @@ -1,756 +0,0 @@ - - - - - - AdminLTE 2 | 404 Page not found - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - 404 Error Page -

      - -
      - - -
      -
      -

      404

      - -
      -

      Oops! Page not found.

      - -

      - We could not find the page you were looking for. - Meanwhile, you may return to dashboard or try using the search form. -

      - -
      -
      - - -
      - -
      -
      - -
      -
      - -
      - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/500.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/500.html deleted file mode 100644 index 44dd963c7466..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/500.html +++ /dev/null @@ -1,757 +0,0 @@ - - - - - - AdminLTE 2 | 500 Error - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - 500 Error Page -

      - -
      - - -
      - -
      -

      500

      - -
      -

      Oops! Something went wrong.

      - -

      - We will work on fixing that right away. - Meanwhile, you may return to dashboard or try using the search form. -

      - -
      -
      - - -
      - -
      -
      - -
      -
      -
      - - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/blank.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/blank.html deleted file mode 100644 index 39f3271dffc6..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/blank.html +++ /dev/null @@ -1,654 +0,0 @@ - - - - - - AdminLTE 2 | Blank Page - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - - - - - - -
      - -
      -

      - Blank page - it all starts here -

      - -
      - - -
      - - -
      -
      -

      Title

      - -
      - - -
      -
      -
      - Start creating your amazing application! -
      - - - -
      - - -
      - -
      - - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/invoice-print.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/invoice-print.html deleted file mode 100644 index 12f2911c995c..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/invoice-print.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - AdminLTE 2 | Invoice - - - - - - - - - - - - - - - - -
      - -
      - -
      -
      - -
      - -
      - -
      -
      - From -
      - Admin, Inc.
      - 795 Folsom Ave, Suite 600
      - San Francisco, CA 94107
      - Phone: (804) 123-5432
      - Email: info@almasaeedstudio.com -
      -
      - -
      - To -
      - John Doe
      - 795 Folsom Ave, Suite 600
      - San Francisco, CA 94107
      - Phone: (555) 539-1037
      - Email: john.doe@example.com -
      -
      - -
      - Invoice #007612
      -
      - Order ID: 4F3S8J
      - Payment Due: 2/22/2014
      - Account: 968-34567 -
      - -
      - - - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      QtyProductSerial #DescriptionSubtotal
      1Call of Duty455-981-221El snort testosterone trophy driving gloves handsome$64.50
      1Need for Speed IV247-925-726Wes Anderson umami biodiesel$50.00
      1Monsters DVD735-845-642Terry Richardson helvetica tousled street art master$10.70
      1Grown Ups Blue Ray422-568-642Tousled lomo letterpress$25.99
      -
      - -
      - - -
      - -
      -

      Payment Methods:

      - Visa - Mastercard - American Express - Paypal - -

      - Etsy doostang zoodles disqus groupon greplin oooj voxy zoodles, weebly ning heekya handango imeem plugg dopplr - jibjab, movity jajah plickers sifteo edmodo ifttt zimbra. -

      -
      - -
      -

      Amount Due 2/22/2014

      - -
      - - - - - - - - - - - - - - - - - -
      Subtotal:$250.30
      Tax (9.3%)$10.34
      Shipping:$5.80
      Total:$265.24
      -
      -
      - -
      - -
      - -
      - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/invoice.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/invoice.html deleted file mode 100644 index a9f4c254608d..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/invoice.html +++ /dev/null @@ -1,886 +0,0 @@ - - - - - - AdminLTE 2 | Invoice - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Invoice - #007612 -

      - -
      - -
      -
      -

      Note:

      - This page has been enhanced for printing. Click the print button at the bottom of the invoice to test. -
      -
      - - -
      - -
      -
      - -
      - -
      - -
      -
      - From -
      - Admin, Inc.
      - 795 Folsom Ave, Suite 600
      - San Francisco, CA 94107
      - Phone: (804) 123-5432
      - Email: info@almasaeedstudio.com -
      -
      - -
      - To -
      - John Doe
      - 795 Folsom Ave, Suite 600
      - San Francisco, CA 94107
      - Phone: (555) 539-1037
      - Email: john.doe@example.com -
      -
      - -
      - Invoice #007612
      -
      - Order ID: 4F3S8J
      - Payment Due: 2/22/2014
      - Account: 968-34567 -
      - -
      - - - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      QtyProductSerial #DescriptionSubtotal
      1Call of Duty455-981-221El snort testosterone trophy driving gloves handsome$64.50
      1Need for Speed IV247-925-726Wes Anderson umami biodiesel$50.00
      1Monsters DVD735-845-642Terry Richardson helvetica tousled street art master$10.70
      1Grown Ups Blue Ray422-568-642Tousled lomo letterpress$25.99
      -
      - -
      - - -
      - -
      -

      Payment Methods:

      - Visa - Mastercard - American Express - Paypal - -

      - Etsy doostang zoodles disqus groupon greplin oooj voxy zoodles, weebly ning heekya handango imeem plugg - dopplr jibjab, movity jajah plickers sifteo edmodo ifttt zimbra. -

      -
      - -
      -

      Amount Due 2/22/2014

      - -
      - - - - - - - - - - - - - - - - - -
      Subtotal:$250.30
      Tax (9.3%)$10.34
      Shipping:$5.80
      Total:$265.24
      -
      -
      - -
      - - - -
      -
      - Print - - -
      -
      -
      - -
      -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/lockscreen.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/lockscreen.html deleted file mode 100644 index 72b013a10b26..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/lockscreen.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - AdminLTE 2 | Lockscreen - - - - - - - - - - - - - - - - - -
      - - -
      John Doe
      - - -
      - -
      - User Image -
      - - - -
      -
      - - -
      - -
      -
      -
      - - -
      - -
      - Enter your password to retrieve your session -
      - - -
      - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/login.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/login.html deleted file mode 100644 index 34baf97032b6..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/login.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - AdminLTE 2 | Log in - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/pace.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/pace.html deleted file mode 100644 index 6d531f97fe1c..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/pace.html +++ /dev/null @@ -1,679 +0,0 @@ - - - - - - AdminLTE 2 | Pace Page - - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - - - - - - -
      - -
      -

      - Pace page - Loading example -

      - -
      - - -
      - - -
      -
      -

      Title

      - -
      - - -
      -
      -
      - Pace loading works automatically on page. You can still implement it with ajax requests by adding this js: -
      $(document).ajaxStart(function() { Pace.restart(); }); -
      -
      -
      - -
      -
      -
      -
      -
      - - - -
      - - -
      - -
      - - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/profile.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/profile.html deleted file mode 100644 index d48afc718b93..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/profile.html +++ /dev/null @@ -1,1085 +0,0 @@ - - - - - - AdminLTE 2 | User Profile - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - User Profile -

      - -
      - - -
      - -
      -
      - - -
      -
      - User profile picture - -

      Nina Mcintire

      - -

      Software Engineer

      - - - - Follow -
      - -
      - - - -
      -
      -

      About Me

      -
      - -
      - Education - -

      - B.S. in Computer Science from the University of Tennessee at Knoxville -

      - -
      - - Location - -

      Malibu, California

      - -
      - - Skills - -

      - UI Design - Coding - Javascript - PHP - Node.js -

      - -
      - - Notes - -

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam fermentum enim neque.

      -
      - -
      - -
      - -
      - - -
      - -
      - - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/register.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/register.html deleted file mode 100644 index c53b23379d1c..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/examples/register.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - AdminLTE 2 | Registration Page - - - - - - - - - - - - - - - - - - -
      - - -
      - - -
      -
      - - -
      -
      - - -
      -
      - - -
      -
      - - -
      -
      -
      -
      - -
      -
      - -
      - -
      - -
      -
      - - - - I already have a membership -
      - -
      - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/forms/advanced.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/forms/advanced.html deleted file mode 100644 index 837f51100ce8..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/forms/advanced.html +++ /dev/null @@ -1,1220 +0,0 @@ - - - - - - AdminLTE 2 | Advanced form elements - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Advanced Form Elements - Preview -

      - -
      - - -
      - - -
      -
      -

      Select2

      - -
      - - -
      -
      - -
      -
      -
      -
      - - -
      - -
      - - -
      - -
      - -
      -
      - - -
      - -
      - - -
      - -
      - -
      - -
      - - -
      - - -
      -
      - -
      -
      -

      Input masks

      -
      -
      - -
      - - -
      -
      - -
      - -
      - -
      - - - -
      -
      -
      - -
      - -
      - -
      - - - -
      - - -
      -
      - -
      - -
      - -
      - - - -
      - - -
      -
      - -
      - -
      - -
      - - - -
      - - -
      -
      - -
      - -
      - -
      - - -
      - -
      - - -
      -
      -

      Color & Time Picker

      -
      -
      - -
      - - -
      - - - -
      - - -
      - - -
      - -
      -
      - -
      - - - -
      -
      - - -
      - - -
      - -
      -
      - -
      - -
      -
      - -
      - - -
      - -
      -
      -
      -

      Date picker

      -
      -
      - -
      - - -
      -
      - -
      - -
      - -
      - - - -
      - - -
      -
      - -
      - -
      - -
      - - - -
      - - -
      -
      - -
      - -
      - -
      - - - -
      - - -
      - -
      -
      - - -
      - -
      - - - -
      -
      -

      iCheck - Checkbox & Radio Inputs

      -
      -
      - - - -
      - - - -
      - - -
      - - - -
      - - - - -
      - - - -
      - - -
      - - - -
      - - - - -
      - - - -
      - - -
      - - - -
      -
      - - -
      - -
      - -
      - - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/forms/editors.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/forms/editors.html deleted file mode 100644 index b1c7051d2da0..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/forms/editors.html +++ /dev/null @@ -1,798 +0,0 @@ - - - - - - AdminLTE 2 | Editors - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Text Editors - Advanced form element -

      - -
      - - -
      -
      -
      -
      -
      -

      CK Editor - Advanced and full of features -

      - -
      - - -
      - -
      - -
      -
      - -
      -
      -
      - - -
      -
      -

      Bootstrap WYSIHTML5 - Simple and fast -

      - -
      - - -
      - -
      - -
      -
      - -
      -
      -
      -
      - -
      - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/forms/general.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/forms/general.html deleted file mode 100644 index 936df91df72d..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/forms/general.html +++ /dev/null @@ -1,1116 +0,0 @@ - - - - - - AdminLTE 2 | General Form Elements - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - General Form Elements - Preview -

      - -
      - - -
      -
      - -
      - -
      -
      -

      Quick Example

      -
      - - -
      -
      -
      - - -
      -
      - - -
      -
      - - - -

      Example block-level help text here.

      -
      -
      - -
      -
      - - - -
      -
      - - - -
      -
      -

      Different Height

      -
      -
      - -
      - -
      - -
      - -
      - - -
      -
      -

      Different Width

      -
      -
      -
      -
      - -
      -
      - -
      -
      - -
      -
      -
      - -
      - - - -
      -
      -

      Input Addon

      -
      -
      -
      - @ - -
      -
      - -
      - - .00 -
      -
      - -
      - $ - - .00 -
      - -

      With icons

      - -
      - - -
      -
      - -
      - - -
      -
      - -
      - - - -
      - -

      With checkbox and radio inputs

      - -
      -
      -
      - - - - -
      - -
      - -
      -
      - - - - -
      - -
      - -
      - - -

      With buttons

      - -

      Large: .input-group.input-group-lg

      - -
      - - - -
      - -

      Normal

      - -
      -
      - -
      - - -
      - -

      Small .input-group.input-group-sm

      - -
      - - - - -
      - -
      - -
      - - -
      - - -
      - -
      -
      -

      Horizontal Form

      -
      - - -
      -
      -
      - - -
      - -
      -
      -
      - - -
      - -
      -
      -
      -
      -
      - -
      -
      -
      -
      - - - -
      -
      - - -
      -
      -

      General Elements

      -
      - -
      -
      - -
      - - -
      -
      - - -
      - - -
      - - -
      -
      - - -
      - - -
      - - - Help block with success -
      -
      - - - Help block with warning -
      -
      - - - Help block with error -
      - - -
      -
      - -
      - -
      - -
      - -
      - -
      -
      - - -
      -
      - -
      -
      - -
      -
      - -
      -
      - - -
      - - -
      -
      - - -
      - - -
      - - -
      -
      - - -
      - -
      -
      - -
      - -
      - -
      - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/layout/boxed.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/layout/boxed.html deleted file mode 100644 index d737a2d91b1f..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/layout/boxed.html +++ /dev/null @@ -1,654 +0,0 @@ - - - - - - AdminLTE 2 | Boxed Layout - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - - - - - - -
      - -
      -

      - Boxed Layout - Blank example to the boxed layout -

      - -
      - - -
      -
      -

      Tip!

      - -

      Add the layout-boxed class to the body tag to get this layout. The boxed layout is helpful when working on - large screens because it prevents the site from stretching very wide.

      -
      - -
      -
      -

      Title

      - -
      - - -
      -
      -
      - Start creating your amazing application! -
      - - - -
      - -
      - -
      - - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/layout/collapsed-sidebar.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/layout/collapsed-sidebar.html deleted file mode 100644 index ac61cb89aa92..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/layout/collapsed-sidebar.html +++ /dev/null @@ -1,660 +0,0 @@ - - - - - - AdminLTE 2 | Collapsed Sidebar Layout - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - - - - - - -
      - -
      -

      - Sidebar Collapsed - Layout with collapsed sidebar on load -

      - -
      - - -
      -
      -

      Tip!

      - -

      Add the sidebar-collapse class to the body tag to get this layout. You should combine this option with a - fixed layout if you have a long sidebar. Doing that will prevent your page content from getting stretched - vertically.

      -
      - -
      -
      -

      Title

      - -
      - - -
      -
      -
      - Start creating your amazing application! -
      - - - -
      - -
      - -
      - - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/layout/fixed.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/layout/fixed.html deleted file mode 100644 index 396da5ba1053..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/layout/fixed.html +++ /dev/null @@ -1,660 +0,0 @@ - - - - - - AdminLTE 2 | Fixed Layout - - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - - - - - - -
      - -
      -

      - Fixed Layout - Blank example to the fixed layout -

      - -
      - - -
      -
      -

      Tip!

      - -

      Add the fixed class to the body tag to get this layout. The fixed layout is your best option if your sidebar - is bigger than your content because it prevents extra unwanted scrolling.

      -
      - -
      -
      -

      Title

      - -
      - - -
      -
      -
      - Start creating your amazing application! -
      - - - -
      - - -
      - -
      - - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/layout/top-nav.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/layout/top-nav.html deleted file mode 100644 index 127855c7319d..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/layout/top-nav.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - AdminLTE 2 | Top Navigation - - - - - - - - - - - - - - - - - - - -
      - -
      - -
      - -
      -
      - -
      -

      - Top Navigation - Example 2.0 -

      - -
      - - -
      -
      -

      Tip!

      - -

      Add the layout-top-nav class to the body tag to get this layout. This feature can also be used with a - sidebar! So use this class if you want to remove the custom dropdown menus from the navbar and use regular - links instead.

      -
      -
      -

      Warning!

      - -

      The construction of this layout differs from the normal one. In other words, the HTML markup of the navbar - and the content will slightly differ than that of the normal layout.

      -
      -
      -
      -

      Blank Box

      -
      -
      - The great content goes here -
      - -
      - -
      - -
      - -
      - -
      -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - -
      -
      - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/mailbox/compose.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/mailbox/compose.html deleted file mode 100644 index 43704caeb490..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/mailbox/compose.html +++ /dev/null @@ -1,760 +0,0 @@ - - - - - - AdminLTE 2 | Compose Message - - - - - - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Mailbox - 13 new messages -

      - -
      - - -
      -
      -
      - Back to Inbox - -
      -
      -

      Folders

      - -
      - -
      -
      - - -
      - -
      -
      -

      Labels

      - -
      - -
      -
      - - - -
      - -
      - -
      -
      -
      -

      Compose New Message

      -
      - -
      -
      - -
      -
      - -
      -
      - -
      -
      -
      - Attachment - -
      -

      Max. 32MB

      -
      -
      - - - -
      - -
      - -
      - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/mailbox/mailbox.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/mailbox/mailbox.html deleted file mode 100644 index 843d246ccc66..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/mailbox/mailbox.html +++ /dev/null @@ -1,940 +0,0 @@ - - - - - - AdminLTE 2 | Mailbox - - - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Mailbox - 13 new messages -

      - -
      - - -
      -
      -
      - Compose - -
      -
      -

      Folders

      - -
      - -
      -
      - - -
      - -
      -
      -

      Labels

      - -
      - -
      -
      - - -
      - -
      - -
      -
      -
      -

      Inbox

      - -
      -
      - - -
      -
      - -
      - -
      -
      - - -
      - - - -
      - - -
      - 1-50/200 -
      - - -
      - -
      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - 5 mins ago
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - 28 mins ago
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - 11 hours ago
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - 15 hours ago
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - Yesterday
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - 2 days ago
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - 2 days ago
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - 2 days ago
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - 2 days ago
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - 2 days ago
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - 4 days ago
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - 12 days ago
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - 12 days ago
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - 14 days ago
      Alexander PierceAdminLTE 2.0 Issue - Trying to find a solution to this problem... - 15 days ago
      - -
      - -
      - - -
      - -
      - -
      - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/mailbox/read-mail.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/mailbox/read-mail.html deleted file mode 100644 index 029698291f23..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/mailbox/read-mail.html +++ /dev/null @@ -1,815 +0,0 @@ - - - - - - AdminLTE 2 | Read Mail - - - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Read Mail -

      - -
      - - -
      -
      -
      - Compose - -
      -
      -

      Folders

      - -
      - -
      -
      - - -
      - -
      -
      -

      Labels

      - -
      - -
      -
      - - -
      - -
      - -
      -
      -
      -

      Read Mail

      - -
      - - -
      -
      - -
      -
      -

      Message Subject Is Placed Here

      -
      From: help@example.com - 15 Feb. 2016 11:03 PM
      -
      - -
      -
      - - - -
      - - -
      - -
      -

      Hello John,

      - -

      Keffiyeh blog actually fashion axe vegan, irony biodiesel. Cold-pressed hoodie chillwave put a bird - on it aesthetic, bitters brunch meggings vegan iPhone. Dreamcatcher vegan scenester mlkshk. Ethical - master cleanse Bushwick, occupy Thundercats banjo cliche ennui farm-to-table mlkshk fanny pack - gluten-free. Marfa butcher vegan quinoa, bicycle rights disrupt tofu scenester chillwave 3 wolf moon - asymmetrical taxidermy pour-over. Quinoa tote bag fashion axe, Godard disrupt migas church-key tofu - blog locavore. Thundercats cronut polaroid Neutra tousled, meh food truck selfies narwhal American - Apparel.

      - -

      Raw denim McSweeney's bicycle rights, iPhone trust fund quinoa Neutra VHS kale chips vegan PBR&B - literally Thundercats +1. Forage tilde four dollar toast, banjo health goth paleo butcher. Four dollar - toast Brooklyn pour-over American Apparel sustainable, lumbersexual listicle gluten-free health goth - umami hoodie. Synth Echo Park bicycle rights DIY farm-to-table, retro kogi sriracha dreamcatcher PBR&B - flannel hashtag irony Wes Anderson. Lumbersexual Williamsburg Helvetica next level. Cold-pressed - slow-carb pop-up normcore Thundercats Portland, cardigan literally meditation lumbersexual crucifix. - Wayfarers raw denim paleo Bushwick, keytar Helvetica scenester keffiyeh 8-bit irony mumblecore - whatever viral Truffaut.

      - -

      Post-ironic shabby chic VHS, Marfa keytar flannel lomo try-hard keffiyeh cray. Actually fap fanny - pack yr artisan trust fund. High Life dreamcatcher church-key gentrify. Tumblr stumptown four dollar - toast vinyl, cold-pressed try-hard blog authentic keffiyeh Helvetica lo-fi tilde Intelligentsia. Lomo - locavore salvia bespoke, twee fixie paleo cliche brunch Schlitz blog McSweeney's messenger bag swag - slow-carb. Odd Future photo booth pork belly, you probably haven't heard of them actually tofu ennui - keffiyeh lo-fi Truffaut health goth. Narwhal sustainable retro disrupt.

      - -

      Skateboard artisan letterpress before they sold out High Life messenger bag. Bitters chambray - leggings listicle, drinking vinegar chillwave synth. Fanny pack hoodie American Apparel twee. American - Apparel PBR listicle, salvia aesthetic occupy sustainable Neutra kogi. Organic synth Tumblr viral - plaid, shabby chic single-origin coffee Etsy 3 wolf moon slow-carb Schlitz roof party tousled squid - vinyl. Readymade next level literally trust fund. Distillery master cleanse migas, Vice sriracha - flannel chambray chia cronut.

      - -

      Thanks,
      Jane

      -
      - -
      - - - - - -
      - -
      - -
      - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - -
      -
      - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/tables/data.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/tables/data.html deleted file mode 100644 index ddd7370b26e7..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/tables/data.html +++ /dev/null @@ -1,1638 +0,0 @@ - - - - - - AdminLTE 2 | Data Tables - - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Data Tables - advanced tables -

      - -
      - - -
      -
      -
      -
      -
      -

      Hover Data Table

      -
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Rendering engineBrowserPlatform(s)Engine versionCSS grade
      TridentInternet - Explorer 4.0 - Win 95+ 4X
      TridentInternet - Explorer 5.0 - Win 95+5C
      TridentInternet - Explorer 5.5 - Win 95+5.5A
      TridentInternet - Explorer 6 - Win 98+6A
      TridentInternet Explorer 7Win XP SP2+7A
      TridentAOL browser (AOL desktop)Win XP6A
      GeckoFirefox 1.0Win 98+ / OSX.2+1.7A
      GeckoFirefox 1.5Win 98+ / OSX.2+1.8A
      GeckoFirefox 2.0Win 98+ / OSX.2+1.8A
      GeckoFirefox 3.0Win 2k+ / OSX.3+1.9A
      GeckoCamino 1.0OSX.2+1.8A
      GeckoCamino 1.5OSX.3+1.8A
      GeckoNetscape 7.2Win 95+ / Mac OS 8.6-9.21.7A
      GeckoNetscape Browser 8Win 98SE+1.7A
      GeckoNetscape Navigator 9Win 98+ / OSX.2+1.8A
      GeckoMozilla 1.0Win 95+ / OSX.1+1A
      GeckoMozilla 1.1Win 95+ / OSX.1+1.1A
      GeckoMozilla 1.2Win 95+ / OSX.1+1.2A
      GeckoMozilla 1.3Win 95+ / OSX.1+1.3A
      GeckoMozilla 1.4Win 95+ / OSX.1+1.4A
      GeckoMozilla 1.5Win 95+ / OSX.1+1.5A
      GeckoMozilla 1.6Win 95+ / OSX.1+1.6A
      GeckoMozilla 1.7Win 98+ / OSX.1+1.7A
      GeckoMozilla 1.8Win 98+ / OSX.1+1.8A
      GeckoSeamonkey 1.1Win 98+ / OSX.2+1.8A
      GeckoEpiphany 2.20Gnome1.8A
      WebkitSafari 1.2OSX.3125.5A
      WebkitSafari 1.3OSX.3312.8A
      WebkitSafari 2.0OSX.4+419.3A
      WebkitSafari 3.0OSX.4+522.1A
      WebkitOmniWeb 5.5OSX.4+420A
      WebkitiPod Touch / iPhoneiPod420.1A
      WebkitS60S60413A
      PrestoOpera 7.0Win 95+ / OSX.1+-A
      PrestoOpera 7.5Win 95+ / OSX.2+-A
      PrestoOpera 8.0Win 95+ / OSX.2+-A
      PrestoOpera 8.5Win 95+ / OSX.2+-A
      PrestoOpera 9.0Win 95+ / OSX.3+-A
      PrestoOpera 9.2Win 88+ / OSX.3+-A
      PrestoOpera 9.5Win 88+ / OSX.3+-A
      PrestoOpera for WiiWii-A
      PrestoNokia N800N800-A
      PrestoNintendo DS browserNintendo DS8.5C/A1
      KHTMLKonqureror 3.1KDE 3.13.1C
      KHTMLKonqureror 3.3KDE 3.33.3A
      KHTMLKonqureror 3.5KDE 3.53.5A
      TasmanInternet Explorer 4.5Mac OS 8-9-X
      TasmanInternet Explorer 5.1Mac OS 7.6-91C
      TasmanInternet Explorer 5.2Mac OS 8-X1C
      MiscNetFront 3.1Embedded devices-C
      MiscNetFront 3.4Embedded devices-A
      MiscDillo 0.8Embedded devices-X
      MiscLinksText only-X
      MiscLynxText only-X
      MiscIE MobileWindows Mobile 6-C
      MiscPSP browserPSP-C
      Other browsersAll others--U
      Rendering engineBrowserPlatform(s)Engine versionCSS grade
      -
      - -
      - - -
      -
      -

      Data Table With Full Features

      -
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Rendering engineBrowserPlatform(s)Engine versionCSS grade
      TridentInternet - Explorer 4.0 - Win 95+ 4X
      TridentInternet - Explorer 5.0 - Win 95+5C
      TridentInternet - Explorer 5.5 - Win 95+5.5A
      TridentInternet - Explorer 6 - Win 98+6A
      TridentInternet Explorer 7Win XP SP2+7A
      TridentAOL browser (AOL desktop)Win XP6A
      GeckoFirefox 1.0Win 98+ / OSX.2+1.7A
      GeckoFirefox 1.5Win 98+ / OSX.2+1.8A
      GeckoFirefox 2.0Win 98+ / OSX.2+1.8A
      GeckoFirefox 3.0Win 2k+ / OSX.3+1.9A
      GeckoCamino 1.0OSX.2+1.8A
      GeckoCamino 1.5OSX.3+1.8A
      GeckoNetscape 7.2Win 95+ / Mac OS 8.6-9.21.7A
      GeckoNetscape Browser 8Win 98SE+1.7A
      GeckoNetscape Navigator 9Win 98+ / OSX.2+1.8A
      GeckoMozilla 1.0Win 95+ / OSX.1+1A
      GeckoMozilla 1.1Win 95+ / OSX.1+1.1A
      GeckoMozilla 1.2Win 95+ / OSX.1+1.2A
      GeckoMozilla 1.3Win 95+ / OSX.1+1.3A
      GeckoMozilla 1.4Win 95+ / OSX.1+1.4A
      GeckoMozilla 1.5Win 95+ / OSX.1+1.5A
      GeckoMozilla 1.6Win 95+ / OSX.1+1.6A
      GeckoMozilla 1.7Win 98+ / OSX.1+1.7A
      GeckoMozilla 1.8Win 98+ / OSX.1+1.8A
      GeckoSeamonkey 1.1Win 98+ / OSX.2+1.8A
      GeckoEpiphany 2.20Gnome1.8A
      WebkitSafari 1.2OSX.3125.5A
      WebkitSafari 1.3OSX.3312.8A
      WebkitSafari 2.0OSX.4+419.3A
      WebkitSafari 3.0OSX.4+522.1A
      WebkitOmniWeb 5.5OSX.4+420A
      WebkitiPod Touch / iPhoneiPod420.1A
      WebkitS60S60413A
      PrestoOpera 7.0Win 95+ / OSX.1+-A
      PrestoOpera 7.5Win 95+ / OSX.2+-A
      PrestoOpera 8.0Win 95+ / OSX.2+-A
      PrestoOpera 8.5Win 95+ / OSX.2+-A
      PrestoOpera 9.0Win 95+ / OSX.3+-A
      PrestoOpera 9.2Win 88+ / OSX.3+-A
      PrestoOpera 9.5Win 88+ / OSX.3+-A
      PrestoOpera for WiiWii-A
      PrestoNokia N800N800-A
      PrestoNintendo DS browserNintendo DS8.5C/A1
      KHTMLKonqureror 3.1KDE 3.13.1C
      KHTMLKonqureror 3.3KDE 3.33.3A
      KHTMLKonqureror 3.5KDE 3.53.5A
      TasmanInternet Explorer 4.5Mac OS 8-9-X
      TasmanInternet Explorer 5.1Mac OS 7.6-91C
      TasmanInternet Explorer 5.2Mac OS 8-X1C
      MiscNetFront 3.1Embedded devices-C
      MiscNetFront 3.4Embedded devices-A
      MiscDillo 0.8Embedded devices-X
      MiscLinksText only-X
      MiscLynxText only-X
      MiscIE MobileWindows Mobile 6-C
      MiscPSP browserPSP-C
      Other browsersAll others--U
      Rendering engineBrowserPlatform(s)Engine versionCSS grade
      -
      - -
      - -
      - -
      - -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/tables/simple.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/tables/simple.html deleted file mode 100644 index f14ecb5231e9..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/tables/simple.html +++ /dev/null @@ -1,1056 +0,0 @@ - - - - - - AdminLTE 2 | Simple Tables - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Simple Tables - preview of simple tables -

      - -
      - - -
      -
      -
      -
      -
      -

      Bordered Table

      -
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      #TaskProgressLabel
      1.Update software -
      -
      -
      -
      55%
      2.Clean database -
      -
      -
      -
      70%
      3.Cron job running -
      -
      -
      -
      30%
      4.Fix and squish bugs -
      -
      -
      -
      90%
      -
      - - -
      - - -
      -
      -

      Condensed Full Width Table

      -
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      #TaskProgressLabel
      1.Update software -
      -
      -
      -
      55%
      2.Clean database -
      -
      -
      -
      70%
      3.Cron job running -
      -
      -
      -
      30%
      4.Fix and squish bugs -
      -
      -
      -
      90%
      -
      - -
      - -
      - -
      -
      -
      -

      Simple Full Width Table

      - -
      - -
      -
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      #TaskProgressLabel
      1.Update software -
      -
      -
      -
      55%
      2.Clean database -
      -
      -
      -
      70%
      3.Cron job running -
      -
      -
      -
      30%
      4.Fix and squish bugs -
      -
      -
      -
      90%
      -
      - -
      - - -
      -
      -

      Striped Full Width Table

      -
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      #TaskProgressLabel
      1.Update software -
      -
      -
      -
      55%
      2.Clean database -
      -
      -
      -
      70%
      3.Cron job running -
      -
      -
      -
      30%
      4.Fix and squish bugs -
      -
      -
      -
      90%
      -
      - -
      - -
      - -
      - -
      -
      -
      -
      -

      Responsive Hover Table

      - -
      -
      - - -
      - -
      -
      -
      -
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      IDUserDateStatusReason
      183John Doe11-7-2014ApprovedBacon ipsum dolor sit amet salami venison chicken flank fatback doner.
      219Alexander Pierce11-7-2014PendingBacon ipsum dolor sit amet salami venison chicken flank fatback doner.
      657Bob Doe11-7-2014ApprovedBacon ipsum dolor sit amet salami venison chicken flank fatback doner.
      175Mike Doe11-7-2014DeniedBacon ipsum dolor sit amet salami venison chicken flank fatback doner.
      -
      - -
      - -
      -
      -
      - -
      - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/widgets.html b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/widgets.html deleted file mode 100644 index 266abf6ad985..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/pages/widgets.html +++ /dev/null @@ -1,1788 +0,0 @@ - - - - - - AdminLTE 2 | Widgets - - - - - - - - - - - - - - - - - - -
      - -
      - - - - -
      - - - - -
      - -
      -

      - Widgets - Preview page -

      - -
      - - -
      - -
      -
      -
      - - -
      - Messages - 1,410 -
      - -
      - -
      - -
      -
      - - -
      - Bookmarks - 410 -
      - -
      - -
      - -
      -
      - - -
      - Uploads - 13,648 -
      - -
      - -
      - -
      -
      - - -
      - Likes - 93,139 -
      - -
      - -
      - -
      - - - - -
      -
      -
      - - -
      - Bookmarks - 41,410 - -
      -
      -
      - - 70% Increase in 30 Days - -
      - -
      - -
      - -
      -
      - - -
      - Likes - 41,410 - -
      -
      -
      - - 70% Increase in 30 Days - -
      - -
      - -
      - -
      -
      - - -
      - Events - 41,410 - -
      -
      -
      - - 70% Increase in 30 Days - -
      - -
      - -
      - -
      -
      - - -
      - Comments - 41,410 - -
      -
      -
      - - 70% Increase in 30 Days - -
      - -
      - -
      - -
      - - - - - -
      -
      - -
      -
      -

      150

      - -

      New Orders

      -
      -
      - -
      - - More info - -
      -
      - -
      - -
      -
      -

      53%

      - -

      Bounce Rate

      -
      -
      - -
      - - More info - -
      -
      - -
      - -
      -
      -

      44

      - -

      User Registrations

      -
      -
      - -
      - - More info - -
      -
      - -
      - -
      -
      -

      65

      - -

      Unique Visitors

      -
      -
      - -
      - - More info - -
      -
      - -
      - - - - -
      -
      -
      -
      -

      Expandable

      - -
      - -
      - -
      - -
      - The body of the box -
      - -
      - -
      - -
      -
      -
      -

      Removable

      - -
      - -
      - -
      - -
      - The body of the box -
      - -
      - -
      - -
      -
      -
      -

      Collapsable

      - -
      - -
      - -
      - -
      - The body of the box -
      - -
      - -
      - -
      -
      -
      -

      Loading state

      -
      -
      - The body of the box -
      - - -
      - -
      - -
      - -
      - -
      - - - - -
      -
      -
      -
      -

      Expandable

      - -
      - -
      - -
      - -
      - The body of the box -
      - -
      - -
      - -
      -
      -
      -

      Removable

      - -
      - -
      - -
      - -
      - The body of the box -
      - -
      - -
      - -
      -
      -
      -

      Collapsable

      - -
      - -
      - -
      - -
      - The body of the box -
      - -
      - -
      - -
      -
      -
      -

      Loading state

      -
      -
      - The body of the box -
      - - -
      - -
      - -
      - -
      - -
      - - - - - -
      -
      - -
      -
      -

      Direct Chat

      - -
      - 3 - - - -
      -
      - -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - - Message User Image -
      - Is this template really for free? That's unbelievable! -
      - -
      - - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - - Message User Image -
      - You better believe it! -
      - -
      - -
      - - - - - -
      - - - -
      - -
      - - -
      - -
      -
      -

      Direct Chat

      - -
      - 3 - - - -
      -
      - -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - - Message User Image -
      - Is this template really for free? That's unbelievable! -
      - -
      - - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - - Message User Image -
      - You better believe it! -
      - -
      - -
      - - - - - -
      - - - -
      - -
      - - -
      - -
      -
      -

      Direct Chat

      - -
      - 3 - - - -
      -
      - -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - - Message User Image -
      - Is this template really for free? That's unbelievable! -
      - -
      - - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - - Message User Image -
      - You better believe it! -
      - -
      - -
      - - - - - -
      - - - -
      - -
      - - -
      - -
      -
      -

      Direct Chat

      - -
      - 3 - - - -
      -
      - -
      - -
      - -
      -
      - Alexander Pierce - 23 Jan 2:00 pm -
      - - Message User Image -
      - Is this template really for free? That's unbelievable! -
      - -
      - - - -
      -
      - Sarah Bullock - 23 Jan 2:05 pm -
      - - Message User Image -
      - You better believe it! -
      - -
      - -
      - - - - - -
      - - - -
      - -
      - -
      - - - - -
      -
      - -
      - -
      -
      - User Avatar -
      - -

      Nadia Carmichael

      -
      Lead Developer
      -
      - -
      - -
      - -
      - -
      - -
      -

      Alexander Pierce

      -
      Founder & CEO
      -
      -
      - User Avatar -
      - -
      - -
      - -
      - -
      - -
      -

      Elizabeth Pierce

      -
      Web Designer
      -
      -
      - User Avatar -
      - -
      - -
      - -
      - - -
      -
      - -
      -
      -
      - User Image - Jonathan Burke Jr. - Shared publicly - 7:30 PM Today -
      - -
      - - - -
      - -
      - -
      - Photo - -

      I took this photo this morning. What do you guys think?

      - - - 127 likes - 3 comments -
      - - - - - -
      - -
      - -
      - -
      -
      -
      - User Image - Jonathan Burke Jr. - Shared publicly - 7:30 PM Today -
      - -
      - - - -
      - -
      - -
      - -

      Far far away, behind the word mountains, far from the - countries Vokalia and Consonantia, there live the blind - texts. Separated they live in Bookmarksgrove right at

      - -

      the coast of the Semantics, a large language ocean. - A small river named Duden flows by their place and supplies - it with the necessary regelialia. It is a paradisematic - country, in which roasted parts of sentences fly into - your mouth.

      - - -
      - Attachment Image - -
      -

      Lorem ipsum text generator

      - -
      - Description about the attachment can be placed here. - Lorem Ipsum is simply dummy text of the printing and typesetting industry... more -
      - -
      - -
      - - - - - - 45 likes - 2 comments -
      - - - - - -
      - -
      - -
      - - -
      - -
      - - -
      - - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
      - - - - - -
      -
      - - - - - - - - - - - - - - - - diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/plugins/bootstrap-slider/bootstrap-slider.js b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/plugins/bootstrap-slider/bootstrap-slider.js deleted file mode 100644 index 3a0e464e7415..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/plugins/bootstrap-slider/bootstrap-slider.js +++ /dev/null @@ -1,1576 +0,0 @@ -/*! ========================================================= - * bootstrap-slider.js - * - * Maintainers: - * Kyle Kemp - * - Twitter: @seiyria - * - Github: seiyria - * Rohit Kalkur - * - Twitter: @Rovolutionary - * - Github: rovolution - * - * ========================================================= - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================= */ - - -/** - * Bridget makes jQuery widgets - * v1.0.1 - * MIT license - */ - -(function(root, factory) { - if(typeof define === "function" && define.amd) { - define(["jquery"], factory); - } - else if(typeof module === "object" && module.exports) { - var jQuery; - try { - jQuery = require("jquery"); - } - catch (err) { - jQuery = null; - } - module.exports = factory(jQuery); - } - else { - root.Slider = factory(root.jQuery); - } -}(this, function($) { - // Reference to Slider constructor - var Slider; - - - (function( $ ) { - - 'use strict'; - - // -------------------------- utils -------------------------- // - - var slice = Array.prototype.slice; - - function noop() {} - - // -------------------------- definition -------------------------- // - - function defineBridget( $ ) { - - // bail if no jQuery - if ( !$ ) { - return; - } - - // -------------------------- addOptionMethod -------------------------- // - - /** - * adds option method -> $().plugin('option', {...}) - * @param {Function} PluginClass - constructor class - */ - function addOptionMethod( PluginClass ) { - // don't overwrite original option method - if ( PluginClass.prototype.option ) { - return; - } - - // option setter - PluginClass.prototype.option = function( opts ) { - // bail out if not an object - if ( !$.isPlainObject( opts ) ){ - return; - } - this.options = $.extend( true, this.options, opts ); - }; - } - - - // -------------------------- plugin bridge -------------------------- // - - // helper function for logging errors - // $.error breaks jQuery chaining - var logError = typeof console === 'undefined' ? noop : - function( message ) { - console.error( message ); - }; - - /** - * jQuery plugin bridge, access methods like $elem.plugin('method') - * @param {String} namespace - plugin name - * @param {Function} PluginClass - constructor class - */ - function bridge( namespace, PluginClass ) { - // add to jQuery fn namespace - $.fn[ namespace ] = function( options ) { - if ( typeof options === 'string' ) { - // call plugin method when first argument is a string - // get arguments for method - var args = slice.call( arguments, 1 ); - - for ( var i=0, len = this.length; i < len; i++ ) { - var elem = this[i]; - var instance = $.data( elem, namespace ); - if ( !instance ) { - logError( "cannot call methods on " + namespace + " prior to initialization; " + - "attempted to call '" + options + "'" ); - continue; - } - if ( !$.isFunction( instance[options] ) || options.charAt(0) === '_' ) { - logError( "no such method '" + options + "' for " + namespace + " instance" ); - continue; - } - - // trigger method with arguments - var returnValue = instance[ options ].apply( instance, args); - - // break look and return first value if provided - if ( returnValue !== undefined && returnValue !== instance) { - return returnValue; - } - } - // return this if no return value - return this; - } else { - var objects = this.map( function() { - var instance = $.data( this, namespace ); - if ( instance ) { - // apply options & init - instance.option( options ); - instance._init(); - } else { - // initialize new instance - instance = new PluginClass( this, options ); - $.data( this, namespace, instance ); - } - return $(this); - }); - - if(!objects || objects.length > 1) { - return objects; - } else { - return objects[0]; - } - } - }; - - } - - // -------------------------- bridget -------------------------- // - - /** - * converts a Prototypical class into a proper jQuery plugin - * the class must have a ._init method - * @param {String} namespace - plugin name, used in $().pluginName - * @param {Function} PluginClass - constructor class - */ - $.bridget = function( namespace, PluginClass ) { - addOptionMethod( PluginClass ); - bridge( namespace, PluginClass ); - }; - - return $.bridget; - - } - - // get jquery from browser global - defineBridget( $ ); - - })( $ ); - - - /************************************************* - - BOOTSTRAP-SLIDER SOURCE CODE - - **************************************************/ - - (function($) { - - var ErrorMsgs = { - formatInvalidInputErrorMsg : function(input) { - return "Invalid input value '" + input + "' passed in"; - }, - callingContextNotSliderInstance : "Calling context element does not have instance of Slider bound to it. Check your code to make sure the JQuery object returned from the call to the slider() initializer is calling the method" - }; - - var SliderScale = { - linear: { - toValue: function(percentage) { - var rawValue = percentage/100 * (this.options.max - this.options.min); - if (this.options.ticks_positions.length > 0) { - var minv, maxv, minp, maxp = 0; - for (var i = 0; i < this.options.ticks_positions.length; i++) { - if (percentage <= this.options.ticks_positions[i]) { - minv = (i > 0) ? this.options.ticks[i-1] : 0; - minp = (i > 0) ? this.options.ticks_positions[i-1] : 0; - maxv = this.options.ticks[i]; - maxp = this.options.ticks_positions[i]; - - break; - } - } - if (i > 0) { - var partialPercentage = (percentage - minp) / (maxp - minp); - rawValue = minv + partialPercentage * (maxv - minv); - } - } - - var value = this.options.min + Math.round(rawValue / this.options.step) * this.options.step; - if (value < this.options.min) { - return this.options.min; - } else if (value > this.options.max) { - return this.options.max; - } else { - return value; - } - }, - toPercentage: function(value) { - if (this.options.max === this.options.min) { - return 0; - } - - if (this.options.ticks_positions.length > 0) { - var minv, maxv, minp, maxp = 0; - for (var i = 0; i < this.options.ticks.length; i++) { - if (value <= this.options.ticks[i]) { - minv = (i > 0) ? this.options.ticks[i-1] : 0; - minp = (i > 0) ? this.options.ticks_positions[i-1] : 0; - maxv = this.options.ticks[i]; - maxp = this.options.ticks_positions[i]; - - break; - } - } - if (i > 0) { - var partialPercentage = (value - minv) / (maxv - minv); - return minp + partialPercentage * (maxp - minp); - } - } - - return 100 * (value - this.options.min) / (this.options.max - this.options.min); - } - }, - - logarithmic: { - /* Based on http://stackoverflow.com/questions/846221/logarithmic-slider */ - toValue: function(percentage) { - var min = (this.options.min === 0) ? 0 : Math.log(this.options.min); - var max = Math.log(this.options.max); - var value = Math.exp(min + (max - min) * percentage / 100); - value = this.options.min + Math.round((value - this.options.min) / this.options.step) * this.options.step; - /* Rounding to the nearest step could exceed the min or - * max, so clip to those values. */ - if (value < this.options.min) { - return this.options.min; - } else if (value > this.options.max) { - return this.options.max; - } else { - return value; - } - }, - toPercentage: function(value) { - if (this.options.max === this.options.min) { - return 0; - } else { - var max = Math.log(this.options.max); - var min = this.options.min === 0 ? 0 : Math.log(this.options.min); - var v = value === 0 ? 0 : Math.log(value); - return 100 * (v - min) / (max - min); - } - } - } - }; - - - /************************************************* - - CONSTRUCTOR - - **************************************************/ - Slider = function(element, options) { - createNewSlider.call(this, element, options); - return this; - }; - - function createNewSlider(element, options) { - - /* - The internal state object is used to store data about the current 'state' of slider. - - This includes values such as the `value`, `enabled`, etc... - */ - this._state = { - value: null, - enabled: null, - offset: null, - size: null, - percentage: null, - inDrag: false, - over: false - }; - - - if(typeof element === "string") { - this.element = document.querySelector(element); - } else if(element instanceof HTMLElement) { - this.element = element; - } - - /************************************************* - - Process Options - - **************************************************/ - options = options ? options : {}; - var optionTypes = Object.keys(this.defaultOptions); - - for(var i = 0; i < optionTypes.length; i++) { - var optName = optionTypes[i]; - - // First check if an option was passed in via the constructor - var val = options[optName]; - // If no data attrib, then check data atrributes - val = (typeof val !== 'undefined') ? val : getDataAttrib(this.element, optName); - // Finally, if nothing was specified, use the defaults - val = (val !== null) ? val : this.defaultOptions[optName]; - - // Set all options on the instance of the Slider - if(!this.options) { - this.options = {}; - } - this.options[optName] = val; - } - - /* - Validate `tooltip_position` against 'orientation` - - if `tooltip_position` is incompatible with orientation, swith it to a default compatible with specified `orientation` - -- default for "vertical" -> "right" - -- default for "horizontal" -> "left" - */ - if(this.options.orientation === "vertical" && (this.options.tooltip_position === "top" || this.options.tooltip_position === "bottom")) { - - this.options.tooltip_position = "right"; - - } - else if(this.options.orientation === "horizontal" && (this.options.tooltip_position === "left" || this.options.tooltip_position === "right")) { - - this.options.tooltip_position = "top"; - - } - - function getDataAttrib(element, optName) { - var dataName = "data-slider-" + optName.replace(/_/g, '-'); - var dataValString = element.getAttribute(dataName); - - try { - return JSON.parse(dataValString); - } - catch(err) { - return dataValString; - } - } - - /************************************************* - - Create Markup - - **************************************************/ - - var origWidth = this.element.style.width; - var updateSlider = false; - var parent = this.element.parentNode; - var sliderTrackSelection; - var sliderTrackLow, sliderTrackHigh; - var sliderMinHandle; - var sliderMaxHandle; - - if (this.sliderElem) { - updateSlider = true; - } else { - /* Create elements needed for slider */ - this.sliderElem = document.createElement("div"); - this.sliderElem.className = "slider"; - - /* Create slider track elements */ - var sliderTrack = document.createElement("div"); - sliderTrack.className = "slider-track"; - - sliderTrackLow = document.createElement("div"); - sliderTrackLow.className = "slider-track-low"; - - sliderTrackSelection = document.createElement("div"); - sliderTrackSelection.className = "slider-selection"; - - sliderTrackHigh = document.createElement("div"); - sliderTrackHigh.className = "slider-track-high"; - - sliderMinHandle = document.createElement("div"); - sliderMinHandle.className = "slider-handle min-slider-handle"; - sliderMinHandle.setAttribute('role', 'slider'); - sliderMinHandle.setAttribute('aria-valuemin', this.options.min); - sliderMinHandle.setAttribute('aria-valuemax', this.options.max); - - sliderMaxHandle = document.createElement("div"); - sliderMaxHandle.className = "slider-handle max-slider-handle"; - sliderMaxHandle.setAttribute('role', 'slider'); - sliderMaxHandle.setAttribute('aria-valuemin', this.options.min); - sliderMaxHandle.setAttribute('aria-valuemax', this.options.max); - - sliderTrack.appendChild(sliderTrackLow); - sliderTrack.appendChild(sliderTrackSelection); - sliderTrack.appendChild(sliderTrackHigh); - - /* Add aria-labelledby to handle's */ - var isLabelledbyArray = Array.isArray(this.options.labelledby); - if (isLabelledbyArray && this.options.labelledby[0]) { - sliderMinHandle.setAttribute('aria-labelledby', this.options.labelledby[0]); - } - if (isLabelledbyArray && this.options.labelledby[1]) { - sliderMaxHandle.setAttribute('aria-labelledby', this.options.labelledby[1]); - } - if (!isLabelledbyArray && this.options.labelledby) { - sliderMinHandle.setAttribute('aria-labelledby', this.options.labelledby); - sliderMaxHandle.setAttribute('aria-labelledby', this.options.labelledby); - } - - /* Create ticks */ - this.ticks = []; - if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { - for (i = 0; i < this.options.ticks.length; i++) { - var tick = document.createElement('div'); - tick.className = 'slider-tick'; - - this.ticks.push(tick); - sliderTrack.appendChild(tick); - } - - sliderTrackSelection.className += " tick-slider-selection"; - } - - sliderTrack.appendChild(sliderMinHandle); - sliderTrack.appendChild(sliderMaxHandle); - - this.tickLabels = []; - if (Array.isArray(this.options.ticks_labels) && this.options.ticks_labels.length > 0) { - this.tickLabelContainer = document.createElement('div'); - this.tickLabelContainer.className = 'slider-tick-label-container'; - - for (i = 0; i < this.options.ticks_labels.length; i++) { - var label = document.createElement('div'); - var noTickPositionsSpecified = this.options.ticks_positions.length === 0; - var tickLabelsIndex = (this.options.reversed && noTickPositionsSpecified) ? (this.options.ticks_labels.length - (i + 1)) : i; - label.className = 'slider-tick-label'; - label.innerHTML = this.options.ticks_labels[tickLabelsIndex]; - - this.tickLabels.push(label); - this.tickLabelContainer.appendChild(label); - } - } - - - var createAndAppendTooltipSubElements = function(tooltipElem) { - var arrow = document.createElement("div"); - arrow.className = "tooltip-arrow"; - - var inner = document.createElement("div"); - inner.className = "tooltip-inner"; - - tooltipElem.appendChild(arrow); - tooltipElem.appendChild(inner); - - }; - - /* Create tooltip elements */ - var sliderTooltip = document.createElement("div"); - sliderTooltip.className = "tooltip tooltip-main"; - sliderTooltip.setAttribute('role', 'presentation'); - createAndAppendTooltipSubElements(sliderTooltip); - - var sliderTooltipMin = document.createElement("div"); - sliderTooltipMin.className = "tooltip tooltip-min"; - sliderTooltipMin.setAttribute('role', 'presentation'); - createAndAppendTooltipSubElements(sliderTooltipMin); - - var sliderTooltipMax = document.createElement("div"); - sliderTooltipMax.className = "tooltip tooltip-max"; - sliderTooltipMax.setAttribute('role', 'presentation'); - createAndAppendTooltipSubElements(sliderTooltipMax); - - - /* Append components to sliderElem */ - this.sliderElem.appendChild(sliderTrack); - this.sliderElem.appendChild(sliderTooltip); - this.sliderElem.appendChild(sliderTooltipMin); - this.sliderElem.appendChild(sliderTooltipMax); - - if (this.tickLabelContainer) { - this.sliderElem.appendChild(this.tickLabelContainer); - } - - /* Append slider element to parent container, right before the original element */ - parent.insertBefore(this.sliderElem, this.element); - - /* Hide original element */ - this.element.style.display = "none"; - } - /* If JQuery exists, cache JQ references */ - if($) { - this.$element = $(this.element); - this.$sliderElem = $(this.sliderElem); - } - - /************************************************* - - Setup - - **************************************************/ - this.eventToCallbackMap = {}; - this.sliderElem.id = this.options.id; - - this.touchCapable = 'ontouchstart' in window || (window.DocumentTouch && document instanceof window.DocumentTouch); - - this.tooltip = this.sliderElem.querySelector('.tooltip-main'); - this.tooltipInner = this.tooltip.querySelector('.tooltip-inner'); - - this.tooltip_min = this.sliderElem.querySelector('.tooltip-min'); - this.tooltipInner_min = this.tooltip_min.querySelector('.tooltip-inner'); - - this.tooltip_max = this.sliderElem.querySelector('.tooltip-max'); - this.tooltipInner_max= this.tooltip_max.querySelector('.tooltip-inner'); - - if (SliderScale[this.options.scale]) { - this.options.scale = SliderScale[this.options.scale]; - } - - if (updateSlider === true) { - // Reset classes - this._removeClass(this.sliderElem, 'slider-horizontal'); - this._removeClass(this.sliderElem, 'slider-vertical'); - this._removeClass(this.tooltip, 'hide'); - this._removeClass(this.tooltip_min, 'hide'); - this._removeClass(this.tooltip_max, 'hide'); - - // Undo existing inline styles for track - ["left", "top", "width", "height"].forEach(function(prop) { - this._removeProperty(this.trackLow, prop); - this._removeProperty(this.trackSelection, prop); - this._removeProperty(this.trackHigh, prop); - }, this); - - // Undo inline styles on handles - [this.handle1, this.handle2].forEach(function(handle) { - this._removeProperty(handle, 'left'); - this._removeProperty(handle, 'top'); - }, this); - - // Undo inline styles and classes on tooltips - [this.tooltip, this.tooltip_min, this.tooltip_max].forEach(function(tooltip) { - this._removeProperty(tooltip, 'left'); - this._removeProperty(tooltip, 'top'); - this._removeProperty(tooltip, 'margin-left'); - this._removeProperty(tooltip, 'margin-top'); - - this._removeClass(tooltip, 'right'); - this._removeClass(tooltip, 'top'); - }, this); - } - - if(this.options.orientation === 'vertical') { - this._addClass(this.sliderElem,'slider-vertical'); - this.stylePos = 'top'; - this.mousePos = 'pageY'; - this.sizePos = 'offsetHeight'; - } else { - this._addClass(this.sliderElem, 'slider-horizontal'); - this.sliderElem.style.width = origWidth; - this.options.orientation = 'horizontal'; - this.stylePos = 'left'; - this.mousePos = 'pageX'; - this.sizePos = 'offsetWidth'; - - } - this._setTooltipPosition(); - /* In case ticks are specified, overwrite the min and max bounds */ - if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { - this.options.max = Math.max.apply(Math, this.options.ticks); - this.options.min = Math.min.apply(Math, this.options.ticks); - } - - if (Array.isArray(this.options.value)) { - this.options.range = true; - this._state.value = this.options.value; - } - else if (this.options.range) { - // User wants a range, but value is not an array - this._state.value = [this.options.value, this.options.max]; - } - else { - this._state.value = this.options.value; - } - - this.trackLow = sliderTrackLow || this.trackLow; - this.trackSelection = sliderTrackSelection || this.trackSelection; - this.trackHigh = sliderTrackHigh || this.trackHigh; - - if (this.options.selection === 'none') { - this._addClass(this.trackLow, 'hide'); - this._addClass(this.trackSelection, 'hide'); - this._addClass(this.trackHigh, 'hide'); - } - - this.handle1 = sliderMinHandle || this.handle1; - this.handle2 = sliderMaxHandle || this.handle2; - - if (updateSlider === true) { - // Reset classes - this._removeClass(this.handle1, 'round triangle'); - this._removeClass(this.handle2, 'round triangle hide'); - - for (i = 0; i < this.ticks.length; i++) { - this._removeClass(this.ticks[i], 'round triangle hide'); - } - } - - var availableHandleModifiers = ['round', 'triangle', 'custom']; - var isValidHandleType = availableHandleModifiers.indexOf(this.options.handle) !== -1; - if (isValidHandleType) { - this._addClass(this.handle1, this.options.handle); - this._addClass(this.handle2, this.options.handle); - - for (i = 0; i < this.ticks.length; i++) { - this._addClass(this.ticks[i], this.options.handle); - } - } - - this._state.offset = this._offset(this.sliderElem); - this._state.size = this.sliderElem[this.sizePos]; - this.setValue(this._state.value); - - /****************************************** - - Bind Event Listeners - - ******************************************/ - - // Bind keyboard handlers - this.handle1Keydown = this._keydown.bind(this, 0); - this.handle1.addEventListener("keydown", this.handle1Keydown, false); - - this.handle2Keydown = this._keydown.bind(this, 1); - this.handle2.addEventListener("keydown", this.handle2Keydown, false); - - this.mousedown = this._mousedown.bind(this); - if (this.touchCapable) { - // Bind touch handlers - this.sliderElem.addEventListener("touchstart", this.mousedown, false); - } - this.sliderElem.addEventListener("mousedown", this.mousedown, false); - - - // Bind tooltip-related handlers - if(this.options.tooltip === 'hide') { - this._addClass(this.tooltip, 'hide'); - this._addClass(this.tooltip_min, 'hide'); - this._addClass(this.tooltip_max, 'hide'); - } - else if(this.options.tooltip === 'always') { - this._showTooltip(); - this._alwaysShowTooltip = true; - } - else { - this.showTooltip = this._showTooltip.bind(this); - this.hideTooltip = this._hideTooltip.bind(this); - - this.sliderElem.addEventListener("mouseenter", this.showTooltip, false); - this.sliderElem.addEventListener("mouseleave", this.hideTooltip, false); - - this.handle1.addEventListener("focus", this.showTooltip, false); - this.handle1.addEventListener("blur", this.hideTooltip, false); - - this.handle2.addEventListener("focus", this.showTooltip, false); - this.handle2.addEventListener("blur", this.hideTooltip, false); - } - - if(this.options.enabled) { - this.enable(); - } else { - this.disable(); - } - } - - - - /************************************************* - - INSTANCE PROPERTIES/METHODS - - - Any methods bound to the prototype are considered - part of the plugin's `public` interface - - **************************************************/ - Slider.prototype = { - _init: function() {}, // NOTE: Must exist to support bridget - - constructor: Slider, - - defaultOptions: { - id: "", - min: 0, - max: 10, - step: 1, - precision: 0, - orientation: 'horizontal', - value: 5, - range: false, - selection: 'before', - tooltip: 'show', - tooltip_split: false, - handle: 'round', - reversed: false, - enabled: true, - formatter: function(val) { - if (Array.isArray(val)) { - return val[0] + " : " + val[1]; - } else { - return val; - } - }, - natural_arrow_keys: false, - ticks: [], - ticks_positions: [], - ticks_labels: [], - ticks_snap_bounds: 0, - scale: 'linear', - focus: false, - tooltip_position: null, - labelledby: null - }, - - getElement: function() { - return this.sliderElem; - }, - - getValue: function() { - if (this.options.range) { - return this._state.value; - } - else { - return this._state.value[0]; - } - }, - - setValue: function(val, triggerSlideEvent, triggerChangeEvent) { - if (!val) { - val = 0; - } - var oldValue = this.getValue(); - this._state.value = this._validateInputValue(val); - var applyPrecision = this._applyPrecision.bind(this); - - if (this.options.range) { - this._state.value[0] = applyPrecision(this._state.value[0]); - this._state.value[1] = applyPrecision(this._state.value[1]); - - this._state.value[0] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[0])); - this._state.value[1] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[1])); - } - else { - this._state.value = applyPrecision(this._state.value); - this._state.value = [ Math.max(this.options.min, Math.min(this.options.max, this._state.value))]; - this._addClass(this.handle2, 'hide'); - if (this.options.selection === 'after') { - this._state.value[1] = this.options.max; - } else { - this._state.value[1] = this.options.min; - } - } - - if (this.options.max > this.options.min) { - this._state.percentage = [ - this._toPercentage(this._state.value[0]), - this._toPercentage(this._state.value[1]), - this.options.step * 100 / (this.options.max - this.options.min) - ]; - } else { - this._state.percentage = [0, 0, 100]; - } - - this._layout(); - var newValue = this.options.range ? this._state.value : this._state.value[0]; - - if(triggerSlideEvent === true) { - this._trigger('slide', newValue); - } - if( (oldValue !== newValue) && (triggerChangeEvent === true) ) { - this._trigger('change', { - oldValue: oldValue, - newValue: newValue - }); - } - this._setDataVal(newValue); - - return this; - }, - - destroy: function(){ - // Remove event handlers on slider elements - this._removeSliderEventHandlers(); - - // Remove the slider from the DOM - this.sliderElem.parentNode.removeChild(this.sliderElem); - /* Show original element */ - this.element.style.display = ""; - - // Clear out custom event bindings - this._cleanUpEventCallbacksMap(); - - // Remove data values - this.element.removeAttribute("data"); - - // Remove JQuery handlers/data - if($) { - this._unbindJQueryEventHandlers(); - this.$element.removeData('slider'); - } - }, - - disable: function() { - this._state.enabled = false; - this.handle1.removeAttribute("tabindex"); - this.handle2.removeAttribute("tabindex"); - this._addClass(this.sliderElem, 'slider-disabled'); - this._trigger('slideDisabled'); - - return this; - }, - - enable: function() { - this._state.enabled = true; - this.handle1.setAttribute("tabindex", 0); - this.handle2.setAttribute("tabindex", 0); - this._removeClass(this.sliderElem, 'slider-disabled'); - this._trigger('slideEnabled'); - - return this; - }, - - toggle: function() { - if(this._state.enabled) { - this.disable(); - } else { - this.enable(); - } - return this; - }, - - isEnabled: function() { - return this._state.enabled; - }, - - on: function(evt, callback) { - this._bindNonQueryEventHandler(evt, callback); - return this; - }, - - off: function(evt, callback) { - if($) { - this.$element.off(evt, callback); - this.$sliderElem.off(evt, callback); - } else { - this._unbindNonQueryEventHandler(evt, callback); - } - }, - - getAttribute: function(attribute) { - if(attribute) { - return this.options[attribute]; - } else { - return this.options; - } - }, - - setAttribute: function(attribute, value) { - this.options[attribute] = value; - return this; - }, - - refresh: function() { - this._removeSliderEventHandlers(); - createNewSlider.call(this, this.element, this.options); - if($) { - // Bind new instance of slider to the element - $.data(this.element, 'slider', this); - } - return this; - }, - - relayout: function() { - this._layout(); - return this; - }, - - /******************************+ - - HELPERS - - - Any method that is not part of the public interface. - - Place it underneath this comment block and write its signature like so: - - _fnName : function() {...} - - ********************************/ - _removeSliderEventHandlers: function() { - // Remove keydown event listeners - this.handle1.removeEventListener("keydown", this.handle1Keydown, false); - this.handle2.removeEventListener("keydown", this.handle2Keydown, false); - - if (this.showTooltip) { - this.handle1.removeEventListener("focus", this.showTooltip, false); - this.handle2.removeEventListener("focus", this.showTooltip, false); - } - if (this.hideTooltip) { - this.handle1.removeEventListener("blur", this.hideTooltip, false); - this.handle2.removeEventListener("blur", this.hideTooltip, false); - } - - // Remove event listeners from sliderElem - if (this.showTooltip) { - this.sliderElem.removeEventListener("mouseenter", this.showTooltip, false); - } - if (this.hideTooltip) { - this.sliderElem.removeEventListener("mouseleave", this.hideTooltip, false); - } - this.sliderElem.removeEventListener("touchstart", this.mousedown, false); - this.sliderElem.removeEventListener("mousedown", this.mousedown, false); - }, - _bindNonQueryEventHandler: function(evt, callback) { - if(this.eventToCallbackMap[evt] === undefined) { - this.eventToCallbackMap[evt] = []; - } - this.eventToCallbackMap[evt].push(callback); - }, - _unbindNonQueryEventHandler: function(evt, callback) { - var callbacks = this.eventToCallbackMap[evt]; - if(callbacks !== undefined) { - for (var i = 0; i < callbacks.length; i++) { - if (callbacks[i] === callback) { - callbacks.splice(i, 1); - break; - } - } - } - }, - _cleanUpEventCallbacksMap: function() { - var eventNames = Object.keys(this.eventToCallbackMap); - for(var i = 0; i < eventNames.length; i++) { - var eventName = eventNames[i]; - this.eventToCallbackMap[eventName] = null; - } - }, - _showTooltip: function() { - if (this.options.tooltip_split === false ){ - this._addClass(this.tooltip, 'in'); - this.tooltip_min.style.display = 'none'; - this.tooltip_max.style.display = 'none'; - } else { - this._addClass(this.tooltip_min, 'in'); - this._addClass(this.tooltip_max, 'in'); - this.tooltip.style.display = 'none'; - } - this._state.over = true; - }, - _hideTooltip: function() { - if (this._state.inDrag === false && this.alwaysShowTooltip !== true) { - this._removeClass(this.tooltip, 'in'); - this._removeClass(this.tooltip_min, 'in'); - this._removeClass(this.tooltip_max, 'in'); - } - this._state.over = false; - }, - _layout: function() { - var positionPercentages; - - if(this.options.reversed) { - positionPercentages = [ 100 - this._state.percentage[0], this.options.range ? 100 - this._state.percentage[1] : this._state.percentage[1]]; - } - else { - positionPercentages = [ this._state.percentage[0], this._state.percentage[1] ]; - } - - this.handle1.style[this.stylePos] = positionPercentages[0]+'%'; - this.handle1.setAttribute('aria-valuenow', this._state.value[0]); - - this.handle2.style[this.stylePos] = positionPercentages[1]+'%'; - this.handle2.setAttribute('aria-valuenow', this._state.value[1]); - - /* Position ticks and labels */ - if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { - - var styleSize = this.options.orientation === 'vertical' ? 'height' : 'width'; - var styleMargin = this.options.orientation === 'vertical' ? 'marginTop' : 'marginLeft'; - var labelSize = this._state.size / (this.options.ticks.length - 1); - - if (this.tickLabelContainer) { - var extraMargin = 0; - if (this.options.ticks_positions.length === 0) { - if (this.options.orientation !== 'vertical') { - this.tickLabelContainer.style[styleMargin] = -labelSize/2 + 'px'; - } - - extraMargin = this.tickLabelContainer.offsetHeight; - } else { - /* Chidren are position absolute, calculate height by finding the max offsetHeight of a child */ - for (i = 0 ; i < this.tickLabelContainer.childNodes.length; i++) { - if (this.tickLabelContainer.childNodes[i].offsetHeight > extraMargin) { - extraMargin = this.tickLabelContainer.childNodes[i].offsetHeight; - } - } - } - if (this.options.orientation === 'horizontal') { - this.sliderElem.style.marginBottom = extraMargin + 'px'; - } - } - for (var i = 0; i < this.options.ticks.length; i++) { - - var percentage = this.options.ticks_positions[i] || this._toPercentage(this.options.ticks[i]); - - if (this.options.reversed) { - percentage = 100 - percentage; - } - - this.ticks[i].style[this.stylePos] = percentage + '%'; - - /* Set class labels to denote whether ticks are in the selection */ - this._removeClass(this.ticks[i], 'in-selection'); - if (!this.options.range) { - if (this.options.selection === 'after' && percentage >= positionPercentages[0]){ - this._addClass(this.ticks[i], 'in-selection'); - } else if (this.options.selection === 'before' && percentage <= positionPercentages[0]) { - this._addClass(this.ticks[i], 'in-selection'); - } - } else if (percentage >= positionPercentages[0] && percentage <= positionPercentages[1]) { - this._addClass(this.ticks[i], 'in-selection'); - } - - if (this.tickLabels[i]) { - this.tickLabels[i].style[styleSize] = labelSize + 'px'; - - if (this.options.orientation !== 'vertical' && this.options.ticks_positions[i] !== undefined) { - this.tickLabels[i].style.position = 'absolute'; - this.tickLabels[i].style[this.stylePos] = percentage + '%'; - this.tickLabels[i].style[styleMargin] = -labelSize/2 + 'px'; - } else if (this.options.orientation === 'vertical') { - this.tickLabels[i].style['marginLeft'] = this.sliderElem.offsetWidth + 'px'; - this.tickLabelContainer.style['marginTop'] = this.sliderElem.offsetWidth / 2 * -1 + 'px'; - } - } - } - } - - var formattedTooltipVal; - - if (this.options.range) { - formattedTooltipVal = this.options.formatter(this._state.value); - this._setText(this.tooltipInner, formattedTooltipVal); - this.tooltip.style[this.stylePos] = (positionPercentages[1] + positionPercentages[0])/2 + '%'; - - if (this.options.orientation === 'vertical') { - this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); - } - - if (this.options.orientation === 'vertical') { - this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); - } - - var innerTooltipMinText = this.options.formatter(this._state.value[0]); - this._setText(this.tooltipInner_min, innerTooltipMinText); - - var innerTooltipMaxText = this.options.formatter(this._state.value[1]); - this._setText(this.tooltipInner_max, innerTooltipMaxText); - - this.tooltip_min.style[this.stylePos] = positionPercentages[0] + '%'; - - if (this.options.orientation === 'vertical') { - this._css(this.tooltip_min, 'margin-top', -this.tooltip_min.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip_min, 'margin-left', -this.tooltip_min.offsetWidth / 2 + 'px'); - } - - this.tooltip_max.style[this.stylePos] = positionPercentages[1] + '%'; - - if (this.options.orientation === 'vertical') { - this._css(this.tooltip_max, 'margin-top', -this.tooltip_max.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip_max, 'margin-left', -this.tooltip_max.offsetWidth / 2 + 'px'); - } - } else { - formattedTooltipVal = this.options.formatter(this._state.value[0]); - this._setText(this.tooltipInner, formattedTooltipVal); - - this.tooltip.style[this.stylePos] = positionPercentages[0] + '%'; - if (this.options.orientation === 'vertical') { - this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); - } else { - this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); - } - } - - if (this.options.orientation === 'vertical') { - this.trackLow.style.top = '0'; - this.trackLow.style.height = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; - - this.trackSelection.style.top = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; - this.trackSelection.style.height = Math.abs(positionPercentages[0] - positionPercentages[1]) +'%'; - - this.trackHigh.style.bottom = '0'; - this.trackHigh.style.height = (100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1])) +'%'; - } - else { - this.trackLow.style.left = '0'; - this.trackLow.style.width = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; - - this.trackSelection.style.left = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; - this.trackSelection.style.width = Math.abs(positionPercentages[0] - positionPercentages[1]) +'%'; - - this.trackHigh.style.right = '0'; - this.trackHigh.style.width = (100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1])) +'%'; - - var offset_min = this.tooltip_min.getBoundingClientRect(); - var offset_max = this.tooltip_max.getBoundingClientRect(); - - if (offset_min.right > offset_max.left) { - this._removeClass(this.tooltip_max, 'top'); - this._addClass(this.tooltip_max, 'bottom'); - this.tooltip_max.style.top = 18 + 'px'; - } else { - this._removeClass(this.tooltip_max, 'bottom'); - this._addClass(this.tooltip_max, 'top'); - this.tooltip_max.style.top = this.tooltip_min.style.top; - } - } - }, - _removeProperty: function(element, prop) { - if (element.style.removeProperty) { - element.style.removeProperty(prop); - } else { - element.style.removeAttribute(prop); - } - }, - _mousedown: function(ev) { - if(!this._state.enabled) { - return false; - } - - this._state.offset = this._offset(this.sliderElem); - this._state.size = this.sliderElem[this.sizePos]; - - var percentage = this._getPercentage(ev); - - if (this.options.range) { - var diff1 = Math.abs(this._state.percentage[0] - percentage); - var diff2 = Math.abs(this._state.percentage[1] - percentage); - this._state.dragged = (diff1 < diff2) ? 0 : 1; - } else { - this._state.dragged = 0; - } - - this._state.percentage[this._state.dragged] = percentage; - this._layout(); - - if (this.touchCapable) { - document.removeEventListener("touchmove", this.mousemove, false); - document.removeEventListener("touchend", this.mouseup, false); - } - - if(this.mousemove){ - document.removeEventListener("mousemove", this.mousemove, false); - } - if(this.mouseup){ - document.removeEventListener("mouseup", this.mouseup, false); - } - - this.mousemove = this._mousemove.bind(this); - this.mouseup = this._mouseup.bind(this); - - if (this.touchCapable) { - // Touch: Bind touch events: - document.addEventListener("touchmove", this.mousemove, false); - document.addEventListener("touchend", this.mouseup, false); - } - // Bind mouse events: - document.addEventListener("mousemove", this.mousemove, false); - document.addEventListener("mouseup", this.mouseup, false); - - this._state.inDrag = true; - var newValue = this._calculateValue(); - - this._trigger('slideStart', newValue); - - this._setDataVal(newValue); - this.setValue(newValue, false, true); - - this._pauseEvent(ev); - - if (this.options.focus) { - this._triggerFocusOnHandle(this._state.dragged); - } - - return true; - }, - _triggerFocusOnHandle: function(handleIdx) { - if(handleIdx === 0) { - this.handle1.focus(); - } - if(handleIdx === 1) { - this.handle2.focus(); - } - }, - _keydown: function(handleIdx, ev) { - if(!this._state.enabled) { - return false; - } - - var dir; - switch (ev.keyCode) { - case 37: // left - case 40: // down - dir = -1; - break; - case 39: // right - case 38: // up - dir = 1; - break; - } - if (!dir) { - return; - } - - // use natural arrow keys instead of from min to max - if (this.options.natural_arrow_keys) { - var ifVerticalAndNotReversed = (this.options.orientation === 'vertical' && !this.options.reversed); - var ifHorizontalAndReversed = (this.options.orientation === 'horizontal' && this.options.reversed); - - if (ifVerticalAndNotReversed || ifHorizontalAndReversed) { - dir = -dir; - } - } - - var val = this._state.value[handleIdx] + dir * this.options.step; - if (this.options.range) { - val = [ (!handleIdx) ? val : this._state.value[0], - ( handleIdx) ? val : this._state.value[1]]; - } - - this._trigger('slideStart', val); - this._setDataVal(val); - this.setValue(val, true, true); - - this._setDataVal(val); - this._trigger('slideStop', val); - this._layout(); - - this._pauseEvent(ev); - - return false; - }, - _pauseEvent: function(ev) { - if(ev.stopPropagation) { - ev.stopPropagation(); - } - if(ev.preventDefault) { - ev.preventDefault(); - } - ev.cancelBubble=true; - ev.returnValue=false; - }, - _mousemove: function(ev) { - if(!this._state.enabled) { - return false; - } - - var percentage = this._getPercentage(ev); - this._adjustPercentageForRangeSliders(percentage); - this._state.percentage[this._state.dragged] = percentage; - this._layout(); - - var val = this._calculateValue(true); - this.setValue(val, true, true); - - return false; - }, - _adjustPercentageForRangeSliders: function(percentage) { - if (this.options.range) { - var precision = this._getNumDigitsAfterDecimalPlace(percentage); - precision = precision ? precision - 1 : 0; - var percentageWithAdjustedPrecision = this._applyToFixedAndParseFloat(percentage, precision); - if (this._state.dragged === 0 && this._applyToFixedAndParseFloat(this._state.percentage[1], precision) < percentageWithAdjustedPrecision) { - this._state.percentage[0] = this._state.percentage[1]; - this._state.dragged = 1; - } else if (this._state.dragged === 1 && this._applyToFixedAndParseFloat(this._state.percentage[0], precision) > percentageWithAdjustedPrecision) { - this._state.percentage[1] = this._state.percentage[0]; - this._state.dragged = 0; - } - } - }, - _mouseup: function() { - if(!this._state.enabled) { - return false; - } - if (this.touchCapable) { - // Touch: Unbind touch event handlers: - document.removeEventListener("touchmove", this.mousemove, false); - document.removeEventListener("touchend", this.mouseup, false); - } - // Unbind mouse event handlers: - document.removeEventListener("mousemove", this.mousemove, false); - document.removeEventListener("mouseup", this.mouseup, false); - - this._state.inDrag = false; - if (this._state.over === false) { - this._hideTooltip(); - } - var val = this._calculateValue(true); - - this._layout(); - this._setDataVal(val); - this._trigger('slideStop', val); - - return false; - }, - _calculateValue: function(snapToClosestTick) { - var val; - if (this.options.range) { - val = [this.options.min,this.options.max]; - if (this._state.percentage[0] !== 0){ - val[0] = this._toValue(this._state.percentage[0]); - val[0] = this._applyPrecision(val[0]); - } - if (this._state.percentage[1] !== 100){ - val[1] = this._toValue(this._state.percentage[1]); - val[1] = this._applyPrecision(val[1]); - } - } else { - val = this._toValue(this._state.percentage[0]); - val = parseFloat(val); - val = this._applyPrecision(val); - } - - if (snapToClosestTick) { - var min = [val, Infinity]; - for (var i = 0; i < this.options.ticks.length; i++) { - var diff = Math.abs(this.options.ticks[i] - val); - if (diff <= min[1]) { - min = [this.options.ticks[i], diff]; - } - } - if (min[1] <= this.options.ticks_snap_bounds) { - return min[0]; - } - } - - return val; - }, - _applyPrecision: function(val) { - var precision = this.options.precision || this._getNumDigitsAfterDecimalPlace(this.options.step); - return this._applyToFixedAndParseFloat(val, precision); - }, - _getNumDigitsAfterDecimalPlace: function(num) { - var match = (''+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); - if (!match) { return 0; } - return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0)); - }, - _applyToFixedAndParseFloat: function(num, toFixedInput) { - var truncatedNum = num.toFixed(toFixedInput); - return parseFloat(truncatedNum); - }, - /* - Credits to Mike Samuel for the following method! - Source: http://stackoverflow.com/questions/10454518/javascript-how-to-retrieve-the-number-of-decimals-of-a-string-number - */ - _getPercentage: function(ev) { - if (this.touchCapable && (ev.type === 'touchstart' || ev.type === 'touchmove')) { - ev = ev.touches[0]; - } - - var eventPosition = ev[this.mousePos]; - var sliderOffset = this._state.offset[this.stylePos]; - var distanceToSlide = eventPosition - sliderOffset; - // Calculate what percent of the length the slider handle has slid - var percentage = (distanceToSlide / this._state.size) * 100; - percentage = Math.round(percentage / this._state.percentage[2]) * this._state.percentage[2]; - if (this.options.reversed) { - percentage = 100 - percentage; - } - - // Make sure the percent is within the bounds of the slider. - // 0% corresponds to the 'min' value of the slide - // 100% corresponds to the 'max' value of the slide - return Math.max(0, Math.min(100, percentage)); - }, - _validateInputValue: function(val) { - if (typeof val === 'number') { - return val; - } else if (Array.isArray(val)) { - this._validateArray(val); - return val; - } else { - throw new Error( ErrorMsgs.formatInvalidInputErrorMsg(val) ); - } - }, - _validateArray: function(val) { - for(var i = 0; i < val.length; i++) { - var input = val[i]; - if (typeof input !== 'number') { throw new Error( ErrorMsgs.formatInvalidInputErrorMsg(input) ); } - } - }, - _setDataVal: function(val) { - this.element.setAttribute('data-value', val); - this.element.setAttribute('value', val); - this.element.value = val; - }, - _trigger: function(evt, val) { - val = (val || val === 0) ? val : undefined; - - var callbackFnArray = this.eventToCallbackMap[evt]; - if(callbackFnArray && callbackFnArray.length) { - for(var i = 0; i < callbackFnArray.length; i++) { - var callbackFn = callbackFnArray[i]; - callbackFn(val); - } - } - - /* If JQuery exists, trigger JQuery events */ - if($) { - this._triggerJQueryEvent(evt, val); - } - }, - _triggerJQueryEvent: function(evt, val) { - var eventData = { - type: evt, - value: val - }; - this.$element.trigger(eventData); - this.$sliderElem.trigger(eventData); - }, - _unbindJQueryEventHandlers: function() { - this.$element.off(); - this.$sliderElem.off(); - }, - _setText: function(element, text) { - if(typeof element.innerText !== "undefined") { - element.innerText = text; - } else if(typeof element.textContent !== "undefined") { - element.textContent = text; - } - }, - _removeClass: function(element, classString) { - var classes = classString.split(" "); - var newClasses = element.className; - - for(var i = 0; i < classes.length; i++) { - var classTag = classes[i]; - var regex = new RegExp("(?:\\s|^)" + classTag + "(?:\\s|$)"); - newClasses = newClasses.replace(regex, " "); - } - - element.className = newClasses.trim(); - }, - _addClass: function(element, classString) { - var classes = classString.split(" "); - var newClasses = element.className; - - for(var i = 0; i < classes.length; i++) { - var classTag = classes[i]; - var regex = new RegExp("(?:\\s|^)" + classTag + "(?:\\s|$)"); - var ifClassExists = regex.test(newClasses); - - if(!ifClassExists) { - newClasses += " " + classTag; - } - } - - element.className = newClasses.trim(); - }, - _offsetLeft: function(obj){ - return obj.getBoundingClientRect().left; - }, - _offsetTop: function(obj){ - var offsetTop = obj.offsetTop; - while((obj = obj.offsetParent) && !isNaN(obj.offsetTop)){ - offsetTop += obj.offsetTop; - } - return offsetTop; - }, - _offset: function (obj) { - return { - left: this._offsetLeft(obj), - top: this._offsetTop(obj) - }; - }, - _css: function(elementRef, styleName, value) { - if ($) { - $.style(elementRef, styleName, value); - } else { - var style = styleName.replace(/^-ms-/, "ms-").replace(/-([\da-z])/gi, function (all, letter) { - return letter.toUpperCase(); - }); - elementRef.style[style] = value; - } - }, - _toValue: function(percentage) { - return this.options.scale.toValue.apply(this, [percentage]); - }, - _toPercentage: function(value) { - return this.options.scale.toPercentage.apply(this, [value]); - }, - _setTooltipPosition: function(){ - var tooltips = [this.tooltip, this.tooltip_min, this.tooltip_max]; - if (this.options.orientation === 'vertical'){ - var tooltipPos = this.options.tooltip_position || 'right'; - var oppositeSide = (tooltipPos === 'left') ? 'right' : 'left'; - tooltips.forEach(function(tooltip){ - this._addClass(tooltip, tooltipPos); - tooltip.style[oppositeSide] = '100%'; - }.bind(this)); - } else if(this.options.tooltip_position === 'bottom') { - tooltips.forEach(function(tooltip){ - this._addClass(tooltip, 'bottom'); - tooltip.style.top = 22 + 'px'; - }.bind(this)); - } else { - tooltips.forEach(function(tooltip){ - this._addClass(tooltip, 'top'); - tooltip.style.top = -this.tooltip.outerHeight - 14 + 'px'; - }.bind(this)); - } - } - }; - - /********************************* - - Attach to global namespace - - *********************************/ - if($) { - var namespace = $.fn.slider ? 'bootstrapSlider' : 'slider'; - $.bridget(namespace, Slider); - } - - })( $ ); - - return Slider; -})); diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/plugins/bootstrap-slider/slider.css b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/plugins/bootstrap-slider/slider.css deleted file mode 100644 index 3a6492888145..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/plugins/bootstrap-slider/slider.css +++ /dev/null @@ -1,282 +0,0 @@ -/*! - * Slider for Bootstrap - * - * Copyright 2012 Stefan Petre - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ -.slider { - display: block; - vertical-align: middle; - position: relative; - -} -.slider.slider-horizontal { - width: 100%; - height: 20px; - margin-bottom: 20px; -} -.slider.slider-horizontal:last-of-type { - margin-bottom: 0; -} -.slider.slider-horizontal .slider-track { - height: 10px; - width: 100%; - margin-top: -5px; - top: 50%; - left: 0; -} -.slider.slider-horizontal .slider-selection, -.slider.slider-horizontal .slider-track-low, -.slider.slider-horizontal .slider-track-high { - height: 100%; - top: 0; - bottom: 0; -} -.slider.slider-horizontal .slider-tick, -.slider.slider-horizontal .slider-handle { - margin-left: -10px; - margin-top: -5px; -} -.slider.slider-horizontal .slider-tick.triangle, -.slider.slider-horizontal .slider-handle.triangle { - border-width: 0 10px 10px 10px; - width: 0; - height: 0; - border-bottom-color: #0480be; - margin-top: 0; -} -.slider.slider-horizontal .slider-tick-label-container { - white-space: nowrap; - margin-top: 20px; -} -.slider.slider-horizontal .slider-tick-label-container .slider-tick-label { - padding-top: 4px; - display: inline-block; - text-align: center; -} -.slider.slider-vertical { - height: 230px; - width: 20px; - margin-right: 20px; - display: inline-block; -} -.slider.slider-vertical:last-of-type { - margin-right: 0; -} -.slider.slider-vertical .slider-track { - width: 10px; - height: 100%; - margin-left: -5px; - left: 50%; - top: 0; -} -.slider.slider-vertical .slider-selection { - width: 100%; - left: 0; - top: 0; - bottom: 0; -} -.slider.slider-vertical .slider-track-low, -.slider.slider-vertical .slider-track-high { - width: 100%; - left: 0; - right: 0; -} -.slider.slider-vertical .slider-tick, -.slider.slider-vertical .slider-handle { - margin-left: -5px; - margin-top: -10px; -} -.slider.slider-vertical .slider-tick.triangle, -.slider.slider-vertical .slider-handle.triangle { - border-width: 10px 0 10px 10px; - width: 1px; - height: 1px; - border-left-color: #0480be; - margin-left: 0; -} -.slider.slider-vertical .slider-tick-label-container { - white-space: nowrap; -} -.slider.slider-vertical .slider-tick-label-container .slider-tick-label { - padding-left: 4px; -} -.slider.slider-disabled .slider-handle { - background-image: -webkit-linear-gradient(top, #dfdfdf 0%, #bebebe 100%); - background-image: -o-linear-gradient(top, #dfdfdf 0%, #bebebe 100%); - background-image: linear-gradient(to bottom, #dfdfdf 0%, #bebebe 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdfdfdf', endColorstr='#ffbebebe', GradientType=0); -} -.slider.slider-disabled .slider-track { - background-image: -webkit-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%); - background-image: -o-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%); - background-image: linear-gradient(to bottom, #e5e5e5 0%, #e9e9e9 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe5e5e5', endColorstr='#ffe9e9e9', GradientType=0); - cursor: not-allowed; -} -.slider input { - display: none; -} -.slider .tooltip.top { - margin-top: -36px; -} -.slider .tooltip-inner { - white-space: nowrap; -} -.slider .hide { - display: none; -} -.slider-track { - position: absolute; - cursor: pointer; - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #f0f0f0, #f9f9f9); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f0f0f0), to(#f9f9f9)); - background-image: -webkit-linear-gradient(top, #f0f0f0, #f9f9f9); - background-image: -o-linear-gradient(top, #f0f0f0, #f9f9f9); - background-image: linear-gradient(to bottom, #f0f0f0, #f9f9f9); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0f0f0', endColorstr='#fff9f9f9', GradientType=0); - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.slider-selection { - position: absolute; - background-color: #f7f7f7; - background-image: -moz-linear-gradient(top, #f9f9f9, #f5f5f5); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f9f9f9), to(#f5f5f5)); - background-image: -webkit-linear-gradient(top, #f9f9f9, #f5f5f5); - background-image: -o-linear-gradient(top, #f9f9f9, #f5f5f5); - background-image: linear-gradient(to bottom, #f9f9f9, #f5f5f5); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.slider-selection.tick-slider-selection { - background-image: -webkit-linear-gradient(top, #89cdef 0%, #81bfde 100%); - background-image: -o-linear-gradient(top, #89cdef 0%, #81bfde 100%); - background-image: linear-gradient(to bottom, #89cdef 0%, #81bfde 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff89cdef', endColorstr='#ff81bfde', GradientType=0); -} -.slider-track-low, -.slider-track-high { - position: absolute; - background: transparent; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - border-radius: 4px; -} -.slider-handle { - position: absolute; - width: 20px; - height: 20px; - background-color: #444; - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); - opacity: 1; - border: 0px solid transparent; -} -.slider-handle.round { - -webkit-border-radius: 20px; - -moz-border-radius: 20px; - border-radius: 20px; -} -.slider-handle.triangle { - background: transparent none; -} -.slider-handle.custom { - background: transparent none; -} -.slider-handle.custom::before { - line-height: 20px; - font-size: 20px; - content: '\2605'; - color: #726204; -} -.slider-tick { - position: absolute; - width: 20px; - height: 20px; - background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%); - background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - filter: none; - opacity: 0.8; - border: 0px solid transparent; -} -.slider-tick.round { - border-radius: 50%; -} -.slider-tick.triangle { - background: transparent none; -} -.slider-tick.custom { - background: transparent none; -} -.slider-tick.custom::before { - line-height: 20px; - font-size: 20px; - content: '\2605'; - color: #726204; -} -.slider-tick.in-selection { - background-image: -webkit-linear-gradient(top, #89cdef 0%, #81bfde 100%); - background-image: -o-linear-gradient(top, #89cdef 0%, #81bfde 100%); - background-image: linear-gradient(to bottom, #89cdef 0%, #81bfde 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff89cdef', endColorstr='#ff81bfde', GradientType=0); - opacity: 1; -} -.slider-disabled .slider-selection { - opacity: 0.5; -} - -#red .slider-selection { - background: #f56954; -} - -#blue .slider-selection { - background: #3c8dbc; -} - -#green .slider-selection { - background: #00a65a; -} - -#yellow .slider-selection { - background: #f39c12; -} - -#aqua .slider-selection { - background: #00c0ef; -} - -#purple .slider-selection { - background: #932ab6; -} \ No newline at end of file diff --git a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.js b/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.js deleted file mode 100644 index acccf91e01a8..000000000000 --- a/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.js +++ /dev/null @@ -1,14975 +0,0 @@ -// TODO: in future try to replace most inline compability checks with polyfills for code readability - -// element.textContent polyfill. -// Unsupporting browsers: IE8 - -if (Object.defineProperty && Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(Element.prototype, "textContent") && !Object.getOwnPropertyDescriptor(Element.prototype, "textContent").get) { - (function() { - var innerText = Object.getOwnPropertyDescriptor(Element.prototype, "innerText"); - Object.defineProperty(Element.prototype, "textContent", - { - get: function() { - return innerText.get.call(this); - }, - set: function(s) { - return innerText.set.call(this, s); - } - } - ); - })(); -} - -// isArray polyfill for ie8 -if(!Array.isArray) { - Array.isArray = function(arg) { - return Object.prototype.toString.call(arg) === '[object Array]'; - }; -};/** - * @license wysihtml5x v0.4.15 - * https://github.com/Edicy/wysihtml5 - * - * Author: Christopher Blum (https://github.com/tiff) - * Secondary author of extended features: Oliver Pulges (https://github.com/pulges) - * - * Copyright (C) 2012 XING AG - * Licensed under the MIT license (MIT) - * - */ -var wysihtml5 = { - version: "0.4.15", - - // namespaces - commands: {}, - dom: {}, - quirks: {}, - toolbar: {}, - lang: {}, - selection: {}, - views: {}, - - INVISIBLE_SPACE: "\uFEFF", - - EMPTY_FUNCTION: function() {}, - - ELEMENT_NODE: 1, - TEXT_NODE: 3, - - BACKSPACE_KEY: 8, - ENTER_KEY: 13, - ESCAPE_KEY: 27, - SPACE_KEY: 32, - DELETE_KEY: 46 -}; -;/** - * Rangy, a cross-browser JavaScript range and selection library - * http://code.google.com/p/rangy/ - * - * Copyright 2014, Tim Down - * Licensed under the MIT license. - * Version: 1.3alpha.20140804 - * Build date: 4 August 2014 - */ - -(function(factory, global) { - if (typeof define == "function" && define.amd) { - // AMD. Register as an anonymous module. - define(factory); -/* - TODO: look into this properly. - - } else if (typeof exports == "object") { - // Node/CommonJS style for Browserify - module.exports = factory; -*/ - } else { - // No AMD or CommonJS support so we place Rangy in a global variable - global.rangy = factory(); - } -})(function() { - - var OBJECT = "object", FUNCTION = "function", UNDEFINED = "undefined"; - - // Minimal set of properties required for DOM Level 2 Range compliance. Comparison constants such as START_TO_START - // are omitted because ranges in KHTML do not have them but otherwise work perfectly well. See issue 113. - var domRangeProperties = ["startContainer", "startOffset", "endContainer", "endOffset", "collapsed", - "commonAncestorContainer"]; - - // Minimal set of methods required for DOM Level 2 Range compliance - var domRangeMethods = ["setStart", "setStartBefore", "setStartAfter", "setEnd", "setEndBefore", - "setEndAfter", "collapse", "selectNode", "selectNodeContents", "compareBoundaryPoints", "deleteContents", - "extractContents", "cloneContents", "insertNode", "surroundContents", "cloneRange", "toString", "detach"]; - - var textRangeProperties = ["boundingHeight", "boundingLeft", "boundingTop", "boundingWidth", "htmlText", "text"]; - - // Subset of TextRange's full set of methods that we're interested in - var textRangeMethods = ["collapse", "compareEndPoints", "duplicate", "moveToElementText", "parentElement", "select", - "setEndPoint", "getBoundingClientRect"]; - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Trio of functions taken from Peter Michaux's article: - // http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting - function isHostMethod(o, p) { - var t = typeof o[p]; - return t == FUNCTION || (!!(t == OBJECT && o[p])) || t == "unknown"; - } - - function isHostObject(o, p) { - return !!(typeof o[p] == OBJECT && o[p]); - } - - function isHostProperty(o, p) { - return typeof o[p] != UNDEFINED; - } - - // Creates a convenience function to save verbose repeated calls to tests functions - function createMultiplePropertyTest(testFunc) { - return function(o, props) { - var i = props.length; - while (i--) { - if (!testFunc(o, props[i])) { - return false; - } - } - return true; - }; - } - - // Next trio of functions are a convenience to save verbose repeated calls to previous two functions - var areHostMethods = createMultiplePropertyTest(isHostMethod); - var areHostObjects = createMultiplePropertyTest(isHostObject); - var areHostProperties = createMultiplePropertyTest(isHostProperty); - - function isTextRange(range) { - return range && areHostMethods(range, textRangeMethods) && areHostProperties(range, textRangeProperties); - } - - function getBody(doc) { - return isHostObject(doc, "body") ? doc.body : doc.getElementsByTagName("body")[0]; - } - - var modules = {}; - - var api = { - version: "1.3alpha.20140804", - initialized: false, - supported: true, - - util: { - isHostMethod: isHostMethod, - isHostObject: isHostObject, - isHostProperty: isHostProperty, - areHostMethods: areHostMethods, - areHostObjects: areHostObjects, - areHostProperties: areHostProperties, - isTextRange: isTextRange, - getBody: getBody - }, - - features: {}, - - modules: modules, - config: { - alertOnFail: true, - alertOnWarn: false, - preferTextRange: false, - autoInitialize: (typeof rangyAutoInitialize == UNDEFINED) ? true : rangyAutoInitialize - } - }; - - function consoleLog(msg) { - if (isHostObject(window, "console") && isHostMethod(window.console, "log")) { - window.console.log(msg); - } - } - - function alertOrLog(msg, shouldAlert) { - if (shouldAlert) { - window.alert(msg); - } else { - consoleLog(msg); - } - } - - function fail(reason) { - api.initialized = true; - api.supported = false; - alertOrLog("Rangy is not supported on this page in your browser. Reason: " + reason, api.config.alertOnFail); - } - - api.fail = fail; - - function warn(msg) { - alertOrLog("Rangy warning: " + msg, api.config.alertOnWarn); - } - - api.warn = warn; - - // Add utility extend() method - if ({}.hasOwnProperty) { - api.util.extend = function(obj, props, deep) { - var o, p; - for (var i in props) { - if (props.hasOwnProperty(i)) { - o = obj[i]; - p = props[i]; - if (deep && o !== null && typeof o == "object" && p !== null && typeof p == "object") { - api.util.extend(o, p, true); - } - obj[i] = p; - } - } - // Special case for toString, which does not show up in for...in loops in IE <= 8 - if (props.hasOwnProperty("toString")) { - obj.toString = props.toString; - } - return obj; - }; - } else { - fail("hasOwnProperty not supported"); - } - - // Test whether Array.prototype.slice can be relied on for NodeLists and use an alternative toArray() if not - (function() { - var el = document.createElement("div"); - el.appendChild(document.createElement("span")); - var slice = [].slice; - var toArray; - try { - if (slice.call(el.childNodes, 0)[0].nodeType == 1) { - toArray = function(arrayLike) { - return slice.call(arrayLike, 0); - }; - } - } catch (e) {} - - if (!toArray) { - toArray = function(arrayLike) { - var arr = []; - for (var i = 0, len = arrayLike.length; i < len; ++i) { - arr[i] = arrayLike[i]; - } - return arr; - }; - } - - api.util.toArray = toArray; - })(); - - - // Very simple event handler wrapper function that doesn't attempt to solve issues such as "this" handling or - // normalization of event properties - var addListener; - if (isHostMethod(document, "addEventListener")) { - addListener = function(obj, eventType, listener) { - obj.addEventListener(eventType, listener, false); - }; - } else if (isHostMethod(document, "attachEvent")) { - addListener = function(obj, eventType, listener) { - obj.attachEvent("on" + eventType, listener); - }; - } else { - fail("Document does not have required addEventListener or attachEvent method"); - } - - api.util.addListener = addListener; - - var initListeners = []; - - function getErrorDesc(ex) { - return ex.message || ex.description || String(ex); - } - - // Initialization - function init() { - if (api.initialized) { - return; - } - var testRange; - var implementsDomRange = false, implementsTextRange = false; - - // First, perform basic feature tests - - if (isHostMethod(document, "createRange")) { - testRange = document.createRange(); - if (areHostMethods(testRange, domRangeMethods) && areHostProperties(testRange, domRangeProperties)) { - implementsDomRange = true; - } - } - - var body = getBody(document); - if (!body || body.nodeName.toLowerCase() != "body") { - fail("No body element found"); - return; - } - - if (body && isHostMethod(body, "createTextRange")) { - testRange = body.createTextRange(); - if (isTextRange(testRange)) { - implementsTextRange = true; - } - } - - if (!implementsDomRange && !implementsTextRange) { - fail("Neither Range nor TextRange are available"); - return; - } - - api.initialized = true; - api.features = { - implementsDomRange: implementsDomRange, - implementsTextRange: implementsTextRange - }; - - // Initialize modules - var module, errorMessage; - for (var moduleName in modules) { - if ( (module = modules[moduleName]) instanceof Module ) { - module.init(module, api); - } - } - - // Call init listeners - for (var i = 0, len = initListeners.length; i < len; ++i) { - try { - initListeners[i](api); - } catch (ex) { - errorMessage = "Rangy init listener threw an exception. Continuing. Detail: " + getErrorDesc(ex); - consoleLog(errorMessage); - } - } - } - - // Allow external scripts to initialize this library in case it's loaded after the document has loaded - api.init = init; - - // Execute listener immediately if already initialized - api.addInitListener = function(listener) { - if (api.initialized) { - listener(api); - } else { - initListeners.push(listener); - } - }; - - var shimListeners = []; - - api.addShimListener = function(listener) { - shimListeners.push(listener); - }; - - function shim(win) { - win = win || window; - init(); - - // Notify listeners - for (var i = 0, len = shimListeners.length; i < len; ++i) { - shimListeners[i](win); - } - } - - api.shim = api.createMissingNativeApi = shim; - - function Module(name, dependencies, initializer) { - this.name = name; - this.dependencies = dependencies; - this.initialized = false; - this.supported = false; - this.initializer = initializer; - } - - Module.prototype = { - init: function() { - var requiredModuleNames = this.dependencies || []; - for (var i = 0, len = requiredModuleNames.length, requiredModule, moduleName; i < len; ++i) { - moduleName = requiredModuleNames[i]; - - requiredModule = modules[moduleName]; - if (!requiredModule || !(requiredModule instanceof Module)) { - throw new Error("required module '" + moduleName + "' not found"); - } - - requiredModule.init(); - - if (!requiredModule.supported) { - throw new Error("required module '" + moduleName + "' not supported"); - } - } - - // Now run initializer - this.initializer(this); - }, - - fail: function(reason) { - this.initialized = true; - this.supported = false; - throw new Error("Module '" + this.name + "' failed to load: " + reason); - }, - - warn: function(msg) { - api.warn("Module " + this.name + ": " + msg); - }, - - deprecationNotice: function(deprecated, replacement) { - api.warn("DEPRECATED: " + deprecated + " in module " + this.name + "is deprecated. Please use " + - replacement + " instead"); - }, - - createError: function(msg) { - return new Error("Error in Rangy " + this.name + " module: " + msg); - } - }; - - function createModule(isCore, name, dependencies, initFunc) { - var newModule = new Module(name, dependencies, function(module) { - if (!module.initialized) { - module.initialized = true; - try { - initFunc(api, module); - module.supported = true; - } catch (ex) { - var errorMessage = "Module '" + name + "' failed to load: " + getErrorDesc(ex); - consoleLog(errorMessage); - } - } - }); - modules[name] = newModule; - } - - api.createModule = function(name) { - // Allow 2 or 3 arguments (second argument is an optional array of dependencies) - var initFunc, dependencies; - if (arguments.length == 2) { - initFunc = arguments[1]; - dependencies = []; - } else { - initFunc = arguments[2]; - dependencies = arguments[1]; - } - - var module = createModule(false, name, dependencies, initFunc); - - // Initialize the module immediately if the core is already initialized - if (api.initialized) { - module.init(); - } - }; - - api.createCoreModule = function(name, dependencies, initFunc) { - createModule(true, name, dependencies, initFunc); - }; - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Ensure rangy.rangePrototype and rangy.selectionPrototype are available immediately - - function RangePrototype() {} - api.RangePrototype = RangePrototype; - api.rangePrototype = new RangePrototype(); - - function SelectionPrototype() {} - api.selectionPrototype = new SelectionPrototype(); - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Wait for document to load before running tests - - var docReady = false; - - var loadHandler = function(e) { - if (!docReady) { - docReady = true; - if (!api.initialized && api.config.autoInitialize) { - init(); - } - } - }; - - // Test whether we have window and document objects that we will need - if (typeof window == UNDEFINED) { - fail("No window found"); - return; - } - if (typeof document == UNDEFINED) { - fail("No document found"); - return; - } - - if (isHostMethod(document, "addEventListener")) { - document.addEventListener("DOMContentLoaded", loadHandler, false); - } - - // Add a fallback in case the DOMContentLoaded event isn't supported - addListener(window, "load", loadHandler); - - /*----------------------------------------------------------------------------------------------------------------*/ - - // DOM utility methods used by Rangy - api.createCoreModule("DomUtil", [], function(api, module) { - var UNDEF = "undefined"; - var util = api.util; - - // Perform feature tests - if (!util.areHostMethods(document, ["createDocumentFragment", "createElement", "createTextNode"])) { - module.fail("document missing a Node creation method"); - } - - if (!util.isHostMethod(document, "getElementsByTagName")) { - module.fail("document missing getElementsByTagName method"); - } - - var el = document.createElement("div"); - if (!util.areHostMethods(el, ["insertBefore", "appendChild", "cloneNode"] || - !util.areHostObjects(el, ["previousSibling", "nextSibling", "childNodes", "parentNode"]))) { - module.fail("Incomplete Element implementation"); - } - - // innerHTML is required for Range's createContextualFragment method - if (!util.isHostProperty(el, "innerHTML")) { - module.fail("Element is missing innerHTML property"); - } - - var textNode = document.createTextNode("test"); - if (!util.areHostMethods(textNode, ["splitText", "deleteData", "insertData", "appendData", "cloneNode"] || - !util.areHostObjects(el, ["previousSibling", "nextSibling", "childNodes", "parentNode"]) || - !util.areHostProperties(textNode, ["data"]))) { - module.fail("Incomplete Text Node implementation"); - } - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Removed use of indexOf because of a bizarre bug in Opera that is thrown in one of the Acid3 tests. I haven't been - // able to replicate it outside of the test. The bug is that indexOf returns -1 when called on an Array that - // contains just the document as a single element and the value searched for is the document. - var arrayContains = /*Array.prototype.indexOf ? - function(arr, val) { - return arr.indexOf(val) > -1; - }:*/ - - function(arr, val) { - var i = arr.length; - while (i--) { - if (arr[i] === val) { - return true; - } - } - return false; - }; - - // Opera 11 puts HTML elements in the null namespace, it seems, and IE 7 has undefined namespaceURI - function isHtmlNamespace(node) { - var ns; - return typeof node.namespaceURI == UNDEF || ((ns = node.namespaceURI) === null || ns == "http://www.w3.org/1999/xhtml"); - } - - function parentElement(node) { - var parent = node.parentNode; - return (parent.nodeType == 1) ? parent : null; - } - - function getNodeIndex(node) { - var i = 0; - while( (node = node.previousSibling) ) { - ++i; - } - return i; - } - - function getNodeLength(node) { - switch (node.nodeType) { - case 7: - case 10: - return 0; - case 3: - case 8: - return node.length; - default: - return node.childNodes.length; - } - } - - function getCommonAncestor(node1, node2) { - var ancestors = [], n; - for (n = node1; n; n = n.parentNode) { - ancestors.push(n); - } - - for (n = node2; n; n = n.parentNode) { - if (arrayContains(ancestors, n)) { - return n; - } - } - - return null; - } - - function isAncestorOf(ancestor, descendant, selfIsAncestor) { - var n = selfIsAncestor ? descendant : descendant.parentNode; - while (n) { - if (n === ancestor) { - return true; - } else { - n = n.parentNode; - } - } - return false; - } - - function isOrIsAncestorOf(ancestor, descendant) { - return isAncestorOf(ancestor, descendant, true); - } - - function getClosestAncestorIn(node, ancestor, selfIsAncestor) { - var p, n = selfIsAncestor ? node : node.parentNode; - while (n) { - p = n.parentNode; - if (p === ancestor) { - return n; - } - n = p; - } - return null; - } - - function isCharacterDataNode(node) { - var t = node.nodeType; - return t == 3 || t == 4 || t == 8 ; // Text, CDataSection or Comment - } - - function isTextOrCommentNode(node) { - if (!node) { - return false; - } - var t = node.nodeType; - return t == 3 || t == 8 ; // Text or Comment - } - - function insertAfter(node, precedingNode) { - var nextNode = precedingNode.nextSibling, parent = precedingNode.parentNode; - if (nextNode) { - parent.insertBefore(node, nextNode); - } else { - parent.appendChild(node); - } - return node; - } - - // Note that we cannot use splitText() because it is bugridden in IE 9. - function splitDataNode(node, index, positionsToPreserve) { - var newNode = node.cloneNode(false); - newNode.deleteData(0, index); - node.deleteData(index, node.length - index); - insertAfter(newNode, node); - - // Preserve positions - if (positionsToPreserve) { - for (var i = 0, position; position = positionsToPreserve[i++]; ) { - // Handle case where position was inside the portion of node after the split point - if (position.node == node && position.offset > index) { - position.node = newNode; - position.offset -= index; - } - // Handle the case where the position is a node offset within node's parent - else if (position.node == node.parentNode && position.offset > getNodeIndex(node)) { - ++position.offset; - } - } - } - return newNode; - } - - function getDocument(node) { - if (node.nodeType == 9) { - return node; - } else if (typeof node.ownerDocument != UNDEF) { - return node.ownerDocument; - } else if (typeof node.document != UNDEF) { - return node.document; - } else if (node.parentNode) { - return getDocument(node.parentNode); - } else { - throw module.createError("getDocument: no document found for node"); - } - } - - function getWindow(node) { - var doc = getDocument(node); - if (typeof doc.defaultView != UNDEF) { - return doc.defaultView; - } else if (typeof doc.parentWindow != UNDEF) { - return doc.parentWindow; - } else { - throw module.createError("Cannot get a window object for node"); - } - } - - function getIframeDocument(iframeEl) { - if (typeof iframeEl.contentDocument != UNDEF) { - return iframeEl.contentDocument; - } else if (typeof iframeEl.contentWindow != UNDEF) { - return iframeEl.contentWindow.document; - } else { - throw module.createError("getIframeDocument: No Document object found for iframe element"); - } - } - - function getIframeWindow(iframeEl) { - if (typeof iframeEl.contentWindow != UNDEF) { - return iframeEl.contentWindow; - } else if (typeof iframeEl.contentDocument != UNDEF) { - return iframeEl.contentDocument.defaultView; - } else { - throw module.createError("getIframeWindow: No Window object found for iframe element"); - } - } - - // This looks bad. Is it worth it? - function isWindow(obj) { - return obj && util.isHostMethod(obj, "setTimeout") && util.isHostObject(obj, "document"); - } - - function getContentDocument(obj, module, methodName) { - var doc; - - if (!obj) { - doc = document; - } - - // Test if a DOM node has been passed and obtain a document object for it if so - else if (util.isHostProperty(obj, "nodeType")) { - doc = (obj.nodeType == 1 && obj.tagName.toLowerCase() == "iframe") ? - getIframeDocument(obj) : getDocument(obj); - } - - // Test if the doc parameter appears to be a Window object - else if (isWindow(obj)) { - doc = obj.document; - } - - if (!doc) { - throw module.createError(methodName + "(): Parameter must be a Window object or DOM node"); - } - - return doc; - } - - function getRootContainer(node) { - var parent; - while ( (parent = node.parentNode) ) { - node = parent; - } - return node; - } - - function comparePoints(nodeA, offsetA, nodeB, offsetB) { - // See http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Comparing - var nodeC, root, childA, childB, n; - if (nodeA == nodeB) { - // Case 1: nodes are the same - return offsetA === offsetB ? 0 : (offsetA < offsetB) ? -1 : 1; - } else if ( (nodeC = getClosestAncestorIn(nodeB, nodeA, true)) ) { - // Case 2: node C (container B or an ancestor) is a child node of A - return offsetA <= getNodeIndex(nodeC) ? -1 : 1; - } else if ( (nodeC = getClosestAncestorIn(nodeA, nodeB, true)) ) { - // Case 3: node C (container A or an ancestor) is a child node of B - return getNodeIndex(nodeC) < offsetB ? -1 : 1; - } else { - root = getCommonAncestor(nodeA, nodeB); - if (!root) { - throw new Error("comparePoints error: nodes have no common ancestor"); - } - - // Case 4: containers are siblings or descendants of siblings - childA = (nodeA === root) ? root : getClosestAncestorIn(nodeA, root, true); - childB = (nodeB === root) ? root : getClosestAncestorIn(nodeB, root, true); - - if (childA === childB) { - // This shouldn't be possible - throw module.createError("comparePoints got to case 4 and childA and childB are the same!"); - } else { - n = root.firstChild; - while (n) { - if (n === childA) { - return -1; - } else if (n === childB) { - return 1; - } - n = n.nextSibling; - } - } - } - } - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Test for IE's crash (IE 6/7) or exception (IE >= 8) when a reference to garbage-collected text node is queried - var crashyTextNodes = false; - - function isBrokenNode(node) { - var n; - try { - n = node.parentNode; - return false; - } catch (e) { - return true; - } - } - - (function() { - var el = document.createElement("b"); - el.innerHTML = "1"; - var textNode = el.firstChild; - el.innerHTML = "
      "; - crashyTextNodes = isBrokenNode(textNode); - - api.features.crashyTextNodes = crashyTextNodes; - })(); - - /*----------------------------------------------------------------------------------------------------------------*/ - - function inspectNode(node) { - if (!node) { - return "[No node]"; - } - if (crashyTextNodes && isBrokenNode(node)) { - return "[Broken node]"; - } - if (isCharacterDataNode(node)) { - return '"' + node.data + '"'; - } - if (node.nodeType == 1) { - var idAttr = node.id ? ' id="' + node.id + '"' : ""; - return "<" + node.nodeName + idAttr + ">[index:" + getNodeIndex(node) + ",length:" + node.childNodes.length + "][" + (node.innerHTML || "[innerHTML not supported]").slice(0, 25) + "]"; - } - return node.nodeName; - } - - function fragmentFromNodeChildren(node) { - var fragment = getDocument(node).createDocumentFragment(), child; - while ( (child = node.firstChild) ) { - fragment.appendChild(child); - } - return fragment; - } - - var getComputedStyleProperty; - if (typeof window.getComputedStyle != UNDEF) { - getComputedStyleProperty = function(el, propName) { - return getWindow(el).getComputedStyle(el, null)[propName]; - }; - } else if (typeof document.documentElement.currentStyle != UNDEF) { - getComputedStyleProperty = function(el, propName) { - return el.currentStyle[propName]; - }; - } else { - module.fail("No means of obtaining computed style properties found"); - } - - function NodeIterator(root) { - this.root = root; - this._next = root; - } - - NodeIterator.prototype = { - _current: null, - - hasNext: function() { - return !!this._next; - }, - - next: function() { - var n = this._current = this._next; - var child, next; - if (this._current) { - child = n.firstChild; - if (child) { - this._next = child; - } else { - next = null; - while ((n !== this.root) && !(next = n.nextSibling)) { - n = n.parentNode; - } - this._next = next; - } - } - return this._current; - }, - - detach: function() { - this._current = this._next = this.root = null; - } - }; - - function createIterator(root) { - return new NodeIterator(root); - } - - function DomPosition(node, offset) { - this.node = node; - this.offset = offset; - } - - DomPosition.prototype = { - equals: function(pos) { - return !!pos && this.node === pos.node && this.offset == pos.offset; - }, - - inspect: function() { - return "[DomPosition(" + inspectNode(this.node) + ":" + this.offset + ")]"; - }, - - toString: function() { - return this.inspect(); - } - }; - - function DOMException(codeName) { - this.code = this[codeName]; - this.codeName = codeName; - this.message = "DOMException: " + this.codeName; - } - - DOMException.prototype = { - INDEX_SIZE_ERR: 1, - HIERARCHY_REQUEST_ERR: 3, - WRONG_DOCUMENT_ERR: 4, - NO_MODIFICATION_ALLOWED_ERR: 7, - NOT_FOUND_ERR: 8, - NOT_SUPPORTED_ERR: 9, - INVALID_STATE_ERR: 11, - INVALID_NODE_TYPE_ERR: 24 - }; - - DOMException.prototype.toString = function() { - return this.message; - }; - - api.dom = { - arrayContains: arrayContains, - isHtmlNamespace: isHtmlNamespace, - parentElement: parentElement, - getNodeIndex: getNodeIndex, - getNodeLength: getNodeLength, - getCommonAncestor: getCommonAncestor, - isAncestorOf: isAncestorOf, - isOrIsAncestorOf: isOrIsAncestorOf, - getClosestAncestorIn: getClosestAncestorIn, - isCharacterDataNode: isCharacterDataNode, - isTextOrCommentNode: isTextOrCommentNode, - insertAfter: insertAfter, - splitDataNode: splitDataNode, - getDocument: getDocument, - getWindow: getWindow, - getIframeWindow: getIframeWindow, - getIframeDocument: getIframeDocument, - getBody: util.getBody, - isWindow: isWindow, - getContentDocument: getContentDocument, - getRootContainer: getRootContainer, - comparePoints: comparePoints, - isBrokenNode: isBrokenNode, - inspectNode: inspectNode, - getComputedStyleProperty: getComputedStyleProperty, - fragmentFromNodeChildren: fragmentFromNodeChildren, - createIterator: createIterator, - DomPosition: DomPosition - }; - - api.DOMException = DOMException; - }); - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Pure JavaScript implementation of DOM Range - api.createCoreModule("DomRange", ["DomUtil"], function(api, module) { - var dom = api.dom; - var util = api.util; - var DomPosition = dom.DomPosition; - var DOMException = api.DOMException; - - var isCharacterDataNode = dom.isCharacterDataNode; - var getNodeIndex = dom.getNodeIndex; - var isOrIsAncestorOf = dom.isOrIsAncestorOf; - var getDocument = dom.getDocument; - var comparePoints = dom.comparePoints; - var splitDataNode = dom.splitDataNode; - var getClosestAncestorIn = dom.getClosestAncestorIn; - var getNodeLength = dom.getNodeLength; - var arrayContains = dom.arrayContains; - var getRootContainer = dom.getRootContainer; - var crashyTextNodes = api.features.crashyTextNodes; - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Utility functions - - function isNonTextPartiallySelected(node, range) { - return (node.nodeType != 3) && - (isOrIsAncestorOf(node, range.startContainer) || isOrIsAncestorOf(node, range.endContainer)); - } - - function getRangeDocument(range) { - return range.document || getDocument(range.startContainer); - } - - function getBoundaryBeforeNode(node) { - return new DomPosition(node.parentNode, getNodeIndex(node)); - } - - function getBoundaryAfterNode(node) { - return new DomPosition(node.parentNode, getNodeIndex(node) + 1); - } - - function insertNodeAtPosition(node, n, o) { - var firstNodeInserted = node.nodeType == 11 ? node.firstChild : node; - if (isCharacterDataNode(n)) { - if (o == n.length) { - dom.insertAfter(node, n); - } else { - n.parentNode.insertBefore(node, o == 0 ? n : splitDataNode(n, o)); - } - } else if (o >= n.childNodes.length) { - n.appendChild(node); - } else { - n.insertBefore(node, n.childNodes[o]); - } - return firstNodeInserted; - } - - function rangesIntersect(rangeA, rangeB, touchingIsIntersecting) { - assertRangeValid(rangeA); - assertRangeValid(rangeB); - - if (getRangeDocument(rangeB) != getRangeDocument(rangeA)) { - throw new DOMException("WRONG_DOCUMENT_ERR"); - } - - var startComparison = comparePoints(rangeA.startContainer, rangeA.startOffset, rangeB.endContainer, rangeB.endOffset), - endComparison = comparePoints(rangeA.endContainer, rangeA.endOffset, rangeB.startContainer, rangeB.startOffset); - - return touchingIsIntersecting ? startComparison <= 0 && endComparison >= 0 : startComparison < 0 && endComparison > 0; - } - - function cloneSubtree(iterator) { - var partiallySelected; - for (var node, frag = getRangeDocument(iterator.range).createDocumentFragment(), subIterator; node = iterator.next(); ) { - partiallySelected = iterator.isPartiallySelectedSubtree(); - node = node.cloneNode(!partiallySelected); - if (partiallySelected) { - subIterator = iterator.getSubtreeIterator(); - node.appendChild(cloneSubtree(subIterator)); - subIterator.detach(); - } - - if (node.nodeType == 10) { // DocumentType - throw new DOMException("HIERARCHY_REQUEST_ERR"); - } - frag.appendChild(node); - } - return frag; - } - - function iterateSubtree(rangeIterator, func, iteratorState) { - var it, n; - iteratorState = iteratorState || { stop: false }; - for (var node, subRangeIterator; node = rangeIterator.next(); ) { - if (rangeIterator.isPartiallySelectedSubtree()) { - if (func(node) === false) { - iteratorState.stop = true; - return; - } else { - // The node is partially selected by the Range, so we can use a new RangeIterator on the portion of - // the node selected by the Range. - subRangeIterator = rangeIterator.getSubtreeIterator(); - iterateSubtree(subRangeIterator, func, iteratorState); - subRangeIterator.detach(); - if (iteratorState.stop) { - return; - } - } - } else { - // The whole node is selected, so we can use efficient DOM iteration to iterate over the node and its - // descendants - it = dom.createIterator(node); - while ( (n = it.next()) ) { - if (func(n) === false) { - iteratorState.stop = true; - return; - } - } - } - } - } - - function deleteSubtree(iterator) { - var subIterator; - while (iterator.next()) { - if (iterator.isPartiallySelectedSubtree()) { - subIterator = iterator.getSubtreeIterator(); - deleteSubtree(subIterator); - subIterator.detach(); - } else { - iterator.remove(); - } - } - } - - function extractSubtree(iterator) { - for (var node, frag = getRangeDocument(iterator.range).createDocumentFragment(), subIterator; node = iterator.next(); ) { - - if (iterator.isPartiallySelectedSubtree()) { - node = node.cloneNode(false); - subIterator = iterator.getSubtreeIterator(); - node.appendChild(extractSubtree(subIterator)); - subIterator.detach(); - } else { - iterator.remove(); - } - if (node.nodeType == 10) { // DocumentType - throw new DOMException("HIERARCHY_REQUEST_ERR"); - } - frag.appendChild(node); - } - return frag; - } - - function getNodesInRange(range, nodeTypes, filter) { - var filterNodeTypes = !!(nodeTypes && nodeTypes.length), regex; - var filterExists = !!filter; - if (filterNodeTypes) { - regex = new RegExp("^(" + nodeTypes.join("|") + ")$"); - } - - var nodes = []; - iterateSubtree(new RangeIterator(range, false), function(node) { - if (filterNodeTypes && !regex.test(node.nodeType)) { - return; - } - if (filterExists && !filter(node)) { - return; - } - // Don't include a boundary container if it is a character data node and the range does not contain any - // of its character data. See issue 190. - var sc = range.startContainer; - if (node == sc && isCharacterDataNode(sc) && range.startOffset == sc.length) { - return; - } - - var ec = range.endContainer; - if (node == ec && isCharacterDataNode(ec) && range.endOffset == 0) { - return; - } - - nodes.push(node); - }); - return nodes; - } - - function inspect(range) { - var name = (typeof range.getName == "undefined") ? "Range" : range.getName(); - return "[" + name + "(" + dom.inspectNode(range.startContainer) + ":" + range.startOffset + ", " + - dom.inspectNode(range.endContainer) + ":" + range.endOffset + ")]"; - } - - /*----------------------------------------------------------------------------------------------------------------*/ - - // RangeIterator code partially borrows from IERange by Tim Ryan (http://github.com/timcameronryan/IERange) - - function RangeIterator(range, clonePartiallySelectedTextNodes) { - this.range = range; - this.clonePartiallySelectedTextNodes = clonePartiallySelectedTextNodes; - - - if (!range.collapsed) { - this.sc = range.startContainer; - this.so = range.startOffset; - this.ec = range.endContainer; - this.eo = range.endOffset; - var root = range.commonAncestorContainer; - - if (this.sc === this.ec && isCharacterDataNode(this.sc)) { - this.isSingleCharacterDataNode = true; - this._first = this._last = this._next = this.sc; - } else { - this._first = this._next = (this.sc === root && !isCharacterDataNode(this.sc)) ? - this.sc.childNodes[this.so] : getClosestAncestorIn(this.sc, root, true); - this._last = (this.ec === root && !isCharacterDataNode(this.ec)) ? - this.ec.childNodes[this.eo - 1] : getClosestAncestorIn(this.ec, root, true); - } - } - } - - RangeIterator.prototype = { - _current: null, - _next: null, - _first: null, - _last: null, - isSingleCharacterDataNode: false, - - reset: function() { - this._current = null; - this._next = this._first; - }, - - hasNext: function() { - return !!this._next; - }, - - next: function() { - // Move to next node - var current = this._current = this._next; - if (current) { - this._next = (current !== this._last) ? current.nextSibling : null; - - // Check for partially selected text nodes - if (isCharacterDataNode(current) && this.clonePartiallySelectedTextNodes) { - if (current === this.ec) { - (current = current.cloneNode(true)).deleteData(this.eo, current.length - this.eo); - } - if (this._current === this.sc) { - (current = current.cloneNode(true)).deleteData(0, this.so); - } - } - } - - return current; - }, - - remove: function() { - var current = this._current, start, end; - - if (isCharacterDataNode(current) && (current === this.sc || current === this.ec)) { - start = (current === this.sc) ? this.so : 0; - end = (current === this.ec) ? this.eo : current.length; - if (start != end) { - current.deleteData(start, end - start); - } - } else { - if (current.parentNode) { - current.parentNode.removeChild(current); - } else { - } - } - }, - - // Checks if the current node is partially selected - isPartiallySelectedSubtree: function() { - var current = this._current; - return isNonTextPartiallySelected(current, this.range); - }, - - getSubtreeIterator: function() { - var subRange; - if (this.isSingleCharacterDataNode) { - subRange = this.range.cloneRange(); - subRange.collapse(false); - } else { - subRange = new Range(getRangeDocument(this.range)); - var current = this._current; - var startContainer = current, startOffset = 0, endContainer = current, endOffset = getNodeLength(current); - - if (isOrIsAncestorOf(current, this.sc)) { - startContainer = this.sc; - startOffset = this.so; - } - if (isOrIsAncestorOf(current, this.ec)) { - endContainer = this.ec; - endOffset = this.eo; - } - - updateBoundaries(subRange, startContainer, startOffset, endContainer, endOffset); - } - return new RangeIterator(subRange, this.clonePartiallySelectedTextNodes); - }, - - detach: function() { - this.range = this._current = this._next = this._first = this._last = this.sc = this.so = this.ec = this.eo = null; - } - }; - - /*----------------------------------------------------------------------------------------------------------------*/ - - var beforeAfterNodeTypes = [1, 3, 4, 5, 7, 8, 10]; - var rootContainerNodeTypes = [2, 9, 11]; - var readonlyNodeTypes = [5, 6, 10, 12]; - var insertableNodeTypes = [1, 3, 4, 5, 7, 8, 10, 11]; - var surroundNodeTypes = [1, 3, 4, 5, 7, 8]; - - function createAncestorFinder(nodeTypes) { - return function(node, selfIsAncestor) { - var t, n = selfIsAncestor ? node : node.parentNode; - while (n) { - t = n.nodeType; - if (arrayContains(nodeTypes, t)) { - return n; - } - n = n.parentNode; - } - return null; - }; - } - - var getDocumentOrFragmentContainer = createAncestorFinder( [9, 11] ); - var getReadonlyAncestor = createAncestorFinder(readonlyNodeTypes); - var getDocTypeNotationEntityAncestor = createAncestorFinder( [6, 10, 12] ); - - function assertNoDocTypeNotationEntityAncestor(node, allowSelf) { - if (getDocTypeNotationEntityAncestor(node, allowSelf)) { - throw new DOMException("INVALID_NODE_TYPE_ERR"); - } - } - - function assertValidNodeType(node, invalidTypes) { - if (!arrayContains(invalidTypes, node.nodeType)) { - throw new DOMException("INVALID_NODE_TYPE_ERR"); - } - } - - function assertValidOffset(node, offset) { - if (offset < 0 || offset > (isCharacterDataNode(node) ? node.length : node.childNodes.length)) { - throw new DOMException("INDEX_SIZE_ERR"); - } - } - - function assertSameDocumentOrFragment(node1, node2) { - if (getDocumentOrFragmentContainer(node1, true) !== getDocumentOrFragmentContainer(node2, true)) { - throw new DOMException("WRONG_DOCUMENT_ERR"); - } - } - - function assertNodeNotReadOnly(node) { - if (getReadonlyAncestor(node, true)) { - throw new DOMException("NO_MODIFICATION_ALLOWED_ERR"); - } - } - - function assertNode(node, codeName) { - if (!node) { - throw new DOMException(codeName); - } - } - - function isOrphan(node) { - return (crashyTextNodes && dom.isBrokenNode(node)) || - !arrayContains(rootContainerNodeTypes, node.nodeType) && !getDocumentOrFragmentContainer(node, true); - } - - function isValidOffset(node, offset) { - return offset <= (isCharacterDataNode(node) ? node.length : node.childNodes.length); - } - - function isRangeValid(range) { - return (!!range.startContainer && !!range.endContainer && - !isOrphan(range.startContainer) && - !isOrphan(range.endContainer) && - isValidOffset(range.startContainer, range.startOffset) && - isValidOffset(range.endContainer, range.endOffset)); - } - - function assertRangeValid(range) { - if (!isRangeValid(range)) { - throw new Error("Range error: Range is no longer valid after DOM mutation (" + range.inspect() + ")"); - } - } - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Test the browser's innerHTML support to decide how to implement createContextualFragment - var styleEl = document.createElement("style"); - var htmlParsingConforms = false; - try { - styleEl.innerHTML = "x"; - htmlParsingConforms = (styleEl.firstChild.nodeType == 3); // Opera incorrectly creates an element node - } catch (e) { - // IE 6 and 7 throw - } - - api.features.htmlParsingConforms = htmlParsingConforms; - - var createContextualFragment = htmlParsingConforms ? - - // Implementation as per HTML parsing spec, trusting in the browser's implementation of innerHTML. See - // discussion and base code for this implementation at issue 67. - // Spec: http://html5.org/specs/dom-parsing.html#extensions-to-the-range-interface - // Thanks to Aleks Williams. - function(fragmentStr) { - // "Let node the context object's start's node." - var node = this.startContainer; - var doc = getDocument(node); - - // "If the context object's start's node is null, raise an INVALID_STATE_ERR - // exception and abort these steps." - if (!node) { - throw new DOMException("INVALID_STATE_ERR"); - } - - // "Let element be as follows, depending on node's interface:" - // Document, Document Fragment: null - var el = null; - - // "Element: node" - if (node.nodeType == 1) { - el = node; - - // "Text, Comment: node's parentElement" - } else if (isCharacterDataNode(node)) { - el = dom.parentElement(node); - } - - // "If either element is null or element's ownerDocument is an HTML document - // and element's local name is "html" and element's namespace is the HTML - // namespace" - if (el === null || ( - el.nodeName == "HTML" && - dom.isHtmlNamespace(getDocument(el).documentElement) && - dom.isHtmlNamespace(el) - )) { - - // "let element be a new Element with "body" as its local name and the HTML - // namespace as its namespace."" - el = doc.createElement("body"); - } else { - el = el.cloneNode(false); - } - - // "If the node's document is an HTML document: Invoke the HTML fragment parsing algorithm." - // "If the node's document is an XML document: Invoke the XML fragment parsing algorithm." - // "In either case, the algorithm must be invoked with fragment as the input - // and element as the context element." - el.innerHTML = fragmentStr; - - // "If this raises an exception, then abort these steps. Otherwise, let new - // children be the nodes returned." - - // "Let fragment be a new DocumentFragment." - // "Append all new children to fragment." - // "Return fragment." - return dom.fragmentFromNodeChildren(el); - } : - - // In this case, innerHTML cannot be trusted, so fall back to a simpler, non-conformant implementation that - // previous versions of Rangy used (with the exception of using a body element rather than a div) - function(fragmentStr) { - var doc = getRangeDocument(this); - var el = doc.createElement("body"); - el.innerHTML = fragmentStr; - - return dom.fragmentFromNodeChildren(el); - }; - - function splitRangeBoundaries(range, positionsToPreserve) { - assertRangeValid(range); - - var sc = range.startContainer, so = range.startOffset, ec = range.endContainer, eo = range.endOffset; - var startEndSame = (sc === ec); - - if (isCharacterDataNode(ec) && eo > 0 && eo < ec.length) { - splitDataNode(ec, eo, positionsToPreserve); - } - - if (isCharacterDataNode(sc) && so > 0 && so < sc.length) { - sc = splitDataNode(sc, so, positionsToPreserve); - if (startEndSame) { - eo -= so; - ec = sc; - } else if (ec == sc.parentNode && eo >= getNodeIndex(sc)) { - eo++; - } - so = 0; - } - range.setStartAndEnd(sc, so, ec, eo); - } - - function rangeToHtml(range) { - assertRangeValid(range); - var container = range.commonAncestorContainer.parentNode.cloneNode(false); - container.appendChild( range.cloneContents() ); - return container.innerHTML; - } - - /*----------------------------------------------------------------------------------------------------------------*/ - - var rangeProperties = ["startContainer", "startOffset", "endContainer", "endOffset", "collapsed", - "commonAncestorContainer"]; - - var s2s = 0, s2e = 1, e2e = 2, e2s = 3; - var n_b = 0, n_a = 1, n_b_a = 2, n_i = 3; - - util.extend(api.rangePrototype, { - compareBoundaryPoints: function(how, range) { - assertRangeValid(this); - assertSameDocumentOrFragment(this.startContainer, range.startContainer); - - var nodeA, offsetA, nodeB, offsetB; - var prefixA = (how == e2s || how == s2s) ? "start" : "end"; - var prefixB = (how == s2e || how == s2s) ? "start" : "end"; - nodeA = this[prefixA + "Container"]; - offsetA = this[prefixA + "Offset"]; - nodeB = range[prefixB + "Container"]; - offsetB = range[prefixB + "Offset"]; - return comparePoints(nodeA, offsetA, nodeB, offsetB); - }, - - insertNode: function(node) { - assertRangeValid(this); - assertValidNodeType(node, insertableNodeTypes); - assertNodeNotReadOnly(this.startContainer); - - if (isOrIsAncestorOf(node, this.startContainer)) { - throw new DOMException("HIERARCHY_REQUEST_ERR"); - } - - // No check for whether the container of the start of the Range is of a type that does not allow - // children of the type of node: the browser's DOM implementation should do this for us when we attempt - // to add the node - - var firstNodeInserted = insertNodeAtPosition(node, this.startContainer, this.startOffset); - this.setStartBefore(firstNodeInserted); - }, - - cloneContents: function() { - assertRangeValid(this); - - var clone, frag; - if (this.collapsed) { - return getRangeDocument(this).createDocumentFragment(); - } else { - if (this.startContainer === this.endContainer && isCharacterDataNode(this.startContainer)) { - clone = this.startContainer.cloneNode(true); - clone.data = clone.data.slice(this.startOffset, this.endOffset); - frag = getRangeDocument(this).createDocumentFragment(); - frag.appendChild(clone); - return frag; - } else { - var iterator = new RangeIterator(this, true); - clone = cloneSubtree(iterator); - iterator.detach(); - } - return clone; - } - }, - - canSurroundContents: function() { - assertRangeValid(this); - assertNodeNotReadOnly(this.startContainer); - assertNodeNotReadOnly(this.endContainer); - - // Check if the contents can be surrounded. Specifically, this means whether the range partially selects - // no non-text nodes. - var iterator = new RangeIterator(this, true); - var boundariesInvalid = (iterator._first && (isNonTextPartiallySelected(iterator._first, this)) || - (iterator._last && isNonTextPartiallySelected(iterator._last, this))); - iterator.detach(); - return !boundariesInvalid; - }, - - surroundContents: function(node) { - assertValidNodeType(node, surroundNodeTypes); - - if (!this.canSurroundContents()) { - throw new DOMException("INVALID_STATE_ERR"); - } - - // Extract the contents - var content = this.extractContents(); - - // Clear the children of the node - if (node.hasChildNodes()) { - while (node.lastChild) { - node.removeChild(node.lastChild); - } - } - - // Insert the new node and add the extracted contents - insertNodeAtPosition(node, this.startContainer, this.startOffset); - node.appendChild(content); - - this.selectNode(node); - }, - - cloneRange: function() { - assertRangeValid(this); - var range = new Range(getRangeDocument(this)); - var i = rangeProperties.length, prop; - while (i--) { - prop = rangeProperties[i]; - range[prop] = this[prop]; - } - return range; - }, - - toString: function() { - assertRangeValid(this); - var sc = this.startContainer; - if (sc === this.endContainer && isCharacterDataNode(sc)) { - return (sc.nodeType == 3 || sc.nodeType == 4) ? sc.data.slice(this.startOffset, this.endOffset) : ""; - } else { - var textParts = [], iterator = new RangeIterator(this, true); - iterateSubtree(iterator, function(node) { - // Accept only text or CDATA nodes, not comments - if (node.nodeType == 3 || node.nodeType == 4) { - textParts.push(node.data); - } - }); - iterator.detach(); - return textParts.join(""); - } - }, - - // The methods below are all non-standard. The following batch were introduced by Mozilla but have since - // been removed from Mozilla. - - compareNode: function(node) { - assertRangeValid(this); - - var parent = node.parentNode; - var nodeIndex = getNodeIndex(node); - - if (!parent) { - throw new DOMException("NOT_FOUND_ERR"); - } - - var startComparison = this.comparePoint(parent, nodeIndex), - endComparison = this.comparePoint(parent, nodeIndex + 1); - - if (startComparison < 0) { // Node starts before - return (endComparison > 0) ? n_b_a : n_b; - } else { - return (endComparison > 0) ? n_a : n_i; - } - }, - - comparePoint: function(node, offset) { - assertRangeValid(this); - assertNode(node, "HIERARCHY_REQUEST_ERR"); - assertSameDocumentOrFragment(node, this.startContainer); - - if (comparePoints(node, offset, this.startContainer, this.startOffset) < 0) { - return -1; - } else if (comparePoints(node, offset, this.endContainer, this.endOffset) > 0) { - return 1; - } - return 0; - }, - - createContextualFragment: createContextualFragment, - - toHtml: function() { - return rangeToHtml(this); - }, - - // touchingIsIntersecting determines whether this method considers a node that borders a range intersects - // with it (as in WebKit) or not (as in Gecko pre-1.9, and the default) - intersectsNode: function(node, touchingIsIntersecting) { - assertRangeValid(this); - assertNode(node, "NOT_FOUND_ERR"); - if (getDocument(node) !== getRangeDocument(this)) { - return false; - } - - var parent = node.parentNode, offset = getNodeIndex(node); - assertNode(parent, "NOT_FOUND_ERR"); - - var startComparison = comparePoints(parent, offset, this.endContainer, this.endOffset), - endComparison = comparePoints(parent, offset + 1, this.startContainer, this.startOffset); - - return touchingIsIntersecting ? startComparison <= 0 && endComparison >= 0 : startComparison < 0 && endComparison > 0; - }, - - isPointInRange: function(node, offset) { - assertRangeValid(this); - assertNode(node, "HIERARCHY_REQUEST_ERR"); - assertSameDocumentOrFragment(node, this.startContainer); - - return (comparePoints(node, offset, this.startContainer, this.startOffset) >= 0) && - (comparePoints(node, offset, this.endContainer, this.endOffset) <= 0); - }, - - // The methods below are non-standard and invented by me. - - // Sharing a boundary start-to-end or end-to-start does not count as intersection. - intersectsRange: function(range) { - return rangesIntersect(this, range, false); - }, - - // Sharing a boundary start-to-end or end-to-start does count as intersection. - intersectsOrTouchesRange: function(range) { - return rangesIntersect(this, range, true); - }, - - intersection: function(range) { - if (this.intersectsRange(range)) { - var startComparison = comparePoints(this.startContainer, this.startOffset, range.startContainer, range.startOffset), - endComparison = comparePoints(this.endContainer, this.endOffset, range.endContainer, range.endOffset); - - var intersectionRange = this.cloneRange(); - if (startComparison == -1) { - intersectionRange.setStart(range.startContainer, range.startOffset); - } - if (endComparison == 1) { - intersectionRange.setEnd(range.endContainer, range.endOffset); - } - return intersectionRange; - } - return null; - }, - - union: function(range) { - if (this.intersectsOrTouchesRange(range)) { - var unionRange = this.cloneRange(); - if (comparePoints(range.startContainer, range.startOffset, this.startContainer, this.startOffset) == -1) { - unionRange.setStart(range.startContainer, range.startOffset); - } - if (comparePoints(range.endContainer, range.endOffset, this.endContainer, this.endOffset) == 1) { - unionRange.setEnd(range.endContainer, range.endOffset); - } - return unionRange; - } else { - throw new DOMException("Ranges do not intersect"); - } - }, - - containsNode: function(node, allowPartial) { - if (allowPartial) { - return this.intersectsNode(node, false); - } else { - return this.compareNode(node) == n_i; - } - }, - - containsNodeContents: function(node) { - return this.comparePoint(node, 0) >= 0 && this.comparePoint(node, getNodeLength(node)) <= 0; - }, - - containsRange: function(range) { - var intersection = this.intersection(range); - return intersection !== null && range.equals(intersection); - }, - - containsNodeText: function(node) { - var nodeRange = this.cloneRange(); - nodeRange.selectNode(node); - var textNodes = nodeRange.getNodes([3]); - if (textNodes.length > 0) { - nodeRange.setStart(textNodes[0], 0); - var lastTextNode = textNodes.pop(); - nodeRange.setEnd(lastTextNode, lastTextNode.length); - return this.containsRange(nodeRange); - } else { - return this.containsNodeContents(node); - } - }, - - getNodes: function(nodeTypes, filter) { - assertRangeValid(this); - return getNodesInRange(this, nodeTypes, filter); - }, - - getDocument: function() { - return getRangeDocument(this); - }, - - collapseBefore: function(node) { - this.setEndBefore(node); - this.collapse(false); - }, - - collapseAfter: function(node) { - this.setStartAfter(node); - this.collapse(true); - }, - - getBookmark: function(containerNode) { - var doc = getRangeDocument(this); - var preSelectionRange = api.createRange(doc); - containerNode = containerNode || dom.getBody(doc); - preSelectionRange.selectNodeContents(containerNode); - var range = this.intersection(preSelectionRange); - var start = 0, end = 0; - if (range) { - preSelectionRange.setEnd(range.startContainer, range.startOffset); - start = preSelectionRange.toString().length; - end = start + range.toString().length; - } - - return { - start: start, - end: end, - containerNode: containerNode - }; - }, - - moveToBookmark: function(bookmark) { - var containerNode = bookmark.containerNode; - var charIndex = 0; - this.setStart(containerNode, 0); - this.collapse(true); - var nodeStack = [containerNode], node, foundStart = false, stop = false; - var nextCharIndex, i, childNodes; - - while (!stop && (node = nodeStack.pop())) { - if (node.nodeType == 3) { - nextCharIndex = charIndex + node.length; - if (!foundStart && bookmark.start >= charIndex && bookmark.start <= nextCharIndex) { - this.setStart(node, bookmark.start - charIndex); - foundStart = true; - } - if (foundStart && bookmark.end >= charIndex && bookmark.end <= nextCharIndex) { - this.setEnd(node, bookmark.end - charIndex); - stop = true; - } - charIndex = nextCharIndex; - } else { - childNodes = node.childNodes; - i = childNodes.length; - while (i--) { - nodeStack.push(childNodes[i]); - } - } - } - }, - - getName: function() { - return "DomRange"; - }, - - equals: function(range) { - return Range.rangesEqual(this, range); - }, - - isValid: function() { - return isRangeValid(this); - }, - - inspect: function() { - return inspect(this); - }, - - detach: function() { - // In DOM4, detach() is now a no-op. - } - }); - - function copyComparisonConstantsToObject(obj) { - obj.START_TO_START = s2s; - obj.START_TO_END = s2e; - obj.END_TO_END = e2e; - obj.END_TO_START = e2s; - - obj.NODE_BEFORE = n_b; - obj.NODE_AFTER = n_a; - obj.NODE_BEFORE_AND_AFTER = n_b_a; - obj.NODE_INSIDE = n_i; - } - - function copyComparisonConstants(constructor) { - copyComparisonConstantsToObject(constructor); - copyComparisonConstantsToObject(constructor.prototype); - } - - function createRangeContentRemover(remover, boundaryUpdater) { - return function() { - assertRangeValid(this); - - var sc = this.startContainer, so = this.startOffset, root = this.commonAncestorContainer; - - var iterator = new RangeIterator(this, true); - - // Work out where to position the range after content removal - var node, boundary; - if (sc !== root) { - node = getClosestAncestorIn(sc, root, true); - boundary = getBoundaryAfterNode(node); - sc = boundary.node; - so = boundary.offset; - } - - // Check none of the range is read-only - iterateSubtree(iterator, assertNodeNotReadOnly); - - iterator.reset(); - - // Remove the content - var returnValue = remover(iterator); - iterator.detach(); - - // Move to the new position - boundaryUpdater(this, sc, so, sc, so); - - return returnValue; - }; - } - - function createPrototypeRange(constructor, boundaryUpdater) { - function createBeforeAfterNodeSetter(isBefore, isStart) { - return function(node) { - assertValidNodeType(node, beforeAfterNodeTypes); - assertValidNodeType(getRootContainer(node), rootContainerNodeTypes); - - var boundary = (isBefore ? getBoundaryBeforeNode : getBoundaryAfterNode)(node); - (isStart ? setRangeStart : setRangeEnd)(this, boundary.node, boundary.offset); - }; - } - - function setRangeStart(range, node, offset) { - var ec = range.endContainer, eo = range.endOffset; - if (node !== range.startContainer || offset !== range.startOffset) { - // Check the root containers of the range and the new boundary, and also check whether the new boundary - // is after the current end. In either case, collapse the range to the new position - if (getRootContainer(node) != getRootContainer(ec) || comparePoints(node, offset, ec, eo) == 1) { - ec = node; - eo = offset; - } - boundaryUpdater(range, node, offset, ec, eo); - } - } - - function setRangeEnd(range, node, offset) { - var sc = range.startContainer, so = range.startOffset; - if (node !== range.endContainer || offset !== range.endOffset) { - // Check the root containers of the range and the new boundary, and also check whether the new boundary - // is after the current end. In either case, collapse the range to the new position - if (getRootContainer(node) != getRootContainer(sc) || comparePoints(node, offset, sc, so) == -1) { - sc = node; - so = offset; - } - boundaryUpdater(range, sc, so, node, offset); - } - } - - // Set up inheritance - var F = function() {}; - F.prototype = api.rangePrototype; - constructor.prototype = new F(); - - util.extend(constructor.prototype, { - setStart: function(node, offset) { - assertNoDocTypeNotationEntityAncestor(node, true); - assertValidOffset(node, offset); - - setRangeStart(this, node, offset); - }, - - setEnd: function(node, offset) { - assertNoDocTypeNotationEntityAncestor(node, true); - assertValidOffset(node, offset); - - setRangeEnd(this, node, offset); - }, - - /** - * Convenience method to set a range's start and end boundaries. Overloaded as follows: - * - Two parameters (node, offset) creates a collapsed range at that position - * - Three parameters (node, startOffset, endOffset) creates a range contained with node starting at - * startOffset and ending at endOffset - * - Four parameters (startNode, startOffset, endNode, endOffset) creates a range starting at startOffset in - * startNode and ending at endOffset in endNode - */ - setStartAndEnd: function() { - var args = arguments; - var sc = args[0], so = args[1], ec = sc, eo = so; - - switch (args.length) { - case 3: - eo = args[2]; - break; - case 4: - ec = args[2]; - eo = args[3]; - break; - } - - boundaryUpdater(this, sc, so, ec, eo); - }, - - setBoundary: function(node, offset, isStart) { - this["set" + (isStart ? "Start" : "End")](node, offset); - }, - - setStartBefore: createBeforeAfterNodeSetter(true, true), - setStartAfter: createBeforeAfterNodeSetter(false, true), - setEndBefore: createBeforeAfterNodeSetter(true, false), - setEndAfter: createBeforeAfterNodeSetter(false, false), - - collapse: function(isStart) { - assertRangeValid(this); - if (isStart) { - boundaryUpdater(this, this.startContainer, this.startOffset, this.startContainer, this.startOffset); - } else { - boundaryUpdater(this, this.endContainer, this.endOffset, this.endContainer, this.endOffset); - } - }, - - selectNodeContents: function(node) { - assertNoDocTypeNotationEntityAncestor(node, true); - - boundaryUpdater(this, node, 0, node, getNodeLength(node)); - }, - - selectNode: function(node) { - assertNoDocTypeNotationEntityAncestor(node, false); - assertValidNodeType(node, beforeAfterNodeTypes); - - var start = getBoundaryBeforeNode(node), end = getBoundaryAfterNode(node); - boundaryUpdater(this, start.node, start.offset, end.node, end.offset); - }, - - extractContents: createRangeContentRemover(extractSubtree, boundaryUpdater), - - deleteContents: createRangeContentRemover(deleteSubtree, boundaryUpdater), - - canSurroundContents: function() { - assertRangeValid(this); - assertNodeNotReadOnly(this.startContainer); - assertNodeNotReadOnly(this.endContainer); - - // Check if the contents can be surrounded. Specifically, this means whether the range partially selects - // no non-text nodes. - var iterator = new RangeIterator(this, true); - var boundariesInvalid = (iterator._first && isNonTextPartiallySelected(iterator._first, this) || - (iterator._last && isNonTextPartiallySelected(iterator._last, this))); - iterator.detach(); - return !boundariesInvalid; - }, - - splitBoundaries: function() { - splitRangeBoundaries(this); - }, - - splitBoundariesPreservingPositions: function(positionsToPreserve) { - splitRangeBoundaries(this, positionsToPreserve); - }, - - normalizeBoundaries: function() { - assertRangeValid(this); - - var sc = this.startContainer, so = this.startOffset, ec = this.endContainer, eo = this.endOffset; - - var mergeForward = function(node) { - var sibling = node.nextSibling; - if (sibling && sibling.nodeType == node.nodeType) { - ec = node; - eo = node.length; - node.appendData(sibling.data); - sibling.parentNode.removeChild(sibling); - } - }; - - var mergeBackward = function(node) { - var sibling = node.previousSibling; - if (sibling && sibling.nodeType == node.nodeType) { - sc = node; - var nodeLength = node.length; - so = sibling.length; - node.insertData(0, sibling.data); - sibling.parentNode.removeChild(sibling); - if (sc == ec) { - eo += so; - ec = sc; - } else if (ec == node.parentNode) { - var nodeIndex = getNodeIndex(node); - if (eo == nodeIndex) { - ec = node; - eo = nodeLength; - } else if (eo > nodeIndex) { - eo--; - } - } - } - }; - - var normalizeStart = true; - - if (isCharacterDataNode(ec)) { - if (ec.length == eo) { - mergeForward(ec); - } - } else { - if (eo > 0) { - var endNode = ec.childNodes[eo - 1]; - if (endNode && isCharacterDataNode(endNode)) { - mergeForward(endNode); - } - } - normalizeStart = !this.collapsed; - } - - if (normalizeStart) { - if (isCharacterDataNode(sc)) { - if (so == 0) { - mergeBackward(sc); - } - } else { - if (so < sc.childNodes.length) { - var startNode = sc.childNodes[so]; - if (startNode && isCharacterDataNode(startNode)) { - mergeBackward(startNode); - } - } - } - } else { - sc = ec; - so = eo; - } - - boundaryUpdater(this, sc, so, ec, eo); - }, - - collapseToPoint: function(node, offset) { - assertNoDocTypeNotationEntityAncestor(node, true); - assertValidOffset(node, offset); - this.setStartAndEnd(node, offset); - } - }); - - copyComparisonConstants(constructor); - } - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Updates commonAncestorContainer and collapsed after boundary change - function updateCollapsedAndCommonAncestor(range) { - range.collapsed = (range.startContainer === range.endContainer && range.startOffset === range.endOffset); - range.commonAncestorContainer = range.collapsed ? - range.startContainer : dom.getCommonAncestor(range.startContainer, range.endContainer); - } - - function updateBoundaries(range, startContainer, startOffset, endContainer, endOffset) { - range.startContainer = startContainer; - range.startOffset = startOffset; - range.endContainer = endContainer; - range.endOffset = endOffset; - range.document = dom.getDocument(startContainer); - - updateCollapsedAndCommonAncestor(range); - } - - function Range(doc) { - this.startContainer = doc; - this.startOffset = 0; - this.endContainer = doc; - this.endOffset = 0; - this.document = doc; - updateCollapsedAndCommonAncestor(this); - } - - createPrototypeRange(Range, updateBoundaries); - - util.extend(Range, { - rangeProperties: rangeProperties, - RangeIterator: RangeIterator, - copyComparisonConstants: copyComparisonConstants, - createPrototypeRange: createPrototypeRange, - inspect: inspect, - toHtml: rangeToHtml, - getRangeDocument: getRangeDocument, - rangesEqual: function(r1, r2) { - return r1.startContainer === r2.startContainer && - r1.startOffset === r2.startOffset && - r1.endContainer === r2.endContainer && - r1.endOffset === r2.endOffset; - } - }); - - api.DomRange = Range; - }); - - /*----------------------------------------------------------------------------------------------------------------*/ - - // Wrappers for the browser's native DOM Range and/or TextRange implementation - api.createCoreModule("WrappedRange", ["DomRange"], function(api, module) { - var WrappedRange, WrappedTextRange; - var dom = api.dom; - var util = api.util; - var DomPosition = dom.DomPosition; - var DomRange = api.DomRange; - var getBody = dom.getBody; - var getContentDocument = dom.getContentDocument; - var isCharacterDataNode = dom.isCharacterDataNode; - - - /*----------------------------------------------------------------------------------------------------------------*/ - - if (api.features.implementsDomRange) { - // This is a wrapper around the browser's native DOM Range. It has two aims: - // - Provide workarounds for specific browser bugs - // - provide convenient extensions, which are inherited from Rangy's DomRange - - (function() { - var rangeProto; - var rangeProperties = DomRange.rangeProperties; - - function updateRangeProperties(range) { - var i = rangeProperties.length, prop; - while (i--) { - prop = rangeProperties[i]; - range[prop] = range.nativeRange[prop]; - } - // Fix for broken collapsed property in IE 9. - range.collapsed = (range.startContainer === range.endContainer && range.startOffset === range.endOffset); - } - - function updateNativeRange(range, startContainer, startOffset, endContainer, endOffset) { - var startMoved = (range.startContainer !== startContainer || range.startOffset != startOffset); - var endMoved = (range.endContainer !== endContainer || range.endOffset != endOffset); - var nativeRangeDifferent = !range.equals(range.nativeRange); - - // Always set both boundaries for the benefit of IE9 (see issue 35) - if (startMoved || endMoved || nativeRangeDifferent) { - range.setEnd(endContainer, endOffset); - range.setStart(startContainer, startOffset); - } - } - - var createBeforeAfterNodeSetter; - - WrappedRange = function(range) { - if (!range) { - throw module.createError("WrappedRange: Range must be specified"); - } - this.nativeRange = range; - updateRangeProperties(this); - }; - - DomRange.createPrototypeRange(WrappedRange, updateNativeRange); - - rangeProto = WrappedRange.prototype; - - rangeProto.selectNode = function(node) { - this.nativeRange.selectNode(node); - updateRangeProperties(this); - }; - - rangeProto.cloneContents = function() { - return this.nativeRange.cloneContents(); - }; - - // Due to a long-standing Firefox bug that I have not been able to find a reliable way to detect, - // insertNode() is never delegated to the native range. - - rangeProto.surroundContents = function(node) { - this.nativeRange.surroundContents(node); - updateRangeProperties(this); - }; - - rangeProto.collapse = function(isStart) { - this.nativeRange.collapse(isStart); - updateRangeProperties(this); - }; - - rangeProto.cloneRange = function() { - return new WrappedRange(this.nativeRange.cloneRange()); - }; - - rangeProto.refresh = function() { - updateRangeProperties(this); - }; - - rangeProto.toString = function() { - return this.nativeRange.toString(); - }; - - // Create test range and node for feature detection - - var testTextNode = document.createTextNode("test"); - getBody(document).appendChild(testTextNode); - var range = document.createRange(); - - /*--------------------------------------------------------------------------------------------------------*/ - - // Test for Firefox 2 bug that prevents moving the start of a Range to a point after its current end and - // correct for it - - range.setStart(testTextNode, 0); - range.setEnd(testTextNode, 0); - - try { - range.setStart(testTextNode, 1); - - rangeProto.setStart = function(node, offset) { - this.nativeRange.setStart(node, offset); - updateRangeProperties(this); - }; - - rangeProto.setEnd = function(node, offset) { - this.nativeRange.setEnd(node, offset); - updateRangeProperties(this); - }; - - createBeforeAfterNodeSetter = function(name) { - return function(node) { - this.nativeRange[name](node); - updateRangeProperties(this); - }; - }; - - } catch(ex) { - - rangeProto.setStart = function(node, offset) { - try { - this.nativeRange.setStart(node, offset); - } catch (ex) { - this.nativeRange.setEnd(node, offset); - this.nativeRange.setStart(node, offset); - } - updateRangeProperties(this); - }; - - rangeProto.setEnd = function(node, offset) { - try { - this.nativeRange.setEnd(node, offset); - } catch (ex) { - this.nativeRange.setStart(node, offset); - this.nativeRange.setEnd(node, offset); - } - updateRangeProperties(this); - }; - - createBeforeAfterNodeSetter = function(name, oppositeName) { - return function(node) { - try { - this.nativeRange[name](node); - } catch (ex) { - this.nativeRange[oppositeName](node); - this.nativeRange[name](node); - } - updateRangeProperties(this); - }; - }; - } - - rangeProto.setStartBefore = createBeforeAfterNodeSetter("setStartBefore", "setEndBefore"); - rangeProto.setStartAfter = createBeforeAfterNodeSetter("setStartAfter", "setEndAfter"); - rangeProto.setEndBefore = createBeforeAfterNodeSetter("setEndBefore", "setStartBefore"); - rangeProto.setEndAfter = createBeforeAfterNodeSetter("setEndAfter", "setStartAfter"); - - /*--------------------------------------------------------------------------------------------------------*/ - - // Always use DOM4-compliant selectNodeContents implementation: it's simpler and less code than testing - // whether the native implementation can be trusted - rangeProto.selectNodeContents = function(node) { - this.setStartAndEnd(node, 0, dom.getNodeLength(node)); - }; - - /*--------------------------------------------------------------------------------------------------------*/ - - // Test for and correct WebKit bug that has the behaviour of compareBoundaryPoints round the wrong way for - // constants START_TO_END and END_TO_START: https://bugs.webkit.org/show_bug.cgi?id=20738 - - range.selectNodeContents(testTextNode); - range.setEnd(testTextNode, 3); - - var range2 = document.createRange(); - range2.selectNodeContents(testTextNode); - range2.setEnd(testTextNode, 4); - range2.setStart(testTextNode, 2); - - if (range.compareBoundaryPoints(range.START_TO_END, range2) == -1 && - range.compareBoundaryPoints(range.END_TO_START, range2) == 1) { - // This is the wrong way round, so correct for it - - rangeProto.compareBoundaryPoints = function(type, range) { - range = range.nativeRange || range; - if (type == range.START_TO_END) { - type = range.END_TO_START; - } else if (type == range.END_TO_START) { - type = range.START_TO_END; - } - return this.nativeRange.compareBoundaryPoints(type, range); - }; - } else { - rangeProto.compareBoundaryPoints = function(type, range) { - return this.nativeRange.compareBoundaryPoints(type, range.nativeRange || range); - }; - } - - /*--------------------------------------------------------------------------------------------------------*/ - - // Test for IE 9 deleteContents() and extractContents() bug and correct it. See issue 107. - - var el = document.createElement("div"); - el.innerHTML = "123"; - var textNode = el.firstChild; - var body = getBody(document); - body.appendChild(el); - - range.setStart(textNode, 1); - range.setEnd(textNode, 2); - range.deleteContents(); - - if (textNode.data == "13") { - // Behaviour is correct per DOM4 Range so wrap the browser's implementation of deleteContents() and - // extractContents() - rangeProto.deleteContents = function() { - this.nativeRange.deleteContents(); - updateRangeProperties(this); - }; - - rangeProto.extractContents = function() { - var frag = this.nativeRange.extractContents(); - updateRangeProperties(this); - return frag; - }; - } else { - } - - body.removeChild(el); - body = null; - - /*--------------------------------------------------------------------------------------------------------*/ - - // Test for existence of createContextualFragment and delegate to it if it exists - if (util.isHostMethod(range, "createContextualFragment")) { - rangeProto.createContextualFragment = function(fragmentStr) { - return this.nativeRange.createContextualFragment(fragmentStr); - }; - } - - /*--------------------------------------------------------------------------------------------------------*/ - - // Clean up - getBody(document).removeChild(testTextNode); - - rangeProto.getName = function() { - return "WrappedRange"; - }; - - api.WrappedRange = WrappedRange; - - api.createNativeRange = function(doc) { - doc = getContentDocument(doc, module, "createNativeRange"); - return doc.createRange(); - }; - })(); - } - - if (api.features.implementsTextRange) { - /* - This is a workaround for a bug where IE returns the wrong container element from the TextRange's parentElement() - method. For example, in the following (where pipes denote the selection boundaries): - -
      • | a
      • b |
      - - var range = document.selection.createRange(); - alert(range.parentElement().id); // Should alert "ul" but alerts "b" - - This method returns the common ancestor node of the following: - - the parentElement() of the textRange - - the parentElement() of the textRange after calling collapse(true) - - the parentElement() of the textRange after calling collapse(false) - */ - var getTextRangeContainerElement = function(textRange) { - var parentEl = textRange.parentElement(); - var range = textRange.duplicate(); - range.collapse(true); - var startEl = range.parentElement(); - range = textRange.duplicate(); - range.collapse(false); - var endEl = range.parentElement(); - var startEndContainer = (startEl == endEl) ? startEl : dom.getCommonAncestor(startEl, endEl); - - return startEndContainer == parentEl ? startEndContainer : dom.getCommonAncestor(parentEl, startEndContainer); - }; - - var textRangeIsCollapsed = function(textRange) { - return textRange.compareEndPoints("StartToEnd", textRange) == 0; - }; - - // Gets the boundary of a TextRange expressed as a node and an offset within that node. This function started - // out as an improved version of code found in Tim Cameron Ryan's IERange (http://code.google.com/p/ierange/) - // but has grown, fixing problems with line breaks in preformatted text, adding workaround for IE TextRange - // bugs, handling for inputs and images, plus optimizations. - var getTextRangeBoundaryPosition = function(textRange, wholeRangeContainerElement, isStart, isCollapsed, startInfo) { - var workingRange = textRange.duplicate(); - workingRange.collapse(isStart); - var containerElement = workingRange.parentElement(); - - // Sometimes collapsing a TextRange that's at the start of a text node can move it into the previous node, so - // check for that - if (!dom.isOrIsAncestorOf(wholeRangeContainerElement, containerElement)) { - containerElement = wholeRangeContainerElement; - } - - - // Deal with nodes that cannot "contain rich HTML markup". In practice, this means form inputs, images and - // similar. See http://msdn.microsoft.com/en-us/library/aa703950%28VS.85%29.aspx - if (!containerElement.canHaveHTML) { - var pos = new DomPosition(containerElement.parentNode, dom.getNodeIndex(containerElement)); - return { - boundaryPosition: pos, - nodeInfo: { - nodeIndex: pos.offset, - containerElement: pos.node - } - }; - } - - var workingNode = dom.getDocument(containerElement).createElement("span"); - - // Workaround for HTML5 Shiv's insane violation of document.createElement(). See Rangy issue 104 and HTML5 - // Shiv issue 64: https://github.com/aFarkas/html5shiv/issues/64 - if (workingNode.parentNode) { - workingNode.parentNode.removeChild(workingNode); - } - - var comparison, workingComparisonType = isStart ? "StartToStart" : "StartToEnd"; - var previousNode, nextNode, boundaryPosition, boundaryNode; - var start = (startInfo && startInfo.containerElement == containerElement) ? startInfo.nodeIndex : 0; - var childNodeCount = containerElement.childNodes.length; - var end = childNodeCount; - - // Check end first. Code within the loop assumes that the endth child node of the container is definitely - // after the range boundary. - var nodeIndex = end; - - while (true) { - if (nodeIndex == childNodeCount) { - containerElement.appendChild(workingNode); - } else { - containerElement.insertBefore(workingNode, containerElement.childNodes[nodeIndex]); - } - workingRange.moveToElementText(workingNode); - comparison = workingRange.compareEndPoints(workingComparisonType, textRange); - if (comparison == 0 || start == end) { - break; - } else if (comparison == -1) { - if (end == start + 1) { - // We know the endth child node is after the range boundary, so we must be done. - break; - } else { - start = nodeIndex; - } - } else { - end = (end == start + 1) ? start : nodeIndex; - } - nodeIndex = Math.floor((start + end) / 2); - containerElement.removeChild(workingNode); - } - - - // We've now reached or gone past the boundary of the text range we're interested in - // so have identified the node we want - boundaryNode = workingNode.nextSibling; - - if (comparison == -1 && boundaryNode && isCharacterDataNode(boundaryNode)) { - // This is a character data node (text, comment, cdata). The working range is collapsed at the start of - // the node containing the text range's boundary, so we move the end of the working range to the - // boundary point and measure the length of its text to get the boundary's offset within the node. - workingRange.setEndPoint(isStart ? "EndToStart" : "EndToEnd", textRange); - - var offset; - - if (/[\r\n]/.test(boundaryNode.data)) { - /* - For the particular case of a boundary within a text node containing rendered line breaks (within a -
       element, for example), we need a slightly complicated approach to get the boundary's offset in
      -                        IE. The facts:
      -                        
      -                        - Each line break is represented as \r in the text node's data/nodeValue properties
      -                        - Each line break is represented as \r\n in the TextRange's 'text' property
      -                        - The 'text' property of the TextRange does not contain trailing line breaks
      -                        
      -                        To get round the problem presented by the final fact above, we can use the fact that TextRange's
      -                        moveStart() and moveEnd() methods return the actual number of characters moved, which is not
      -                        necessarily the same as the number of characters it was instructed to move. The simplest approach is
      -                        to use this to store the characters moved when moving both the start and end of the range to the
      -                        start of the document body and subtracting the start offset from the end offset (the
      -                        "move-negative-gazillion" method). However, this is extremely slow when the document is large and
      -                        the range is near the end of it. Clearly doing the mirror image (i.e. moving the range boundaries to
      -                        the end of the document) has the same problem.
      -                        
      -                        Another approach that works is to use moveStart() to move the start boundary of the range up to the
      -                        end boundary one character at a time and incrementing a counter with the value returned by the
      -                        moveStart() call. However, the check for whether the start boundary has reached the end boundary is
      -                        expensive, so this method is slow (although unlike "move-negative-gazillion" is largely unaffected
      -                        by the location of the range within the document).
      -                        
      -                        The approach used below is a hybrid of the two methods above. It uses the fact that a string
      -                        containing the TextRange's 'text' property with each \r\n converted to a single \r character cannot
      -                        be longer than the text of the TextRange, so the start of the range is moved that length initially
      -                        and then a character at a time to make up for any trailing line breaks not contained in the 'text'
      -                        property. This has good performance in most situations compared to the previous two methods.
      -                        */
      -                        var tempRange = workingRange.duplicate();
      -                        var rangeLength = tempRange.text.replace(/\r\n/g, "\r").length;
      -
      -                        offset = tempRange.moveStart("character", rangeLength);
      -                        while ( (comparison = tempRange.compareEndPoints("StartToEnd", tempRange)) == -1) {
      -                            offset++;
      -                            tempRange.moveStart("character", 1);
      -                        }
      -                    } else {
      -                        offset = workingRange.text.length;
      -                    }
      -                    boundaryPosition = new DomPosition(boundaryNode, offset);
      -                } else {
      -
      -                    // If the boundary immediately follows a character data node and this is the end boundary, we should favour
      -                    // a position within that, and likewise for a start boundary preceding a character data node
      -                    previousNode = (isCollapsed || !isStart) && workingNode.previousSibling;
      -                    nextNode = (isCollapsed || isStart) && workingNode.nextSibling;
      -                    if (nextNode && isCharacterDataNode(nextNode)) {
      -                        boundaryPosition = new DomPosition(nextNode, 0);
      -                    } else if (previousNode && isCharacterDataNode(previousNode)) {
      -                        boundaryPosition = new DomPosition(previousNode, previousNode.data.length);
      -                    } else {
      -                        boundaryPosition = new DomPosition(containerElement, dom.getNodeIndex(workingNode));
      -                    }
      -                }
      -
      -                // Clean up
      -                workingNode.parentNode.removeChild(workingNode);
      -
      -                return {
      -                    boundaryPosition: boundaryPosition,
      -                    nodeInfo: {
      -                        nodeIndex: nodeIndex,
      -                        containerElement: containerElement
      -                    }
      -                };
      -            };
      -
      -            // Returns a TextRange representing the boundary of a TextRange expressed as a node and an offset within that
      -            // node. This function started out as an optimized version of code found in Tim Cameron Ryan's IERange
      -            // (http://code.google.com/p/ierange/)
      -            var createBoundaryTextRange = function(boundaryPosition, isStart) {
      -                var boundaryNode, boundaryParent, boundaryOffset = boundaryPosition.offset;
      -                var doc = dom.getDocument(boundaryPosition.node);
      -                var workingNode, childNodes, workingRange = getBody(doc).createTextRange();
      -                var nodeIsDataNode = isCharacterDataNode(boundaryPosition.node);
      -
      -                if (nodeIsDataNode) {
      -                    boundaryNode = boundaryPosition.node;
      -                    boundaryParent = boundaryNode.parentNode;
      -                } else {
      -                    childNodes = boundaryPosition.node.childNodes;
      -                    boundaryNode = (boundaryOffset < childNodes.length) ? childNodes[boundaryOffset] : null;
      -                    boundaryParent = boundaryPosition.node;
      -                }
      -
      -                // Position the range immediately before the node containing the boundary
      -                workingNode = doc.createElement("span");
      -
      -                // Making the working element non-empty element persuades IE to consider the TextRange boundary to be within
      -                // the element rather than immediately before or after it
      -                workingNode.innerHTML = "&#feff;";
      -
      -                // insertBefore is supposed to work like appendChild if the second parameter is null. However, a bug report
      -                // for IERange suggests that it can crash the browser: http://code.google.com/p/ierange/issues/detail?id=12
      -                if (boundaryNode) {
      -                    boundaryParent.insertBefore(workingNode, boundaryNode);
      -                } else {
      -                    boundaryParent.appendChild(workingNode);
      -                }
      -
      -                workingRange.moveToElementText(workingNode);
      -                workingRange.collapse(!isStart);
      -
      -                // Clean up
      -                boundaryParent.removeChild(workingNode);
      -
      -                // Move the working range to the text offset, if required
      -                if (nodeIsDataNode) {
      -                    workingRange[isStart ? "moveStart" : "moveEnd"]("character", boundaryOffset);
      -                }
      -
      -                return workingRange;
      -            };
      -
      -            /*------------------------------------------------------------------------------------------------------------*/
      -
      -            // This is a wrapper around a TextRange, providing full DOM Range functionality using rangy's DomRange as a
      -            // prototype
      -
      -            WrappedTextRange = function(textRange) {
      -                this.textRange = textRange;
      -                this.refresh();
      -            };
      -
      -            WrappedTextRange.prototype = new DomRange(document);
      -
      -            WrappedTextRange.prototype.refresh = function() {
      -                var start, end, startBoundary;
      -
      -                // TextRange's parentElement() method cannot be trusted. getTextRangeContainerElement() works around that.
      -                var rangeContainerElement = getTextRangeContainerElement(this.textRange);
      -
      -                if (textRangeIsCollapsed(this.textRange)) {
      -                    end = start = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, true,
      -                        true).boundaryPosition;
      -                } else {
      -                    startBoundary = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, true, false);
      -                    start = startBoundary.boundaryPosition;
      -
      -                    // An optimization used here is that if the start and end boundaries have the same parent element, the
      -                    // search scope for the end boundary can be limited to exclude the portion of the element that precedes
      -                    // the start boundary
      -                    end = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, false, false,
      -                        startBoundary.nodeInfo).boundaryPosition;
      -                }
      -
      -                this.setStart(start.node, start.offset);
      -                this.setEnd(end.node, end.offset);
      -            };
      -
      -            WrappedTextRange.prototype.getName = function() {
      -                return "WrappedTextRange";
      -            };
      -
      -            DomRange.copyComparisonConstants(WrappedTextRange);
      -
      -            var rangeToTextRange = function(range) {
      -                if (range.collapsed) {
      -                    return createBoundaryTextRange(new DomPosition(range.startContainer, range.startOffset), true);
      -                } else {
      -                    var startRange = createBoundaryTextRange(new DomPosition(range.startContainer, range.startOffset), true);
      -                    var endRange = createBoundaryTextRange(new DomPosition(range.endContainer, range.endOffset), false);
      -                    var textRange = getBody( DomRange.getRangeDocument(range) ).createTextRange();
      -                    textRange.setEndPoint("StartToStart", startRange);
      -                    textRange.setEndPoint("EndToEnd", endRange);
      -                    return textRange;
      -                }
      -            };
      -
      -            WrappedTextRange.rangeToTextRange = rangeToTextRange;
      -
      -            WrappedTextRange.prototype.toTextRange = function() {
      -                return rangeToTextRange(this);
      -            };
      -
      -            api.WrappedTextRange = WrappedTextRange;
      -
      -            // IE 9 and above have both implementations and Rangy makes both available. The next few lines sets which
      -            // implementation to use by default.
      -            if (!api.features.implementsDomRange || api.config.preferTextRange) {
      -                // Add WrappedTextRange as the Range property of the global object to allow expression like Range.END_TO_END to work
      -                var globalObj = (function() { return this; })();
      -                if (typeof globalObj.Range == "undefined") {
      -                    globalObj.Range = WrappedTextRange;
      -                }
      -
      -                api.createNativeRange = function(doc) {
      -                    doc = getContentDocument(doc, module, "createNativeRange");
      -                    return getBody(doc).createTextRange();
      -                };
      -
      -                api.WrappedRange = WrappedTextRange;
      -            }
      -        }
      -
      -        api.createRange = function(doc) {
      -            doc = getContentDocument(doc, module, "createRange");
      -            return new api.WrappedRange(api.createNativeRange(doc));
      -        };
      -
      -        api.createRangyRange = function(doc) {
      -            doc = getContentDocument(doc, module, "createRangyRange");
      -            return new DomRange(doc);
      -        };
      -
      -        api.createIframeRange = function(iframeEl) {
      -            module.deprecationNotice("createIframeRange()", "createRange(iframeEl)");
      -            return api.createRange(iframeEl);
      -        };
      -
      -        api.createIframeRangyRange = function(iframeEl) {
      -            module.deprecationNotice("createIframeRangyRange()", "createRangyRange(iframeEl)");
      -            return api.createRangyRange(iframeEl);
      -        };
      -
      -        api.addShimListener(function(win) {
      -            var doc = win.document;
      -            if (typeof doc.createRange == "undefined") {
      -                doc.createRange = function() {
      -                    return api.createRange(doc);
      -                };
      -            }
      -            doc = win = null;
      -        });
      -    });
      -
      -    /*----------------------------------------------------------------------------------------------------------------*/
      -
      -    // This module creates a selection object wrapper that conforms as closely as possible to the Selection specification
      -    // in the HTML Editing spec (http://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#selections)
      -    api.createCoreModule("WrappedSelection", ["DomRange", "WrappedRange"], function(api, module) {
      -        api.config.checkSelectionRanges = true;
      -
      -        var BOOLEAN = "boolean";
      -        var NUMBER = "number";
      -        var dom = api.dom;
      -        var util = api.util;
      -        var isHostMethod = util.isHostMethod;
      -        var DomRange = api.DomRange;
      -        var WrappedRange = api.WrappedRange;
      -        var DOMException = api.DOMException;
      -        var DomPosition = dom.DomPosition;
      -        var getNativeSelection;
      -        var selectionIsCollapsed;
      -        var features = api.features;
      -        var CONTROL = "Control";
      -        var getDocument = dom.getDocument;
      -        var getBody = dom.getBody;
      -        var rangesEqual = DomRange.rangesEqual;
      -
      -
      -        // Utility function to support direction parameters in the API that may be a string ("backward" or "forward") or a
      -        // Boolean (true for backwards).
      -        function isDirectionBackward(dir) {
      -            return (typeof dir == "string") ? /^backward(s)?$/i.test(dir) : !!dir;
      -        }
      -
      -        function getWindow(win, methodName) {
      -            if (!win) {
      -                return window;
      -            } else if (dom.isWindow(win)) {
      -                return win;
      -            } else if (win instanceof WrappedSelection) {
      -                return win.win;
      -            } else {
      -                var doc = dom.getContentDocument(win, module, methodName);
      -                return dom.getWindow(doc);
      -            }
      -        }
      -
      -        function getWinSelection(winParam) {
      -            return getWindow(winParam, "getWinSelection").getSelection();
      -        }
      -
      -        function getDocSelection(winParam) {
      -            return getWindow(winParam, "getDocSelection").document.selection;
      -        }
      -        
      -        function winSelectionIsBackward(sel) {
      -            var backward = false;
      -            if (sel.anchorNode) {
      -                backward = (dom.comparePoints(sel.anchorNode, sel.anchorOffset, sel.focusNode, sel.focusOffset) == 1);
      -            }
      -            return backward;
      -        }
      -
      -        // Test for the Range/TextRange and Selection features required
      -        // Test for ability to retrieve selection
      -        var implementsWinGetSelection = isHostMethod(window, "getSelection"),
      -            implementsDocSelection = util.isHostObject(document, "selection");
      -
      -        features.implementsWinGetSelection = implementsWinGetSelection;
      -        features.implementsDocSelection = implementsDocSelection;
      -
      -        var useDocumentSelection = implementsDocSelection && (!implementsWinGetSelection || api.config.preferTextRange);
      -
      -        if (useDocumentSelection) {
      -            getNativeSelection = getDocSelection;
      -            api.isSelectionValid = function(winParam) {
      -                var doc = getWindow(winParam, "isSelectionValid").document, nativeSel = doc.selection;
      -
      -                // Check whether the selection TextRange is actually contained within the correct document
      -                return (nativeSel.type != "None" || getDocument(nativeSel.createRange().parentElement()) == doc);
      -            };
      -        } else if (implementsWinGetSelection) {
      -            getNativeSelection = getWinSelection;
      -            api.isSelectionValid = function() {
      -                return true;
      -            };
      -        } else {
      -            module.fail("Neither document.selection or window.getSelection() detected.");
      -        }
      -
      -        api.getNativeSelection = getNativeSelection;
      -
      -        var testSelection = getNativeSelection();
      -        var testRange = api.createNativeRange(document);
      -        var body = getBody(document);
      -
      -        // Obtaining a range from a selection
      -        var selectionHasAnchorAndFocus = util.areHostProperties(testSelection,
      -            ["anchorNode", "focusNode", "anchorOffset", "focusOffset"]);
      -
      -        features.selectionHasAnchorAndFocus = selectionHasAnchorAndFocus;
      -
      -        // Test for existence of native selection extend() method
      -        var selectionHasExtend = isHostMethod(testSelection, "extend");
      -        features.selectionHasExtend = selectionHasExtend;
      -        
      -        // Test if rangeCount exists
      -        var selectionHasRangeCount = (typeof testSelection.rangeCount == NUMBER);
      -        features.selectionHasRangeCount = selectionHasRangeCount;
      -
      -        var selectionSupportsMultipleRanges = false;
      -        var collapsedNonEditableSelectionsSupported = true;
      -
      -        var addRangeBackwardToNative = selectionHasExtend ?
      -            function(nativeSelection, range) {
      -                var doc = DomRange.getRangeDocument(range);
      -                var endRange = api.createRange(doc);
      -                endRange.collapseToPoint(range.endContainer, range.endOffset);
      -                nativeSelection.addRange(getNativeRange(endRange));
      -                nativeSelection.extend(range.startContainer, range.startOffset);
      -            } : null;
      -
      -        if (util.areHostMethods(testSelection, ["addRange", "getRangeAt", "removeAllRanges"]) &&
      -                typeof testSelection.rangeCount == NUMBER && features.implementsDomRange) {
      -
      -            (function() {
      -                // Previously an iframe was used but this caused problems in some circumstances in IE, so tests are
      -                // performed on the current document's selection. See issue 109.
      -
      -                // Note also that if a selection previously existed, it is wiped by these tests. This should usually be fine
      -                // because initialization usually happens when the document loads, but could be a problem for a script that
      -                // loads and initializes Rangy later. If anyone complains, code could be added to save and restore the
      -                // selection.
      -                var sel = window.getSelection();
      -                if (sel) {
      -                    // Store the current selection
      -                    var originalSelectionRangeCount = sel.rangeCount;
      -                    var selectionHasMultipleRanges = (originalSelectionRangeCount > 1);
      -                    var originalSelectionRanges = [];
      -                    var originalSelectionBackward = winSelectionIsBackward(sel); 
      -                    for (var i = 0; i < originalSelectionRangeCount; ++i) {
      -                        originalSelectionRanges[i] = sel.getRangeAt(i);
      -                    }
      -                    
      -                    // Create some test elements
      -                    var body = getBody(document);
      -                    var testEl = body.appendChild( document.createElement("div") );
      -                    testEl.contentEditable = "false";
      -                    var textNode = testEl.appendChild( document.createTextNode("\u00a0\u00a0\u00a0") );
      -
      -                    // Test whether the native selection will allow a collapsed selection within a non-editable element
      -                    var r1 = document.createRange();
      -
      -                    r1.setStart(textNode, 1);
      -                    r1.collapse(true);
      -                    sel.addRange(r1);
      -                    collapsedNonEditableSelectionsSupported = (sel.rangeCount == 1);
      -                    sel.removeAllRanges();
      -
      -                    // Test whether the native selection is capable of supporting multiple ranges.
      -                    if (!selectionHasMultipleRanges) {
      -                        // Doing the original feature test here in Chrome 36 (and presumably later versions) prints a
      -                        // console error of "Discontiguous selection is not supported." that cannot be suppressed. There's
      -                        // nothing we can do about this while retaining the feature test so we have to resort to a browser
      -                        // sniff. I'm not happy about it. See
      -                        // https://code.google.com/p/chromium/issues/detail?id=399791
      -                        var chromeMatch = window.navigator.appVersion.match(/Chrome\/(.*?) /);
      -                        if (chromeMatch && parseInt(chromeMatch[1]) >= 36) {
      -                            selectionSupportsMultipleRanges = false;
      -                        } else {
      -                            var r2 = r1.cloneRange();
      -                            r1.setStart(textNode, 0);
      -                            r2.setEnd(textNode, 3);
      -                            r2.setStart(textNode, 2);
      -                            sel.addRange(r1);
      -                            sel.addRange(r2);
      -                            selectionSupportsMultipleRanges = (sel.rangeCount == 2);
      -                        }
      -                    }
      -
      -                    // Clean up
      -                    body.removeChild(testEl);
      -                    sel.removeAllRanges();
      -
      -                    for (i = 0; i < originalSelectionRangeCount; ++i) {
      -                        if (i == 0 && originalSelectionBackward) {
      -                            if (addRangeBackwardToNative) {
      -                                addRangeBackwardToNative(sel, originalSelectionRanges[i]);
      -                            } else {
      -                                api.warn("Rangy initialization: original selection was backwards but selection has been restored forwards because the browser does not support Selection.extend");
      -                                sel.addRange(originalSelectionRanges[i]);
      -                            }
      -                        } else {
      -                            sel.addRange(originalSelectionRanges[i]);
      -                        }
      -                    }
      -                }
      -            })();
      -        }
      -
      -        features.selectionSupportsMultipleRanges = selectionSupportsMultipleRanges;
      -        features.collapsedNonEditableSelectionsSupported = collapsedNonEditableSelectionsSupported;
      -
      -        // ControlRanges
      -        var implementsControlRange = false, testControlRange;
      -
      -        if (body && isHostMethod(body, "createControlRange")) {
      -            testControlRange = body.createControlRange();
      -            if (util.areHostProperties(testControlRange, ["item", "add"])) {
      -                implementsControlRange = true;
      -            }
      -        }
      -        features.implementsControlRange = implementsControlRange;
      -
      -        // Selection collapsedness
      -        if (selectionHasAnchorAndFocus) {
      -            selectionIsCollapsed = function(sel) {
      -                return sel.anchorNode === sel.focusNode && sel.anchorOffset === sel.focusOffset;
      -            };
      -        } else {
      -            selectionIsCollapsed = function(sel) {
      -                return sel.rangeCount ? sel.getRangeAt(sel.rangeCount - 1).collapsed : false;
      -            };
      -        }
      -
      -        function updateAnchorAndFocusFromRange(sel, range, backward) {
      -            var anchorPrefix = backward ? "end" : "start", focusPrefix = backward ? "start" : "end";
      -            sel.anchorNode = range[anchorPrefix + "Container"];
      -            sel.anchorOffset = range[anchorPrefix + "Offset"];
      -            sel.focusNode = range[focusPrefix + "Container"];
      -            sel.focusOffset = range[focusPrefix + "Offset"];
      -        }
      -
      -        function updateAnchorAndFocusFromNativeSelection(sel) {
      -            var nativeSel = sel.nativeSelection;
      -            sel.anchorNode = nativeSel.anchorNode;
      -            sel.anchorOffset = nativeSel.anchorOffset;
      -            sel.focusNode = nativeSel.focusNode;
      -            sel.focusOffset = nativeSel.focusOffset;
      -        }
      -
      -        function updateEmptySelection(sel) {
      -            sel.anchorNode = sel.focusNode = null;
      -            sel.anchorOffset = sel.focusOffset = 0;
      -            sel.rangeCount = 0;
      -            sel.isCollapsed = true;
      -            sel._ranges.length = 0;
      -        }
      -
      -        function getNativeRange(range) {
      -            var nativeRange;
      -            if (range instanceof DomRange) {
      -                nativeRange = api.createNativeRange(range.getDocument());
      -                nativeRange.setEnd(range.endContainer, range.endOffset);
      -                nativeRange.setStart(range.startContainer, range.startOffset);
      -            } else if (range instanceof WrappedRange) {
      -                nativeRange = range.nativeRange;
      -            } else if (features.implementsDomRange && (range instanceof dom.getWindow(range.startContainer).Range)) {
      -                nativeRange = range;
      -            }
      -            return nativeRange;
      -        }
      -
      -        function rangeContainsSingleElement(rangeNodes) {
      -            if (!rangeNodes.length || rangeNodes[0].nodeType != 1) {
      -                return false;
      -            }
      -            for (var i = 1, len = rangeNodes.length; i < len; ++i) {
      -                if (!dom.isAncestorOf(rangeNodes[0], rangeNodes[i])) {
      -                    return false;
      -                }
      -            }
      -            return true;
      -        }
      -
      -        function getSingleElementFromRange(range) {
      -            var nodes = range.getNodes();
      -            if (!rangeContainsSingleElement(nodes)) {
      -                throw module.createError("getSingleElementFromRange: range " + range.inspect() + " did not consist of a single element");
      -            }
      -            return nodes[0];
      -        }
      -
      -        // Simple, quick test which only needs to distinguish between a TextRange and a ControlRange
      -        function isTextRange(range) {
      -            return !!range && typeof range.text != "undefined";
      -        }
      -
      -        function updateFromTextRange(sel, range) {
      -            // Create a Range from the selected TextRange
      -            var wrappedRange = new WrappedRange(range);
      -            sel._ranges = [wrappedRange];
      -
      -            updateAnchorAndFocusFromRange(sel, wrappedRange, false);
      -            sel.rangeCount = 1;
      -            sel.isCollapsed = wrappedRange.collapsed;
      -        }
      -
      -        function updateControlSelection(sel) {
      -            // Update the wrapped selection based on what's now in the native selection
      -            sel._ranges.length = 0;
      -            if (sel.docSelection.type == "None") {
      -                updateEmptySelection(sel);
      -            } else {
      -                var controlRange = sel.docSelection.createRange();
      -                if (isTextRange(controlRange)) {
      -                    // This case (where the selection type is "Control" and calling createRange() on the selection returns
      -                    // a TextRange) can happen in IE 9. It happens, for example, when all elements in the selected
      -                    // ControlRange have been removed from the ControlRange and removed from the document.
      -                    updateFromTextRange(sel, controlRange);
      -                } else {
      -                    sel.rangeCount = controlRange.length;
      -                    var range, doc = getDocument(controlRange.item(0));
      -                    for (var i = 0; i < sel.rangeCount; ++i) {
      -                        range = api.createRange(doc);
      -                        range.selectNode(controlRange.item(i));
      -                        sel._ranges.push(range);
      -                    }
      -                    sel.isCollapsed = sel.rangeCount == 1 && sel._ranges[0].collapsed;
      -                    updateAnchorAndFocusFromRange(sel, sel._ranges[sel.rangeCount - 1], false);
      -                }
      -            }
      -        }
      -
      -        function addRangeToControlSelection(sel, range) {
      -            var controlRange = sel.docSelection.createRange();
      -            var rangeElement = getSingleElementFromRange(range);
      -
      -            // Create a new ControlRange containing all the elements in the selected ControlRange plus the element
      -            // contained by the supplied range
      -            var doc = getDocument(controlRange.item(0));
      -            var newControlRange = getBody(doc).createControlRange();
      -            for (var i = 0, len = controlRange.length; i < len; ++i) {
      -                newControlRange.add(controlRange.item(i));
      -            }
      -            try {
      -                newControlRange.add(rangeElement);
      -            } catch (ex) {
      -                throw module.createError("addRange(): Element within the specified Range could not be added to control selection (does it have layout?)");
      -            }
      -            newControlRange.select();
      -
      -            // Update the wrapped selection based on what's now in the native selection
      -            updateControlSelection(sel);
      -        }
      -
      -        var getSelectionRangeAt;
      -
      -        if (isHostMethod(testSelection, "getRangeAt")) {
      -            // try/catch is present because getRangeAt() must have thrown an error in some browser and some situation.
      -            // Unfortunately, I didn't write a comment about the specifics and am now scared to take it out. Let that be a
      -            // lesson to us all, especially me.
      -            getSelectionRangeAt = function(sel, index) {
      -                try {
      -                    return sel.getRangeAt(index);
      -                } catch (ex) {
      -                    return null;
      -                }
      -            };
      -        } else if (selectionHasAnchorAndFocus) {
      -            getSelectionRangeAt = function(sel) {
      -                var doc = getDocument(sel.anchorNode);
      -                var range = api.createRange(doc);
      -                range.setStartAndEnd(sel.anchorNode, sel.anchorOffset, sel.focusNode, sel.focusOffset);
      -
      -                // Handle the case when the selection was selected backwards (from the end to the start in the
      -                // document)
      -                if (range.collapsed !== this.isCollapsed) {
      -                    range.setStartAndEnd(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset);
      -                }
      -
      -                return range;
      -            };
      -        }
      -
      -        function WrappedSelection(selection, docSelection, win) {
      -            this.nativeSelection = selection;
      -            this.docSelection = docSelection;
      -            this._ranges = [];
      -            this.win = win;
      -            this.refresh();
      -        }
      -
      -        WrappedSelection.prototype = api.selectionPrototype;
      -
      -        function deleteProperties(sel) {
      -            sel.win = sel.anchorNode = sel.focusNode = sel._ranges = null;
      -            sel.rangeCount = sel.anchorOffset = sel.focusOffset = 0;
      -            sel.detached = true;
      -        }
      -
      -        var cachedRangySelections = [];
      -
      -        function actOnCachedSelection(win, action) {
      -            var i = cachedRangySelections.length, cached, sel;
      -            while (i--) {
      -                cached = cachedRangySelections[i];
      -                sel = cached.selection;
      -                if (action == "deleteAll") {
      -                    deleteProperties(sel);
      -                } else if (cached.win == win) {
      -                    if (action == "delete") {
      -                        cachedRangySelections.splice(i, 1);
      -                        return true;
      -                    } else {
      -                        return sel;
      -                    }
      -                }
      -            }
      -            if (action == "deleteAll") {
      -                cachedRangySelections.length = 0;
      -            }
      -            return null;
      -        }
      -
      -        var getSelection = function(win) {
      -            // Check if the parameter is a Rangy Selection object
      -            if (win && win instanceof WrappedSelection) {
      -                win.refresh();
      -                return win;
      -            }
      -
      -            win = getWindow(win, "getNativeSelection");
      -
      -            var sel = actOnCachedSelection(win);
      -            var nativeSel = getNativeSelection(win), docSel = implementsDocSelection ? getDocSelection(win) : null;
      -            if (sel) {
      -                sel.nativeSelection = nativeSel;
      -                sel.docSelection = docSel;
      -                sel.refresh();
      -            } else {
      -                sel = new WrappedSelection(nativeSel, docSel, win);
      -                cachedRangySelections.push( { win: win, selection: sel } );
      -            }
      -            return sel;
      -        };
      -
      -        api.getSelection = getSelection;
      -
      -        api.getIframeSelection = function(iframeEl) {
      -            module.deprecationNotice("getIframeSelection()", "getSelection(iframeEl)");
      -            return api.getSelection(dom.getIframeWindow(iframeEl));
      -        };
      -
      -        var selProto = WrappedSelection.prototype;
      -
      -        function createControlSelection(sel, ranges) {
      -            // Ensure that the selection becomes of type "Control"
      -            var doc = getDocument(ranges[0].startContainer);
      -            var controlRange = getBody(doc).createControlRange();
      -            for (var i = 0, el, len = ranges.length; i < len; ++i) {
      -                el = getSingleElementFromRange(ranges[i]);
      -                try {
      -                    controlRange.add(el);
      -                } catch (ex) {
      -                    throw module.createError("setRanges(): Element within one of the specified Ranges could not be added to control selection (does it have layout?)");
      -                }
      -            }
      -            controlRange.select();
      -
      -            // Update the wrapped selection based on what's now in the native selection
      -            updateControlSelection(sel);
      -        }
      -
      -        // Selecting a range
      -        if (!useDocumentSelection && selectionHasAnchorAndFocus && util.areHostMethods(testSelection, ["removeAllRanges", "addRange"])) {
      -            selProto.removeAllRanges = function() {
      -                this.nativeSelection.removeAllRanges();
      -                updateEmptySelection(this);
      -            };
      -
      -            var addRangeBackward = function(sel, range) {
      -                addRangeBackwardToNative(sel.nativeSelection, range);
      -                sel.refresh();
      -            };
      -
      -            if (selectionHasRangeCount) {
      -                selProto.addRange = function(range, direction) {
      -                    if (implementsControlRange && implementsDocSelection && this.docSelection.type == CONTROL) {
      -                        addRangeToControlSelection(this, range);
      -                    } else {
      -                        if (isDirectionBackward(direction) && selectionHasExtend) {
      -                            addRangeBackward(this, range);
      -                        } else {
      -                            var previousRangeCount;
      -                            if (selectionSupportsMultipleRanges) {
      -                                previousRangeCount = this.rangeCount;
      -                            } else {
      -                                this.removeAllRanges();
      -                                previousRangeCount = 0;
      -                            }
      -                            // Clone the native range so that changing the selected range does not affect the selection.
      -                            // This is contrary to the spec but is the only way to achieve consistency between browsers. See
      -                            // issue 80.
      -                            this.nativeSelection.addRange(getNativeRange(range).cloneRange());
      -
      -                            // Check whether adding the range was successful
      -                            this.rangeCount = this.nativeSelection.rangeCount;
      -
      -                            if (this.rangeCount == previousRangeCount + 1) {
      -                                // The range was added successfully
      -
      -                                // Check whether the range that we added to the selection is reflected in the last range extracted from
      -                                // the selection
      -                                if (api.config.checkSelectionRanges) {
      -                                    var nativeRange = getSelectionRangeAt(this.nativeSelection, this.rangeCount - 1);
      -                                    if (nativeRange && !rangesEqual(nativeRange, range)) {
      -                                        // Happens in WebKit with, for example, a selection placed at the start of a text node
      -                                        range = new WrappedRange(nativeRange);
      -                                    }
      -                                }
      -                                this._ranges[this.rangeCount - 1] = range;
      -                                updateAnchorAndFocusFromRange(this, range, selectionIsBackward(this.nativeSelection));
      -                                this.isCollapsed = selectionIsCollapsed(this);
      -                            } else {
      -                                // The range was not added successfully. The simplest thing is to refresh
      -                                this.refresh();
      -                            }
      -                        }
      -                    }
      -                };
      -            } else {
      -                selProto.addRange = function(range, direction) {
      -                    if (isDirectionBackward(direction) && selectionHasExtend) {
      -                        addRangeBackward(this, range);
      -                    } else {
      -                        this.nativeSelection.addRange(getNativeRange(range));
      -                        this.refresh();
      -                    }
      -                };
      -            }
      -
      -            selProto.setRanges = function(ranges) {
      -                if (implementsControlRange && implementsDocSelection && ranges.length > 1) {
      -                    createControlSelection(this, ranges);
      -                } else {
      -                    this.removeAllRanges();
      -                    for (var i = 0, len = ranges.length; i < len; ++i) {
      -                        this.addRange(ranges[i]);
      -                    }
      -                }
      -            };
      -        } else if (isHostMethod(testSelection, "empty") && isHostMethod(testRange, "select") &&
      -                   implementsControlRange && useDocumentSelection) {
      -
      -            selProto.removeAllRanges = function() {
      -                // Added try/catch as fix for issue #21
      -                try {
      -                    this.docSelection.empty();
      -
      -                    // Check for empty() not working (issue #24)
      -                    if (this.docSelection.type != "None") {
      -                        // Work around failure to empty a control selection by instead selecting a TextRange and then
      -                        // calling empty()
      -                        var doc;
      -                        if (this.anchorNode) {
      -                            doc = getDocument(this.anchorNode);
      -                        } else if (this.docSelection.type == CONTROL) {
      -                            var controlRange = this.docSelection.createRange();
      -                            if (controlRange.length) {
      -                                doc = getDocument( controlRange.item(0) );
      -                            }
      -                        }
      -                        if (doc) {
      -                            var textRange = getBody(doc).createTextRange();
      -                            textRange.select();
      -                            this.docSelection.empty();
      -                        }
      -                    }
      -                } catch(ex) {}
      -                updateEmptySelection(this);
      -            };
      -
      -            selProto.addRange = function(range) {
      -                if (this.docSelection.type == CONTROL) {
      -                    addRangeToControlSelection(this, range);
      -                } else {
      -                    api.WrappedTextRange.rangeToTextRange(range).select();
      -                    this._ranges[0] = range;
      -                    this.rangeCount = 1;
      -                    this.isCollapsed = this._ranges[0].collapsed;
      -                    updateAnchorAndFocusFromRange(this, range, false);
      -                }
      -            };
      -
      -            selProto.setRanges = function(ranges) {
      -                this.removeAllRanges();
      -                var rangeCount = ranges.length;
      -                if (rangeCount > 1) {
      -                    createControlSelection(this, ranges);
      -                } else if (rangeCount) {
      -                    this.addRange(ranges[0]);
      -                }
      -            };
      -        } else {
      -            module.fail("No means of selecting a Range or TextRange was found");
      -            return false;
      -        }
      -
      -        selProto.getRangeAt = function(index) {
      -            if (index < 0 || index >= this.rangeCount) {
      -                throw new DOMException("INDEX_SIZE_ERR");
      -            } else {
      -                // Clone the range to preserve selection-range independence. See issue 80.
      -                return this._ranges[index].cloneRange();
      -            }
      -        };
      -
      -        var refreshSelection;
      -
      -        if (useDocumentSelection) {
      -            refreshSelection = function(sel) {
      -                var range;
      -                if (api.isSelectionValid(sel.win)) {
      -                    range = sel.docSelection.createRange();
      -                } else {
      -                    range = getBody(sel.win.document).createTextRange();
      -                    range.collapse(true);
      -                }
      -
      -                if (sel.docSelection.type == CONTROL) {
      -                    updateControlSelection(sel);
      -                } else if (isTextRange(range)) {
      -                    updateFromTextRange(sel, range);
      -                } else {
      -                    updateEmptySelection(sel);
      -                }
      -            };
      -        } else if (isHostMethod(testSelection, "getRangeAt") && typeof testSelection.rangeCount == NUMBER) {
      -            refreshSelection = function(sel) {
      -                if (implementsControlRange && implementsDocSelection && sel.docSelection.type == CONTROL) {
      -                    updateControlSelection(sel);
      -                } else {
      -                    sel._ranges.length = sel.rangeCount = sel.nativeSelection.rangeCount;
      -                    if (sel.rangeCount) {
      -                        for (var i = 0, len = sel.rangeCount; i < len; ++i) {
      -                            sel._ranges[i] = new api.WrappedRange(sel.nativeSelection.getRangeAt(i));
      -                        }
      -                        updateAnchorAndFocusFromRange(sel, sel._ranges[sel.rangeCount - 1], selectionIsBackward(sel.nativeSelection));
      -                        sel.isCollapsed = selectionIsCollapsed(sel);
      -                    } else {
      -                        updateEmptySelection(sel);
      -                    }
      -                }
      -            };
      -        } else if (selectionHasAnchorAndFocus && typeof testSelection.isCollapsed == BOOLEAN && typeof testRange.collapsed == BOOLEAN && features.implementsDomRange) {
      -            refreshSelection = function(sel) {
      -                var range, nativeSel = sel.nativeSelection;
      -                if (nativeSel.anchorNode) {
      -                    range = getSelectionRangeAt(nativeSel, 0);
      -                    sel._ranges = [range];
      -                    sel.rangeCount = 1;
      -                    updateAnchorAndFocusFromNativeSelection(sel);
      -                    sel.isCollapsed = selectionIsCollapsed(sel);
      -                } else {
      -                    updateEmptySelection(sel);
      -                }
      -            };
      -        } else {
      -            module.fail("No means of obtaining a Range or TextRange from the user's selection was found");
      -            return false;
      -        }
      -
      -        selProto.refresh = function(checkForChanges) {
      -            var oldRanges = checkForChanges ? this._ranges.slice(0) : null;
      -            var oldAnchorNode = this.anchorNode, oldAnchorOffset = this.anchorOffset;
      -
      -            refreshSelection(this);
      -            if (checkForChanges) {
      -                // Check the range count first
      -                var i = oldRanges.length;
      -                if (i != this._ranges.length) {
      -                    return true;
      -                }
      -
      -                // Now check the direction. Checking the anchor position is the same is enough since we're checking all the
      -                // ranges after this
      -                if (this.anchorNode != oldAnchorNode || this.anchorOffset != oldAnchorOffset) {
      -                    return true;
      -                }
      -
      -                // Finally, compare each range in turn
      -                while (i--) {
      -                    if (!rangesEqual(oldRanges[i], this._ranges[i])) {
      -                        return true;
      -                    }
      -                }
      -                return false;
      -            }
      -        };
      -
      -        // Removal of a single range
      -        var removeRangeManually = function(sel, range) {
      -            var ranges = sel.getAllRanges();
      -            sel.removeAllRanges();
      -            for (var i = 0, len = ranges.length; i < len; ++i) {
      -                if (!rangesEqual(range, ranges[i])) {
      -                    sel.addRange(ranges[i]);
      -                }
      -            }
      -            if (!sel.rangeCount) {
      -                updateEmptySelection(sel);
      -            }
      -        };
      -
      -        if (implementsControlRange && implementsDocSelection) {
      -            selProto.removeRange = function(range) {
      -                if (this.docSelection.type == CONTROL) {
      -                    var controlRange = this.docSelection.createRange();
      -                    var rangeElement = getSingleElementFromRange(range);
      -
      -                    // Create a new ControlRange containing all the elements in the selected ControlRange minus the
      -                    // element contained by the supplied range
      -                    var doc = getDocument(controlRange.item(0));
      -                    var newControlRange = getBody(doc).createControlRange();
      -                    var el, removed = false;
      -                    for (var i = 0, len = controlRange.length; i < len; ++i) {
      -                        el = controlRange.item(i);
      -                        if (el !== rangeElement || removed) {
      -                            newControlRange.add(controlRange.item(i));
      -                        } else {
      -                            removed = true;
      -                        }
      -                    }
      -                    newControlRange.select();
      -
      -                    // Update the wrapped selection based on what's now in the native selection
      -                    updateControlSelection(this);
      -                } else {
      -                    removeRangeManually(this, range);
      -                }
      -            };
      -        } else {
      -            selProto.removeRange = function(range) {
      -                removeRangeManually(this, range);
      -            };
      -        }
      -
      -        // Detecting if a selection is backward
      -        var selectionIsBackward;
      -        if (!useDocumentSelection && selectionHasAnchorAndFocus && features.implementsDomRange) {
      -            selectionIsBackward = winSelectionIsBackward;
      -
      -            selProto.isBackward = function() {
      -                return selectionIsBackward(this);
      -            };
      -        } else {
      -            selectionIsBackward = selProto.isBackward = function() {
      -                return false;
      -            };
      -        }
      -
      -        // Create an alias for backwards compatibility. From 1.3, everything is "backward" rather than "backwards"
      -        selProto.isBackwards = selProto.isBackward;
      -
      -        // Selection stringifier
      -        // This is conformant to the old HTML5 selections draft spec but differs from WebKit and Mozilla's implementation.
      -        // The current spec does not yet define this method.
      -        selProto.toString = function() {
      -            var rangeTexts = [];
      -            for (var i = 0, len = this.rangeCount; i < len; ++i) {
      -                rangeTexts[i] = "" + this._ranges[i];
      -            }
      -            return rangeTexts.join("");
      -        };
      -
      -        function assertNodeInSameDocument(sel, node) {
      -            if (sel.win.document != getDocument(node)) {
      -                throw new DOMException("WRONG_DOCUMENT_ERR");
      -            }
      -        }
      -
      -        // No current browser conforms fully to the spec for this method, so Rangy's own method is always used
      -        selProto.collapse = function(node, offset) {
      -            assertNodeInSameDocument(this, node);
      -            var range = api.createRange(node);
      -            range.collapseToPoint(node, offset);
      -            this.setSingleRange(range);
      -            this.isCollapsed = true;
      -        };
      -
      -        selProto.collapseToStart = function() {
      -            if (this.rangeCount) {
      -                var range = this._ranges[0];
      -                this.collapse(range.startContainer, range.startOffset);
      -            } else {
      -                throw new DOMException("INVALID_STATE_ERR");
      -            }
      -        };
      -
      -        selProto.collapseToEnd = function() {
      -            if (this.rangeCount) {
      -                var range = this._ranges[this.rangeCount - 1];
      -                this.collapse(range.endContainer, range.endOffset);
      -            } else {
      -                throw new DOMException("INVALID_STATE_ERR");
      -            }
      -        };
      -
      -        // The spec is very specific on how selectAllChildren should be implemented so the native implementation is
      -        // never used by Rangy.
      -        selProto.selectAllChildren = function(node) {
      -            assertNodeInSameDocument(this, node);
      -            var range = api.createRange(node);
      -            range.selectNodeContents(node);
      -            this.setSingleRange(range);
      -        };
      -
      -        selProto.deleteFromDocument = function() {
      -            // Sepcial behaviour required for IE's control selections
      -            if (implementsControlRange && implementsDocSelection && this.docSelection.type == CONTROL) {
      -                var controlRange = this.docSelection.createRange();
      -                var element;
      -                while (controlRange.length) {
      -                    element = controlRange.item(0);
      -                    controlRange.remove(element);
      -                    element.parentNode.removeChild(element);
      -                }
      -                this.refresh();
      -            } else if (this.rangeCount) {
      -                var ranges = this.getAllRanges();
      -                if (ranges.length) {
      -                    this.removeAllRanges();
      -                    for (var i = 0, len = ranges.length; i < len; ++i) {
      -                        ranges[i].deleteContents();
      -                    }
      -                    // The spec says nothing about what the selection should contain after calling deleteContents on each
      -                    // range. Firefox moves the selection to where the final selected range was, so we emulate that
      -                    this.addRange(ranges[len - 1]);
      -                }
      -            }
      -        };
      -
      -        // The following are non-standard extensions
      -        selProto.eachRange = function(func, returnValue) {
      -            for (var i = 0, len = this._ranges.length; i < len; ++i) {
      -                if ( func( this.getRangeAt(i) ) ) {
      -                    return returnValue;
      -                }
      -            }
      -        };
      -
      -        selProto.getAllRanges = function() {
      -            var ranges = [];
      -            this.eachRange(function(range) {
      -                ranges.push(range);
      -            });
      -            return ranges;
      -        };
      -
      -        selProto.setSingleRange = function(range, direction) {
      -            this.removeAllRanges();
      -            this.addRange(range, direction);
      -        };
      -
      -        selProto.callMethodOnEachRange = function(methodName, params) {
      -            var results = [];
      -            this.eachRange( function(range) {
      -                results.push( range[methodName].apply(range, params) );
      -            } );
      -            return results;
      -        };
      -        
      -        function createStartOrEndSetter(isStart) {
      -            return function(node, offset) {
      -                var range;
      -                if (this.rangeCount) {
      -                    range = this.getRangeAt(0);
      -                    range["set" + (isStart ? "Start" : "End")](node, offset);
      -                } else {
      -                    range = api.createRange(this.win.document);
      -                    range.setStartAndEnd(node, offset);
      -                }
      -                this.setSingleRange(range, this.isBackward());
      -            };
      -        }
      -
      -        selProto.setStart = createStartOrEndSetter(true);
      -        selProto.setEnd = createStartOrEndSetter(false);
      -        
      -        // Add select() method to Range prototype. Any existing selection will be removed.
      -        api.rangePrototype.select = function(direction) {
      -            getSelection( this.getDocument() ).setSingleRange(this, direction);
      -        };
      -
      -        selProto.changeEachRange = function(func) {
      -            var ranges = [];
      -            var backward = this.isBackward();
      -
      -            this.eachRange(function(range) {
      -                func(range);
      -                ranges.push(range);
      -            });
      -
      -            this.removeAllRanges();
      -            if (backward && ranges.length == 1) {
      -                this.addRange(ranges[0], "backward");
      -            } else {
      -                this.setRanges(ranges);
      -            }
      -        };
      -
      -        selProto.containsNode = function(node, allowPartial) {
      -            return this.eachRange( function(range) {
      -                return range.containsNode(node, allowPartial);
      -            }, true ) || false;
      -        };
      -
      -        selProto.getBookmark = function(containerNode) {
      -            return {
      -                backward: this.isBackward(),
      -                rangeBookmarks: this.callMethodOnEachRange("getBookmark", [containerNode])
      -            };
      -        };
      -
      -        selProto.moveToBookmark = function(bookmark) {
      -            var selRanges = [];
      -            for (var i = 0, rangeBookmark, range; rangeBookmark = bookmark.rangeBookmarks[i++]; ) {
      -                range = api.createRange(this.win);
      -                range.moveToBookmark(rangeBookmark);
      -                selRanges.push(range);
      -            }
      -            if (bookmark.backward) {
      -                this.setSingleRange(selRanges[0], "backward");
      -            } else {
      -                this.setRanges(selRanges);
      -            }
      -        };
      -
      -        selProto.toHtml = function() {
      -            var rangeHtmls = [];
      -            this.eachRange(function(range) {
      -                rangeHtmls.push( DomRange.toHtml(range) );
      -            });
      -            return rangeHtmls.join("");
      -        };
      -
      -        if (features.implementsTextRange) {
      -            selProto.getNativeTextRange = function() {
      -                var sel, textRange;
      -                if ( (sel = this.docSelection) ) {
      -                    var range = sel.createRange();
      -                    if (isTextRange(range)) {
      -                        return range;
      -                    } else {
      -                        throw module.createError("getNativeTextRange: selection is a control selection"); 
      -                    }
      -                } else if (this.rangeCount > 0) {
      -                    return api.WrappedTextRange.rangeToTextRange( this.getRangeAt(0) );
      -                } else {
      -                    throw module.createError("getNativeTextRange: selection contains no range");
      -                }
      -            };
      -        }
      -
      -        function inspect(sel) {
      -            var rangeInspects = [];
      -            var anchor = new DomPosition(sel.anchorNode, sel.anchorOffset);
      -            var focus = new DomPosition(sel.focusNode, sel.focusOffset);
      -            var name = (typeof sel.getName == "function") ? sel.getName() : "Selection";
      -
      -            if (typeof sel.rangeCount != "undefined") {
      -                for (var i = 0, len = sel.rangeCount; i < len; ++i) {
      -                    rangeInspects[i] = DomRange.inspect(sel.getRangeAt(i));
      -                }
      -            }
      -            return "[" + name + "(Ranges: " + rangeInspects.join(", ") +
      -                    ")(anchor: " + anchor.inspect() + ", focus: " + focus.inspect() + "]";
      -        }
      -
      -        selProto.getName = function() {
      -            return "WrappedSelection";
      -        };
      -
      -        selProto.inspect = function() {
      -            return inspect(this);
      -        };
      -
      -        selProto.detach = function() {
      -            actOnCachedSelection(this.win, "delete");
      -            deleteProperties(this);
      -        };
      -
      -        WrappedSelection.detachAll = function() {
      -            actOnCachedSelection(null, "deleteAll");
      -        };
      -
      -        WrappedSelection.inspect = inspect;
      -        WrappedSelection.isDirectionBackward = isDirectionBackward;
      -
      -        api.Selection = WrappedSelection;
      -
      -        api.selectionPrototype = selProto;
      -
      -        api.addShimListener(function(win) {
      -            if (typeof win.getSelection == "undefined") {
      -                win.getSelection = function() {
      -                    return getSelection(win);
      -                };
      -            }
      -            win = null;
      -        });
      -    });
      -    
      -
      -    /*----------------------------------------------------------------------------------------------------------------*/
      -
      -    return api;
      -}, this);;/**
      - * Selection save and restore module for Rangy.
      - * Saves and restores user selections using marker invisible elements in the DOM.
      - *
      - * Part of Rangy, a cross-browser JavaScript range and selection library
      - * http://code.google.com/p/rangy/
      - *
      - * Depends on Rangy core.
      - *
      - * Copyright 2014, Tim Down
      - * Licensed under the MIT license.
      - * Version: 1.3alpha.20140804
      - * Build date: 4 August 2014
      - */
      -(function(factory, global) {
      -    if (typeof define == "function" && define.amd) {
      -        // AMD. Register as an anonymous module with a dependency on Rangy.
      -        define(["rangy"], factory);
      -        /*
      -         } else if (typeof exports == "object") {
      -         // Node/CommonJS style for Browserify
      -         module.exports = factory;
      -         */
      -    } else {
      -        // No AMD or CommonJS support so we use the rangy global variable
      -        factory(global.rangy);
      -    }
      -})(function(rangy) {
      -    rangy.createModule("SaveRestore", ["WrappedRange"], function(api, module) {
      -        var dom = api.dom;
      -
      -        var markerTextChar = "\ufeff";
      -
      -        function gEBI(id, doc) {
      -            return (doc || document).getElementById(id);
      -        }
      -
      -        function insertRangeBoundaryMarker(range, atStart) {
      -            var markerId = "selectionBoundary_" + (+new Date()) + "_" + ("" + Math.random()).slice(2);
      -            var markerEl;
      -            var doc = dom.getDocument(range.startContainer);
      -
      -            // Clone the Range and collapse to the appropriate boundary point
      -            var boundaryRange = range.cloneRange();
      -            boundaryRange.collapse(atStart);
      -
      -            // Create the marker element containing a single invisible character using DOM methods and insert it
      -            markerEl = doc.createElement("span");
      -            markerEl.id = markerId;
      -            markerEl.style.lineHeight = "0";
      -            markerEl.style.display = "none";
      -            markerEl.className = "rangySelectionBoundary";
      -            markerEl.appendChild(doc.createTextNode(markerTextChar));
      -
      -            boundaryRange.insertNode(markerEl);
      -            return markerEl;
      -        }
      -
      -        function setRangeBoundary(doc, range, markerId, atStart) {
      -            var markerEl = gEBI(markerId, doc);
      -            if (markerEl) {
      -                range[atStart ? "setStartBefore" : "setEndBefore"](markerEl);
      -                markerEl.parentNode.removeChild(markerEl);
      -            } else {
      -                module.warn("Marker element has been removed. Cannot restore selection.");
      -            }
      -        }
      -
      -        function compareRanges(r1, r2) {
      -            return r2.compareBoundaryPoints(r1.START_TO_START, r1);
      -        }
      -
      -        function saveRange(range, backward) {
      -            var startEl, endEl, doc = api.DomRange.getRangeDocument(range), text = range.toString();
      -
      -            if (range.collapsed) {
      -                endEl = insertRangeBoundaryMarker(range, false);
      -                return {
      -                    document: doc,
      -                    markerId: endEl.id,
      -                    collapsed: true
      -                };
      -            } else {
      -                endEl = insertRangeBoundaryMarker(range, false);
      -                startEl = insertRangeBoundaryMarker(range, true);
      -
      -                return {
      -                    document: doc,
      -                    startMarkerId: startEl.id,
      -                    endMarkerId: endEl.id,
      -                    collapsed: false,
      -                    backward: backward,
      -                    toString: function() {
      -                        return "original text: '" + text + "', new text: '" + range.toString() + "'";
      -                    }
      -                };
      -            }
      -        }
      -
      -        function restoreRange(rangeInfo, normalize) {
      -            var doc = rangeInfo.document;
      -            if (typeof normalize == "undefined") {
      -                normalize = true;
      -            }
      -            var range = api.createRange(doc);
      -            if (rangeInfo.collapsed) {
      -                var markerEl = gEBI(rangeInfo.markerId, doc);
      -                if (markerEl) {
      -                    markerEl.style.display = "inline";
      -                    var previousNode = markerEl.previousSibling;
      -
      -                    // Workaround for issue 17
      -                    if (previousNode && previousNode.nodeType == 3) {
      -                        markerEl.parentNode.removeChild(markerEl);
      -                        range.collapseToPoint(previousNode, previousNode.length);
      -                    } else {
      -                        range.collapseBefore(markerEl);
      -                        markerEl.parentNode.removeChild(markerEl);
      -                    }
      -                } else {
      -                    module.warn("Marker element has been removed. Cannot restore selection.");
      -                }
      -            } else {
      -                setRangeBoundary(doc, range, rangeInfo.startMarkerId, true);
      -                setRangeBoundary(doc, range, rangeInfo.endMarkerId, false);
      -            }
      -
      -            if (normalize) {
      -                range.normalizeBoundaries();
      -            }
      -
      -            return range;
      -        }
      -
      -        function saveRanges(ranges, backward) {
      -            var rangeInfos = [], range, doc;
      -
      -            // Order the ranges by position within the DOM, latest first, cloning the array to leave the original untouched
      -            ranges = ranges.slice(0);
      -            ranges.sort(compareRanges);
      -
      -            for (var i = 0, len = ranges.length; i < len; ++i) {
      -                rangeInfos[i] = saveRange(ranges[i], backward);
      -            }
      -
      -            // Now that all the markers are in place and DOM manipulation over, adjust each range's boundaries to lie
      -            // between its markers
      -            for (i = len - 1; i >= 0; --i) {
      -                range = ranges[i];
      -                doc = api.DomRange.getRangeDocument(range);
      -                if (range.collapsed) {
      -                    range.collapseAfter(gEBI(rangeInfos[i].markerId, doc));
      -                } else {
      -                    range.setEndBefore(gEBI(rangeInfos[i].endMarkerId, doc));
      -                    range.setStartAfter(gEBI(rangeInfos[i].startMarkerId, doc));
      -                }
      -            }
      -
      -            return rangeInfos;
      -        }
      -
      -        function saveSelection(win) {
      -            if (!api.isSelectionValid(win)) {
      -                module.warn("Cannot save selection. This usually happens when the selection is collapsed and the selection document has lost focus.");
      -                return null;
      -            }
      -            var sel = api.getSelection(win);
      -            var ranges = sel.getAllRanges();
      -            var backward = (ranges.length == 1 && sel.isBackward());
      -
      -            var rangeInfos = saveRanges(ranges, backward);
      -
      -            // Ensure current selection is unaffected
      -            if (backward) {
      -                sel.setSingleRange(ranges[0], "backward");
      -            } else {
      -                sel.setRanges(ranges);
      -            }
      -
      -            return {
      -                win: win,
      -                rangeInfos: rangeInfos,
      -                restored: false
      -            };
      -        }
      -
      -        function restoreRanges(rangeInfos) {
      -            var ranges = [];
      -
      -            // Ranges are in reverse order of appearance in the DOM. We want to restore earliest first to avoid
      -            // normalization affecting previously restored ranges.
      -            var rangeCount = rangeInfos.length;
      -
      -            for (var i = rangeCount - 1; i >= 0; i--) {
      -                ranges[i] = restoreRange(rangeInfos[i], true);
      -            }
      -
      -            return ranges;
      -        }
      -
      -        function restoreSelection(savedSelection, preserveDirection) {
      -            if (!savedSelection.restored) {
      -                var rangeInfos = savedSelection.rangeInfos;
      -                var sel = api.getSelection(savedSelection.win);
      -                var ranges = restoreRanges(rangeInfos), rangeCount = rangeInfos.length;
      -
      -                if (rangeCount == 1 && preserveDirection && api.features.selectionHasExtend && rangeInfos[0].backward) {
      -                    sel.removeAllRanges();
      -                    sel.addRange(ranges[0], true);
      -                } else {
      -                    sel.setRanges(ranges);
      -                }
      -
      -                savedSelection.restored = true;
      -            }
      -        }
      -
      -        function removeMarkerElement(doc, markerId) {
      -            var markerEl = gEBI(markerId, doc);
      -            if (markerEl) {
      -                markerEl.parentNode.removeChild(markerEl);
      -            }
      -        }
      -
      -        function removeMarkers(savedSelection) {
      -            var rangeInfos = savedSelection.rangeInfos;
      -            for (var i = 0, len = rangeInfos.length, rangeInfo; i < len; ++i) {
      -                rangeInfo = rangeInfos[i];
      -                if (rangeInfo.collapsed) {
      -                    removeMarkerElement(savedSelection.doc, rangeInfo.markerId);
      -                } else {
      -                    removeMarkerElement(savedSelection.doc, rangeInfo.startMarkerId);
      -                    removeMarkerElement(savedSelection.doc, rangeInfo.endMarkerId);
      -                }
      -            }
      -        }
      -
      -        api.util.extend(api, {
      -            saveRange: saveRange,
      -            restoreRange: restoreRange,
      -            saveRanges: saveRanges,
      -            restoreRanges: restoreRanges,
      -            saveSelection: saveSelection,
      -            restoreSelection: restoreSelection,
      -            removeMarkerElement: removeMarkerElement,
      -            removeMarkers: removeMarkers
      -        });
      -    });
      -    
      -}, this);;/*
      -	Base.js, version 1.1a
      -	Copyright 2006-2010, Dean Edwards
      -	License: http://www.opensource.org/licenses/mit-license.php
      -*/
      -
      -var Base = function() {
      -	// dummy
      -};
      -
      -Base.extend = function(_instance, _static) { // subclass
      -	var extend = Base.prototype.extend;
      -	
      -	// build the prototype
      -	Base._prototyping = true;
      -	var proto = new this;
      -	extend.call(proto, _instance);
      -  proto.base = function() {
      -    // call this method from any other method to invoke that method's ancestor
      -  };
      -	delete Base._prototyping;
      -	
      -	// create the wrapper for the constructor function
      -	//var constructor = proto.constructor.valueOf(); //-dean
      -	var constructor = proto.constructor;
      -	var klass = proto.constructor = function() {
      -		if (!Base._prototyping) {
      -			if (this._constructing || this.constructor == klass) { // instantiation
      -				this._constructing = true;
      -				constructor.apply(this, arguments);
      -				delete this._constructing;
      -			} else if (arguments[0] != null) { // casting
      -				return (arguments[0].extend || extend).call(arguments[0], proto);
      -			}
      -		}
      -	};
      -	
      -	// build the class interface
      -	klass.ancestor = this;
      -	klass.extend = this.extend;
      -	klass.forEach = this.forEach;
      -	klass.implement = this.implement;
      -	klass.prototype = proto;
      -	klass.toString = this.toString;
      -	klass.valueOf = function(type) {
      -		//return (type == "object") ? klass : constructor; //-dean
      -		return (type == "object") ? klass : constructor.valueOf();
      -	};
      -	extend.call(klass, _static);
      -	// class initialisation
      -	if (typeof klass.init == "function") klass.init();
      -	return klass;
      -};
      -
      -Base.prototype = {	
      -	extend: function(source, value) {
      -		if (arguments.length > 1) { // extending with a name/value pair
      -			var ancestor = this[source];
      -			if (ancestor && (typeof value == "function") && // overriding a method?
      -				// the valueOf() comparison is to avoid circular references
      -				(!ancestor.valueOf || ancestor.valueOf() != value.valueOf()) &&
      -				/\bbase\b/.test(value)) {
      -				// get the underlying method
      -				var method = value.valueOf();
      -				// override
      -				value = function() {
      -					var previous = this.base || Base.prototype.base;
      -					this.base = ancestor;
      -					var returnValue = method.apply(this, arguments);
      -					this.base = previous;
      -					return returnValue;
      -				};
      -				// point to the underlying method
      -				value.valueOf = function(type) {
      -					return (type == "object") ? value : method;
      -				};
      -				value.toString = Base.toString;
      -			}
      -			this[source] = value;
      -		} else if (source) { // extending with an object literal
      -			var extend = Base.prototype.extend;
      -			// if this object has a customised extend method then use it
      -			if (!Base._prototyping && typeof this != "function") {
      -				extend = this.extend || extend;
      -			}
      -			var proto = {toSource: null};
      -			// do the "toString" and other methods manually
      -			var hidden = ["constructor", "toString", "valueOf"];
      -			// if we are prototyping then include the constructor
      -			var i = Base._prototyping ? 0 : 1;
      -			while (key = hidden[i++]) {
      -				if (source[key] != proto[key]) {
      -					extend.call(this, key, source[key]);
      -
      -				}
      -			}
      -			// copy each of the source object's properties to this object
      -			for (var key in source) {
      -				if (!proto[key]) extend.call(this, key, source[key]);
      -			}
      -		}
      -		return this;
      -	}
      -};
      -
      -// initialise
      -Base = Base.extend({
      -	constructor: function() {
      -		this.extend(arguments[0]);
      -	}
      -}, {
      -	ancestor: Object,
      -	version: "1.1",
      -	
      -	forEach: function(object, block, context) {
      -		for (var key in object) {
      -			if (this.prototype[key] === undefined) {
      -				block.call(context, object[key], key, object);
      -			}
      -		}
      -	},
      -		
      -	implement: function() {
      -		for (var i = 0; i < arguments.length; i++) {
      -			if (typeof arguments[i] == "function") {
      -				// if it's a function, call it
      -				arguments[i](this.prototype);
      -			} else {
      -				// add the interface using the extend method
      -				this.prototype.extend(arguments[i]);
      -			}
      -		}
      -		return this;
      -	},
      -	
      -	toString: function() {
      -		return String(this.valueOf());
      -	}
      -});;/**
      - * Detect browser support for specific features
      - */
      -wysihtml5.browser = (function() {
      -  var userAgent   = navigator.userAgent,
      -      testElement = document.createElement("div"),
      -      // Browser sniffing is unfortunately needed since some behaviors are impossible to feature detect
      -      isGecko     = userAgent.indexOf("Gecko")        !== -1 && userAgent.indexOf("KHTML") === -1,
      -      isWebKit    = userAgent.indexOf("AppleWebKit/") !== -1,
      -      isChrome    = userAgent.indexOf("Chrome/")      !== -1,
      -      isOpera     = userAgent.indexOf("Opera/")       !== -1;
      -
      -  function iosVersion(userAgent) {
      -    return +((/ipad|iphone|ipod/.test(userAgent) && userAgent.match(/ os (\d+).+? like mac os x/)) || [undefined, 0])[1];
      -  }
      -
      -  function androidVersion(userAgent) {
      -    return +(userAgent.match(/android (\d+)/) || [undefined, 0])[1];
      -  }
      -
      -  function isIE(version, equation) {
      -    var rv = -1,
      -        re;
      -
      -    if (navigator.appName == 'Microsoft Internet Explorer') {
      -      re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
      -    } else if (navigator.appName == 'Netscape') {
      -      re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
      -    }
      -
      -    if (re && re.exec(navigator.userAgent) != null) {
      -      rv = parseFloat(RegExp.$1);
      -    }
      -
      -    if (rv === -1) { return false; }
      -    if (!version) { return true; }
      -    if (!equation) { return version === rv; }
      -    if (equation === "<") { return version < rv; }
      -    if (equation === ">") { return version > rv; }
      -    if (equation === "<=") { return version <= rv; }
      -    if (equation === ">=") { return version >= rv; }
      -  }
      -
      -  return {
      -    // Static variable needed, publicly accessible, to be able override it in unit tests
      -    USER_AGENT: userAgent,
      -
      -    /**
      -     * Exclude browsers that are not capable of displaying and handling
      -     * contentEditable as desired:
      -     *    - iPhone, iPad (tested iOS 4.2.2) and Android (tested 2.2) refuse to make contentEditables focusable
      -     *    - IE < 8 create invalid markup and crash randomly from time to time
      -     *
      -     * @return {Boolean}
      -     */
      -    supported: function() {
      -      var userAgent                   = this.USER_AGENT.toLowerCase(),
      -          // Essential for making html elements editable
      -          hasContentEditableSupport   = "contentEditable" in testElement,
      -          // Following methods are needed in order to interact with the contentEditable area
      -          hasEditingApiSupport        = document.execCommand && document.queryCommandSupported && document.queryCommandState,
      -          // document selector apis are only supported by IE 8+, Safari 4+, Chrome and Firefox 3.5+
      -          hasQuerySelectorSupport     = document.querySelector && document.querySelectorAll,
      -          // contentEditable is unusable in mobile browsers (tested iOS 4.2.2, Android 2.2, Opera Mobile, WebOS 3.05)
      -          isIncompatibleMobileBrowser = (this.isIos() && iosVersion(userAgent) < 5) || (this.isAndroid() && androidVersion(userAgent) < 4) || userAgent.indexOf("opera mobi") !== -1 || userAgent.indexOf("hpwos/") !== -1;
      -      return hasContentEditableSupport
      -        && hasEditingApiSupport
      -        && hasQuerySelectorSupport
      -        && !isIncompatibleMobileBrowser;
      -    },
      -
      -    isTouchDevice: function() {
      -      return this.supportsEvent("touchmove");
      -    },
      -
      -    isIos: function() {
      -      return (/ipad|iphone|ipod/i).test(this.USER_AGENT);
      -    },
      -
      -    isAndroid: function() {
      -      return this.USER_AGENT.indexOf("Android") !== -1;
      -    },
      -
      -    /**
      -     * Whether the browser supports sandboxed iframes
      -     * Currently only IE 6+ offers such feature