diff --git a/build/Gruntfile.js b/build/Gruntfile.js index a5e9b2649..fd50df90d 100644 --- a/build/Gruntfile.js +++ b/build/Gruntfile.js @@ -656,6 +656,49 @@ module.exports = function(grunt) { }); }); + grunt.registerTask('test-app-init', function() { + grunt.initConfig({ + pkg: packageFile, + + clean: { + options: { + force: true + }, + prebuild: packageFile['test']['clean']['prebuild'] + }, + + terser: { + options: { + format: { + comments: false, + preamble: copyright, + }, + }, + build: { + src: packageFile['test']['js']['src'], + dest: packageFile['test']['js']['dist'] + } + }, + + less: { + production: { + options: { + compress: true, + ieCompat: false + }, + files: { + "<%= pkg.test.less.files.dist %>": packageFile['test']['less']['files']['src'] + } + } + }, + + copy: { + 'index-page': { + files: packageFile['test']['copy']['index-page'] + } + } + }); + }); grunt.registerTask('increment-build', function() { var pkg = grunt.file.readJSON(defaultConfig); @@ -696,12 +739,16 @@ module.exports = function(grunt) { /*'replace:writeVersion', 'replace:fixResourceUrl'*/]); grunt.registerTask('deploy-app-embed', ['embed-app-init', 'clean:prebuild', 'terser', 'less', 'copy', 'clean:postbuild']); + grunt.registerTask('deploy-app-test', ['test-app-init', 'clean:prebuild', 'terser', 'less', 'copy']); doRegisterInitializeAppTask('common', 'Common', 'common.json'); doRegisterInitializeAppTask('documenteditor', 'DocumentEditor', 'documenteditor.json'); doRegisterInitializeAppTask('spreadsheeteditor', 'SpreadsheetEditor', 'spreadsheeteditor.json'); doRegisterInitializeAppTask('presentationeditor', 'PresentationEditor', 'presentationeditor.json'); + doRegisterInitializeAppTask('testdocumenteditor', 'TestDocumentEditor', 'testdocumenteditor.json'); + doRegisterInitializeAppTask('testpresentationeditor', 'TestPresentationEditor', 'testpresentationeditor.json'); + doRegisterInitializeAppTask('testspreadsheeteditor', 'TestSpreadsheetEditor', 'testspreadsheeteditor.json'); grunt.registerTask('deploy-app', 'Deploy application.', function(){ if (packageFile) { @@ -725,6 +772,10 @@ module.exports = function(grunt) { grunt.registerTask('deploy-spreadsheeteditor', ['deploy-common-component', 'deploy-spreadsheeteditor-component']); grunt.registerTask('deploy-presentationeditor', ['deploy-common-component', 'deploy-presentationeditor-component']); + grunt.registerTask('deploy-testdocumenteditor', ['init-build-testdocumenteditor', 'deploy-app']); + grunt.registerTask('deploy-testpresentationeditor', ['init-build-testpresentationeditor', 'deploy-app']); + grunt.registerTask('deploy-testspreadsheeteditor', ['init-build-testspreadsheeteditor', 'deploy-app']); + grunt.registerTask('default', ['deploy-common-component', 'deploy-documenteditor-component', 'deploy-spreadsheeteditor-component', diff --git a/build/documenteditor.json b/build/documenteditor.json index 3ebde78d9..af6d73319 100644 --- a/build/documenteditor.json +++ b/build/documenteditor.json @@ -1,7 +1,7 @@ { "name": "documenteditor", "version": "4.3.0", - "build": 1149, + "build": 1150, "homepage": "http://www.onlyoffice.com", "private": true, "main": { diff --git a/build/testdocumenteditor.json b/build/testdocumenteditor.json new file mode 100644 index 000000000..d54ed3c74 --- /dev/null +++ b/build/testdocumenteditor.json @@ -0,0 +1,41 @@ +{ + "name": "testdocumenteditor", + "version": "4.3.0", + "build": 1153, + "homepage": "http://www.onlyoffice.com", + "private": true, + "test": { + "clean": { + "prebuild": [ + "../deploy/web-apps/test/documenteditor/main" + ] + }, + "js": { + "src": [ + "../test/common/Gateway.js", + "../test/common/main/lib/util/utils.js", + "../test/documenteditor/main/js/ApplicationView.js", + "../test/documenteditor/main/js/ApplicationController.js", + "../test/documenteditor/main/js/application.js" + ], + "dist": "../deploy/web-apps/test/documenteditor/main/app-all.js" + }, + "less": { + "files": { + "src": "../test/documenteditor/main/resources/less/application.less", + "dist": "../deploy/web-apps/test/documenteditor/main/resources/css/app-all.css" + } + }, + "copy": { + "index-page": { + "../deploy/web-apps/test/documenteditor/main/index.html": "../test/documenteditor/main/index.html.deploy" + } + } + }, + "tasks": { + "deploy": [ + "increment-build", + "deploy-app-test" + ] + } +} \ No newline at end of file diff --git a/build/testpresentationeditor.json b/build/testpresentationeditor.json new file mode 100644 index 000000000..265b9644c --- /dev/null +++ b/build/testpresentationeditor.json @@ -0,0 +1,41 @@ +{ + "name": "testpresentationeditor", + "version": "4.3.0", + "build": 1153, + "homepage": "http://www.onlyoffice.com", + "private": true, + "test": { + "clean": { + "prebuild": [ + "../deploy/web-apps/test/presentationeditor/main" + ] + }, + "js": { + "src": [ + "../test/common/Gateway.js", + "../test/common/main/lib/util/utils.js", + "../test/presentationeditor/main/js/ApplicationView.js", + "../test/presentationeditor/main/js/ApplicationController.js", + "../test/presentationeditor/main/js/application.js" + ], + "dist": "../deploy/web-apps/test/presentationeditor/main/app-all.js" + }, + "less": { + "files": { + "src": "../test/presentationeditor/main/resources/less/application.less", + "dist": "../deploy/web-apps/test/presentationeditor/main/resources/css/app-all.css" + } + }, + "copy": { + "index-page": { + "../deploy/web-apps/test/presentationeditor/main/index.html": "../test/presentationeditor/main/index.html.deploy" + } + } + }, + "tasks": { + "deploy": [ + "increment-build", + "deploy-app-test" + ] + } +} \ No newline at end of file diff --git a/build/testspreadsheeteditor.json b/build/testspreadsheeteditor.json new file mode 100644 index 000000000..30f491351 --- /dev/null +++ b/build/testspreadsheeteditor.json @@ -0,0 +1,43 @@ +{ + "name": "testspreadsheeteditor", + "version": "4.3.0", + "build": 1153, + "homepage": "http://www.onlyoffice.com", + "private": true, + "test": { + "clean": { + "prebuild": [ + "../deploy/web-apps/test/spreadsheeteditor/main" + ] + }, + "js": { + "src": [ + "../test/common/Gateway.js", + "../test/common/main/lib/util/utils.js", + "../test/spreadsheeteditor/main/js/CellEditorView.js", + "../test/spreadsheeteditor/main/js/CellEditorController.js", + "../test/spreadsheeteditor/main/js/ApplicationView.js", + "../test/spreadsheeteditor/main/js/ApplicationController.js", + "../test/spreadsheeteditor/main/js/application.js" + ], + "dist": "../deploy/web-apps/test/spreadsheeteditor/main/app-all.js" + }, + "less": { + "files": { + "src": "../test/spreadsheeteditor/main/resources/less/application.less", + "dist": "../deploy/web-apps/test/spreadsheeteditor/main/resources/css/app-all.css" + } + }, + "copy": { + "index-page": { + "../deploy/web-apps/test/spreadsheeteditor/main/index.html": "../test/spreadsheeteditor/main/index.html.deploy" + } + } + }, + "tasks": { + "deploy": [ + "increment-build", + "deploy-app-test" + ] + } +} \ No newline at end of file diff --git a/test/common/main/lib/util/LocalStorage.js b/test/common/main/lib/util/LocalStorage.js deleted file mode 100644 index be30d339c..000000000 --- a/test/common/main/lib/util/LocalStorage.js +++ /dev/null @@ -1,137 +0,0 @@ -/* - * - * (c) Copyright Ascensio System SIA 2010-2021 - * - * This program is a free software product. You can redistribute it and/or - * modify it under the terms of the GNU Affero General Public License (AGPL) - * version 3 as published by the Free Software Foundation. In accordance with - * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect - * that Ascensio System SIA expressly excludes the warranty of non-infringement - * of any third-party rights. - * - * This program is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For - * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html - * - * You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha - * street, Riga, Latvia, EU, LV-1050. - * - * The interactive user interfaces in modified source and object code versions - * of the Program must display Appropriate Legal Notices, as required under - * Section 5 of the GNU AGPL version 3. - * - * Pursuant to Section 7(b) of the License you must retain the original Product - * logo when distributing the program. Pursuant to Section 7(e) we decline to - * grant you any rights under trademark law for use of our trademarks. - * - * All the Product's GUI elements, including illustrations and icon sets, as - * well as technical writing content are licensed under the terms of the - * Creative Commons Attribution-ShareAlike 4.0 International. See the License - * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode - * -*/ - -!window.common && (window.common = {}); - -common.localStorage = new (function() { - var _storeName, _filter; - var _store = {}; - - var ongetstore = function(data) { - if (data.type == 'localstorage') { - _store = data.keys; - } - }; - - Common.Gateway.on('internalcommand', ongetstore); - - var _refresh = function() { - if (!_lsAllowed) - Common.Gateway.internalMessage('localstorage', {cmd:'get', keys:_filter}); - }; - - var _save = function() { - if (!_lsAllowed) - Common.Gateway.internalMessage('localstorage', {cmd:'set', keys:_store}); - }; - - var _setItem = function(name, value, just) { - if (_lsAllowed) { - try - { - localStorage.setItem(name, value); - } - catch (error){} - - } else { - _store[name] = value; - - if (just===true) { - Common.Gateway.internalMessage('localstorage', { - cmd:'set', - keys: { - name: value - } - }); - } - } - }; - - var _setItemAsBool = function(name, value, just) { - _setItem(name, value ? 1 : 0, just); - }; - - var _getItem = function(name) { - if (_lsAllowed) - return localStorage.getItem(name); - else - return _store[name]===undefined ? null : _store[name]; - }; - - var _getItemAsBool = function (name, defValue) { - var value = _getItem(name); - defValue = defValue || false; - return (value!==null) ? (parseInt(value) != 0) : defValue; - }; - - var _getItemExists = function (name) { - var value = _getItem(name); - return value !== null; - }; - - var _removeItem = function(name) { - if (_lsAllowed) - localStorage.removeItem(name); - else - delete _store[name]; - }; - - try { - var _lsAllowed = !!window.localStorage; - } catch (e) { - _lsAllowed = false; - } - - return { - getId: function() { - return _storeName; - }, - setId: function(name) { - _storeName = name; - }, - getItem: _getItem, - getBool: _getItemAsBool, - setBool: _setItemAsBool, - setItem: _setItem, - removeItem: _removeItem, - setKeysFilter: function(value) { - _filter = value; - }, - getKeysFilter: function() { - return _filter; - }, - itemExists: _getItemExists, - sync: _refresh, - save: _save - }; -})(); diff --git a/test/common/main/resources/less/common.less b/test/common/main/resources/less/common.less index 860c2a90f..89673ad86 100644 --- a/test/common/main/resources/less/common.less +++ b/test/common/main/resources/less/common.less @@ -1,80 +1,3 @@ -// Core variables and mixins -@import "../../../../../vendor/bootstrap/less/variables.less"; - -@icon-font-path: "../../../../../../vendor/bootstrap/dist/fonts/"; - -@import "../../../../../vendor/bootstrap/less/mixins.less"; - -// Reset -@import "../../../../../vendor/bootstrap/less/normalize.less"; -@import "../../../../../vendor/bootstrap/less/print.less"; - -// Core CSS -@import "../../../../../vendor/bootstrap/less/scaffolding.less"; -@import "../../../../../vendor/bootstrap/less/type.less"; -//@import "code.less"; -//@import "grid.less"; -//@import "tables.less"; -@import "../../../../../vendor/bootstrap/less/forms.less"; -@import "../../../../../vendor/bootstrap/less/buttons.less"; - -// Components -@import "../../../../../vendor/bootstrap/less/component-animations.less"; -//@import "../../../../../../vendor/bootstrap/less/glyphicons.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 "../../../../../vendor/bootstrap/less/labels.less"; -//@import "badges.less"; -//@import "jumbotron.less"; -//@import "thumbnails.less"; -@import "../../../../../vendor/bootstrap/less/alerts.less"; -//@import "progress-bars.less"; -//@import "media.less"; -//@import "list-group.less"; -//@import "panels.less"; -//@import "wells.less"; -@import "../../../../../vendor/bootstrap/less/close.less"; - -// Components w/ JavaScript -@import "../../../../../vendor/bootstrap/less/modals.less"; -@import "../../../../../vendor/bootstrap/less/tooltip.less"; -//@import "../../../../../../vendor/bootstrap/less/popovers.less"; -@import "../../../../../vendor/bootstrap/less/dropdowns.less"; -//@import "carousel.less"; - -// Utility classes -@import "../../../../../vendor/bootstrap/less/utilities.less"; -@import "../../../../../vendor/bootstrap/less/responsive-utilities.less"; - -@toolbarBorderColor: #dbdbdb; -@toolbarBorderShadowColor: #FAFAFA; -@toolbarTopColor: #F7F7F7; -@toolbarBottomColor: #CCCCCC; -@toolbarHoverColor: #7698DE; -@toolbarFontSize: 12px; -@buttonFontSize: 11px; -@controlBtnHoverTopColor: #6180C4; -@controlBtnHoverBottomColor: #8AACF1; -@btnColor: #d8dadc; -@btnActiveColor: #7d858c; -@btnColored: #446995; -@btnActiveColored: #293F59; -@btnHoverColored: #375478; -@notificationColor: #fcfed7; - -@iconSpriteCommonPath: "../../../../unit-tests/common/main/resources/img/glyphicons.png"; -@icon-socnet-size: 40px; - -.input-xs { - .input-size(@input-height-small - 8px; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small); -} - .embed-body { -moz-user-select: -moz-none; -khtml-user-select: none; @@ -82,7 +5,7 @@ -ms-user-select: none; user-select: none; - font-size: @toolbarFontSize; + font-size: 12px; overflow: hidden; } @@ -105,682 +28,4 @@ top: 0; bottom: 46px; } -} - -// Toolbar -// ------------------------- -.toolbar { - position: fixed; - font-size: @toolbarFontSize; - min-width: 340px; - z-index: 100; - background-color: @toolbarTopColor; - - display: flex; - align-items: center; - white-space: nowrap; - - &.top { - top: 0; - left: 0; - width: 100%; - height: 48px; - - -webkit-box-shadow: inset 0 -1px 0 @toolbarBorderColor, inset 0 1px 0 @toolbarBorderShadowColor; - //-moz-box-shadow: inset 0 -1px 0 @toolbarBorderColor, inset 0 1px 0 @toolbarBorderShadowColor; - box-shadow: inset 0 -1px 0 @toolbarBorderColor, inset 0 1px 0 @toolbarBorderShadowColor; - } - - &.bottom { - bottom: 0; - left: 0; - width: 100%; - height: 46px; - - -webkit-box-shadow: inset 0 1px 0 @toolbarBorderColor, inset 0 2px 0 @toolbarBorderShadowColor; - //-moz-box-shadow: inset 0 1px 0 @toolbarBorderColor, inset 0 2px 0 @toolbarBorderShadowColor; - box-shadow: inset 0 1px 0 @toolbarBorderColor, inset 0 2px 0 @toolbarBorderShadowColor; - } - - .group { - margin: 0; - padding: 0; - - .item { - input { - display: inline-block; - width: 35px; - padding: 0; - text-align: right; - } - - .text { - cursor: default; - } - } - - &.left { - left: 0; - padding-left: 10px; - - .item { - float: left; - } - - & > div { - display: inline-block; - vertical-align: middle; - } - } - - &.right { - right: 0; - padding-right: 10px; - - .item { - display: inline-block; - } - } - - &.center { - display: flex; - justify-content: center; - flex-grow: 1; - overflow: hidden; - padding: 0 20px; - - #title-doc-name { - overflow: hidden; - text-overflow: ellipsis; - } - } - - .separator { - height: 22px; - margin: 0 9px; - border-right: 1px solid @toolbarBorderShadowColor; - border-left: 1px solid @toolbarBorderColor; - } - } - - .close { - font-size: 28px; - font-family: Arial, sans-serif; - color: #666666; - opacity: 0.8; - display: block; - line-height: 22px; - - &:hover { - opacity: 1; - color: #666666; - } - } - - .margin-right-small { - margin-right: 8px; - } - .margin-right-large { - margin-right: 12px; - } - .margin-left-small { - margin-left: 8px; - } - .margin-left-large { - margin-left: 12px; - } -} - -// Logo -// ------------------------- -/*.brand-logo { - display: block; - width: 100px; - height: 24px; - background: data-uri('../../../../unit-tests/common/main/resources/img/logo.svg') no-repeat; -}*/ - -// Control buttons -// ------------------------- -.control-btn { - display: inline-block; - vertical-align: middle; - cursor: pointer; - background-color: transparent; - border: 1px solid transparent; - border-radius: 2px; - - width: 22px; - height: 22px; - background-origin: content-box; - padding: 0 1px; - font-size: @buttonFontSize; - - &.has-caption { - width: auto; - padding-right: 5px; - } - - &.colored { - padding: 0 16px; - height: 28px; - background-color: @btnColored; - border-radius: 3px; - color: #ffffff; - font-weight: 700; - } - - // Hover state - &:hover:not(:disabled) { - text-decoration: none; - background-color: @btnColor; - - &.colored { - background-color: @btnHoverColored; - } - } - - &:active:not(:disabled) { - &, .btn-icon { - background-position-y: -@icon-height !important; - } - - &.has-caption { - color: #ffffff - } - - &.colored { - background-color: @btnActiveColored; - } - } - -// Focus state for keyboard and accessibility - &:focus { - .tab-focus(); - outline: none; - } - -// Active state - &.active:not(:disabled), - &:active:not(:disabled) { - outline: none; - border: 1px solid @btnActiveColor; - background-color: @btnActiveColor; - } - - &[disabled] { - opacity: 0.4; - } -} - -// Overlay control -// ------------------------- -.overlay-controls { - position: absolute; - bottom: 55px; - z-index: 10; - left: 50%; - - ul { - padding: 0; - list-style-type: none; - margin: 0 auto; - - li { - display: inline-block; - - &:first-child { - margin-right: 5px; - } - - &:last-child { - margin-left: 5px; - } - } - } - - .overlay { - width: 32px; - height: 32px; - - display: inline-block; - cursor: pointer; - background-color: black; - border: 5px solid black; - border-radius: 50%; - outline: none; - opacity: 0.3; - - background-origin: content-box; - padding: 1px 0 0 1px; - - -webkit-box-shadow: 0 0 0 2px rgba(255,255,255,0.3); - -moz-box-shadow: 0 0 0 2px rgba(255,255,255,0.3); - box-shadow: 0 0 0 2px rgba(255,255,255,0.3); - - &:hover { - opacity: .6; - } - - &.active, &:active { - opacity: .8; - } - } -} - -// Error mask -// ------------------------- -.errormask { - position: absolute; - left: 0; - top: 0; - height: 100%; - width: 100%; - overflow: hidden; - border: none; - background-color: #f4f4f4; - z-index: 30002; - - .error-body { - position: relative; - top: 40%; - width: 400px; - margin: 0 auto; - padding: 20px; - background-color: #FFFFFF; - border: 1px solid #C0C0C0; - - .title { - font-weight: bold; - font-size: 1.6em; - padding-bottom: 10px; - } - } -} - -// Modals -// ------------------------- -.modal { - .modal-header { - //padding: 5px 15px; - } - - .modal-footer { - //border-top: none; - } - - //&.in .modal-dialog { .translate(0, 100%)} -} - -.share-buttons { - ul { - width: 244px; - //height: 25px; - list-style-type: none; - margin: 5px 0 0; - overflow: hidden; - - li { - display: inline-block; - float: left; - margin: 1px 5px 0 0; - vertical-align: middle; - - &.share-mail { - float: right; - padding-right: 1px; - margin: 0; - - a { - min-width: 64px; - } - - .glyphicon { - margin-right: 4px; - } - } - - &.share-twitter { - max-width: 93px; - } - } - } -} - -.size-manual { - margin-bottom: 10px; - - .right { - float: right; - } - - .caption { - margin-top: 2px; - margin-right: 8px; - } - - input { - display: inline-block; - font-size: 1em; - padding: 0 4px; - //border-radius: 0; - margin: 0; - margin-top: -1px; - - &.input-xs { - width: 50px; - } - } -} - -.socnet-btn(@index) { - background-position: -@icon-socnet-size*@index 0; - - &:hover { - background-position: -@icon-socnet-size*@index -@icon-socnet-size; - } -} - -/*.svg { - background: data-uri('../../../../unit-tests/common/main/resources/img/icon-social-sprite.svg'); - - width: 40px; - height: 40px; - background-size: @icon-socnet-size*4 @icon-socnet-size*2; - - &.big-facebook:hover { - background-position: 0 -@icon-socnet-size; - } - - &.big-twitter { .socnet-btn(1); } - &.big-gplus { .socnet-btn(2); } - &.big-email { .socnet-btn(3); } -}*/ - -@icon-width: 20px; -@icon-height: 20px; -/*.svg-icon { - background: data-uri('../../../../unit-tests/common/main/resources/img/icon-menu-sprite.svg') no-repeat; - background-size: @icon-width*19 @icon-height*2; - - &.download { - background-position: -@icon-width 0; - } - &.share { - background-position: -@icon-width*2 0; - } - &.embed { - background-position: -@icon-width*3 0; - } - &.fullscr { - background-position: -@icon-width*4 0; - } - &.zoom-up { - background-position: -@icon-width*5 -@icon-height; - } - &.zoom-down { - background-position: -@icon-width*6 -@icon-height; - } - &.slide-prev { - background-position: -@icon-width*7 -@icon-height; - } - &.slide-next { - background-position: -@icon-width*8 -@icon-height; - } - - &.play { - background-position: -@icon-width*9 -@icon-height; - } - - &.pause { - background-position: -@icon-width*10 -@icon-height; - } - - &.print { - background-position: -@icon-width*11 0; - } - - &.arrow-up { - background-position: -@icon-width*17 0; - } - &.arrow-down { - background-position: -@icon-width*16 0; - } - &.clear-style { - background-position: -@icon-width*12 0; - } - &.go-to-location { - background-position: -@icon-width*15 0; - } - &.more-vertical { - background-position: -@icon-width*14 0; - } -} - -.mi-icon { - width: @icon-width; - height: @icon-height; - float: left; - margin: -3px 4px 0 -24px; -}*/ -.btn-icon { - width: 22px; - height: 22px; - display: inline-block; - vertical-align: middle; -} - -.btn, button { - &:focus, &:active:focus { - outline: 0 none; - } - - background-color: @btnColor; -} - -.modal-dialog { - margin-top: 100px; - .share-buttons { - height: 40px; - text-align: center; - - span { - display: inline-block; - margin: 0 7px; - cursor: pointer; - } - } - - .share-link { - margin: 0 0 15px 0; - } -} - -.modal-header { - padding-bottom: 10px; - text-align: center; - - .close { - margin-top: 0; - opacity: 0.5; - - &:hover { - opacity: 0.7; - } - } -} - -.modal-body { - padding: 20px; -} - -.modal-footer { - text-align: center; -} - -#dlg-share, #dlg-embed { - .modal-dialog { - width: 330px; - } - - textarea { - width: 288px; - resize: none; - cursor: auto; - font-size: 1em; - border-radius: 0; - } -} - -.dropdown-menu { - > li > a { - padding: 8px 20px 8px 28px; - &:hover, &:focus { - background-color: @btnColor; - outline: 0 none; - } - font-size: @buttonFontSize; - } - - .divider { - margin: 4px 0; - } -} - -.dropdown { - &.open { - > button { - background-color: @btnActiveColor !important; - background-position: -@icon-width*14 -@icon-height; - } - } -} - -#box-tools { - display: inline-block; - a { - cursor: pointer; - } -} - -.masked { - background-color: transparent; - border-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} - -#pages { - cursor: pointer; - display: inline-block; - line-height: 22px; - padding: 0 0 0 3px; -} - -#page-number { - &.masked { - cursor: pointer; - } -} - -.tooltip { - .tooltip-inner { - background-color: #fff; - border: 1px solid rgba(0,0,0,0.15); - color: #333; - font-weight: bold; - font-size: 11px; - box-shadow: 0 6px 12px rgba(0,0,0,0.175); - max-width: 350px; - - padding: 5px 12px; - white-space: pre-wrap; - text-align: left; - word-wrap: break-word; - } - - .tooltip-arrow { - display: none; - } -} - -.form-control { - &:focus { - -webkit-box-shadow: none; - box-shadow: none; - } -} - -.submit-tooltip { - position: absolute; - z-index: 1000; - top: 58px; - right: 15px; - - padding: 7px 15px; - border-radius: 5px; - background-color: @notificationColor; - -webkit-box-shadow: 0 4px 15px -2px rgba(0, 0, 0, 0.5); - box-shadow: 0 4px 15px -2px rgba(0, 0, 0, 0.5); - font-size: 11px; -} - -.required-tooltip { - position: absolute; - z-index: 1000; - - padding: 15px; - border-radius: 5px; - background-color: @btnColored; - color: #fff; - -webkit-box-shadow: 0 4px 15px -2px rgba(0, 0, 0, 0.5); - box-shadow: 0 4px 15px -2px rgba(0, 0, 0, 0.5); - font-size: 11px; - - &.bottom-left { - border-top-right-radius: 0; - margin: 15px 0 0 0; - - .tip-arrow { - position: absolute; - overflow: hidden; - right: 0; - top: -15px; - width: 15px; - height: 15px; - .box-shadow(8px 5px 8px -5px rgba(0, 0, 0, 0.2)); - - &:after { - content: ''; - position: absolute; - top: 8px; - left: 8px; - background-color: @btnColored; - width: 15px; - height: 15px; - - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -webkit-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - .box-shadow(0 0 8px -1px rgba(0, 0, 0, 0.2)); - } - } - } - .close-div { - display: inline-block; - border: 1px solid #fff; - border-radius: 2px; - padding: 3px 12px; - margin-top: 10px; - } -} - -.tooltip { - .tooltip-inner { - .toolbar & { - font-weight: normal; - } - } } \ No newline at end of file diff --git a/test/documenteditor/main/index.html b/test/documenteditor/main/index.html index e31e3fcf6..168cbc59d 100644 --- a/test/documenteditor/main/index.html +++ b/test/documenteditor/main/index.html @@ -11,9 +11,6 @@ -
@@ -24,21 +21,7 @@ - - - @@ -92,32 +70,10 @@ - - -