Преглед изворни кода

Other: Update SplitButtonDropdown keystrokes behavior.

Maciej Gołaszewski пре 8 година
родитељ
комит
0126d86ad6

+ 6 - 6
packages/ckeditor5-ui/src/button/splitbuttonview.js

@@ -56,19 +56,19 @@ export default class SplitButtonView extends View {
 
 		this.keystrokes.listenTo( this.element );
 
-		this.keystrokes.set( 'arrowright', ( evt, cb ) => {
+		this.keystrokes.set( 'arrowright', ( evt, cancel ) => {
 			if ( this.focusTracker.focusedElement === this.buttonView.element ) {
-				cb();
-
 				this.arrowView.focus();
+
+				cancel();
 			}
 		} );
 
-		this.keystrokes.set( 'arrowleft', ( evt, cb ) => {
+		this.keystrokes.set( 'arrowleft', ( evt, cancel ) => {
 			if ( this.focusTracker.focusedElement === this.arrowView.element ) {
-				cb();
-
 				this.buttonView.focus();
+
+				cancel();
 			}
 		} );
 	}

+ 9 - 3
packages/ckeditor5-ui/src/dropdown/button/createsplitbuttondropdown.js

@@ -13,7 +13,7 @@ import DropdownView from '../dropdownview';
 import DropdownPanelView from '../dropdownpanelview';
 
 import ButtonGroupView from '../../buttongroup/buttongroupview';
-import { closeDropdownOnBlur, closeDropdownOnExecute, openDropdownOnArrows } from '../utils';
+import { closeDropdownOnBlur, closeDropdownOnExecute, focusDropdownItemsOnArrows } from '../utils';
 
 /**
  * TODO
@@ -34,7 +34,6 @@ export default function createSplitButtonDropdown( model, buttonViews, locale, s
 	const panelView = new DropdownPanelView( locale );
 
 	const dropdownView = new DropdownView( locale, splitButtonView, panelView );
-	// END of TODO
 
 	const buttonGroupView = dropdownView.buttonGroupView = new ButtonGroupView( { isVertical: model.isVertical } );
 
@@ -60,7 +59,14 @@ export default function createSplitButtonDropdown( model, buttonViews, locale, s
 
 	closeDropdownOnBlur( dropdownView );
 	closeDropdownOnExecute( dropdownView, buttonGroupView.items );
-	openDropdownOnArrows( dropdownView, buttonGroupView );
+	focusDropdownItemsOnArrows( dropdownView, buttonGroupView );
+
+	splitButtonView.arrowView.on( 'execute', () => {
+		if ( splitButtonView.buttonView.isEnabled && !dropdownView.isOpen ) {
+			dropdownView.isOpen = true;
+			buttonGroupView.focus();
+		}
+	} );
 
 	return dropdownView;
 }