Socket
Socket
Sign inDemoInstall

@angular-eslint/eslint-plugin-template

Package Overview
Dependencies
131
Maintainers
1
Versions
653
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @angular-eslint/eslint-plugin-template

ESLint plugin for Angular Templates


Version published
Weekly downloads
1.3M
decreased by-18.64%
Maintainers
1
Install size
6.06 MB
Created
Weekly downloads
 

Package description

What is @angular-eslint/eslint-plugin-template?

The @angular-eslint/eslint-plugin-template package is an ESLint plugin that provides linting rules for Angular templates. It helps developers to follow best practices and avoid common mistakes in their Angular template syntax by analyzing the templates and providing feedback.

What are @angular-eslint/eslint-plugin-template's main functionalities?

Banana in a box

This rule ensures that you are using the correct syntax for two-way data binding in Angular templates. The correct syntax is [(ngModel)], and the rule will report an error if it finds something like [ngModel] or (ngModel) instead.

"[(ngModel)]": "off"

Conditional complexity

This rule allows you to specify the maximum complexity that any *ngIf structural directive should have in your templates. It helps in maintaining readability and manageability of the template logic.

"template/conditional-complexity": ["error", { "maxComplexity": 5 }]"

Mouse events have key events

This rule ensures that mouse events like (click) are accompanied by corresponding keyboard events like (keyup) to maintain accessibility for users who rely on keyboard navigation.

"template/mouse-events-have-key-events": "error"

No any

This rule warns you when you use the 'any' type in your templates. Using 'any' can potentially bypass compile-time type checking, so it's generally a good practice to avoid it.

"template/no-any": "warn"

No autocompletion

This rule checks for the use of the 'autofocus' attribute in the template and reports it as an error. Autofocus can cause accessibility issues for users who rely on assistive technologies.

"template/no-autofocus": "error"

Other packages similar to @angular-eslint/eslint-plugin-template

Changelog

Source

17.3.0 (2024-03-15)

🚀 Features

  • eslint-plugin: add consistent-component-styles rule (#1710)
  • eslint-plugin: add prefer-standalone rule for checking all components, directives and pipes (#1627)

🩹 Fixes

  • update dependency tmp to v0.2.3 (#1734)
  • migrate to nx 18 (#1732)
  • update dependency ignore to v5.3.1 (#1733)
  • update dependency eslint to v8.57.0 (#1739)
  • update typescript-eslint packages to v7 (major) (#1742)
  • update dependency @angular/compiler to v17.3.0 (#1713)
  • output declaration files in all packages (#1724)
  • eslint-plugin-template: [eqeqeq] calculate offset to find true absolute source span (#1709)

❤️ Thank You

  • Christian Svensson
  • Dave @reduckted
  • James Henry @JamesHenry
  • Joey Jacobs @joeyj
  • Luis Estevez @estevezluis

Readme

Source

@angular-eslint/eslint-plugin-template

Premade configs

Rules

Possible problems

Key

  • :white_check_mark: = recommended
  • :wrench: = fixable
  • :bulb: = has suggestions
  • :accessibility: = included in accessibility preset
RuleDescription:white_check_mark::wrench::bulb::accessibility:
no-duplicate-attributesEnsures that there are no duplicate input properties or output event listeners:bulb:

Suggestions

Key

  • :white_check_mark: = recommended
  • :wrench: = fixable
  • :bulb: = has suggestions
  • :accessibility: = included in accessibility preset
RuleDescription:white_check_mark::wrench::bulb::accessibility:
alt-text[Accessibility] Enforces alternate text for elements which require the alt, aria-label, aria-labelledby attributes.:accessibility:
banana-in-boxEnsures that the two-way data binding syntax is correct:white_check_mark::wrench:
button-has-typeEnsures that a button has a valid type specified
click-events-have-key-events[Accessibility] Ensures that the click event is accompanied with at least one key event keyup, keydown or keypress.:accessibility:
conditional-complexityThe conditional complexity should not exceed a rational limit
cyclomatic-complexityChecks cyclomatic complexity against a specified limit. It is a quantitative measure of the number of linearly independent paths through a program's source code
elements-content[Accessibility] Ensures that the heading, anchor and button elements have content in it:accessibility:
eqeqeqRequires === and !== in place of == and !=:white_check_mark::wrench::bulb:
i18nEnsures following best practices for i18n. Checks for missing i18n attributes on elements and attributes containing texts. Can also check for texts without i18n attribute, elements that do not use custom ID (@@) feature and duplicate custom IDs:wrench::bulb:
interactive-supports-focus[Accessibility] Ensures that elements with interactive handlers like (click) are focusable.:accessibility:
label-has-associated-control[Accessibility] Ensures that a label element/component is associated with a form element:accessibility:
mouse-events-have-key-events[Accessibility] Ensures that the mouse events mouseout and mouseover are accompanied by focus and blur events respectively. Coding for the keyboard is important for users with physical disabilities who cannot use a mouse, AT compatibility, and screenreader users. See more at https://www.w3.org/WAI/WCAG21/Understanding/keyboard:accessibility:
no-anyThe use of "$any" nullifies the compile-time benefits of Angular's type system:bulb:
no-autofocus[Accessibility] Ensures that the autofocus attribute is not used:wrench::accessibility:
no-call-expressionDisallows calling expressions in templates, except for output handlers
no-distracting-elements[Accessibility] Enforces that no distracting elements are used:wrench::accessibility:
no-inline-stylesDisallows the use of inline styles in HTML templates
no-interpolation-in-attributesEnsures that property-binding is used instead of interpolation in attributes.
no-negated-asyncEnsures that async pipe results, as well as values used with the async pipe, are not negated:white_check_mark::bulb:
no-positive-tabindexEnsures that the tabindex attribute is not positive:bulb:
prefer-control-flowEnsures that the built-in control flow is used.
prefer-ngsrcEnsures ngSrc is used instead of src for img elements
role-has-required-aria[Accessibility] Ensures elements with ARIA roles have all required properties for that role.:bulb::accessibility:
table-scope[Accessibility] Ensures that the scope attribute is only used on the <th> element:wrench::accessibility:
use-track-by-functionEnsures trackBy function is used
valid-aria[Accessibility] Ensures that correct ARIA attributes and respective values are used:bulb::accessibility:

Layout

Key

  • :white_check_mark: = recommended
  • :wrench: = fixable
  • :bulb: = has suggestions
  • :accessibility: = included in accessibility preset
RuleDescription:white_check_mark::wrench::bulb::accessibility:
attributes-orderEnsures that HTML attributes and Angular bindings are sorted based on an expected order:wrench:
prefer-self-closing-tagsEnsures that self-closing tags are used for elements with a closing tag but no content.:wrench:

FAQs

Last updated on 15 Mar 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc