From 127d8c56dbff1091469f508629621787ed7a6e06 Mon Sep 17 00:00:00 2001 From: mydearxym Date: Mon, 26 Jul 2021 21:43:49 +0800 Subject: [PATCH 1/8] fix(tooltip): mini adjust --- src/components/Tooltip/index.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/Tooltip/index.tsx b/src/components/Tooltip/index.tsx index 38fb06205..ec1e3f46b 100755 --- a/src/components/Tooltip/index.tsx +++ b/src/components/Tooltip/index.tsx @@ -148,10 +148,9 @@ const Tooltip: FC = ({ }, onShow: (instance) => { // see https://github.com/atomiks/tippyjs/issues/260#issuecomment-462031748 - hideAll() + hideAll({ exclude: instance }) setInstance(instance) setActive(true) - // tippy.hideAll({ exclude: instance }) onShow?.() }, } From 0665ef8e64c32e5e1761d61d40cef99a82f21742 Mon Sep 17 00:00:00 2001 From: mydearxym Date: Tue, 27 Jul 2021 23:14:56 +0800 Subject: [PATCH 2/8] feat(collection-folder): basic UI done --- src/components/Buttons/MenuButton/index.tsx | 4 +- src/components/Folder/Content.js | 24 -- src/components/Folder/Content.tsx | 30 +++ src/components/Folder/DetailInfo.tsx | 22 ++ src/components/Folder/Footer.js | 25 -- src/components/Folder/Footer.tsx | 67 +++++ src/components/Folder/index.js | 85 ------- src/components/Folder/index.tsx | 58 +++++ src/components/Folder/styles/content.ts | 51 +++- src/components/Folder/styles/detail_info.ts | 18 ++ src/components/Folder/styles/footer.ts | 57 +++-- src/components/Folder/styles/index.ts | 34 +-- src/components/Folder/styles/metric.ts | 4 +- src/components/Modal/styles/index.ts | 5 +- .../ArticleDigest/DesktopView/index.tsx | 3 + src/containers/tool/AbuseReport/Footer.tsx | 2 +- .../tool/AbuseReport/ReportContent/Main.tsx | 4 +- .../tool/AbuseReport/styles/header.ts | 4 +- .../AbuseReport/styles/report_content/main.ts | 4 +- .../RightSticker/DefaultSticker.tsx | 4 +- src/containers/tool/ArticleSticker/logic.ts | 9 +- .../CollectionFolder/CategoryCardList.tsx | 48 ++++ .../tool/CollectionFolder/Creator.tsx | 101 ++++++++ .../tool/CollectionFolder/Setter.tsx | 66 +++++ .../tool/CollectionFolder/Updater.tsx | 112 +++++++++ .../tool/CollectionFolder/index.tsx | 100 ++++++++ src/containers/tool/CollectionFolder/logic.ts | 238 ++++++++++++++++++ .../tool/CollectionFolder/schema.ts | 80 ++++++ src/containers/tool/CollectionFolder/store.ts | 193 ++++++++++++++ .../tool/CollectionFolder/styles/box_view.ts | 10 + .../styles/category_card_list.ts | 11 + .../tool/CollectionFolder/styles/editor.ts | 39 +++ .../tool/CollectionFolder/styles/index.ts | 38 +++ .../tool/CollectionFolder/styles/metric.ts | 2 + .../tool/CollectionFolder/styles/setter.ts | 55 ++++ .../tool/CollectionFolder/tests/index.test.js | 10 + .../tool/CollectionFolder/tests/store.test.js | 10 + src/containers/tool/FavoritesCats/store.js | 2 +- .../unit/ArticleViewerHeader/index.js | 2 - src/spec/article.ts | 17 ++ src/spec/index.ts | 2 + src/stores/RootStore/index.ts | 2 + src/stores/index.ts | 1 + 43 files changed, 1443 insertions(+), 210 deletions(-) delete mode 100644 src/components/Folder/Content.js create mode 100644 src/components/Folder/Content.tsx create mode 100644 src/components/Folder/DetailInfo.tsx delete mode 100644 src/components/Folder/Footer.js create mode 100644 src/components/Folder/Footer.tsx delete mode 100755 src/components/Folder/index.js create mode 100755 src/components/Folder/index.tsx create mode 100644 src/components/Folder/styles/detail_info.ts create mode 100755 src/containers/tool/CollectionFolder/CategoryCardList.tsx create mode 100755 src/containers/tool/CollectionFolder/Creator.tsx create mode 100755 src/containers/tool/CollectionFolder/Setter.tsx create mode 100755 src/containers/tool/CollectionFolder/Updater.tsx create mode 100755 src/containers/tool/CollectionFolder/index.tsx create mode 100755 src/containers/tool/CollectionFolder/logic.ts create mode 100755 src/containers/tool/CollectionFolder/schema.ts create mode 100755 src/containers/tool/CollectionFolder/store.ts create mode 100755 src/containers/tool/CollectionFolder/styles/box_view.ts create mode 100755 src/containers/tool/CollectionFolder/styles/category_card_list.ts create mode 100755 src/containers/tool/CollectionFolder/styles/editor.ts create mode 100755 src/containers/tool/CollectionFolder/styles/index.ts create mode 100644 src/containers/tool/CollectionFolder/styles/metric.ts create mode 100755 src/containers/tool/CollectionFolder/styles/setter.ts create mode 100755 src/containers/tool/CollectionFolder/tests/index.test.js create mode 100755 src/containers/tool/CollectionFolder/tests/store.test.js diff --git a/src/components/Buttons/MenuButton/index.tsx b/src/components/Buttons/MenuButton/index.tsx index 6b217bfe6..1ded3e72b 100644 --- a/src/components/Buttons/MenuButton/index.tsx +++ b/src/components/Buttons/MenuButton/index.tsx @@ -22,10 +22,10 @@ export type TOption = { type TProps = { children: ReactNode options: TOption[] - extraOptions: TOption[] + extraOptions?: TOption[] placement?: TTooltipPlacement panelMinWidth?: string - onClick: (key?: string) => void + onClick?: (key?: string) => void } const MenuButton: FC = ({ diff --git a/src/components/Folder/Content.js b/src/components/Folder/Content.js deleted file mode 100644 index 3e748842b..000000000 --- a/src/components/Folder/Content.js +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react' - -import { Wrapper, TextWrapper, Cover } from './styles/content' - -const Content = ({ contentType, cover, desc }) => { - switch (contentType) { - case 'text': { - return ( - - {desc}, djifek d djifek idfk d fjdekj idfkjei dfkejife dfjei - - ) - } - - default: - return ( - - - - ) - } -} - -export default React.memo(Content) diff --git a/src/components/Folder/Content.tsx b/src/components/Folder/Content.tsx new file mode 100644 index 000000000..3e42ff1eb --- /dev/null +++ b/src/components/Folder/Content.tsx @@ -0,0 +1,30 @@ +import { FC, memo } from 'react' +import TimeAgo from 'timeago-react' + +import { ICON } from '@/config' + +import { Wrapper, Info, Total, Unit, Text, LockIcon } from './styles/content' + +type TProps = { + total?: number + updatedAt?: string + lock?: boolean +} + +const Content: FC = ({ total, updatedAt, lock }) => { + return ( + + {lock && } + + + {total} + + + + + + + ) +} + +export default memo(Content) diff --git a/src/components/Folder/DetailInfo.tsx b/src/components/Folder/DetailInfo.tsx new file mode 100644 index 000000000..8016db1a0 --- /dev/null +++ b/src/components/Folder/DetailInfo.tsx @@ -0,0 +1,22 @@ +import { FC, memo } from 'react' +import { Wrapper, Title, Desc } from './styles/detail_info' + +const DetailInfo: FC = () => { + return ( + + 名称 + 新收藏夹 + + 内容数 + 12 项 + + 最后更新时间 + 3 天前 + + 是否公开 + 公开 + + ) +} + +export default memo(DetailInfo) diff --git a/src/components/Folder/Footer.js b/src/components/Folder/Footer.js deleted file mode 100644 index 5f33483a2..000000000 --- a/src/components/Folder/Footer.js +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react' -import TimeAgo from 'timeago-react' - -import { ICON_CMD } from '@/config' - -import { Wrapper, Title, Intro, Total, Update, LockIcon } from './styles/footer' - -const Footer = ({ title, total, updatedAt, lock, onClick }) => { - return ( - - - {title} - {lock && <LockIcon src={`${ICON_CMD}/lock.svg`} />} - - - 共 {total} 项 - - - - - - ) -} - -export default React.memo(Footer) diff --git a/src/components/Folder/Footer.tsx b/src/components/Folder/Footer.tsx new file mode 100644 index 000000000..3a39daedf --- /dev/null +++ b/src/components/Folder/Footer.tsx @@ -0,0 +1,67 @@ +import { FC, memo } from 'react' + +import { ICON } from '@/config' +import { IconButton, MenuButton } from '@/components/Buttons' +import Tooltip from '@/components/Tooltip' + +import DetailInfo from './DetailInfo' +// import { LavaLampLoading } from '@/components/Loading' +import { + Wrapper, + Title, + Name, + FolderInfoPopWrapper, + MenuWrapper, + HintWrapper, + AddHint, +} from './styles/footer' + +const menuOptions = [ + { + key: 'edit', + icon: `${ICON}/edit/publish-pen.svg`, + title: '编辑', + }, + { + key: 'lock', + icon: `${ICON}/shape/lock.svg`, + title: '加锁', + }, +] + +type TProps = { + title: string + onClick: () => void +} + +const Footer: FC = ({ title, onClick }) => { + return ( + + + <Tooltip + delay={600} + content={ + <FolderInfoPopWrapper> + <DetailInfo /> + </FolderInfoPopWrapper> + } + noPadding + > + <Name>{title}</Name> + </Tooltip> + <MenuButton options={menuOptions}> + <MenuWrapper> + <IconButton path="shape/more-l.svg" mRight={0} /> + </MenuWrapper> + </MenuButton> + + + {/* */} + {/* 已收入 */} + {/* 已收入 */} + + + ) +} + +export default memo(Footer) diff --git a/src/components/Folder/index.js b/src/components/Folder/index.js deleted file mode 100755 index ec5a7fda1..000000000 --- a/src/components/Folder/index.js +++ /dev/null @@ -1,85 +0,0 @@ -/* - * - * Folder - * see orignal example at: https://codepen.io/mydearxym2/pen/YzyLYqL - * - */ - -import React from 'react' -import T from 'prop-types' - -import { ICON_CMD } from '@/config' -import { SIZE } from '@/constant' -import { buildLog } from '@/utils' - -import Content from './Content' -import Footer from './Footer' - -import { Wrapper, TabShape, EditIconWrapper, EditIcon } from './styles' - -/* eslint-disable-next-line */ -const log = buildLog('c:Folder:index') - -const Folder = ({ - size, - title, - desc, - cover, - total, - updatedAt, - lock, - editable, - contentType, - onEdit, - onSelect, -}) => { - return ( - - {editable && ( - - - - )} - - -