Unverified Commit 4efef25d authored by Lauri Timmanee's avatar Lauri Timmanee
Browse files

Issue #3301631 by nod_, Taran2L, xjm: Regression with CKEditor 35.0.1 and modal dialogs

parent 4b9c19c9
Loading
Loading
Loading
Loading
+4 −15
Original line number Diff line number Diff line
@@ -7,23 +7,12 @@
 */

(($) => {
  // Get core version of the _focusTabbable method.
  const oldFocusTabbable = $.ui.dialog._proto._focusTabbable;

  $.widget('ui.dialog', $.ui.dialog, {
    // Override core override of jQuery UI's `_focusTabbable()` so that
    // Override core override of jQuery UI's `_allowInteraction()` so that
    // CKEditor 5 in modals can work as expected.
    _focusTabbable() {
      // When the focused element is a CKEditor 5 instance, disable jQuery UI
      // focus trap and delegate focus trap to CKEditor 5.
      const hasFocus = this._focusedElement
        ? this._focusedElement.get(0)
        : null;
      // In case the element is a CKEditor 5 instance, do not change focus
      // management.
      if (!(hasFocus && hasFocus.ckeditorInstance)) {
        oldFocusTabbable.call(this);
      }
    // @see https://api.jqueryui.com/dialog/#method-_allowInteraction
    _allowInteraction(event) {
      return event.target.classList.contains('ck') || this._super(event);
    },
  });
})(jQuery);
+2 −7
Original line number Diff line number Diff line
@@ -6,14 +6,9 @@
**/

($ => {
  const oldFocusTabbable = $.ui.dialog._proto._focusTabbable;
  $.widget('ui.dialog', $.ui.dialog, {
    _focusTabbable() {
      const hasFocus = this._focusedElement ? this._focusedElement.get(0) : null;

      if (!(hasFocus && hasFocus.ckeditorInstance)) {
        oldFocusTabbable.call(this);
      }
    _allowInteraction(event) {
      return event.target.classList.contains('ck') || this._super(event);
    }

  });
+0 −4
Original line number Diff line number Diff line
@@ -71,10 +71,6 @@ function (ConstraintViolation $v) {
    // Then press the button to add a link.
    $this->pressEditorButton('Link');

    // @todo Un-skip this test when
    //   https://www.drupal.org/project/drupal/issues/3301631 is resolved.
    $this->markTestSkipped('Test skipped due to regression in CKEditor 35.0.0.');

    $link_url = '/ckeditor5_test/dialog';
    $input = $assert_session->waitForElementVisible('css', '.ck-balloon-panel input.ck-input-text');
    // Make sure the input field can have focus and we can type into it.