Browse Source

fix ssr issues when navigator is not defined

J.D Nicholls 2 years ago
parent
commit
f48b6e0859
3 changed files with 4 additions and 2 deletions
  1. 1 1
      lib/environment.js
  2. 2 1
      lib/eventhandlers.js
  3. 1 0
      lib/positioning.js

+ 1 - 1
lib/environment.js

@@ -2,7 +2,7 @@ import window from "./global/window";
 
 const ua = (window.navigator && window.navigator.userAgent) || "",
     ie = (ua.indexOf("MSIE ") > 0) || (ua.indexOf("Trident/") > 0),
-    mobile = (navigator.userAgentData && navigator.userAgentData.mobile) || (window.navigator && window.navigator.maxTouchPoints) || "ontouchstart" in window, //not entirely correct but will currently do
+    mobile = (window.navigator && window.navigator.userAgentData && window.navigator.userAgentData.mobile) || (window.navigator && window.navigator.maxTouchPoints) || "ontouchstart" in window, //not entirely correct but will currently do
     iphone = /iphone/i.test(ua);
 
 export {ie, mobile, iphone};

+ 2 - 1
lib/eventhandlers.js

@@ -12,6 +12,7 @@ import {iphone, mobile} from "./environment";
 import {handleRemove, isComplete, isSelection, isValid} from "./validation";
 import {applyInputValue, checkVal, clearOptionalTail, HandleNativePlaceholder, writeBuffer} from "./inputHandling";
 import {getPlaceholder, getTest} from "./validation-tests";
+import window from "./global/window";
 
 export {EventHandlers};
 
@@ -407,7 +408,7 @@ var EventHandlers = {
         //correct clipboardData
         var clipData = inputmask.isRTL ? getBuffer.call(inputmask).slice(pos.end, pos.begin) : getBuffer.call(inputmask).slice(pos.begin, pos.end),
             clipDataText = inputmask.isRTL ? clipData.reverse().join("") : clipData.join("");
-        if (window.navigator.clipboard) window.navigator.clipboard.writeText(clipDataText);
+        if (window.navigator && window.navigator.clipboard) window.navigator.clipboard.writeText(clipDataText);
         else if (window.clipboardData && window.clipboardData.getData) { // IE
             window.clipboardData.setData("Text", clipDataText);
         }

+ 1 - 0
lib/positioning.js

@@ -1,3 +1,4 @@
+import window from "./global/window";
 import {
     determineTestTemplate,
     getMaskTemplate,