浏览代码

feat: [TreeSelect] add clicktriggertohide API (#1512)

* feat: [TreeSelect] add clicktriggertohide API

* chore: update yarn.lock
YyumeiZhang 2 年之前
父节点
当前提交
4a617f06c5

+ 1 - 0
content/input/treeselect/index-en-US.md

@@ -1386,6 +1386,7 @@ function Demo() {
 | className                | Class name                                                                          | string                                                            | -           | -       |
 | clearIcon    | Can be used to customize the clear button, valid when showClear is true                       | ReactNode                |       | 2.25.0    |
 | clickToHide  | Whether to close the drop-down layer automatically when selecting, only works in single-selection mode  | boolean    | true | 1.5.0      |
+| clickTriggerToHide  | When the panel is open, whether to close the panel after clicking the Trigger  | boolean    | true | 2.32.0      |
 | defaultExpandAll    | Set whether to expand all nodes during initialization. And if the data (`treeData`) changes, this api cannot affect the expansion of the node. If you need this, you can use `expandAll`    | boolean                     | false   | 0.32.0 |
 | defaultExpandedKeys | Keys of default expanded nodes. Direct child nodes will be displayed. | string\[] | - | 0.32.0 |
 | defaultOpen | Toggle whether to open dropdown menu by default | boolean | false | 0.32.0 |

+ 1 - 0
content/input/treeselect/index.md

@@ -1369,6 +1369,7 @@ function Demo() {
 | className | 选择框的 `className` 属性 | string | - | - |
 | clearIcon | 可用于自定义清除按钮, showClear为true时有效 | ReactNode | |2.25.0  |
 | clickToHide  | 选择后是否自动关闭下拉弹层,仅单选模式有效  | boolean    | true | 1.5.0      |
+| clickTriggerToHide  | 面板打开状态下,点击 Trigger 后是否关闭面板  | boolean    | true | 2.32.0      |
 | defaultExpandAll | 设置在初始化时是否展开所有节点。而如果后续数据(`treeData`)发生改变,这个 api 是无法影响节点的展开情况的,如果有这个需要可以使用 `expandAll` | boolean | false | 0.32.0 |
 | defaultExpandedKeys | 默认展开的节点,显示其直接子级 | string\[] | - | 0.32.0 |
 | defaultOpen | 默认展开下拉菜单 | boolean | false | 0.32.0 |

+ 16 - 0
cypress/integration/treeSelect.spec.js

@@ -92,5 +92,21 @@ describe('treeSelect', () => {
         cy.get('.semi-tree-option').eq(0).click();
         cy.get('.semi-tree-select-selection-TriggerSearchItem').eq(0).should('contain.text', '亚洲');
     });
+
+    it('treeSelect clickTriggerToHide', () => {
+        // 测试 clickTriggerToHide API 是否符合预期
+        // 未设置 clickTriggerToHide, 默认为 true, 面板打开状态下再次点击会关闭
+        cy.visit('http://127.0.0.1:6006/iframe.html?id=treeselect--click-trigger-to-hide');
+        cy.get('.semi-tree-select').eq(0).click();
+        cy.get('.semi-tree-select-popover').should('exist');
+        cy.get('.semi-tree-select').eq(0).click();
+        cy.get('.semi-tree-select-popover').should('not.exist');
+
+        // clickTriggerToHide 设置为 false, 面板打开的状态下再次点击不会关闭
+        cy.get('.semi-tree-select').eq(1).click();
+        cy.get('.semi-tree-select-popover').should('exist');
+        cy.get('.semi-tree-select').eq(1).click();
+        cy.get('.semi-tree-select-popover').should('exist');
+    });
 });
 

+ 3 - 2
packages/semi-foundation/treeSelect/foundation.ts

@@ -128,6 +128,7 @@ export interface BasicTreeSelectProps extends Pick<BasicTreeProps,
     loadedKeys?: string[];
     showRestTagsPopover?: boolean;
     restTagsPopoverProps?: any;
+    clickTriggerToHide?: boolean;
     loadData?: (data: BasicTreeNodeData) => Promise<void>;
     onSelect?: (selectedKeys: string, selected: boolean, selectedNode: BasicTreeNodeData) => void;
     searchRender?: (inputProps: any) => any;
@@ -481,7 +482,7 @@ export default class TreeSelectFoundation<P = Record<string, any>, S = Record<st
     handleClick(e: any) {
         const isDisabled = this._isDisabled();
         const { isOpen, inputValue, isFocus } = this.getStates();
-        const { searchPosition } = this.getProps();
+        const { searchPosition, clickTriggerToHide } = this.getProps();
         if (isDisabled) {
             return;
         } else {
@@ -492,7 +493,7 @@ export default class TreeSelectFoundation<P = Record<string, any>, S = Record<st
                 if (searchPosition === 'trigger' && inputValue) {
                     return;
                 }
-                this.close(e);
+                clickTriggerToHide && this.close(e);
             } else {
                 this.open();
             }

+ 20 - 0
packages/semi-ui/treeSelect/_story/treeSelect.stories.jsx

@@ -2107,3 +2107,23 @@ export const searchPositionInTriggerAndVirtualize = () => {
       </>
   );
 };
+
+export const clickTriggerToHide = () => (
+  <>
+      <p>clickTriggerToHide 未设置,默认为 true</p>
+      <TreeSelect
+          style={{ width: 300 }}
+          dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
+          treeData={treeData2}
+          placeholder="单选"
+      />
+      <p>clickTriggerToHide 设置为 false</p>
+      <TreeSelect
+          style={{ width: 300 }}
+          dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
+          treeData={treeData2}
+          placeholder="单选"
+          clickTriggerToHide={false}
+      />
+  </>
+);

+ 2 - 0
packages/semi-ui/treeSelect/index.tsx

@@ -264,6 +264,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
         showRestTagsPopover: PropTypes.bool,
         restTagsPopoverProps: PropTypes.object,
         preventScroll: PropTypes.bool,
+        clickTriggerToHide: PropTypes.bool,
     };
 
     static defaultProps: Partial<TreeSelectProps> = {
@@ -295,6 +296,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
         'aria-label': 'TreeSelect',
         showRestTagsPopover: false,
         restTagsPopoverProps: {},
+        clickTriggerToHide: true,
     };
     inputRef: React.RefObject<typeof Input>;
     tagInputRef: React.RefObject<TagInput>;

+ 185 - 3
yarn.lock

@@ -1456,6 +1456,24 @@
   resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz"
   integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
 
+"@douyinfe/[email protected]":
+  version "2.30.2"
+  resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation-react/-/semi-animation-react-2.30.2.tgz#8236f358164462ff0287806279d5b549bc3dff9e"
+  integrity sha512-ZrhrXpEh1Kxnt9Zjpfc6dTIVjeIwOtJKa/YVTsn6tP6MkNi4u8TZNyikcVtf0IboqPXGUgAt+ZzYrsPtWYu1Xg==
+  dependencies:
+    "@douyinfe/semi-animation" "2.12.0"
+    "@douyinfe/semi-animation-styled" "2.23.2"
+    classnames "^2.2.6"
+
+"@douyinfe/[email protected]":
+  version "2.31.1"
+  resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation-react/-/semi-animation-react-2.31.1.tgz#92d631f8bb315948e684e214958f458b55aab6a0"
+  integrity sha512-9dSAVpXuh2dV8BX2FSXgpUqZy7EhpEkzysN/eOxJXvLulBTB+1HVMiD2QtuKk8bz2bNmfyELZDMcTefYS0MMdw==
+  dependencies:
+    "@douyinfe/semi-animation" "2.12.0"
+    "@douyinfe/semi-animation-styled" "2.23.2"
+    classnames "^2.2.6"
+
 "@douyinfe/[email protected]":
   version "2.23.2"
   resolved "https://registry.npmjs.org/@douyinfe/semi-animation-styled/-/semi-animation-styled-2.23.2.tgz"
@@ -1469,6 +1487,62 @@
     "@babel/runtime-corejs3" "^7.15.4"
     bezier-easing "^2.1.0"
 
+"@douyinfe/[email protected]":
+  version "2.30.2"
+  resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation/-/semi-animation-2.30.2.tgz#1639825f99247f4b2c44383510eb3e8cb360955a"
+  integrity sha512-st1m/1kyjE903RzRLngqkSNJzZWFb4A4ezYO1XYj4neUhTLbtT37orCH5SezNwUeEO4bgXxeteVzhhcsKCAMKA==
+  dependencies:
+    bezier-easing "^2.1.0"
+
+"@douyinfe/[email protected]":
+  version "2.31.1"
+  resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation/-/semi-animation-2.31.1.tgz#3ccb26a4fc0a60b6bbd1803f1d1a2b55e5bd5f68"
+  integrity sha512-imyMurbmcj7+v6sse1tRr0gWK5W+Ss5SQ3lXWoaK62aZd6zZwDSk9ETnXt0/SRPR12Cfzl9Ja+n5LSqa2SOySA==
+  dependencies:
+    bezier-easing "^2.1.0"
+
+"@douyinfe/[email protected]":
+  version "2.30.2"
+  resolved "https://registry.yarnpkg.com/@douyinfe/semi-foundation/-/semi-foundation-2.30.2.tgz#f7a3f983da02a2843c8e95604f10c08d5c8e922c"
+  integrity sha512-f9W1ylv27iom9jLetQYK8oR5zrsPElf3U2F1fYFxsDqQYHMMBf2eMVz65cGRO7qemD+Ytkq6OW1NxTluuAJihg==
+  dependencies:
+    "@douyinfe/semi-animation" "2.12.0"
+    async-validator "^3.5.0"
+    classnames "^2.2.6"
+    date-fns "^2.9.0"
+    date-fns-tz "^1.0.10"
+    lodash "^4.17.21"
+    memoize-one "^5.2.1"
+    scroll-into-view-if-needed "^2.2.24"
+
+"@douyinfe/[email protected]":
+  version "2.31.1"
+  resolved "https://registry.yarnpkg.com/@douyinfe/semi-foundation/-/semi-foundation-2.31.1.tgz#0ad7fce26321b217e12d0a959364e9c6c0950825"
+  integrity sha512-eEPPKS739iy1IP8KO1j/icL1Xz8DEgLbk2Cnaw2IH6qSOlw03HlrMRNVcr/yUEcsKgtoEt+Usm3b6PneZUwWkg==
+  dependencies:
+    "@douyinfe/semi-animation" "2.12.0"
+    async-validator "^3.5.0"
+    classnames "^2.2.6"
+    date-fns "^2.9.0"
+    date-fns-tz "^1.0.10"
+    lodash "^4.17.21"
+    memoize-one "^5.2.1"
+    scroll-into-view-if-needed "^2.2.24"
+
+"@douyinfe/[email protected]":
+  version "2.30.2"
+  resolved "https://registry.yarnpkg.com/@douyinfe/semi-icons/-/semi-icons-2.30.2.tgz#03bf9a5ef99bf3b77557379d631908889767b8aa"
+  integrity sha512-Km8SEwDHIF/sZlvFEPW5vItlnSlWSme/N8Kd3pgsHXPIaslyhHcTaOq7LnHFahf4weTWcq6i6RTdDJKhzn6YGg==
+  dependencies:
+    classnames "^2.2.6"
+
+"@douyinfe/[email protected]", "@douyinfe/semi-icons@^2.0.0":
+  version "2.31.1"
+  resolved "https://registry.yarnpkg.com/@douyinfe/semi-icons/-/semi-icons-2.31.1.tgz#0071171dfe39ca3c3e6f0d8e881f1965701a1f8b"
+  integrity sha512-zL3hwK9ti9cs16KqzjkHwmVknWJtgodxkIbyOGR/naC8cHMAmldFhbvTpjU9axxj3MhM6ihzBBHOvMAccafG9A==
+  dependencies:
+    classnames "^2.2.6"
+
 "@douyinfe/semi-icons@latest":
   version "2.9.1"
   resolved "https://registry.yarnpkg.com/@douyinfe/semi-icons/-/semi-icons-2.9.1.tgz#7a04e1a77070220b04f63e6f65aac30155ed8ddd"
@@ -1477,6 +1551,26 @@
     "@babel/runtime-corejs3" "^7.15.4"
     classnames "^2.2.6"
 
