From 0289e3b7be414a8e3a63963821db73306d835d71 Mon Sep 17 00:00:00 2001 From: Nikolai Shabalin Date: Wed, 17 Jan 2024 20:45:38 +0300 Subject: [PATCH 1/2] Adds new rule htmlacademy/req-submit-button --- rules/req-submit-button/README.md | 0 rules/req-submit-button/index.js | 34 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 rules/req-submit-button/README.md create mode 100644 rules/req-submit-button/index.js diff --git a/rules/req-submit-button/README.md b/rules/req-submit-button/README.md new file mode 100644 index 0000000..e69de29 diff --git a/rules/req-submit-button/index.js b/rules/req-submit-button/index.js new file mode 100644 index 0000000..533da65 --- /dev/null +++ b/rules/req-submit-button/index.js @@ -0,0 +1,34 @@ +'use strict'; +const { is_tag_node, attribute_has_value } = require('@linthtml/dom-utils'); + +const formSubmitter = ['button', 'input']; + +const findSubmitters = (node) => { + let submitters = []; + if (is_tag_node(node) && formSubmitter.includes(node.name) && attribute_has_value(node, 'type', 'submit')) { + submitters.push(node); + } + if (node.children) { + for (const child of node.children) { + submitters = submitters.concat(findSubmitters(child)); + } + } + return submitters; +}; + +module.exports = { + name: 'htmlacademy/req-submit-button', + // eslint-disable-next-line camelcase + lint(node, rule_config, {report}) { + if (is_tag_node(node) && node.name === 'form') { + const submitters = findSubmitters(node); + + if(submitters.length === 0) { + report({ + position: node.loc, + message: 'Submitter inside form must have type="submit".', + }); + } + } + } +}; From a4c64141a3af3387a4d5d4c14601e3902e188b08 Mon Sep 17 00:00:00 2001 From: Nikolai Shabalin Date: Wed, 17 Jan 2024 20:55:01 +0300 Subject: [PATCH 2/2] Adds fixture --- rules/req-submit-button/fixture/success.html | 50 ++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 rules/req-submit-button/fixture/success.html diff --git a/rules/req-submit-button/fixture/success.html b/rules/req-submit-button/fixture/success.html new file mode 100644 index 0000000..dac16f7 --- /dev/null +++ b/rules/req-submit-button/fixture/success.html @@ -0,0 +1,50 @@ + + + + + + HTML Academy: Девайс + + + +
+ + +
+ +
+ +
+ +
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ + + +