From 6c919ddee791ff6d799fcf930b441ecb21a56f23 Mon Sep 17 00:00:00 2001 From: zengwh <81383286@qq.com> Date: Fri, 25 Dec 2020 16:52:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC20201225?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E5=90=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 254 +- power-admin/pom.xml | 22 +- .../manage/interceptor/LoginInterceptor.java | 3 +- .../src/main/java/com/manage/test.java | 60 - power-admin/src/main/java/test.java | 132 - .../resources/config/applicationContext.xml | 36 +- .../src/main/resources/config/jdbc.properties | 35 +- power-admin/src/main/webapp/WEB-INF/web.xml | 38 +- .../build/bootstrap-less/.csscomb.json | 304 - .../build/bootstrap-less/.csslintrc | 19 - .../build/bootstrap-less/alerts.less | 73 - .../build/bootstrap-less/badges.less | 66 - .../build/bootstrap-less/bootstrap.less | 56 - .../build/bootstrap-less/breadcrumbs.less | 26 - .../build/bootstrap-less/button-groups.less | 244 - .../build/bootstrap-less/buttons.less | 166 - .../build/bootstrap-less/carousel.less | 270 - .../build/bootstrap-less/close.less | 34 - .../build/bootstrap-less/code.less | 69 - .../bootstrap-less/component-animations.less | 33 - .../build/bootstrap-less/dropdowns.less | 216 - .../build/bootstrap-less/forms.less | 613 - .../build/bootstrap-less/glyphicons.less | 305 - .../build/bootstrap-less/grid.less | 84 - .../build/bootstrap-less/input-groups.less | 171 - .../build/bootstrap-less/jumbotron.less | 54 - .../build/bootstrap-less/labels.less | 64 - .../build/bootstrap-less/list-group.less | 130 - .../build/bootstrap-less/media.less | 66 - .../build/bootstrap-less/mixins.less | 40 - .../build/bootstrap-less/mixins/alerts.less | 14 - .../mixins/background-variant.less | 9 - .../bootstrap-less/mixins/border-radius.less | 18 - .../build/bootstrap-less/mixins/buttons.less | 65 - .../bootstrap-less/mixins/center-block.less | 7 - .../build/bootstrap-less/mixins/clearfix.less | 22 - .../build/bootstrap-less/mixins/forms.less | 85 - .../bootstrap-less/mixins/gradients.less | 59 - .../bootstrap-less/mixins/grid-framework.less | 91 - .../build/bootstrap-less/mixins/grid.less | 122 - .../bootstrap-less/mixins/hide-text.less | 21 - .../build/bootstrap-less/mixins/image.less | 33 - .../build/bootstrap-less/mixins/labels.less | 12 - .../bootstrap-less/mixins/list-group.less | 30 - .../bootstrap-less/mixins/nav-divider.less | 10 - .../mixins/nav-vertical-align.less | 9 - .../build/bootstrap-less/mixins/opacity.less | 8 - .../bootstrap-less/mixins/pagination.less | 24 - .../build/bootstrap-less/mixins/panels.less | 24 - .../bootstrap-less/mixins/progress-bar.less | 10 - .../bootstrap-less/mixins/reset-filter.less | 8 - .../bootstrap-less/mixins/reset-text.less | 18 - .../build/bootstrap-less/mixins/resize.less | 6 - .../mixins/responsive-visibility.less | 15 - .../build/bootstrap-less/mixins/size.less | 10 - .../bootstrap-less/mixins/tab-focus.less | 9 - .../bootstrap-less/mixins/table-row.less | 28 - .../bootstrap-less/mixins/text-emphasis.less | 9 - .../bootstrap-less/mixins/text-overflow.less | 8 - .../mixins/vendor-prefixes.less | 227 - .../build/bootstrap-less/modals.less | 150 - .../build/bootstrap-less/navbar.less | 660 - .../build/bootstrap-less/navs.less | 242 - .../build/bootstrap-less/normalize.less | 424 - .../build/bootstrap-less/pager.less | 54 - .../build/bootstrap-less/pagination.less | 89 - .../build/bootstrap-less/panels.less | 271 - .../build/bootstrap-less/popovers.less | 131 - .../build/bootstrap-less/print.less | 101 - .../build/bootstrap-less/progress-bars.less | 87 - .../bootstrap-less/responsive-embed.less | 35 - .../bootstrap-less/responsive-utilities.less | 194 - .../build/bootstrap-less/scaffolding.less | 161 - .../build/bootstrap-less/tables.less | 234 - .../build/bootstrap-less/theme.less | 291 - .../build/bootstrap-less/thumbnails.less | 36 - .../build/bootstrap-less/tooltip.less | 101 - .../build/bootstrap-less/type.less | 302 - .../build/bootstrap-less/utilities.less | 55 - .../build/bootstrap-less/variables.less | 869 - .../build/bootstrap-less/wells.less | 29 - .../bootstrap-3.3.7/build/grunt/.jshintrc | 7 - .../static/bootstrap-3.3.7/build/js/.jscsrc | 42 - .../static/bootstrap-3.3.7/build/js/.jshintrc | 17 - .../bootstrap-3.3.7/build/js/BoxRefresh.js | 119 - .../bootstrap-3.3.7/build/js/BoxWidget.js | 176 - .../build/js/ControlSidebar.js | 138 - .../bootstrap-3.3.7/build/js/DirectChat.js | 66 - .../static/bootstrap-3.3.7/build/js/Layout.js | 178 - .../bootstrap-3.3.7/build/js/PushMenu.js | 176 - .../bootstrap-3.3.7/build/js/TodoList.js | 108 - .../static/bootstrap-3.3.7/build/js/Tree.js | 145 - .../bootstrap-3.3.7/build/less/.csslintrc | 23 - .../build/less/404_500_errors.less | 36 - .../build/less/AdminLTE-without-plugins.less | 55 - .../bootstrap-3.3.7/build/less/AdminLTE.less | 62 - .../bootstrap-3.3.7/build/less/alerts.less | 47 - .../build/less/bootstrap-social.less | 178 - .../bootstrap-3.3.7/build/less/boxes.less | 489 - .../bootstrap-3.3.7/build/less/buttons.less | 168 - .../bootstrap-3.3.7/build/less/callout.less | 48 - .../bootstrap-3.3.7/build/less/carousel.less | 18 - .../build/less/control-sidebar.less | 299 - .../bootstrap-3.3.7/build/less/core.less | 174 - .../build/less/datepicker.less | 22 - .../build/less/direct-chat.less | 194 - .../bootstrap-3.3.7/build/less/dropdown.less | 350 - .../bootstrap-3.3.7/build/less/forms.less | 108 - .../build/less/fullcalendar.less | 106 - .../bootstrap-3.3.7/build/less/header.less | 248 - .../bootstrap-3.3.7/build/less/info-box.less | 75 - .../bootstrap-3.3.7/build/less/invoice.less | 16 - .../bootstrap-3.3.7/build/less/labels.less | 28 - .../build/less/lockscreen.less | 73 - .../build/less/login_and_register.less | 52 - .../bootstrap-3.3.7/build/less/mailbox.less | 88 - .../build/less/miscellaneous.less | 606 - .../bootstrap-3.3.7/build/less/mixins.less | 312 - .../bootstrap-3.3.7/build/less/modal.less | 80 - .../bootstrap-3.3.7/build/less/navs.less | 232 - .../bootstrap-3.3.7/build/less/plugins.less | 5 - .../bootstrap-3.3.7/build/less/print.less | 54 - .../bootstrap-3.3.7/build/less/products.less | 45 - .../bootstrap-3.3.7/build/less/profile.less | 31 - .../build/less/progress-bars.less | 111 - .../bootstrap-3.3.7/build/less/select2.less | 127 - .../build/less/sidebar-mini.less | 167 - .../bootstrap-3.3.7/build/less/sidebar.less | 141 - .../build/less/skins/_all-skins.less | 13 - .../build/less/skins/skin-black-light.less | 65 - .../build/less/skins/skin-black.less | 74 - .../build/less/skins/skin-blue-light.less | 61 - .../build/less/skins/skin-blue.less | 58 - .../build/less/skins/skin-green-light.less | 55 - .../build/less/skins/skin-green.less | 55 - .../build/less/skins/skin-purple-light.less | 54 - .../build/less/skins/skin-purple.less | 54 - .../build/less/skins/skin-red-light.less | 54 - .../build/less/skins/skin-red.less | 54 - .../build/less/skins/skin-yellow-light.less | 54 - .../build/less/skins/skin-yellow.less | 54 - .../bootstrap-3.3.7/build/less/small-box.less | 89 - .../build/less/social-widgets.less | 78 - .../bootstrap-3.3.7/build/less/table.less | 71 - .../bootstrap-3.3.7/build/less/timeline.less | 110 - .../bootstrap-3.3.7/build/less/treeview.less | 30 - .../build/less/users-list.less | 42 - .../bootstrap-3.3.7/build/less/variables.less | 121 - .../build/include/adminlte-options.html | 125 - .../documentation/build/include/advice.html | 17 - .../documentation/build/include/browsers.html | 12 - .../build/include/components.html | 1545 -- .../build/include/dependencies.html | 10 - .../documentation/build/include/download.html | 48 - .../documentation/build/include/faq.html | 12 - .../build/include/implementations.html | 20 - .../build/include/introduction.html | 12 - .../documentation/build/include/layout.html | 92 - .../documentation/build/include/license.html | 10 - .../documentation/build/include/plugins.html | 47 - .../documentation/build/include/upgrade.html | 26 - .../documentation/build/index.html | 201 - .../bootstrap-3.3.7/documentation/docs.js | 74 - .../bootstrap-3.3.7/documentation/index.html | 2178 -- .../bootstrap-3.3.7/documentation/style.css | 261 - .../bootstrap-3.3.7/pages/UI/buttons.html | 1713 -- .../bootstrap-3.3.7/pages/UI/general.html | 1661 -- .../bootstrap-3.3.7/pages/UI/icons.html | 3035 --- .../bootstrap-3.3.7/pages/UI/modals.html | 911 - .../bootstrap-3.3.7/pages/UI/sliders.html | 821 - .../bootstrap-3.3.7/pages/UI/timeline.html | 913 - .../bootstrap-3.3.7/pages/calendar.html | 983 - .../bootstrap-3.3.7/pages/charts/chartjs.html | 922 - .../bootstrap-3.3.7/pages/charts/flot.html | 1132 -- .../bootstrap-3.3.7/pages/charts/inline.html | 1306 -- .../bootstrap-3.3.7/pages/charts/morris.html | 911 - .../bootstrap-3.3.7/pages/examples/404.html | 759 - .../bootstrap-3.3.7/pages/examples/500.html | 760 - .../bootstrap-3.3.7/pages/examples/blank.html | 664 - .../pages/examples/invoice-print.html | 173 - .../pages/examples/invoice.html | 889 - .../pages/examples/lockscreen.html | 77 - .../bootstrap-3.3.7/pages/examples/login.html | 97 - .../bootstrap-3.3.7/pages/examples/pace.html | 689 - .../pages/examples/profile.html | 1088 - .../pages/examples/register.html | 102 - .../bootstrap-3.3.7/pages/forms/advanced.html | 1230 -- .../bootstrap-3.3.7/pages/forms/editors.html | 811 - .../bootstrap-3.3.7/pages/forms/general.html | 1119 -- .../bootstrap-3.3.7/pages/layout/boxed.html | 657 - .../pages/layout/collapsed-sidebar.html | 663 - .../bootstrap-3.3.7/pages/layout/fixed.html | 663 - .../bootstrap-3.3.7/pages/layout/top-nav.html | 293 - .../pages/mailbox/compose.html | 760 - .../pages/mailbox/mailbox.html | 940 - .../pages/mailbox/read-mail.html | 815 - .../bootstrap-3.3.7/pages/tables/data.html | 1646 -- .../bootstrap-3.3.7/pages/tables/simple.html | 1059 - .../static/bootstrap-3.3.7/pages/widgets.html | 1791 -- .../bootstrap-slider/bootstrap-slider.js | 1576 -- .../plugins/bootstrap-slider/slider.css | 282 - .../bootstrap3-wysihtml5.all.js | 14975 -------------- .../bootstrap3-wysihtml5.all.min.js | 8 - .../bootstrap3-wysihtml5.css | 117 - .../bootstrap3-wysihtml5.min.css | 3 - .../bootstrap-3.3.7/plugins/iCheck/all.css | 61 - .../plugins/iCheck/flat/_all.css | 560 - .../plugins/iCheck/flat/aero.css | 56 - .../plugins/iCheck/flat/aero.png | Bin 1520 -> 0 bytes .../plugins/iCheck/flat/aero@2x.png | Bin 3218 -> 0 bytes .../plugins/iCheck/flat/blue.css | 56 - .../plugins/iCheck/flat/blue.png | Bin 1518 -> 0 bytes .../plugins/iCheck/flat/blue@2x.png | Bin 3217 -> 0 bytes .../plugins/iCheck/flat/flat.css | 56 - .../plugins/iCheck/flat/flat.png | Bin 1515 -> 0 bytes .../plugins/iCheck/flat/flat@2x.png | Bin 3217 -> 0 bytes .../plugins/iCheck/flat/green.css | 56 - .../plugins/iCheck/flat/green.png | Bin 1444 -> 0 bytes .../plugins/iCheck/flat/green@2x.png | Bin 3117 -> 0 bytes .../plugins/iCheck/flat/grey.css | 56 - .../plugins/iCheck/flat/grey.png | Bin 1516 -> 0 bytes .../plugins/iCheck/flat/grey@2x.png | Bin 3217 -> 0 bytes .../plugins/iCheck/flat/orange.css | 56 - .../plugins/iCheck/flat/orange.png | Bin 1518 -> 0 bytes .../plugins/iCheck/flat/orange@2x.png | Bin 3275 -> 0 bytes .../plugins/iCheck/flat/pink.css | 56 - .../plugins/iCheck/flat/pink.png | Bin 1522 -> 0 bytes .../plugins/iCheck/flat/pink@2x.png | Bin 3218 -> 0 bytes .../plugins/iCheck/flat/purple.css | 56 - .../plugins/iCheck/flat/purple.png | Bin 1519 -> 0 bytes .../plugins/iCheck/flat/purple@2x.png | Bin 3218 -> 0 bytes .../plugins/iCheck/flat/red.css | 56 - .../plugins/iCheck/flat/red.png | Bin 1516 -> 0 bytes .../plugins/iCheck/flat/red@2x.png | Bin 3276 -> 0 bytes .../plugins/iCheck/flat/yellow.css | 56 - .../plugins/iCheck/flat/yellow.png | Bin 1516 -> 0 bytes .../plugins/iCheck/flat/yellow@2x.png | Bin 3216 -> 0 bytes .../plugins/iCheck/futurico/futurico.css | 56 - .../plugins/iCheck/futurico/futurico.png | Bin 1734 -> 0 bytes .../plugins/iCheck/futurico/futurico@2x.png | Bin 3446 -> 0 bytes .../bootstrap-3.3.7/plugins/iCheck/icheck.js | 478 - .../plugins/iCheck/icheck.min.js | 10 - .../plugins/iCheck/line/_all.css | 740 - .../plugins/iCheck/line/aero.css | 74 - .../plugins/iCheck/line/blue.css | 74 - .../plugins/iCheck/line/green.css | 74 - .../plugins/iCheck/line/grey.css | 74 - .../plugins/iCheck/line/line.css | 74 - .../plugins/iCheck/line/line.png | Bin 588 -> 0 bytes .../plugins/iCheck/line/line@2x.png | Bin 1073 -> 0 bytes .../plugins/iCheck/line/orange.css | 74 - .../plugins/iCheck/line/pink.css | 74 - .../plugins/iCheck/line/purple.css | 74 - .../plugins/iCheck/line/red.css | 74 - .../plugins/iCheck/line/yellow.css | 74 - .../plugins/iCheck/minimal/_all.css | 557 - .../plugins/iCheck/minimal/aero.css | 62 - .../plugins/iCheck/minimal/aero.png | Bin 1151 -> 0 bytes .../plugins/iCheck/minimal/aero@2x.png | Bin 1409 -> 0 bytes .../plugins/iCheck/minimal/blue.css | 62 - .../plugins/iCheck/minimal/blue.png | Bin 1132 -> 0 bytes .../plugins/iCheck/minimal/blue@2x.png | Bin 1410 -> 0 bytes .../plugins/iCheck/minimal/green.css | 62 - .../plugins/iCheck/minimal/green.png | Bin 1143 -> 0 bytes .../plugins/iCheck/minimal/green@2x.png | Bin 1408 -> 0 bytes .../plugins/iCheck/minimal/grey.css | 62 - .../plugins/iCheck/minimal/grey.png | Bin 1142 -> 0 bytes .../plugins/iCheck/minimal/grey@2x.png | Bin 1407 -> 0 bytes .../plugins/iCheck/minimal/minimal.css | 62 - .../plugins/iCheck/minimal/minimal.png | Bin 1114 -> 0 bytes .../plugins/iCheck/minimal/minimal@2x.png | Bin 1410 -> 0 bytes .../plugins/iCheck/minimal/orange.css | 62 - .../plugins/iCheck/minimal/orange.png | Bin 1139 -> 0 bytes .../plugins/iCheck/minimal/orange@2x.png | Bin 1407 -> 0 bytes .../plugins/iCheck/minimal/pink.css | 62 - .../plugins/iCheck/minimal/pink.png | Bin 1150 -> 0 bytes .../plugins/iCheck/minimal/pink@2x.png | Bin 1409 -> 0 bytes .../plugins/iCheck/minimal/purple.css | 62 - .../plugins/iCheck/minimal/purple.png | Bin 1132 -> 0 bytes .../plugins/iCheck/minimal/purple@2x.png | Bin 1409 -> 0 bytes .../plugins/iCheck/minimal/red.css | 62 - .../plugins/iCheck/minimal/red.png | Bin 1130 -> 0 bytes .../plugins/iCheck/minimal/red@2x.png | Bin 1410 -> 0 bytes .../plugins/iCheck/minimal/yellow.css | 62 - .../plugins/iCheck/minimal/yellow.png | Bin 1135 -> 0 bytes .../plugins/iCheck/minimal/yellow@2x.png | Bin 1406 -> 0 bytes .../plugins/iCheck/polaris/polaris.css | 62 - .../plugins/iCheck/polaris/polaris.png | Bin 6401 -> 0 bytes .../plugins/iCheck/polaris/polaris@2x.png | Bin 16760 -> 0 bytes .../plugins/iCheck/square/_all.css | 620 - .../plugins/iCheck/square/aero.css | 62 - .../plugins/iCheck/square/aero.png | Bin 2167 -> 0 bytes .../plugins/iCheck/square/aero@2x.png | Bin 4455 -> 0 bytes .../plugins/iCheck/square/blue.css | 62 - .../plugins/iCheck/square/blue.png | Bin 2185 -> 0 bytes .../plugins/iCheck/square/blue@2x.png | Bin 4485 -> 0 bytes .../plugins/iCheck/square/green.css | 62 - .../plugins/iCheck/square/green.png | Bin 2193 -> 0 bytes .../plugins/iCheck/square/green@2x.png | Bin 4498 -> 0 bytes .../plugins/iCheck/square/grey.css | 62 - .../plugins/iCheck/square/grey.png | Bin 2186 -> 0 bytes .../plugins/iCheck/square/grey@2x.png | Bin 4483 -> 0 bytes .../plugins/iCheck/square/orange.css | 62 - .../plugins/iCheck/square/orange.png | Bin 2181 -> 0 bytes .../plugins/iCheck/square/orange@2x.png | Bin 4474 -> 0 bytes .../plugins/iCheck/square/pink.css | 62 - .../plugins/iCheck/square/pink.png | Bin 2189 -> 0 bytes .../plugins/iCheck/square/pink@2x.png | Bin 4479 -> 0 bytes .../plugins/iCheck/square/purple.css | 62 - .../plugins/iCheck/square/purple.png | Bin 2188 -> 0 bytes .../plugins/iCheck/square/purple@2x.png | Bin 4501 -> 0 bytes .../plugins/iCheck/square/red.css | 62 - .../plugins/iCheck/square/red.png | Bin 2190 -> 0 bytes .../plugins/iCheck/square/red@2x.png | Bin 4490 -> 0 bytes .../plugins/iCheck/square/square.css | 62 - .../plugins/iCheck/square/square.png | Bin 2175 -> 0 bytes .../plugins/iCheck/square/square@2x.png | Bin 4478 -> 0 bytes .../plugins/iCheck/square/yellow.css | 62 - .../plugins/iCheck/square/yellow.png | Bin 2131 -> 0 bytes .../plugins/iCheck/square/yellow@2x.png | Bin 4385 -> 0 bytes .../jquery.inputmask.date.extensions.js | 488 - .../input-mask/jquery.inputmask.extensions.js | 122 - .../plugins/input-mask/jquery.inputmask.js | 1627 -- .../jquery.inputmask.numeric.extensions.js | 177 - .../jquery.inputmask.phone.extensions.js | 50 - .../jquery.inputmask.regex.extensions.js | 169 - .../input-mask/phone-codes/phone-be.json | 45 - .../input-mask/phone-codes/phone-codes.json | 294 - .../plugins/input-mask/phone-codes/readme.txt | 1 - .../plugins/jQueryUI/jquery-ui.js | 16617 ---------------- .../plugins/jQueryUI/jquery-ui.min.js | 13 - .../jvectormap/jquery-jvectormap-1.2.2.css | 40 - .../jvectormap/jquery-jvectormap-1.2.2.min.js | 8 - .../jvectormap/jquery-jvectormap-usa-en.js | 1 - .../jquery-jvectormap-world-mill-en.js | 1 - .../bootstrap-3.3.7/plugins/pace/pace.css | 85 - .../bootstrap-3.3.7/plugins/pace/pace.js | 935 - .../bootstrap-3.3.7/plugins/pace/pace.min.css | 1 - .../bootstrap-3.3.7/plugins/pace/pace.min.js | 2 - .../timepicker/bootstrap-timepicker.css | 146 - .../timepicker/bootstrap-timepicker.js | 1177 -- .../timepicker/bootstrap-timepicker.min.css | 10 - .../timepicker/bootstrap-timepicker.min.js | 5 - power-api/pom.xml | 89 - power-foundaton/pom.xml | 25 - power_web/pom.xml | 70 - power_web/src/main/webapp/WEB-INF/web.xml | 7 - power_web/src/main/webapp/index.jsp | 5 - 348 files changed, 101 insertions(+), 97993 deletions(-) delete mode 100644 power-admin/src/main/java/com/manage/test.java delete mode 100644 power-admin/src/main/java/test.java delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/.csscomb.json delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/.csslintrc delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/alerts.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/badges.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/bootstrap.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/breadcrumbs.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/button-groups.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/buttons.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/carousel.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/close.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/code.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/component-animations.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/dropdowns.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/forms.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/glyphicons.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/grid.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/input-groups.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/jumbotron.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/labels.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/list-group.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/media.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/alerts.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/background-variant.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/border-radius.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/buttons.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/center-block.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/clearfix.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/forms.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/gradients.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/grid-framework.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/grid.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/hide-text.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/image.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/labels.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/list-group.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/nav-divider.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/nav-vertical-align.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/opacity.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/pagination.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/panels.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/progress-bar.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/reset-filter.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/reset-text.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/resize.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/responsive-visibility.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/size.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/tab-focus.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/table-row.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/text-emphasis.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/text-overflow.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/vendor-prefixes.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/modals.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/navbar.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/navs.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/normalize.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/pager.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/pagination.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/panels.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/popovers.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/print.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/progress-bars.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/responsive-embed.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/responsive-utilities.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/scaffolding.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/tables.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/theme.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/thumbnails.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/tooltip.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/type.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/utilities.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/variables.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/wells.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/grunt/.jshintrc delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/.jscsrc delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/.jshintrc delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/BoxRefresh.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/BoxWidget.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/ControlSidebar.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/DirectChat.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/Layout.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/PushMenu.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/TodoList.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/Tree.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/.csslintrc delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/404_500_errors.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/AdminLTE-without-plugins.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/AdminLTE.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/alerts.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/bootstrap-social.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/boxes.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/buttons.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/callout.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/carousel.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/control-sidebar.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/core.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/datepicker.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/direct-chat.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/dropdown.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/forms.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/fullcalendar.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/header.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/info-box.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/invoice.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/labels.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/lockscreen.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/login_and_register.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/mailbox.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/miscellaneous.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/mixins.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/modal.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/navs.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/plugins.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/print.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/products.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/profile.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/progress-bars.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/select2.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/sidebar-mini.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/sidebar.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/_all-skins.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-black-light.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-black.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-blue-light.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-blue.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-green-light.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-green.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-purple-light.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-purple.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-red-light.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-red.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-yellow-light.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-yellow.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/small-box.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/social-widgets.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/table.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/timeline.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/treeview.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/users-list.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/variables.less delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/adminlte-options.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/advice.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/browsers.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/components.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/dependencies.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/download.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/faq.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/implementations.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/introduction.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/layout.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/license.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/plugins.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/upgrade.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/index.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/docs.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/index.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/style.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/buttons.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/general.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/icons.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/modals.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/sliders.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/timeline.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/calendar.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/chartjs.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/flot.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/inline.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/morris.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/404.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/500.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/blank.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/invoice-print.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/invoice.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/lockscreen.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/login.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/pace.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/profile.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/register.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/forms/advanced.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/forms/editors.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/forms/general.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/boxed.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/collapsed-sidebar.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/fixed.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/top-nav.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/mailbox/compose.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/mailbox/mailbox.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/mailbox/read-mail.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/tables/data.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/tables/simple.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/widgets.html delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/bootstrap-slider/bootstrap-slider.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/bootstrap-slider/slider.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/all.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/_all.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/aero.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/aero.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/aero@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/blue.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/blue.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/blue@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/flat.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/flat.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/flat@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/green.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/green.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/green@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/grey.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/grey.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/grey@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/orange.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/orange.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/orange@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/pink.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/pink.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/pink@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/purple.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/purple.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/purple@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/red.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/red.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/red@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/yellow.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/yellow.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/flat/yellow@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/futurico/futurico.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/futurico/futurico.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/futurico/futurico@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/icheck.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/icheck.min.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/line/_all.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/line/aero.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/line/blue.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/line/green.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/line/grey.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/line/line.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/line/line.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/line/line@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/line/orange.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/line/pink.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/line/purple.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/line/red.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/line/yellow.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/_all.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/aero.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/aero.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/aero@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/blue.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/blue.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/blue@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/green.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/green.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/green@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/grey.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/grey.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/grey@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/minimal.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/minimal.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/minimal@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/orange.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/orange.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/orange@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/pink.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/pink.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/pink@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/purple.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/purple.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/purple@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/red.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/red.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/red@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/yellow.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/yellow.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/minimal/yellow@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/polaris/polaris.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/polaris/polaris.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/polaris/polaris@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/_all.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/aero.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/aero.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/aero@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/blue.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/blue.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/blue@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/green.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/green.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/green@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/grey.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/grey.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/grey@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/orange.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/orange.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/orange@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/pink.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/pink.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/pink@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/purple.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/purple.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/purple@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/red.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/red.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/red@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/square.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/square.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/square@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/yellow.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/yellow.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/iCheck/square/yellow@2x.png delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/input-mask/jquery.inputmask.date.extensions.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/input-mask/jquery.inputmask.extensions.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/input-mask/jquery.inputmask.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/input-mask/jquery.inputmask.numeric.extensions.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/input-mask/jquery.inputmask.phone.extensions.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/input-mask/jquery.inputmask.regex.extensions.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/input-mask/phone-codes/phone-be.json delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/input-mask/phone-codes/phone-codes.json delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/input-mask/phone-codes/readme.txt delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/jQueryUI/jquery-ui.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/jQueryUI/jquery-ui.min.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/jvectormap/jquery-jvectormap-1.2.2.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/jvectormap/jquery-jvectormap-usa-en.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/jvectormap/jquery-jvectormap-world-mill-en.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/pace/pace.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/pace/pace.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/pace/pace.min.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/pace/pace.min.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/timepicker/bootstrap-timepicker.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/timepicker/bootstrap-timepicker.js delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/timepicker/bootstrap-timepicker.min.css delete mode 100644 power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/timepicker/bootstrap-timepicker.min.js delete mode 100644 power-api/pom.xml delete mode 100644 power_web/pom.xml delete mode 100644 power_web/src/main/webapp/WEB-INF/web.xml delete mode 100644 power_web/src/main/webapp/index.jsp diff --git a/pom.xml b/pom.xml index 391b685..5df577f 100644 --- a/pom.xml +++ b/pom.xml @@ -9,10 +9,8 @@ pom 1.0-SNAPSHOT - power-api power-dao power-service - power_web power-admin power-foundaton @@ -31,22 +29,12 @@ 1.1.5 4.12 1.8 - 1.9.5 - - 1.2.2 - 7.6.11.v20130520 2.4 2.1 1.2 0.9.5-pre6 5.0.1.Final 9.2-1004-jdbc4 - 5.17.0 - 2.3.6 - 2.2.1 - 1.1.1 - 3.5.0 - 5.0.2.RELEASE 3.2.8 1.2.2 @@ -65,9 +53,6 @@ 3.3 3.4.2 0.9.1 - 1.3.1 - 2.7.2 - 4.10.3 1.8.13 1.8.13 3.1.8 @@ -77,66 +62,17 @@ - - - - - - - - com.manage - power-api - 1.0-SNAPSHOT - - com.manage power-service 1.0-SNAPSHOT - com.manage - power-foundation + power-foundaton 1.0-SNAPSHOT - com.manage power-dao @@ -288,42 +224,12 @@ bcprov-jdk16 1.46 - - - - javax.mail - mail - 1.4.5 - - - com.sun.mail - javax.mail - 1.5.4 - - - - - - - - org.webjars.bower - jstree - 3.3.4 - - commons-dbutils commons-dbutils 1.4 - - - - com.github.pagehelper - pagehelper - 5.0.0 - jstl jstl @@ -342,72 +248,6 @@ ${jsp-api.version} provided - - - commons-fileupload - commons-fileupload - ${commons-fileupload.version} - - - - redis.clients - jedis - ${jedis.version} - - - - org.apache.solr - solr-solrj - ${solrj.version} - - - - - com.manage - framework-open-sdk - ${framework.version} - - - - org.springframework.data - spring-data-jpa - 1.3.0.RELEASE - - - - - org.apache.shiro - shiro-spring - ${shiro.version} - - - org.apache.shiro - shiro-ehcache - ${shiro.version} - - - - - - - - org.activiti - activiti-engine - ${activiti.version} - - - org.activiti - activiti-spring - ${activiti.version} - - - - - org.codehaus.groovy - groovy-all - ${groovy.version} - - com.mchange c3p0 @@ -418,88 +258,42 @@ postgresql ${postgresql.version} - - - taglibs standard 1.1.2 - - com.alibaba fastjson 1.2.4 + + + org.apache.cxf + cxf-rt-transports-http + ${cxf.version} + + + org.apache.cxf + cxf-rt-frontend-jaxws + ${cxf.version} + + + + org.java-websocket + Java-WebSocket + ${webSocket.version} + + + javax.websocket + javax.websocket-api + ${javax.websocket-api.version} + provided + - - - - - org.mockito - mockito-core - ${mockito.version} - test - - - - - org.apache.httpcomponents - httpmime - 4.5.5 - - - - - org.jdom - jdom - 1.1 - - - - - org.apache.httpcomponents - httpclient - 4.5.1 - - - org.springframework - spring-context - - - org.springframework - spring-webmvc - - - - org.apache.cxf - cxf-rt-transports-http - ${cxf.version} - - - org.apache.cxf - cxf-rt-frontend-jaxws - ${cxf.version} - - - - org.java-websocket - Java-WebSocket - ${webSocket.version} - - - javax.websocket - javax.websocket-api - ${javax.websocket-api.version} - provided - - - - diff --git a/power-admin/pom.xml b/power-admin/pom.xml index 99ed8ce..7b5299c 100644 --- a/power-admin/pom.xml +++ b/power-admin/pom.xml @@ -90,7 +90,10 @@ pagehelper 5.0.0 - + + com.alibaba + druid + org.springframework spring-jdbc @@ -124,12 +127,6 @@ ${junit.version} test - - com.manage - power-foundaton - 1.0-SNAPSHOT - compile - net.sf.json-lib @@ -166,22 +163,11 @@ commons-lang3 ${commons-lang3.version} - - - commons-fileupload - commons-fileupload - ${commons-fileupload.version} - javax.servlet jsp-api provided - - fr.jrds - vxIPMI - 2.0.0.1 - power diff --git a/power-admin/src/main/java/com/manage/interceptor/LoginInterceptor.java b/power-admin/src/main/java/com/manage/interceptor/LoginInterceptor.java index 6cdc429..43005ba 100644 --- a/power-admin/src/main/java/com/manage/interceptor/LoginInterceptor.java +++ b/power-admin/src/main/java/com/manage/interceptor/LoginInterceptor.java @@ -22,8 +22,9 @@ public class LoginInterceptor implements HandlerInterceptor { @Autowired Power_UserService powerUserService; + @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception { - String ctx = request.getServletContext().getContextPath(); + String ctx = request.getContextPath(); String url = request.getRequestURI(); if("/power/".equals(url)|| "/".equals(url)){ request.getRequestDispatcher("/login").forward(request, response); diff --git a/power-admin/src/main/java/com/manage/test.java b/power-admin/src/main/java/com/manage/test.java deleted file mode 100644 index 7f20dfe..0000000 --- a/power-admin/src/main/java/com/manage/test.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.manage; - -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; - -import java.io.*; - -/** - * @ProjectName: - * @Description: - * @Param 传输参数 - * @Return - * @Author: 曾文和 - * @CreateDate: 2019/11/28 11:42 - * @UpdateUser: 曾文和 - * @UpdateDate: 2019/11/28 11:42 - * @UpdateRemark: 更新说明 - * @Version: 1.0 - */ -public class test { - public static void main(String[] args) throws Exception{ - String str = "temperature_stat.htm"; - readfile(str); - } - public static String readfile(String filePath){ - File file = new File(filePath); - InputStream input = null; - try { - input = new FileInputStream(file); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - StringBuffer buffer = new StringBuffer(); - byte[] bytes = new byte[1024]; - try { - for(int n ; (n = input.read(bytes))!=-1 ; ){ - buffer.append(new String(bytes,0,n,"GBK")); - } - } catch (IOException e) { - e.printStackTrace(); - } - int i = buffer.toString().lastIndexOf(""); - String substring = buffer.substring(0, i); - String substring1 = substring.substring(substring.length() - 4, substring.length()); - Float f = Float.valueOf(substring1); - Math.round(f); - System.out.println(substring1); - return buffer.toString(); - } - - public String getBody(String val) { - String start = ""; - String end = ""; - int s = val.indexOf(start) + start.length(); - int e = val.indexOf(end); - return val.substring(s, e); - } -} diff --git a/power-admin/src/main/java/test.java b/power-admin/src/main/java/test.java deleted file mode 100644 index b7f3077..0000000 --- a/power-admin/src/main/java/test.java +++ /dev/null @@ -1,132 +0,0 @@ -import com.veraxsystems.vxipmi.api.async.ConnectionHandle; -import com.veraxsystems.vxipmi.api.sync.IpmiConnector; -import com.veraxsystems.vxipmi.coding.commands.IpmiVersion; -import com.veraxsystems.vxipmi.coding.commands.PrivilegeLevel; -import com.veraxsystems.vxipmi.coding.commands.chassis.GetChassisStatus; -import com.veraxsystems.vxipmi.coding.commands.chassis.GetChassisStatusResponseData; -import com.veraxsystems.vxipmi.coding.commands.sdr.GetSdr; -import com.veraxsystems.vxipmi.coding.commands.sdr.GetSdrResponseData; -import com.veraxsystems.vxipmi.coding.commands.sdr.GetSensorReading; -import com.veraxsystems.vxipmi.coding.commands.sdr.GetSensorReadingResponseData; -import com.veraxsystems.vxipmi.coding.commands.sdr.ReserveSdrRepository; -import com.veraxsystems.vxipmi.coding.commands.sdr.ReserveSdrRepositoryResponseData; -import com.veraxsystems.vxipmi.coding.commands.sdr.record.CompactSensorRecord; -import com.veraxsystems.vxipmi.coding.commands.sdr.record.FullSensorRecord; -import com.veraxsystems.vxipmi.coding.commands.sdr.record.RateUnit; -import com.veraxsystems.vxipmi.coding.commands.sdr.record.ReadingType; -import com.veraxsystems.vxipmi.coding.commands.sdr.record.SensorRecord; -import com.veraxsystems.vxipmi.coding.payload.CompletionCode; -import com.veraxsystems.vxipmi.coding.payload.lan.IPMIException; -import com.veraxsystems.vxipmi.coding.protocol.AuthenticationType; -import com.veraxsystems.vxipmi.coding.security.CipherSuite; -import com.veraxsystems.vxipmi.common.TypeConverter; -import com.veraxsystems.vxipmi.connection.Connection; - - -import java.io.FileNotFoundException; -import java.io.IOException; -import java.net.InetAddress; - -import java.util.List; - -/** - * @ProjectName: - * @Description: - * @Param 传输参数 - * @Return - * @Author: 曾文和 - * @CreateDate: 2019/11/29 15:31 - * @UpdateUser: 曾文和 - * @UpdateDate: 2019/11/29 15:31 - * @UpdateRemark: 更新说明 - * @Version: 1.0 - */ -public class test { - private static final int MAX_REPO_RECORD_ID = 65535; - - private static final String hostname = "127.0.0.1"; - - private static final String username = "Administrator"; - - private static final String password = "zwh05966788561"; - - /** - * Size of the initial GetSdr message to get record header and size - */ - private static final int INITIAL_CHUNK_SIZE = 8; - - /** - * Chunk size depending on buffer size of the IPMI server. Bigger values will improve performance. If server is - * returning "Cannot return number of requested data bytes." error during GetSdr command, CHUNK_SIZE should be - * decreased. - */ - private static final int CHUNK_SIZE = 16; - - /** - * Size of SDR record header - */ - private static final int HEADER_SIZE = 5; - - private int nextRecId; - - public static void main(String[] args) { - IpmiConnector connector = null; - ConnectionHandle handle = null; - try { - connector = new IpmiConnector(8081); - System.out.println("Connector created"); - - // Create the connection and get the handle, specifiy IP address of the - // remote host. The connection is being registered in ConnectionManager, - // the handle will be needed to identify it among other connections - // (target IP address isn't enough, since we can handle multiple - // connections to the same host) - handle = connector.createConnection(InetAddress - .getByName("127.0.0.1")); - System.out.println("Connection created"); - - // Get available cipher suites list via getAvailableCipherSuites and - // pick one of them that will be used further in the session. - CipherSuite cs = connector.getAvailableCipherSuites(handle).get(3); - System.out.println("Cipher suite picked"); - - // Provide chosen cipher suite and privilege level to the remote host. - // From now on, your connection handle will contain these information. - connector.getChannelAuthenticationCapabilities(handle, cs, - PrivilegeLevel.User); - System.out.println("Channel authentication capabilities receivied"); - - // Start the session, provide username and password, and optionally the - // BMC key (only if the remote host has two-key authentication enabled, - // otherwise this parameter should be null) - connector.openSession(handle, "admin", "password", null); - System.out.println("Session open"); - - // Send some message and read the response - GetChassisStatusResponseData response = (GetChassisStatusResponseData) connector - .sendMessage(handle, new GetChassisStatus(IpmiVersion.V20, cs, AuthenticationType.RMCPPlus)); - - System.out.println("Received answer"); - System.out.println("System power state is " - + (response.isPowerOn() ? "up" : "down")); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - // Close the session - connector.closeSession(handle); - System.out.println("Session closed"); - - // Close connection manager and release the listener port. - connector.tearDown(); - System.out.println("Connection manager closed"); - } catch (Exception e) { - e.printStackTrace(); - } - } - } -} diff --git a/power-admin/src/main/resources/config/applicationContext.xml b/power-admin/src/main/resources/config/applicationContext.xml index f9dc18a..a18d8e9 100644 --- a/power-admin/src/main/resources/config/applicationContext.xml +++ b/power-admin/src/main/resources/config/applicationContext.xml @@ -24,15 +24,35 @@ - - - - + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/power-admin/src/main/resources/config/jdbc.properties b/power-admin/src/main/resources/config/jdbc.properties index 15cee77..7254100 100644 --- a/power-admin/src/main/resources/config/jdbc.properties +++ b/power-admin/src/main/resources/config/jdbc.properties @@ -1,21 +1,28 @@ +#jdbc.url=jdbc\:mysql\://localhost\:3306/ydpower?useUnicode\=true&characterEncoding\=utf-8 +#jdbc.password=docus702 + +jdbc.url=jdbc\:mysql\://10.36.116.108\:3306/power?useUnicode\=true&characterEncoding\=utf-8 +jdbc.password=docus@702 + jdbc.driver=com.mysql.jdbc.Driver -jdbc.url=jdbc\:mysql\://localhost\:3306/ydpower?useUnicode\=true&characterEncoding\=utf-8 jdbc.username=root -#jdbc.password=docus@702 -jdbc.password=docus702 -#hibernate config -hibernate.dialect = org.hibernate.dialect.MySQLDialect -hibernate.show_sql = true -hibernate.format_sql = true -hibernate.hbm2ddl.auto =update -#hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext -hibernate.current_session_context_class=thread - -hibernate.jdbc.batch_size=50 -hibernate.enable_lazy_load_no_trans=true +filters: stat +maxActive: 20 +initialSize: 1 +maxWait: 60000 +minIdle: 10 +timeBetweenEvictionRunsMillis: 60000 +minEvictableIdleTimeMillis: 300000 +validationQuery: SELECT 'x' +testWhileIdle: true +testOnBorrow: false +testOnReturn: false +maxOpenPreparedStatements: 20 +removeAbandoned: true +removeAbandonedTimeout: 1800 +logAbandoned: true -#\u05B4\uFFFD\uFFFD:\uFFFD\u04BC\uFFFD Run As ---->Maven build ---->Goals:mybatis-generator:generate #\uFFFD\uFFFD\uFFFD\u013F\u00BC targetProject=src/main/java #modelPackage,sqlMapperPackage,daoMapperPackage \u0368\uFFFD\uFFFD\u04BB\uFFFD\uFFFD?? diff --git a/power-admin/src/main/webapp/WEB-INF/web.xml b/power-admin/src/main/webapp/WEB-INF/web.xml index 56a7b0d..25ea8f1 100644 --- a/power-admin/src/main/webapp/WEB-INF/web.xml +++ b/power-admin/src/main/webapp/WEB-INF/web.xml @@ -27,14 +27,6 @@ characterEncodingFilter /* - contextConfigLocation @@ -46,14 +38,6 @@ org.springframework.web.context.ContextLoaderListener - dispatcherServlet @@ -88,4 +72,26 @@ startFilter / + + + DruidWebStatFilter + com.alibaba.druid.support.http.WebStatFilter + + exclusions + *. js ,*. gif ,*. jpg ,*. png ,*. css ,*. ico ,/ druid /* + + + + DruidWebStatFilter + /* + + + DruidStatView + com.alibaba.druid.support.http.StatViewServlet + + + DruidStatView + /druid/* + + \ No newline at end of file diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/.csscomb.json b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/.csscomb.json deleted file mode 100644 index 40695a4..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/.csscomb.json +++ /dev/null @@ -1,304 +0,0 @@ -{ - "always-semicolon": true, - "block-indent": 2, - "color-case": "lower", - "color-shorthand": true, - "element-case": "lower", - "eof-newline": true, - "leading-zero": false, - "remove-empty-rulesets": true, - "space-after-colon": 1, - "space-after-combinator": 1, - "space-before-selector-delimiter": 0, - "space-between-declarations": "\n", - "space-after-opening-brace": "\n", - "space-before-closing-brace": "\n", - "space-before-colon": 0, - "space-before-combinator": 1, - "space-before-opening-brace": 1, - "strip-spaces": true, - "unitless-zero": true, - "vendor-prefix-align": true, - "sort-order": [ - [ - "position", - "top", - "right", - "bottom", - "left", - "z-index", - "display", - "float", - "width", - "min-width", - "max-width", - "height", - "min-height", - "max-height", - "-webkit-box-sizing", - "-moz-box-sizing", - "box-sizing", - "-webkit-appearance", - "padding", - "padding-top", - "padding-right", - "padding-bottom", - "padding-left", - "margin", - "margin-top", - "margin-right", - "margin-bottom", - "margin-left", - "overflow", - "overflow-x", - "overflow-y", - "-webkit-overflow-scrolling", - "-ms-overflow-x", - "-ms-overflow-y", - "-ms-overflow-style", - "clip", - "clear", - "font", - "font-family", - "font-size", - "font-style", - "font-weight", - "font-variant", - "font-size-adjust", - "font-stretch", - "font-effect", - "font-emphasize", - "font-emphasize-position", - "font-emphasize-style", - "font-smooth", - "-webkit-hyphens", - "-moz-hyphens", - "hyphens", - "line-height", - "color", - "text-align", - "-webkit-text-align-last", - "-moz-text-align-last", - "-ms-text-align-last", - "text-align-last", - "text-emphasis", - "text-emphasis-color", - "text-emphasis-style", - "text-emphasis-position", - "text-decoration", - "text-indent", - "text-justify", - "text-outline", - "-ms-text-overflow", - "text-overflow", - "text-overflow-ellipsis", - "text-overflow-mode", - "text-shadow", - "text-transform", - "text-wrap", - "-webkit-text-size-adjust", - "-ms-text-size-adjust", - "letter-spacing", - "-ms-word-break", - "word-break", - "word-spacing", - "-ms-word-wrap", - "word-wrap", - "-moz-tab-size", - "-o-tab-size", - "tab-size", - "white-space", - "vertical-align", - "list-style", - "list-style-position", - "list-style-type", - "list-style-image", - "pointer-events", - "-ms-touch-action", - "touch-action", - "cursor", - "visibility", - "zoom", - "flex-direction", - "flex-order", - "flex-pack", - "flex-align", - "table-layout", - "empty-cells", - "caption-side", - "border-spacing", - "border-collapse", - "content", - "quotes", - "counter-reset", - "counter-increment", - "resize", - "-webkit-user-select", - "-moz-user-select", - "-ms-user-select", - "-o-user-select", - "user-select", - "nav-index", - "nav-up", - "nav-right", - "nav-down", - "nav-left", - "background", - "background-color", - "background-image", - "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", - "filter:progid:DXImageTransform.Microsoft.gradient", - "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", - "filter", - "background-repeat", - "background-attachment", - "background-position", - "background-position-x", - "background-position-y", - "-webkit-background-clip", - "-moz-background-clip", - "background-clip", - "background-origin", - "-webkit-background-size", - "-moz-background-size", - "-o-background-size", - "background-size", - "border", - "border-color", - "border-style", - "border-width", - "border-top", - "border-top-color", - "border-top-style", - "border-top-width", - "border-right", - "border-right-color", - "border-right-style", - "border-right-width", - "border-bottom", - "border-bottom-color", - "border-bottom-style", - "border-bottom-width", - "border-left", - "border-left-color", - "border-left-style", - "border-left-width", - "border-radius", - "border-top-left-radius", - "border-top-right-radius", - "border-bottom-right-radius", - "border-bottom-left-radius", - "-webkit-border-image", - "-moz-border-image", - "-o-border-image", - "border-image", - "-webkit-border-image-source", - "-moz-border-image-source", - "-o-border-image-source", - "border-image-source", - "-webkit-border-image-slice", - "-moz-border-image-slice", - "-o-border-image-slice", - "border-image-slice", - "-webkit-border-image-width", - "-moz-border-image-width", - "-o-border-image-width", - "border-image-width", - "-webkit-border-image-outset", - "-moz-border-image-outset", - "-o-border-image-outset", - "border-image-outset", - "-webkit-border-image-repeat", - "-moz-border-image-repeat", - "-o-border-image-repeat", - "border-image-repeat", - "outline", - "outline-width", - "outline-style", - "outline-color", - "outline-offset", - "-webkit-box-shadow", - "-moz-box-shadow", - "box-shadow", - "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", - "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", - "opacity", - "-ms-interpolation-mode", - "-webkit-transition", - "-moz-transition", - "-ms-transition", - "-o-transition", - "transition", - "-webkit-transition-delay", - "-moz-transition-delay", - "-ms-transition-delay", - "-o-transition-delay", - "transition-delay", - "-webkit-transition-timing-function", - "-moz-transition-timing-function", - "-ms-transition-timing-function", - "-o-transition-timing-function", - "transition-timing-function", - "-webkit-transition-duration", - "-moz-transition-duration", - "-ms-transition-duration", - "-o-transition-duration", - "transition-duration", - "-webkit-transition-property", - "-moz-transition-property", - "-ms-transition-property", - "-o-transition-property", - "transition-property", - "-webkit-transform", - "-moz-transform", - "-ms-transform", - "-o-transform", - "transform", - "-webkit-transform-origin", - "-moz-transform-origin", - "-ms-transform-origin", - "-o-transform-origin", - "transform-origin", - "-webkit-animation", - "-moz-animation", - "-ms-animation", - "-o-animation", - "animation", - "-webkit-animation-name", - "-moz-animation-name", - "-ms-animation-name", - "-o-animation-name", - "animation-name", - "-webkit-animation-duration", - "-moz-animation-duration", - "-ms-animation-duration", - "-o-animation-duration", - "animation-duration", - "-webkit-animation-play-state", - "-moz-animation-play-state", - "-ms-animation-play-state", - "-o-animation-play-state", - "animation-play-state", - "-webkit-animation-timing-function", - "-moz-animation-timing-function", - "-ms-animation-timing-function", - "-o-animation-timing-function", - "animation-timing-function", - "-webkit-animation-delay", - "-moz-animation-delay", - "-ms-animation-delay", - "-o-animation-delay", - "animation-delay", - "-webkit-animation-iteration-count", - "-moz-animation-iteration-count", - "-ms-animation-iteration-count", - "-o-animation-iteration-count", - "animation-iteration-count", - "-webkit-animation-direction", - "-moz-animation-direction", - "-ms-animation-direction", - "-o-animation-direction", - "animation-direction" - ] - ] -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/.csslintrc b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/.csslintrc deleted file mode 100644 index 005b862..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/.csslintrc +++ /dev/null @@ -1,19 +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 -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/alerts.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/alerts.less deleted file mode 100644 index c4199db..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/alerts.less +++ /dev/null @@ -1,73 +0,0 @@ -// -// Alerts -// -------------------------------------------------- - - -// Base styles -// ------------------------- - -.alert { - padding: @alert-padding; - margin-bottom: @line-height-computed; - border: 1px solid transparent; - border-radius: @alert-border-radius; - - // Headings for larger alerts - h4 { - margin-top: 0; - // Specified for the h4 to prevent conflicts of changing @headings-color - color: inherit; - } - - // Provide class for links that match alerts - .alert-link { - font-weight: @alert-link-font-weight; - } - - // Improve alignment and spacing of inner content - > p, - > ul { - margin-bottom: 0; - } - - > p + p { - margin-top: 5px; - } -} - -// Dismissible alerts -// -// Expand the right padding and account for the close button's positioning. - -.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. -.alert-dismissible { - padding-right: (@alert-padding + 20); - - // Adjust close link position - .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; - } -} - -// Alternate styles -// -// Generate contextual modifier classes for colorizing the alert. - -.alert-success { - .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); -} - -.alert-info { - .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); -} - -.alert-warning { - .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); -} - -.alert-danger { - .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/badges.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/badges.less deleted file mode 100644 index 6ee16dc..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/badges.less +++ /dev/null @@ -1,66 +0,0 @@ -// -// Badges -// -------------------------------------------------- - - -// Base class -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: @font-size-small; - font-weight: @badge-font-weight; - color: @badge-color; - line-height: @badge-line-height; - vertical-align: middle; - white-space: nowrap; - text-align: center; - background-color: @badge-bg; - border-radius: @badge-border-radius; - - // Empty badges collapse automatically (not available in IE8) - &:empty { - display: none; - } - - // Quick fix for badges in buttons - .btn & { - position: relative; - top: -1px; - } - - .btn-xs &, - .btn-group-xs > .btn & { - top: 0; - padding: 1px 5px; - } - - // Hover state, but only for links - a& { - &:hover, - &:focus { - color: @badge-link-hover-color; - text-decoration: none; - cursor: pointer; - } - } - - // Account for badges in navs - .list-group-item.active > &, - .nav-pills > .active > a > & { - color: @badge-active-color; - background-color: @badge-active-bg; - } - - .list-group-item > & { - float: right; - } - - .list-group-item > & + & { - margin-right: 5px; - } - - .nav-pills > li > a > & { - margin-left: 3px; - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/bootstrap.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/bootstrap.less deleted file mode 100644 index f0aa08f..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/bootstrap.less +++ /dev/null @@ -1,56 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -// Core variables and mixins -@import "variables.less"; -@import "mixins.less"; - -// Reset and dependencies -@import "normalize.less"; -@import "print.less"; -@import "glyphicons.less"; - -// Core CSS -@import "scaffolding.less"; -@import "type.less"; -@import "code.less"; -@import "grid.less"; -@import "tables.less"; -@import "forms.less"; -@import "buttons.less"; - -// Components -@import "component-animations.less"; -@import "dropdowns.less"; -@import "button-groups.less"; -@import "input-groups.less"; -@import "navs.less"; -@import "navbar.less"; -@import "breadcrumbs.less"; -@import "pagination.less"; -@import "pager.less"; -@import "labels.less"; -@import "badges.less"; -@import "jumbotron.less"; -@import "thumbnails.less"; -@import "alerts.less"; -@import "progress-bars.less"; -@import "media.less"; -@import "list-group.less"; -@import "panels.less"; -@import "responsive-embed.less"; -@import "wells.less"; -@import "close.less"; - -// Components w/ JavaScript -@import "modals.less"; -@import "tooltip.less"; -@import "popovers.less"; -@import "carousel.less"; - -// Utility classes -@import "utilities.less"; -@import "responsive-utilities.less"; diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/breadcrumbs.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/breadcrumbs.less deleted file mode 100644 index cb01d50..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/breadcrumbs.less +++ /dev/null @@ -1,26 +0,0 @@ -// -// Breadcrumbs -// -------------------------------------------------- - - -.breadcrumb { - padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; - margin-bottom: @line-height-computed; - list-style: none; - background-color: @breadcrumb-bg; - border-radius: @border-radius-base; - - > li { - display: inline-block; - - + li:before { - content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space - padding: 0 5px; - color: @breadcrumb-color; - } - } - - > .active { - color: @breadcrumb-active-color; - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/button-groups.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/button-groups.less deleted file mode 100644 index 16db0c6..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/button-groups.less +++ /dev/null @@ -1,244 +0,0 @@ -// -// Button groups -// -------------------------------------------------- - -// Make the div behave like a button -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; // match .btn alignment given font-size hack above - > .btn { - position: relative; - float: left; - // Bring the "active" button to the front - &:hover, - &:focus, - &:active, - &.active { - z-index: 2; - } - } -} - -// Prevent double borders when buttons are next to each other -.btn-group { - .btn + .btn, - .btn + .btn-group, - .btn-group + .btn, - .btn-group + .btn-group { - margin-left: -1px; - } -} - -// Optional: Group multiple button groups together for a toolbar -.btn-toolbar { - margin-left: -5px; // Offset the first child's margin - &:extend(.clearfix all); - - .btn, - .btn-group, - .input-group { - float: left; - } - > .btn, - > .btn-group, - > .input-group { - margin-left: 5px; - } -} - -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} - -// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match -.btn-group > .btn:first-child { - margin-left: 0; - &:not(:last-child):not(.dropdown-toggle) { - .border-right-radius(0); - } -} -// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - .border-left-radius(0); -} - -// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) { - > .btn:last-child, - > .dropdown-toggle { - .border-right-radius(0); - } -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - .border-left-radius(0); -} - -// On active and open, don't show outline -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} - - -// Sizing -// -// Remix the default button sizing classes into new ones for easier manipulation. - -.btn-group-xs > .btn { &:extend(.btn-xs); } -.btn-group-sm > .btn { &:extend(.btn-sm); } -.btn-group-lg > .btn { &:extend(.btn-lg); } - - -// Split button dropdowns -// ---------------------- - -// Give the line between buttons some depth -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; -} - -// The clickable button for toggling the menu -// Remove the gradient and set the same inset shadow as the :active state -.btn-group.open .dropdown-toggle { - .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); - - // Show no shadow for `.btn-link` since it has no other button styles. - &.btn-link { - .box-shadow(none); - } -} - - -// Reposition the caret -.btn .caret { - margin-left: 0; -} -// Carets in other button sizes -.btn-lg .caret { - border-width: @caret-width-large @caret-width-large 0; - border-bottom-width: 0; -} -// Upside down carets for .dropup -.dropup .btn-lg .caret { - border-width: 0 @caret-width-large @caret-width-large; -} - - -// Vertical button groups -// ---------------------- - -.btn-group-vertical { - > .btn, - > .btn-group, - > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; - } - - // Clear floats so dropdown menus can be properly placed - > .btn-group { - &:extend(.clearfix all); - > .btn { - float: none; - } - } - - > .btn + .btn, - > .btn + .btn-group, - > .btn-group + .btn, - > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; - } -} - -.btn-group-vertical > .btn { - &:not(:first-child):not(:last-child) { - border-radius: 0; - } - &:first-child:not(:last-child) { - .border-top-radius(@btn-border-radius-base); - .border-bottom-radius(0); - } - &:last-child:not(:first-child) { - .border-top-radius(0); - .border-bottom-radius(@btn-border-radius-base); - } -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) { - > .btn:last-child, - > .dropdown-toggle { - .border-bottom-radius(0); - } -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - .border-top-radius(0); -} - - -// Justified button groups -// ---------------------- - -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; - > .btn, - > .btn-group { - float: none; - display: table-cell; - width: 1%; - } - > .btn-group .btn { - width: 100%; - } - - > .btn-group .dropdown-menu { - left: auto; - } -} - - -// Checkbox and radio options -// -// In order to support the browser's form validation feedback, powered by the -// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use -// `display: none;` or `visibility: hidden;` as that also hides the popover. -// Simply visually hiding the inputs via `opacity` would leave them clickable in -// certain cases which is prevented by using `clip` and `pointer-events`. -// This way, we ensure a DOM element is visible to position the popover from. -// -// See https://github.com/twbs/bootstrap/pull/12794 and -// https://github.com/twbs/bootstrap/pull/14559 for more information. - -[data-toggle="buttons"] { - > .btn, - > .btn-group > .btn { - input[type="radio"], - input[type="checkbox"] { - position: absolute; - clip: rect(0,0,0,0); - pointer-events: none; - } - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/buttons.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/buttons.less deleted file mode 100644 index 9cbb8f4..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/buttons.less +++ /dev/null @@ -1,166 +0,0 @@ -// -// Buttons -// -------------------------------------------------- - - -// Base styles -// -------------------------------------------------- - -.btn { - display: inline-block; - margin-bottom: 0; // For input.btn - font-weight: @btn-font-weight; - text-align: center; - vertical-align: middle; - touch-action: manipulation; - cursor: pointer; - background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 - border: 1px solid transparent; - white-space: nowrap; - .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base); - .user-select(none); - - &, - &:active, - &.active { - &:focus, - &.focus { - .tab-focus(); - } - } - - &:hover, - &:focus, - &.focus { - color: @btn-default-color; - text-decoration: none; - } - - &:active, - &.active { - outline: 0; - background-image: none; - .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); - } - - &.disabled, - &[disabled], - fieldset[disabled] & { - cursor: @cursor-disabled; - .opacity(.65); - .box-shadow(none); - } - - a& { - &.disabled, - fieldset[disabled] & { - pointer-events: none; // Future-proof disabling of clicks on `` elements - } - } -} - - -// Alternate buttons -// -------------------------------------------------- - -.btn-default { - .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border); -} -.btn-primary { - .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border); -} -// Success appears as green -.btn-success { - .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border); -} -// Info appears as blue-green -.btn-info { - .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border); -} -// Warning appears as orange -.btn-warning { - .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border); -} -// Danger and error appear as red -.btn-danger { - .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border); -} - - -// Link buttons -// ------------------------- - -// Make a button look and behave like a link -.btn-link { - color: @link-color; - font-weight: normal; - border-radius: 0; - - &, - &:active, - &.active, - &[disabled], - fieldset[disabled] & { - background-color: transparent; - .box-shadow(none); - } - &, - &:hover, - &:focus, - &:active { - border-color: transparent; - } - &:hover, - &:focus { - color: @link-hover-color; - text-decoration: @link-hover-decoration; - background-color: transparent; - } - &[disabled], - fieldset[disabled] & { - &:hover, - &:focus { - color: @btn-link-disabled-color; - text-decoration: none; - } - } -} - - -// Button Sizes -// -------------------------------------------------- - -.btn-lg { - // line-height: ensure even-numbered height of button next to large input - .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large); -} -.btn-sm { - // line-height: ensure proper height of button next to small input - .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small); -} -.btn-xs { - .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small); -} - - -// Block button -// -------------------------------------------------- - -.btn-block { - display: block; - width: 100%; -} - -// Vertically space out multiple block buttons -.btn-block + .btn-block { - margin-top: 5px; -} - -// Specificity overrides -input[type="submit"], -input[type="reset"], -input[type="button"] { - &.btn-block { - width: 100%; - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/carousel.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/carousel.less deleted file mode 100644 index 252011e..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/carousel.less +++ /dev/null @@ -1,270 +0,0 @@ -// -// Carousel -// -------------------------------------------------- - - -// Wrapper for the slide container and indicators -.carousel { - position: relative; -} - -.carousel-inner { - position: relative; - overflow: hidden; - width: 100%; - - > .item { - display: none; - position: relative; - .transition(.6s ease-in-out left); - - // Account for jankitude on images - > img, - > a > img { - &:extend(.img-responsive); - line-height: 1; - } - - // WebKit CSS3 transforms for supported devices - @media all and (transform-3d), (-webkit-transform-3d) { - .transition-transform(~'0.6s ease-in-out'); - .backface-visibility(~'hidden'); - .perspective(1000px); - - &.next, - &.active.right { - .translate3d(100%, 0, 0); - left: 0; - } - &.prev, - &.active.left { - .translate3d(-100%, 0, 0); - left: 0; - } - &.next.left, - &.prev.right, - &.active { - .translate3d(0, 0, 0); - left: 0; - } - } - } - - > .active, - > .next, - > .prev { - display: block; - } - - > .active { - left: 0; - } - - > .next, - > .prev { - position: absolute; - top: 0; - width: 100%; - } - - > .next { - left: 100%; - } - > .prev { - left: -100%; - } - > .next.left, - > .prev.right { - left: 0; - } - - > .active.left { - left: -100%; - } - > .active.right { - left: 100%; - } - -} - -// Left/right controls for nav -// --------------------------- - -.carousel-control { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: @carousel-control-width; - .opacity(@carousel-control-opacity); - font-size: @carousel-control-font-size; - color: @carousel-control-color; - text-align: center; - text-shadow: @carousel-text-shadow; - background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug - // We can't have this transition here because WebKit cancels the carousel - // animation if you trip this while in the middle of another animation. - - // Set gradients for backgrounds - &.left { - #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001)); - } - &.right { - left: auto; - right: 0; - #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5)); - } - - // Hover/focus state - &:hover, - &:focus { - outline: 0; - color: @carousel-control-color; - text-decoration: none; - .opacity(.9); - } - - // Toggles - .icon-prev, - .icon-next, - .glyphicon-chevron-left, - .glyphicon-chevron-right { - position: absolute; - top: 50%; - margin-top: -10px; - z-index: 5; - display: inline-block; - } - .icon-prev, - .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; - } - .icon-next, - .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; - } - .icon-prev, - .icon-next { - width: 20px; - height: 20px; - line-height: 1; - font-family: serif; - } - - - .icon-prev { - &:before { - content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) - } - } - .icon-next { - &:before { - content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) - } - } -} - -// Optional indicator pips -// -// Add an unordered list with the following class and add a list item for each -// slide your carousel holds. - -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - margin-left: -30%; - padding-left: 0; - list-style: none; - text-align: center; - - li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - border: 1px solid @carousel-indicator-border-color; - border-radius: 10px; - cursor: pointer; - - // IE8-9 hack for event handling - // - // Internet Explorer 8-9 does not support clicks on elements without a set - // `background-color`. We cannot use `filter` since that's not viewed as a - // background color by the browser. Thus, a hack is needed. - // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer - // - // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we - // set alpha transparency for the best results possible. - background-color: #000 \9; // IE8 - background-color: rgba(0,0,0,0); // IE9 - } - .active { - margin: 0; - width: 12px; - height: 12px; - background-color: @carousel-indicator-active-bg; - } -} - -// Optional captions -// ----------------------------- -// Hidden by default for smaller viewports -.carousel-caption { - position: absolute; - left: 15%; - right: 15%; - bottom: 20px; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: @carousel-caption-color; - text-align: center; - text-shadow: @carousel-text-shadow; - & .btn { - text-shadow: none; // No shadow for button elements in carousel-caption - } -} - - -// Scale up controls for tablets and up -@media screen and (min-width: @screen-sm-min) { - - // Scale up the controls a smidge - .carousel-control { - .glyphicon-chevron-left, - .glyphicon-chevron-right, - .icon-prev, - .icon-next { - width: (@carousel-control-font-size * 1.5); - height: (@carousel-control-font-size * 1.5); - margin-top: (@carousel-control-font-size / -2); - font-size: (@carousel-control-font-size * 1.5); - } - .glyphicon-chevron-left, - .icon-prev { - margin-left: (@carousel-control-font-size / -2); - } - .glyphicon-chevron-right, - .icon-next { - margin-right: (@carousel-control-font-size / -2); - } - } - - // Show and left align the captions - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } - - // Move up the indicators - .carousel-indicators { - bottom: 20px; - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/close.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/close.less deleted file mode 100644 index 6d5bfe0..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/close.less +++ /dev/null @@ -1,34 +0,0 @@ -// -// Close icons -// -------------------------------------------------- - - -.close { - float: right; - font-size: (@font-size-base * 1.5); - font-weight: @close-font-weight; - line-height: 1; - color: @close-color; - text-shadow: @close-text-shadow; - .opacity(.2); - - &:hover, - &:focus { - color: @close-color; - text-decoration: none; - cursor: pointer; - .opacity(.5); - } - - // Additional properties for button version - // iOS requires the button element instead of an anchor tag. - // If you want the anchor version, it requires `href="#"`. - // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile - button& { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/code.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/code.less deleted file mode 100644 index a08b4d4..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/code.less +++ /dev/null @@ -1,69 +0,0 @@ -// -// Code (inline and block) -// -------------------------------------------------- - - -// Inline and block code styles -code, -kbd, -pre, -samp { - font-family: @font-family-monospace; -} - -// Inline code -code { - padding: 2px 4px; - font-size: 90%; - color: @code-color; - background-color: @code-bg; - border-radius: @border-radius-base; -} - -// User input typically entered via keyboard -kbd { - padding: 2px 4px; - font-size: 90%; - color: @kbd-color; - background-color: @kbd-bg; - border-radius: @border-radius-small; - box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); - - kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - box-shadow: none; - } -} - -// Blocks of code -pre { - display: block; - padding: ((@line-height-computed - 1) / 2); - margin: 0 0 (@line-height-computed / 2); - font-size: (@font-size-base - 1); // 14px to 13px - line-height: @line-height-base; - word-break: break-all; - word-wrap: break-word; - color: @pre-color; - background-color: @pre-bg; - border: 1px solid @pre-border-color; - border-radius: @border-radius-base; - - // Account for some code outputs that place code tags in pre tags - code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; - } -} - -// Enable scrollable blocks of code -.pre-scrollable { - max-height: @pre-scrollable-max-height; - overflow-y: scroll; -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/component-animations.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/component-animations.less deleted file mode 100644 index 0bcee91..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/component-animations.less +++ /dev/null @@ -1,33 +0,0 @@ -// -// Component animations -// -------------------------------------------------- - -// Heads up! -// -// We don't use the `.opacity()` mixin here since it causes a bug with text -// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. - -.fade { - opacity: 0; - .transition(opacity .15s linear); - &.in { - opacity: 1; - } -} - -.collapse { - display: none; - - &.in { display: block; } - tr&.in { display: table-row; } - tbody&.in { display: table-row-group; } -} - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - .transition-property(~"height, visibility"); - .transition-duration(.35s); - .transition-timing-function(ease); -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/dropdowns.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/dropdowns.less deleted file mode 100644 index f6876c1..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/dropdowns.less +++ /dev/null @@ -1,216 +0,0 @@ -// -// Dropdown menus -// -------------------------------------------------- - - -// Dropdown arrow/caret -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: @caret-width-base dashed; - border-top: @caret-width-base solid ~"\9"; // IE8 - border-right: @caret-width-base solid transparent; - border-left: @caret-width-base solid transparent; -} - -// The dropdown wrapper (div) -.dropup, -.dropdown { - position: relative; -} - -// Prevent the focus on the dropdown toggle when closing dropdowns -.dropdown-toggle:focus { - outline: 0; -} - -// The dropdown menu (ul) -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: @zindex-dropdown; - display: none; // none by default, but block on "open" of the menu - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; // override default ul - list-style: none; - font-size: @font-size-base; - text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) - background-color: @dropdown-bg; - border: 1px solid @dropdown-fallback-border; // IE8 fallback - border: 1px solid @dropdown-border; - border-radius: @border-radius-base; - .box-shadow(0 6px 12px rgba(0,0,0,.175)); - background-clip: padding-box; - - // Aligns the dropdown menu to right - // - // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` - &.pull-right { - right: 0; - left: auto; - } - - // Dividers (basically an hr) within the dropdown - .divider { - .nav-divider(@dropdown-divider-bg); - } - - // Links within the dropdown menu - > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: @line-height-base; - color: @dropdown-link-color; - white-space: nowrap; // prevent links from randomly breaking onto new lines - } -} - -// Hover/Focus state -.dropdown-menu > li > a { - &:hover, - &:focus { - text-decoration: none; - color: @dropdown-link-hover-color; - background-color: @dropdown-link-hover-bg; - } -} - -// Active state -.dropdown-menu > .active > a { - &, - &:hover, - &:focus { - color: @dropdown-link-active-color; - text-decoration: none; - outline: 0; - background-color: @dropdown-link-active-bg; - } -} - -// Disabled state -// -// Gray out text and ensure the hover/focus state remains gray - -.dropdown-menu > .disabled > a { - &, - &:hover, - &:focus { - color: @dropdown-link-disabled-color; - } - - // Nuke hover/focus effects - &:hover, - &:focus { - text-decoration: none; - background-color: transparent; - background-image: none; // Remove CSS gradient - .reset-filter(); - cursor: @cursor-disabled; - } -} - -// Open state for the dropdown -.open { - // Show the menu - > .dropdown-menu { - display: block; - } - - // Remove the outline when :focus is triggered - > a { - outline: 0; - } -} - -// Menu positioning -// -// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown -// menu with the parent. -.dropdown-menu-right { - left: auto; // Reset the default from `.dropdown-menu` - right: 0; -} -// With v3, we enabled auto-flipping if you have a dropdown within a right -// aligned nav component. To enable the undoing of that, we provide an override -// to restore the default dropdown menu alignment. -// -// This is only for left-aligning a dropdown menu within a `.navbar-right` or -// `.pull-right` nav component. -.dropdown-menu-left { - left: 0; - right: auto; -} - -// Dropdown section headers -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: @font-size-small; - line-height: @line-height-base; - color: @dropdown-header-color; - white-space: nowrap; // as with > li > a -} - -// Backdrop to catch body clicks on mobile, etc. -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: (@zindex-dropdown - 10); -} - -// Right aligned dropdowns -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} - -// Allow for dropdowns to go bottom up (aka, dropup-menu) -// -// Just add .dropup after the standard .dropdown class and you're set, bro. -// TODO: abstract this so that the navbar fixed styles are not placed here? - -.dropup, -.navbar-fixed-bottom .dropdown { - // Reverse the caret - .caret { - border-top: 0; - border-bottom: @caret-width-base dashed; - border-bottom: @caret-width-base solid ~"\9"; // IE8 - content: ""; - } - // Different positioning for bottom up menu - .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; - } -} - - -// Component alignment -// -// Reiterate per navbar.less and the modified component alignment there. - -@media (min-width: @grid-float-breakpoint) { - .navbar-right { - .dropdown-menu { - .dropdown-menu-right(); - } - // Necessary for overrides of the default right aligned menu. - // Will remove come v4 in all likelihood. - .dropdown-menu-left { - .dropdown-menu-left(); - } - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/forms.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/forms.less deleted file mode 100644 index 9377d38..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/forms.less +++ /dev/null @@ -1,613 +0,0 @@ -// -// Forms -// -------------------------------------------------- - - -// Normalize non-controls -// -// Restyle and baseline non-control form elements. - -fieldset { - padding: 0; - margin: 0; - border: 0; - // Chrome and Firefox set a `min-width: min-content;` on fieldsets, - // so we reset that to ensure it behaves more like a standard block element. - // See https://github.com/twbs/bootstrap/issues/12359. - min-width: 0; -} - -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: @line-height-computed; - font-size: (@font-size-base * 1.5); - line-height: inherit; - color: @legend-color; - border: 0; - border-bottom: 1px solid @legend-border-color; -} - -label { - display: inline-block; - max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141) - margin-bottom: 5px; - font-weight: bold; -} - - -// Normalize form controls -// -// While most of our form styles require extra classes, some basic normalization -// is required to ensure optimum display with or without those classes to better -// address browser inconsistencies. - -// Override content-box in Normalize (* isn't specific enough) -input[type="search"] { - .box-sizing(border-box); -} - -// Position radios and checkboxes better -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; // IE8-9 - line-height: normal; -} - -input[type="file"] { - display: block; -} - -// Make range inputs behave like textual form controls -input[type="range"] { - display: block; - width: 100%; -} - -// Make multiple select elements height not fixed -select[multiple], -select[size] { - height: auto; -} - -// Focus for file, radio, and checkbox -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - .tab-focus(); -} - -// Adjust output element -output { - display: block; - padding-top: (@padding-base-vertical + 1); - font-size: @font-size-base; - line-height: @line-height-base; - color: @input-color; -} - - -// Common form controls -// -// Shared size and type resets for form controls. Apply `.form-control` to any -// of the following form controls: -// -// select -// textarea -// input[type="text"] -// input[type="password"] -// input[type="datetime"] -// input[type="datetime-local"] -// input[type="date"] -// input[type="month"] -// input[type="time"] -// input[type="week"] -// input[type="number"] -// input[type="email"] -// input[type="url"] -// input[type="search"] -// input[type="tel"] -// input[type="color"] - -.form-control { - display: block; - width: 100%; - height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) - padding: @padding-base-vertical @padding-base-horizontal; - font-size: @font-size-base; - line-height: @line-height-base; - color: @input-color; - background-color: @input-bg; - background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 - border: 1px solid @input-border; - border-radius: @input-border-radius; // Note: This has no effect on s in CSS. - .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); - .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s"); - - // Customize the `:focus` state to imitate native WebKit styles. - .form-control-focus(); - - // Placeholder - .placeholder(); - - // Unstyle the caret on `` -// element gets special love because it's special, and that's a fact! -.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { - height: @input-height; - padding: @padding-vertical @padding-horizontal; - font-size: @font-size; - line-height: @line-height; - border-radius: @border-radius; - - select& { - height: @input-height; - line-height: @input-height; - } - - textarea&, - select[multiple]& { - height: auto; - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/gradients.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/gradients.less deleted file mode 100644 index 0b88a89..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/gradients.less +++ /dev/null @@ -1,59 +0,0 @@ -// Gradients - -#gradient { - - // Horizontal gradient, from left to right - // - // Creates two color stops, start and end, by specifying a color and position for each color stop. - // Color stops are not available in IE9 and below. - .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) { - background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+ - background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12 - background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ - background-repeat: repeat-x; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down - } - - // Vertical gradient, from top to bottom - // - // Creates two color stops, start and end, by specifying a color and position for each color stop. - // Color stops are not available in IE9 and below. - .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) { - background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+ - background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12 - background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ - background-repeat: repeat-x; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down - } - - .directional(@start-color: #555; @end-color: #333; @deg: 45deg) { - background-repeat: repeat-x; - background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+ - background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12 - background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ - } - .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) { - background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color); - background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color); - background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color); - background-repeat: no-repeat; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback - } - .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) { - background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color); - background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color); - background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color); - background-repeat: no-repeat; - filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback - } - .radial(@inner-color: #555; @outer-color: #333) { - background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color); - background-image: radial-gradient(circle, @inner-color, @outer-color); - background-repeat: no-repeat; - } - .striped(@color: rgba(255,255,255,.15); @angle: 45deg) { - background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); - background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/grid-framework.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/grid-framework.less deleted file mode 100644 index 8c23eed..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/grid-framework.less +++ /dev/null @@ -1,91 +0,0 @@ -// Framework grid generation -// -// Used only by Bootstrap to generate the correct number of grid classes given -// any value of `@grid-columns`. - -.make-grid-columns() { - // Common styles for all sizes of grid columns, widths 1-12 - .col(@index) { // initial - @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}"; - .col((@index + 1), @item); - } - .col(@index, @list) when (@index =< @grid-columns) { // general; "=<" isn't a typo - @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}"; - .col((@index + 1), ~"@{list}, @{item}"); - } - .col(@index, @list) when (@index > @grid-columns) { // terminal - @{list} { - position: relative; - // Prevent columns from collapsing when empty - min-height: 1px; - // Inner gutter via padding - padding-left: ceil((@grid-gutter-width / 2)); - padding-right: floor((@grid-gutter-width / 2)); - } - } - .col(1); // kickstart it -} - -.float-grid-columns(@class) { - .col(@index) { // initial - @item: ~".col-@{class}-@{index}"; - .col((@index + 1), @item); - } - .col(@index, @list) when (@index =< @grid-columns) { // general - @item: ~".col-@{class}-@{index}"; - .col((@index + 1), ~"@{list}, @{item}"); - } - .col(@index, @list) when (@index > @grid-columns) { // terminal - @{list} { - float: left; - } - } - .col(1); // kickstart it -} - -.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) { - .col-@{class}-@{index} { - width: percentage((@index / @grid-columns)); - } -} -.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) { - .col-@{class}-push-@{index} { - left: percentage((@index / @grid-columns)); - } -} -.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) { - .col-@{class}-push-0 { - left: auto; - } -} -.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) { - .col-@{class}-pull-@{index} { - right: percentage((@index / @grid-columns)); - } -} -.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) { - .col-@{class}-pull-0 { - right: auto; - } -} -.calc-grid-column(@index, @class, @type) when (@type = offset) { - .col-@{class}-offset-@{index} { - margin-left: percentage((@index / @grid-columns)); - } -} - -// Basic looping in LESS -.loop-grid-columns(@index, @class, @type) when (@index >= 0) { - .calc-grid-column(@index, @class, @type); - // next iteration - .loop-grid-columns((@index - 1), @class, @type); -} - -// Create grid for specific class -.make-grid(@class) { - .float-grid-columns(@class); - .loop-grid-columns(@grid-columns, @class, width); - .loop-grid-columns(@grid-columns, @class, pull); - .loop-grid-columns(@grid-columns, @class, push); - .loop-grid-columns(@grid-columns, @class, offset); -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/grid.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/grid.less deleted file mode 100644 index df496d0..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/grid.less +++ /dev/null @@ -1,122 +0,0 @@ -// Grid system -// -// Generate semantic grid columns with these mixins. - -// Centered container element -.container-fixed(@gutter: @grid-gutter-width) { - margin-right: auto; - margin-left: auto; - padding-left: floor((@gutter / 2)); - padding-right: ceil((@gutter / 2)); - &:extend(.clearfix all); -} - -// Creates a wrapper for a series of columns -.make-row(@gutter: @grid-gutter-width) { - margin-left: ceil((@gutter / -2)); - margin-right: floor((@gutter / -2)); - &:extend(.clearfix all); -} - -// Generate the extra small columns -.make-xs-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - float: left; - width: percentage((@columns / @grid-columns)); - min-height: 1px; - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); -} -.make-xs-column-offset(@columns) { - margin-left: percentage((@columns / @grid-columns)); -} -.make-xs-column-push(@columns) { - left: percentage((@columns / @grid-columns)); -} -.make-xs-column-pull(@columns) { - right: percentage((@columns / @grid-columns)); -} - -// Generate the small columns -.make-sm-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - min-height: 1px; - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - - @media (min-width: @screen-sm-min) { - float: left; - width: percentage((@columns / @grid-columns)); - } -} -.make-sm-column-offset(@columns) { - @media (min-width: @screen-sm-min) { - margin-left: percentage((@columns / @grid-columns)); - } -} -.make-sm-column-push(@columns) { - @media (min-width: @screen-sm-min) { - left: percentage((@columns / @grid-columns)); - } -} -.make-sm-column-pull(@columns) { - @media (min-width: @screen-sm-min) { - right: percentage((@columns / @grid-columns)); - } -} - -// Generate the medium columns -.make-md-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - min-height: 1px; - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - - @media (min-width: @screen-md-min) { - float: left; - width: percentage((@columns / @grid-columns)); - } -} -.make-md-column-offset(@columns) { - @media (min-width: @screen-md-min) { - margin-left: percentage((@columns / @grid-columns)); - } -} -.make-md-column-push(@columns) { - @media (min-width: @screen-md-min) { - left: percentage((@columns / @grid-columns)); - } -} -.make-md-column-pull(@columns) { - @media (min-width: @screen-md-min) { - right: percentage((@columns / @grid-columns)); - } -} - -// Generate the large columns -.make-lg-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - min-height: 1px; - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - - @media (min-width: @screen-lg-min) { - float: left; - width: percentage((@columns / @grid-columns)); - } -} -.make-lg-column-offset(@columns) { - @media (min-width: @screen-lg-min) { - margin-left: percentage((@columns / @grid-columns)); - } -} -.make-lg-column-push(@columns) { - @media (min-width: @screen-lg-min) { - left: percentage((@columns / @grid-columns)); - } -} -.make-lg-column-pull(@columns) { - @media (min-width: @screen-lg-min) { - right: percentage((@columns / @grid-columns)); - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/hide-text.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/hide-text.less deleted file mode 100644 index 2bb84a3..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/hide-text.less +++ /dev/null @@ -1,21 +0,0 @@ -// CSS image replacement -// -// Heads up! v3 launched with only `.hide-text()`, but per our pattern for -// mixins being reused as classes with the same name, this doesn't hold up. As -// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. -// -// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 - -// Deprecated as of v3.0.1 (has been removed in v4) -.hide-text() { - font: ~"0/0" a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} - -// New mixin to use as of v3.0.1 -.text-hide() { - .hide-text(); -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/image.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/image.less deleted file mode 100644 index f233cb3..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/image.less +++ /dev/null @@ -1,33 +0,0 @@ -// Image Mixins -// - Responsive image -// - Retina image - - -// Responsive image -// -// Keep images from scaling beyond the width of their parents. -.img-responsive(@display: block) { - display: @display; - max-width: 100%; // Part 1: Set a maximum relative to the parent - height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching -} - - -// Retina image -// -// Short retina mixin for setting background-image and -size. Note that the -// spelling of `min--moz-device-pixel-ratio` is intentional. -.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) { - background-image: url("@{file-1x}"); - - @media - only screen and (-webkit-min-device-pixel-ratio: 2), - only screen and ( min--moz-device-pixel-ratio: 2), - only screen and ( -o-min-device-pixel-ratio: 2/1), - only screen and ( min-device-pixel-ratio: 2), - only screen and ( min-resolution: 192dpi), - only screen and ( min-resolution: 2dppx) { - background-image: url("@{file-2x}"); - background-size: @width-1x @height-1x; - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/labels.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/labels.less deleted file mode 100644 index 9f7a67e..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/labels.less +++ /dev/null @@ -1,12 +0,0 @@ -// Labels - -.label-variant(@color) { - background-color: @color; - - &[href] { - &:hover, - &:focus { - background-color: darken(@color, 10%); - } - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/list-group.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/list-group.less deleted file mode 100644 index 03aa190..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/list-group.less +++ /dev/null @@ -1,30 +0,0 @@ -// List Groups - -.list-group-item-variant(@state; @background; @color) { - .list-group-item-@{state} { - color: @color; - background-color: @background; - - a&, - button& { - color: @color; - - .list-group-item-heading { - color: inherit; - } - - &:hover, - &:focus { - color: @color; - background-color: darken(@background, 5%); - } - &.active, - &.active:hover, - &.active:focus { - color: #fff; - background-color: @color; - border-color: @color; - } - } - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/nav-divider.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/nav-divider.less deleted file mode 100644 index feb1e9e..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/nav-divider.less +++ /dev/null @@ -1,10 +0,0 @@ -// Horizontal dividers -// -// Dividers (basically an hr) within dropdowns and nav lists - -.nav-divider(@color: #e5e5e5) { - height: 1px; - margin: ((@line-height-computed / 2) - 1) 0; - overflow: hidden; - background-color: @color; -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/nav-vertical-align.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/nav-vertical-align.less deleted file mode 100644 index d458c78..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/nav-vertical-align.less +++ /dev/null @@ -1,9 +0,0 @@ -// Navbar vertical align -// -// Vertically center elements in the navbar. -// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. - -.navbar-vertical-align(@element-height) { - margin-top: ((@navbar-height - @element-height) / 2); - margin-bottom: ((@navbar-height - @element-height) / 2); -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/opacity.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/opacity.less deleted file mode 100644 index 33ed25c..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/opacity.less +++ /dev/null @@ -1,8 +0,0 @@ -// Opacity - -.opacity(@opacity) { - opacity: @opacity; - // IE8 filter - @opacity-ie: (@opacity * 100); - filter: ~"alpha(opacity=@{opacity-ie})"; -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/pagination.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/pagination.less deleted file mode 100644 index 618804f..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/pagination.less +++ /dev/null @@ -1,24 +0,0 @@ -// Pagination - -.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { - > li { - > a, - > span { - padding: @padding-vertical @padding-horizontal; - font-size: @font-size; - line-height: @line-height; - } - &:first-child { - > a, - > span { - .border-left-radius(@border-radius); - } - } - &:last-child { - > a, - > span { - .border-right-radius(@border-radius); - } - } - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/panels.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/panels.less deleted file mode 100644 index 49ee10d..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/panels.less +++ /dev/null @@ -1,24 +0,0 @@ -// Panels - -.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { - border-color: @border; - - & > .panel-heading { - color: @heading-text-color; - background-color: @heading-bg-color; - border-color: @heading-border; - - + .panel-collapse > .panel-body { - border-top-color: @border; - } - .badge { - color: @heading-bg-color; - background-color: @heading-text-color; - } - } - & > .panel-footer { - + .panel-collapse > .panel-body { - border-bottom-color: @border; - } - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/progress-bar.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/progress-bar.less deleted file mode 100644 index f07996a..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/progress-bar.less +++ /dev/null @@ -1,10 +0,0 @@ -// Progress bars - -.progress-bar-variant(@color) { - background-color: @color; - - // Deprecated parent class requirement as of v3.2.0 - .progress-striped & { - #gradient > .striped(); - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/reset-filter.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/reset-filter.less deleted file mode 100644 index 68cdb5e..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/reset-filter.less +++ /dev/null @@ -1,8 +0,0 @@ -// Reset filters for IE -// -// When you need to remove a gradient background, do not forget to use this to reset -// the IE filter for IE9 and below. - -.reset-filter() { - filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/reset-text.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/reset-text.less deleted file mode 100644 index 58dd4d1..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/reset-text.less +++ /dev/null @@ -1,18 +0,0 @@ -.reset-text() { - font-family: @font-family-base; - // We deliberately do NOT reset font-size. - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: @line-height-base; - text-align: left; // Fallback for where `start` is not supported - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/resize.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/resize.less deleted file mode 100644 index 3acd3af..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/resize.less +++ /dev/null @@ -1,6 +0,0 @@ -// Resize anything - -.resizable(@direction) { - resize: @direction; // Options: horizontal, vertical, both - overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/responsive-visibility.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/responsive-visibility.less deleted file mode 100644 index ecf1e97..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/responsive-visibility.less +++ /dev/null @@ -1,15 +0,0 @@ -// Responsive utilities - -// -// More easily include all the states for responsive-utilities.less. -.responsive-visibility() { - display: block !important; - table& { display: table !important; } - tr& { display: table-row !important; } - th&, - td& { display: table-cell !important; } -} - -.responsive-invisibility() { - display: none !important; -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/size.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/size.less deleted file mode 100644 index a8be650..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/size.less +++ /dev/null @@ -1,10 +0,0 @@ -// Sizing shortcuts - -.size(@width; @height) { - width: @width; - height: @height; -} - -.square(@size) { - .size(@size; @size); -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/tab-focus.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/tab-focus.less deleted file mode 100644 index d12d236..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/tab-focus.less +++ /dev/null @@ -1,9 +0,0 @@ -// WebKit-style focus - -.tab-focus() { - // WebKit-specific. Other browsers will keep their default outline style. - // (Initially tried to also force default via `outline: initial`, - // but that seems to erroneously remove the outline in Firefox altogether.) - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/table-row.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/table-row.less deleted file mode 100644 index 0f287f1..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/table-row.less +++ /dev/null @@ -1,28 +0,0 @@ -// Tables - -.table-row-variant(@state; @background) { - // Exact selectors below required to override `.table-striped` and prevent - // inheritance to nested tables. - .table > thead > tr, - .table > tbody > tr, - .table > tfoot > tr { - > td.@{state}, - > th.@{state}, - &.@{state} > td, - &.@{state} > th { - background-color: @background; - } - } - - // Hover states for `.table-hover` - // Note: this is not available for cells or rows within `thead` or `tfoot`. - .table-hover > tbody > tr { - > td.@{state}:hover, - > th.@{state}:hover, - &.@{state}:hover > td, - &:hover > .@{state}, - &.@{state}:hover > th { - background-color: darken(@background, 5%); - } - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/text-emphasis.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/text-emphasis.less deleted file mode 100644 index 9e8a77a..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/text-emphasis.less +++ /dev/null @@ -1,9 +0,0 @@ -// Typography - -.text-emphasis-variant(@color) { - color: @color; - a&:hover, - a&:focus { - color: darken(@color, 10%); - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/text-overflow.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/text-overflow.less deleted file mode 100644 index c11ad2f..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/text-overflow.less +++ /dev/null @@ -1,8 +0,0 @@ -// Text overflow -// Requires inline-block or block for proper styling - -.text-overflow() { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/vendor-prefixes.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/vendor-prefixes.less deleted file mode 100644 index 2b5e74b..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/mixins/vendor-prefixes.less +++ /dev/null @@ -1,227 +0,0 @@ -// Vendor Prefixes -// -// All vendor mixins are deprecated as of v3.2.0 due to the introduction of -// Autoprefixer in our Gruntfile. They have been removed in v4. - -// - Animations -// - Backface visibility -// - Box shadow -// - Box sizing -// - Content columns -// - Hyphens -// - Placeholder text -// - Transformations -// - Transitions -// - User Select - - -// Animations -.animation(@animation) { - -webkit-animation: @animation; - -o-animation: @animation; - animation: @animation; -} -.animation-name(@name) { - -webkit-animation-name: @name; - animation-name: @name; -} -.animation-duration(@duration) { - -webkit-animation-duration: @duration; - animation-duration: @duration; -} -.animation-timing-function(@timing-function) { - -webkit-animation-timing-function: @timing-function; - animation-timing-function: @timing-function; -} -.animation-delay(@delay) { - -webkit-animation-delay: @delay; - animation-delay: @delay; -} -.animation-iteration-count(@iteration-count) { - -webkit-animation-iteration-count: @iteration-count; - animation-iteration-count: @iteration-count; -} -.animation-direction(@direction) { - -webkit-animation-direction: @direction; - animation-direction: @direction; -} -.animation-fill-mode(@fill-mode) { - -webkit-animation-fill-mode: @fill-mode; - animation-fill-mode: @fill-mode; -} - -// Backface visibility -// Prevent browsers from flickering when using CSS 3D transforms. -// Default value is `visible`, but can be changed to `hidden` - -.backface-visibility(@visibility) { - -webkit-backface-visibility: @visibility; - -moz-backface-visibility: @visibility; - backface-visibility: @visibility; -} - -// Drop shadows -// -// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's -// supported browsers that have box shadow capabilities now support it. - -.box-shadow(@shadow) { - -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1 - box-shadow: @shadow; -} - -// Box sizing -.box-sizing(@boxmodel) { - -webkit-box-sizing: @boxmodel; - -moz-box-sizing: @boxmodel; - box-sizing: @boxmodel; -} - -// CSS3 Content Columns -.content-columns(@column-count; @column-gap: @grid-gutter-width) { - -webkit-column-count: @column-count; - -moz-column-count: @column-count; - column-count: @column-count; - -webkit-column-gap: @column-gap; - -moz-column-gap: @column-gap; - column-gap: @column-gap; -} - -// Optional hyphenation -.hyphens(@mode: auto) { - word-wrap: break-word; - -webkit-hyphens: @mode; - -moz-hyphens: @mode; - -ms-hyphens: @mode; // IE10+ - -o-hyphens: @mode; - hyphens: @mode; -} - -// Placeholder text -.placeholder(@color: @input-color-placeholder) { - // Firefox - &::-moz-placeholder { - color: @color; - opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526 - } - &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+ - &::-webkit-input-placeholder { color: @color; } // Safari and Chrome -} - -// Transformations -.scale(@ratio) { - -webkit-transform: scale(@ratio); - -ms-transform: scale(@ratio); // IE9 only - -o-transform: scale(@ratio); - transform: scale(@ratio); -} -.scale(@ratioX; @ratioY) { - -webkit-transform: scale(@ratioX, @ratioY); - -ms-transform: scale(@ratioX, @ratioY); // IE9 only - -o-transform: scale(@ratioX, @ratioY); - transform: scale(@ratioX, @ratioY); -} -.scaleX(@ratio) { - -webkit-transform: scaleX(@ratio); - -ms-transform: scaleX(@ratio); // IE9 only - -o-transform: scaleX(@ratio); - transform: scaleX(@ratio); -} -.scaleY(@ratio) { - -webkit-transform: scaleY(@ratio); - -ms-transform: scaleY(@ratio); // IE9 only - -o-transform: scaleY(@ratio); - transform: scaleY(@ratio); -} -.skew(@x; @y) { - -webkit-transform: skewX(@x) skewY(@y); - -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+ - -o-transform: skewX(@x) skewY(@y); - transform: skewX(@x) skewY(@y); -} -.translate(@x; @y) { - -webkit-transform: translate(@x, @y); - -ms-transform: translate(@x, @y); // IE9 only - -o-transform: translate(@x, @y); - transform: translate(@x, @y); -} -.translate3d(@x; @y; @z) { - -webkit-transform: translate3d(@x, @y, @z); - transform: translate3d(@x, @y, @z); -} -.rotate(@degrees) { - -webkit-transform: rotate(@degrees); - -ms-transform: rotate(@degrees); // IE9 only - -o-transform: rotate(@degrees); - transform: rotate(@degrees); -} -.rotateX(@degrees) { - -webkit-transform: rotateX(@degrees); - -ms-transform: rotateX(@degrees); // IE9 only - -o-transform: rotateX(@degrees); - transform: rotateX(@degrees); -} -.rotateY(@degrees) { - -webkit-transform: rotateY(@degrees); - -ms-transform: rotateY(@degrees); // IE9 only - -o-transform: rotateY(@degrees); - transform: rotateY(@degrees); -} -.perspective(@perspective) { - -webkit-perspective: @perspective; - -moz-perspective: @perspective; - perspective: @perspective; -} -.perspective-origin(@perspective) { - -webkit-perspective-origin: @perspective; - -moz-perspective-origin: @perspective; - perspective-origin: @perspective; -} -.transform-origin(@origin) { - -webkit-transform-origin: @origin; - -moz-transform-origin: @origin; - -ms-transform-origin: @origin; // IE9 only - transform-origin: @origin; -} - - -// Transitions - -.transition(@transition) { - -webkit-transition: @transition; - -o-transition: @transition; - transition: @transition; -} -.transition-property(@transition-property) { - -webkit-transition-property: @transition-property; - transition-property: @transition-property; -} -.transition-delay(@transition-delay) { - -webkit-transition-delay: @transition-delay; - transition-delay: @transition-delay; -} -.transition-duration(@transition-duration) { - -webkit-transition-duration: @transition-duration; - transition-duration: @transition-duration; -} -.transition-timing-function(@timing-function) { - -webkit-transition-timing-function: @timing-function; - transition-timing-function: @timing-function; -} -.transition-transform(@transition) { - -webkit-transition: -webkit-transform @transition; - -moz-transition: -moz-transform @transition; - -o-transition: -o-transform @transition; - transition: transform @transition; -} - - -// User select -// For selecting text on the page - -.user-select(@select) { - -webkit-user-select: @select; - -moz-user-select: @select; - -ms-user-select: @select; // IE10+ - user-select: @select; -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/modals.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/modals.less deleted file mode 100644 index 767ce36..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/modals.less +++ /dev/null @@ -1,150 +0,0 @@ -// -// Modals -// -------------------------------------------------- - -// .modal-open - body class for killing the scroll -// .modal - container to scroll within -// .modal-dialog - positioning shell for the actual modal -// .modal-content - actual modal w/ bg and corners and shit - -// Kill the scroll on the body -.modal-open { - overflow: hidden; -} - -// Container that the modal scrolls within -.modal { - display: none; - overflow: hidden; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: @zindex-modal; - -webkit-overflow-scrolling: touch; - - // Prevent Chrome on Windows from adding a focus outline. For details, see - // https://github.com/twbs/bootstrap/pull/10951. - outline: 0; - - // When fading in the modal, animate it to slide down - &.fade .modal-dialog { - .translate(0, -25%); - .transition-transform(~"0.3s ease-out"); - } - &.in .modal-dialog { .translate(0, 0) } -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} - -// Shell div to position the modal with bottom padding -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} - -// Actual modal -.modal-content { - position: relative; - background-color: @modal-content-bg; - border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc) - border: 1px solid @modal-content-border-color; - border-radius: @border-radius-large; - .box-shadow(0 3px 9px rgba(0,0,0,.5)); - background-clip: padding-box; - // Remove focus outline from opened modal - outline: 0; -} - -// Modal background -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: @zindex-modal-background; - background-color: @modal-backdrop-bg; - // Fade for backdrop - &.fade { .opacity(0); } - &.in { .opacity(@modal-backdrop-opacity); } -} - -// Modal header -// Top section of the modal w/ title and dismiss -.modal-header { - padding: @modal-title-padding; - border-bottom: 1px solid @modal-header-border-color; - &:extend(.clearfix all); -} -// Close icon -.modal-header .close { - margin-top: -2px; -} - -// Title text within header -.modal-title { - margin: 0; - line-height: @modal-title-line-height; -} - -// Modal body -// Where all modal content resides (sibling of .modal-header and .modal-footer) -.modal-body { - position: relative; - padding: @modal-inner-padding; -} - -// Footer (for actions) -.modal-footer { - padding: @modal-inner-padding; - text-align: right; // right align buttons - border-top: 1px solid @modal-footer-border-color; - &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons - - // Properly space out buttons - .btn + .btn { - margin-left: 5px; - margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs - } - // but override that for button groups - .btn-group .btn + .btn { - margin-left: -1px; - } - // and override it for block buttons as well - .btn-block + .btn-block { - margin-left: 0; - } -} - -// Measure scrollbar width for padding body during modal show/hide -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} - -// Scale up the modal -@media (min-width: @screen-sm-min) { - // Automatically set modal's width for larger viewports - .modal-dialog { - width: @modal-md; - margin: 30px auto; - } - .modal-content { - .box-shadow(0 5px 15px rgba(0,0,0,.5)); - } - - // Modal sizes - .modal-sm { width: @modal-sm; } -} - -@media (min-width: @screen-md-min) { - .modal-lg { width: @modal-lg; } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/navbar.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/navbar.less deleted file mode 100644 index 6d751bb..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/navbar.less +++ /dev/null @@ -1,660 +0,0 @@ -// -// Navbars -// -------------------------------------------------- - - -// Wrapper and base class -// -// Provide a static navbar from which we expand to create full-width, fixed, and -// other navbar variations. - -.navbar { - position: relative; - min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode) - margin-bottom: @navbar-margin-bottom; - border: 1px solid transparent; - - // Prevent floats from breaking the navbar - &:extend(.clearfix all); - - @media (min-width: @grid-float-breakpoint) { - border-radius: @navbar-border-radius; - } -} - - -// Navbar heading -// -// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy -// styling of responsive aspects. - -.navbar-header { - &:extend(.clearfix all); - - @media (min-width: @grid-float-breakpoint) { - float: left; - } -} - - -// Navbar collapse (body) -// -// Group your navbar content into this for easy collapsing and expanding across -// various device sizes. By default, this content is collapsed when <768px, but -// will expand past that for a horizontal display. -// -// To start (on mobile devices) the navbar links, forms, and buttons are stacked -// vertically and include a `max-height` to overflow in case you have too much -// content for the user's viewport. - -.navbar-collapse { - overflow-x: visible; - padding-right: @navbar-padding-horizontal; - padding-left: @navbar-padding-horizontal; - border-top: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255,255,255,.1); - &:extend(.clearfix all); - -webkit-overflow-scrolling: touch; - - &.in { - overflow-y: auto; - } - - @media (min-width: @grid-float-breakpoint) { - width: auto; - border-top: 0; - box-shadow: none; - - &.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; // Override default setting - overflow: visible !important; - } - - &.in { - overflow-y: visible; - } - - // Undo the collapse side padding for navbars with containers to ensure - // alignment of right-aligned contents. - .navbar-fixed-top &, - .navbar-static-top &, - .navbar-fixed-bottom & { - padding-left: 0; - padding-right: 0; - } - } -} - -.navbar-fixed-top, -.navbar-fixed-bottom { - .navbar-collapse { - max-height: @navbar-collapse-max-height; - - @media (max-device-width: @screen-xs-min) and (orientation: landscape) { - max-height: 200px; - } - } -} - - -// Both navbar header and collapse -// -// When a container is present, change the behavior of the header and collapse. - -.container, -.container-fluid { - > .navbar-header, - > .navbar-collapse { - margin-right: -@navbar-padding-horizontal; - margin-left: -@navbar-padding-horizontal; - - @media (min-width: @grid-float-breakpoint) { - margin-right: 0; - margin-left: 0; - } - } -} - - -// -// Navbar alignment options -// -// Display the navbar across the entirety of the page or fixed it to the top or -// bottom of the page. - -// Static top (unfixed, but 100% wide) navbar -.navbar-static-top { - z-index: @zindex-navbar; - border-width: 0 0 1px; - - @media (min-width: @grid-float-breakpoint) { - border-radius: 0; - } -} - -// Fix the top/bottom navbars when screen real estate supports it -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: @zindex-navbar-fixed; - - // Undo the rounded corners - @media (min-width: @grid-float-breakpoint) { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; // override .navbar defaults - border-width: 1px 0 0; -} - - -// Brand/project name - -.navbar-brand { - float: left; - padding: @navbar-padding-vertical @navbar-padding-horizontal; - font-size: @font-size-large; - line-height: @line-height-computed; - height: @navbar-height; - - &:hover, - &:focus { - text-decoration: none; - } - - > img { - display: block; - } - - @media (min-width: @grid-float-breakpoint) { - .navbar > .container &, - .navbar > .container-fluid & { - margin-left: -@navbar-padding-horizontal; - } - } -} - - -// Navbar toggle -// -// Custom button for toggling the `.navbar-collapse`, powered by the collapse -// JavaScript plugin. - -.navbar-toggle { - position: relative; - float: right; - margin-right: @navbar-padding-horizontal; - padding: 9px 10px; - .navbar-vertical-align(34px); - background-color: transparent; - background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 - border: 1px solid transparent; - border-radius: @border-radius-base; - - // We remove the `outline` here, but later compensate by attaching `:hover` - // styles to `:focus`. - &:focus { - outline: 0; - } - - // Bars - .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; - } - .icon-bar + .icon-bar { - margin-top: 4px; - } - - @media (min-width: @grid-float-breakpoint) { - display: none; - } -} - - -// Navbar nav links -// -// Builds on top of the `.nav` components with its own modifier class to make -// the nav the full height of the horizontal nav (above 768px). - -.navbar-nav { - margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal; - - > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: @line-height-computed; - } - - @media (max-width: @grid-float-breakpoint-max) { - // Dropdowns get custom display when collapsed - .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - box-shadow: none; - > li > a, - .dropdown-header { - padding: 5px 15px 5px 25px; - } - > li > a { - line-height: @line-height-computed; - &:hover, - &:focus { - background-image: none; - } - } - } - } - - // Uncollapse the nav - @media (min-width: @grid-float-breakpoint) { - float: left; - margin: 0; - - > li { - float: left; - > a { - padding-top: @navbar-padding-vertical; - padding-bottom: @navbar-padding-vertical; - } - } - } -} - - -// Navbar form -// -// Extension of the `.form-inline` with some extra flavor for optimum display in -// our navbars. - -.navbar-form { - margin-left: -@navbar-padding-horizontal; - margin-right: -@navbar-padding-horizontal; - padding: 10px @navbar-padding-horizontal; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); - .box-shadow(@shadow); - - // Mixin behavior for optimum display - .form-inline(); - - .form-group { - @media (max-width: @grid-float-breakpoint-max) { - margin-bottom: 5px; - - &:last-child { - margin-bottom: 0; - } - } - } - - // Vertically center in expanded, horizontal navbar - .navbar-vertical-align(@input-height-base); - - // Undo 100% width for pull classes - @media (min-width: @grid-float-breakpoint) { - width: auto; - border: 0; - margin-left: 0; - margin-right: 0; - padding-top: 0; - padding-bottom: 0; - .box-shadow(none); - } -} - - -// Dropdown menus - -// Menu position and menu carets -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - .border-top-radius(0); -} -// Menu position and menu caret support for dropups via extra dropup class -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - .border-top-radius(@navbar-border-radius); - .border-bottom-radius(0); -} - - -// Buttons in navbars -// -// Vertically center a button within a navbar (when *not* in a form). - -.navbar-btn { - .navbar-vertical-align(@input-height-base); - - &.btn-sm { - .navbar-vertical-align(@input-height-small); - } - &.btn-xs { - .navbar-vertical-align(22); - } -} - - -// Text in navbars -// -// Add a class to make any element properly align itself vertically within the navbars. - -.navbar-text { - .navbar-vertical-align(@line-height-computed); - - @media (min-width: @grid-float-breakpoint) { - float: left; - margin-left: @navbar-padding-horizontal; - margin-right: @navbar-padding-horizontal; - } -} - - -// Component alignment -// -// Repurpose the pull utilities as their own navbar utilities to avoid specificity -// issues with parents and chaining. Only do this when the navbar is uncollapsed -// though so that navbar contents properly stack and align in mobile. -// -// Declared after the navbar components to ensure more specificity on the margins. - -@media (min-width: @grid-float-breakpoint) { - .navbar-left { .pull-left(); } - .navbar-right { - .pull-right(); - margin-right: -@navbar-padding-horizontal; - - ~ .navbar-right { - margin-right: 0; - } - } -} - - -// Alternate navbars -// -------------------------------------------------- - -// Default navbar -.navbar-default { - background-color: @navbar-default-bg; - border-color: @navbar-default-border; - - .navbar-brand { - color: @navbar-default-brand-color; - &:hover, - &:focus { - color: @navbar-default-brand-hover-color; - background-color: @navbar-default-brand-hover-bg; - } - } - - .navbar-text { - color: @navbar-default-color; - } - - .navbar-nav { - > li > a { - color: @navbar-default-link-color; - - &:hover, - &:focus { - color: @navbar-default-link-hover-color; - background-color: @navbar-default-link-hover-bg; - } - } - > .active > a { - &, - &:hover, - &:focus { - color: @navbar-default-link-active-color; - background-color: @navbar-default-link-active-bg; - } - } - > .disabled > a { - &, - &:hover, - &:focus { - color: @navbar-default-link-disabled-color; - background-color: @navbar-default-link-disabled-bg; - } - } - } - - .navbar-toggle { - border-color: @navbar-default-toggle-border-color; - &:hover, - &:focus { - background-color: @navbar-default-toggle-hover-bg; - } - .icon-bar { - background-color: @navbar-default-toggle-icon-bar-bg; - } - } - - .navbar-collapse, - .navbar-form { - border-color: @navbar-default-border; - } - - // Dropdown menu items - .navbar-nav { - // Remove background color from open dropdown - > .open > a { - &, - &:hover, - &:focus { - background-color: @navbar-default-link-active-bg; - color: @navbar-default-link-active-color; - } - } - - @media (max-width: @grid-float-breakpoint-max) { - // Dropdowns get custom display when collapsed - .open .dropdown-menu { - > li > a { - color: @navbar-default-link-color; - &:hover, - &:focus { - color: @navbar-default-link-hover-color; - background-color: @navbar-default-link-hover-bg; - } - } - > .active > a { - &, - &:hover, - &:focus { - color: @navbar-default-link-active-color; - background-color: @navbar-default-link-active-bg; - } - } - > .disabled > a { - &, - &:hover, - &:focus { - color: @navbar-default-link-disabled-color; - background-color: @navbar-default-link-disabled-bg; - } - } - } - } - } - - - // Links in navbars - // - // Add a class to ensure links outside the navbar nav are colored correctly. - - .navbar-link { - color: @navbar-default-link-color; - &:hover { - color: @navbar-default-link-hover-color; - } - } - - .btn-link { - color: @navbar-default-link-color; - &:hover, - &:focus { - color: @navbar-default-link-hover-color; - } - &[disabled], - fieldset[disabled] & { - &:hover, - &:focus { - color: @navbar-default-link-disabled-color; - } - } - } -} - -// Inverse navbar - -.navbar-inverse { - background-color: @navbar-inverse-bg; - border-color: @navbar-inverse-border; - - .navbar-brand { - color: @navbar-inverse-brand-color; - &:hover, - &:focus { - color: @navbar-inverse-brand-hover-color; - background-color: @navbar-inverse-brand-hover-bg; - } - } - - .navbar-text { - color: @navbar-inverse-color; - } - - .navbar-nav { - > li > a { - color: @navbar-inverse-link-color; - - &:hover, - &:focus { - color: @navbar-inverse-link-hover-color; - background-color: @navbar-inverse-link-hover-bg; - } - } - > .active > a { - &, - &:hover, - &:focus { - color: @navbar-inverse-link-active-color; - background-color: @navbar-inverse-link-active-bg; - } - } - > .disabled > a { - &, - &:hover, - &:focus { - color: @navbar-inverse-link-disabled-color; - background-color: @navbar-inverse-link-disabled-bg; - } - } - } - - // Darken the responsive nav toggle - .navbar-toggle { - border-color: @navbar-inverse-toggle-border-color; - &:hover, - &:focus { - background-color: @navbar-inverse-toggle-hover-bg; - } - .icon-bar { - background-color: @navbar-inverse-toggle-icon-bar-bg; - } - } - - .navbar-collapse, - .navbar-form { - border-color: darken(@navbar-inverse-bg, 7%); - } - - // Dropdowns - .navbar-nav { - > .open > a { - &, - &:hover, - &:focus { - background-color: @navbar-inverse-link-active-bg; - color: @navbar-inverse-link-active-color; - } - } - - @media (max-width: @grid-float-breakpoint-max) { - // Dropdowns get custom display - .open .dropdown-menu { - > .dropdown-header { - border-color: @navbar-inverse-border; - } - .divider { - background-color: @navbar-inverse-border; - } - > li > a { - color: @navbar-inverse-link-color; - &:hover, - &:focus { - color: @navbar-inverse-link-hover-color; - background-color: @navbar-inverse-link-hover-bg; - } - } - > .active > a { - &, - &:hover, - &:focus { - color: @navbar-inverse-link-active-color; - background-color: @navbar-inverse-link-active-bg; - } - } - > .disabled > a { - &, - &:hover, - &:focus { - color: @navbar-inverse-link-disabled-color; - background-color: @navbar-inverse-link-disabled-bg; - } - } - } - } - } - - .navbar-link { - color: @navbar-inverse-link-color; - &:hover { - color: @navbar-inverse-link-hover-color; - } - } - - .btn-link { - color: @navbar-inverse-link-color; - &:hover, - &:focus { - color: @navbar-inverse-link-hover-color; - } - &[disabled], - fieldset[disabled] & { - &:hover, - &:focus { - color: @navbar-inverse-link-disabled-color; - } - } - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/navs.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/navs.less deleted file mode 100644 index a3d11b1..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/navs.less +++ /dev/null @@ -1,242 +0,0 @@ -// -// Navs -// -------------------------------------------------- - - -// Base class -// -------------------------------------------------- - -.nav { - margin-bottom: 0; - padding-left: 0; // Override default ul/ol - list-style: none; - &:extend(.clearfix all); - - > li { - position: relative; - display: block; - - > a { - position: relative; - display: block; - padding: @nav-link-padding; - &:hover, - &:focus { - text-decoration: none; - background-color: @nav-link-hover-bg; - } - } - - // Disabled state sets text to gray and nukes hover/tab effects - &.disabled > a { - color: @nav-disabled-link-color; - - &:hover, - &:focus { - color: @nav-disabled-link-hover-color; - text-decoration: none; - background-color: transparent; - cursor: @cursor-disabled; - } - } - } - - // Open dropdowns - .open > a { - &, - &:hover, - &:focus { - background-color: @nav-link-hover-bg; - border-color: @link-color; - } - } - - // Nav dividers (deprecated with v3.0.1) - // - // This should have been removed in v3 with the dropping of `.nav-list`, but - // we missed it. We don't currently support this anywhere, but in the interest - // of maintaining backward compatibility in case you use it, it's deprecated. - .nav-divider { - .nav-divider(); - } - - // Prevent IE8 from misplacing imgs - // - // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989 - > li > a > img { - max-width: none; - } -} - - -// Tabs -// ------------------------- - -// Give the tabs something to sit on -.nav-tabs { - border-bottom: 1px solid @nav-tabs-border-color; - > li { - float: left; - // Make the list-items overlay the bottom border - margin-bottom: -1px; - - // Actual tabs (as links) - > a { - margin-right: 2px; - line-height: @line-height-base; - border: 1px solid transparent; - border-radius: @border-radius-base @border-radius-base 0 0; - &:hover { - border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color; - } - } - - // Active state, and its :hover to override normal :hover - &.active > a { - &, - &:hover, - &:focus { - color: @nav-tabs-active-link-hover-color; - background-color: @nav-tabs-active-link-hover-bg; - border: 1px solid @nav-tabs-active-link-hover-border-color; - border-bottom-color: transparent; - cursor: default; - } - } - } - // pulling this in mainly for less shorthand - &.nav-justified { - .nav-justified(); - .nav-tabs-justified(); - } -} - - -// Pills -// ------------------------- -.nav-pills { - > li { - float: left; - - // Links rendered as pills - > a { - border-radius: @nav-pills-border-radius; - } - + li { - margin-left: 2px; - } - - // Active state - &.active > a { - &, - &:hover, - &:focus { - color: @nav-pills-active-link-hover-color; - background-color: @nav-pills-active-link-hover-bg; - } - } - } -} - - -// Stacked pills -.nav-stacked { - > li { - float: none; - + li { - margin-top: 2px; - margin-left: 0; // no need for this gap between nav items - } - } -} - - -// Nav variations -// -------------------------------------------------- - -// Justified nav links -// ------------------------- - -.nav-justified { - width: 100%; - - > li { - float: none; - > a { - text-align: center; - margin-bottom: 5px; - } - } - - > .dropdown .dropdown-menu { - top: auto; - left: auto; - } - - @media (min-width: @screen-sm-min) { - > li { - display: table-cell; - width: 1%; - > a { - margin-bottom: 0; - } - } - } -} - -// Move borders to anchors instead of bottom of list -// -// Mixin for adding on top the shared `.nav-justified` styles for our tabs -.nav-tabs-justified { - border-bottom: 0; - - > li > a { - // Override margin from .nav-tabs - margin-right: 0; - border-radius: @border-radius-base; - } - - > .active > a, - > .active > a:hover, - > .active > a:focus { - border: 1px solid @nav-tabs-justified-link-border-color; - } - - @media (min-width: @screen-sm-min) { - > li > a { - border-bottom: 1px solid @nav-tabs-justified-link-border-color; - border-radius: @border-radius-base @border-radius-base 0 0; - } - > .active > a, - > .active > a:hover, - > .active > a:focus { - border-bottom-color: @nav-tabs-justified-active-link-border-color; - } - } -} - - -// Tabbable tabs -// ------------------------- - -// Hide tabbable panes to start, show them when `.active` -.tab-content { - > .tab-pane { - display: none; - } - > .active { - display: block; - } -} - - -// Dropdowns -// ------------------------- - -// Specific dropdowns -.nav-tabs .dropdown-menu { - // make dropdown border overlap tab border - margin-top: -1px; - // Remove the top rounded corners here since there is a hard edge above the menu - .border-top-radius(0); -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/normalize.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/normalize.less deleted file mode 100644 index 9dddf73..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/normalize.less +++ /dev/null @@ -1,424 +0,0 @@ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ - -// -// 1. Set default font family to sans-serif. -// 2. Prevent iOS and IE text size adjust after device orientation change, -// without disabling user zoom. -// - -html { - font-family: sans-serif; // 1 - -ms-text-size-adjust: 100%; // 2 - -webkit-text-size-adjust: 100%; // 2 -} - -// -// Remove default margin. -// - -body { - margin: 0; -} - -// HTML5 display definitions -// ========================================================================== - -// -// Correct `block` display not defined for any HTML5 element in IE 8/9. -// Correct `block` display not defined for `details` or `summary` in IE 10/11 -// and Firefox. -// Correct `block` display not defined for `main` in IE 11. -// - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} - -// -// 1. Correct `inline-block` display not defined in IE 8/9. -// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. -// - -audio, -canvas, -progress, -video { - display: inline-block; // 1 - vertical-align: baseline; // 2 -} - -// -// Prevent modern browsers from displaying `audio` without controls. -// Remove excess height in iOS 5 devices. -// - -audio:not([controls]) { - display: none; - height: 0; -} - -// -// Address `[hidden]` styling not present in IE 8/9/10. -// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. -// - -[hidden], -template { - display: none; -} - -// Links -// ========================================================================== - -// -// Remove the gray background color from active links in IE 10. -// - -a { - background-color: transparent; -} - -// -// Improve readability of focused elements when they are also in an -// active/hover state. -// - -a:active, -a:hover { - outline: 0; -} - -// Text-level semantics -// ========================================================================== - -// -// Address styling not present in IE 8/9/10/11, Safari, and Chrome. -// - -abbr[title] { - border-bottom: 1px dotted; -} - -// -// Address style set to `bolder` in Firefox 4+, Safari, and Chrome. -// - -b, -strong { - font-weight: bold; -} - -// -// Address styling not present in Safari and Chrome. -// - -dfn { - font-style: italic; -} - -// -// Address variable `h1` font-size and margin within `section` and `article` -// contexts in Firefox 4+, Safari, and Chrome. -// - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -// -// Address styling not present in IE 8/9. -// - -mark { - background: #ff0; - color: #000; -} - -// -// Address inconsistent and variable font size in all browsers. -// - -small { - font-size: 80%; -} - -// -// Prevent `sub` and `sup` affecting `line-height` in all browsers. -// - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -// Embedded content -// ========================================================================== - -// -// Remove border when inside `a` element in IE 8/9/10. -// - -img { - border: 0; -} - -// -// Correct overflow not hidden in IE 9/10/11. -// - -svg:not(:root) { - overflow: hidden; -} - -// Grouping content -// ========================================================================== - -// -// Address margin not present in IE 8/9 and Safari. -// - -figure { - margin: 1em 40px; -} - -// -// Address differences between Firefox and other browsers. -// - -hr { - box-sizing: content-box; - height: 0; -} - -// -// Contain overflow in all browsers. -// - -pre { - overflow: auto; -} - -// -// Address odd `em`-unit font size rendering in all browsers. -// - -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -// Forms -// ========================================================================== - -// -// Known limitation: by default, Chrome and Safari on OS X allow very limited -// styling of `select`, unless a `border` property is set. -// - -// -// 1. Correct color not being inherited. -// Known issue: affects color of disabled elements. -// 2. Correct font properties not being inherited. -// 3. Address margins set differently in Firefox 4+, Safari, and Chrome. -// - -button, -input, -optgroup, -select, -textarea { - color: inherit; // 1 - font: inherit; // 2 - margin: 0; // 3 -} - -// -// Address `overflow` set to `hidden` in IE 8/9/10/11. -// - -button { - overflow: visible; -} - -// -// Address inconsistent `text-transform` inheritance for `button` and `select`. -// All other form control elements do not inherit `text-transform` values. -// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. -// Correct `select` style inheritance in Firefox. -// - -button, -select { - text-transform: none; -} - -// -// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` -// and `video` controls. -// 2. Correct inability to style clickable `input` types in iOS. -// 3. Improve usability and consistency of cursor style between image-type -// `input` and others. -// - -button, -html input[type="button"], // 1 -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; // 2 - cursor: pointer; // 3 -} - -// -// Re-set default cursor for disabled elements. -// - -button[disabled], -html input[disabled] { - cursor: default; -} - -// -// Remove inner padding and border in Firefox 4+. -// - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -// -// Address Firefox 4+ setting `line-height` on `input` using `!important` in -// the UA stylesheet. -// - -input { - line-height: normal; -} - -// -// It's recommended that you don't attempt to style these elements. -// Firefox's implementation doesn't respect box-sizing, padding, or width. -// -// 1. Address box sizing set to `content-box` in IE 8/9/10. -// 2. Remove excess padding in IE 8/9/10. -// - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; // 1 - padding: 0; // 2 -} - -// -// Fix the cursor style for Chrome's increment/decrement buttons. For certain -// `font-size` values of the `input`, it causes the cursor style of the -// decrement button to change from `default` to `text`. -// - -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -// -// 1. Address `appearance` set to `searchfield` in Safari and Chrome. -// 2. Address `box-sizing` set to `border-box` in Safari and Chrome. -// - -input[type="search"] { - -webkit-appearance: textfield; // 1 - box-sizing: content-box; //2 -} - -// -// Remove inner padding and search cancel button in Safari and Chrome on OS X. -// Safari (but not Chrome) clips the cancel button when the search input has -// padding (and `textfield` appearance). -// - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -// -// Define consistent border, margin, and padding. -// - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -// -// 1. Correct `color` not being inherited in IE 8/9/10/11. -// 2. Remove padding so people aren't caught out if they zero out fieldsets. -// - -legend { - border: 0; // 1 - padding: 0; // 2 -} - -// -// Remove default vertical scrollbar in IE 8/9/10/11. -// - -textarea { - overflow: auto; -} - -// -// Don't inherit the `font-weight` (applied by a rule above). -// NOTE: the default cannot safely be changed in Chrome and Safari on OS X. -// - -optgroup { - font-weight: bold; -} - -// Tables -// ========================================================================== - -// -// Remove most spacing between table cells. -// - -table { - border-collapse: collapse; - border-spacing: 0; -} - -td, -th { - padding: 0; -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/pager.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/pager.less deleted file mode 100644 index 41abaaa..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/pager.less +++ /dev/null @@ -1,54 +0,0 @@ -// -// Pager pagination -// -------------------------------------------------- - - -.pager { - padding-left: 0; - margin: @line-height-computed 0; - list-style: none; - text-align: center; - &:extend(.clearfix all); - li { - display: inline; - > a, - > span { - display: inline-block; - padding: 5px 14px; - background-color: @pager-bg; - border: 1px solid @pager-border; - border-radius: @pager-border-radius; - } - - > a:hover, - > a:focus { - text-decoration: none; - background-color: @pager-hover-bg; - } - } - - .next { - > a, - > span { - float: right; - } - } - - .previous { - > a, - > span { - float: left; - } - } - - .disabled { - > a, - > a:hover, - > a:focus, - > span { - color: @pager-disabled-color; - background-color: @pager-bg; - cursor: @cursor-disabled; - } - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/pagination.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/pagination.less deleted file mode 100644 index 31f77aa..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/pagination.less +++ /dev/null @@ -1,89 +0,0 @@ -// -// Pagination (multiple pages) -// -------------------------------------------------- -.pagination { - display: inline-block; - padding-left: 0; - margin: @line-height-computed 0; - border-radius: @border-radius-base; - - > li { - display: inline; // Remove list-style and block-level defaults - > a, - > span { - position: relative; - float: left; // Collapse white-space - padding: @padding-base-vertical @padding-base-horizontal; - line-height: @line-height-base; - text-decoration: none; - color: @pagination-color; - background-color: @pagination-bg; - border: 1px solid @pagination-border; - margin-left: -1px; - } - &:first-child { - > a, - > span { - margin-left: 0; - .border-left-radius(@border-radius-base); - } - } - &:last-child { - > a, - > span { - .border-right-radius(@border-radius-base); - } - } - } - - > li > a, - > li > span { - &:hover, - &:focus { - z-index: 2; - color: @pagination-hover-color; - background-color: @pagination-hover-bg; - border-color: @pagination-hover-border; - } - } - - > .active > a, - > .active > span { - &, - &:hover, - &:focus { - z-index: 3; - color: @pagination-active-color; - background-color: @pagination-active-bg; - border-color: @pagination-active-border; - cursor: default; - } - } - - > .disabled { - > span, - > span:hover, - > span:focus, - > a, - > a:hover, - > a:focus { - color: @pagination-disabled-color; - background-color: @pagination-disabled-bg; - border-color: @pagination-disabled-border; - cursor: @cursor-disabled; - } - } -} - -// Sizing -// -------------------------------------------------- - -// Large -.pagination-lg { - .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large); -} - -// Small -.pagination-sm { - .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small); -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/panels.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/panels.less deleted file mode 100644 index 65aa3a8..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/panels.less +++ /dev/null @@ -1,271 +0,0 @@ -// -// Panels -// -------------------------------------------------- - - -// Base class -.panel { - margin-bottom: @line-height-computed; - background-color: @panel-bg; - border: 1px solid transparent; - border-radius: @panel-border-radius; - .box-shadow(0 1px 1px rgba(0,0,0,.05)); -} - -// Panel contents -.panel-body { - padding: @panel-body-padding; - &:extend(.clearfix all); -} - -// Optional heading -.panel-heading { - padding: @panel-heading-padding; - border-bottom: 1px solid transparent; - .border-top-radius((@panel-border-radius - 1)); - - > .dropdown .dropdown-toggle { - color: inherit; - } -} - -// Within heading, strip any `h*` tag of its default margins for spacing. -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: ceil((@font-size-base * 1.125)); - color: inherit; - - > a, - > small, - > .small, - > small > a, - > .small > a { - color: inherit; - } -} - -// Optional footer (stays gray in every modifier class) -.panel-footer { - padding: @panel-footer-padding; - background-color: @panel-footer-bg; - border-top: 1px solid @panel-inner-border; - .border-bottom-radius((@panel-border-radius - 1)); -} - - -// List groups in panels -// -// By default, space out list group content from panel headings to account for -// any kind of custom content between the two. - -.panel { - > .list-group, - > .panel-collapse > .list-group { - margin-bottom: 0; - - .list-group-item { - border-width: 1px 0; - border-radius: 0; - } - - // Add border top radius for first one - &:first-child { - .list-group-item:first-child { - border-top: 0; - .border-top-radius((@panel-border-radius - 1)); - } - } - - // Add border bottom radius for last one - &:last-child { - .list-group-item:last-child { - border-bottom: 0; - .border-bottom-radius((@panel-border-radius - 1)); - } - } - } - > .panel-heading + .panel-collapse > .list-group { - .list-group-item:first-child { - .border-top-radius(0); - } - } -} -// Collapse space between when there's no additional content. -.panel-heading + .list-group { - .list-group-item:first-child { - border-top-width: 0; - } -} -.list-group + .panel-footer { - border-top-width: 0; -} - -// Tables in panels -// -// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and -// watch it go full width. - -.panel { - > .table, - > .table-responsive > .table, - > .panel-collapse > .table { - margin-bottom: 0; - - caption { - padding-left: @panel-body-padding; - padding-right: @panel-body-padding; - } - } - // Add border top radius for first one - > .table:first-child, - > .table-responsive:first-child > .table:first-child { - .border-top-radius((@panel-border-radius - 1)); - - > thead:first-child, - > tbody:first-child { - > tr:first-child { - border-top-left-radius: (@panel-border-radius - 1); - border-top-right-radius: (@panel-border-radius - 1); - - td:first-child, - th:first-child { - border-top-left-radius: (@panel-border-radius - 1); - } - td:last-child, - th:last-child { - border-top-right-radius: (@panel-border-radius - 1); - } - } - } - } - // Add border bottom radius for last one - > .table:last-child, - > .table-responsive:last-child > .table:last-child { - .border-bottom-radius((@panel-border-radius - 1)); - - > tbody:last-child, - > tfoot:last-child { - > tr:last-child { - border-bottom-left-radius: (@panel-border-radius - 1); - border-bottom-right-radius: (@panel-border-radius - 1); - - td:first-child, - th:first-child { - border-bottom-left-radius: (@panel-border-radius - 1); - } - td:last-child, - th:last-child { - border-bottom-right-radius: (@panel-border-radius - 1); - } - } - } - } - > .panel-body + .table, - > .panel-body + .table-responsive, - > .table + .panel-body, - > .table-responsive + .panel-body { - border-top: 1px solid @table-border-color; - } - > .table > tbody:first-child > tr:first-child th, - > .table > tbody:first-child > tr:first-child td { - border-top: 0; - } - > .table-bordered, - > .table-responsive > .table-bordered { - border: 0; - > thead, - > tbody, - > tfoot { - > tr { - > th:first-child, - > td:first-child { - border-left: 0; - } - > th:last-child, - > td:last-child { - border-right: 0; - } - } - } - > thead, - > tbody { - > tr:first-child { - > td, - > th { - border-bottom: 0; - } - } - } - > tbody, - > tfoot { - > tr:last-child { - > td, - > th { - border-bottom: 0; - } - } - } - } - > .table-responsive { - border: 0; - margin-bottom: 0; - } -} - - -// Collapsible panels (aka, accordion) -// -// Wrap a series of panels in `.panel-group` to turn them into an accordion with -// the help of our collapse JavaScript plugin. - -.panel-group { - margin-bottom: @line-height-computed; - - // Tighten up margin so it's only between panels - .panel { - margin-bottom: 0; - border-radius: @panel-border-radius; - - + .panel { - margin-top: 5px; - } - } - - .panel-heading { - border-bottom: 0; - - + .panel-collapse > .panel-body, - + .panel-collapse > .list-group { - border-top: 1px solid @panel-inner-border; - } - } - - .panel-footer { - border-top: 0; - + .panel-collapse .panel-body { - border-bottom: 1px solid @panel-inner-border; - } - } -} - - -// Contextual variations -.panel-default { - .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border); -} -.panel-primary { - .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border); -} -.panel-success { - .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border); -} -.panel-info { - .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border); -} -.panel-warning { - .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border); -} -.panel-danger { - .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border); -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/popovers.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/popovers.less deleted file mode 100644 index 3a62a64..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/popovers.less +++ /dev/null @@ -1,131 +0,0 @@ -// -// Popovers -// -------------------------------------------------- - - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: @zindex-popover; - display: none; - max-width: @popover-max-width; - padding: 1px; - // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element. - // So reset our font and text properties to avoid inheriting weird values. - .reset-text(); - font-size: @font-size-base; - - background-color: @popover-bg; - background-clip: padding-box; - border: 1px solid @popover-fallback-border-color; - border: 1px solid @popover-border-color; - border-radius: @border-radius-large; - .box-shadow(0 5px 10px rgba(0,0,0,.2)); - - // Offset the popover to account for the popover arrow - &.top { margin-top: -@popover-arrow-width; } - &.right { margin-left: @popover-arrow-width; } - &.bottom { margin-top: @popover-arrow-width; } - &.left { margin-left: -@popover-arrow-width; } -} - -.popover-title { - margin: 0; // reset heading margin - padding: 8px 14px; - font-size: @font-size-base; - background-color: @popover-title-bg; - border-bottom: 1px solid darken(@popover-title-bg, 5%); - border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0; -} - -.popover-content { - padding: 9px 14px; -} - -// Arrows -// -// .arrow is outer, .arrow:after is inner - -.popover > .arrow { - &, - &:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - } -} -.popover > .arrow { - border-width: @popover-arrow-outer-width; -} -.popover > .arrow:after { - border-width: @popover-arrow-width; - content: ""; -} - -.popover { - &.top > .arrow { - left: 50%; - margin-left: -@popover-arrow-outer-width; - border-bottom-width: 0; - border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback - border-top-color: @popover-arrow-outer-color; - bottom: -@popover-arrow-outer-width; - &:after { - content: " "; - bottom: 1px; - margin-left: -@popover-arrow-width; - border-bottom-width: 0; - border-top-color: @popover-arrow-color; - } - } - &.right > .arrow { - top: 50%; - left: -@popover-arrow-outer-width; - margin-top: -@popover-arrow-outer-width; - border-left-width: 0; - border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback - border-right-color: @popover-arrow-outer-color; - &:after { - content: " "; - left: 1px; - bottom: -@popover-arrow-width; - border-left-width: 0; - border-right-color: @popover-arrow-color; - } - } - &.bottom > .arrow { - left: 50%; - margin-left: -@popover-arrow-outer-width; - border-top-width: 0; - border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback - border-bottom-color: @popover-arrow-outer-color; - top: -@popover-arrow-outer-width; - &:after { - content: " "; - top: 1px; - margin-left: -@popover-arrow-width; - border-top-width: 0; - border-bottom-color: @popover-arrow-color; - } - } - - &.left > .arrow { - top: 50%; - right: -@popover-arrow-outer-width; - margin-top: -@popover-arrow-outer-width; - border-right-width: 0; - border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback - border-left-color: @popover-arrow-outer-color; - &:after { - content: " "; - right: 1px; - border-right-width: 0; - border-left-color: @popover-arrow-color; - bottom: -@popover-arrow-width; - } - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/print.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/print.less deleted file mode 100644 index 66e54ab..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/print.less +++ /dev/null @@ -1,101 +0,0 @@ -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ - -// ========================================================================== -// Print styles. -// Inlined to avoid the additional HTTP request: h5bp.com/r -// ========================================================================== - -@media print { - *, - *:before, - *:after { - background: transparent !important; - color: #000 !important; // Black prints faster: h5bp.com/s - box-shadow: none !important; - text-shadow: none !important; - } - - a, - a:visited { - text-decoration: underline; - } - - a[href]:after { - content: " (" attr(href) ")"; - } - - abbr[title]:after { - content: " (" attr(title) ")"; - } - - // Don't show links that are fragment identifiers, - // or use the `javascript:` pseudo protocol - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - - thead { - display: table-header-group; // h5bp.com/t - } - - tr, - img { - page-break-inside: avoid; - } - - img { - max-width: 100% !important; - } - - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - - h2, - h3 { - page-break-after: avoid; - } - - // Bootstrap specific changes start - - // Bootstrap components - .navbar { - display: none; - } - .btn, - .dropup > .btn { - > .caret { - border-top-color: #000 !important; - } - } - .label { - border: 1px solid #000; - } - - .table { - border-collapse: collapse !important; - - td, - th { - background-color: #fff !important; - } - } - .table-bordered { - th, - td { - border: 1px solid #ddd !important; - } - } - - // Bootstrap specific changes end -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/progress-bars.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/progress-bars.less deleted file mode 100644 index 8868a1f..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/progress-bars.less +++ /dev/null @@ -1,87 +0,0 @@ -// -// Progress bars -// -------------------------------------------------- - - -// Bar animations -// ------------------------- - -// WebKit -@-webkit-keyframes progress-bar-stripes { - from { background-position: 40px 0; } - to { background-position: 0 0; } -} - -// Spec and IE10+ -@keyframes progress-bar-stripes { - from { background-position: 40px 0; } - to { background-position: 0 0; } -} - - -// Bar itself -// ------------------------- - -// Outer container -.progress { - overflow: hidden; - height: @line-height-computed; - margin-bottom: @line-height-computed; - background-color: @progress-bg; - border-radius: @progress-border-radius; - .box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); -} - -// Bar of progress -.progress-bar { - float: left; - width: 0%; - height: 100%; - font-size: @font-size-small; - line-height: @line-height-computed; - color: @progress-bar-color; - text-align: center; - background-color: @progress-bar-bg; - .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); - .transition(width .6s ease); -} - -// Striped bars -// -// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the -// `.progress-bar-striped` class, which you just add to an existing -// `.progress-bar`. -.progress-striped .progress-bar, -.progress-bar-striped { - #gradient > .striped(); - background-size: 40px 40px; -} - -// Call animation for the active one -// -// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the -// `.progress-bar.active` approach. -.progress.active .progress-bar, -.progress-bar.active { - .animation(progress-bar-stripes 2s linear infinite); -} - - -// Variations -// ------------------------- - -.progress-bar-success { - .progress-bar-variant(@progress-bar-success-bg); -} - -.progress-bar-info { - .progress-bar-variant(@progress-bar-info-bg); -} - -.progress-bar-warning { - .progress-bar-variant(@progress-bar-warning-bg); -} - -.progress-bar-danger { - .progress-bar-variant(@progress-bar-danger-bg); -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/responsive-embed.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/responsive-embed.less deleted file mode 100644 index 080a511..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/responsive-embed.less +++ /dev/null @@ -1,35 +0,0 @@ -// Embeds responsive -// -// Credit: Nicolas Gallagher and SUIT CSS. - -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; - - .embed-responsive-item, - iframe, - embed, - object, - video { - position: absolute; - top: 0; - left: 0; - bottom: 0; - height: 100%; - width: 100%; - border: 0; - } -} - -// Modifier class for 16:9 aspect ratio -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} - -// Modifier class for 4:3 aspect ratio -.embed-responsive-4by3 { - padding-bottom: 75%; -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/responsive-utilities.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/responsive-utilities.less deleted file mode 100644 index b1db31d..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/responsive-utilities.less +++ /dev/null @@ -1,194 +0,0 @@ -// -// Responsive: Utility classes -// -------------------------------------------------- - - -// IE10 in Windows (Phone) 8 -// -// Support for responsive views via media queries is kind of borked in IE10, for -// Surface/desktop in split view and for Windows Phone 8. This particular fix -// must be accompanied by a snippet of JavaScript to sniff the user agent and -// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at -// our Getting Started page for more information on this bug. -// -// For more information, see the following: -// -// Issue: https://github.com/twbs/bootstrap/issues/10497 -// Docs: http://getbootstrap.com/getting-started/#support-ie10-width -// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/ -// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/ - -@-ms-viewport { - width: device-width; -} - - -// Visibility utilities -// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0 -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - .responsive-invisibility(); -} - -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} - -.visible-xs { - @media (max-width: @screen-xs-max) { - .responsive-visibility(); - } -} -.visible-xs-block { - @media (max-width: @screen-xs-max) { - display: block !important; - } -} -.visible-xs-inline { - @media (max-width: @screen-xs-max) { - display: inline !important; - } -} -.visible-xs-inline-block { - @media (max-width: @screen-xs-max) { - display: inline-block !important; - } -} - -.visible-sm { - @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { - .responsive-visibility(); - } -} -.visible-sm-block { - @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { - display: block !important; - } -} -.visible-sm-inline { - @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { - display: inline !important; - } -} -.visible-sm-inline-block { - @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { - display: inline-block !important; - } -} - -.visible-md { - @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { - .responsive-visibility(); - } -} -.visible-md-block { - @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { - display: block !important; - } -} -.visible-md-inline { - @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { - display: inline !important; - } -} -.visible-md-inline-block { - @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { - display: inline-block !important; - } -} - -.visible-lg { - @media (min-width: @screen-lg-min) { - .responsive-visibility(); - } -} -.visible-lg-block { - @media (min-width: @screen-lg-min) { - display: block !important; - } -} -.visible-lg-inline { - @media (min-width: @screen-lg-min) { - display: inline !important; - } -} -.visible-lg-inline-block { - @media (min-width: @screen-lg-min) { - display: inline-block !important; - } -} - -.hidden-xs { - @media (max-width: @screen-xs-max) { - .responsive-invisibility(); - } -} -.hidden-sm { - @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { - .responsive-invisibility(); - } -} -.hidden-md { - @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { - .responsive-invisibility(); - } -} -.hidden-lg { - @media (min-width: @screen-lg-min) { - .responsive-invisibility(); - } -} - - -// Print utilities -// -// Media queries are placed on the inside to be mixin-friendly. - -// Note: Deprecated .visible-print as of v3.2.0 -.visible-print { - .responsive-invisibility(); - - @media print { - .responsive-visibility(); - } -} -.visible-print-block { - display: none !important; - - @media print { - display: block !important; - } -} -.visible-print-inline { - display: none !important; - - @media print { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; - - @media print { - display: inline-block !important; - } -} - -.hidden-print { - @media print { - .responsive-invisibility(); - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/scaffolding.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/scaffolding.less deleted file mode 100644 index 64a29c6..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/scaffolding.less +++ /dev/null @@ -1,161 +0,0 @@ -// -// Scaffolding -// -------------------------------------------------- - - -// Reset the box-sizing -// -// Heads up! This reset may cause conflicts with some third-party widgets. -// For recommendations on resolving such conflicts, see -// http://getbootstrap.com/getting-started/#third-box-sizing -* { - .box-sizing(border-box); -} -*:before, -*:after { - .box-sizing(border-box); -} - - -// Body reset - -html { - font-size: 10px; - -webkit-tap-highlight-color: rgba(0,0,0,0); -} - -body { - font-family: @font-family-base; - font-size: @font-size-base; - line-height: @line-height-base; - color: @text-color; - background-color: @body-bg; -} - -// Reset fonts for relevant elements -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} - - -// Links - -a { - color: @link-color; - text-decoration: none; - - &:hover, - &:focus { - color: @link-hover-color; - text-decoration: @link-hover-decoration; - } - - &:focus { - .tab-focus(); - } -} - - -// Figures -// -// We reset this here because previously Normalize had no `figure` margins. This -// ensures we don't break anyone's use of the element. - -figure { - margin: 0; -} - - -// Images - -img { - vertical-align: middle; -} - -// Responsive images (ensure images don't scale beyond their parents) -.img-responsive { - .img-responsive(); -} - -// Rounded corners -.img-rounded { - border-radius: @border-radius-large; -} - -// Image thumbnails -// -// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`. -.img-thumbnail { - padding: @thumbnail-padding; - line-height: @line-height-base; - background-color: @thumbnail-bg; - border: 1px solid @thumbnail-border; - border-radius: @thumbnail-border-radius; - .transition(all .2s ease-in-out); - - // Keep them at most 100% wide - .img-responsive(inline-block); -} - -// Perfect circle -.img-circle { - border-radius: 50%; // set radius in percents -} - - -// Horizontal rules - -hr { - margin-top: @line-height-computed; - margin-bottom: @line-height-computed; - border: 0; - border-top: 1px solid @hr-border; -} - - -// Only display content to screen readers -// -// See: http://a11yproject.com/posts/how-to-hide-content - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0,0,0,0); - border: 0; -} - -// Use in conjunction with .sr-only to only display content when it's focused. -// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 -// Credit: HTML5 Boilerplate - -.sr-only-focusable { - &:active, - &:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; - } -} - - -// iOS "clickable elements" fix for role="button" -// -// Fixes "clickability" issue (and more generally, the firing of events such as focus as well) -// for traditionally non-focusable elements with role="button" -// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile - -[role="button"] { - cursor: pointer; -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/tables.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/tables.less deleted file mode 100644 index 2242c03..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/tables.less +++ /dev/null @@ -1,234 +0,0 @@ -// -// Tables -// -------------------------------------------------- - - -table { - background-color: @table-bg; -} -caption { - padding-top: @table-cell-padding; - padding-bottom: @table-cell-padding; - color: @text-muted; - text-align: left; -} -th { - text-align: left; -} - - -// Baseline styles - -.table { - width: 100%; - max-width: 100%; - margin-bottom: @line-height-computed; - // Cells - > thead, - > tbody, - > tfoot { - > tr { - > th, - > td { - padding: @table-cell-padding; - line-height: @line-height-base; - vertical-align: top; - border-top: 1px solid @table-border-color; - } - } - } - // Bottom align for column headings - > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid @table-border-color; - } - // Remove top border from thead by default - > caption + thead, - > colgroup + thead, - > thead:first-child { - > tr:first-child { - > th, - > td { - border-top: 0; - } - } - } - // Account for multiple tbody instances - > tbody + tbody { - border-top: 2px solid @table-border-color; - } - - // Nesting - .table { - background-color: @body-bg; - } -} - - -// Condensed table w/ half padding - -.table-condensed { - > thead, - > tbody, - > tfoot { - > tr { - > th, - > td { - padding: @table-condensed-cell-padding; - } - } - } -} - - -// Bordered version -// -// Add borders all around the table and between all the columns. - -.table-bordered { - border: 1px solid @table-border-color; - > thead, - > tbody, - > tfoot { - > tr { - > th, - > td { - border: 1px solid @table-border-color; - } - } - } - > thead > tr { - > th, - > td { - border-bottom-width: 2px; - } - } -} - - -// Zebra-striping -// -// Default zebra-stripe styles (alternating gray and transparent backgrounds) - -.table-striped { - > tbody > tr:nth-of-type(odd) { - background-color: @table-bg-accent; - } -} - - -// Hover effect -// -// Placed here since it has to come after the potential zebra striping - -.table-hover { - > tbody > tr:hover { - background-color: @table-bg-hover; - } -} - - -// Table cell sizing -// -// Reset default table behavior - -table col[class*="col-"] { - position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623) - float: none; - display: table-column; -} -table { - td, - th { - &[class*="col-"] { - position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623) - float: none; - display: table-cell; - } - } -} - - -// Table backgrounds -// -// Exact selectors below required to override `.table-striped` and prevent -// inheritance to nested tables. - -// Generate the contextual variants -.table-row-variant(active; @table-bg-active); -.table-row-variant(success; @state-success-bg); -.table-row-variant(info; @state-info-bg); -.table-row-variant(warning; @state-warning-bg); -.table-row-variant(danger; @state-danger-bg); - - -// Responsive tables -// -// Wrap your tables in `.table-responsive` and we'll make them mobile friendly -// by enabling horizontal scrolling. Only applies <768px. Everything above that -// will display normally. - -.table-responsive { - overflow-x: auto; - min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837) - - @media screen and (max-width: @screen-xs-max) { - width: 100%; - margin-bottom: (@line-height-computed * 0.75); - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid @table-border-color; - - // Tighten up spacing - > .table { - margin-bottom: 0; - - // Ensure the content doesn't wrap - > thead, - > tbody, - > tfoot { - > tr { - > th, - > td { - white-space: nowrap; - } - } - } - } - - // Special overrides for the bordered tables - > .table-bordered { - border: 0; - - // Nuke the appropriate borders so that the parent can handle them - > thead, - > tbody, - > tfoot { - > tr { - > th:first-child, - > td:first-child { - border-left: 0; - } - > th:last-child, - > td:last-child { - border-right: 0; - } - } - } - - // Only nuke the last row's bottom-border in `tbody` and `tfoot` since - // chances are there will be only one `tr` in a `thead` and that would - // remove the border altogether. - > tbody, - > tfoot { - > tr:last-child { - > th, - > td { - border-bottom: 0; - } - } - } - - } - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/theme.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/theme.less deleted file mode 100644 index fb61744..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/theme.less +++ /dev/null @@ -1,291 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -// -// Load core variables and mixins -// -------------------------------------------------- - -@import "variables.less"; -@import "mixins.less"; - - -// -// Buttons -// -------------------------------------------------- - -// Common styles -.btn-default, -.btn-primary, -.btn-success, -.btn-info, -.btn-warning, -.btn-danger { - text-shadow: 0 -1px 0 rgba(0,0,0,.2); - @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075); - .box-shadow(@shadow); - - // Reset the shadow - &:active, - &.active { - .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); - } - - &.disabled, - &[disabled], - fieldset[disabled] & { - .box-shadow(none); - } - - .badge { - text-shadow: none; - } -} - -// Mixin for generating new styles -.btn-styles(@btn-color: #555) { - #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%)); - .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620 - background-repeat: repeat-x; - border-color: darken(@btn-color, 14%); - - &:hover, - &:focus { - background-color: darken(@btn-color, 12%); - background-position: 0 -15px; - } - - &:active, - &.active { - background-color: darken(@btn-color, 12%); - border-color: darken(@btn-color, 14%); - } - - &.disabled, - &[disabled], - fieldset[disabled] & { - &, - &:hover, - &:focus, - &.focus, - &:active, - &.active { - background-color: darken(@btn-color, 12%); - background-image: none; - } - } -} - -// Common styles -.btn { - // Remove the gradient for the pressed/active state - &:active, - &.active { - background-image: none; - } -} - -// Apply the mixin to the buttons -.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; } -.btn-primary { .btn-styles(@btn-primary-bg); } -.btn-success { .btn-styles(@btn-success-bg); } -.btn-info { .btn-styles(@btn-info-bg); } -.btn-warning { .btn-styles(@btn-warning-bg); } -.btn-danger { .btn-styles(@btn-danger-bg); } - - -// -// Images -// -------------------------------------------------- - -.thumbnail, -.img-thumbnail { - .box-shadow(0 1px 2px rgba(0,0,0,.075)); -} - - -// -// Dropdowns -// -------------------------------------------------- - -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%)); - background-color: darken(@dropdown-link-hover-bg, 5%); -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%)); - background-color: darken(@dropdown-link-active-bg, 5%); -} - - -// -// Navbar -// -------------------------------------------------- - -// Default navbar -.navbar-default { - #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg); - .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered - border-radius: @navbar-border-radius; - @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075); - .box-shadow(@shadow); - - .navbar-nav > .open > a, - .navbar-nav > .active > a { - #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%)); - .box-shadow(inset 0 3px 9px rgba(0,0,0,.075)); - } -} -.navbar-brand, -.navbar-nav > li > a { - text-shadow: 0 1px 0 rgba(255,255,255,.25); -} - -// Inverted navbar -.navbar-inverse { - #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg); - .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257 - border-radius: @navbar-border-radius; - .navbar-nav > .open > a, - .navbar-nav > .active > a { - #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%)); - .box-shadow(inset 0 3px 9px rgba(0,0,0,.25)); - } - - .navbar-brand, - .navbar-nav > li > a { - text-shadow: 0 -1px 0 rgba(0,0,0,.25); - } -} - -// Undo rounded corners in static and fixed navbars -.navbar-static-top, -.navbar-fixed-top, -.navbar-fixed-bottom { - border-radius: 0; -} - -// Fix active state of dropdown items in collapsed mode -@media (max-width: @grid-float-breakpoint-max) { - .navbar .navbar-nav .open .dropdown-menu > .active > a { - &, - &:hover, - &:focus { - color: #fff; - #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%)); - } - } -} - - -// -// Alerts -// -------------------------------------------------- - -// Common styles -.alert { - text-shadow: 0 1px 0 rgba(255,255,255,.2); - @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05); - .box-shadow(@shadow); -} - -// Mixin for generating new styles -.alert-styles(@color) { - #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%)); - border-color: darken(@color, 15%); -} - -// Apply the mixin to the alerts -.alert-success { .alert-styles(@alert-success-bg); } -.alert-info { .alert-styles(@alert-info-bg); } -.alert-warning { .alert-styles(@alert-warning-bg); } -.alert-danger { .alert-styles(@alert-danger-bg); } - - -// -// Progress bars -// -------------------------------------------------- - -// Give the progress background some depth -.progress { - #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg) -} - -// Mixin for generating new styles -.progress-bar-styles(@color) { - #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%)); -} - -// Apply the mixin to the progress bars -.progress-bar { .progress-bar-styles(@progress-bar-bg); } -.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); } -.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); } -.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); } -.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); } - -// Reset the striped class because our mixins don't do multiple gradients and -// the above custom styles override the new `.progress-bar-striped` in v3.2.0. -.progress-bar-striped { - #gradient > .striped(); -} - - -// -// List groups -// -------------------------------------------------- - -.list-group { - border-radius: @border-radius-base; - .box-shadow(0 1px 2px rgba(0,0,0,.075)); -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%); - #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%)); - border-color: darken(@list-group-active-border, 7.5%); - - .badge { - text-shadow: none; - } -} - - -// -// Panels -// -------------------------------------------------- - -// Common styles -.panel { - .box-shadow(0 1px 2px rgba(0,0,0,.05)); -} - -// Mixin for generating new styles -.panel-heading-styles(@color) { - #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%)); -} - -// Apply the mixin to the panel headings only -.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); } -.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); } -.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); } -.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); } -.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); } -.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); } - - -// -// Wells -// -------------------------------------------------- - -.well { - #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg); - border-color: darken(@well-bg, 10%); - @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1); - .box-shadow(@shadow); -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/thumbnails.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/thumbnails.less deleted file mode 100644 index 0713e67..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/thumbnails.less +++ /dev/null @@ -1,36 +0,0 @@ -// -// Thumbnails -// -------------------------------------------------- - - -// Mixin and adjust the regular image class -.thumbnail { - display: block; - padding: @thumbnail-padding; - margin-bottom: @line-height-computed; - line-height: @line-height-base; - background-color: @thumbnail-bg; - border: 1px solid @thumbnail-border; - border-radius: @thumbnail-border-radius; - .transition(border .2s ease-in-out); - - > img, - a > img { - &:extend(.img-responsive); - margin-left: auto; - margin-right: auto; - } - - // Add a hover state for linked versions only - a&:hover, - a&:focus, - a&.active { - border-color: @link-color; - } - - // Image captions - .caption { - padding: @thumbnail-caption-padding; - color: @thumbnail-caption-color; - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/tooltip.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/tooltip.less deleted file mode 100644 index b48d63e..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/tooltip.less +++ /dev/null @@ -1,101 +0,0 @@ -// -// Tooltips -// -------------------------------------------------- - - -// Base class -.tooltip { - position: absolute; - z-index: @zindex-tooltip; - display: block; - // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element. - // So reset our font and text properties to avoid inheriting weird values. - .reset-text(); - font-size: @font-size-small; - - .opacity(0); - - &.in { .opacity(@tooltip-opacity); } - &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; } - &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; } - &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; } - &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; } -} - -// Wrapper for the tooltip content -.tooltip-inner { - max-width: @tooltip-max-width; - padding: 3px 8px; - color: @tooltip-color; - text-align: center; - background-color: @tooltip-bg; - border-radius: @border-radius-base; -} - -// Arrows -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1 -.tooltip { - &.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -@tooltip-arrow-width; - border-width: @tooltip-arrow-width @tooltip-arrow-width 0; - border-top-color: @tooltip-arrow-color; - } - &.top-left .tooltip-arrow { - bottom: 0; - right: @tooltip-arrow-width; - margin-bottom: -@tooltip-arrow-width; - border-width: @tooltip-arrow-width @tooltip-arrow-width 0; - border-top-color: @tooltip-arrow-color; - } - &.top-right .tooltip-arrow { - bottom: 0; - left: @tooltip-arrow-width; - margin-bottom: -@tooltip-arrow-width; - border-width: @tooltip-arrow-width @tooltip-arrow-width 0; - border-top-color: @tooltip-arrow-color; - } - &.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -@tooltip-arrow-width; - border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0; - border-right-color: @tooltip-arrow-color; - } - &.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -@tooltip-arrow-width; - border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width; - border-left-color: @tooltip-arrow-color; - } - &.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -@tooltip-arrow-width; - border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; - border-bottom-color: @tooltip-arrow-color; - } - &.bottom-left .tooltip-arrow { - top: 0; - right: @tooltip-arrow-width; - margin-top: -@tooltip-arrow-width; - border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; - border-bottom-color: @tooltip-arrow-color; - } - &.bottom-right .tooltip-arrow { - top: 0; - left: @tooltip-arrow-width; - margin-top: -@tooltip-arrow-width; - border-width: 0 @tooltip-arrow-width @tooltip-arrow-width; - border-bottom-color: @tooltip-arrow-color; - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/type.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/type.less deleted file mode 100644 index 0d4fee4..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/type.less +++ /dev/null @@ -1,302 +0,0 @@ -// -// Typography -// -------------------------------------------------- - - -// Headings -// ------------------------- - -h1, h2, h3, h4, h5, h6, -.h1, .h2, .h3, .h4, .h5, .h6 { - font-family: @headings-font-family; - font-weight: @headings-font-weight; - line-height: @headings-line-height; - color: @headings-color; - - small, - .small { - font-weight: normal; - line-height: 1; - color: @headings-small-color; - } -} - -h1, .h1, -h2, .h2, -h3, .h3 { - margin-top: @line-height-computed; - margin-bottom: (@line-height-computed / 2); - - small, - .small { - font-size: 65%; - } -} -h4, .h4, -h5, .h5, -h6, .h6 { - margin-top: (@line-height-computed / 2); - margin-bottom: (@line-height-computed / 2); - - small, - .small { - font-size: 75%; - } -} - -h1, .h1 { font-size: @font-size-h1; } -h2, .h2 { font-size: @font-size-h2; } -h3, .h3 { font-size: @font-size-h3; } -h4, .h4 { font-size: @font-size-h4; } -h5, .h5 { font-size: @font-size-h5; } -h6, .h6 { font-size: @font-size-h6; } - - -// Body text -// ------------------------- - -p { - margin: 0 0 (@line-height-computed / 2); -} - -.lead { - margin-bottom: @line-height-computed; - font-size: floor((@font-size-base * 1.15)); - font-weight: 300; - line-height: 1.4; - - @media (min-width: @screen-sm-min) { - font-size: (@font-size-base * 1.5); - } -} - - -// Emphasis & misc -// ------------------------- - -// Ex: (12px small font / 14px base font) * 100% = about 85% -small, -.small { - font-size: floor((100% * @font-size-small / @font-size-base)); -} - -mark, -.mark { - background-color: @state-warning-bg; - padding: .2em; -} - -// Alignment -.text-left { text-align: left; } -.text-right { text-align: right; } -.text-center { text-align: center; } -.text-justify { text-align: justify; } -.text-nowrap { white-space: nowrap; } - -// Transformation -.text-lowercase { text-transform: lowercase; } -.text-uppercase { text-transform: uppercase; } -.text-capitalize { text-transform: capitalize; } - -// Contextual colors -.text-muted { - color: @text-muted; -} -.text-primary { - .text-emphasis-variant(@brand-primary); -} -.text-success { - .text-emphasis-variant(@state-success-text); -} -.text-info { - .text-emphasis-variant(@state-info-text); -} -.text-warning { - .text-emphasis-variant(@state-warning-text); -} -.text-danger { - .text-emphasis-variant(@state-danger-text); -} - -// Contextual backgrounds -// For now we'll leave these alongside the text classes until v4 when we can -// safely shift things around (per SemVer rules). -.bg-primary { - // Given the contrast here, this is the only class to have its color inverted - // automatically. - color: #fff; - .bg-variant(@brand-primary); -} -.bg-success { - .bg-variant(@state-success-bg); -} -.bg-info { - .bg-variant(@state-info-bg); -} -.bg-warning { - .bg-variant(@state-warning-bg); -} -.bg-danger { - .bg-variant(@state-danger-bg); -} - - -// Page header -// ------------------------- - -.page-header { - padding-bottom: ((@line-height-computed / 2) - 1); - margin: (@line-height-computed * 2) 0 @line-height-computed; - border-bottom: 1px solid @page-header-border-color; -} - - -// Lists -// ------------------------- - -// Unordered and Ordered lists -ul, -ol { - margin-top: 0; - margin-bottom: (@line-height-computed / 2); - ul, - ol { - margin-bottom: 0; - } -} - -// List options - -// Unstyled keeps list items block level, just removes default browser padding and list-style -.list-unstyled { - padding-left: 0; - list-style: none; -} - -// Inline turns list items into inline-block -.list-inline { - .list-unstyled(); - margin-left: -5px; - - > li { - display: inline-block; - padding-left: 5px; - padding-right: 5px; - } -} - -// Description Lists -dl { - margin-top: 0; // Remove browser default - margin-bottom: @line-height-computed; -} -dt, -dd { - line-height: @line-height-base; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; // Undo browser default -} - -// Horizontal description lists -// -// Defaults to being stacked without any of the below styles applied, until the -// grid breakpoint is reached (default of ~768px). - -.dl-horizontal { - dd { - &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present - } - - @media (min-width: @dl-horizontal-breakpoint) { - dt { - float: left; - width: (@dl-horizontal-offset - 20); - clear: left; - text-align: right; - .text-overflow(); - } - dd { - margin-left: @dl-horizontal-offset; - } - } -} - - -// Misc -// ------------------------- - -// Abbreviations and acronyms -abbr[title], -// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257 -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted @abbr-border-color; -} -.initialism { - font-size: 90%; - .text-uppercase(); -} - -// Blockquotes -blockquote { - padding: (@line-height-computed / 2) @line-height-computed; - margin: 0 0 @line-height-computed; - font-size: @blockquote-font-size; - border-left: 5px solid @blockquote-border-color; - - p, - ul, - ol { - &:last-child { - margin-bottom: 0; - } - } - - // Note: Deprecated small and .small as of v3.1.0 - // Context: https://github.com/twbs/bootstrap/issues/11660 - footer, - small, - .small { - display: block; - font-size: 80%; // back to default font-size - line-height: @line-height-base; - color: @blockquote-small-color; - - &:before { - content: '\2014 \00A0'; // em dash, nbsp - } - } -} - -// Opposite alignment of blockquote -// -// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0. -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - border-right: 5px solid @blockquote-border-color; - border-left: 0; - text-align: right; - - // Account for citation - footer, - small, - .small { - &:before { content: ''; } - &:after { - content: '\00A0 \2014'; // nbsp, em dash - } - } -} - -// Addresses -address { - margin-bottom: @line-height-computed; - font-style: normal; - line-height: @line-height-base; -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/utilities.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/utilities.less deleted file mode 100644 index 7a8ca27..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/utilities.less +++ /dev/null @@ -1,55 +0,0 @@ -// -// Utility classes -// -------------------------------------------------- - - -// Floats -// ------------------------- - -.clearfix { - .clearfix(); -} -.center-block { - .center-block(); -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} - - -// Toggling content -// ------------------------- - -// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - .text-hide(); -} - - -// Hide from screenreaders and browsers -// -// Credit: HTML5 Boilerplate - -.hidden { - display: none !important; -} - - -// For Affix plugin -// ------------------------- - -.affix { - position: fixed; -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/variables.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/variables.less deleted file mode 100644 index 03b5498..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/variables.less +++ /dev/null @@ -1,869 +0,0 @@ -// -// Variables -// -------------------------------------------------- - - -//== Colors -// -//## Gray and brand colors for use across Bootstrap. - -@gray-base: #000; -@gray-darker: lighten(@gray-base, 13.5%); // #222 -@gray-dark: lighten(@gray-base, 20%); // #333 -@gray: lighten(@gray-base, 33.5%); // #555 -@gray-light: lighten(@gray-base, 46.7%); // #777 -@gray-lighter: lighten(@gray-base, 93.5%); // #eee - -@brand-primary: darken(#428bca, 6.5%); // #337ab7 -@brand-success: #5cb85c; -@brand-info: #5bc0de; -@brand-warning: #f0ad4e; -@brand-danger: #d9534f; - - -//== Scaffolding -// -//## Settings for some of the most global styles. - -//** Background color for ``. -@body-bg: #fff; -//** Global text color on ``. -@text-color: @gray-dark; - -//** Global textual link color. -@link-color: @brand-primary; -//** Link hover color set via `darken()` function. -@link-hover-color: darken(@link-color, 15%); -//** Link hover decoration. -@link-hover-decoration: underline; - - -//== Typography -// -//## Font, line-height, and color for body text, headings, and more. - -@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; -@font-family-serif: Georgia, "Times New Roman", Times, serif; -//** Default monospace fonts for ``, ``, and `
`.
-@font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace;
-@font-family-base:        @font-family-sans-serif;
-
-@font-size-base:          14px;
-@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
-@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px
-
-@font-size-h1:            floor((@font-size-base * 2.6)); // ~36px
-@font-size-h2:            floor((@font-size-base * 2.15)); // ~30px
-@font-size-h3:            ceil((@font-size-base * 1.7)); // ~24px
-@font-size-h4:            ceil((@font-size-base * 1.25)); // ~18px
-@font-size-h5:            @font-size-base;
-@font-size-h6:            ceil((@font-size-base * 0.85)); // ~12px
-
-//** Unit-less `line-height` for use in components like buttons.
-@line-height-base:        1.428571429; // 20/14
-//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
-@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
-
-//** By default, this inherits from the ``.
-@headings-font-family:    inherit;
-@headings-font-weight:    500;
-@headings-line-height:    1.1;
-@headings-color:          inherit;
-
-
-//== Iconography
-//
-//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
-
-//** Load fonts from this directory.
-@icon-font-path:          "../fonts/";
-//** File name for all font files.
-@icon-font-name:          "glyphicons-halflings-regular";
-//** Element ID within SVG icon file.
-@icon-font-svg-id:        "glyphicons_halflingsregular";
-
-
-//== Components
-//
-//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
-
-@padding-base-vertical:     6px;
-@padding-base-horizontal:   12px;
-
-@padding-large-vertical:    10px;
-@padding-large-horizontal:  16px;
-
-@padding-small-vertical:    5px;
-@padding-small-horizontal:  10px;
-
-@padding-xs-vertical:       1px;
-@padding-xs-horizontal:     5px;
-
-@line-height-large:         1.3333333; // extra decimals for Win 8.1 Chrome
-@line-height-small:         1.5;
-
-@border-radius-base:        4px;
-@border-radius-large:       6px;
-@border-radius-small:       3px;
-
-//** Global color for active items (e.g., navs or dropdowns).
-@component-active-color:    #fff;
-//** Global background color for active items (e.g., navs or dropdowns).
-@component-active-bg:       @brand-primary;
-
-//** Width of the `border` for generating carets that indicate dropdowns.
-@caret-width-base:          4px;
-//** Carets increase slightly in size for larger components.
-@caret-width-large:         5px;
-
-
-//== Tables
-//
-//## Customizes the `.table` component with basic values, each used across all table variations.
-
-//** Padding for ``s and ``s.
-@table-cell-padding:            8px;
-//** Padding for cells in `.table-condensed`.
-@table-condensed-cell-padding:  5px;
-
-//** Default background color used for all tables.
-@table-bg:                      transparent;
-//** Background color used for `.table-striped`.
-@table-bg-accent:               #f9f9f9;
-//** Background color used for `.table-hover`.
-@table-bg-hover:                #f5f5f5;
-@table-bg-active:               @table-bg-hover;
-
-//** Border color for table and cell borders.
-@table-border-color:            #ddd;
-
-
-//== Buttons
-//
-//## For each of Bootstrap's buttons, define text, background and border color.
-
-@btn-font-weight:                normal;
-
-@btn-default-color:              #333;
-@btn-default-bg:                 #fff;
-@btn-default-border:             #ccc;
-
-@btn-primary-color:              #fff;
-@btn-primary-bg:                 @brand-primary;
-@btn-primary-border:             darken(@btn-primary-bg, 5%);
-
-@btn-success-color:              #fff;
-@btn-success-bg:                 @brand-success;
-@btn-success-border:             darken(@btn-success-bg, 5%);
-
-@btn-info-color:                 #fff;
-@btn-info-bg:                    @brand-info;
-@btn-info-border:                darken(@btn-info-bg, 5%);
-
-@btn-warning-color:              #fff;
-@btn-warning-bg:                 @brand-warning;
-@btn-warning-border:             darken(@btn-warning-bg, 5%);
-
-@btn-danger-color:               #fff;
-@btn-danger-bg:                  @brand-danger;
-@btn-danger-border:              darken(@btn-danger-bg, 5%);
-
-@btn-link-disabled-color:        @gray-light;
-
-// Allows for customizing button radius independently from global border radius
-@btn-border-radius-base:         @border-radius-base;
-@btn-border-radius-large:        @border-radius-large;
-@btn-border-radius-small:        @border-radius-small;
-
-
-//== Forms
-//
-//##
-
-//** `` 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));
-@jumbotron-heading-font-size:    ceil((@font-size-base * 4.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;
-//** Point at which .dl-horizontal becomes horizontal
-@dl-horizontal-breakpoint:    @grid-float-breakpoint;
-//** Horizontal line color.
-@hr-border:                   @gray-lighter;
diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/wells.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/wells.less
deleted file mode 100644
index 15d072b..0000000
--- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/bootstrap-less/wells.less
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// Wells
-// --------------------------------------------------
-
-
-// Base class
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: @well-bg;
-  border: 1px solid @well-border;
-  border-radius: @border-radius-base;
-  .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
-  blockquote {
-    border-color: #ddd;
-    border-color: rgba(0,0,0,.15);
-  }
-}
-
-// Sizes
-.well-lg {
-  padding: 24px;
-  border-radius: @border-radius-large;
-}
-.well-sm {
-  padding: 9px;
-  border-radius: @border-radius-small;
-}
diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/grunt/.jshintrc b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/grunt/.jshintrc
deleted file mode 100644
index d7c7c8d..0000000
--- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/grunt/.jshintrc
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "extends" : "../js/.jshintrc",
-  "asi"     : false,
-  "browser" : false,
-  "es3"     : false,
-  "node"    : true
-}
\ No newline at end of file
diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/.jscsrc b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/.jscsrc
deleted file mode 100644
index 253a9d9..0000000
--- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/.jscsrc
+++ /dev/null
@@ -1,42 +0,0 @@
-{
-  "disallowEmptyBlocks": true,
-  "disallowKeywords": ["with"],
-  "disallowMixedSpacesAndTabs": true,
-  "disallowMultipleLineStrings": true,
-  "disallowMultipleVarDecl": true,
-  "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
-  "disallowSpaceBeforeBinaryOperators": [","],
-  "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
-  "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true },
-  "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
-  "disallowSpacesInsideArrayBrackets": true,
-  "disallowSpacesInsideParentheses": true,
-  "disallowTrailingComma": true,
-  "disallowTrailingWhitespace": true,
-  "requireCamelCaseOrUpperCaseIdentifiers": true,
-  "requireCapitalizedConstructors": true,
-  "requireCommaBeforeLineBreak": true,
-  "requireDollarBeforejQueryAssignment": true,
-  "requireDotNotation": true,
-  "requireLineFeedAtFileEnd": true,
-  "requirePaddingNewLinesAfterUseStrict": true,
-  "requirePaddingNewLinesBeforeExport": true,
-  "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="],
-  "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"],
-  "requireSpaceAfterLineComment": true,
-  "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="],
-  "requireSpaceBetweenArguments": true,
-  "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningCurlyBrace": true, "beforeOpeningRoundBrace": true },
-  "requireSpacesInConditionalExpression": true,
-  "requireSpacesInForStatement": true,
-  "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true },
-  "requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true },
-  "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
-  "requireSpacesInsideObjectBrackets": "allButNested",
-  "validateAlignedFunctionParameters": true,
-  "validateIndentation": 2,
-  "validateLineBreaks": "LF",
-  "validateNewlineAfterArrayElements": true,
-  "validateQuoteMarks": "'",
-  "maxErrors": "3000"
-}
\ No newline at end of file
diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/.jshintrc b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/.jshintrc
deleted file mode 100644
index c41edf7..0000000
--- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/.jshintrc
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "asi"      : true,
-  "browser"  : true,
-  "eqeqeq"   : false,
-  "eqnull"   : true,
-  "es3"      : true,
-  "expr"     : true,
-  "jquery"   : true,
-  "latedef"  : true,
-  "laxbreak" : true,
-  "nonbsp"   : true,
-  "strict"   : true,
-  "undef"    : true,
-  "unused"   : true,
-  // External variabls and plugins
-  "predef":  [ "AdminLTEOptions", "FastClick", "moment", "Morris", "Chart" ]
-}
diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/BoxRefresh.js b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/BoxRefresh.js
deleted file mode 100644
index 7a9aeea..0000000
--- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/BoxRefresh.js
+++ /dev/null
@@ -1,119 +0,0 @@
-/* BoxRefresh()
- * =========
- * Adds AJAX content control to a box.
- *
- * @Usage: $('#my-box').boxRefresh(options)
- *         or add [data-widget="box-refresh"] to the box element
- *         Pass any option as data-option="value"
- */
-+function ($) {
-  'use strict';
-
-  var DataKey = 'lte.boxrefresh';
-
-  var Default = {
-    source         : '',
-    params         : {},
-    trigger        : '.refresh-btn',
-    content        : '.box-body',
-    loadInContent  : true,
-    responseType   : '',
-    overlayTemplate: '
', - onLoadStart : function () { - }, - onLoadDone : function (response) { - return response; - } - }; - - var Selector = { - data: '[data-widget="box-refresh"]' - }; - - // BoxRefresh Class Definition - // ========================= - var BoxRefresh = function (element, options) { - this.element = element; - this.options = options; - this.$overlay = $(options.overlayTemplate); - - if (options.source === '') { - throw new Error('Source url was not defined. Please specify a url in your BoxRefresh source option.'); - } - - this._setUpListeners(); - this.load(); - }; - - BoxRefresh.prototype.load = function () { - this._addOverlay(); - this.options.onLoadStart.call($(this)); - - $.get(this.options.source, this.options.params, function (response) { - if (this.options.loadInContent) { - $(this.element).find(this.options.content).html(response); - } - this.options.onLoadDone.call($(this), response); - this._removeOverlay(); - }.bind(this), this.options.responseType !== '' && this.options.responseType); - }; - - // Private - - BoxRefresh.prototype._setUpListeners = function () { - $(this.element).on('click', this.options.trigger, function (event) { - if (event) event.preventDefault(); - this.load(); - }.bind(this)); - }; - - BoxRefresh.prototype._addOverlay = function () { - $(this.element).append(this.$overlay); - }; - - BoxRefresh.prototype._removeOverlay = function () { - $(this.$overlay).remove(); - }; - - // Plugin Definition - // ================= - function Plugin(option) { - return this.each(function () { - var $this = $(this); - var data = $this.data(DataKey); - - if (!data) { - var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); - $this.data(DataKey, (data = new BoxRefresh($this, options))); - } - - if (typeof data == 'string') { - if (typeof data[option] == 'undefined') { - throw new Error('No method named ' + option); - } - data[option](); - } - }); - } - - var old = $.fn.boxRefresh; - - $.fn.boxRefresh = Plugin; - $.fn.boxRefresh.Constructor = BoxRefresh; - - // No Conflict Mode - // ================ - $.fn.boxRefresh.noConflict = function () { - $.fn.boxRefresh = old; - return this; - }; - - // BoxRefresh Data API - // ================= - $(window).on('load', function () { - $(Selector.data).each(function () { - Plugin.call($(this)); - }); - }); - -}(jQuery); diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/BoxWidget.js b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/BoxWidget.js deleted file mode 100644 index 58c3756..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/BoxWidget.js +++ /dev/null @@ -1,176 +0,0 @@ -/* BoxWidget() - * ====== - * Adds box widget functions to boxes. - * - * @Usage: $('.my-box').boxWidget(options) - * This plugin auto activates on any element using the `.box` class - * Pass any option as data-option="value" - */ -+function ($) { - 'use strict'; - - var DataKey = 'lte.boxwidget'; - - var Default = { - animationSpeed : 500, - collapseTrigger: '[data-widget="collapse"]', - removeTrigger : '[data-widget="remove"]', - collapseIcon : 'fa-minus', - expandIcon : 'fa-plus', - removeIcon : 'fa-times' - }; - - var Selector = { - data : '.box', - collapsed: '.collapsed-box', - header : '.box-header', - body : '.box-body', - footer : '.box-footer', - tools : '.box-tools' - }; - - var ClassName = { - collapsed: 'collapsed-box' - }; - - var Event = { - collapsing: 'collapsing.boxwidget', - collapsed: 'collapsed.boxwidget', - expanding: 'expanding.boxwidget', - expanded: 'expanded.boxwidget', - removing: 'removing.boxwidget', - removed: 'removed.boxwidget' - }; - - // BoxWidget Class Definition - // ===================== - var BoxWidget = function (element, options) { - this.element = element; - this.options = options; - - this._setUpListeners(); - }; - - BoxWidget.prototype.toggle = function () { - var isOpen = !$(this.element).is(Selector.collapsed); - - if (isOpen) { - this.collapse(); - } else { - this.expand(); - } - }; - - BoxWidget.prototype.expand = function () { - var expandedEvent = $.Event(Event.expanded); - var expandingEvent = $.Event(Event.expanding); - var collapseIcon = this.options.collapseIcon; - var expandIcon = this.options.expandIcon; - - $(this.element).removeClass(ClassName.collapsed); - - $(this.element) - .children(Selector.header + ', ' + Selector.body + ', ' + Selector.footer) - .children(Selector.tools) - .find('.' + expandIcon) - .removeClass(expandIcon) - .addClass(collapseIcon); - - $(this.element).children(Selector.body + ', ' + Selector.footer) - .slideDown(this.options.animationSpeed, function () { - $(this.element).trigger(expandedEvent); - }.bind(this)) - .trigger(expandingEvent); - }; - - BoxWidget.prototype.collapse = function () { - var collapsedEvent = $.Event(Event.collapsed); - var collapsingEvent = $.Event(Event.collapsing); - var collapseIcon = this.options.collapseIcon; - var expandIcon = this.options.expandIcon; - - $(this.element) - .children(Selector.header + ', ' + Selector.body + ', ' + Selector.footer) - .children(Selector.tools) - .find('.' + collapseIcon) - .removeClass(collapseIcon) - .addClass(expandIcon); - - $(this.element).children(Selector.body + ', ' + Selector.footer) - .slideUp(this.options.animationSpeed, function () { - $(this.element).addClass(ClassName.collapsed); - $(this.element).trigger(collapsedEvent); - }.bind(this)) - .trigger(collapsingEvent); - }; - - BoxWidget.prototype.remove = function () { - var removedEvent = $.Event(Event.removed); - var removingEvent = $.Event(Event.removing); - - $(this.element).slideUp(this.options.animationSpeed, function () { - $(this.element).trigger(removedEvent); - $(this.element).remove(); - }.bind(this)) - .trigger(removingEvent); - }; - - // Private - - BoxWidget.prototype._setUpListeners = function () { - var that = this; - - $(this.element).on('click', this.options.collapseTrigger, function (event) { - if (event) event.preventDefault(); - that.toggle($(this)); - return false; - }); - - $(this.element).on('click', this.options.removeTrigger, function (event) { - if (event) event.preventDefault(); - that.remove($(this)); - return false; - }); - }; - - // Plugin Definition - // ================= - function Plugin(option) { - return this.each(function () { - var $this = $(this); - var data = $this.data(DataKey); - - if (!data) { - var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); - $this.data(DataKey, (data = new BoxWidget($this, options))); - } - - if (typeof option == 'string') { - if (typeof data[option] == 'undefined') { - throw new Error('No method named ' + option); - } - data[option](); - } - }); - } - - var old = $.fn.boxWidget; - - $.fn.boxWidget = Plugin; - $.fn.boxWidget.Constructor = BoxWidget; - - // No Conflict Mode - // ================ - $.fn.boxWidget.noConflict = function () { - $.fn.boxWidget = old; - return this; - }; - - // BoxWidget Data API - // ================== - $(window).on('load', function () { - $(Selector.data).each(function () { - Plugin.call($(this)); - }); - }); -}(jQuery); diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/ControlSidebar.js b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/ControlSidebar.js deleted file mode 100644 index f00b523..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/ControlSidebar.js +++ /dev/null @@ -1,138 +0,0 @@ -/* ControlSidebar() - * =============== - * Toggles the state of the control sidebar - * - * @Usage: $('#control-sidebar-trigger').controlSidebar(options) - * or add [data-toggle="control-sidebar"] to the trigger - * Pass any option as data-option="value" - */ -+function ($) { - 'use strict'; - - var DataKey = 'lte.controlsidebar'; - - var Default = { - slide: true - }; - - var Selector = { - sidebar: '.control-sidebar', - data : '[data-toggle="control-sidebar"]', - open : '.control-sidebar-open', - bg : '.control-sidebar-bg', - wrapper: '.wrapper', - content: '.content-wrapper', - boxed : '.layout-boxed' - }; - - var ClassName = { - open : 'control-sidebar-open', - fixed: 'fixed' - }; - - var Event = { - collapsed: 'collapsed.controlsidebar', - expanded : 'expanded.controlsidebar' - }; - - // ControlSidebar Class Definition - // =============================== - var ControlSidebar = function (element, options) { - this.element = element; - this.options = options; - this.hasBindedResize = false; - - this.init(); - }; - - ControlSidebar.prototype.init = function () { - // Add click listener if the element hasn't been - // initialized using the data API - if (!$(this.element).is(Selector.data)) { - $(this).on('click', this.toggle); - } - - this.fix(); - $(window).resize(function () { - this.fix(); - }.bind(this)); - }; - - ControlSidebar.prototype.toggle = function (event) { - if (event) event.preventDefault(); - - this.fix(); - - if (!$(Selector.sidebar).is(Selector.open) && !$('body').is(Selector.open)) { - this.expand(); - } else { - this.collapse(); - } - }; - - ControlSidebar.prototype.expand = function () { - if (!this.options.slide) { - $('body').addClass(ClassName.open); - } else { - $(Selector.sidebar).addClass(ClassName.open); - } - - $(this.element).trigger($.Event(Event.expanded)); - }; - - ControlSidebar.prototype.collapse = function () { - $('body, ' + Selector.sidebar).removeClass(ClassName.open); - $(this.element).trigger($.Event(Event.collapsed)); - }; - - ControlSidebar.prototype.fix = function () { - if ($('body').is(Selector.boxed)) { - this._fixForBoxed($(Selector.bg)); - } - }; - - // Private - - ControlSidebar.prototype._fixForBoxed = function (bg) { - bg.css({ - position: 'absolute', - height : $(Selector.wrapper).height() - }); - }; - - // Plugin Definition - // ================= - function Plugin(option) { - return this.each(function () { - var $this = $(this); - var data = $this.data(DataKey); - - if (!data) { - var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); - $this.data(DataKey, (data = new ControlSidebar($this, options))); - } - - if (typeof option == 'string') data.toggle(); - }); - } - - var old = $.fn.controlSidebar; - - $.fn.controlSidebar = Plugin; - $.fn.controlSidebar.Constructor = ControlSidebar; - - // No Conflict Mode - // ================ - $.fn.controlSidebar.noConflict = function () { - $.fn.controlSidebar = old; - return this; - }; - - // ControlSidebar Data API - // ======================= - $(document).on('click', Selector.data, function (event) { - if (event) event.preventDefault(); - Plugin.call($(this), 'toggle'); - }); - -}(jQuery); diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/DirectChat.js b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/DirectChat.js deleted file mode 100644 index 5cc3c3c..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/DirectChat.js +++ /dev/null @@ -1,66 +0,0 @@ -/* DirectChat() - * =============== - * Toggles the state of the control sidebar - * - * @Usage: $('#my-chat-box').directChat() - * or add [data-widget="direct-chat"] to the trigger - */ -+function ($) { - 'use strict'; - - var DataKey = 'lte.directchat'; - - var Selector = { - data: '[data-widget="chat-pane-toggle"]', - box : '.direct-chat' - }; - - var ClassName = { - open: 'direct-chat-contacts-open' - }; - - // DirectChat Class Definition - // =========================== - var DirectChat = function (element) { - this.element = element; - }; - - DirectChat.prototype.toggle = function ($trigger) { - $trigger.parents(Selector.box).first().toggleClass(ClassName.open); - }; - - // Plugin Definition - // ================= - function Plugin(option) { - return this.each(function () { - var $this = $(this); - var data = $this.data(DataKey); - - if (!data) { - $this.data(DataKey, (data = new DirectChat($this))); - } - - if (typeof option == 'string') data.toggle($this); - }); - } - - var old = $.fn.directChat; - - $.fn.directChat = Plugin; - $.fn.directChat.Constructor = DirectChat; - - // No Conflict Mode - // ================ - $.fn.directChat.noConflict = function () { - $.fn.directChat = old; - return this; - }; - - // DirectChat Data API - // =================== - $(document).on('click', Selector.data, function (event) { - if (event) event.preventDefault(); - Plugin.call($(this), 'toggle'); - }); - -}(jQuery); diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/Layout.js b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/Layout.js deleted file mode 100644 index 0e8b4c6..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/Layout.js +++ /dev/null @@ -1,178 +0,0 @@ -/* Layout() - * ======== - * Implements AdminLTE layout. - * Fixes the layout height in case min-height fails. - * - * @usage activated automatically upon window load. - * Configure any options by passing data-option="value" - * to the body tag. - */ -+function ($) { - 'use strict'; - - var DataKey = 'lte.layout'; - - var Default = { - slimscroll : true, - resetHeight: true - }; - - var Selector = { - wrapper : '.wrapper', - contentWrapper: '.content-wrapper', - layoutBoxed : '.layout-boxed', - mainFooter : '.main-footer', - mainHeader : '.main-header', - sidebar : '.sidebar', - controlSidebar: '.control-sidebar', - fixed : '.fixed', - sidebarMenu : '.sidebar-menu', - logo : '.main-header .logo' - }; - - var ClassName = { - fixed : 'fixed', - holdTransition: 'hold-transition' - }; - - var Layout = function (options) { - this.options = options; - this.bindedResize = false; - this.activate(); - }; - - Layout.prototype.activate = function () { - this.fix(); - this.fixSidebar(); - - $('body').removeClass(ClassName.holdTransition); - - if (this.options.resetHeight) { - $('body, html, ' + Selector.wrapper).css({ - 'height' : 'auto', - 'min-height': '100%' - }); - } - - if (!this.bindedResize) { - $(window).resize(function () { - this.fix(); - this.fixSidebar(); - - $(Selector.logo + ', ' + Selector.sidebar).one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function () { - this.fix(); - this.fixSidebar(); - }.bind(this)); - }.bind(this)); - - this.bindedResize = true; - } - - $(Selector.sidebarMenu).on('expanded.tree', function () { - this.fix(); - this.fixSidebar(); - }.bind(this)); - - $(Selector.sidebarMenu).on('collapsed.tree', function () { - this.fix(); - this.fixSidebar(); - }.bind(this)); - }; - - Layout.prototype.fix = function () { - // Remove overflow from .wrapper if layout-boxed exists - $(Selector.layoutBoxed + ' > ' + Selector.wrapper).css('overflow', 'hidden'); - - // Get window height and the wrapper height - var footerHeight = $(Selector.mainFooter).outerHeight() || 0; - var headerHeight = $(Selector.mainHeader).outerHeight() || 0; - var neg = headerHeight + footerHeight; - var windowHeight = $(window).height(); - var sidebarHeight = $(Selector.sidebar).height() || 0; - - // Set the min-height of the content and sidebar based on - // the height of the document. - if ($('body').hasClass(ClassName.fixed)) { - $(Selector.contentWrapper).css('min-height', windowHeight - footerHeight); - } else { - var postSetHeight; - - if (windowHeight >= sidebarHeight + headerHeight) { - $(Selector.contentWrapper).css('min-height', windowHeight - neg); - postSetHeight = windowHeight - neg; - } else { - $(Selector.contentWrapper).css('min-height', sidebarHeight); - postSetHeight = sidebarHeight; - } - - // Fix for the control sidebar height - var $controlSidebar = $(Selector.controlSidebar); - if (typeof $controlSidebar !== 'undefined') { - if ($controlSidebar.height() > postSetHeight) - $(Selector.contentWrapper).css('min-height', $controlSidebar.height()); - } - } - }; - - Layout.prototype.fixSidebar = function () { - // Make sure the body tag has the .fixed class - if (!$('body').hasClass(ClassName.fixed)) { - if (typeof $.fn.slimScroll !== 'undefined') { - $(Selector.sidebar).slimScroll({ destroy: true }).height('auto'); - } - return; - } - - // Enable slimscroll for fixed layout - if (this.options.slimscroll) { - if (typeof $.fn.slimScroll !== 'undefined') { - // Destroy if it exists - // $(Selector.sidebar).slimScroll({ destroy: true }).height('auto') - - // Add slimscroll - $(Selector.sidebar).slimScroll({ - height: ($(window).height() - $(Selector.mainHeader).height()) + 'px' - }); - } - } - }; - - // Plugin Definition - // ================= - function Plugin(option) { - return this.each(function () { - var $this = $(this); - var data = $this.data(DataKey); - - if (!data) { - var options = $.extend({}, Default, $this.data(), typeof option === 'object' && option); - $this.data(DataKey, (data = new Layout(options))); - } - - if (typeof option === 'string') { - if (typeof data[option] === 'undefined') { - throw new Error('No method named ' + option); - } - data[option](); - } - }); - } - - var old = $.fn.layout; - - $.fn.layout = Plugin; - $.fn.layout.Constuctor = Layout; - - // No conflict mode - // ================ - $.fn.layout.noConflict = function () { - $.fn.layout = old; - return this; - }; - - // Layout DATA-API - // =============== - $(window).on('load', function () { - Plugin.call($('body')); - }); -}(jQuery); diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/PushMenu.js b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/PushMenu.js deleted file mode 100644 index f45e971..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/PushMenu.js +++ /dev/null @@ -1,176 +0,0 @@ -/* PushMenu() - * ========== - * Adds the push menu functionality to the sidebar. - * - * @usage: $('.btn').pushMenu(options) - * or add [data-toggle="push-menu"] to any button - * Pass any option as data-option="value" - */ -+function ($) { - 'use strict'; - - var DataKey = 'lte.pushmenu'; - - var Default = { - collapseScreenSize : 767, - expandOnHover : false, - expandTransitionDelay: 200 - }; - - var Selector = { - collapsed : '.sidebar-collapse', - open : '.sidebar-open', - mainSidebar : '.main-sidebar', - contentWrapper: '.content-wrapper', - searchInput : '.sidebar-form .form-control', - button : '[data-toggle="push-menu"]', - mini : '.sidebar-mini', - expanded : '.sidebar-expanded-on-hover', - layoutFixed : '.fixed' - }; - - var ClassName = { - collapsed : 'sidebar-collapse', - open : 'sidebar-open', - mini : 'sidebar-mini', - expanded : 'sidebar-expanded-on-hover', - expandFeature: 'sidebar-mini-expand-feature', - layoutFixed : 'fixed' - }; - - var Event = { - expanded : 'expanded.pushMenu', - collapsed: 'collapsed.pushMenu' - }; - - // PushMenu Class Definition - // ========================= - var PushMenu = function (options) { - this.options = options; - this.init(); - }; - - PushMenu.prototype.init = function () { - if (this.options.expandOnHover - || ($('body').is(Selector.mini + Selector.layoutFixed))) { - this.expandOnHover(); - $('body').addClass(ClassName.expandFeature); - } - - $(Selector.contentWrapper).click(function () { - // Enable hide menu when clicking on the content-wrapper on small screens - if ($(window).width() <= this.options.collapseScreenSize && $('body').hasClass(ClassName.open)) { - this.close(); - } - }.bind(this)); - - // __Fix for android devices - $(Selector.searchInput).click(function (e) { - e.stopPropagation(); - }); - }; - - PushMenu.prototype.toggle = function () { - var windowWidth = $(window).width(); - var isOpen = !$('body').hasClass(ClassName.collapsed); - - if (windowWidth <= this.options.collapseScreenSize) { - isOpen = $('body').hasClass(ClassName.open); - } - - if (!isOpen) { - this.open(); - } else { - this.close(); - } - }; - - PushMenu.prototype.open = function () { - var windowWidth = $(window).width(); - - if (windowWidth > this.options.collapseScreenSize) { - $('body').removeClass(ClassName.collapsed) - .trigger($.Event(Event.expanded)); - } - else { - $('body').addClass(ClassName.open) - .trigger($.Event(Event.expanded)); - } - }; - - PushMenu.prototype.close = function () { - var windowWidth = $(window).width(); - if (windowWidth > this.options.collapseScreenSize) { - $('body').addClass(ClassName.collapsed) - .trigger($.Event(Event.collapsed)); - } else { - $('body').removeClass(ClassName.open + ' ' + ClassName.collapsed) - .trigger($.Event(Event.collapsed)); - } - }; - - PushMenu.prototype.expandOnHover = function () { - $(Selector.mainSidebar).hover(function () { - if ($('body').is(Selector.mini + Selector.collapsed) - && $(window).width() > this.options.collapseScreenSize) { - this.expand(); - } - }.bind(this), function () { - if ($('body').is(Selector.expanded)) { - this.collapse(); - } - }.bind(this)); - }; - - PushMenu.prototype.expand = function () { - setTimeout(function () { - $('body').removeClass(ClassName.collapsed) - .addClass(ClassName.expanded); - }, this.options.expandTransitionDelay); - }; - - PushMenu.prototype.collapse = function () { - setTimeout(function () { - $('body').removeClass(ClassName.expanded) - .addClass(ClassName.collapsed); - }, this.options.expandTransitionDelay); - }; - - // PushMenu Plugin Definition - // ========================== - function Plugin(option) { - return this.each(function () { - var $this = $(this); - var data = $this.data(DataKey); - - if (!data) { - var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); - $this.data(DataKey, (data = new PushMenu(options))); - } - - if (option === 'toggle') data.toggle(); - }); - } - - var old = $.fn.pushMenu; - - $.fn.pushMenu = Plugin; - $.fn.pushMenu.Constructor = PushMenu; - - // No Conflict Mode - // ================ - $.fn.pushMenu.noConflict = function () { - $.fn.pushMenu = old; - return this; - }; - - // Data API - // ======== - $(document).on('click', Selector.button, function (e) { - e.preventDefault(); - Plugin.call($(this), 'toggle'); - }); - $(window).on('load', function () { - Plugin.call($(Selector.button)); - }); -}(jQuery); diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/TodoList.js b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/TodoList.js deleted file mode 100644 index 65a6758..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/TodoList.js +++ /dev/null @@ -1,108 +0,0 @@ -/* TodoList() - * ========= - * Converts a list into a todoList. - * - * @Usage: $('.my-list').todoList(options) - * or add [data-widget="todo-list"] to the ul element - * Pass any option as data-option="value" - */ -+function ($) { - 'use strict'; - - var DataKey = 'lte.todolist'; - - var Default = { - onCheck : function (item) { - return item; - }, - onUnCheck: function (item) { - return item; - } - }; - - var Selector = { - data: '[data-widget="todo-list"]' - }; - - var ClassName = { - done: 'done' - }; - - // TodoList Class Definition - // ========================= - var TodoList = function (element, options) { - this.element = element; - this.options = options; - - this._setUpListeners(); - }; - - TodoList.prototype.toggle = function (item) { - item.parents(Selector.li).first().toggleClass(ClassName.done); - if (!item.prop('checked')) { - this.unCheck(item); - return; - } - - this.check(item); - }; - - TodoList.prototype.check = function (item) { - this.options.onCheck.call(item); - }; - - TodoList.prototype.unCheck = function (item) { - this.options.onUnCheck.call(item); - }; - - // Private - - TodoList.prototype._setUpListeners = function () { - var that = this; - $(this.element).on('change ifChanged', 'input:checkbox', function () { - that.toggle($(this)); - }); - }; - - // Plugin Definition - // ================= - function Plugin(option) { - return this.each(function () { - var $this = $(this); - var data = $this.data(DataKey); - - if (!data) { - var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); - $this.data(DataKey, (data = new TodoList($this, options))); - } - - if (typeof data == 'string') { - if (typeof data[option] == 'undefined') { - throw new Error('No method named ' + option); - } - data[option](); - } - }); - } - - var old = $.fn.todoList; - - $.fn.todoList = Plugin; - $.fn.todoList.Constructor = TodoList; - - // No Conflict Mode - // ================ - $.fn.todoList.noConflict = function () { - $.fn.todoList = old; - return this; - }; - - // TodoList Data API - // ================= - $(window).on('load', function () { - $(Selector.data).each(function () { - Plugin.call($(this)); - }); - }); - -}(jQuery); diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/Tree.js b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/Tree.js deleted file mode 100644 index 414a9de..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/js/Tree.js +++ /dev/null @@ -1,145 +0,0 @@ -/* Tree() - * ====== - * Converts a nested list into a multilevel - * tree view menu. - * - * @Usage: $('.my-menu').tree(options) - * or add [data-widget="tree"] to the ul element - * Pass any option as data-option="value" - */ -+function ($) { - 'use strict'; - - var DataKey = 'lte.tree'; - - var Default = { - animationSpeed: 500, - accordion : true, - followLink : false, - trigger : '.treeview a' - }; - - var Selector = { - tree : '.tree', - treeview : '.treeview', - treeviewMenu: '.treeview-menu', - open : '.menu-open, .active', - li : 'li', - data : '[data-widget="tree"]', - active : '.active' - }; - - var ClassName = { - open: 'menu-open', - tree: 'tree' - }; - - var Event = { - collapsed: 'collapsed.tree', - expanded : 'expanded.tree' - }; - - // Tree Class Definition - // ===================== - var Tree = function (element, options) { - this.element = element; - this.options = options; - - $(this.element).addClass(ClassName.tree); - - $(Selector.treeview + Selector.active, this.element).addClass(ClassName.open); - - this._setUpListeners(); - }; - - Tree.prototype.toggle = function (link, event) { - var treeviewMenu = link.next(Selector.treeviewMenu); - var parentLi = link.parent(); - var isOpen = parentLi.hasClass(ClassName.open); - - if (!parentLi.is(Selector.treeview)) { - return; - } - - if (!this.options.followLink || link.attr('href') === '#') { - event.preventDefault(); - } - - if (isOpen) { - this.collapse(treeviewMenu, parentLi); - } else { - this.expand(treeviewMenu, parentLi); - } - }; - - Tree.prototype.expand = function (tree, parent) { - var expandedEvent = $.Event(Event.expanded); - - if (this.options.accordion) { - var openMenuLi = parent.siblings(Selector.open); - var openTree = openMenuLi.children(Selector.treeviewMenu); - this.collapse(openTree, openMenuLi); - } - - parent.addClass(ClassName.open); - tree.slideDown(this.options.animationSpeed, function () { - $(this.element).trigger(expandedEvent); - }.bind(this)); - }; - - Tree.prototype.collapse = function (tree, parentLi) { - var collapsedEvent = $.Event(Event.collapsed); - - //tree.find(Selector.open).removeClass(ClassName.open); - parentLi.removeClass(ClassName.open); - tree.slideUp(this.options.animationSpeed, function () { - //tree.find(Selector.open + ' > ' + Selector.treeview).slideUp(); - $(this.element).trigger(collapsedEvent); - }.bind(this)); - }; - - // Private - - Tree.prototype._setUpListeners = function () { - var that = this; - - $(this.element).on('click', this.options.trigger, function (event) { - that.toggle($(this), event); - }); - }; - - // Plugin Definition - // ================= - function Plugin(option) { - return this.each(function () { - var $this = $(this); - var data = $this.data(DataKey); - - if (!data) { - var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); - $this.data(DataKey, new Tree($this, options)); - } - }); - } - - var old = $.fn.tree; - - $.fn.tree = Plugin; - $.fn.tree.Constructor = Tree; - - // No Conflict Mode - // ================ - $.fn.tree.noConflict = function () { - $.fn.tree = old; - return this; - }; - - // Tree Data API - // ============= - $(window).on('load', function () { - $(Selector.data).each(function () { - Plugin.call($(this)); - }); - }); - -}(jQuery); diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/.csslintrc b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/.csslintrc deleted file mode 100644 index c77a7cb..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/404_500_errors.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/404_500_errors.less deleted file mode 100644 index f7fadcf..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/AdminLTE-without-plugins.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/AdminLTE-without-plugins.less deleted file mode 100644 index 878c5f4..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/AdminLTE-without-plugins.less +++ /dev/null @@ -1,55 +0,0 @@ -/*! - * AdminLTE v2.4.0 Without Third-Party Plugins - * Author: Almsaeed Studio - * Website: Almsaeed Studio - * License: Open source - MIT - * Please visit http://opensource.org/licenses/MIT for more information -!*/ -//Bootstrap Variables & Mixins -//The core bootstrap code have not been modified. These files -//are included only for reference. -@import (reference) "../bootstrap-less/mixins"; -@import (reference) "../bootstrap-less/variables"; -//MISC -//---- -@import "core"; -@import "variables"; -@import "mixins"; -//COMPONENTS -//----------- -@import "header"; -@import "sidebar"; -@import "sidebar-mini"; -@import "control-sidebar"; -@import "dropdown"; -@import "forms"; -@import "progress-bars"; -@import "small-box"; -@import "boxes"; -@import "info-box"; -@import "timeline"; -@import "buttons"; -@import "callout"; -@import "alerts"; -@import "navs"; -@import "products"; -@import "table"; -@import "labels"; -@import "direct-chat"; -@import "users-list"; -@import "carousel"; -@import "modal"; -@import "social-widgets"; -@import "treeview"; -//PAGES -//------ -@import "mailbox"; -@import "lockscreen"; -@import "login_and_register"; -@import "404_500_errors"; -@import "invoice"; -@import "profile"; -//Miscellaneous -//------------- -@import "miscellaneous"; -@import "print"; diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/AdminLTE.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/AdminLTE.less deleted file mode 100644 index 43763c3..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/AdminLTE.less +++ /dev/null @@ -1,62 +0,0 @@ -/*! - * AdminLTE v2.4.8 - * Author: Almsaeed Studio - * Website: Almsaeed Studio - * License: Open source - MIT - * Please visit http://opensource.org/licenses/MIT for more information - */ -// Bootstrap -//-------------------------------------------------------- -@import (reference) "../bootstrap-less/mixins"; -@import (reference) "../bootstrap-less/variables"; - -// MISC -//-------------------------------------------------------- -@import "core"; -@import "variables"; -@import "mixins"; - -// COMPONENTS -//-------------------------------------------------------- -@import "header"; -@import "sidebar"; -@import "sidebar-mini"; -@import "control-sidebar"; -@import "dropdown"; -@import "forms"; -@import "progress-bars"; -@import "small-box"; -@import "boxes"; -@import "info-box"; -@import "timeline"; -@import "buttons"; -@import "callout"; -@import "alerts"; -@import "navs"; -@import "products"; -@import "table"; -@import "labels"; -@import "direct-chat"; -@import "users-list"; -@import "carousel"; -@import "modal"; -@import "social-widgets"; -@import "treeview"; - -// PAGES -//-------------------------------------------------------- -@import "mailbox"; -@import "lockscreen"; -@import "login_and_register"; -@import "404_500_errors"; -@import "invoice"; -@import "profile"; - -// Plugins -//-------------------------------------------------------- -@import "plugins"; - -// Miscellaneous -//-------------------------------------------------------- -@import "miscellaneous"; -@import "print"; diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/alerts.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/alerts.less deleted file mode 100644 index dc15cb6..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/bootstrap-social.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/bootstrap-social.less deleted file mode 100644 index d8d279b..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/bootstrap-social.less +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Social Buttons for Bootstrap - * - * Copyright 2013-2015 Panayiotis Lipiridis - * Licensed under the MIT License - * - * https://github.com/lipis/bootstrap-social - */ - -// Import variables and mixins as a reference for separate plugins version -@import (reference) "../bootstrap-less/mixins"; -@import (reference) "../bootstrap-less/variables"; -@import (reference) "variables"; -@import (reference) "mixins"; - -@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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/boxes.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/boxes.less deleted file mode 100644 index fc1f674..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/boxes.less +++ /dev/null @@ -1,489 +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-lte; - } - - // 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-lte, #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; - } - } - - .dropdown-menu > li > a { - color: #444!important; - } - } -} - -//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-lte !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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/buttons.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/buttons.less deleted file mode 100644 index 7a0aaa6..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/callout.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/callout.less deleted file mode 100644 index 9f6aaa1..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/carousel.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/carousel.less deleted file mode 100644 index f069109..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/control-sidebar.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/control-sidebar.less deleted file mode 100644 index d8e94b8..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/control-sidebar.less +++ /dev/null @@ -1,299 +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-xs-max) { - 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; - } - } -} - -// Fixed Layout -.fixed { - .control-sidebar { - position: fixed; - height: 100%; - overflow-y: auto; - padding-bottom: 50px; - } -} - -// 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-lte; - } - // Sidebar tabs - .nav-tabs.control-sidebar-tabs { - border-bottom: @gray-lte; - > li { - > a { - background: darken(@sidebar-light-bg, 5%); - color: @sidebar-light-color; - // Hover and active states - &, - &:hover, - &:focus { - border-left-color: @gray-lte; - border-bottom-color: @gray-lte; - } - &: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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/core.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/core.less deleted file mode 100644 index 1f6bdc9..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/core.less +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Core: General Layout Style - * ------------------------- - */ -html, -body { - height: 100%; - .layout-boxed & { - height: 100%; - } -} - -body { - font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-weight: 400; - overflow-x: hidden; - overflow-y: auto; -} - -/* Layout */ -.wrapper { - .clearfix(); - height: 100%; - position: relative; - overflow-x: hidden; - overflow-y: auto; - .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-color: @sidebar-light-bg; -} - -/* - * Content Wrapper - contains the main content - */ -.content-wrapper, -.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 { - min-height: 100%; - background-color: @content-bg; - z-index: 800; -} - -.main-footer { - background: #fff; - padding: 15px; - color: #444; - border-top: 1px solid @gray-lte; -} - -/* 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%; - } - } - .wrapper { - overflow: hidden; - } -} - -.hold-transition { - .content-wrapper, - .right-side, - .main-footer, - .main-sidebar, - .left-side, - .main-header .navbar, - .main-header .logo, - .menu-open .fa-angle-left { - /* 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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/datepicker.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/datepicker.less deleted file mode 100644 index 11872d4..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/datepicker.less +++ /dev/null @@ -1,22 +0,0 @@ -.box { - .datepicker-inline { - &, - .datepicker-days { - &, - > table { - width: 100%; - td { - &:hover { - background-color: rgba(255, 255, 255, .3); - } - &.day { - &.old, - &.new { - color: #777; - } - } - } - } - } - } -} \ No newline at end of file diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/direct-chat.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/direct-chat.less deleted file mode 100644 index f35c07d..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/dropdown.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/dropdown.less deleted file mode 100644 index ab5d97e..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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-lte, 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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/forms.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/forms.less deleted file mode 100644 index 4ab0c03..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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-lte; - &: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-lte; - 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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/fullcalendar.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/fullcalendar.less deleted file mode 100644 index 4496daf..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/fullcalendar.less +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Plugin: Full Calendar - * --------------------- - */ -// Import variables and mixins as a reference for separate plugins version -@import (reference) "../bootstrap-less/mixins"; -@import (reference) "../bootstrap-less/variables"; -@import (reference) "variables"; -@import (reference) "mixins"; - -// 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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/header.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/header.less deleted file mode 100644 index 918ec6a..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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-lte; - padding-left: 10px; - li:before { - color: darken(@gray-lte, 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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/info-box.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/info-box.less deleted file mode 100644 index f8df3a8..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/invoice.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/invoice.less deleted file mode 100644 index 3d2fcf8..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/labels.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/labels.less deleted file mode 100644 index f0dd59a..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/labels.less +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Component: Label - * ---------------- - */ -.label-default { - background-color: @gray-lte; - 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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/lockscreen.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/lockscreen.less deleted file mode 100644 index bdffbe6..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/lockscreen.less +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Page: Lock Screen - * ----------------- - */ -/* ADD THIS CLASS TO THE TAG */ -.lockscreen { - background: @gray-lte; -} - -.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/login_and_register.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/login_and_register.less deleted file mode 100644 index 9d6969e..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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-lte; -} - -.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/mailbox.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/mailbox.less deleted file mode 100644 index 8e7a429..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/miscellaneous.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/miscellaneous.less deleted file mode 100644 index e819c79..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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-lte !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-lte, 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-lte !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-lte, 30%); - &:hover, - &:focus { - color: darken(@gray-lte, 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-lte; - padding: 3px; -} - -.img-bordered-sm { - border: 2px solid @gray-lte; - 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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/mixins.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/mixins.less deleted file mode 100644 index 749bc55..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/mixins.less +++ /dev/null @@ -1,312 +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, - &.menu-open > a { - color: @sidebar-dark-hover-color; - background: @sidebar-dark-hover-bg; - } - &.active > a { - 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 - .sidebar-menu .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-lte; - } - .main-sidebar { - border-right: 1px solid @gray-lte; - } - //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 - .sidebar-menu .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-lte; //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-lte; - } - } - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/modal.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/modal.less deleted file mode 100644 index f42db1c..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/navs.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/navs.less deleted file mode 100644 index 17da735..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/navs.less +++ /dev/null @@ -1,232 +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; - - &.disabled > a { - color: #777; - } - - > 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-lte; - } - } - } -} - -/* PAGINATION */ -.pagination { - > li > a { - background: #fafafa; - color: #666; - } - &.pagination-flat { - > li > a { - .border-radius(0) !important; - } - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/plugins.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/plugins.less deleted file mode 100644 index 5807f7b..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/plugins.less +++ /dev/null @@ -1,5 +0,0 @@ -// Customized third-party plugins -@import "bootstrap-social.less"; -@import "fullcalendar.less"; -@import "select2.less"; -@import "datepicker"; \ No newline at end of file diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/print.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/print.less deleted file mode 100644 index 52b14f2..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/products.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/products.less deleted file mode 100644 index 49f30a6..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/profile.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/profile.less deleted file mode 100644 index 8bc4813..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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-lte; -} - -.profile-username { - font-size: 21px; - margin-top: 5px; -} - -.post { - border-bottom: 1px solid @gray-lte; - 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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/progress-bars.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/progress-bars.less deleted file mode 100644 index 423edc4..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/select2.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/select2.less deleted file mode 100644 index 6e31018..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/select2.less +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Plugin: Select2 - * --------------- - */ -// Import variables and mixins as a reference for separate plugins version -@import (reference) "../bootstrap-less/mixins"; -@import (reference) "../bootstrap-less/variables"; -@import (reference) "variables"; -@import (reference) "mixins"; - -//Signle select -.select2-container--default, -.select2-selection { - &.select2-container--focus, - &:focus, - &:active { - outline: none; - } - .select2-selection--single { - border: 1px solid @gray-lte; - 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-lte; - 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-lte; - &:focus { - outline: none; - //border: 1px solid @light-blue; - } - } -} - -.select2-container--default.select2-container--focus .select2-selection--multiple, -.select2-container--default .select2-search--dropdown .select2-search__field { - border-color: @light-blue !important; -} - -.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-lte; - border-radius: @input-radius; - &:focus { - border-color: @light-blue; - } - } - &.select2-container--focus .select2-selection--multiple { - border-color: @gray-lte; - } -} - -.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/sidebar-mini.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/sidebar-mini.less deleted file mode 100644 index 9f314d3..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/sidebar-mini.less +++ /dev/null @@ -1,167 +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; - } - } - } - - //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; - } - } - } - } -} - -@media (min-width: @screen-sm) { - // Show menu items on hover - .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse { - .sidebar-menu > li: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; - position: relative !important; - float: right; - width: auto !important; - left: 200px - 20px !important; - top: -22px !important; - z-index: 900; - > .label:not(:first-of-type) { - display: none; - } - } - > .treeview-menu { - top: 44px; - margin-left: 0; - } - } - } -} - -.sidebar-expanded-on-hover { - .main-footer, - .content-wrapper { - margin-left: 50px; - } - .main-sidebar { - box-shadow: @sidebar-expanded-shadow; - } -} - -//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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/sidebar.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/sidebar.less deleted file mode 100644 index 076cf76..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/sidebar.less +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Component: Sidebar - * ------------------ - */ -// Main Sidebar -.main-sidebar { - 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; - .transition(transform .5s ease); - } - li > a > .fa-angle-left { - position: absolute; - top: 50%; - right: 10px; - margin-top: -8px; - } - - .menu-open { - > a > .fa-angle-left, - > a > .pull-right-container > .fa-angle-left { - .rotate(-90deg); - } - } - .active > .treeview-menu { - display: block; - } -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/_all-skins.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/_all-skins.less deleted file mode 100644 index ec07547..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-black-light.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-black-light.less deleted file mode 100644 index cf5677f..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-black-light.less +++ /dev/null @@ -1,65 +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)); - border-bottom: 1px solid @gray-lte; - .navbar-toggle { - color: #333; - } - .navbar-brand { - color: #333; - border-right: 1px solid @gray-lte; - } - .navbar { - .navbar-variant(#fff; #333; #999; #fff); - > .sidebar-toggle { - color: #333; - border-right: 1px solid @gray-lte; - } - .navbar-nav { - > li > a { - border-right: 1px solid @gray-lte; - } - } - .navbar-custom-menu .navbar-nav, - .navbar-right { - > li { - > a { - border-left: 1px solid @gray-lte; - border-right-width: 0; - } - } - } - } - .logo { - .logo-variant(#fff; #333); - border-right: 1px solid @gray-lte; - @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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-black.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-black.less deleted file mode 100644 index 21cc6b9..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-blue-light.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-blue-light.less deleted file mode 100644 index 0abeca4..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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-lte; - } -} - -.skin-blue.layout-top-nav .main-header > .logo { - .logo-variant(@light-blue); -} diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-blue.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-blue.less deleted file mode 100644 index 63fb32f..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-green-light.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-green-light.less deleted file mode 100644 index 2e48384..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-green.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-green.less deleted file mode 100644 index a729b70..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-purple-light.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-purple-light.less deleted file mode 100644 index 42d3fe0..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-purple.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-purple.less deleted file mode 100644 index 53a38fa..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-red-light.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-red-light.less deleted file mode 100644 index 792390b..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-red.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-red.less deleted file mode 100644 index 6ca253d..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-yellow-light.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-yellow-light.less deleted file mode 100644 index 02e4650..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-yellow.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/skins/skin-yellow.less deleted file mode 100644 index 821723d..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/small-box.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/small-box.less deleted file mode 100644 index 8ad7cc7..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/social-widgets.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/social-widgets.less deleted file mode 100644 index e2861a3..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/table.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/table.less deleted file mode 100644 index f1ea979..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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; - } -} \ No newline at end of file diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/timeline.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/timeline.less deleted file mode 100644 index 235e7e5..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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-lte; - 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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/treeview.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/treeview.less deleted file mode 100644 index 664f816..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/treeview.less +++ /dev/null @@ -1,30 +0,0 @@ -// 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; - } - } - } -} \ No newline at end of file diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/users-list.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/users-list.less deleted file mode 100644 index c5ef2a5..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/variables.less b/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/variables.less deleted file mode 100644 index b504469..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/build/less/variables.less +++ /dev/null @@ -1,121 +0,0 @@ -// AdminLTE 2 Variables.less -// ========================= - -// 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-lte: #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; // DEPRECATED -@content-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; - -// sidebar-expanded-on-hover -@sidebar-expanded-shadow: 3px 0 8px rgba(0,0,0,.125); - -// 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-lte; -@direct-chat-default-font-color: #444; -@direct-chat-default-msg-border-color: @gray-lte; - -// CHAT WIDGET -// -------------------------------------------------------- -@attachment-border-radius: 3px; - -// TRANSITIONS SETTINGS -// -------------------------------------------------------- - -// Transition global options -@transition-speed: .3s; -@transition-fn: ease-in-out; diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/adminlte-options.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/adminlte-options.html deleted file mode 100644 index 098aab3..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/adminlte-options.html +++ /dev/null @@ -1,125 +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 option 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 Tree Views
-  enableControlTreeView: 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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/advice.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/advice.html deleted file mode 100644 index 6c0d49e..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/browsers.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/browsers.html deleted file mode 100644 index cb84121..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/components.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/components.html deleted file mode 100644 index a2d9009..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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 ways. This is 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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/dependencies.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/dependencies.html deleted file mode 100644 index 495e907..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/download.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/download.html deleted file mode 100644 index fa034ea..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/faq.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/faq.html deleted file mode 100644 index 203cbee..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/implementations.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/implementations.html deleted file mode 100644 index b2f0d18..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/implementations.html +++ /dev/null @@ -1,20 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/introduction.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/introduction.html deleted file mode 100644 index 3a88850..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/layout.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/layout.html deleted file mode 100644 index 064c7bf..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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 one 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 the skin file that you want and 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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/license.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/license.html deleted file mode 100644 index b326240..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/plugins.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/plugins.html deleted file mode 100644 index eb9c66f..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/upgrade.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/include/upgrade.html deleted file mode 100644 index d339bc6..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/index.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/index.html deleted file mode 100644 index 4322582..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/build/index.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - AdminLTE 2 | Documentation - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - - -
- -
-

- AdminLTE Documentation - Version 2.3 -

- -
- - -
-

- This documentation is for versions 2.3 and under. - If you are looking for documentation for version 2.4 and above, - please visit our online documentation. -

- - 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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/docs.js b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/docs.js deleted file mode 100644 index cbbe38b..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/docs.js +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Documentation JS script - */ -$(function () { - 'use strict' - - 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 currentSkin = 'skin-blue' - - $('#layout-skins-list [data-skin]').click(function (e) { - e.preventDefault() - var skinName = $(this).data('skin') - $('body').removeClass(currentSkin) - $('body').addClass(skinName) - currentSkin = skinName - }) -}) diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/index.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/index.html deleted file mode 100644 index 3acbdac..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/index.html +++ /dev/null @@ -1,2178 +0,0 @@ - - - - - - AdminLTE 2 | Documentation - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - - -
- -
-

- AdminLTE Documentation - Version 2.3 -

- -
- - -
-

- This documentation is for versions 2.3 and under. - If you are looking for documentation for version 2.4 and above, - please visit our online documentation. -

- -
- -

- 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 one 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 the skin file that you want and 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 option 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 Tree Views
-        enableControlTreeView: 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 ways. This is 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/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/style.css b/power-admin/src/main/webapp/static/bootstrap-3.3.7/documentation/style.css deleted file mode 100644 index c68a50b..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/buttons.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/buttons.html deleted file mode 100644 index 3aa572a..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/buttons.html +++ /dev/null @@ -1,1713 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/general.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/general.html deleted file mode 100644 index e6d6695..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/general.html +++ /dev/null @@ -1,1661 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/icons.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/icons.html deleted file mode 100644 index c66881d..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/icons.html +++ /dev/null @@ -1,3035 +0,0 @@ - - - - - - AdminLTE 2 | Icons - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - - -
- -
-

- Icons - a set of beautiful icons -

- -
- - -
-
-
- - -
- -
- -
- -
- -
- - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
- - - - - -
-
- - - - - - - - - - - - - - diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/modals.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/modals.html deleted file mode 100644 index faa87ec..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/modals.html +++ /dev/null @@ -1,911 +0,0 @@ - - - - - - AdminLTE 2 | Modals - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - - -
- -
-

- Modals - new -

- -
- - -
-
-

Reminder!

- Instructions for how to use modals are available on the - Bootstrap documentation -
- -
-
-
-
-

Modal Examples

-
-
- - - - - -
-
-
-
- - - - - - - - - - - - - - - - - - -
- -
- - -
- - Copyright © 2014-2016 Almsaeed Studio. All rights - reserved. -
- - - - - -
-
- - - - - - - - - - - - - - diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/sliders.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/sliders.html deleted file mode 100644 index a7265b8..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/sliders.html +++ /dev/null @@ -1,821 +0,0 @@ - - - - - - AdminLTE 2 | UI Sliders - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - - -
- -
-

- Sliders - range sliders -

- -
- - -
-
-
-
-
-

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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/timeline.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/timeline.html deleted file mode 100644 index a669da6..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/UI/timeline.html +++ /dev/null @@ -1,913 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/calendar.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/calendar.html deleted file mode 100644 index fe09416..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/calendar.html +++ /dev/null @@ -1,983 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/chartjs.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/chartjs.html deleted file mode 100644 index ade25b8..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/chartjs.html +++ /dev/null @@ -1,922 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/flot.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/flot.html deleted file mode 100644 index 68398c6..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/flot.html +++ /dev/null @@ -1,1132 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/inline.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/inline.html deleted file mode 100644 index f3dfd8d..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/inline.html +++ /dev/null @@ -1,1306 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/morris.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/morris.html deleted file mode 100644 index 0bcae19..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/charts/morris.html +++ /dev/null @@ -1,911 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/404.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/404.html deleted file mode 100644 index 7ea2c12..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/404.html +++ /dev/null @@ -1,759 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/500.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/500.html deleted file mode 100644 index 620f95d..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/500.html +++ /dev/null @@ -1,760 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/blank.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/blank.html deleted file mode 100644 index 700b53e..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/blank.html +++ /dev/null @@ -1,664 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/invoice-print.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/invoice-print.html deleted file mode 100644 index ee095c8..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/invoice-print.html +++ /dev/null @@ -1,173 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/invoice.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/invoice.html deleted file mode 100644 index 8b04410..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/invoice.html +++ /dev/null @@ -1,889 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/lockscreen.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/lockscreen.html deleted file mode 100644 index a7f7424..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/lockscreen.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - AdminLTE 2 | Lockscreen - - - - - - - - - - - - - - - - - - - - -
- - -
John Doe
- - -
- -
- User Image -
- - - -
-
- - -
- -
-
-
- - -
- -
- Enter your password to retrieve your session -
- - -
- - - - - - - - diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/login.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/login.html deleted file mode 100644 index 1e47e84..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/login.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - AdminLTE 2 | Log in - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/pace.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/pace.html deleted file mode 100644 index 0f2eaf8..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/pace.html +++ /dev/null @@ -1,689 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/profile.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/profile.html deleted file mode 100644 index af61d0a..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/profile.html +++ /dev/null @@ -1,1088 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/register.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/register.html deleted file mode 100644 index 29d8ccf..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/examples/register.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - AdminLTE 2 | Registration Page - - - - - - - - - - - - - - - - - - - - - -
- - -
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-
-
- -
-
- -
- -
- -
-
- - - - I already have a membership -
- -
- - - - - - - - - - - diff --git a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/forms/advanced.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/forms/advanced.html deleted file mode 100644 index dc7f8d5..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/forms/advanced.html +++ /dev/null @@ -1,1230 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/forms/editors.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/forms/editors.html deleted file mode 100644 index bedf07b..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/forms/editors.html +++ /dev/null @@ -1,811 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/forms/general.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/forms/general.html deleted file mode 100644 index 4ff53b5..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/forms/general.html +++ /dev/null @@ -1,1119 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/boxed.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/boxed.html deleted file mode 100644 index d02e250..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/boxed.html +++ /dev/null @@ -1,657 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/collapsed-sidebar.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/collapsed-sidebar.html deleted file mode 100644 index aa68c7a..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/collapsed-sidebar.html +++ /dev/null @@ -1,663 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/fixed.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/fixed.html deleted file mode 100644 index ad8ff0d..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/fixed.html +++ /dev/null @@ -1,663 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/top-nav.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/top-nav.html deleted file mode 100644 index d933173..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/layout/top-nav.html +++ /dev/null @@ -1,293 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/mailbox/compose.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/mailbox/compose.html deleted file mode 100644 index f0a787d..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/mailbox/mailbox.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/mailbox/mailbox.html deleted file mode 100644 index 8f5dbbd..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/mailbox/read-mail.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/mailbox/read-mail.html deleted file mode 100644 index 6593780..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/tables/data.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/tables/data.html deleted file mode 100644 index 6ca57c4..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/tables/data.html +++ /dev/null @@ -1,1646 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/tables/simple.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/tables/simple.html deleted file mode 100644 index 6b18550..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/tables/simple.html +++ /dev/null @@ -1,1059 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/widgets.html b/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/widgets.html deleted file mode 100644 index 2bfe69b..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.3.7/pages/widgets.html +++ /dev/null @@ -1,1791 +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/power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/bootstrap-slider/bootstrap-slider.js b/power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/bootstrap-slider/bootstrap-slider.js deleted file mode 100644 index 3a0e464..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/bootstrap-slider/slider.css b/power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/bootstrap-slider/slider.css deleted file mode 100644 index 3a64928..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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/power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.js b/power-admin/src/main/webapp/static/bootstrap-3.3.7/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.js deleted file mode 100644 index acccf91..0000000 --- a/power-admin/src/main/webapp/static/bootstrap-3.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