From 6f3b576f3f10ae5633643a0f440a0f09b8fd4491 Mon Sep 17 00:00:00 2001 From: aojunhao123 <1844749591@qq.com> Date: Sun, 17 Aug 2025 21:22:48 +0800 Subject: [PATCH 01/24] clean code --- .dumirc.ts | 6 +- .gitignore | 1 + HISTORY.md | 59 -- README.md | 36 +- assets/index.less | 79 -- assets/index/Mask.less | 65 -- assets/index/Mobile.less | 55 -- docs/demos/body-overflow.md | 8 - docs/demos/case.md | 8 - docs/demos/click-nested.md | 8 - docs/demos/clip.md | 8 - docs/demos/container.md | 8 - docs/demos/inside.md | 8 - docs/demos/large-popup.md | 8 - docs/demos/mobile.md | 8 - docs/demos/nested.md | 8 - docs/demos/point.md | 8 - docs/demos/portal.md | 8 - docs/demos/shadow.md | 8 - docs/demos/simple.md | 8 - docs/demos/static-scroll.md | 8 - docs/demos/visible-fallback.md | 8 - docs/examples/body-overflow.tsx | 254 ------ docs/examples/case.less | 109 --- docs/examples/case.tsx | 245 ------ docs/examples/click-nested.tsx | 94 --- docs/examples/clip.tsx | 108 --- docs/examples/container.tsx | 200 ----- docs/examples/inside.tsx | 180 ----- docs/examples/large-popup.tsx | 103 --- docs/examples/mobile.tsx | 68 -- docs/examples/nested.tsx | 126 --- docs/examples/point.less | 3 - docs/examples/point.tsx | 89 --- docs/examples/portal.tsx | 110 --- docs/examples/shadow.tsx | 83 -- docs/examples/simple.tsx | 385 --------- docs/examples/static-scroll.tsx | 64 -- docs/examples/visible-fallback.tsx | 109 --- docs/index.md | 4 +- now.json | 11 - package.json | 16 +- src/Popup/Arrow.tsx | 66 -- src/Popup/Mask.tsx | 48 -- src/Popup/PopupContent.tsx | 17 - src/Popup/index.tsx | 325 -------- src/context.ts | 9 - src/hooks/useAction.ts | 34 - src/hooks/useAlign.ts | 762 ------------------ src/hooks/useWatch.ts | 48 -- src/hooks/useWinClick.ts | 92 --- src/index.tsx | 790 ------------------- src/interface.ts | 126 +-- src/mock.tsx | 34 - src/util.ts | 193 ----- tests/align.test.tsx | 299 ------- tests/arrow.test.jsx | 214 ----- tests/basic.test.jsx | 1180 ---------------------------- tests/flip-visibleFirst.test.tsx | 321 -------- tests/flip.test.tsx | 561 ------------- tests/flipShift.test.tsx | 229 ------ tests/mask.test.jsx | 40 - tests/mobile.test.tsx | 116 --- tests/motion.test.jsx | 161 ---- tests/perf.test.tsx | 102 --- tests/point.test.jsx | 190 ----- tests/portal.test.jsx | 73 -- tests/rect.test.tsx | 77 -- tests/ref.test.tsx | 53 -- tests/shadow.test.tsx | 200 ----- tests/util.tsx | 104 --- 71 files changed, 46 insertions(+), 9200 deletions(-) delete mode 100644 HISTORY.md delete mode 100644 assets/index/Mask.less delete mode 100644 assets/index/Mobile.less delete mode 100644 docs/demos/body-overflow.md delete mode 100644 docs/demos/case.md delete mode 100644 docs/demos/click-nested.md delete mode 100644 docs/demos/clip.md delete mode 100644 docs/demos/container.md delete mode 100644 docs/demos/inside.md delete mode 100644 docs/demos/large-popup.md delete mode 100644 docs/demos/mobile.md delete mode 100644 docs/demos/nested.md delete mode 100644 docs/demos/point.md delete mode 100644 docs/demos/portal.md delete mode 100644 docs/demos/shadow.md delete mode 100644 docs/demos/simple.md delete mode 100644 docs/demos/static-scroll.md delete mode 100644 docs/demos/visible-fallback.md delete mode 100644 docs/examples/body-overflow.tsx delete mode 100644 docs/examples/case.less delete mode 100644 docs/examples/case.tsx delete mode 100644 docs/examples/click-nested.tsx delete mode 100644 docs/examples/clip.tsx delete mode 100644 docs/examples/container.tsx delete mode 100644 docs/examples/inside.tsx delete mode 100644 docs/examples/large-popup.tsx delete mode 100644 docs/examples/mobile.tsx delete mode 100644 docs/examples/nested.tsx delete mode 100644 docs/examples/point.less delete mode 100644 docs/examples/point.tsx delete mode 100644 docs/examples/portal.tsx delete mode 100644 docs/examples/shadow.tsx delete mode 100644 docs/examples/simple.tsx delete mode 100644 docs/examples/static-scroll.tsx delete mode 100644 docs/examples/visible-fallback.tsx delete mode 100644 now.json delete mode 100644 src/Popup/Arrow.tsx delete mode 100644 src/Popup/Mask.tsx delete mode 100644 src/Popup/PopupContent.tsx delete mode 100644 src/Popup/index.tsx delete mode 100644 src/hooks/useAction.ts delete mode 100644 src/hooks/useAlign.ts delete mode 100644 src/hooks/useWatch.ts delete mode 100644 src/hooks/useWinClick.ts delete mode 100644 src/mock.tsx delete mode 100644 tests/align.test.tsx delete mode 100644 tests/arrow.test.jsx delete mode 100644 tests/basic.test.jsx delete mode 100644 tests/flip-visibleFirst.test.tsx delete mode 100644 tests/flip.test.tsx delete mode 100644 tests/flipShift.test.tsx delete mode 100644 tests/mask.test.jsx delete mode 100644 tests/mobile.test.tsx delete mode 100644 tests/motion.test.jsx delete mode 100644 tests/perf.test.tsx delete mode 100644 tests/point.test.jsx delete mode 100644 tests/portal.test.jsx delete mode 100644 tests/rect.test.tsx delete mode 100644 tests/ref.test.tsx delete mode 100644 tests/shadow.test.tsx delete mode 100644 tests/util.tsx diff --git a/.dumirc.ts b/.dumirc.ts index efcef9c..6d575e3 100644 --- a/.dumirc.ts +++ b/.dumirc.ts @@ -3,13 +3,13 @@ import path from 'path'; export default defineConfig({ alias: { - 'rc-trigger$': path.resolve('src'), - 'rc-trigger/es': path.resolve('src'), + 'rc-listy$': path.resolve('src'), + 'rc-listy/es': path.resolve('src'), }, mfsu: false, favicons: ['https://avatars0.githubusercontent.com/u/9441414?s=200&v=4'], themeConfig: { - name: 'Trigger', + name: 'Listy', logo: 'https://avatars0.githubusercontent.com/u/9441414?s=200&v=4', }, styles: [ diff --git a/.gitignore b/.gitignore index 02e6333..d048bce 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,7 @@ es coverage yarn.lock package-lock.json +pnpm-lock.yaml bun.lockb .vscode diff --git a/HISTORY.md b/HISTORY.md deleted file mode 100644 index c159b6b..0000000 --- a/HISTORY.md +++ /dev/null @@ -1,59 +0,0 @@ -# History - ---- - -## 4.1.0 / 2020-05-08 - -- upgrade rc-animate to `3.x` - -## 2.5.0 / 2018-06-05 - -- support `alignPoint` - -## 2.1.0 / 2017-10-16 - -- add action `contextMenu` - -## 2.0.0 / 2017-09-25 - -- support React 16 - -## 1.11.0 / 2017-06-07 - -- add es - -## 1.9.0 / 2017-02-27 - -- add getDocument prop - -## 1.8.2 / 2017-02-24 - -- change default container to absolute to fix scrollbar change problem - -## 1.7.0 / 2016-07-18 - -- use getContainerRenderMixin from 'rc-util' - -## 1.6.0 / 2016-05-26 - -- support popup as function - -## 1.5.0 / 2016-05-26 - -- add forcePopupAlign method - -## 1.4.0 / 2016-04-06 - -- support onPopupAlign - -## 1.3.0 / 2016-03-25 - -- support mask/maskTransitionName/zIndex - -## 1.2.0 / 2016-03-01 - -- add showAction/hideAction - -## 1.1.0 / 2016-01-06 - -- add root trigger node as parameter of getPopupContainer diff --git a/README.md b/README.md index 6f8662e..199d8cd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# @rc-component/trigger +# @rc-component/Listy -React Trigger Component +React Listy Component [![NPM version][npm-image]][npm-url] [![npm download][download-image]][download-url] @@ -9,30 +9,30 @@ React Trigger Component [![bundle size][bundlephobia-image]][bundlephobia-url] [![dumi][dumi-image]][dumi-url] -[npm-image]: http://img.shields.io/npm/v/@rc-component/trigger.svg?style=flat-square -[npm-url]: http://npmjs.org/package/@rc-component/trigger -[github-actions-image]: https://github.com/react-component/trigger/workflows/CI/badge.svg -[github-actions-url]: https://github.com/react-component/trigger/actions -[codecov-image]: https://img.shields.io/codecov/c/github/react-component/trigger/master.svg?style=flat-square -[codecov-url]: https://codecov.io/gh/react-component/trigger/branch/master -[david-url]: https://david-dm.org/react-component/trigger -[david-image]: https://david-dm.org/react-component/trigger/status.svg?style=flat-square -[david-dev-url]: https://david-dm.org/react-component/trigger?type=dev -[david-dev-image]: https://david-dm.org/react-component/trigger/dev-status.svg?style=flat-square -[download-image]: https://img.shields.io/npm/dm/@rc-component/trigger.svg?style=flat-square -[download-url]: https://npmjs.org/package/@rc-component/trigger -[bundlephobia-url]: https://bundlephobia.com/result?p=@rc-component/trigger -[bundlephobia-image]: https://badgen.net/bundlephobia/minzip/@rc-component/trigger +[npm-image]: http://img.shields.io/npm/v/@rc-component/listy.svg?style=flat-square +[npm-url]: http://npmjs.org/package/@rc-component/listy +[github-actions-image]: https://github.com/react-component/listy/workflows/CI/badge.svg +[github-actions-url]: https://github.com/react-component/listy/actions +[codecov-image]: https://img.shields.io/codecov/c/github/react-component/listy/master.svg?style=flat-square +[codecov-url]: https://codecov.io/gh/react-component/listy/branch/master +[david-url]: https://david-dm.org/react-component/listy +[david-image]: https://david-dm.org/react-component/listy/status.svg?style=flat-square +[david-dev-url]: https://david-dm.org/react-component/listy?type=dev +[david-dev-image]: https://david-dm.org/react-component/listy/dev-status.svg?style=flat-square +[download-image]: https://img.shields.io/npm/dm/@rc-component/listy.svg?style=flat-square +[download-url]: https://npmjs.org/package/@rc-component/listy +[bundlephobia-url]: https://bundlephobia.com/result?p=@rc-component/listy +[bundlephobia-image]: https://badgen.net/bundlephobia/minzip/@rc-component/listy [dumi-image]: https://img.shields.io/badge/docs%20by-dumi-blue?style=flat-square [dumi-url]: https://github.com/umijs/dumi ## Install -[![@rc-component/trigger](https://nodei.co/npm/@rc-component/trigger.png)](https://npmjs.org/package/@rc-component/trigger) +[![@rc-component/listy](https://nodei.co/npm/@rc-component/listy.png)](https://npmjs.org/package/@rc-component/listy) ## Usage -Include the default [styling](https://github.com/react-component/trigger/blob/master/assets/index.less#L4:L11) and then: +Include the default [styling](https://github.com/react-component/listy/blob/master/assets/index.less#L4:L11) and then: ```js import React from 'react'; diff --git a/assets/index.less b/assets/index.less index e13a125..e69de29 100644 --- a/assets/index.less +++ b/assets/index.less @@ -1,79 +0,0 @@ -@triggerPrefixCls: rc-trigger-popup; - -.@{triggerPrefixCls} { - position: absolute; - top: -9999px; - left: -9999px; - z-index: 1050; - - &-hidden { - display: none; - } - - .effect() { - animation-duration: 0.3s; - animation-fill-mode: both; - } - - &-zoom-enter, - &-zoom-appear { - opacity: 0; - animation-play-state: paused; - animation-timing-function: cubic-bezier(0.18, 0.89, 0.32, 1.28); - .effect(); - } - - &-zoom-leave { - .effect(); - animation-play-state: paused; - animation-timing-function: cubic-bezier(0.6, -0.3, 0.74, 0.05); - } - - &-zoom-enter&-zoom-enter-active, - &-zoom-appear&-zoom-appear-active { - animation-name: rcTriggerZoomIn; - animation-play-state: running; - } - - &-zoom-leave&-zoom-leave-active { - animation-name: rcTriggerZoomOut; - animation-play-state: running; - } - - &-arrow { - z-index: 1; - width: 0px; - height: 0px; - background: #000; - border-radius: 100vw; - box-shadow: 0 0 0 3px black; - } - - @keyframes rcTriggerZoomIn { - 0% { - transform: scale(0, 0); - transform-origin: var(--arrow-x, 50%) var(--arrow-y, 50%); - opacity: 0; - } - 100% { - transform: scale(1, 1); - transform-origin: var(--arrow-x, 50%) var(--arrow-y, 50%); - opacity: 1; - } - } - @keyframes rcTriggerZoomOut { - 0% { - transform: scale(1, 1); - transform-origin: var(--arrow-x, 50%) var(--arrow-y, 50%); - opacity: 1; - } - 100% { - transform: scale(0, 0); - transform-origin: var(--arrow-x, 50%) var(--arrow-y, 50%); - opacity: 0; - } - } -} - -@import './index/Mask'; -@import './index/Mobile'; diff --git a/assets/index/Mask.less b/assets/index/Mask.less deleted file mode 100644 index a7b40bf..0000000 --- a/assets/index/Mask.less +++ /dev/null @@ -1,65 +0,0 @@ -.@{triggerPrefixCls} { - &-mask { - position: fixed; - top: 0; - right: 0; - left: 0; - bottom: 0; - background-color: rgb(55, 55, 55); - background-color: rgba(55, 55, 55, 0.6); - height: 100%; - filter: alpha(opacity=50); - z-index: 1050; - - &-hidden { - display: none; - } - } - - .fade-effect() { - animation-duration: 0.3s; - animation-fill-mode: both; - animation-timing-function: cubic-bezier(0.55, 0, 0.55, 0.2); - } - - &-fade-enter, - &-fade-appear { - opacity: 0; - .fade-effect(); - animation-play-state: paused; - } - - &-fade-leave { - .fade-effect(); - animation-play-state: paused; - } - - &-fade-enter&-fade-enter-active, - &-fade-appear&-fade-appear-active { - animation-name: rcTriggerMaskFadeIn; - animation-play-state: running; - } - - &-fade-leave&-fade-leave-active { - animation-name: rcDialogFadeOut; - animation-play-state: running; - } - - @keyframes rcTriggerMaskFadeIn { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } - } - - @keyframes rcDialogFadeOut { - 0% { - opacity: 1; - } - 100% { - opacity: 0; - } - } -} diff --git a/assets/index/Mobile.less b/assets/index/Mobile.less deleted file mode 100644 index 81cdd3b..0000000 --- a/assets/index/Mobile.less +++ /dev/null @@ -1,55 +0,0 @@ -.@{triggerPrefixCls} { - &-mobile { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: auto; - - // Motion - &.raise { - &-enter, - &-appear { - transform: translateY(100%); - - &-active { - transition: all 0.3s; - transform: translateY(0); - } - } - - &-leave { - transform: translateY(0); - - &-active { - transition: all 0.3s; - transform: translateY(100%); - } - } - } - - // Mask - &-mask { - &.fade { - &-enter, - &-appear { - opacity: 0; - - &-active { - transition: all 0.3s; - opacity: 1; - } - } - - &-leave { - opacity: 1; - - &-active { - transition: all 0.3s; - opacity: 0; - } - } - } - } - } -} diff --git a/docs/demos/body-overflow.md b/docs/demos/body-overflow.md deleted file mode 100644 index b8fe6fa..0000000 --- a/docs/demos/body-overflow.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Body Overflow -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/demos/case.md b/docs/demos/case.md deleted file mode 100644 index 7a7c3cf..0000000 --- a/docs/demos/case.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Case -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/demos/click-nested.md b/docs/demos/click-nested.md deleted file mode 100644 index d1fa6cc..0000000 --- a/docs/demos/click-nested.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Click Nested -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/demos/clip.md b/docs/demos/clip.md deleted file mode 100644 index 017d539..0000000 --- a/docs/demos/clip.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Clip -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/demos/container.md b/docs/demos/container.md deleted file mode 100644 index d607f16..0000000 --- a/docs/demos/container.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Container -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/demos/inside.md b/docs/demos/inside.md deleted file mode 100644 index 6a1ccb0..0000000 --- a/docs/demos/inside.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Inside -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/demos/large-popup.md b/docs/demos/large-popup.md deleted file mode 100644 index 24cf8b1..0000000 --- a/docs/demos/large-popup.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Large Popup -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/demos/mobile.md b/docs/demos/mobile.md deleted file mode 100644 index 298eb12..0000000 --- a/docs/demos/mobile.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Mobile -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/demos/nested.md b/docs/demos/nested.md deleted file mode 100644 index bfd0c6b..0000000 --- a/docs/demos/nested.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Nested -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/demos/point.md b/docs/demos/point.md deleted file mode 100644 index 1d31f1c..0000000 --- a/docs/demos/point.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Point -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/demos/portal.md b/docs/demos/portal.md deleted file mode 100644 index 5611bd1..0000000 --- a/docs/demos/portal.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Portal -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/demos/shadow.md b/docs/demos/shadow.md deleted file mode 100644 index 029c60c..0000000 --- a/docs/demos/shadow.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Shadow -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/demos/simple.md b/docs/demos/simple.md deleted file mode 100644 index 6ac4ca8..0000000 --- a/docs/demos/simple.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Simple -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/demos/static-scroll.md b/docs/demos/static-scroll.md deleted file mode 100644 index 14a1846..0000000 --- a/docs/demos/static-scroll.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Static Scroll -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/demos/visible-fallback.md b/docs/demos/visible-fallback.md deleted file mode 100644 index 71d0d91..0000000 --- a/docs/demos/visible-fallback.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Visible Fallback -nav: - title: Demo - path: /demo ---- - - diff --git a/docs/examples/body-overflow.tsx b/docs/examples/body-overflow.tsx deleted file mode 100644 index 924de83..0000000 --- a/docs/examples/body-overflow.tsx +++ /dev/null @@ -1,254 +0,0 @@ -/* eslint no-console:0 */ -import Trigger from '@rc-component/trigger'; -import React from 'react'; -import { createPortal } from 'react-dom'; -import '../../assets/index.less'; - -const PortalDemo = () => { - return createPortal( -
- PortalNode -
, - document.body, - ); -}; - -export default () => { - const [open, setOpen] = React.useState(false); - const [open1, setOpen1] = React.useState(false); - const [open2, setOpen2] = React.useState(false); - const [open3, setOpen3] = React.useState(false); - return ( - -