@asamuzakjp/dom-selector
Advanced tools
Comparing version 0.15.3 to 0.15.4
@@ -45,3 +45,3 @@ { | ||
}, | ||
"version": "0.15.3" | ||
"version": "0.15.4" | ||
} |
@@ -29,4 +29,4 @@ /** | ||
const HTML_INTERACT = /^d(?:etails|ialog)$/; | ||
const INPUT_PLACEHOLDER = /^(?:(?:emai|te|ur)l|number|password|search|text)$/; | ||
const INPUT_RANGE = /(?:(?:rang|tim)e|date(?:time-local)?|month|number|week)$/; | ||
const INPUT_TEXT = /^(?:(?:emai|te|ur)l|password|search|text)$/; | ||
const PSEUDO_FUNC = /^(?:(?:ha|i)s|not|where)$/; | ||
@@ -1162,3 +1162,3 @@ const PSEUDO_NTH = /^nth-(?:last-)?(?:child|of-type)$/; | ||
isCustomElementName(localName)) { | ||
if (node.hasAttribute('disabled')) { | ||
if (node.disabled || node.hasAttribute('disabled')) { | ||
matched.push(node); | ||
@@ -1185,3 +1185,3 @@ } else { | ||
isCustomElementName(localName)) && | ||
!node.hasAttribute('disabled')) { | ||
!(node.disabled && node.hasAttribute('disabled'))) { | ||
matched.push(node); | ||
@@ -1193,6 +1193,24 @@ } | ||
if (/^(?:input|textarea)$/.test(localName)) { | ||
if (node.readonly || node.hasAttribute('readonly') || | ||
node.disabled || node.hasAttribute('disabled')) { | ||
matched.push(node); | ||
let targetNode; | ||
if (localName === 'input') { | ||
if (node.hasAttribute('type')) { | ||
const inputType = node.getAttribute('type'); | ||
if (INPUT_TEXT.test(inputType)) { | ||
targetNode = node; | ||
} else if (INPUT_RANGE.test(inputType) && | ||
inputType !== 'range') { | ||
targetNode = node; | ||
} | ||
} else { | ||
targetNode = node; | ||
} | ||
} else if (localName === 'textarea') { | ||
targetNode = node; | ||
} | ||
if (targetNode) { | ||
if (node.readonly || node.hasAttribute('readonly') || | ||
node.disabled || node.hasAttribute('disabled')) { | ||
matched.push(node); | ||
} | ||
} | ||
} else if (!isContentEditable(node)) { | ||
@@ -1205,6 +1223,24 @@ matched.push(node); | ||
if (/^(?:input|textarea)$/.test(localName)) { | ||
if (!(node.readonly || node.hasAttribute('readonly') || | ||
node.disabled || node.hasAttribute('disabled'))) { | ||
matched.push(node); | ||
let targetNode; | ||
if (localName === 'input') { | ||
if (node.hasAttribute('type')) { | ||
const inputType = node.getAttribute('type'); | ||
if (INPUT_TEXT.test(inputType)) { | ||
targetNode = node; | ||
} else if (INPUT_RANGE.test(inputType) && | ||
inputType !== 'range') { | ||
targetNode = node; | ||
} | ||
} else { | ||
targetNode = node; | ||
} | ||
} else if (localName === 'textarea') { | ||
targetNode = node; | ||
} | ||
if (targetNode) { | ||
if (!(node.readonly || node.hasAttribute('readonly') || | ||
node.disabled || node.hasAttribute('disabled'))) { | ||
matched.push(node); | ||
} | ||
} | ||
} else if (isContentEditable(node)) { | ||
@@ -1216,7 +1252,16 @@ matched.push(node); | ||
case 'placeholder-shown': { | ||
if (((localName === 'input' && | ||
(!node.hasAttribute('type') || | ||
INPUT_PLACEHOLDER.test(node.getAttribute('type')))) || | ||
localName === 'textarea') && | ||
node.hasAttribute('placeholder') && | ||
let targetNode; | ||
if (localName === 'input') { | ||
if (node.hasAttribute('type')) { | ||
if (INPUT_TEXT.test(node.getAttribute('type')) || | ||
node.getAttribute('type') === 'number') { | ||
targetNode = node; | ||
} | ||
} else { | ||
targetNode = node; | ||
} | ||
} else if (localName === 'textarea') { | ||
targetNode = node; | ||
} | ||
if (targetNode && node.hasAttribute('placeholder') && | ||
node.getAttribute('placeholder').trim().length && | ||
@@ -1404,3 +1449,21 @@ node.value === '') { | ||
case 'required': { | ||
if (HTML_FORM_INPUT.test(localName) && node.required) { | ||
let targetNode; | ||
if (localName === 'input') { | ||
if (node.hasAttribute('type')) { | ||
const inputType = node.getAttribute('type'); | ||
if (INPUT_TEXT.test(inputType)) { | ||
targetNode = node; | ||
} else if (INPUT_RANGE.test(inputType) && inputType !== 'range') { | ||
targetNode = node; | ||
} else if (inputType === 'checkbox' || inputType === 'radio' || | ||
inputType === 'file') { | ||
targetNode = node; | ||
} | ||
} else { | ||
targetNode = node; | ||
} | ||
} else if (/^(?:select|textarea)$/.test(localName)) { | ||
targetNode = node; | ||
} | ||
if (targetNode && (node.required || node.hasAttribute('required'))) { | ||
matched.push(node); | ||
@@ -1407,0 +1470,0 @@ } |
72936
2212