Santhosh has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/342794 )
Change subject: Move all style related files to ui/styles ...................................................................... Move all style related files to ui/styles For example, modules/ui/translationunits/mw.cx.ui.LinkTranslationUnit.less will have its style file as modules/ui/translationunits/styles/mw.cx.ui.LinkTranslationUnit.less Change-Id: I04edeb999c31131bdc8819b54435965788d5ac2c --- M extension.json D modules/ui/translationunits/images/external_link.png D modules/ui/translationunits/images/external_link.svg D modules/ui/translationunits/styles/mw.cx.ui.LinkTranslationUnit.less M modules/ui/widgets/mw.cx.ui.PageSelectorWidget.js D modules/ui/widgets/styles/mw.cx.ui.PageSelectorWidget.less D modules/widgets/mw.cx.widgets.MessageWidget.js D modules/widgets/mw.cx.widgets.MessageWidget.less D modules/widgets/mw.cx.widgets.PageTitleWidget.js D modules/widgets/mw.cx.widgets.PageTitleWidget.less D modules/widgets/mw.cx.widgets.ProgressBarWidget.js D modules/widgets/mw.cx.widgets.ProgressBarWidget.less D modules/widgets/mw.cx.widgets.TranslationToolWidget.js D modules/widgets/mw.cx.widgets.TranslationToolWidget.less 14 files changed, 77 insertions(+), 573 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ContentTranslation refs/changes/94/342794/1 diff --git a/extension.json b/extension.json index 87be2d5..28348d7 100644 --- a/extension.json +++ b/extension.json @@ -1486,7 +1486,7 @@ "cx-translation-target-page-exists" ], "dependencies": [ - "mw.cx.widgets.MessageWidget", + "mw.cx.ui.MessageWidget", "mw.cx.ui" ], "targets": [ @@ -1538,7 +1538,7 @@ "mw.cx.ui", "ext.cx.widgets.spinner", "mw.cx.ui.Categories", - "mw.cx.widgets.PageTitleWidget" + "mw.cx.ui.PageTitleWidget" ] }, "mw.cx.ui.SourceColumn.legacy": { @@ -1571,7 +1571,7 @@ "dependencies": [ "mw.cx.ui", "ext.cx.widgets.spinner", - "mw.cx.widgets.PageTitleWidget" + "mw.cx.ui.PageTitleWidget" ] }, "mw.cx.ui.TranslationColumn.legacy": { @@ -1613,7 +1613,7 @@ ], "dependencies": [ "mw.cx.ui", - "mw.cx.widgets.ProgressBarWidget", + "mw.cx.ui.ProgressBarWidget", "mw.cx.tools.SearchTool" ] }, @@ -1666,7 +1666,7 @@ "ui/translationunits/mw.cx.ui.LinkTranslationUnit.js" ], "styles":[ - "ui/translationunits/styles/mw.cx.ui.LinkTranslationUnit.less" + "ui/styles/translationunits/mw.cx.ui.LinkTranslationUnit.less" ], "dependencies": [ "mw.cx.ui.TranslationUnit" @@ -1864,7 +1864,7 @@ ], "dependencies": [ "mw.cx.tools.TranslationToolFactory", - "mw.cx.widgets.TranslationToolWidget" + "mw.cx.ui.TranslationToolWidget" ] }, "mw.cx.tools.ReferenceTool": { @@ -1892,23 +1892,23 @@ "mw.cx.ui" ] }, - "mw.cx.widgets.TranslationToolWidget":{ + "mw.cx.ui.TranslationToolWidget":{ "scripts": [ - "widgets/mw.cx.widgets.TranslationToolWidget.js" + "ui/widgets/mw.cx.ui.TranslationToolWidget.js" ], "styles": [ - "widgets/mw.cx.widgets.TranslationToolWidget.less" + "ui/styles/widgets/mw.cx.ui.TranslationToolWidget.less" ], "dependencies": [ "oojs-ui-widgets" ] }, - "mw.cx.widgets.ProgressBarWidget":{ + "mw.cx.ui.ProgressBarWidget":{ "scripts": [ - "widgets/mw.cx.widgets.ProgressBarWidget.js" + "ui/widgets/mw.cx.ui.ProgressBarWidget.js" ], "styles": [ - "widgets/mw.cx.widgets.ProgressBarWidget.less" + "ui/styles/widgets/mw.cx.ui.ProgressBarWidget.less" ], "dependencies": [ "oojs-ui-widgets" @@ -1925,26 +1925,27 @@ "oojs-ui-widgets" ] }, - "mw.cx.widgets.PageTitleWidget": { + "mw.cx.ui.PageTitleWidget": { "scripts": [ - "widgets/mw.cx.widgets.PageTitleWidget.js" + "ui/widgets/mw.cx.ui.PageTitleWidget.js" ], "styles": [ - "widgets/mw.cx.widgets.PageTitleWidget.less" + "ui/styles/widgets/mw.cx.ui.PageTitleWidget.less" ], "dependencies": [ "oojs-ui-widgets", "mw.cx.util" ] }, - "mw.cx.widgets.MessageWidget": { + "mw.cx.ui.MessageWidget": { "scripts": [ - "widgets/mw.cx.widgets.MessageWidget.js" + "ui/widgets/mw.cx.ui.MessageWidget.js" ], "styles": [ - "widgets/mw.cx.widgets.MessageWidget.less" + "ui/styles/widgets/mw.cx.ui.MessageWidget.less" ], "dependencies": [ + "mw.cx.ui", "oojs-ui-widgets", "oojs-ui.styles.icons", "oojs-ui.styles.icons-alerts", @@ -1960,7 +1961,7 @@ "ui/widgets/mw.cx.ui.PageSelectorWidget.js" ], "styles": [ - "ui/widgets/styles/mw.cx.ui.PageSelectorWidget.less" + "ui/styles/widgets/mw.cx.ui.PageSelectorWidget.less" ], "dependencies": [ "mediawiki.widgets" diff --git a/modules/ui/translationunits/images/external_link.png b/modules/ui/translationunits/images/external_link.png deleted file mode 100644 index 7841d41..0000000 --- a/modules/ui/translationunits/images/external_link.png +++ /dev/null Binary files differ diff --git a/modules/ui/translationunits/images/external_link.svg b/modules/ui/translationunits/images/external_link.svg deleted file mode 100644 index 5969d03..0000000 --- a/modules/ui/translationunits/images/external_link.svg +++ /dev/null @@ -1 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10"><g transform="translate(-826.429 -698.791)"><rect width="5.982" height="5.982" x="826.929" y="702.309" fill="#fff" stroke="#06c"/><g><path d="M831.194 698.791h5.234v5.391l-1.571 1.545-1.31-1.31-2.725 2.725-2.689-2.689 2.808-2.808-1.311-1.311z" fill="#06f"/><path d="M835.424 699.795l.022 4.885-1.817-1.817-2.881 2.881-1.228-1.228 2.881-2.881-1.851-1.851z" fill="#fff"/></g></g></svg> \ No newline at end of file diff --git a/modules/ui/translationunits/styles/mw.cx.ui.LinkTranslationUnit.less b/modules/ui/translationunits/styles/mw.cx.ui.LinkTranslationUnit.less deleted file mode 100644 index e3e086d..0000000 --- a/modules/ui/translationunits/styles/mw.cx.ui.LinkTranslationUnit.less +++ /dev/null @@ -1,29 +0,0 @@ -@import '../../../widgets/common/ext.cx.common.less'; - -[contenteditable] { - .cx-target-link-unadapted { - color: #72777d; - - &:hover { - color: @gray-darker; - } - } - - .cx-link { - cursor: pointer; - } - - // Links that cannot be adapted will be represented in gray with a dashed underline. - // The dashed underline will only appear for the links on the current paragraph. - // Links from other paragraphs will not show the dashed underline to avoid too much visual noise. - &:focus .cx-target-link-unadapted { - border-bottom: 1px dashed #ccc; - } -} - -[rel='mw:ExtLink'] { - background-position: right center; - background-repeat: no-repeat; - .background-image-svg('../images/external_link.svg', '../images/external_link.png'); - padding-right: 13px; -} diff --git a/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.js b/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.js index a45c05f..73d6033 100644 --- a/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.js +++ b/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.js @@ -1,73 +1,70 @@ /*! - * Content Translation UserInterface PageSelectorWidget class. +* Content Translation UserInterface PageSelectorWidget class. +* +* @ingroup Extensions +* @copyright See AUTHORS.txt +* @license GPL-2.0+ +*/ + +'use strict'; + +/** + * Creates an mw.cx.ui.PageSelectorWidget object. * - * @ingroup Extensions - * @copyright See AUTHORS.txt - * @license GPL-2.0+ + * @class + * @extends mw.cx.ui.PageSelectorWidget + * + * @constructor + * @param {Object} [config] Configuration options + * @cfg {number} [namespace] Namespace to prepend to queries. Defaults to main namespace. */ +mw.cx.ui.PageSelectorWidget = function PageSelectorWidget( config ) { + config = $.extend( {}, { + namespace: mw.config.get( 'wgNamespaceIds' ).main, + showDescriptions: true, + showImages: true, + icon: 'search' + }, config ); -( function ( $, mw, OO ) { - 'use strict'; + this.siteMapper = config.siteMapper; + this.language = config.language || 'en'; + // Parent constructor + mw.cx.ui.PageSelectorWidget.super.call( this, config ); + // Initialization + this.$element.addClass( 'mw-cx-ui-PageSelectorWidget' ); +}; - /** - * Creates an mw.cx.ui.PageSelectorWidget object. - * - * @class - * @extends mw.cx.ui.PageSelectorWidget - * - * @constructor - * @param {Object} [config] Configuration options - * @cfg {number} [namespace] Namespace to prepend to queries. Defaults to main namespace. - */ - mw.cx.ui.PageSelectorWidget = function PageSelectorWidget( config ) { - config = $.extend( {}, { - namespace: mw.config.get( 'wgNamespaceIds' ).main, - showDescriptions: true, - showImages: true, - icon: 'search' - }, config ); +/* Inheritance */ - this.siteMapper = config.siteMapper; - this.language = config.language || 'en'; - // Parent constructor - mw.cx.ui.PageSelectorWidget.super.call( this, config ); - // Initialization - this.$element.addClass( 'mw-cx-ui-PageSelectorWidget' ); - }; +OO.inheritClass( mw.cx.ui.PageSelectorWidget, mw.widgets.TitleInputWidget ); - /* Inheritance */ +/* Methods */ - OO.inheritClass( mw.cx.ui.PageSelectorWidget, mw.widgets.TitleInputWidget ); +/** + * @inheritdoc + */ +mw.cx.ui.PageSelectorWidget.prototype.getApi = function () { + return this.siteMapper.getApi( this.language ); +}; - /* Methods */ +mw.cx.ui.PageSelectorWidget.prototype.setLanguage = function ( language ) { + this.language = language; + this.setDir( $.uls.data.getDir( language ) ); - /** - * @inheritdoc - */ - mw.cx.ui.PageSelectorWidget.prototype.getApi = function () { - return this.siteMapper.getApi( this.language ); - }; + // Reset the requestCache of OO.ui.mixin.LookupElement + this.requestCache = {}; +}; - mw.cx.ui.PageSelectorWidget.prototype.setLanguage = function ( language ) { - this.language = language; - this.setDir( $.uls.data.getDir( language ) ); +/** + * @inheritdoc + */ +mw.cx.ui.PageSelectorWidget.prototype.getOptionWidgetData = function ( title, data ) { + var optionWidgetData; - // Reset the requestCache of OO.ui.mixin.LookupElement - this.requestCache = {}; - }; + // Mixin method + optionWidgetData = mw.widgets.TitleWidget.prototype.getOptionWidgetData.call( this, title, data ); + // Correct the URL so that it can point to the source language wiki. + optionWidgetData.url = this.siteMapper.getPageUrl( this.language, title ); - /** - * @inheritdoc - */ - mw.cx.ui.PageSelectorWidget.prototype.getOptionWidgetData = function ( title, data ) { - var optionWidgetData; - - // Mixin method - optionWidgetData = mw.widgets.TitleWidget.prototype.getOptionWidgetData.call( this, title, data ); - // Correct the URL so that it can point to the source language wiki. - optionWidgetData.url = this.siteMapper.getPageUrl( this.language, title ); - - return optionWidgetData; - }; - -}( jQuery, mediaWiki, OO ) ); + return optionWidgetData; +}; diff --git a/modules/ui/widgets/styles/mw.cx.ui.PageSelectorWidget.less b/modules/ui/widgets/styles/mw.cx.ui.PageSelectorWidget.less deleted file mode 100644 index 6403c55..0000000 --- a/modules/ui/widgets/styles/mw.cx.ui.PageSelectorWidget.less +++ /dev/null @@ -1,22 +0,0 @@ -.mw-cx-ui-PageSelectorWidget { - &.mw-widget-titleInputWidget { - .oo-ui-inputWidget-input { - margin: 0; - padding: 5px 0 5px 2.5em; - line-height: 1.5em; - &:focus { - border: 0; - box-shadow: none; - } - } - - .oo-ui-iconElement-icon { - padding: 5px; - margin: 0; - } - - .mw-widget-titleWidget-menu { - margin-top: 2em; - } - } -} diff --git a/modules/widgets/mw.cx.widgets.MessageWidget.js b/modules/widgets/mw.cx.widgets.MessageWidget.js deleted file mode 100644 index a9e8c77..0000000 --- a/modules/widgets/mw.cx.widgets.MessageWidget.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - * CX Message widget (dismissible banners) - * - * @class - * @extends OO.ui.Widget - * @mixins OO.ui.mixin.ItemWidget - * @mixins OO.ui.mixin.LabelElement - * @mixins OO.ui.mixin.FlaggedElement - * @mixins OO.ui.mixin.TabIndexedElement - * - * @constructor - * @param {Object} [config] Configuration options - */ -mw.cx.widgets.MessageWidget = function CXMessageWidget( config ) { - var iconMap; - // Configuration initialization - config = config || {}; - - // Parent constructor - mw.cx.widgets.MessageWidget.parent.call( this, config ); - - // Mixin constructors - OO.ui.mixin.ItemWidget.call( this ); - OO.ui.mixin.LabelElement.call( this, { - label: this.composeMessage( config.message, config.details ) - } ); - OO.ui.mixin.FlaggedElement.call( this, config ); - iconMap = { - success: 'check', - error: 'alert', - warning: 'notice' - }; - OO.ui.mixin.IconElement.call( this, { - icon: iconMap[ config.type ] || config.type - } ); - // Events - this.closeButton = new OO.ui.ButtonWidget( { - framed: false, - icon: 'clear', - classes: [ 'cx-message-widget-close' ], - tabIndex: -1 - } ).on( 'click', this.onCloseClick.bind( this ) ); - - // Initialization - this.$element - .addClass( 'cx-message-widget cx-message-' + config.type ) - .append( this.$icon, this.$label, this.closeButton.$element ); -}; - -/* Setup */ - -OO.inheritClass( mw.cx.widgets.MessageWidget, OO.ui.Widget ); -OO.mixinClass( mw.cx.widgets.MessageWidget, OO.ui.mixin.ItemWidget ); -OO.mixinClass( mw.cx.widgets.MessageWidget, OO.ui.mixin.LabelElement ); -OO.mixinClass( mw.cx.widgets.MessageWidget, OO.ui.mixin.IconElement ); -OO.mixinClass( mw.cx.widgets.MessageWidget, OO.ui.mixin.FlaggedElement ); - -/* Methods */ - -/** - * Handle close icon clicks - */ -mw.cx.widgets.MessageWidget.prototype.onCloseClick = function () { - this.$element.remove(); -}; - -mw.cx.widgets.MessageWidget.prototype.composeMessage = function ( message, details ) { - var $message, $details; - $message = $( '<span>' ).addClass( 'cx-message-widget-message' ); - $details = $( '<span>' ).addClass( 'cx-message-widget-details' ); - if ( message instanceof mw.Message ) { - $message.html( message.parse() ); - } else { - $message.text( message ); - } - if ( details ) { - if ( details instanceof mw.Message ) { - $details.html( details.parse() ); - } else { - $details.text( details ); - } - } - - return $( '<div>' ).append( $message, $details ); -}; diff --git a/modules/widgets/mw.cx.widgets.MessageWidget.less b/modules/widgets/mw.cx.widgets.MessageWidget.less deleted file mode 100644 index c3373b0..0000000 --- a/modules/widgets/mw.cx.widgets.MessageWidget.less +++ /dev/null @@ -1,51 +0,0 @@ -@import 'common/ext.cx.common.less'; - -.cx-message-widget { - border-bottom: 1px solid #ddd; - min-height: 2em; - padding: 5px 10px; - - .oo-ui-iconElement-icon { - display: inline-block; - float: left; - vertical-align: middle; - } - - &.cx-message-error { - border: 1px solid #fac5c5; - background-color: #fae3e3; - text-shadow: 0 1px #fae3e3; - - .details { - padding: 20px; - } - } - - &.cx-message-success { - border-color: #b7fdb5; - background-color: #e1fddf; - } - - &.cx-message-warning { - color: #705000; - border-color: #fde29b; - background-color: #fdf1d1; - } - - .cx-message-widget-close { - right: 0; - top: 0; - position: absolute; - } - - .cx-message-widget-message { - font-size: large; - color: @gray-darker; - padding-right: 10px; - } - - .cx-message-widget-details { - font-size: normal; - color: @gray-dark; - } -} diff --git a/modules/widgets/mw.cx.widgets.PageTitleWidget.js b/modules/widgets/mw.cx.widgets.PageTitleWidget.js deleted file mode 100644 index 426629a..0000000 --- a/modules/widgets/mw.cx.widgets.PageTitleWidget.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/** - * Page title widget. This is the header for source and translation columns. - * It is editable (contenteditable) for translation and readonly for source page. - * Supports validation of values. - * @class - * @param {Object} [config] Configuration object - */ -mw.cx.widgets.PageTitleWidget = function ( config ) { - // Configuration initialization - config = $.extend( config, { - classes: [ 'cx-pagetitle' ], - multiline: true, - type: 'text', - autosize: true, - disable: !this.editable - } ); - this.editable = config.editable; - // Parent constructor - mw.cx.widgets.PageTitleWidget.parent.call( this, config ); - this.setDisabled( !this.editable ); - if ( this.editable ) { - this.setValidation( this.validate ); - } -}; - -/* Setup */ - -OO.inheritClass( mw.cx.widgets.PageTitleWidget, OO.ui.TextInputWidget ); - -mw.cx.widgets.PageTitleWidget.prototype.validate = function( value ) { - if ( value === undefined || value === null || value === '' ) { - return false; - } - // TODO: Add more title validation here - return true; -}; - -/** - * Handle key press events. Disable enter key presses. - * - * @private - * @param {jQuery.Event} e Key press event - * @fires enter If enter key is pressed and input is not multiline - * @return {boolean} - */ -OO.ui.TextInputWidget.prototype.onKeyPress = function ( e ) { - if ( e.which === OO.ui.Keys.ENTER ) { - this.emit( 'enter', e ); - return false; - } -}; diff --git a/modules/widgets/mw.cx.widgets.PageTitleWidget.less b/modules/widgets/mw.cx.widgets.PageTitleWidget.less deleted file mode 100644 index 3ba05d0..0000000 --- a/modules/widgets/mw.cx.widgets.PageTitleWidget.less +++ /dev/null @@ -1,26 +0,0 @@ -// Common styles for source or tanslation columns of translation view -@import 'common/ext.cx.common.less'; - -.cx-pagetitle { - &.oo-ui-textInputWidget { - margin-bottom: 10px; - padding-top: 5px; - word-wrap: break-word; - border-bottom: 1px solid @gray-dark; - textarea { - font-size: 2.2em; - color: @gray-darker; - background-color: @white; - font-family: 'Linux Libertine', 'Georgia', 'Times', serif; - padding: 0; - border: 0; - line-height: 1.5em; - height: 1.5em; - &:focus { - outline: 0; - border-color: @gray-light; - box-shadow: inset 0 0 0 1px @gray-light; - } - } - } -} diff --git a/modules/widgets/mw.cx.widgets.ProgressBarWidget.js b/modules/widgets/mw.cx.widgets.ProgressBarWidget.js deleted file mode 100644 index 080bf40..0000000 --- a/modules/widgets/mw.cx.widgets.ProgressBarWidget.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -/** - * Creates a mw.cx.widgets.ProgressBarWidget object. - * - * @class - * @extends OO.ui.PanelLayout - * - * @constructor - * @param {Object} config Configuration options - * @cfg {string} title The tool title - */ -mw.cx.widgets.ProgressBarWidget = function CXProgressBarWidget( config ) { - this.totalProgressBar = new OO.ui.ProgressBarWidget( { - classes: [ 'cx-progressbar-total' ], - progress: 50 - } ); - this.mtProgressBar = new OO.ui.ProgressBarWidget( { - classes: [ 'cx-progressbar-mt' ], - progress: 40 - } ); - config = $.extend( {}, config, { - classes: [ 'cx-progressbar' ], - expanded: false, - scrollable: false, - continuous: true, - framed: false, - padded: false, - items: [ this.totalProgressBar, this.mtProgressBar ] - } ); - // Parent constructor - mw.cx.widgets.ProgressBarWidget.parent.call( this, config ); -}; - -/* Setup */ -OO.inheritClass( mw.cx.widgets.ProgressBarWidget, OO.ui.StackLayout ); - -mw.cx.widgets.ProgressBarWidget.prototype.setMTProgress = function( progress ) { - this.mtProgressBar.setProgress( progress ); -}; - -mw.cx.widgets.ProgressBarWidget.prototype.setTotalProgress = function( progress ) { - this.totalProgressBar.setProgress( progress ); -}; diff --git a/modules/widgets/mw.cx.widgets.ProgressBarWidget.less b/modules/widgets/mw.cx.widgets.ProgressBarWidget.less deleted file mode 100644 index 22ddd41..0000000 --- a/modules/widgets/mw.cx.widgets.ProgressBarWidget.less +++ /dev/null @@ -1,25 +0,0 @@ -@import 'common/ext.cx.common.less'; - -.cx-progressbar { - background-color: #ddd; - transition: width 1s; - - .cx-progressbar-total { - border: 0; - height: 4px; - .oo-ui-progressBarWidget-bar { - background-color: @color-primary; - } - } - - .cx-progressbar-mt { - border: 0; - height: 4px; - top: -4px; - position: relative; - opacity: 0.5; - .oo-ui-progressBarWidget-bar { - background-color: @gray-dark; - } - } -} diff --git a/modules/widgets/mw.cx.widgets.TranslationToolWidget.js b/modules/widgets/mw.cx.widgets.TranslationToolWidget.js deleted file mode 100644 index ae477aa..0000000 --- a/modules/widgets/mw.cx.widgets.TranslationToolWidget.js +++ /dev/null @@ -1,92 +0,0 @@ -'use strict'; -/** - * Creates a mw.cx.widgets.TranslationToolWidget object. - * - * @class - * @extends OO.ui.PanelLayout - * - * @constructor - * @param {mw.cx.tool.TranslationTool} translationTool - * @param {Object} config Configuration options - * @cfg {string} title The tool title - */ -mw.cx.widgets.TranslationToolWidget = function CXTranslationToolWidget( translationTool, config ) { - config = $.extend( {}, config, { - classes: [ 'cx-card', 'cx-card-' + config.name ], - expanded: false, - framed: true, - padded: false - } ); - this.translationTool = translationTool; - // Parent constructor - mw.cx.widgets.TranslationToolWidget.parent.call( this, config ); - - // Initialization - this.$element.addClass( 'cx-widget-translationtool' ); - - this.$title = $( '<div>' ) - .addClass( 'card__title' ) - .text( config.title || '' ); - this.$language = $( '<div>' ) - .addClass( 'card__title--language' ) - .text( $.uls.data.getAutonym( config.language ) || '' ); - this.$header = $( '<div>' ) - .addClass( 'cx-widget-translationtool-header' ) - .append( this.$title, this.$language ); - - // It is not always possible to provide the toolContent at this point. The tools can update this widget - this.$information = $( '<div>' ) - .addClass( 'cx-widget-translationtool-container' ); - - this.$actions = $( '<div>' ) - .addClass( 'cx-widget-translationtool-actions' ); - - this.$element.append( this.$header, this.$information, this.$actions ); - this.render(); -}; - -/* Inheritance */ -OO.inheritClass( mw.cx.widgets.TranslationToolWidget, OO.ui.Widget ); - -/** - * Render the card content and actions if any - */ -mw.cx.widgets.TranslationToolWidget.prototype.render = function() { - this.setContent( this.translationTool.getContent() ); - this.setActions( this.translationTool.getActions() ); -}; - -/** - * Set the content of card - * @param {jQuery|string|OO.ui.HtmlSnippet|Function|null} content Content nodes; text; - * a function that returns nodes or text; or null for no content - */ -mw.cx.widgets.TranslationToolWidget.prototype.setContent = function( content ) { - this.$information.empty(); - - content = typeof content === 'function' ? OO.ui.resolveMsg( content ) : content; - content = content.$element ? content.$element : content; - if ( - ( typeof content === 'string' || content instanceof jQuery ) && content.length || - ( content instanceof OO.ui.HtmlSnippet && content.toString().length ) - ) { - this.$information.append( content ); - } -}; - -/** - * Set the action widgets for the card. - * @param {OO.ui.Element[]} actions Array of action widgets - */ -mw.cx.widgets.TranslationToolWidget.prototype.setActions = function( actions ) { - var i; - - this.$actions.empty(); - if ( !actions || actions.length === 0 ) { - this.$actions.hide(); - } else { - for ( i = 0; i < actions.length; i++ ) { - this.$actions.append( actions[ i ].$element ); - } - } -}; diff --git a/modules/widgets/mw.cx.widgets.TranslationToolWidget.less b/modules/widgets/mw.cx.widgets.TranslationToolWidget.less deleted file mode 100644 index 6542c8b..0000000 --- a/modules/widgets/mw.cx.widgets.TranslationToolWidget.less +++ /dev/null @@ -1,66 +0,0 @@ -@import 'common/ext.cx.common.less'; - -.cx-card { - background-color: #fff; - padding: 8px 16px; - border-radius: 2px; - box-shadow: 0 2px 2px rgba( 0, 0, 0, 0.25 ); - margin-bottom: 20px; - - /* Clearfix */ - &:after { - // Non empty content value aoids an Opera bug that creates space around - // clearfixed elements if the contenteditable attribute is also present - // somewhere in the HTML. - content: ' '; - visibility: hidden; - display: block; - height: 0; - clear: both; - } -} - -.cx-widget-translationtool-header { - .mw-ui-item; - padding: 5px 10px; - clear: both; -} - -.cx-widget-translationtool-container { - .mw-ui-item; - padding: 5px 10px; - clear: both; -} - -.cx-widget-translationtool-actions { - .mw-ui-item; - padding: 5px 10px; - clear: both; - border-top: 1px solid #eee; -} - -.card__title, -.card__title--language { - .mw-ui-item; - .mw-ui-one-half; - color: #aaa; - padding: 4px; -} - -.card__title--language { - text-align: right; -} - -/* Cards animation */ -@keyframes card-show-animation { - 0% { - opacity: 0; - position: relative; - top: 15px; - } - - 100% { - opacity: 1; - top: 0; - } -} -- To view, visit https://gerrit.wikimedia.org/r/342794 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I04edeb999c31131bdc8819b54435965788d5ac2c Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/ContentTranslation Gerrit-Branch: master Gerrit-Owner: Santhosh <santhosh.thottin...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits