UNPKG

free-keyboard

Version:

为vue量身定做的、功能完善的、提供丰富自定义功能的前端键盘组件

775 lines (704 loc) 64.8 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else { var a = factory(); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // identity function for calling harmony imports with the correct context /******/ __webpack_require__.i = function(value) { return value; }; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/dist/"; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 2); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { /* styles */ __webpack_require__(7) var Component = __webpack_require__(5)( /* script */ __webpack_require__(1), /* template */ __webpack_require__(6), /* scopeId */ null, /* cssModules */ null ) Component.options.__file = "/Users/zhaoxiaoyang01/Documents/daydayup/npm/free-keyboard/src/app.vue" if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key !== "__esModule"})) {console.error("named exports are not supported in *.vue files.")} if (Component.options.functional) {console.error("[vue-loader] app.vue: functional components are not supported with templates, they should use render functions.")} /* hot reload */ if (false) {(function () { var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return module.hot.accept() if (!module.hot.data) { hotAPI.createRecord("data-v-6cde7a71", Component.options) } else { hotAPI.reload("data-v-6cde7a71", Component.options) } })()} module.exports = Component.exports /***/ }), /* 1 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /** * 兼容ios :active 样式效果 **/ document.body.addEventListener("touchstart", function () {}); /* harmony default export */ __webpack_exports__["default"] = ({ data() { return { isCallUp: true, // 键盘显示隐藏 animation: true, // 键盘滑入 滑出的动画 状态区分 true 默认滑入 isIosSystem: false, // 是否为ios系统 默认false isUpper: false, // 监听大小写状态 keyboardType: "", // 键盘类型 customArr: [], // 字符数组 // 英文键arr 默认小写 englishArrList: [["q", "w", "e", "r", "t", "y", "u", "i", "o", "p"], ["a", "s", "d", "f", "g", "h", "j", "k", "l"], ["shift", "z", "x", "c", "v", "b", "n", "m"]], // 纯数字键arr numberKey: ["1", "2", "3", "4", "5", "6", "7", "8", "9"] }; }, mounted() { // 初始化数据 this.initData(); // 初始化逻辑 this.init(); }, methods: { /** * 初始化数据 **/ initData() { this.isIosSystem = this.isInIOS(); // true:ios终端 this.keyboardType = this.keyboardParameter.type; // 按需加载键盘 this.switchKey = this.keyboardType !== 'english' ? false : this.keyboardParameter.switchKey; // 是否展示"键盘切换按钮". 策略:1.从传入的配置去 2.非英文键盘下不可切换键盘,默认false this.customKeys = this.keyboardParameter.customKeys; // 自定义字符 this.inputEl = this.keyboardParameter.el; // input Dom this.keybordEl = this.$refs.keyboard; // 获取键盘Dom this.begainDelTimeOutId = null; // 长按500毫秒后执行删除的定时器 this.keepDelTimeId = null; // 持续删除的定时器 this.defaultCharacter = ['@', '_', '.', '!', '%', '*', '/']; // 可切换状态下的默认字符 this.penObjSrc = "//mapcarowner-gz.cdn.bcebos.com/default/e4706a52d4781c8eb45134c73a94278f.png"; // 画笔 url // 通过判断switchKey(是否展示"键盘切换按钮")来更新键盘两侧字符数组 自定义字符种类最多8种 this.customArr = this.switchKey ? this.defaultCharacter : this.customKeys.slice(0, 9); }, /** * 初始化逻辑 **/ init() { // 是否首次调用键盘 if (this.isCallUp) { // 防止在键盘区域滑动屏幕 this.keybordEl.addEventListener("touchmove", event => { event.preventDefault(); }, { passive: false }); // 点击屏幕隐藏键盘 this.clickScreenHidekeyboard(); // 由于键盘需要遍历渲染 延时为了获取渲染后的键盘高度 this.$nextTick(() => { // 显示键盘辅助元素 (撑起页面的div、 画笔) this.auxiliaryDom(); }); } // 删除键盘辅助元素 (画笔光标) 直接在input之间切换 inputSwitch为true 不卸载键盘 if (this.inputSwitch) { // 卸载键盘 this.delAuxiliaryDom(); this.isUpper = false; // 默认小写状态 this.inputSwitch = false; } }, /** * 英文数字 键盘切换 * 键盘类型:english(英文键盘)/number(数字键盘)/customNum(自定义键盘) **/ switchkeyboard() { // 更新键盘类型 this.keyboardType = this.keyboardType === 'english' ? 'customNum' : 'english'; }, /** * 显示键盘辅助元素 * 1.键盘调起后 撑起页面的div * 2.添加画笔光标来提示当前操作的input对象 **/ auxiliaryDom() { // 键盘调起后 撑起页面的div if (!document.querySelector(".div-bottom-auxiliary")) { let divBottomAuxiliary = document.createElement("div"); divBottomAuxiliary.style.height = this.keybordEl.offsetHeight + 'px'; divBottomAuxiliary.className = "div-bottom-auxiliary"; document.body.appendChild(divBottomAuxiliary); } // 添加画笔光标来提示当前操作的input对象 this.addImgDom(); }, /** * 添加画笔光标来提示当前操作的input对象 * 说明:1.使用flex布局 * (1)水平布局 * (2)垂直布局 * 2.非flex布局 input,display属性为block和-webkit-box两种情况 **/ addImgDom() { let iDom = this.createElement("i", "i-dom"); let penObj = this.createElement("img", "pen-img-cursor"); penObj.src = this.penObjSrc; iDom.appendChild(penObj); this.inputEl.parentNode.insertBefore(iDom, this.inputEl.nextSibling); // 判断是否使用flex布局 let isFlex = this.getStyle(this.inputEl.parentNode, 'display').includes('flex'); // input,display属性可能为block 处理input不同情况下画笔的状态 获取display值 let inputElDisplay = this.getStyle(this.inputEl, 'display'); if (!isFlex && (inputElDisplay === 'block' || inputElDisplay.includes('box'))) { // 非flex布局 iDom.className = 'i-dom'; iDom.style.width = this.inputEl.offsetWidth + 'px'; penObj.className = 'pen-obj'; } else { // 判断是否使用flex垂直布局 let isFlexColumn = this.getStyle(this.inputEl.parentNode, 'flex-direction').includes('column') || this.getStyle(this.inputEl.parentNode, 'flex-flow').includes('column'); // input可能存在margin-right 处理flex布局后的画笔水平位置 let marginRightNum = parseInt(this.getStyle(this.inputEl, 'margin-right').slice(0, this.getStyle(this.inputEl, 'margin-right').length - 2), 10); if (isFlexColumn) { iDom.style.width = this.inputEl.offsetWidth + 'px'; marginRightNum === 0 ? penObj.className = 'pen-obj' : penObj.style.transform = 'translate(-' + marginRightNum / 2 + 'px, -100%)'; } else { penObj.className = 'pen-obj-flex'; penObj.style.transform = marginRightNum === 0 ? 'translate(0, -50%)' : 'translate(-' + marginRightNum + 'px, -50%)'; } } }, /** * 创建Dom * @params {String} tagName Dom标签名 * @params {String} id Dom id名 **/ createElement(tagName, id) { if (tagName && id) { let dom = document.createElement(tagName); dom.id = id; // dom.setAttribute('data-v-1449241a', ''); return dom; } }, /** * 获取指定元素的css属性值 * @params {Object} element 指定Dom元素 * @params {String} attr 指定css属性名 **/ getStyle(element, attr) { return getComputedStyle(element, false)[attr]; }, /** * 单点删除单个 **/ deletekey() { let values = this.inputEl.value; if (!values.length) { // 当value值为空时 this.delTouchend(); return; } else { // 删除实时更新value值 this.inputEl.value = values.substring(0, values.length - 1); } }, /** * 长按删除开始 **/ delTouchstart() { // 删除 this.deletekey(); // 长按500毫秒后执行持续删除 this.begainDelTimeOutId = setTimeout(() => { // 开始持续删除 this.keepDelTimeId = setInterval(() => { this.deletekey(); }, 80); }, 500); }, /** * 长按删除结束 清除定时器 **/ delTouchend() { // 清除持续删除定时器 clearInterval(this.keepDelTimeId); this.keepDelTimeId = null; // 清除长按定时器 clearTimeout(this.begainDelTimeOutId); this.begainDelTimeOutId = null; }, /** * 同步输入框内容 、 字母大小写切换 、 完成 **/ upClickButton(key) { switch (String(key)) { case "shift": // 大小写切换 this.isUpper = !this.isUpper; break; case "enter": // 卸载销毁键盘 this.$uninstallKeyboard(); break; default: // 根据大小写状态改变传入的 key值 大小写 key = this.isUpper ? key.toLocaleUpperCase() : key; // 判断可输入最大长度 并更新input值 value if (this.inputEl.value.length < this.keyboardParameter.maxLength) { this.inputEl.value += key; } break; } }, /** * 点击屏幕隐藏键盘 **/ clickScreenHidekeyboard() { document.querySelector('body').addEventListener('click', e => { // 卸载销毁键盘 this.$uninstallKeyboard(); }); }, /** * 因为给body添加点击事件 所以给键盘 add 阻止冒泡 **/ keyboardClick() { return; }, /** * 是否在ios **/ isInIOS() { return navigator.userAgent && /iPad|iPhone|iPod/i.test(navigator.userAgent); }, /** * 删除键盘辅助元素 画笔光标 卸载 * 根据inputSwitch 用来区分两种情况 * 1. 直接走卸载流程 (点屏幕卸载键盘、切换不需要调用自定义键盘的input) * 2. 直接在input之间切换键盘 不需要卸载键盘 **/ delAuxiliaryDom() { // 删除画笔光标 let iDom = document.querySelector('#i-dom'); iDom.parentNode.removeChild(iDom); // 卸载 if (!this.inputSwitch) { // 删除撑起页面的div document.body.removeChild(document.querySelector(".div-bottom-auxiliary")); // 移出body点击事件 document.querySelector('body').removeEventListener("click", () => {}); this.animation = false; setTimeout(() => { // 卸载键盘 this.isCallUp = false; }, 200); } } } }); /***/ }), /* 2 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__app_vue__ = __webpack_require__(0); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__app_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__app_vue__); /** * @file 自定义键盘插件 CustomKeyboard * @description 包含纯数字键盘 自定义数字键盘 英文键盘 * * 开启键盘 * @param {Object} options 调用键盘需要的配置参数 * 说明 凡是调用键盘必传 options 对象 * 情形1:当键盘类型 options.type 不传这个type字段时 默认调用英文键盘 并可切换到数字键盘 * 情形2:当键盘类型 options.type type字段传类型时 按需调用键盘 english英文 number数字 customNum自定义数字 * 情形3:当input对象 options.el 没传时,如果初始化过键盘,则卸载键盘 * this.$keyboard({ * type: 'english', // 当前默认调起的键盘类型 english英文 number数字 customNum自定义数字 * el: {}, // 当前输入框对象 * value: '', // input值 * maxLength: 20, // 更新input本身最大字符长度maxLength,如果没有设置,默认长度为20字符 * switchKey: true, // 是否可以切换英文数字键盘 true 默认可以 * customKeys: ["@", "_", ".", "!", "%", "*", "/", "+"], // 用户自定义字符 最大限制8种 * }); * */ const _CUSTOMKEYBOARD = { component: null }; /* harmony default export */ __webpack_exports__["default"] = ({ install(Vue) { // 添加实例方法 Vue.prototype.$keyboard = options => { // options中没传input对象直接return if (Object.prototype.toString.call(options) !== '[object Object]' || !options.el) { // 如果初始化过键盘,则卸载 Vue.prototype.$uninstallKeyboard(); return; } // 键盘默认配置 let defaultConfig = { type: 'english', // 当前默认调起的键盘类型 english 英文 number 数字 customNum 自定义数字 el: options.el, // input对象 value: options.el.value, // input值 maxLength: options.el.maxLength !== -1 ? options.el.maxLength : 20, // 更新input本身最大字符长度maxLength,如果没有设置,默认长度为20字符 switchKey: true, // 是否可以切换英文数字键盘 false 默认不可以 customKeys: ['@', '_', '.', '!', 'X', '*', '/', '+'] // 用户自定义字符 最大限制8种 }; // options中input对象存在 进行参数配置更新 if (options.type === undefined) { // 类型不传时调用默认键盘 options = defaultConfig; } else if (typeof options.type === 'string') { // 合并 options参数 与 默认参数 options = Object.assign(defaultConfig, options); } else { return; } // 禁用系统键盘 document.activeElement.blur(); // 判断组件是否挂载 if (!_CUSTOMKEYBOARD.component) { let CustomKeyboardComponent = Vue.extend(__WEBPACK_IMPORTED_MODULE_0__app_vue___default.a); _CUSTOMKEYBOARD.component = new CustomKeyboardComponent(); // 将参数赋值给组件内对象 keyboardParameter setTimeout(() => { _CUSTOMKEYBOARD.component.keyboardParameter = options; let element = _CUSTOMKEYBOARD.component.$mount().$el; document.body.appendChild(element); }, 100); } // input之间切换 else { _CUSTOMKEYBOARD.component.keyboardParameter = options; // 删除键盘辅助元素 (画笔光标) inputSwitch true 直接在input之间切换 无滑动效果 _CUSTOMKEYBOARD.component.inputSwitch = true; // 手动挂载 _CUSTOMKEYBOARD.component.$mount(); } }; Vue.prototype.$uninstallKeyboard = () => { // 卸载键盘 if (_CUSTOMKEYBOARD.component) { // 删除键盘辅助元素 (撑起页面的div、 画笔光标) 不传值 走卸载 滑动隐藏键盘 _CUSTOMKEYBOARD.component.delAuxiliaryDom(); _CUSTOMKEYBOARD.component = null; // 取消屏蔽系统键盘 document.activeElement.focus(); } }; } }); /***/ }), /* 3 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(true); // imports // module exports.push([module.i, "#i-dom {\n position: relative;\n}\n\n#pen-img-cursor {\n width: 0.493333rem;\n animation: twinkling 1.5s infinite ease-in-out;\n position: absolute;\n right: 0;\n}\n\n.keyboard {\n width: 100%;\n background: #d8d7df;\n overflow: hidden;\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: 99;\n padding-bottom: 0.6rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.keyboard .i-dom {\n display: block;\n}\n\n.keyboard .pen-obj {\n transform: translate(0, -100%);\n}\n\n.keyboard .pen-obj-flex {\n top: 50%;\n}\n\n@keyframes twinkling {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n.keyboard .div-auxiliary-mask {\n position: fixed;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: 9;\n background: rgba(0, 0, 0, 0);\n}\n\n.keyboard .keyboard-animation-up {\n animation: slideUp 0.2s forwards;\n}\n\n.keyboard .keyboard-animation-down {\n animation: slideDown 0.2s forwards;\n}\n\n@keyframes slideUp {\n 0% {\n transform: translateY(100%);\n }\n\n 100% {\n transform: translateY(0);\n }\n}\n\n@keyframes slideDown {\n 0% {\n transform: translateY(0);\n }\n\n 100% {\n transform: translateY(100%);\n }\n}\n\n.keyboard .keyboard-key {\n padding-top: 0.133333rem;\n width: 96%;\n margin: 0 auto;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n\n.keyboard .button {\n font-size: 0.373333rem!important;\n background-color: #fefefe;\n border: none!important;\n height: 0.96rem!important;\n text-align: center;\n line-height: 0.986667rem;\n margin: 0.133333rem 0.08rem!important;\n box-shadow: 0 0.013333rem 0.013333rem #989898;\n font-weight: bold;\n}\n\n.keyboard .keyboard-custom-number,\n.keyboard .keyboard-number {\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n margin: 0;\n padding: 0;\n vertical-align: bottom;\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.keyboard .pos-mid-button-num {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1;\n flex: 1;\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n margin: 0.146667rem;\n}\n\n.keyboard .pos-mid-button-num .buttonnum {\n font-size: 0.373333rem!important;\n background-color: #fefefe;\n border: none!important;\n height: 1rem!important;\n text-align: center;\n line-height: 0.986667rem;\n margin: 0.08rem!important;\n box-shadow: 0 0.013333rem 0.013333rem #989898;\n font-weight: bold;\n border-radius: 0.133333rem;\n width: 30%;\n}\n\n.keyboard .pos-mid-button-num .buttonnum:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .pos-number-button-num {\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n margin: 0.146667rem;\n}\n\n.keyboard .pos-number-button-num .buttonnum {\n font-size: 0.373333rem!important;\n background-color: #fefefe;\n border: none!important;\n height: 1rem!important;\n text-align: center;\n line-height: 0.986667rem;\n margin: 0.08rem!important;\n box-shadow: 0 0.013333rem 0.013333rem #989898;\n font-weight: bold;\n border-radius: 0.133333rem;\n width: 30%;\n}\n\n.keyboard .pos-number-button-num .buttonnum:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .pos-right-button-num {\n display: -ms-flexbox;\n display: flex;\n width: 15%;\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n margin: 0.146667rem;\n}\n\n.keyboard .pos-right-button-num .buttonright {\n width: 100%;\n font-size: 0.373333rem!important;\n background-color: #fefefe;\n border: none!important;\n height: 2.16rem!important;\n text-align: center;\n line-height: 2.16rem;\n margin: 0.08rem!important;\n -webkit-box-shadow: 0 0.013333rem 0.013333rem #989898;\n box-shadow: 0 0.013333rem 0.013333rem #989898;\n font-weight: bold;\n border-radius: 0.133333rem;\n}\n\n.keyboard .pos-right-button-num .buttonright:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .pos-left-button-num {\n display: -ms-flexbox;\n display: flex;\n width: 15%;\n height: 93%;\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n margin: 0.146667rem;\n}\n\n.keyboard .pos-left-button-num .buttoncharacter {\n width: 100%;\n font-size: 0.373333rem!important;\n background-color: #fefefe;\n border: none!important;\n height: 1rem;\n text-align: center;\n line-height: 1rem;\n margin: 0.08rem!important;\n -webkit-box-shadow: 0 0.013333rem 0.013333rem #989898;\n box-shadow: 0 0.013333rem 0.013333rem #989898;\n font-weight: bold;\n border-radius: 0.133333rem;\n}\n\n.keyboard .pos-left-button-num .buttoncharacter:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .pos-left-button-num .buttoncharacter-1 {\n height: 97%;\n line-height: 4.48rem;\n}\n\n.keyboard .pos-left-button-num .buttoncharacter-2 {\n height: 46%;\n line-height: 2.15rem;\n}\n\n.keyboard .pos-left-button-num .buttoncharacter-3 {\n height: 29.5%;\n line-height: 1.38rem;\n}\n\n.keyboard .pos-left-button-num .buttoncharacter-4 {\n height: 21.1%;\n line-height: 1rem;\n}\n\n.keyboard .hide-button {\n display: none;\n}\n\n.keyboard .button-num {\n width: 33.33%;\n height: 0.64rem;\n border: 0;\n border: 0.013333rem solid #000000;\n font-size: 0.2rem;\n cursor: pointer;\n}\n\n.keyboard .button-num:hover {\n position: relative;\n cursor: pointer;\n}\n\n.keyboard .button-num:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .button-num-two {\n width: 100%;\n height: 1.28rem;\n border: 0;\n border: 0.013333rem solid #000000;\n font-size: 0.2rem;\n cursor: pointer;\n}\n\n.keyboard .button-num-two:hover {\n position: relative;\n cursor: pointer;\n}\n\n.keyboard .button-num-two:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .keyboard-letter {\n width: 100%;\n margin: 0;\n padding: 0;\n}\n\n.keyboard .keyboard-letter .line-1,\n.keyboard .keyboard-letter .line-2,\n.keyboard .keyboard-letter .line-3,\n.keyboard .keyboard-letter .line-4 {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: row;\n flex-direction: row;\n}\n\n.keyboard .keyboard-letter .line-1 .button-num-btn {\n width: 10%;\n height: 0.826667rem;\n border: 0.013333rem solid #000000;\n font-size: 0.293333rem;\n margin: 0.066667rem 0.08rem;\n border-radius: 0.133333rem;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-1 .button-num-btn:hover {\n position: relative;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-1 .button-num-btn:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .keyboard-letter .line-2 {\n width: 90%;\n margin: 0 auto;\n}\n\n.keyboard .keyboard-letter .line-2 .button-num-btn {\n width: 10%;\n height: 0.826667rem;\n border: 0.013333rem solid #000000;\n font-size: 0.293333rem;\n margin: 0.066667rem 0.08rem;\n border-radius: 0.133333rem;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-2 .button-num-btn:hover {\n position: relative;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-2 .button-num-btn:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .keyboard-letter .line-3 {\n width: 100%;\n}\n\n.keyboard .keyboard-letter .line-3 .button-num-btn {\n width: 10%;\n height: 0.826667rem;\n border: 0.013333rem solid #000000;\n font-size: 0.293333rem;\n margin: 0.066667rem 0.08rem;\n border-radius: 0.133333rem;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-3 .button-num-btn:hover {\n position: relative;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-3 .button-num-btn:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .keyboard-letter .line-3 .button:nth-child(1) {\n width: 16%!important;\n}\n\n.keyboard .keyboard-letter .line-3 .button:nth-last-child(1) {\n width: 16%!important;\n}\n\n.keyboard .keyboard-letter .line-3 .arrowtop {\n position: absolute;\n width: 0;\n height: 0;\n border-left: 0.133333rem solid transparent;\n border-right: 0.133333rem solid transparent;\n border-bottom: 0.133333rem solid black;\n left: 50%;\n top: 20%;\n transform: translate(-50%);\n}\n\n.keyboard .keyboard-letter .line-3 .arrowbot {\n position: absolute;\n width: 0.08rem;\n height: 0.186667rem;\n background: #000;\n left: 50%;\n top: 42%;\n transform: translate(-50%);\n}\n\n.keyboard .keyboard-letter .line-4 .button-num-btn,\n.keyboard .keyboard-letter .line-4 .button-num-two {\n height: 0.826667rem;\n border: 0.013333rem solid #000000;\n font-size: 0.293333rem;\n margin: 0.066667rem 0.08rem;\n border-radius: 0.133333rem;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-4 .button-num-btn:hover,\n.keyboard .keyboard-letter .line-4 .button-num-two:hover {\n position: relative;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-4 .button-num-btn:active,\n.keyboard .keyboard-letter .line-4 .button-num-two:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .keyboard-letter .line-4 .specialkey {\n width: 100%!important;\n}\n\n.keyboard .keyboard-letter .line-4 .button-num-btn {\n width: 13%;\n}\n\n.keyboard .keyboard-letter .line-4 .button-num-two {\n width: 70%;\n}\n\n.keyboard .input-box {\n font-size: 0.466667rem;\n font-weight: bold;\n height: 0.533333rem;\n border-bottom: 0.013333rem solid #aaa;\n padding: 0.133333rem 0.2rem;\n text-align: right;\n width: 90%;\n}\n\n.keyboard .only-enter {\n background: #157ef7!important;\n color: #fff!important;\n}\n\n.keyboard .del {\n position: relative;\n}\n\n.keyboard .del img.delico {\n width: 100%;\n position: absolute;\n top: 50%;\n left: 50%;\n}\n\n.keyboard .del img.englishdelico {\n transform: translate(-50%, -50%) scale(0.5);\n}\n\n.keyboard .del img.customNumdelico {\n transform: translate(-50%, -50%) scale(0.4);\n}\n\n.keyboard .del img.numberdelico {\n transform: translate(-50%, -50%) scale(0.25);\n}\n\n.keyboard .iphonex-bottom {\n padding-bottom: constant(safe-area-inset-bottom);\n padding-bottom: env(safe-area-inset-bottom);\n}", "", {"version":3,"sources":["/Users/zhaoxiaoyang01/Documents/daydayup/npm/free-keyboard/src/<input css 1>"],"names":[],"mappings":"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","file":"app.vue","sourcesContent":["#i-dom {\n position: relative;\n}\n\n#pen-img-cursor {\n width: 0.493333rem;\n animation: twinkling 1.5s infinite ease-in-out;\n position: absolute;\n right: 0;\n}\n\n.keyboard {\n width: 100%;\n background: #d8d7df;\n overflow: hidden;\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: 99;\n padding-bottom: 0.6rem;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.keyboard .i-dom {\n display: block;\n}\n\n.keyboard .pen-obj {\n transform: translate(0, -100%);\n}\n\n.keyboard .pen-obj-flex {\n top: 50%;\n}\n\n@keyframes twinkling {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n.keyboard .div-auxiliary-mask {\n position: fixed;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: 9;\n background: rgba(0, 0, 0, 0);\n}\n\n.keyboard .keyboard-animation-up {\n animation: slideUp 0.2s forwards;\n}\n\n.keyboard .keyboard-animation-down {\n animation: slideDown 0.2s forwards;\n}\n\n@keyframes slideUp {\n 0% {\n transform: translateY(100%);\n }\n\n 100% {\n transform: translateY(0);\n }\n}\n\n@keyframes slideDown {\n 0% {\n transform: translateY(0);\n }\n\n 100% {\n transform: translateY(100%);\n }\n}\n\n.keyboard .keyboard-key {\n padding-top: 0.133333rem;\n width: 96%;\n margin: 0 auto;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n\n.keyboard .button {\n font-size: 0.373333rem!important;\n background-color: #fefefe;\n border: none!important;\n height: 0.96rem!important;\n text-align: center;\n line-height: 0.986667rem;\n margin: 0.133333rem 0.08rem!important;\n box-shadow: 0 0.013333rem 0.013333rem #989898;\n font-weight: bold;\n}\n\n.keyboard .keyboard-custom-number,\n.keyboard .keyboard-number {\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n margin: 0;\n padding: 0;\n vertical-align: bottom;\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.keyboard .pos-mid-button-num {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1;\n flex: 1;\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n margin: 0.146667rem;\n}\n\n.keyboard .pos-mid-button-num .buttonnum {\n font-size: 0.373333rem!important;\n background-color: #fefefe;\n border: none!important;\n height: 1rem!important;\n text-align: center;\n line-height: 0.986667rem;\n margin: 0.08rem!important;\n box-shadow: 0 0.013333rem 0.013333rem #989898;\n font-weight: bold;\n border-radius: 0.133333rem;\n width: 30%;\n}\n\n.keyboard .pos-mid-button-num .buttonnum:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .pos-number-button-num {\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n margin: 0.146667rem;\n}\n\n.keyboard .pos-number-button-num .buttonnum {\n font-size: 0.373333rem!important;\n background-color: #fefefe;\n border: none!important;\n height: 1rem!important;\n text-align: center;\n line-height: 0.986667rem;\n margin: 0.08rem!important;\n box-shadow: 0 0.013333rem 0.013333rem #989898;\n font-weight: bold;\n border-radius: 0.133333rem;\n width: 30%;\n}\n\n.keyboard .pos-number-button-num .buttonnum:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .pos-right-button-num {\n display: -ms-flexbox;\n display: flex;\n width: 15%;\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n margin: 0.146667rem;\n}\n\n.keyboard .pos-right-button-num .buttonright {\n width: 100%;\n font-size: 0.373333rem!important;\n background-color: #fefefe;\n border: none!important;\n height: 2.16rem!important;\n text-align: center;\n line-height: 2.16rem;\n margin: 0.08rem!important;\n -webkit-box-shadow: 0 0.013333rem 0.013333rem #989898;\n box-shadow: 0 0.013333rem 0.013333rem #989898;\n font-weight: bold;\n border-radius: 0.133333rem;\n}\n\n.keyboard .pos-right-button-num .buttonright:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .pos-left-button-num {\n display: -ms-flexbox;\n display: flex;\n width: 15%;\n height: 93%;\n -ms-flex-direction: row;\n flex-direction: row;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n margin: 0.146667rem;\n}\n\n.keyboard .pos-left-button-num .buttoncharacter {\n width: 100%;\n font-size: 0.373333rem!important;\n background-color: #fefefe;\n border: none!important;\n height: 1rem;\n text-align: center;\n line-height: 1rem;\n margin: 0.08rem!important;\n -webkit-box-shadow: 0 0.013333rem 0.013333rem #989898;\n box-shadow: 0 0.013333rem 0.013333rem #989898;\n font-weight: bold;\n border-radius: 0.133333rem;\n}\n\n.keyboard .pos-left-button-num .buttoncharacter:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .pos-left-button-num .buttoncharacter-1 {\n height: 97%;\n line-height: 4.48rem;\n}\n\n.keyboard .pos-left-button-num .buttoncharacter-2 {\n height: 46%;\n line-height: 2.15rem;\n}\n\n.keyboard .pos-left-button-num .buttoncharacter-3 {\n height: 29.5%;\n line-height: 1.38rem;\n}\n\n.keyboard .pos-left-button-num .buttoncharacter-4 {\n height: 21.1%;\n line-height: 1rem;\n}\n\n.keyboard .hide-button {\n display: none;\n}\n\n.keyboard .button-num {\n width: 33.33%;\n height: 0.64rem;\n border: 0;\n border: 0.013333rem solid #000000;\n font-size: 0.2rem;\n cursor: pointer;\n}\n\n.keyboard .button-num:hover {\n position: relative;\n cursor: pointer;\n}\n\n.keyboard .button-num:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .button-num-two {\n width: 100%;\n height: 1.28rem;\n border: 0;\n border: 0.013333rem solid #000000;\n font-size: 0.2rem;\n cursor: pointer;\n}\n\n.keyboard .button-num-two:hover {\n position: relative;\n cursor: pointer;\n}\n\n.keyboard .button-num-two:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .keyboard-letter {\n width: 100%;\n margin: 0;\n padding: 0;\n}\n\n.keyboard .keyboard-letter .line-1,\n.keyboard .keyboard-letter .line-2,\n.keyboard .keyboard-letter .line-3,\n.keyboard .keyboard-letter .line-4 {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: row;\n flex-direction: row;\n}\n\n.keyboard .keyboard-letter .line-1 .button-num-btn {\n width: 10%;\n height: 0.826667rem;\n border: 0.013333rem solid #000000;\n font-size: 0.293333rem;\n margin: 0.066667rem 0.08rem;\n border-radius: 0.133333rem;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-1 .button-num-btn:hover {\n position: relative;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-1 .button-num-btn:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .keyboard-letter .line-2 {\n width: 90%;\n margin: 0 auto;\n}\n\n.keyboard .keyboard-letter .line-2 .button-num-btn {\n width: 10%;\n height: 0.826667rem;\n border: 0.013333rem solid #000000;\n font-size: 0.293333rem;\n margin: 0.066667rem 0.08rem;\n border-radius: 0.133333rem;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-2 .button-num-btn:hover {\n position: relative;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-2 .button-num-btn:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .keyboard-letter .line-3 {\n width: 100%;\n}\n\n.keyboard .keyboard-letter .line-3 .button-num-btn {\n width: 10%;\n height: 0.826667rem;\n border: 0.013333rem solid #000000;\n font-size: 0.293333rem;\n margin: 0.066667rem 0.08rem;\n border-radius: 0.133333rem;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-3 .button-num-btn:hover {\n position: relative;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-3 .button-num-btn:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .keyboard-letter .line-3 .button:nth-child(1) {\n width: 16%!important;\n}\n\n.keyboard .keyboard-letter .line-3 .button:nth-last-child(1) {\n width: 16%!important;\n}\n\n.keyboard .keyboard-letter .line-3 .arrowtop {\n position: absolute;\n width: 0;\n height: 0;\n border-left: 0.133333rem solid transparent;\n border-right: 0.133333rem solid transparent;\n border-bottom: 0.133333rem solid black;\n left: 50%;\n top: 20%;\n transform: translate(-50%);\n}\n\n.keyboard .keyboard-letter .line-3 .arrowbot {\n position: absolute;\n width: 0.08rem;\n height: 0.186667rem;\n background: #000;\n left: 50%;\n top: 42%;\n transform: translate(-50%);\n}\n\n.keyboard .keyboard-letter .line-4 .button-num-btn,\n.keyboard .keyboard-letter .line-4 .button-num-two {\n height: 0.826667rem;\n border: 0.013333rem solid #000000;\n font-size: 0.293333rem;\n margin: 0.066667rem 0.08rem;\n border-radius: 0.133333rem;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-4 .button-num-btn:hover,\n.keyboard .keyboard-letter .line-4 .button-num-two:hover {\n position: relative;\n cursor: pointer;\n}\n\n.keyboard .keyboard-letter .line-4 .button-num-btn:active,\n.keyboard .keyboard-letter .line-4 .button-num-two:active {\n top: 0.013333rem;\n left: 0.013333rem;\n background-color: #c3c3c3;\n}\n\n.keyboard .keyboard-letter .line-4 .specialkey {\n width: 100%!important;\n}\n\n.keyboard .keyboard-letter .line-4 .button-num-btn {\n width: 13%;\n}\n\n.keyboard .keyboard-letter .line-4 .button-num-two {\n width: 70%;\n}\n\n.keyboard .input-box {\n font-size: 0.466667rem;\n font-weight: bold;\n height: 0.533333rem;\n border-bottom: 0.013333rem solid #aaa;\n padding: 0.133333rem 0.2rem;\n text-align: right;\n width: 90%;\n}\n\n.keyboard .only-enter {\n background: #157ef7!important;\n color: #fff!important;\n}\n\n.keyboard .del {\n position: relative;\n}\n\n.keyboard .del img.delico {\n width: 100%;\n position: absolute;\n top: 50%;\n left: 50%;\n}\n\n.keyboard .del img.englishdelico {\n transform: translate(-50%, -50%) scale(0.5);\n}\n\n.keyboard .del img.customNumdelico {\n transform: translate(-50%, -50%) scale(0.4);\n}\n\n.keyboard .del img.numberdelico {\n transform: translate(-50%, -50%) scale(0.25);\n}\n\n.keyboard .iphonex-bottom {\n padding-bottom: constant(safe-area-inset-bottom);\n padding-bottom: env(safe-area-inset-bottom);\n}"],"sourceRoot":""}]); // exports /***/ }), /* 4 */ /***/ (function(module, exports) { /* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ // css base code, injected by the css-loader module.exports = function(useSourceMap) { var list = []; // return the list of modules as css string list.toString = function toString() { return this.map(function (item) { var content = cssWithMappingToString(item, useSourceMap); if(item[2]) { return "@media " + item[2] + "{" + content + "}"; } else { return content; } }).join(""); }; // import a list of modules into the list list.i = function(modules, mediaQuery) { if(typeof modules === "string") modules = [[null, modules, ""]]; var alreadyImportedModules = {}; for(var i = 0; i < this.length; i++) { var id = this[i][0]; if(typeof id === "number") alreadyImportedModules[id] = true; } for(i = 0; i < modules.length; i++) { var item = modules[i]; // skip already imported module // this implementation is not 100% perfect for weird media query combinations // when a module is imported multiple times with different media queries. // I hope this will never occur (Hey this way we have smaller bundles) if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) { if(mediaQuery && !item[2]) { item[2] = mediaQuery; } else if(mediaQuery) { item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"; } list.push(item); } } }; return list; }; function cssWithMappingToString(item, useSourceMap) { var content = item[1] || ''; var cssMapping = item[3]; if (!cssMapping) { return content; } if (useSourceMap && typeof btoa === 'function') { var sourceMapping = toComment(cssMapping); var sourceURLs = cssMapping.sources.map(function (source) { return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */' }); return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); } return [content].join('\n'); } // Adapted from convert-source-map (MIT) function toComment(sourceMap) { // eslint-disable-next-line no-undef var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; return '/*# ' + data + ' */'; } /***/ }), /* 5 */ /***/ (function(module, exports) { // this module is a runtime utility for cleaner component module output and will // be included in the final webpack user bundle module.exports = function normalizeComponent ( rawScriptExports, compiledTemplate, scopeId, cssModules ) { var esModule var scriptExports = rawScriptExports = rawScriptExports || {} // ES6 modules interop var type = typeof rawScriptExports.default if (type === 'object' || type === 'function') { esModule = rawScriptExports scriptExports = rawScriptExports.default } // Vue.extend constructor export interop var options = typeof scriptExports === 'function' ? scriptExports.options : scriptExports // render functions if (compiledTemplate) { options.render = compiledTemplate.render options.staticRenderFns = compiledTemplate.staticRenderFns } // scopedId if (scopeId) { options._scopeId = scopeId } // inject cssModules if (cssModules) { var computed = Object.create(options.computed || null) Object.keys(cssModules).forEach(function (key) { var module = cssModules[key] computed[key] = function () { return module } }) options.computed = computed } return { esModule: esModule, exports: scriptExports, options: options } } /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; return (_vm.isCallUp) ? _c('div', { ref: "keyboard", staticClass: "keyboard", class: { 'iphonex-bottom': _vm.isIosSystem, 'keyboard-animation-up': _vm.animation, 'keyboard-animation-down': !_vm.animation }, on: { "click": function($event) { $event.stopPropagation(); return _vm.keyboardClick.apply(null, arguments) } } }, [_c('div', { staticClass: "keyboard-key" }, [(_vm.keyboardType === 'english') ? _c('div', { staticClass: "keyboard-letter" }, [_vm._l((_vm.englishArrList), function(item, index) { return [_c('div', { key: index, class: ("line-" + (index + 1)) }, [_vm._l((_vm.englishArrList[index]), function(items, indexs) { return [_c('div', {