+"@douyinfe/[email protected]":
+  version "2.30.2"
+  resolved "https://registry.yarnpkg.com/@douyinfe/semi-illustrations/-/semi-illustrations-2.30.2.tgz#e31007086d75c98c6b87789945bffcdb72cf195e"
+  integrity sha512-cjJ02F4Fg6wfWgVCpGSEUU/MDg/fc6zy2eAxMJ2yMqbERYI99y3Qk4RlckPcUnXx5LzfFAeFtM6E/ri+xMtIKQ==
+
+"@douyinfe/[email protected]":
+  version "2.31.1"
+  resolved "https://registry.yarnpkg.com/@douyinfe/semi-illustrations/-/semi-illustrations-2.31.1.tgz#642c9ff71b40ca8cc838ded3249f497546d5aadb"
+  integrity sha512-JUCbk/LNb7yPuo9T2LtQBhK5BAQo7JM0SaGdBraSbRSsXY7NbEcsOKj4x2X54JcE0mfp7EvxaS4QQbSf+r75Lg==
+
+"@douyinfe/[email protected]":
+  version "2.23.2"
+  resolved "https://registry.yarnpkg.com/@douyinfe/semi-scss-compile/-/semi-scss-compile-2.23.2.tgz#30884bb194ee9ae1e81877985e5663c3297c1ced"
+  integrity sha512-kA3bTep5Gi+JcAvtqB5MFl6L0Ai9E1A2TTexxBqVU5s47sbTBvELTGbST1vx6Fm3Ty39cWxH+E0Nh1cMZ7JfJA==
+  dependencies:
+    arg "^5.0.1"
+    fs-extra "^8.1.0"
+    lodash "^4.17.21"
+    sass "^1.54.9"
+
 "@douyinfe/semi-site-banner@^0.1.0":
   version "0.1.0"
   resolved "https://registry.npmjs.org/@douyinfe/semi-site-banner/-/semi-site-banner-0.1.0.tgz"
@@ -1533,6 +1627,45 @@
     monaco-themes "^0.3.3"
     react-live "^2.2.2"
 
+"@douyinfe/[email protected]":
+  version "2.30.2"
+  resolved "https://registry.yarnpkg.com/@douyinfe/semi-theme-default/-/semi-theme-default-2.30.2.tgz#067ea67a882fe8ebcbdbfadd090c04374e36e005"
+  integrity sha512-8ZqCWxzh6pG4nGMjHZvxNLMys27gYtNmBbleKfgDYUWeQac4lh5AU9f1TVfpe8cz2FI3JJsJt2BHfjg7t64/uA==
+  dependencies:
+    glob "^7.1.6"
+
+"@douyinfe/[email protected]":
+  version "2.31.1"
+  resolved "https://registry.yarnpkg.com/@douyinfe/semi-theme-default/-/semi-theme-default-2.31.1.tgz#08bd3751fea0a164bfe293e7c138655950fa6db5"
+  integrity sha512-V0tvRd22RDeZ2lR+GVbkq+Dr7BUw8pdc5cjTXFvCpbIVKY6woTFcraNpDyT5Rs5CTjnpMt1KoEe5XsI7ERJtPw==
+  dependencies:
+    glob "^7.1.6"
+
+"@douyinfe/semi-ui@^2.0.0":
+  version "2.31.1"
+  resolved "https://registry.yarnpkg.com/@douyinfe/semi-ui/-/semi-ui-2.31.1.tgz#9b4af06056eda3f003722a9360dc67413245d6b4"
+  integrity sha512-KkiYFBHkgAWT67N6GsfCvkzlE+xVmcvPKmW/2U+jr6h9fTTqVnBZobMF2BZI7e+6y5bQfzQZhtHiAB78pNrmHw==
+  dependencies:
+    "@douyinfe/semi-animation" "2.31.1"
+    "@douyinfe/semi-animation-react" "2.31.1"
+    "@douyinfe/semi-foundation" "2.31.1"
+    "@douyinfe/semi-icons" "2.31.1"
+    "@douyinfe/semi-illustrations" "2.31.1"
+    "@douyinfe/semi-theme-default" "2.31.1"
+    async-validator "^3.5.0"
+    classnames "^2.2.6"
+    copy-text-to-clipboard "^2.1.1"
+    date-fns "^2.9.0"
+    date-fns-tz "^1.0.10"
+    lodash "^4.17.21"
+    prop-types "^15.7.2"
+    react-resizable "^1.8.0"
+    react-sortable-hoc "^2.0.0"
+    react-window "^1.8.2"
+    resize-observer-polyfill "^1.5.1"
+    scroll-into-view-if-needed "^2.2.24"
+    utility-types "^3.10.0"
+
 "@douyinfe/semi-ui@latest":
   version "2.30.2"
   resolved "https://registry.yarnpkg.com/@douyinfe/semi-ui/-/semi-ui-2.30.2.tgz#75c2ad58ead2f96845381d8af94d32a58dec3d45"
@@ -5154,7 +5287,7 @@
   dependencies:
     "@types/react" "*"
 
