@atlaskit/eslint-plugin-design-system 13.4.0 → 13.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +1 -0
- package/dist/cjs/ast-nodes/object.js +0 -2
- package/dist/cjs/presets/all-flat.codegen.js +2 -1
- package/dist/cjs/presets/all.codegen.js +2 -1
- package/dist/cjs/presets/recommended-flat.codegen.js +2 -1
- package/dist/cjs/presets/recommended.codegen.js +2 -1
- package/dist/cjs/rules/consistent-css-prop-usage/index.js +0 -2
- package/dist/cjs/rules/ensure-design-token-usage/color.js +0 -2
- package/dist/cjs/rules/ensure-design-token-usage/index.js +0 -2
- package/dist/cjs/rules/ensure-design-token-usage/spacing.js +1 -1
- package/dist/cjs/rules/ensure-design-token-usage/utils.js +0 -2
- package/dist/cjs/rules/ensure-icon-color/index.js +0 -2
- package/dist/cjs/rules/index.codegen.js +3 -1
- package/dist/cjs/rules/no-boolean-autofocus-on-modal-dialog/index.js +0 -2
- package/dist/cjs/rules/no-custom-icons/index.js +0 -2
- package/dist/cjs/rules/no-deprecated-design-token-usage/index.js +0 -2
- package/dist/cjs/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind-all.js +1 -1
- package/dist/cjs/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind.js +1 -1
- package/dist/cjs/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-jsx-attribute.js +0 -2
- package/dist/cjs/rules/no-html-anchor/node-types/jsx-element/index.js +1 -1
- package/dist/cjs/rules/no-html-button/node-types/jsx-element/index.js +0 -2
- package/dist/cjs/rules/no-margin/index.js +0 -2
- package/dist/cjs/rules/no-nested-styles/index.js +0 -2
- package/dist/cjs/rules/no-physical-properties/index.js +0 -2
- package/dist/cjs/rules/no-unsafe-design-token-usage/index.js +1 -1
- package/dist/cjs/rules/use-button-group-label/index.js +0 -2
- package/dist/cjs/rules/use-datetime-picker-calendar-button/index.js +0 -2
- package/dist/cjs/rules/use-drawer-label/index.js +0 -2
- package/dist/cjs/rules/use-heading-level-in-spotlight-card/index.js +0 -2
- package/dist/cjs/rules/use-href-in-link-item/index.js +0 -2
- package/dist/cjs/rules/use-href-in-link-item/utils.js +0 -2
- package/dist/cjs/rules/use-menu-section-title/index.js +0 -2
- package/dist/cjs/rules/use-modal-dialog-close-button/index.js +25 -13
- package/dist/cjs/rules/use-onboarding-spotlight-label/index.js +0 -2
- package/dist/cjs/rules/use-popup-label/index.js +0 -2
- package/dist/cjs/rules/use-should-render-to-parent/index.js +113 -0
- package/dist/cjs/rules/use-tag-group-label/index.js +0 -2
- package/dist/cjs/rules/use-visually-hidden/fix-jsx.js +0 -2
- package/dist/cjs/rules/use-visually-hidden/fix-vanilla.js +0 -2
- package/dist/cjs/rules/use-visually-hidden/index.js +0 -2
- package/dist/cjs/rules/use-visually-hidden/utils.js +0 -3
- package/dist/cjs/rules/utils/create-no-tagged-template-expression-rule/get-tagged-template-expression-offset.js +0 -1
- package/dist/cjs/rules/utils/create-no-tagged-template-expression-rule/index.js +0 -4
- package/dist/cjs/rules/utils/create-no-tagged-template-expression-rule/to-arguments.js +0 -1
- package/dist/cjs/rules/utils/error-boundary.js +0 -2
- package/dist/cjs/rules/utils/find-in-parent.js +0 -2
- package/dist/cjs/rules/utils/get-import-node-by-source.js +0 -2
- package/dist/cjs/rules/utils/get-is-exception.js +0 -2
- package/dist/cjs/rules/utils/is-node.js +0 -2
- package/dist/es2019/ast-nodes/object.js +0 -2
- package/dist/es2019/presets/all-flat.codegen.js +2 -1
- package/dist/es2019/presets/all.codegen.js +2 -1
- package/dist/es2019/presets/recommended-flat.codegen.js +2 -1
- package/dist/es2019/presets/recommended.codegen.js +2 -1
- package/dist/es2019/rules/consistent-css-prop-usage/index.js +0 -2
- package/dist/es2019/rules/ensure-design-token-usage/color.js +0 -2
- package/dist/es2019/rules/ensure-design-token-usage/index.js +0 -2
- package/dist/es2019/rules/ensure-design-token-usage/spacing.js +0 -2
- package/dist/es2019/rules/ensure-design-token-usage/utils.js +0 -2
- package/dist/es2019/rules/ensure-icon-color/index.js +0 -2
- package/dist/es2019/rules/index.codegen.js +3 -1
- package/dist/es2019/rules/no-boolean-autofocus-on-modal-dialog/index.js +0 -2
- package/dist/es2019/rules/no-custom-icons/index.js +0 -2
- package/dist/es2019/rules/no-deprecated-design-token-usage/index.js +0 -2
- package/dist/es2019/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind-all.js +0 -2
- package/dist/es2019/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind.js +0 -2
- package/dist/es2019/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-jsx-attribute.js +0 -2
- package/dist/es2019/rules/no-html-anchor/node-types/jsx-element/index.js +0 -2
- package/dist/es2019/rules/no-html-button/node-types/jsx-element/index.js +0 -2
- package/dist/es2019/rules/no-margin/index.js +0 -2
- package/dist/es2019/rules/no-nested-styles/index.js +0 -2
- package/dist/es2019/rules/no-physical-properties/index.js +0 -2
- package/dist/es2019/rules/no-unsafe-design-token-usage/index.js +0 -2
- package/dist/es2019/rules/use-button-group-label/index.js +0 -2
- package/dist/es2019/rules/use-datetime-picker-calendar-button/index.js +0 -2
- package/dist/es2019/rules/use-drawer-label/index.js +0 -2
- package/dist/es2019/rules/use-heading-level-in-spotlight-card/index.js +0 -2
- package/dist/es2019/rules/use-href-in-link-item/index.js +0 -2
- package/dist/es2019/rules/use-href-in-link-item/utils.js +0 -2
- package/dist/es2019/rules/use-menu-section-title/index.js +0 -2
- package/dist/es2019/rules/use-modal-dialog-close-button/index.js +24 -14
- package/dist/es2019/rules/use-onboarding-spotlight-label/index.js +0 -2
- package/dist/es2019/rules/use-popup-label/index.js +0 -2
- package/dist/es2019/rules/use-should-render-to-parent/index.js +97 -0
- package/dist/es2019/rules/use-tag-group-label/index.js +0 -2
- package/dist/es2019/rules/use-visually-hidden/fix-jsx.js +0 -2
- package/dist/es2019/rules/use-visually-hidden/fix-vanilla.js +0 -2
- package/dist/es2019/rules/use-visually-hidden/index.js +0 -2
- package/dist/es2019/rules/use-visually-hidden/utils.js +0 -4
- package/dist/es2019/rules/utils/create-no-tagged-template-expression-rule/get-tagged-template-expression-offset.js +0 -1
- package/dist/es2019/rules/utils/create-no-tagged-template-expression-rule/index.js +0 -4
- package/dist/es2019/rules/utils/create-no-tagged-template-expression-rule/to-arguments.js +0 -1
- package/dist/es2019/rules/utils/error-boundary.js +0 -2
- package/dist/es2019/rules/utils/find-in-parent.js +0 -2
- package/dist/es2019/rules/utils/get-import-node-by-source.js +0 -2
- package/dist/es2019/rules/utils/get-is-exception.js +0 -2
- package/dist/es2019/rules/utils/is-node.js +0 -2
- package/dist/esm/ast-nodes/object.js +0 -2
- package/dist/esm/presets/all-flat.codegen.js +2 -1
- package/dist/esm/presets/all.codegen.js +2 -1
- package/dist/esm/presets/recommended-flat.codegen.js +2 -1
- package/dist/esm/presets/recommended.codegen.js +2 -1
- package/dist/esm/rules/consistent-css-prop-usage/index.js +0 -2
- package/dist/esm/rules/ensure-design-token-usage/color.js +0 -2
- package/dist/esm/rules/ensure-design-token-usage/index.js +0 -2
- package/dist/esm/rules/ensure-design-token-usage/spacing.js +0 -2
- package/dist/esm/rules/ensure-design-token-usage/utils.js +0 -2
- package/dist/esm/rules/ensure-icon-color/index.js +0 -2
- package/dist/esm/rules/index.codegen.js +3 -1
- package/dist/esm/rules/no-boolean-autofocus-on-modal-dialog/index.js +0 -2
- package/dist/esm/rules/no-custom-icons/index.js +0 -2
- package/dist/esm/rules/no-deprecated-design-token-usage/index.js +0 -2
- package/dist/esm/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind-all.js +0 -2
- package/dist/esm/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind.js +0 -2
- package/dist/esm/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-jsx-attribute.js +0 -2
- package/dist/esm/rules/no-html-anchor/node-types/jsx-element/index.js +0 -2
- package/dist/esm/rules/no-html-button/node-types/jsx-element/index.js +0 -2
- package/dist/esm/rules/no-margin/index.js +0 -2
- package/dist/esm/rules/no-nested-styles/index.js +0 -2
- package/dist/esm/rules/no-physical-properties/index.js +0 -2
- package/dist/esm/rules/no-unsafe-design-token-usage/index.js +0 -2
- package/dist/esm/rules/use-button-group-label/index.js +0 -2
- package/dist/esm/rules/use-datetime-picker-calendar-button/index.js +0 -2
- package/dist/esm/rules/use-drawer-label/index.js +0 -2
- package/dist/esm/rules/use-heading-level-in-spotlight-card/index.js +0 -2
- package/dist/esm/rules/use-href-in-link-item/index.js +0 -2
- package/dist/esm/rules/use-href-in-link-item/utils.js +0 -2
- package/dist/esm/rules/use-menu-section-title/index.js +0 -2
- package/dist/esm/rules/use-modal-dialog-close-button/index.js +24 -14
- package/dist/esm/rules/use-onboarding-spotlight-label/index.js +0 -2
- package/dist/esm/rules/use-popup-label/index.js +0 -2
- package/dist/esm/rules/use-should-render-to-parent/index.js +107 -0
- package/dist/esm/rules/use-tag-group-label/index.js +0 -2
- package/dist/esm/rules/use-visually-hidden/fix-jsx.js +0 -2
- package/dist/esm/rules/use-visually-hidden/fix-vanilla.js +0 -2
- package/dist/esm/rules/use-visually-hidden/index.js +0 -2
- package/dist/esm/rules/use-visually-hidden/utils.js +0 -4
- package/dist/esm/rules/utils/create-no-tagged-template-expression-rule/get-tagged-template-expression-offset.js +0 -1
- package/dist/esm/rules/utils/create-no-tagged-template-expression-rule/index.js +0 -4
- package/dist/esm/rules/utils/create-no-tagged-template-expression-rule/to-arguments.js +0 -1
- package/dist/esm/rules/utils/error-boundary.js +0 -2
- package/dist/esm/rules/utils/find-in-parent.js +0 -2
- package/dist/esm/rules/utils/get-import-node-by-source.js +0 -2
- package/dist/esm/rules/utils/get-is-exception.js +0 -2
- package/dist/esm/rules/utils/is-node.js +0 -2
- package/dist/types/index.codegen.d.ts +9 -0
- package/dist/types/presets/all-flat.codegen.d.ts +1 -0
- package/dist/types/presets/all.codegen.d.ts +1 -0
- package/dist/types/presets/recommended-flat.codegen.d.ts +1 -0
- package/dist/types/presets/recommended.codegen.d.ts +1 -0
- package/dist/types/rules/index.codegen.d.ts +1 -0
- package/dist/types/rules/use-should-render-to-parent/index.d.ts +6 -0
- package/dist/types-ts4.5/index.codegen.d.ts +9 -0
- package/dist/types-ts4.5/presets/all-flat.codegen.d.ts +1 -0
- package/dist/types-ts4.5/presets/all.codegen.d.ts +1 -0
- package/dist/types-ts4.5/presets/recommended-flat.codegen.d.ts +1 -0
- package/dist/types-ts4.5/presets/recommended.codegen.d.ts +1 -0
- package/dist/types-ts4.5/rules/index.codegen.d.ts +1 -0
- package/dist/types-ts4.5/rules/use-should-render-to-parent/index.d.ts +6 -0
- package/package.json +4 -4
|
@@ -6,8 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
8
8
|
var _createRule = require("../utils/create-rule");
|
|
9
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
10
|
-
|
|
11
9
|
var elementsAccessibleNameProps = ['label', 'titleId'];
|
|
12
10
|
var rule = (0, _createRule.createLintRule)({
|
|
13
11
|
meta: {
|
|
@@ -8,8 +8,6 @@ var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
|
8
8
|
var _getImportNodeBySource = require("../utils/get-import-node-by-source");
|
|
9
9
|
var _constants = require("./constants");
|
|
10
10
|
var _utils = require("./utils");
|
|
11
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
12
|
-
|
|
13
11
|
var fixJsx = function fixJsx(source, node) {
|
|
14
12
|
return function (fixer) {
|
|
15
13
|
var fixes = [];
|
|
@@ -7,8 +7,6 @@ exports.default = void 0;
|
|
|
7
7
|
var _getImportNodeBySource = require("../utils/get-import-node-by-source");
|
|
8
8
|
var _constants = require("./constants");
|
|
9
9
|
var _utils = require("./utils");
|
|
10
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
11
|
-
|
|
12
10
|
var fixVanilla = function fixVanilla(source, node) {
|
|
13
11
|
return function (fixer) {
|
|
14
12
|
var fixes = [];
|
|
@@ -13,8 +13,6 @@ var _isNode = require("../utils/is-node");
|
|
|
13
13
|
var _fixJsx = _interopRequireDefault(require("./fix-jsx"));
|
|
14
14
|
var _fixVanilla = _interopRequireDefault(require("./fix-vanilla"));
|
|
15
15
|
var _utils = require("./utils");
|
|
16
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
17
|
-
|
|
18
16
|
var THEME_IMPORT_NAMES = ['visuallyHidden', 'assistive'];
|
|
19
17
|
var rule = (0, _createRule.createLintRule)({
|
|
20
18
|
meta: {
|
|
@@ -5,9 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.makeTemplateLiteralIntoEntries = exports.getObjectLikeness = exports.getFirstImport = exports.countMatchingKeyValues = void 0;
|
|
7
7
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
8
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
9
|
-
|
|
10
|
-
// eslint-disable-next-line @atlaskit/design-system/use-visually-hidden
|
|
11
8
|
var referenceObject = {
|
|
12
9
|
width: '1px',
|
|
13
10
|
height: '1px',
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getTaggedTemplateExpressionOffset = void 0;
|
|
7
7
|
// Original source from Compiled https://github.com/atlassian-labs/compiled/blob/master/packages/eslint-plugin/src/utils/create-no-tagged-template-expression-rule/get-tagged-template-expression-offset.ts
|
|
8
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
9
8
|
|
|
10
9
|
var getTaggedTemplateExpressionOffset = exports.getTaggedTemplateExpressionOffset = function getTaggedTemplateExpressionOffset(node) {
|
|
11
10
|
var parent = node.parent;
|
|
@@ -12,12 +12,8 @@ var _isSupportedImport = require("@atlaskit/eslint-utils/is-supported-import");
|
|
|
12
12
|
var _generate = require("./generate");
|
|
13
13
|
var _getTaggedTemplateExpressionOffset = require("./get-tagged-template-expression-offset");
|
|
14
14
|
var _toArguments = require("./to-arguments");
|
|
15
|
-
/* eslint-disable @atlassian/tangerine/import/entry-points */
|
|
16
|
-
|
|
17
15
|
// Original source from Compiled https://github.com/atlassian-labs/compiled/blob/master/packages/eslint-plugin/src/utils/create-no-tagged-template-expression-rule/index.ts
|
|
18
16
|
|
|
19
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
20
|
-
|
|
21
17
|
var noTaggedTemplateExpressionRuleSchema = exports.noTaggedTemplateExpressionRuleSchema = [{
|
|
22
18
|
type: 'object',
|
|
23
19
|
properties: {
|
|
@@ -11,7 +11,6 @@ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol
|
|
|
11
11
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
12
12
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
13
13
|
// Original source from Compiled https://github.com/atlassian-labs/compiled/blob/master/packages/eslint-plugin/src/utils/create-no-tagged-template-expression-rule/to-arguments.ts
|
|
14
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
15
14
|
|
|
16
15
|
var getArguments = function getArguments(chars) {
|
|
17
16
|
var expressions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
@@ -7,8 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.errorBoundary = errorBoundary;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
9
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
10
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
11
|
-
|
|
12
10
|
// Need to intersect type RuleListener with a generic function to allow use of Parameters<...> to be used
|
|
13
11
|
|
|
14
12
|
// Allow config to be to be easily passed from rules
|
|
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.findIdentifierInParentScope = findIdentifierInParentScope;
|
|
7
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
8
|
-
|
|
9
7
|
/**
|
|
10
8
|
* This will search first matched identifier in same and parent scopes.
|
|
11
9
|
* Returns first matched identifer otherwise null.
|
|
@@ -7,8 +7,6 @@ exports.getModuleOfIdentifier = exports.getImportedNodeBySource = void 0;
|
|
|
7
7
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
8
8
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
9
9
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
10
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
11
|
-
|
|
12
10
|
/**
|
|
13
11
|
* @param {SourceCode} source The eslint source
|
|
14
12
|
* @param {string} path The path specified to find
|
|
@@ -8,8 +8,6 @@ var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
|
8
8
|
var _contextCompat = require("@atlaskit/eslint-utils/context-compat");
|
|
9
9
|
var _isSupportedImport = require("@atlaskit/eslint-utils/is-supported-import");
|
|
10
10
|
var _astNodes = require("../../ast-nodes");
|
|
11
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
12
|
-
|
|
13
11
|
var _isDecendantOfGlobalToken = exports.isDecendantOfGlobalToken = function isDecendantOfGlobalToken(node) {
|
|
14
12
|
if ((0, _eslintCodemodUtils.isNodeOfType)(node, 'CallExpression') && (0, _eslintCodemodUtils.isNodeOfType)(node.callee, 'Identifier') && (node.callee.name === 'token' || node.callee.name === 'getTokenValue')) {
|
|
15
13
|
return true;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
|
|
3
|
-
* @codegen <<SignedSource::
|
|
3
|
+
* @codegen <<SignedSource::d6f1473b4b8a65399a9c887b4ba1912e>>
|
|
4
4
|
* @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -53,6 +53,7 @@ export default {
|
|
|
53
53
|
'@atlaskit/design-system/use-popup-label': 'warn',
|
|
54
54
|
'@atlaskit/design-system/use-primitives': 'warn',
|
|
55
55
|
'@atlaskit/design-system/use-primitives-text': 'warn',
|
|
56
|
+
'@atlaskit/design-system/use-should-render-to-parent': 'warn',
|
|
56
57
|
'@atlaskit/design-system/use-tag-group-label': 'warn',
|
|
57
58
|
'@atlaskit/design-system/use-tokens-space': 'error',
|
|
58
59
|
'@atlaskit/design-system/use-tokens-typography': 'warn',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
|
|
3
|
-
* @codegen <<SignedSource::
|
|
3
|
+
* @codegen <<SignedSource::011cbb2ac5166d9a4a1d1cab68d0156d>>
|
|
4
4
|
* @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -52,6 +52,7 @@ export default {
|
|
|
52
52
|
'@atlaskit/design-system/use-popup-label': 'warn',
|
|
53
53
|
'@atlaskit/design-system/use-primitives': 'warn',
|
|
54
54
|
'@atlaskit/design-system/use-primitives-text': 'warn',
|
|
55
|
+
'@atlaskit/design-system/use-should-render-to-parent': 'warn',
|
|
55
56
|
'@atlaskit/design-system/use-tag-group-label': 'warn',
|
|
56
57
|
'@atlaskit/design-system/use-tokens-space': 'error',
|
|
57
58
|
'@atlaskit/design-system/use-tokens-typography': 'warn',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
|
|
3
|
-
* @codegen <<SignedSource::
|
|
3
|
+
* @codegen <<SignedSource::abef9d23f187fcebf6ab9cdeb874229b>>
|
|
4
4
|
* @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -39,6 +39,7 @@ export default {
|
|
|
39
39
|
'@atlaskit/design-system/use-modal-dialog-close-button': 'warn',
|
|
40
40
|
'@atlaskit/design-system/use-onboarding-spotlight-label': 'warn',
|
|
41
41
|
'@atlaskit/design-system/use-popup-label': 'warn',
|
|
42
|
+
'@atlaskit/design-system/use-should-render-to-parent': 'warn',
|
|
42
43
|
'@atlaskit/design-system/use-tag-group-label': 'warn',
|
|
43
44
|
'@atlaskit/design-system/use-visually-hidden': 'error'
|
|
44
45
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
|
|
3
|
-
* @codegen <<SignedSource::
|
|
3
|
+
* @codegen <<SignedSource::3d1a55011e92acf33daaf53e8bfc3532>>
|
|
4
4
|
* @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -38,6 +38,7 @@ export default {
|
|
|
38
38
|
'@atlaskit/design-system/use-modal-dialog-close-button': 'warn',
|
|
39
39
|
'@atlaskit/design-system/use-onboarding-spotlight-label': 'warn',
|
|
40
40
|
'@atlaskit/design-system/use-popup-label': 'warn',
|
|
41
|
+
'@atlaskit/design-system/use-should-render-to-parent': 'warn',
|
|
41
42
|
'@atlaskit/design-system/use-tag-group-label': 'warn',
|
|
42
43
|
'@atlaskit/design-system/use-visually-hidden': 'error'
|
|
43
44
|
}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
-
|
|
3
1
|
import { node as generate, isNodeOfType } from 'eslint-codemod-utils';
|
|
4
2
|
import { getIsException } from '../utils/get-is-exception';
|
|
5
3
|
import { includesHardCodedColor, isHardCodedColor, isLegacyColor, isLegacyNamedColor } from '../utils/is-color';
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
-
|
|
3
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
4
2
|
import { getScope, getSourceCode } from '@atlaskit/eslint-utils/context-compat';
|
|
5
3
|
import { getImportSources } from '@atlaskit/eslint-utils/is-supported-import';
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
-
|
|
3
1
|
import { isNodeOfType, property } from 'eslint-codemod-utils';
|
|
4
2
|
import { emToPixels, findTokenNameByPropertyValue, getRawExpression, getTokenNodeForValue, getTokenReplacement, getValue, insertTokensImport, isAuto, isCalc, isValidSpacingValue, isZero, splitShorthandValues } from './utils';
|
|
5
3
|
export const lintObjectForSpacing = (node, context, ruleConfig, fontSize, tokenNode) => {
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
-
|
|
3
1
|
import { callExpression, identifier, insertAtStartOfFile, insertImportDeclaration, isNodeOfType, literal } from 'eslint-codemod-utils';
|
|
4
2
|
import { getScope, getSourceCode } from '@atlaskit/eslint-utils/context-compat';
|
|
5
3
|
import { spacing as spacingScale } from '@atlaskit/tokens/tokens-raw';
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
-
|
|
3
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
4
2
|
import { createIsFromImportSourceFor } from '../no-custom-icons/checks/is-from-import-source';
|
|
5
3
|
import { createLintRule } from '../utils/create-rule';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
|
|
3
|
-
* @codegen <<SignedSource::
|
|
3
|
+
* @codegen <<SignedSource::f169e765038e90ec6531f19333f70cfb>>
|
|
4
4
|
* @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
|
|
5
5
|
*/
|
|
6
6
|
import consistentCssPropUsage from './consistent-css-prop-usage';
|
|
@@ -49,6 +49,7 @@ import useOnboardingSpotlightLabel from './use-onboarding-spotlight-label';
|
|
|
49
49
|
import usePopupLabel from './use-popup-label';
|
|
50
50
|
import usePrimitives from './use-primitives';
|
|
51
51
|
import usePrimitivesText from './use-primitives-text';
|
|
52
|
+
import useShouldRenderToParent from './use-should-render-to-parent';
|
|
52
53
|
import useTagGroupLabel from './use-tag-group-label';
|
|
53
54
|
import useTokensSpace from './use-tokens-space';
|
|
54
55
|
import useTokensTypography from './use-tokens-typography';
|
|
@@ -100,6 +101,7 @@ export const rules = {
|
|
|
100
101
|
'use-popup-label': usePopupLabel,
|
|
101
102
|
'use-primitives': usePrimitives,
|
|
102
103
|
'use-primitives-text': usePrimitivesText,
|
|
104
|
+
'use-should-render-to-parent': useShouldRenderToParent,
|
|
103
105
|
'use-tag-group-label': useTagGroupLabel,
|
|
104
106
|
'use-tokens-space': useTokensSpace,
|
|
105
107
|
'use-tokens-typography': useTokensTypography,
|
package/dist/es2019/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind-all.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
-
|
|
3
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
4
2
|
import { getSourceCode } from '@atlaskit/eslint-utils/context-compat';
|
|
5
3
|
import { getModuleOfIdentifier } from '../../utils/get-import-node-by-source';
|
package/dist/es2019/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
-
|
|
3
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
4
2
|
import { getSourceCode } from '@atlaskit/eslint-utils/context-compat';
|
|
5
3
|
import { getModuleOfIdentifier } from '../../utils/get-import-node-by-source';
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
-
|
|
3
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
4
2
|
import { getSourceCode } from '@atlaskit/eslint-utils/context-compat';
|
|
5
3
|
import { getModuleOfIdentifier } from '../../utils/get-import-node-by-source';
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
-
|
|
3
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
4
2
|
import { JSXAttribute } from '../../ast-nodes/jsx-attribute';
|
|
5
3
|
import { JSXElementHelper } from '../../ast-nodes/jsx-element';
|
|
@@ -65,7 +63,7 @@ const rule = createLintRule({
|
|
|
65
63
|
return;
|
|
66
64
|
}
|
|
67
65
|
const name = node.openingElement.name.name;
|
|
68
|
-
if (name
|
|
66
|
+
if (![defaultImportLocalName, modalHeaderLocalName].includes(name)) {
|
|
69
67
|
return;
|
|
70
68
|
}
|
|
71
69
|
let modalHeaderNode = null;
|
|
@@ -120,13 +118,31 @@ const rule = createLintRule({
|
|
|
120
118
|
checkNode(child);
|
|
121
119
|
}
|
|
122
120
|
};
|
|
123
|
-
|
|
121
|
+
if (name === defaultImportLocalName) {
|
|
122
|
+
searchNode(node);
|
|
123
|
+
|
|
124
|
+
// If there is a close button, skip the rest, as this satisfies the
|
|
125
|
+
// rule. If there is a modal header, it will be recognized in later
|
|
126
|
+
// scans, so don't add duplicate errors
|
|
127
|
+
if (closeButtonNode || modalHeaderNode) {
|
|
128
|
+
return;
|
|
129
|
+
// No close button or modal header exists
|
|
130
|
+
} else {
|
|
131
|
+
return context.report({
|
|
132
|
+
node,
|
|
133
|
+
messageId: 'noCloseButtonExists'
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
} else if (name === modalHeaderLocalName) {
|
|
137
|
+
modalHeaderNode = node;
|
|
138
|
+
searchNode(node);
|
|
139
|
+
|
|
140
|
+
// If there is a close button, skip the rest, as this satisfies the rule.
|
|
141
|
+
if (closeButtonNode) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
124
144
|
|
|
125
|
-
// If there is a close button, skip the rest, as this satisfies the rule.
|
|
126
|
-
if (closeButtonNode) {
|
|
127
|
-
return;
|
|
128
145
|
// No close button exists, so check the modal header
|
|
129
|
-
} else if (modalHeaderNode !== null) {
|
|
130
146
|
const prop = JSXElementHelper.getAttributeByName(modalHeaderNode, PROP_NAME);
|
|
131
147
|
|
|
132
148
|
// If the prop exists
|
|
@@ -155,12 +171,6 @@ const rule = createLintRule({
|
|
|
155
171
|
}]
|
|
156
172
|
});
|
|
157
173
|
}
|
|
158
|
-
// No close button or modal header exists
|
|
159
|
-
} else {
|
|
160
|
-
return context.report({
|
|
161
|
-
node,
|
|
162
|
-
messageId: 'noCloseButtonExists'
|
|
163
|
-
});
|
|
164
174
|
}
|
|
165
175
|
}
|
|
166
176
|
};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
+
|
|
3
|
+
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
4
|
+
import { createLintRule } from '../utils/create-rule';
|
|
5
|
+
export const RULE_NAME = 'use-should-render-to-parent';
|
|
6
|
+
const PROP_NAME = 'shouldRenderToParent';
|
|
7
|
+
const message = `Setting the \`${PROP_NAME}\` prop to anything other than \`true\` causes accessibility issues. Only set to \`false\` as a last resort.`;
|
|
8
|
+
export const addProp = `Add \`${PROP_NAME}\` prop.`;
|
|
9
|
+
export const setPropToTrue = `Set \`${PROP_NAME}\` prop to \`true\`.`;
|
|
10
|
+
const components = ['@atlaskit/popup', '@atlaskit/dropdown-menu'];
|
|
11
|
+
const rule = createLintRule({
|
|
12
|
+
meta: {
|
|
13
|
+
name: RULE_NAME,
|
|
14
|
+
type: 'suggestion',
|
|
15
|
+
docs: {
|
|
16
|
+
description: `Encourages makers to use the \`${PROP_NAME}\` where possible in Atlassian Design System \`Popup\` and \`DropdownMenu\` components.`,
|
|
17
|
+
recommended: true,
|
|
18
|
+
severity: 'warn'
|
|
19
|
+
},
|
|
20
|
+
messages: {
|
|
21
|
+
missingShouldRenderToParentProp: `The default value of \`${PROP_NAME}\` is \`false\`. ${message}`,
|
|
22
|
+
falseShouldRenderToParentProp: message
|
|
23
|
+
},
|
|
24
|
+
hasSuggestions: true
|
|
25
|
+
},
|
|
26
|
+
create(context) {
|
|
27
|
+
let componentLocalName;
|
|
28
|
+
return {
|
|
29
|
+
ImportDeclaration(node) {
|
|
30
|
+
const source = node.source.value;
|
|
31
|
+
if (typeof source !== 'string') {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (!components.includes(source)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (!node.specifiers.length) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const defaultImport = node.specifiers.filter(spec => spec.type === 'ImportDefaultSpecifier');
|
|
41
|
+
const namedImport = node.specifiers.filter(spec => spec.type === 'ImportSpecifier');
|
|
42
|
+
|
|
43
|
+
// If popup or dropdown menu and using a default import
|
|
44
|
+
if (defaultImport.length && defaultImport[0].local) {
|
|
45
|
+
componentLocalName = defaultImport[0].local.name;
|
|
46
|
+
// or if popup and using a named import
|
|
47
|
+
} else if (namedImport.length && namedImport[0].type === 'ImportSpecifier' && namedImport[0].imported.name === 'Popup') {
|
|
48
|
+
componentLocalName = namedImport[0].local.name;
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
JSXElement(node) {
|
|
52
|
+
if (!isNodeOfType(node, 'JSXElement')) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (!isNodeOfType(node.openingElement.name, 'JSXIdentifier')) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const name = node.openingElement.name.name;
|
|
59
|
+
if (name === componentLocalName) {
|
|
60
|
+
const prop = node.openingElement.attributes.find(attr => isNodeOfType(attr, 'JSXAttribute') && isNodeOfType(attr.name, 'JSXIdentifier') && attr.name.name === PROP_NAME);
|
|
61
|
+
|
|
62
|
+
// If the prop does not exist, throw
|
|
63
|
+
if (!prop) {
|
|
64
|
+
return context.report({
|
|
65
|
+
node: node.openingElement.name,
|
|
66
|
+
messageId: 'missingShouldRenderToParentProp',
|
|
67
|
+
suggest: [{
|
|
68
|
+
desc: addProp,
|
|
69
|
+
fix: fixer => [fixer.insertTextAfter(node.openingElement.name, ` ${PROP_NAME}`)]
|
|
70
|
+
}]
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// If the prop is a boolean attribute with no value (set to `true`),
|
|
75
|
+
// it's valid
|
|
76
|
+
if (!('value' in prop) || prop.value === null) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// If the prop has a falsy literal value or a falsy value in an
|
|
81
|
+
// expression container, throw
|
|
82
|
+
if (isNodeOfType(prop.value, 'Literal') && !prop.value.value || isNodeOfType(prop.value, 'JSXExpressionContainer') && prop.value.expression.type === 'Literal' && !prop.value.expression.value) {
|
|
83
|
+
return context.report({
|
|
84
|
+
node: prop,
|
|
85
|
+
messageId: 'falseShouldRenderToParentProp',
|
|
86
|
+
suggest: [{
|
|
87
|
+
desc: setPropToTrue,
|
|
88
|
+
fix: fixer => [fixer.replaceText(prop, PROP_NAME)]
|
|
89
|
+
}]
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
export default rule;
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
-
|
|
3
1
|
import { closestOfType } from 'eslint-codemod-utils';
|
|
4
2
|
import { getImportedNodeBySource } from '../utils/get-import-node-by-source';
|
|
5
3
|
import { IMPORT_NAME, VISUALLY_HIDDEN_IMPORT, VISUALLY_HIDDEN_SOURCE } from './constants';
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
-
|
|
3
1
|
import { getImportedNodeBySource } from '../utils/get-import-node-by-source';
|
|
4
2
|
import { IMPORT_NAME, VISUALLY_HIDDEN_IMPORT, VISUALLY_HIDDEN_SOURCE } from './constants';
|
|
5
3
|
import { getFirstImport } from './utils';
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
2
|
-
|
|
3
1
|
import { closestOfType, hasImportDeclaration, isNodeOfType } from 'eslint-codemod-utils';
|
|
4
2
|
import { getDeclaredVariables, getSourceCode } from '@atlaskit/eslint-utils/context-compat';
|
|
5
3
|
import { createLintRule } from '../utils/create-rule';
|