diff --git a/lib/rules/no-deprecated-v-on-number-modifiers.js b/lib/rules/no-deprecated-v-on-number-modifiers.js
index c9794c13e..971ffdc07 100644
--- a/lib/rules/no-deprecated-v-on-number-modifiers.js
+++ b/lib/rules/no-deprecated-v-on-number-modifiers.js
@@ -9,7 +9,7 @@
// ------------------------------------------------------------------------------
const utils = require('../utils')
-const keyCodeToKey = require('../utils/keycode-to-key.json')
+const keyCodeToKey = require('../utils/keycode-to-key')
// ------------------------------------------------------------------------------
// Rule Definition
@@ -48,7 +48,7 @@ module.exports = {
const key = keyCodeToKey[keyCodes]
if (!key) return
- return fixer.replaceTextRange(modifier.range, `${key}`)
+ return fixer.replaceText(modifier, `${key}`)
}
})
}
diff --git a/lib/utils/keycode-to-key.js b/lib/utils/keycode-to-key.js
new file mode 100644
index 000000000..6f20a93b2
--- /dev/null
+++ b/lib/utils/keycode-to-key.js
@@ -0,0 +1,98 @@
+// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values
+module.exports = {
+ '8': 'backspace',
+ '9': 'tab',
+ '13': 'enter',
+ '16': 'shift',
+ '17': 'ctrl',
+ '18': 'alt',
+ '19': 'pause', // windows
+ '20': 'caps-lock',
+ '27': 'escape',
+ '32': 'space', // Vue.js specially key name.
+ '33': 'page-up',
+ '34': 'page-down',
+ '35': 'end',
+ '36': 'home',
+ '37': 'arrow-left',
+ '38': 'arrow-up',
+ '39': 'arrow-right',
+ '40': 'arrow-down',
+ '45': 'insert', // windows
+ '46': 'delete',
+
+ // If mistakenly use it in Vue.js 2.x, it will be irreversibly broken. Therefore, it will not be autofix.
+ // '48': '0',
+ // '49': '1',
+ // '50': '2',
+ // '51': '3',
+ // '52': '4',
+ // '53': '5',
+ // '54': '6',
+ // '55': '7',
+ // '56': '8',
+ // '57': '9',
+
+ '65': 'a',
+ '66': 'b',
+ '67': 'c',
+ '68': 'd',
+ '69': 'e',
+ '70': 'f',
+ '71': 'g',
+ '72': 'h',
+ '73': 'i',
+ '74': 'j',
+ '75': 'k',
+ '76': 'l',
+ '77': 'm',
+ '78': 'n',
+ '79': 'o',
+ '80': 'p',
+ '81': 'q',
+ '82': 'r',
+ '83': 's',
+ '84': 't',
+ '85': 'u',
+ '86': 'v',
+ '87': 'w',
+ '88': 'x',
+ '89': 'y',
+ '90': 'z',
+
+ // The key value may change depending on the OS.
+ // '91': 'meta' ,// Win: 'os'?
+ // '92': 'meta', // Win: 'meta' Mac: ?
+ // '93': 'meta', // Win: 'context-menu' Mac: 'meta'
+
+ // Cannot determine numpad with key.
+ // '96': 'numpad-0',
+ // '97': 'numpad-1',
+ // '98': 'numpad-2',
+ // '99': 'numpad-3',
+ // '100': 'numpad-4',
+ // '101': 'numpad-5',
+ // '102': 'numpad-6',
+ // '103': 'numpad-7',
+ // '104': 'numpad-8',
+ // '105': 'numpad-9',
+ // '106': 'multiply',
+ // '107': 'add',
+ // '109': 'subtract',
+ // '110': 'decimal',
+ // '111': 'divide',
+ '112': 'f1',
+ '113': 'f2',
+ '114': 'f3',
+ '115': 'f4',
+ '116': 'f5',
+ '117': 'f6',
+ '118': 'f7',
+ '119': 'f8',
+ '120': 'f9',
+ '121': 'f10',
+ '122': 'f11',
+ '123': 'f12',
+ '144': 'num-lock',
+ '145': 'scroll-lock'
+}
diff --git a/lib/utils/keycode-to-key.json b/lib/utils/keycode-to-key.json
deleted file mode 100644
index 43f480302..000000000
--- a/lib/utils/keycode-to-key.json
+++ /dev/null
@@ -1,100 +0,0 @@
-{
- "8": "backspace",
- "9": "tab",
- "13": "enter",
- "16": "shift",
- "17": "ctrl",
- "18": "alt",
- "19": "pause-break",
- "20": "caps-lock",
- "27": "escape",
- "33": "page-up",
- "34": "page-down",
- "35": "end",
- "36": "home",
- "37": "left-arrow",
- "38": "up-arrow",
- "39": "right-arrow",
- "40": "down-arrow",
- "45": "insert",
- "46": "delete",
- "48": "0",
- "49": "1",
- "50": "2",
- "51": "3",
- "52": "4",
- "53": "5",
- "54": "6",
- "55": "7",
- "56": "8",
- "57": "9",
- "65": "a",
- "66": "b",
- "67": "c",
- "68": "d",
- "69": "e",
- "70": "f",
- "71": "g",
- "72": "h",
- "73": "i",
- "74": "j",
- "75": "k",
- "76": "l",
- "77": "m",
- "78": "n",
- "79": "o",
- "80": "p",
- "81": "q",
- "82": "r",
- "83": "s",
- "84": "t",
- "85": "u",
- "86": "v",
- "87": "w",
- "88": "x",
- "89": "y",
- "90": "z",
- "91": "left-window-key",
- "92": "right-window-key",
- "93": "select-key",
- "96": "numpad-0",
- "97": "numpad-1",
- "98": "numpad-2",
- "99": "numpad-3",
- "100": "numpad-4",
- "101": "numpad-5",
- "102": "numpad-6",
- "103": "numpad-7",
- "104": "numpad-8",
- "105": "numpad-9",
- "106": "multiply",
- "107": "add",
- "109": "subtract",
- "110": "decimal-point",
- "111": "divide",
- "112": "f1",
- "113": "f2",
- "114": "f3",
- "115": "f4",
- "116": "f5",
- "117": "f6",
- "118": "f7",
- "119": "f8",
- "120": "f9",
- "121": "f10",
- "122": "f11",
- "123": "f12",
- "144": "num-lock",
- "145": "scroll-lock",
- "186": "semi-colon",
- "187": "equal-sign",
- "188": "comma",
- "189": "dash",
- "190": "period",
- "191": "forward-slash",
- "192": "grave-accent",
- "219": "open-bracket",
- "220": "back-slash",
- "221": "close-braket",
- "222": "single-quote"
-}
diff --git a/tests/lib/rules/no-deprecated-v-on-number-modifiers.js b/tests/lib/rules/no-deprecated-v-on-number-modifiers.js
index 8c6d72698..f2e119069 100644
--- a/tests/lib/rules/no-deprecated-v-on-number-modifiers.js
+++ b/tests/lib/rules/no-deprecated-v-on-number-modifiers.js
@@ -169,6 +169,55 @@ ruleTester.run('no-deprecated-v-bind-sync', rule, {
code: "",
output: null,
errors: ["'KeyboardEvent.keyCode' modifier on 'v-on' directive is deprecated. Using 'KeyboardEvent.key' instead."]
+ },
+ {
+ filename: 'test.vue',
+ code: `
+
+
+
+
+
+
+
+
+ `,
+ output: null,
+ errors: [
+ "'KeyboardEvent.keyCode' modifier on 'v-on' directive is deprecated. Using 'KeyboardEvent.key' instead.",
+ "'KeyboardEvent.keyCode' modifier on 'v-on' directive is deprecated. Using 'KeyboardEvent.key' instead.",
+ "'KeyboardEvent.keyCode' modifier on 'v-on' directive is deprecated. Using 'KeyboardEvent.key' instead.",
+ "'KeyboardEvent.keyCode' modifier on 'v-on' directive is deprecated. Using 'KeyboardEvent.key' instead.",
+ "'KeyboardEvent.keyCode' modifier on 'v-on' directive is deprecated. Using 'KeyboardEvent.key' instead.",
+ "'KeyboardEvent.keyCode' modifier on 'v-on' directive is deprecated. Using 'KeyboardEvent.key' instead.",
+ "'KeyboardEvent.keyCode' modifier on 'v-on' directive is deprecated. Using 'KeyboardEvent.key' instead."
+ ]
+ },
+ {
+ filename: 'test.vue',
+ code: `
+
+
+
+
+
+
+ `,
+ output: `
+
+
+
+
+
+
+ `,
+ errors: [
+ "'KeyboardEvent.keyCode' modifier on 'v-on' directive is deprecated. Using 'KeyboardEvent.key' instead.",
+ "'KeyboardEvent.keyCode' modifier on 'v-on' directive is deprecated. Using 'KeyboardEvent.key' instead.",
+ "'KeyboardEvent.keyCode' modifier on 'v-on' directive is deprecated. Using 'KeyboardEvent.key' instead.",
+ "'KeyboardEvent.keyCode' modifier on 'v-on' directive is deprecated. Using 'KeyboardEvent.key' instead.",
+ "'KeyboardEvent.keyCode' modifier on 'v-on' directive is deprecated. Using 'KeyboardEvent.key' instead."
+ ]
}
]
})