WMDE-leszek has uploaded a new change for review. https://gerrit.wikimedia.org/r/303166
Change subject: Make backward/forward arrows OO.ui.ButtonWidgets ...................................................................... Make backward/forward arrows OO.ui.ButtonWidgets Bug: T142206 Change-Id: I25c98e32c74235a2b70ac1d02c221f1898ba9958 --- M extension.json M modules/ext.RevisionSlider.SliderView.js M modules/ext.RevisionSlider.css D resources/ext.RevisionSlider.arrows/arrow-left-disabled.svg D resources/ext.RevisionSlider.arrows/arrow-left-enabled.svg D resources/ext.RevisionSlider.arrows/arrow-left-hovered.svg D resources/ext.RevisionSlider.arrows/arrow-right-disabled.svg D resources/ext.RevisionSlider.arrows/arrow-right-enabled.svg D resources/ext.RevisionSlider.arrows/arrow-right-hovered.svg M tests/browser/features/support/pages/diff_page.rb M tests/browser/features/support/step_definitions/timeline.rb 11 files changed, 88 insertions(+), 134 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/RevisionSlider refs/changes/66/303166/1 diff --git a/extension.json b/extension.json index 18240a1..bc07861 100644 --- a/extension.json +++ b/extension.json @@ -37,8 +37,6 @@ "ext.RevisionSlider.RevisionList", "ext.RevisionSlider.HelpDialog", "ext.RevisionSlider.Api", - "ext.RevisionSlider.arrows.left", - "ext.RevisionSlider.arrows.right", "ext.RevisionSlider.pointers.lower", "ext.RevisionSlider.pointers.upper", "mediawiki.api.options" @@ -135,26 +133,6 @@ "dependencies": [ "oojs-ui" ] - }, - "ext.RevisionSlider.arrows.left": { - "position": "top", - "class": "ResourceLoaderImageModule", - "selector": ".mw-revslider-arrow-left.mw-revslider-arrow-{name}", - "images": { - "enabled": "resources/ext.RevisionSlider.arrows/arrow-left-enabled.svg", - "hovered": "resources/ext.RevisionSlider.arrows/arrow-left-hovered.svg", - "disabled": "resources/ext.RevisionSlider.arrows/arrow-left-disabled.svg" - } - }, - "ext.RevisionSlider.arrows.right": { - "position": "top", - "class": "ResourceLoaderImageModule", - "selector": ".mw-revslider-arrow-right.mw-revslider-arrow-{name}", - "images": { - "enabled": "resources/ext.RevisionSlider.arrows/arrow-right-enabled.svg", - "hovered": "resources/ext.RevisionSlider.arrows/arrow-right-hovered.svg", - "disabled": "resources/ext.RevisionSlider.arrows/arrow-right-disabled.svg" - } }, "ext.RevisionSlider.pointers.lower": { "position": "top", diff --git a/modules/ext.RevisionSlider.SliderView.js b/modules/ext.RevisionSlider.SliderView.js index da7fb26..96bc09c 100644 --- a/modules/ext.RevisionSlider.SliderView.js +++ b/modules/ext.RevisionSlider.SliderView.js @@ -41,6 +41,16 @@ pointerNewer: null, /** + * @type {OO.ui.ButtonWidget} + */ + backwardArrowButton: null, + + /** + * @type {OO.ui.ButtonWidget} + */ + forwardArrowButton: null, + + /** * @type {string} * * Value of scrollLeft property when in RTL mode varies between browser. This identifies @@ -63,7 +73,7 @@ render: function ( $container ) { var containerWidth = this.calculateSliderContainerWidth(), - pointerContainerPosition = 55, + pointerContainerPosition = 53, pointerContainerWidth = containerWidth + this.revisionWidth - 1, pointerContainerStyle, $revisions = this.slider.getRevisions().getView().render( this.revisionWidth ), @@ -116,6 +126,36 @@ } ); $( 'body' ).append( backwardArrowPopup.$element, forwardArrowPopup.$element, helpPopup.$element ); + this.backwardArrowButton = new OO.ui.ButtonWidget( { + icon: 'previous', + width: 20, + height: 140, + framed: true, + classes: [ 'mw-revslider-arrow', 'mw-revslider-arrow-backwards' ] + } ); + this.backwardArrowButton.connect( this, { + click: [ 'arrowClickHandler', this.backwardArrowButton ] + } ); + this.backwardArrowButton.$element + .attr( 'data-dir', -1 ) + .mouseover( { button: this.backwardArrowButton, popup: backwardArrowPopup }, this.showPopup ) + .mouseout( { popup: backwardArrowPopup }, this.hidePopup ); + + this.forwardArrowButton = new OO.ui.ButtonWidget( { + icon: 'next', + width: 20, + height: 140, + framed: true, + classes: [ 'mw-revslider-arrow', 'mw-revslider-arrow-forwards' ] + } ); + this.forwardArrowButton.connect( this, { + click: [ 'arrowClickHandler', this.forwardArrowButton ] + } ); + this.forwardArrowButton.$element + .attr( 'data-dir', 1 ) + .mouseover( { button: this.forwardArrowButton, popup: forwardArrowPopup }, this.showPopup ) + .mouseout( { popup: forwardArrowPopup }, this.hidePopup ); + pointerContainerStyle = { left: pointerContainerPosition + 'px', width: pointerContainerWidth + 'px' }; if ( $slider.css( 'direction' ) === 'rtl' ) { // Due to properly limit dragging a pointer on the right side of the screen, @@ -129,22 +169,14 @@ width: ( containerWidth + this.containerMargin ) + 'px' } ) .append( - $( '<a> ' ) - .addClass( 'mw-revslider-arrow mw-revslider-arrow-backwards' ) - .attr( 'data-dir', '-1' ) - .mouseover( { popup: backwardArrowPopup }, this.showPopup ) - .mouseout( { popup: backwardArrowPopup }, this.hidePopup ), + this.backwardArrowButton.$element, $( '<div>' ) .addClass( 'mw-revslider-revisions-container' ) .css( { width: containerWidth + 'px' } ) .append( $revisions ), - $( '<a> ' ) - .addClass( 'mw-revslider-arrow mw-revslider-arrow-forwards' ) - .attr( 'data-dir', '1' ) - .mouseover( { popup: forwardArrowPopup }, this.showPopup ) - .mouseout( { popup: forwardArrowPopup }, this.hidePopup ), + this.forwardArrowButton.$element, helpButton.$element, $( '<div>' ).css( { clear: 'both' } ), $( '<div>' ) @@ -152,51 +184,6 @@ .css( pointerContainerStyle ) .append( this.pointerOlder.getView().render(), this.pointerNewer.getView().render() ) ); - - if ( $slider.css( 'direction' ) === 'ltr' ) { - $slider.find( '.mw-revslider-arrow-backwards' ).addClass( 'mw-revslider-arrow-left' ); - $slider.find( '.mw-revslider-arrow-forwards' ).addClass( 'mw-revslider-arrow-right' ); - } else { - $slider.find( '.mw-revslider-arrow-backwards' ).addClass( 'mw-revslider-arrow-right' ); - $slider.find( '.mw-revslider-arrow-forwards' ).addClass( 'mw-revslider-arrow-left' ); - } - - $slider.find( '.mw-revslider-arrow' ).click( function () { - var $arrow = $( this ); - if ( $arrow.hasClass( 'mw-revslider-arrow-disabled' ) ) { - return; - } - mw.track( 'counter.MediaWiki.RevisionSlider.event.arrowClick' ); - self.slide( $arrow.data( 'dir' ) ); - } ) - .mouseenter( function () { - var $arrow = $( this ); - if ( $arrow.hasClass( 'mw-revslider-arrow-disabled' ) ) { - return; - } - $arrow.removeClass( 'mw-revslider-arrow-enabled' ).addClass( 'mw-revslider-arrow-hovered' ); - } ) - .mouseleave( function () { - var $arrow = $( this ); - if ( $arrow.hasClass( 'mw-revslider-arrow-disabled' ) ) { - return; - } - $arrow.removeClass( 'mw-revslider-arrow-hovered' ).addClass( 'mw-revslider-arrow-enabled' ); - } ) - .mousedown( function ( event ) { - var $arrow = $( this ); - if ( $arrow.hasClass( 'mw-revslider-arrow-disabled' ) || event.which !== 1 ) { - return; - } - $arrow.addClass( 'mw-revslider-arrow-active' ); - } ) - .mouseup( function ( event ) { - var $arrow = $( this ); - if ( $arrow.hasClass( 'mw-revslider-arrow-disabled' ) || event.which !== 1 ) { - return; - } - $arrow.removeClass( 'mw-revslider-arrow-active' ); - } ); $slider.find( '.mw-revslider-pointer' ).draggable( { axis: 'x', @@ -257,8 +244,9 @@ }, showPopup: function ( e ) { - var popup = e.data.popup; - if ( $( this ).hasClass( 'mw-revslider-arrow-disabled' ) ) { + var button = e.data.button, + popup = e.data.popup; + if ( typeof button !== 'undefined' && button.isDisabled() ) { return; } popup.$element.css( { @@ -271,6 +259,17 @@ hidePopup: function ( e ) { var popup = e.data.popup; popup.toggle( false ); + }, + + /** + * @param {OO.ui.ButtonWidget} button + */ + arrowClickHandler: function ( button ) { + if ( button.isDisabled() ) { + return; + } + mw.track( 'counter.MediaWiki.RevisionSlider.event.arrowClick' ); + this.slide( button.$element.data( 'dir' ) ); }, revisionWrapperClickHandler: function ( e ) { @@ -449,14 +448,14 @@ this.pointerNewer.getView().getElement().draggable( 'disable' ); if ( this.slider.isAtStart() ) { - $( '.mw-revslider-arrow-backwards' ).removeClass( 'mw-revslider-arrow-enabled mw-revslider-arrow-hovered' ).addClass( 'mw-revslider-arrow-disabled' ); + this.backwardArrowButton.setDisabled( true ); } else { - $( '.mw-revslider-arrow-backwards' ).removeClass( 'mw-revslider-arrow-disabled' ).addClass( 'mw-revslider-arrow-enabled' ); + this.backwardArrowButton.setDisabled( false ); } if ( this.slider.isAtEnd() ) { - $( '.mw-revslider-arrow-forwards' ).removeClass( 'mw-revslider-arrow-enabled mw-revslider-arrow-hovered' ).addClass( 'mw-revslider-arrow-disabled' ); + this.forwardArrowButton.setDisabled( true ); } else { - $( '.mw-revslider-arrow-forwards' ).removeClass( 'mw-revslider-arrow-disabled' ).addClass( 'mw-revslider-arrow-enabled' ); + this.forwardArrowButton.setDisabled( false ); } animateObj = { scrollLeft: this.slider.getFirstVisibleRevisionIndex() * this.revisionWidth }; @@ -660,7 +659,7 @@ this.slider.getRevisions().getView().adjustRevisionSizes( $slider ); if ( !this.slider.isAtEnd() ) { - $slider.find( '.mw-revslider-arrow-forwards' ).removeClass( 'mw-revslider-arrow-disabled' ).addClass( 'mw-revslider-arrow-enabled' ); + this.forwardArrowButton.setDisabled( false ); } }, @@ -733,7 +732,7 @@ this.slider.getRevisions().getView().adjustRevisionSizes( $slider ); - $slider.find( '.mw-revslider-arrow-backwards' ).removeClass( 'mw-revslider-arrow-disabled' ).addClass( 'mw-revslider-arrow-enabled' ); + this.backwardArrowButton.setDisabled( false ); }, /** diff --git a/modules/ext.RevisionSlider.css b/modules/ext.RevisionSlider.css index 847b2dd..cba7509 100644 --- a/modules/ext.RevisionSlider.css +++ b/modules/ext.RevisionSlider.css @@ -123,10 +123,26 @@ } .mw-revslider-arrow { - width: 20px; + width: 22px; + height: 142px; +} + +.mw-revslider-arrow .oo-ui-buttonElement-button { height: 140px; - background-position: center center; - background-repeat: no-repeat; + width: 20px; + padding: 0; +} + +.mw-revslider-arrow .oo-ui-iconElement-icon { + width: 20px; + height: 20px; + min-width: inherit; + min-height: inherit; +} + +.mw-revslider-arrow.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + left: 0; + top: 61px; } .mw-revslider-arrow-backwards { @@ -135,21 +151,6 @@ .mw-revslider-arrow-forwards { margin-left: 30px; -} - -.mw-revslider-arrow-enabled, -.mw-revslider-arrow-disabled { - border: #ddd solid 2px; -} - -.mw-revslider-arrow-hovered { - border: #ddd solid 2px; - background-color: #e5e5e5; - cursor: pointer; -} - -.mw-revslider-arrow-active { - border: #ccc solid 2px; } .mw-revslider-revision-slider { diff --git a/resources/ext.RevisionSlider.arrows/arrow-left-disabled.svg b/resources/ext.RevisionSlider.arrows/arrow-left-disabled.svg deleted file mode 100644 index 4df619d..0000000 --- a/resources/ext.RevisionSlider.arrows/arrow-left-disabled.svg +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <path d="M7 13.1l8.9 8.9c.8-.8.8-2 0-2.8l-6.1-6.1 6-6.1c.8-.8.8-2 0-2.8L7 13.1z" fill="#ddd"/> -</svg> diff --git a/resources/ext.RevisionSlider.arrows/arrow-left-enabled.svg b/resources/ext.RevisionSlider.arrows/arrow-left-enabled.svg deleted file mode 100644 index 74b5115..0000000 --- a/resources/ext.RevisionSlider.arrows/arrow-left-enabled.svg +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <path d="M7 13.1l8.9 8.9c.8-.8.8-2 0-2.8l-6.1-6.1 6-6.1c.8-.8.8-2 0-2.8L7 13.1z" fill="#4c4c4c"/> -</svg> diff --git a/resources/ext.RevisionSlider.arrows/arrow-left-hovered.svg b/resources/ext.RevisionSlider.arrows/arrow-left-hovered.svg deleted file mode 100644 index 998ea9c..0000000 --- a/resources/ext.RevisionSlider.arrows/arrow-left-hovered.svg +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <path d="M7 13.1l8.9 8.9c.8-.8.8-2 0-2.8l-6.1-6.1 6-6.1c.8-.8.8-2 0-2.8L7 13.1z" fill="#000"/> -</svg> diff --git a/resources/ext.RevisionSlider.arrows/arrow-right-disabled.svg b/resources/ext.RevisionSlider.arrows/arrow-right-disabled.svg deleted file mode 100644 index e13da27..0000000 --- a/resources/ext.RevisionSlider.arrows/arrow-right-disabled.svg +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z" fill="#ddd"/> -</svg> diff --git a/resources/ext.RevisionSlider.arrows/arrow-right-enabled.svg b/resources/ext.RevisionSlider.arrows/arrow-right-enabled.svg deleted file mode 100644 index d2c2b72..0000000 --- a/resources/ext.RevisionSlider.arrows/arrow-right-enabled.svg +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z" fill="#4c4c4c"/> -</svg> diff --git a/resources/ext.RevisionSlider.arrows/arrow-right-hovered.svg b/resources/ext.RevisionSlider.arrows/arrow-right-hovered.svg deleted file mode 100644 index 389cfb7..0000000 --- a/resources/ext.RevisionSlider.arrows/arrow-right-hovered.svg +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z" fill="#000"/> -</svg> diff --git a/tests/browser/features/support/pages/diff_page.rb b/tests/browser/features/support/pages/diff_page.rb index cf3e257..785175e 100644 --- a/tests/browser/features/support/pages/diff_page.rb +++ b/tests/browser/features/support/pages/diff_page.rb @@ -12,8 +12,8 @@ a(:revisionslider_help_close_start, css: '#revisionslider-help-close-start > a') a(:revisionslider_help_close_end, css: '#revisionslider-help-close-end > a') - a(:revisionslider_timeline_backwards, css: '#mw-revslider-container > div > a.mw-revslider-arrow.mw-revslider-arrow-backwards') - a(:revisionslider_timeline_forwards, css: '#mw-revslider-container > div > a.mw-revslider-arrow.mw-revslider-arrow-forwards') + div(:revisionslider_timeline_backwards, css: '.mw-revslider-arrow.mw-revslider-arrow-backwards') + div(:revisionslider_timeline_forwards, css: '.mw-revslider-arrow.mw-revslider-arrow-forwards') div(:revisionslider_pointer_lower, css: '.mw-revslider-pointer-lower') div(:revisionslider_pointer_upper, css: '.mw-revslider-pointer-upper') diff --git a/tests/browser/features/support/step_definitions/timeline.rb b/tests/browser/features/support/step_definitions/timeline.rb index 283d1dc..848bb0c 100644 --- a/tests/browser/features/support/step_definitions/timeline.rb +++ b/tests/browser/features/support/step_definitions/timeline.rb @@ -1,17 +1,17 @@ Then(/^The forward arrow should be disabled/) do - expect(on(DiffPage).revisionslider_timeline_forwards_element.class_name).to match 'mw-revslider-arrow-disabled' + expect(on(DiffPage).revisionslider_timeline_forwards_element.class_name).to match 'oo-ui-widget-disabled' end Then(/^The backward arrow should be disabled/) do - expect(on(DiffPage).revisionslider_timeline_backwards_element.class_name).to match 'mw-revslider-arrow-disabled' + expect(on(DiffPage).revisionslider_timeline_backwards_element.class_name).to match 'oo-ui-widget-disabled' end Then(/^The forward arrow should be enabled/) do - expect(on(DiffPage).revisionslider_timeline_forwards_element.class_name).not_to match 'mw-revslider-arrow-disabled' + expect(on(DiffPage).revisionslider_timeline_forwards_element.class_name).not_to match 'oo-ui-widget-disabled' end Then(/^The backward arrow should be enabled/) do - expect(on(DiffPage).revisionslider_timeline_backwards_element.class_name).not_to match 'mw-revslider-arrow-disabled' + expect(on(DiffPage).revisionslider_timeline_backwards_element.class_name).not_to match 'oo-ui-widget-disabled' end Given(/^I click on the forward arrow$/) do -- To view, visit https://gerrit.wikimedia.org/r/303166 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I25c98e32c74235a2b70ac1d02c221f1898ba9958 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/RevisionSlider Gerrit-Branch: master Gerrit-Owner: WMDE-leszek <leszek.mani...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits