@atlaskit/eslint-plugin-design-system 13.4.1 → 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.
Files changed (161) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +1 -0
  3. package/dist/cjs/ast-nodes/object.js +0 -2
  4. package/dist/cjs/presets/all-flat.codegen.js +2 -1
  5. package/dist/cjs/presets/all.codegen.js +2 -1
  6. package/dist/cjs/presets/recommended-flat.codegen.js +2 -1
  7. package/dist/cjs/presets/recommended.codegen.js +2 -1
  8. package/dist/cjs/rules/consistent-css-prop-usage/index.js +0 -2
  9. package/dist/cjs/rules/ensure-design-token-usage/color.js +0 -2
  10. package/dist/cjs/rules/ensure-design-token-usage/index.js +0 -2
  11. package/dist/cjs/rules/ensure-design-token-usage/spacing.js +1 -1
  12. package/dist/cjs/rules/ensure-design-token-usage/utils.js +0 -2
  13. package/dist/cjs/rules/ensure-icon-color/index.js +0 -2
  14. package/dist/cjs/rules/index.codegen.js +3 -1
  15. package/dist/cjs/rules/no-boolean-autofocus-on-modal-dialog/index.js +0 -2
  16. package/dist/cjs/rules/no-custom-icons/index.js +0 -2
  17. package/dist/cjs/rules/no-deprecated-design-token-usage/index.js +0 -2
  18. package/dist/cjs/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind-all.js +1 -1
  19. package/dist/cjs/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind.js +1 -1
  20. package/dist/cjs/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-jsx-attribute.js +0 -2
  21. package/dist/cjs/rules/no-html-anchor/node-types/jsx-element/index.js +1 -1
  22. package/dist/cjs/rules/no-html-button/node-types/jsx-element/index.js +0 -2
  23. package/dist/cjs/rules/no-margin/index.js +0 -2
  24. package/dist/cjs/rules/no-nested-styles/index.js +0 -2
  25. package/dist/cjs/rules/no-physical-properties/index.js +0 -2
  26. package/dist/cjs/rules/no-unsafe-design-token-usage/index.js +1 -1
  27. package/dist/cjs/rules/use-button-group-label/index.js +0 -2
  28. package/dist/cjs/rules/use-datetime-picker-calendar-button/index.js +0 -2
  29. package/dist/cjs/rules/use-drawer-label/index.js +0 -2
  30. package/dist/cjs/rules/use-heading-level-in-spotlight-card/index.js +0 -2
  31. package/dist/cjs/rules/use-href-in-link-item/index.js +0 -2
  32. package/dist/cjs/rules/use-href-in-link-item/utils.js +0 -2
  33. package/dist/cjs/rules/use-menu-section-title/index.js +0 -2
  34. package/dist/cjs/rules/use-modal-dialog-close-button/index.js +1 -1
  35. package/dist/cjs/rules/use-onboarding-spotlight-label/index.js +0 -2
  36. package/dist/cjs/rules/use-popup-label/index.js +0 -2
  37. package/dist/cjs/rules/use-should-render-to-parent/index.js +113 -0
  38. package/dist/cjs/rules/use-tag-group-label/index.js +0 -2
  39. package/dist/cjs/rules/use-visually-hidden/fix-jsx.js +0 -2
  40. package/dist/cjs/rules/use-visually-hidden/fix-vanilla.js +0 -2
  41. package/dist/cjs/rules/use-visually-hidden/index.js +0 -2
  42. package/dist/cjs/rules/use-visually-hidden/utils.js +0 -3
  43. package/dist/cjs/rules/utils/create-no-tagged-template-expression-rule/get-tagged-template-expression-offset.js +0 -1
  44. package/dist/cjs/rules/utils/create-no-tagged-template-expression-rule/index.js +0 -4
  45. package/dist/cjs/rules/utils/create-no-tagged-template-expression-rule/to-arguments.js +0 -1
  46. package/dist/cjs/rules/utils/error-boundary.js +0 -2
  47. package/dist/cjs/rules/utils/find-in-parent.js +0 -2
  48. package/dist/cjs/rules/utils/get-import-node-by-source.js +0 -2
  49. package/dist/cjs/rules/utils/get-is-exception.js +0 -2
  50. package/dist/cjs/rules/utils/is-node.js +0 -2
  51. package/dist/es2019/ast-nodes/object.js +0 -2
  52. package/dist/es2019/presets/all-flat.codegen.js +2 -1
  53. package/dist/es2019/presets/all.codegen.js +2 -1
  54. package/dist/es2019/presets/recommended-flat.codegen.js +2 -1
  55. package/dist/es2019/presets/recommended.codegen.js +2 -1
  56. package/dist/es2019/rules/consistent-css-prop-usage/index.js +0 -2
  57. package/dist/es2019/rules/ensure-design-token-usage/color.js +0 -2
  58. package/dist/es2019/rules/ensure-design-token-usage/index.js +0 -2
  59. package/dist/es2019/rules/ensure-design-token-usage/spacing.js +0 -2
  60. package/dist/es2019/rules/ensure-design-token-usage/utils.js +0 -2
  61. package/dist/es2019/rules/ensure-icon-color/index.js +0 -2
  62. package/dist/es2019/rules/index.codegen.js +3 -1
  63. package/dist/es2019/rules/no-boolean-autofocus-on-modal-dialog/index.js +0 -2
  64. package/dist/es2019/rules/no-custom-icons/index.js +0 -2
  65. package/dist/es2019/rules/no-deprecated-design-token-usage/index.js +0 -2
  66. package/dist/es2019/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind-all.js +0 -2
  67. package/dist/es2019/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind.js +0 -2
  68. package/dist/es2019/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-jsx-attribute.js +0 -2
  69. package/dist/es2019/rules/no-html-anchor/node-types/jsx-element/index.js +0 -2
  70. package/dist/es2019/rules/no-html-button/node-types/jsx-element/index.js +0 -2
  71. package/dist/es2019/rules/no-margin/index.js +0 -2
  72. package/dist/es2019/rules/no-nested-styles/index.js +0 -2
  73. package/dist/es2019/rules/no-physical-properties/index.js +0 -2
  74. package/dist/es2019/rules/no-unsafe-design-token-usage/index.js +0 -2
  75. package/dist/es2019/rules/use-button-group-label/index.js +0 -2
  76. package/dist/es2019/rules/use-datetime-picker-calendar-button/index.js +0 -2
  77. package/dist/es2019/rules/use-drawer-label/index.js +0 -2
  78. package/dist/es2019/rules/use-heading-level-in-spotlight-card/index.js +0 -2
  79. package/dist/es2019/rules/use-href-in-link-item/index.js +0 -2
  80. package/dist/es2019/rules/use-href-in-link-item/utils.js +0 -2
  81. package/dist/es2019/rules/use-menu-section-title/index.js +0 -2
  82. package/dist/es2019/rules/use-modal-dialog-close-button/index.js +0 -2
  83. package/dist/es2019/rules/use-onboarding-spotlight-label/index.js +0 -2
  84. package/dist/es2019/rules/use-popup-label/index.js +0 -2
  85. package/dist/es2019/rules/use-should-render-to-parent/index.js +97 -0
  86. package/dist/es2019/rules/use-tag-group-label/index.js +0 -2
  87. package/dist/es2019/rules/use-visually-hidden/fix-jsx.js +0 -2
  88. package/dist/es2019/rules/use-visually-hidden/fix-vanilla.js +0 -2
  89. package/dist/es2019/rules/use-visually-hidden/index.js +0 -2
  90. package/dist/es2019/rules/use-visually-hidden/utils.js +0 -4
  91. package/dist/es2019/rules/utils/create-no-tagged-template-expression-rule/get-tagged-template-expression-offset.js +0 -1
  92. package/dist/es2019/rules/utils/create-no-tagged-template-expression-rule/index.js +0 -4
  93. package/dist/es2019/rules/utils/create-no-tagged-template-expression-rule/to-arguments.js +0 -1
  94. package/dist/es2019/rules/utils/error-boundary.js +0 -2
  95. package/dist/es2019/rules/utils/find-in-parent.js +0 -2
  96. package/dist/es2019/rules/utils/get-import-node-by-source.js +0 -2
  97. package/dist/es2019/rules/utils/get-is-exception.js +0 -2
  98. package/dist/es2019/rules/utils/is-node.js +0 -2
  99. package/dist/esm/ast-nodes/object.js +0 -2
  100. package/dist/esm/presets/all-flat.codegen.js +2 -1
  101. package/dist/esm/presets/all.codegen.js +2 -1
  102. package/dist/esm/presets/recommended-flat.codegen.js +2 -1
  103. package/dist/esm/presets/recommended.codegen.js +2 -1
  104. package/dist/esm/rules/consistent-css-prop-usage/index.js +0 -2
  105. package/dist/esm/rules/ensure-design-token-usage/color.js +0 -2
  106. package/dist/esm/rules/ensure-design-token-usage/index.js +0 -2
  107. package/dist/esm/rules/ensure-design-token-usage/spacing.js +0 -2
  108. package/dist/esm/rules/ensure-design-token-usage/utils.js +0 -2
  109. package/dist/esm/rules/ensure-icon-color/index.js +0 -2
  110. package/dist/esm/rules/index.codegen.js +3 -1
  111. package/dist/esm/rules/no-boolean-autofocus-on-modal-dialog/index.js +0 -2
  112. package/dist/esm/rules/no-custom-icons/index.js +0 -2
  113. package/dist/esm/rules/no-deprecated-design-token-usage/index.js +0 -2
  114. package/dist/esm/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind-all.js +0 -2
  115. package/dist/esm/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind.js +0 -2
  116. package/dist/esm/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-jsx-attribute.js +0 -2
  117. package/dist/esm/rules/no-html-anchor/node-types/jsx-element/index.js +0 -2
  118. package/dist/esm/rules/no-html-button/node-types/jsx-element/index.js +0 -2
  119. package/dist/esm/rules/no-margin/index.js +0 -2
  120. package/dist/esm/rules/no-nested-styles/index.js +0 -2
  121. package/dist/esm/rules/no-physical-properties/index.js +0 -2
  122. package/dist/esm/rules/no-unsafe-design-token-usage/index.js +0 -2
  123. package/dist/esm/rules/use-button-group-label/index.js +0 -2
  124. package/dist/esm/rules/use-datetime-picker-calendar-button/index.js +0 -2
  125. package/dist/esm/rules/use-drawer-label/index.js +0 -2
  126. package/dist/esm/rules/use-heading-level-in-spotlight-card/index.js +0 -2
  127. package/dist/esm/rules/use-href-in-link-item/index.js +0 -2
  128. package/dist/esm/rules/use-href-in-link-item/utils.js +0 -2
  129. package/dist/esm/rules/use-menu-section-title/index.js +0 -2
  130. package/dist/esm/rules/use-modal-dialog-close-button/index.js +0 -2
  131. package/dist/esm/rules/use-onboarding-spotlight-label/index.js +0 -2
  132. package/dist/esm/rules/use-popup-label/index.js +0 -2
  133. package/dist/esm/rules/use-should-render-to-parent/index.js +107 -0
  134. package/dist/esm/rules/use-tag-group-label/index.js +0 -2
  135. package/dist/esm/rules/use-visually-hidden/fix-jsx.js +0 -2
  136. package/dist/esm/rules/use-visually-hidden/fix-vanilla.js +0 -2
  137. package/dist/esm/rules/use-visually-hidden/index.js +0 -2
  138. package/dist/esm/rules/use-visually-hidden/utils.js +0 -4
  139. package/dist/esm/rules/utils/create-no-tagged-template-expression-rule/get-tagged-template-expression-offset.js +0 -1
  140. package/dist/esm/rules/utils/create-no-tagged-template-expression-rule/index.js +0 -4
  141. package/dist/esm/rules/utils/create-no-tagged-template-expression-rule/to-arguments.js +0 -1
  142. package/dist/esm/rules/utils/error-boundary.js +0 -2
  143. package/dist/esm/rules/utils/find-in-parent.js +0 -2
  144. package/dist/esm/rules/utils/get-import-node-by-source.js +0 -2
  145. package/dist/esm/rules/utils/get-is-exception.js +0 -2
  146. package/dist/esm/rules/utils/is-node.js +0 -2
  147. package/dist/types/index.codegen.d.ts +9 -0
  148. package/dist/types/presets/all-flat.codegen.d.ts +1 -0
  149. package/dist/types/presets/all.codegen.d.ts +1 -0
  150. package/dist/types/presets/recommended-flat.codegen.d.ts +1 -0
  151. package/dist/types/presets/recommended.codegen.d.ts +1 -0
  152. package/dist/types/rules/index.codegen.d.ts +1 -0
  153. package/dist/types/rules/use-should-render-to-parent/index.d.ts +6 -0
  154. package/dist/types-ts4.5/index.codegen.d.ts +9 -0
  155. package/dist/types-ts4.5/presets/all-flat.codegen.d.ts +1 -0
  156. package/dist/types-ts4.5/presets/all.codegen.d.ts +1 -0
  157. package/dist/types-ts4.5/presets/recommended-flat.codegen.d.ts +1 -0
  158. package/dist/types-ts4.5/presets/recommended.codegen.d.ts +1 -0
  159. package/dist/types-ts4.5/rules/index.codegen.d.ts +1 -0
  160. package/dist/types-ts4.5/rules/use-should-render-to-parent/index.d.ts +6 -0
  161. package/package.json +4 -4
@@ -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
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getIsException = void 0;
7
- // eslint-disable-next-line import/no-extraneous-dependencies
8
-
9
7
  var getNodeValue = function getNodeValue(node) {
10
8
  var _node$value;
11
9
  switch (node.type) {
@@ -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,5 +1,3 @@
1
- /* eslint-disable @repo/internal/react/require-jsdoc */
2
-
3
1
  import { identifier, isNodeOfType, literal, property } from 'eslint-codemod-utils';
4
2
  const ASTObjectExpression = {
5
3
  /**
@@ -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::9b616276b6c3b9db3c1d886bf8de4fc4>>
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::96ec2e315f96de68a6448317cce334ce>>
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::4f6ee2ae56e1c0534f0f8e3fde314cc7>>
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::85c1f4ada9dac0f66e87e3734a36cb6b>>
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 { getIdentifierInParentScope, insertAtStartOfFile, insertImportDeclaration, isNodeOfType } from 'eslint-codemod-utils';
4
2
  import estraverse from 'estraverse';
5
3
  import assign from 'lodash/assign';
@@ -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::66749852497ab0f2dc3214dd47aaf598>>
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,
@@ -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';
@@ -1,5 +1,3 @@
1
- // eslint-disable-next-line import/no-extraneous-dependencies
2
-
3
1
  import { createLintRule } from '../utils/create-rule';
4
2
  import { errorBoundary } from '../utils/error-boundary';
5
3
  import { hasProp } from './checks/has-prop';
@@ -1,5 +1,3 @@
1
- // eslint-disable-next-line import/no-extraneous-dependencies
2
-
3
1
  import renameMapping from '@atlaskit/tokens/rename-mapping';
4
2
  import { getTokenId } from '@atlaskit/tokens/token-ids';
5
3
  import { createLintRule } from '../utils/create-rule';
@@ -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 { 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 @repo/internal/react/require-jsdoc */
2
-
3
1
  import { getSourceCode } from '@atlaskit/eslint-utils/context-compat';
4
2
  import * as ast from '../../../../ast-nodes';
5
3
  import { isSupportedForLint } from '../supported';
@@ -1,5 +1,3 @@
1
- /* eslint-disable @repo/internal/react/require-jsdoc */
2
-
3
1
  import * as ast from '../../../../ast-nodes';
4
2
  import { isSupportedForLint } from '../supported';
5
3
  export const JSXElement = {
@@ -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 { createLintRule } from '../utils/create-rule';
5
3
  const rule = createLintRule({
@@ -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 } from '@atlaskit/eslint-utils/context-compat';
5
3
  import { createLintRule } from '../utils/create-rule';
@@ -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 { createLintRule } from '../utils/create-rule';
5
3
  import { physicalLogicalMap } from './logical-physical-map';
@@ -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 renameMapping from '@atlaskit/tokens/rename-mapping';
5
3
  import tokenDefaultValues from '@atlaskit/tokens/token-default-values';
@@ -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 { createLintRule } from '../utils/create-rule';
5
3
  const elementsAccessibleNameProps = ['label', 'titleId'];
@@ -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';
@@ -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 { createLintRule } from '../utils/create-rule';
5
3
  const elementsAccessibleNameProps = ['label', 'titleId'];
@@ -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 } from '@atlaskit/eslint-utils/context-compat';
5
3
  import { createLintRule } from '../utils/create-rule';
@@ -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 } from '@atlaskit/eslint-utils/context-compat';
5
3
  import { createLintRule } from '../utils/create-rule';
@@ -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 { findIdentifierInParentScope } from '../utils/find-in-parent';
5
3
  const invalidHrefValues = ['', '#', null, undefined];
@@ -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 { createLintRule } from '../utils/create-rule';
5
3
  const elementsAccessibleNameProps = ['title', 'titleId'];
@@ -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';
@@ -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 { createLintRule } from '../utils/create-rule';
5
3
  const elementsAccessibleNameProps = ['label', 'titleId', 'heading'];
@@ -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 { createLintRule } from '../utils/create-rule';
5
3
  const elementsAccessibleNameProps = ['label', 'titleId'];
@@ -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 { isNodeOfType } from 'eslint-codemod-utils';
4
2
  import { createLintRule } from '../utils/create-rule';
5
3
  const elementsAccessibleNameProps = ['label', 'titleId'];
@@ -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';
@@ -1,8 +1,4 @@
1
- // eslint-disable-next-line import/no-extraneous-dependencies
2
-
3
1
  import { isNodeOfType } from 'eslint-codemod-utils';
4
-
5
- // eslint-disable-next-line @atlaskit/design-system/use-visually-hidden
6
2
  const referenceObject = {
7
3
  width: '1px',
8
4
  height: '1px',
@@ -1,5 +1,4 @@
1
1
  // 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
2
- // eslint-disable-next-line import/no-extraneous-dependencies
3
2
 
4
3
  export const getTaggedTemplateExpressionOffset = node => {
5
4
  const {
@@ -1,9 +1,5 @@
1
- /* eslint-disable @atlassian/tangerine/import/entry-points */
2
-
3
1
  // 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
4
2
 
5
- // eslint-disable-next-line import/no-extraneous-dependencies
6
-
7
3
  import esquery from 'esquery';
8
4
  import { getScope, getSourceCode } from '@atlaskit/eslint-utils/context-compat';
9
5
  import { getImportSources, isEmotion } from '@atlaskit/eslint-utils/is-supported-import';
@@ -1,5 +1,4 @@
1
1
  // 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
2
- // eslint-disable-next-line import/no-extraneous-dependencies
3
2
 
4
3
  const getArguments = (chars, expressions = []) => {
5
4
  if (!chars.trim().length && expressions) {
@@ -1,5 +1,3 @@
1
- // eslint-disable-next-line import/no-extraneous-dependencies
2
-
3
1
  // Need to intersect type RuleListener with a generic function to allow use of Parameters<...> to be used
4
2
 
5
3
  // Allow config to be to be easily passed from rules
@@ -1,5 +1,3 @@
1
- // eslint-disable-next-line import/no-extraneous-dependencies
2
-
3
1
  /**
4
2
  * This will search first matched identifier in same and parent scopes.
5
3
  * Returns first matched identifer otherwise null.
@@ -1,5 +1,3 @@
1
- // eslint-disable-next-line import/no-extraneous-dependencies
2
-
3
1
  /**
4
2
  * @param {SourceCode} source The eslint source
5
3
  * @param {string} path The path specified to find
@@ -1,5 +1,3 @@
1
- // eslint-disable-next-line import/no-extraneous-dependencies
2
-
3
1
  const getNodeValue = node => {
4
2
  var _node$value;
5
3
  switch (node.type) {
@@ -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 { isXcss } from '@atlaskit/eslint-utils/is-supported-import';
@@ -1,5 +1,3 @@
1
- /* eslint-disable @repo/internal/react/require-jsdoc */
2
-
3
1
  import { identifier, isNodeOfType, literal, property } from 'eslint-codemod-utils';
4
2
  var ASTObjectExpression = {
5
3
  /**
@@ -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::9b616276b6c3b9db3c1d886bf8de4fc4>>
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::96ec2e315f96de68a6448317cce334ce>>
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',