PHP Classes

File: public/js/tinymce/src/themes/mobile/src/main/js/ios/view/IosKeyboard.js

Recommend this page to a friend!
  Classes of Abed Nego Ragil Putra   GoLavaCMS   public/js/tinymce/src/themes/mobile/src/main/js/ios/view/IosKeyboard.js   Download  
File: public/js/tinymce/src/themes/mobile/src/main/js/ios/view/IosKeyboard.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: GoLavaCMS
Publish content on Web pages with SEO support
Author: By
Last change:
Date: 6 years ago
Size: 5,439 bytes
 

Contents

Class file image Download
define( 'tinymce.themes.mobile.ios.view.IosKeyboard', [ 'ephox.katamari.api.Arr', 'ephox.katamari.api.Fun', 'ephox.sugar.api.dom.Focus', 'ephox.sugar.api.events.DomEvent', 'ephox.sugar.api.node.Body', 'ephox.sugar.api.node.Node', 'tinymce.themes.mobile.ios.focus.ResumeEditing', 'tinymce.themes.mobile.util.CaptureBin' ], function (Arr, Fun, Focus, DomEvent, Body, Node, ResumeEditing, CaptureBin) { /* * Stubborn IOS Keyboard mode: * * The keyboard will stubbornly refuse to go away. The only time it will go away is when toReading * is called (which is currently only used by the insert image button). It will probably go away * at other times, but we never explicitly try to make it go away. * * The major problem with not dismissing the keyboard when the user presses the toolbar is that * the input focus can be put in some very interesting things. Once the input focus is in something * that is not the content or an input that the user can clearly see, behaviour gets very strange * very quickly. The Stubborn keyboard tries to resolve this issue in a few ways: * * 1. After scrolling the toolbar, it resumes editing of the content. This has the built-in assumption * that there are no slick toolbars that require scrolling AND input focus * 2. Any time a keydown is received on the outer page, we resume editing of the content. What this means * is that in situations where the user has still managed to get into the toolbar (e.g. they typed while * the dropdown was visible, or the insert image toReading didn't quite work etc.), then the first keystroke * sends the input back to the content, and then subsequent keystrokes appear in the content. Although * this means that their first keystroke is lost, it is a reasonable way of ensuring that they don't * get stuck in some weird input somewhere. The goal of the stubborn keyboard is to view this as a * fallback ... we want to prevent it getting to this state wherever possible. However, there are just * some situations where we really don't know what typing on the keyboard should do (e.g. a dropdown is open). * Note, when we transfer the focus back to the content, we also close any menus that are still visible. * * Now, because in WebView mode, the actual window is shrunk when the keyboard appears, the dropdown vertical * scrolling is set to the right height. However, when running as a webapp, this won't be the case. To use * the stubborn keyboard in webapp mode, we will need to find some way to let repartee know the MaxHeight * needs to exclude the keyboard. This isn't a problem with timid, because the keyboard is dismissed. */ var stubborn = function (outerBody, cWin, page, frame/*, toolstrip, toolbar*/) { var toEditing = function () { ResumeEditing.resume(cWin, frame); }; var toReading = function () { CaptureBin.input(outerBody, Focus.blur); }; var captureInput = DomEvent.bind(page, 'keydown', function (evt) { // Think about killing the event. if (! Arr.contains([ 'input', 'textarea' ], Node.name(evt.target()))) { // FIX: Close the menus // closeMenus() toEditing(); } }); var onToolbarTouch = function (/* event */) { // Do nothing }; var destroy = function () { captureInput.unbind(); }; return { toReading: toReading, toEditing: toEditing, onToolbarTouch: onToolbarTouch, destroy: destroy }; }; /* * Timid IOS Keyboard mode: * * In timid mode, the keyboard will be dismissed as soon as the toolbar is clicked. In lot of * situations, it will then quickly reappear is toEditing is called. The timid mode is safe, * but can be very jarring. * * One situation that the timid mode does not handle is when in a WebView, if the user has * scrolled to the bottom of the content and is editing it, as soon as they click on a formatting * operation, the keyboard will be dismissed, and the content will visibly jump back down to * the bottom of the screen (because the increased window size has decreased the amount of * scrolling available). As soon as the formatting operation is completed (which can be * instantaneously for something like bold), then the keyboard reappears and the content * jumps again. It's very jarring and there's not much we can do (I think). * * However, the timid keyboard mode will seamlessly integrate with dropdowns max-height, because * dropdowns dismiss the keyboard, so they have all the height they require. */ var timid = function (outerBody, cWin, page, frame/*, toolstrip, toolbar*/) { var dismissKeyboard = function () { Focus.blur(frame); }; var onToolbarTouch = function () { dismissKeyboard(); }; var toReading = function () { dismissKeyboard(); }; var toEditing = function () { ResumeEditing.resume(cWin, frame); }; return { toReading: toReading, toEditing: toEditing, onToolbarTouch: onToolbarTouch, destroy: Fun.noop }; }; return { stubborn: stubborn, timid: timid }; } );