@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.
Files changed (161) hide show
  1. package/CHANGELOG.md +16 -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 +25 -13
  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 +24 -14
  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 +24 -14
  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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/eslint-plugin-design-system
2
2
 
3
+ ## 13.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#141971](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/141971)
8
+ [`c16899828af3d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/c16899828af3d) -
9
+ Add new rule for `shouldRenderToParent` prop usage in popup and dropdown menu components.
10
+
11
+ ## 13.4.1
12
+
13
+ ### Patch Changes
14
+
15
+ - [#136299](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/136299)
16
+ [`4da98e435c8da`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/4da98e435c8da) -
17
+ Add better logic to `use-modal-dialog-close-button` rule.
18
+
3
19
  ## 13.4.0
4
20
 
5
21
  ### Minor Changes
package/README.md CHANGED
@@ -95,6 +95,7 @@ module.exports = {
95
95
  | <a href="./packages/design-system/eslint-plugin/src/rules/use-popup-label/README.md">use-popup-label</a> | Encourages to provide accessible name for Atlassian Design System Popup component. | Yes | | Yes |
96
96
  | <a href="./packages/design-system/eslint-plugin/src/rules/use-primitives/README.md">use-primitives</a> | Encourage the usage of primitives components. | | Yes | Yes |
97
97
  | <a href="./packages/design-system/eslint-plugin/src/rules/use-primitives-text/README.md">use-primitives-text</a> | Encourage the usage of text components. | | Yes | Yes |
98
+ | <a href="./packages/design-system/eslint-plugin/src/rules/use-should-render-to-parent/README.md">use-should-render-to-parent</a> | Encourages makers to use the `shouldRenderToParent` where possible in Atlassian Design System `Popup` and `DropdownMenu` components. | Yes | | Yes |
98
99
  | <a href="./packages/design-system/eslint-plugin/src/rules/use-tag-group-label/README.md">use-tag-group-label</a> | Ensures tag groups are described to assistive technology by a direct label or by another element. | Yes | | Yes |
99
100
  | <a href="./packages/design-system/eslint-plugin/src/rules/use-tokens-space/README.md">use-tokens-space</a> | Enforces usage of space design tokens rather than hard-coded values. | | Yes | Yes |
100
101
  | <a href="./packages/design-system/eslint-plugin/src/rules/use-tokens-typography/README.md">use-tokens-typography</a> | Enforces usage of design tokens for typography properties rather than hard-coded values. | | Yes | Yes |
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.Object = void 0;
7
7
  var _eslintCodemodUtils = require("eslint-codemod-utils");
8
- /* eslint-disable @repo/internal/react/require-jsdoc */
9
-
10
8
  var ASTObjectExpression = exports.Object = {
11
9
  /**
12
10
  * Returns `true` if an object contains a property with the specified name, `false` otherwise.
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  /**
8
8
  * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
9
- * @codegen <<SignedSource::9b616276b6c3b9db3c1d886bf8de4fc4>>
9
+ * @codegen <<SignedSource::d6f1473b4b8a65399a9c887b4ba1912e>>
10
10
  * @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
11
11
  */
12
12
  var _default = exports.default = {
@@ -58,6 +58,7 @@ var _default = exports.default = {
58
58
  '@atlaskit/design-system/use-popup-label': 'warn',
59
59
  '@atlaskit/design-system/use-primitives': 'warn',
60
60
  '@atlaskit/design-system/use-primitives-text': 'warn',
61
+ '@atlaskit/design-system/use-should-render-to-parent': 'warn',
61
62
  '@atlaskit/design-system/use-tag-group-label': 'warn',
62
63
  '@atlaskit/design-system/use-tokens-space': 'error',
63
64
  '@atlaskit/design-system/use-tokens-typography': 'warn',
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  /**
8
8
  * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
9
- * @codegen <<SignedSource::96ec2e315f96de68a6448317cce334ce>>
9
+ * @codegen <<SignedSource::011cbb2ac5166d9a4a1d1cab68d0156d>>
10
10
  * @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
11
11
  */
12
12
  var _default = exports.default = {
@@ -57,6 +57,7 @@ var _default = exports.default = {
57
57
  '@atlaskit/design-system/use-popup-label': 'warn',
58
58
  '@atlaskit/design-system/use-primitives': 'warn',
59
59
  '@atlaskit/design-system/use-primitives-text': 'warn',
60
+ '@atlaskit/design-system/use-should-render-to-parent': 'warn',
60
61
  '@atlaskit/design-system/use-tag-group-label': 'warn',
61
62
  '@atlaskit/design-system/use-tokens-space': 'error',
62
63
  '@atlaskit/design-system/use-tokens-typography': 'warn',
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  /**
8
8
  * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
9
- * @codegen <<SignedSource::4f6ee2ae56e1c0534f0f8e3fde314cc7>>
9
+ * @codegen <<SignedSource::abef9d23f187fcebf6ab9cdeb874229b>>
10
10
  * @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
11
11
  */
12
12
  var _default = exports.default = {
@@ -44,6 +44,7 @@ var _default = exports.default = {
44
44
  '@atlaskit/design-system/use-modal-dialog-close-button': 'warn',
45
45
  '@atlaskit/design-system/use-onboarding-spotlight-label': 'warn',
46
46
  '@atlaskit/design-system/use-popup-label': 'warn',
47
+ '@atlaskit/design-system/use-should-render-to-parent': 'warn',
47
48
  '@atlaskit/design-system/use-tag-group-label': 'warn',
48
49
  '@atlaskit/design-system/use-visually-hidden': 'error'
49
50
  }
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  /**
8
8
  * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
9
- * @codegen <<SignedSource::85c1f4ada9dac0f66e87e3734a36cb6b>>
9
+ * @codegen <<SignedSource::3d1a55011e92acf33daaf53e8bfc3532>>
10
10
  * @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
11
11
  */
12
12
  var _default = exports.default = {
@@ -43,6 +43,7 @@ var _default = exports.default = {
43
43
  '@atlaskit/design-system/use-modal-dialog-close-button': 'warn',
44
44
  '@atlaskit/design-system/use-onboarding-spotlight-label': 'warn',
45
45
  '@atlaskit/design-system/use-popup-label': 'warn',
46
+ '@atlaskit/design-system/use-should-render-to-parent': 'warn',
46
47
  '@atlaskit/design-system/use-tag-group-label': 'warn',
47
48
  '@atlaskit/design-system/use-visually-hidden': 'error'
48
49
  }
@@ -19,8 +19,6 @@ var _astNodes = require("../../ast-nodes");
19
19
  var _createRule = require("../utils/create-rule");
20
20
  var _getFirstSupportedImport = require("../utils/get-first-supported-import");
21
21
  var _getImportNodeBySource = require("../utils/get-import-node-by-source");
22
- // eslint-disable-next-line import/no-extraneous-dependencies
23
-
24
22
  var isDOMElementName = function isDOMElementName(elementName) {
25
23
  return elementName.charAt(0) !== elementName.charAt(0).toUpperCase() && elementName.charAt(0) === elementName.charAt(0).toLowerCase();
26
24
  };
@@ -9,8 +9,6 @@ var _getIsException = require("../utils/get-is-exception");
9
9
  var _isColor = require("../utils/is-color");
10
10
  var _isElevation = require("../utils/is-elevation");
11
11
  var _isNode = require("../utils/is-node");
12
- // eslint-disable-next-line import/no-extraneous-dependencies
13
-
14
12
  // TemplateLiteral > Identifier
15
13
  var lintTemplateIdentifierForColor = exports.lintTemplateIdentifierForColor = function lintTemplateIdentifierForColor(node, context, config) {
16
14
  if (node.type !== 'Identifier') {
@@ -17,8 +17,6 @@ var _color = require("./color");
17
17
  var _ruleMeta = _interopRequireDefault(require("./rule-meta"));
18
18
  var _spacing = require("./spacing");
19
19
  var _utils = require("./utils");
20
- // eslint-disable-next-line import/no-extraneous-dependencies
21
-
22
20
  var defaultConfig = {
23
21
  domains: ['color', 'spacing'],
24
22
  applyImport: true,
@@ -10,7 +10,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
10
10
  var _eslintCodemodUtils = require("eslint-codemod-utils");
11
11
  var _utils = require("./utils");
12
12
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // eslint-disable-next-line import/no-extraneous-dependencies
13
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
14
  var lintObjectForSpacing = exports.lintObjectForSpacing = function lintObjectForSpacing(node, context, ruleConfig, fontSize, tokenNode) {
15
15
  if ((0, _eslintCodemodUtils.isNodeOfType)(node.value, 'Literal') && !(0, _utils.isValidSpacingValue)(node.value.value, fontSize)) {
16
16
  context.report({
@@ -33,8 +33,6 @@ var _tokensRaw = require("@atlaskit/tokens/tokens-raw");
33
33
  var _findInParent = require("../utils/find-in-parent");
34
34
  var _isColor = require("../utils/is-color");
35
35
  var _shape = require("./shape");
36
- // eslint-disable-next-line import/no-extraneous-dependencies
37
-
38
36
  var properties = ['padding', 'paddingBlock', 'paddingInline', 'paddingLeft', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd', 'marginLeft', 'marginTop', 'marginRight', 'marginBottom', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd', 'margin', 'gap', 'rowGap', 'gridRowGap', 'columnGap', 'gridColumnGap', 'top', 'left', 'right', 'bottom', 'inlineStart', 'inlineEnd', 'blockStart', 'blockEnd', 'outline-offset'];
39
37
  var spacingValueToToken = Object.fromEntries(_tokensRaw.spacing.map(function (token) {
40
38
  return [token.value, token.cleanName];
@@ -8,8 +8,6 @@ var _eslintCodemodUtils = require("eslint-codemod-utils");
8
8
  var _isFromImportSource = require("../no-custom-icons/checks/is-from-import-source");
9
9
  var _createRule = require("../utils/create-rule");
10
10
  var _errorBoundary = require("../utils/error-boundary");
11
- // eslint-disable-next-line import/no-extraneous-dependencies
12
-
13
11
  /**
14
12
  * Returns if the node is a JSXElement with a prop that matches the given name.
15
13
  */
@@ -51,13 +51,14 @@ var _useOnboardingSpotlightLabel = _interopRequireDefault(require("./use-onboard
51
51
  var _usePopupLabel = _interopRequireDefault(require("./use-popup-label"));
52
52
  var _usePrimitives = _interopRequireDefault(require("./use-primitives"));
53
53
  var _usePrimitivesText = _interopRequireDefault(require("./use-primitives-text"));
54
+ var _useShouldRenderToParent = _interopRequireDefault(require("./use-should-render-to-parent"));
54
55
  var _useTagGroupLabel = _interopRequireDefault(require("./use-tag-group-label"));
55
56
  var _useTokensSpace = _interopRequireDefault(require("./use-tokens-space"));
56
57
  var _useTokensTypography = _interopRequireDefault(require("./use-tokens-typography"));
57
58
  var _useVisuallyHidden = _interopRequireDefault(require("./use-visually-hidden"));
58
59
  /**
59
60
  * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
60
- * @codegen <<SignedSource::66749852497ab0f2dc3214dd47aaf598>>
61
+ * @codegen <<SignedSource::f169e765038e90ec6531f19333f70cfb>>
61
62
  * @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
62
63
  */
63
64
 
@@ -108,6 +109,7 @@ var rules = exports.rules = {
108
109
  'use-popup-label': _usePopupLabel.default,
109
110
  'use-primitives': _usePrimitives.default,
110
111
  'use-primitives-text': _usePrimitivesText.default,
112
+ 'use-should-render-to-parent': _useShouldRenderToParent.default,
111
113
  'use-tag-group-label': _useTagGroupLabel.default,
112
114
  'use-tokens-space': _useTokensSpace.default,
113
115
  'use-tokens-typography': _useTokensTypography.default,
@@ -8,8 +8,6 @@ var _eslintCodemodUtils = require("eslint-codemod-utils");
8
8
  var _jsxAttribute = require("../../ast-nodes/jsx-attribute");
9
9
  var _jsxElement = require("../../ast-nodes/jsx-element");
10
10
  var _createRule = require("../utils/create-rule");
11
- // eslint-disable-next-line import/no-extraneous-dependencies
12
-
13
11
  var PROP_NAME = 'autoFocus';
14
12
 
15
13
  // Lint rule message
@@ -8,8 +8,6 @@ var _createRule = require("../utils/create-rule");
8
8
  var _errorBoundary = require("../utils/error-boundary");
9
9
  var _hasProp = require("./checks/has-prop");
10
10
  var _isFromImportSource = require("./checks/is-from-import-source");
11
- // eslint-disable-next-line import/no-extraneous-dependencies
12
-
13
11
  var rule = (0, _createRule.createLintRule)({
14
12
  meta: {
15
13
  name: 'no-custom-icons',
@@ -8,8 +8,6 @@ exports.default = void 0;
8
8
  var _renameMapping = _interopRequireDefault(require("@atlaskit/tokens/rename-mapping"));
9
9
  var _tokenIds = require("@atlaskit/tokens/token-ids");
10
10
  var _createRule = require("../utils/create-rule");
11
- // eslint-disable-next-line import/no-extraneous-dependencies
12
-
13
11
  var rule = (0, _createRule.createLintRule)({
14
12
  meta: {
15
13
  name: 'no-deprecated-design-token-usage',
@@ -10,7 +10,7 @@ var _getImportNodeBySource = require("../../utils/get-import-node-by-source");
10
10
  var _isBlockedEventBinding = require("../shared/is-blocked-event-binding");
11
11
  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; } } }; }
12
12
  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; } }
13
- 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; } // eslint-disable-next-line import/no-extraneous-dependencies
13
+ 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; }
14
14
  function isBlockedBindAll(context, node) {
15
15
  var callee = node.callee;
16
16
  if (!(0, _eslintCodemodUtils.isNodeOfType)(callee, 'Identifier')) {
@@ -10,7 +10,7 @@ var _getImportNodeBySource = require("../../utils/get-import-node-by-source");
10
10
  var _isBlockedEventBinding = require("../shared/is-blocked-event-binding");
11
11
  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; } } }; }
12
12
  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; } }
13
- 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; } // eslint-disable-next-line import/no-extraneous-dependencies
13
+ 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; }
14
14
  function isBlockedBind(context, node) {
15
15
  var callee = node.callee;
16
16
  if (!(0, _eslintCodemodUtils.isNodeOfType)(callee, 'Identifier')) {
@@ -8,8 +8,6 @@ var _eslintCodemodUtils = require("eslint-codemod-utils");
8
8
  var _contextCompat = require("@atlaskit/eslint-utils/context-compat");
9
9
  var _getImportNodeBySource = require("../../utils/get-import-node-by-source");
10
10
  var _blocked = require("../shared/blocked");
11
- // eslint-disable-next-line import/no-extraneous-dependencies
12
-
13
11
  function getJSXElementNameFromAttribute(attribute) {
14
12
  var parent = attribute.parent;
15
13
  if (!parent) {
@@ -12,7 +12,7 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
12
12
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
13
  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; } } }; }
14
14
  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; } }
15
- 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; } /* eslint-disable @repo/internal/react/require-jsdoc */
15
+ 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; }
16
16
  function isImportDeclaration(node) {
17
17
  return node.type === 'ImportDeclaration';
18
18
  }
@@ -9,8 +9,6 @@ var ast = _interopRequireWildcard(require("../../../../ast-nodes"));
9
9
  var _supported = require("../supported");
10
10
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
11
11
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
- /* eslint-disable @repo/internal/react/require-jsdoc */
13
-
14
12
  var JSXElement = exports.JSXElement = {
15
13
  lint: function lint(node, _ref) {
16
14
  var context = _ref.context;
@@ -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 rule = (0, _createRule.createLintRule)({
12
10
  meta: {
13
11
  name: 'no-margin',
@@ -8,8 +8,6 @@ var _eslintCodemodUtils = require("eslint-codemod-utils");
8
8
  var _contextCompat = require("@atlaskit/eslint-utils/context-compat");
9
9
  var _createRule = require("../utils/create-rule");
10
10
  var _findInParent = require("../utils/find-in-parent");
11
- // eslint-disable-next-line import/no-extraneous-dependencies
12
-
13
11
  var allowedPrefix = [':', '&:'];
14
12
  var allowedResponsiveImports = ['@atlaskit/primitives/responsive', '@atlaskit/primitives'];
15
13
 
@@ -7,8 +7,6 @@ exports.default = void 0;
7
7
  var _eslintCodemodUtils = require("eslint-codemod-utils");
8
8
  var _createRule = require("../utils/create-rule");
9
9
  var _logicalPhysicalMap = require("./logical-physical-map");
10
- // eslint-disable-next-line import/no-extraneous-dependencies
11
-
12
10
  var rule = (0, _createRule.createLintRule)({
13
11
  meta: {
14
12
  name: 'no-physical-properties',
@@ -15,7 +15,7 @@ var _createRule = require("../utils/create-rule");
15
15
  var _isNode = require("../utils/is-node");
16
16
  var _isToken = require("../utils/is-token");
17
17
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // eslint-disable-next-line import/no-extraneous-dependencies
18
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19
19
  var rule = (0, _createRule.createLintRule)({
20
20
  meta: {
21
21
  name: 'no-unsafe-design-token-usage',
@@ -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 _jsxAttribute = require("../../ast-nodes/jsx-attribute");
9
9
  var _jsxElement = require("../../ast-nodes/jsx-element");
10
10
  var _createRule = require("../utils/create-rule");
11
- // eslint-disable-next-line import/no-extraneous-dependencies
12
-
13
11
  var DATE_PICKER = 'DatePicker';
14
12
  var DATETIME_PICKER = 'DateTimePicker';
15
13
  var PROP_NAME = 'shouldShowCalendarButton';
@@ -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 _contextCompat = require("@atlaskit/eslint-utils/context-compat");
9
9
  var _createRule = require("../utils/create-rule");
10
10
  var _getImportName = require("../utils/get-import-name");
11
- // eslint-disable-next-line import/no-extraneous-dependencies
12
-
13
11
  var headingLevelRequiredSuggestionText = exports.headingLevelRequiredSuggestionText = 'Add a `headingLevel` that is of a contextually relevant level.';
14
12
  var rule = (0, _createRule.createLintRule)({
15
13
  meta: {
@@ -9,8 +9,6 @@ var _contextCompat = require("@atlaskit/eslint-utils/context-compat");
9
9
  var _createRule = require("../utils/create-rule");
10
10
  var _getImportName = require("../utils/get-import-name");
11
11
  var _utils = require("./utils");
12
- // eslint-disable-next-line import/no-extraneous-dependencies
13
-
14
12
  var hrefRequiredSuggestionText = exports.hrefRequiredSuggestionText = 'Convert LinkItem to ButtonItem';
15
13
  var rule = (0, _createRule.createLintRule)({
16
14
  meta: {
@@ -6,8 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.insertButtonItemImport = exports.insertButtonItemDefaultImport = exports.hrefHasInvalidValue = exports.hasImportOfName = exports.getUniqueButtonItemName = void 0;
7
7
  var _eslintCodemodUtils = require("eslint-codemod-utils");
8
8
  var _findInParent = require("../utils/find-in-parent");
9
- // eslint-disable-next-line import/no-extraneous-dependencies
10
-
11
9
  var invalidHrefValues = ['', '#', null, undefined];
12
10
  var hrefHasInvalidValue = exports.hrefHasInvalidValue = function hrefHasInvalidValue(scope, href) {
13
11
  // If doesn't exist,
@@ -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 = ['title', 'titleId'];
12
10
  var rule = (0, _createRule.createLintRule)({
13
11
  meta: {
@@ -10,7 +10,7 @@ var _jsxElement = require("../../ast-nodes/jsx-element");
10
10
  var _createRule = require("../utils/create-rule");
11
11
  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; } } }; }
12
12
  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; } }
13
- 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; } // eslint-disable-next-line import/no-extraneous-dependencies
13
+ 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; }
14
14
  var PROP_NAME = 'hasCloseButton';
15
15
 
16
16
  // Lint rule message
@@ -72,7 +72,7 @@ var rule = (0, _createRule.createLintRule)({
72
72
  return;
73
73
  }
74
74
  var name = node.openingElement.name.name;
75
- if (name !== defaultImportLocalName) {
75
+ if (![defaultImportLocalName, modalHeaderLocalName].includes(name)) {
76
76
  return;
77
77
  }
78
78
  var modalHeaderNode = null;
@@ -136,13 +136,31 @@ var rule = (0, _createRule.createLintRule)({
136
136
  _iterator.f();
137
137
  }
138
138
  };
139
- searchNode(node);
139
+ if (name === defaultImportLocalName) {
140
+ searchNode(node);
141
+
142
+ // If there is a close button, skip the rest, as this satisfies the
143
+ // rule. If there is a modal header, it will be recognized in later
144
+ // scans, so don't add duplicate errors
145
+ if (closeButtonNode || modalHeaderNode) {
146
+ return;
147
+ // No close button or modal header exists
148
+ } else {
149
+ return context.report({
150
+ node: node,
151
+ messageId: 'noCloseButtonExists'
152
+ });
153
+ }
154
+ } else if (name === modalHeaderLocalName) {
155
+ modalHeaderNode = node;
156
+ searchNode(node);
157
+
158
+ // If there is a close button, skip the rest, as this satisfies the rule.
159
+ if (closeButtonNode) {
160
+ return;
161
+ }
140
162
 
141
- // If there is a close button, skip the rest, as this satisfies the rule.
142
- if (closeButtonNode) {
143
- return;
144
163
  // No close button exists, so check the modal header
145
- } else if (modalHeaderNode !== null) {
146
164
  var prop = _jsxElement.JSXElementHelper.getAttributeByName(modalHeaderNode, PROP_NAME);
147
165
 
148
166
  // If the prop exists
@@ -175,12 +193,6 @@ var rule = (0, _createRule.createLintRule)({
175
193
  }]
176
194
  });
177
195
  }
178
- // No close button or modal header exists
179
- } else {
180
- return context.report({
181
- node: node,
182
- messageId: 'noCloseButtonExists'
183
- });
184
196
  }
185
197
  }
186
198
  };
@@ -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', 'heading'];
12
10
  var rule = (0, _createRule.createLintRule)({
13
11
  meta: {
@@ -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: {
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.setPropToTrue = exports.default = exports.addProp = exports.RULE_NAME = void 0;
7
+ var _eslintCodemodUtils = require("eslint-codemod-utils");
8
+ var _createRule = require("../utils/create-rule");
9
+ // eslint-disable-next-line import/no-extraneous-dependencies
10
+
11
+ var RULE_NAME = exports.RULE_NAME = 'use-should-render-to-parent';
12
+ var PROP_NAME = 'shouldRenderToParent';
13
+ var message = "Setting the `".concat(PROP_NAME, "` prop to anything other than `true` causes accessibility issues. Only set to `false` as a last resort.");
14
+ var addProp = exports.addProp = "Add `".concat(PROP_NAME, "` prop.");
15
+ var setPropToTrue = exports.setPropToTrue = "Set `".concat(PROP_NAME, "` prop to `true`.");
16
+ var components = ['@atlaskit/popup', '@atlaskit/dropdown-menu'];
17
+ var rule = (0, _createRule.createLintRule)({
18
+ meta: {
19
+ name: RULE_NAME,
20
+ type: 'suggestion',
21
+ docs: {
22
+ description: "Encourages makers to use the `".concat(PROP_NAME, "` where possible in Atlassian Design System `Popup` and `DropdownMenu` components."),
23
+ recommended: true,
24
+ severity: 'warn'
25
+ },
26
+ messages: {
27
+ missingShouldRenderToParentProp: "The default value of `".concat(PROP_NAME, "` is `false`. ").concat(message),
28
+ falseShouldRenderToParentProp: message
29
+ },
30
+ hasSuggestions: true
31
+ },
32
+ create: function create(context) {
33
+ var componentLocalName;
34
+ return {
35
+ ImportDeclaration: function ImportDeclaration(node) {
36
+ var source = node.source.value;
37
+ if (typeof source !== 'string') {
38
+ return;
39
+ }
40
+ if (!components.includes(source)) {
41
+ return;
42
+ }
43
+ if (!node.specifiers.length) {
44
+ return;
45
+ }
46
+ var defaultImport = node.specifiers.filter(function (spec) {
47
+ return spec.type === 'ImportDefaultSpecifier';
48
+ });
49
+ var namedImport = node.specifiers.filter(function (spec) {
50
+ return spec.type === 'ImportSpecifier';
51
+ });
52
+
53
+ // If popup or dropdown menu and using a default import
54
+ if (defaultImport.length && defaultImport[0].local) {
55
+ componentLocalName = defaultImport[0].local.name;
56
+ // or if popup and using a named import
57
+ } else if (namedImport.length && namedImport[0].type === 'ImportSpecifier' && namedImport[0].imported.name === 'Popup') {
58
+ componentLocalName = namedImport[0].local.name;
59
+ }
60
+ },
61
+ JSXElement: function JSXElement(node) {
62
+ if (!(0, _eslintCodemodUtils.isNodeOfType)(node, 'JSXElement')) {
63
+ return;
64
+ }
65
+ if (!(0, _eslintCodemodUtils.isNodeOfType)(node.openingElement.name, 'JSXIdentifier')) {
66
+ return;
67
+ }
68
+ var name = node.openingElement.name.name;
69
+ if (name === componentLocalName) {
70
+ var prop = node.openingElement.attributes.find(function (attr) {
71
+ return (0, _eslintCodemodUtils.isNodeOfType)(attr, 'JSXAttribute') && (0, _eslintCodemodUtils.isNodeOfType)(attr.name, 'JSXIdentifier') && attr.name.name === PROP_NAME;
72
+ });
73
+
74
+ // If the prop does not exist, throw
75
+ if (!prop) {
76
+ return context.report({
77
+ node: node.openingElement.name,
78
+ messageId: 'missingShouldRenderToParentProp',
79
+ suggest: [{
80
+ desc: addProp,
81
+ fix: function fix(fixer) {
82
+ return [fixer.insertTextAfter(node.openingElement.name, " ".concat(PROP_NAME))];
83
+ }
84
+ }]
85
+ });
86
+ }
87
+
88
+ // If the prop is a boolean attribute with no value (set to `true`),
89
+ // it's valid
90
+ if (!('value' in prop) || prop.value === null) {
91
+ return;
92
+ }
93
+
94
+ // If the prop has a falsy literal value or a falsy value in an
95
+ // expression container, throw
96
+ if ((0, _eslintCodemodUtils.isNodeOfType)(prop.value, 'Literal') && !prop.value.value || (0, _eslintCodemodUtils.isNodeOfType)(prop.value, 'JSXExpressionContainer') && prop.value.expression.type === 'Literal' && !prop.value.expression.value) {
97
+ return context.report({
98
+ node: prop,
99
+ messageId: 'falseShouldRenderToParentProp',
100
+ suggest: [{
101
+ desc: setPropToTrue,
102
+ fix: function fix(fixer) {
103
+ return [fixer.replaceText(prop, PROP_NAME)];
104
+ }
105
+ }]
106
+ });
107
+ }
108
+ }
109
+ }
110
+ };
111
+ }
112
+ });
113
+ var _default = exports.default = rule;