-"@types/react-dom@^18.0.1":
+"@types/react-dom@>=16.0.0", "@types/react-dom@^18.0.1":
   version "18.0.3"
   resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.3.tgz"
   integrity sha512-1RRW9kst+67gveJRYPxGmVy8eVJ05O43hg77G2j5m76/RFJtMbcfAs2viQ2UNsvvDg8F7OfQZx8qQcl6ymygaQ==
@@ -5175,14 +5308,14 @@
   dependencies:
     "@types/react" "*"
 
-"@types/react-window@^1.8.5":
+"@types/react-window@^1.8.2", "@types/react-window@^1.8.5":
   version "1.8.5"
   resolved "https://registry.npmjs.org/@types/react-window/-/react-window-1.8.5.tgz"
   integrity sha512-V9q3CvhC9Jk9bWBOysPGaWy/Z0lxYcTXLtLipkt2cnRj1JOSFNF7wqGpkScSXMgBwC+fnVRg/7shwgddBG5ICw==
   dependencies:
     "@types/react" "*"
 
-"@types/react@*", "@types/react@^18.0.5":
+"@types/react@*", "@types/react@>=16.0.0", "@types/react@^18.0.5":
   version "18.0.8"
   resolved "https://registry.npmjs.org/@types/react/-/react-18.0.8.tgz"
   integrity sha512-+j2hk9BzCOrrOSJASi5XiOyBbERk9jG5O73Ya4M0env5Ixi6vUNli4qy994AINcEF+1IEHISYFfIT4zwr++LKw==
@@ -7128,6 +7261,13 @@ brace-expansion@^1.0.0, brace-expansion@^1.1.7:
     balanced-match "^1.0.0"
     concat-map "0.0.1"
 
+brace-expansion@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+  integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+  dependencies:
+    balanced-match "^1.0.0"
+
 braces@^2.3.1, braces@^2.3.2:
   version "2.3.2"
   resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz"
@@ -12804,6 +12944,16 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, gl
     once "^1.3.0"
     path-is-absolute "^1.0.0"
 
+glob@^9.2.0:
+  version "9.3.2"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.2.tgz#8528522e003819e63d11c979b30896e0eaf52eda"
+  integrity sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==
+  dependencies:
+    fs.realpath "^1.0.0"
+    minimatch "^7.4.1"
+    minipass "^4.2.4"
+    path-scurry "^1.6.1"
+
 global-dirs@^0.1.1:
   version "0.1.1"
   resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz"
@@ -16573,6 +16723,11 @@ lru-cache@^6.0.0:
   dependencies:
     yallist "^4.0.0"
 
+lru-cache@^7.14.1:
+  version "7.18.3"
+  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89"
+  integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
+
 lru-queue@^0.1.0:
   version "0.1.0"
   resolved "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz"
@@ -17543,6 +17698,13 @@ minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.2:
   dependencies:
     brace-expansion "^1.1.7"
 
+minimatch@^7.4.1:
+  version "7.4.3"
+  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.3.tgz#012cbf110a65134bb354ae9773b55256cdb045a2"
+  integrity sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==
+  dependencies:
+    brace-expansion "^2.0.1"
+
 [email protected]:
   version "4.1.0"
   resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz"
@@ -17601,6 +17763,11 @@ minipass@^3.0.0, minipass@^3.1.1:
   dependencies:
     yallist "^4.0.0"
 
+minipass@^4.0.2, minipass@^4.2.4:
+  version "4.2.5"
+  resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.5.tgz#9e0e5256f1e3513f8c34691dd68549e85b2c8ceb"
+  integrity sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==
+
 minizlib@^1.3.3:
   version "1.3.3"
   resolved "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz"
@@ -19141,6 +19308,14 @@ path-root@^0.1.1:
   dependencies:
     path-root-regex "^0.1.0"
 
+path-scurry@^1.6.1:
+  version "1.6.3"
+  resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.6.3.tgz#4eba7183d64ef88b63c7d330bddc3ba279dc6c40"
+  integrity sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g==
+  dependencies:
+    lru-cache "^7.14.1"
+    minipass "^4.0.2"
+
 [email protected]:
   version "0.1.7"
   resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
@@ -21740,6 +21915,13 @@ rimraf@^3.0.0, rimraf@^3.0.2:
   dependencies:
     glob "^7.1.3"
 
+rimraf@^4.4.0:
+  version "4.4.1"
+  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755"
+  integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==
+  dependencies:
+    glob "^9.2.0"
+
 ripemd160@^2.0.0, ripemd160@^2.0.1:
   version "2.0.2"
   resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz"