From f18f51ba7cf245f3cb3042540ba5f0237bdb4767 Mon Sep 17 00:00:00 2001 From: QiShaoXuan Date: Tue, 2 Aug 2022 19:10:51 +0800 Subject: [PATCH 01/48] feat: support group by status in kanban mode, resolved #40 --- .../group/scene-kanban/CardContainer.tsx | 1 + .../pendant-modify-panel/Information.tsx | 8 ++-- .../pendant-modify-panel/Select.tsx | 4 +- .../CreatePendantPanel.tsx | 15 ++++--- .../editor-core/src/block-pendant/utils.ts | 24 ++++++++---- .../components/editor-core/src/kanban/atom.ts | 39 +++++++++++++++---- .../editor-core/src/kanban/group.ts | 1 + .../editor-core/src/kanban/kanban.ts | 8 ++-- .../editor-core/src/kanban/types.ts | 5 ++- .../editor-core/src/recast-block/property.ts | 12 +++--- 10 files changed, 76 insertions(+), 41 deletions(-) diff --git a/libs/components/editor-blocks/src/blocks/group/scene-kanban/CardContainer.tsx b/libs/components/editor-blocks/src/blocks/group/scene-kanban/CardContainer.tsx index 3616c0d206..cd71b72666 100644 --- a/libs/components/editor-blocks/src/blocks/group/scene-kanban/CardContainer.tsx +++ b/libs/components/editor-blocks/src/blocks/group/scene-kanban/CardContainer.tsx @@ -41,6 +41,7 @@ const getKanbanColor = ( return DEFAULT_COLOR; } if ( + group.type === PropertyType.Status || group.type === PropertyType.Select || group.type === PropertyType.MultiSelect || group.type === DEFAULT_GROUP_ID diff --git a/libs/components/editor-core/src/block-pendant/pendant-modify-panel/Information.tsx b/libs/components/editor-core/src/block-pendant/pendant-modify-panel/Information.tsx index afd5bc5525..a8929f9e6b 100644 --- a/libs/components/editor-core/src/block-pendant/pendant-modify-panel/Information.tsx +++ b/libs/components/editor-core/src/block-pendant/pendant-modify-panel/Information.tsx @@ -4,7 +4,7 @@ import { ModifyPanelContentProps } from './types'; import { StyledDivider, StyledPopoverSubTitle } from '../StyledComponent'; import { BasicSelect } from './Select'; import { InformationProperty, InformationValue } from '../../recast-block'; -import { genInitialOptions, getPendantIconsConfigByName } from '../utils'; +import { generateInitialOptions, getPendantIconsConfigByName } from '../utils'; export default (props: ModifyPanelContentProps) => { const { onPropertyChange, onValueChange, initialValue, property } = props; @@ -38,7 +38,7 @@ export default (props: ModifyPanelContentProps) => { }} initialOptions={ propProperty?.emailOptions || - genInitialOptions( + generateInitialOptions( property?.type, getPendantIconsConfigByName('Email') ) @@ -66,7 +66,7 @@ export default (props: ModifyPanelContentProps) => { }} initialOptions={ propProperty?.phoneOptions || - genInitialOptions( + generateInitialOptions( property?.type, getPendantIconsConfigByName('Phone') ) @@ -94,7 +94,7 @@ export default (props: ModifyPanelContentProps) => { }} initialOptions={ propProperty?.locationOptions || - genInitialOptions( + generateInitialOptions( property?.type, getPendantIconsConfigByName('Location') ) diff --git a/libs/components/editor-core/src/block-pendant/pendant-modify-panel/Select.tsx b/libs/components/editor-core/src/block-pendant/pendant-modify-panel/Select.tsx index 6d0d1f26f9..b016437ac8 100644 --- a/libs/components/editor-core/src/block-pendant/pendant-modify-panel/Select.tsx +++ b/libs/components/editor-core/src/block-pendant/pendant-modify-panel/Select.tsx @@ -21,7 +21,7 @@ import { } from '@toeverything/components/ui'; import { HighLightIconInput } from './IconInput'; import { PendantConfig, IconNames, OptionIdType, OptionType } from '../types'; -import { genBasicOption } from '../utils'; +import { generateBasicOption } from '../utils'; type OptionItemType = { option: OptionType; @@ -66,7 +66,7 @@ export const BasicSelect = ({ const [selectIds, setSelectIds] = useState(initialValue); const insertOption = (insertId: OptionIdType) => { - const newOption = genBasicOption({ + const newOption = generateBasicOption({ index: options.length + 1, iconConfig, }); diff --git a/libs/components/editor-core/src/block-pendant/pendant-operation-panel/CreatePendantPanel.tsx b/libs/components/editor-core/src/block-pendant/pendant-operation-panel/CreatePendantPanel.tsx index b9d29cebe7..fa7d50bfba 100644 --- a/libs/components/editor-core/src/block-pendant/pendant-operation-panel/CreatePendantPanel.tsx +++ b/libs/components/editor-core/src/block-pendant/pendant-operation-panel/CreatePendantPanel.tsx @@ -1,5 +1,4 @@ import React, { useState, useEffect } from 'react'; -import { nanoid } from 'nanoid'; import { Input, Option, Select, Tooltip } from '@toeverything/components/ui'; import { HelpCenterIcon } from '@toeverything/components/icons'; import { AsyncBlock } from '../../editor'; @@ -15,13 +14,13 @@ import { StyledPopoverSubTitle, StyledPopoverWrapper, } from '../StyledComponent'; -import { genInitialOptions, getPendantConfigByType } from '../utils'; +import { + generateRandomFieldName, + generateInitialOptions, + getPendantConfigByType, +} from '../utils'; import { useOnCreateSure } from './hooks'; -const upperFirst = (str: string) => { - return `${str[0].toUpperCase()}${str.slice(1)}`; -}; - export const CreatePendantPanel = ({ block, onSure, @@ -35,7 +34,7 @@ export const CreatePendantPanel = ({ useEffect(() => { selectedOption && - setFieldName(upperFirst(`${selectedOption.type}#${nanoid(4)}`)); + setFieldName(generateRandomFieldName(selectedOption.type)); }, [selectedOption]); return ( @@ -93,7 +92,7 @@ export const CreatePendantPanel = ({ { return tempOptions.findIndex((o: OptionType) => o.id === id); }) - .filter(index => index != -1); + .filter(index => index !== -1); selectedId = selectedIndex.map((index: number) => { return options[index].id; }); @@ -130,7 +131,7 @@ export const getPendantIconsConfigByName = ( return pendantConfig[pendantName]; }; -export const genBasicOption = ({ +export const generateBasicOption = ({ index, iconConfig, name = '', @@ -159,22 +160,22 @@ export const genBasicOption = ({ /** * Status Pendant is a Select Pendant built-in some options * **/ -export const genInitialOptions = ( +export const generateInitialOptions = ( type: PendantTypes, iconConfig: PendantConfig ) => { if (type === PendantTypes.Status) { return [ - genBasicOption({ index: 0, iconConfig, name: 'No Started' }), - genBasicOption({ + generateBasicOption({ index: 0, iconConfig, name: 'No Started' }), + generateBasicOption({ index: 1, iconConfig, name: 'In Progress', }), - genBasicOption({ index: 2, iconConfig, name: 'Complete' }), + generateBasicOption({ index: 2, iconConfig, name: 'Complete' }), ]; } - return [genBasicOption({ index: 0, iconConfig })]; + return [generateBasicOption({ index: 0, iconConfig })]; }; export const checkPendantForm = ( @@ -222,3 +223,10 @@ export const checkPendantForm = ( return { passed: true, message: 'Check passed !' }; }; + +const upperFirst = (str: string) => { + return `${str[0].toUpperCase()}${str.slice(1)}`; +}; + +export const generateRandomFieldName = (type: PendantTypes) => + upperFirst(`${type}#${nanoid(4)}`); diff --git a/libs/components/editor-core/src/kanban/atom.ts b/libs/components/editor-core/src/kanban/atom.ts index b903e2d92f..238690863c 100644 --- a/libs/components/editor-core/src/kanban/atom.ts +++ b/libs/components/editor-core/src/kanban/atom.ts @@ -10,6 +10,12 @@ import { } from '../recast-block/types'; import type { DefaultGroup, KanbanGroup } from './types'; import { DEFAULT_GROUP_ID } from './types'; +import { + generateInitialOptions, + generateRandomFieldName, + getPendantIconsConfigByName, +} from '../block-pendant/utils'; +import { SelectOption } from '../recast-block'; /** * - If the `groupBy` is `SelectProperty` or `MultiSelectProperty`, return `(Multi)SelectProperty.options`. @@ -23,6 +29,7 @@ export const getGroupOptions = async ( return []; } switch (groupBy.type) { + case PropertyType.Status: case PropertyType.Select: case PropertyType.MultiSelect: { return groupBy.options.map(option => ({ @@ -57,6 +64,9 @@ const isValueBelongOption = ( case PropertyType.MultiSelect: { return propertyValue.value.some(i => i === option.id); } + case PropertyType.Status: { + return propertyValue.value === option.id; + } // case PropertyType.Text: { // TOTODO:DO support this type // } @@ -107,6 +117,7 @@ export const moveCardToGroup = async ( success = await removeValue(groupById); return false; } + switch (group.type) { case PropertyType.Select: { success = await setValue({ @@ -116,6 +127,14 @@ export const moveCardToGroup = async ( }); break; } + case PropertyType.Status: { + success = await setValue({ + id: groupById, + type: group.type, + value: group.id, + }); + break; + } case PropertyType.MultiSelect: { success = await setValue({ id: groupById, @@ -194,14 +213,18 @@ export const genDefaultGroup = (groupBy: RecastMetaProperty): DefaultGroup => ({ items: [], }); -export const DEFAULT_GROUP_BY_PROPERTY = { - name: 'Status', - options: [ - { name: 'No Started', color: '#E53535', background: '#FFCECE' }, - { name: 'In Progress', color: '#A77F1A', background: '#FFF5AB' }, - { name: 'Complete', color: '#3C8867', background: '#C5FBE0' }, - ], -}; +export const generateDefaultGroupByProperty = (): { + name: string; + options: Omit[]; + type: PropertyType.Status; +} => ({ + name: generateRandomFieldName(PropertyType.Status), + type: PropertyType.Status, + options: generateInitialOptions( + PropertyType.Status, + getPendantIconsConfigByName(PropertyType.Status) + ), +}); /** * Unwrap blocks from the grid recursively. diff --git a/libs/components/editor-core/src/kanban/group.ts b/libs/components/editor-core/src/kanban/group.ts index 0297946d89..e857a6865a 100644 --- a/libs/components/editor-core/src/kanban/group.ts +++ b/libs/components/editor-core/src/kanban/group.ts @@ -7,6 +7,7 @@ export const useKanbanGroup = (groupBy: RecastMetaProperty) => { const { updateSelect } = useSelectProperty(); switch (groupBy.type) { + case PropertyType.Status: case PropertyType.MultiSelect: case PropertyType.Select: { const { diff --git a/libs/components/editor-core/src/kanban/kanban.ts b/libs/components/editor-core/src/kanban/kanban.ts index 675e75db3e..21564b6b2e 100644 --- a/libs/components/editor-core/src/kanban/kanban.ts +++ b/libs/components/editor-core/src/kanban/kanban.ts @@ -18,8 +18,8 @@ import { import { supportChildren } from '../utils'; import { calcCardGroup, - DEFAULT_GROUP_BY_PROPERTY, genDefaultGroup, + generateDefaultGroupByProperty, getCardGroup, getGroupOptions, moveCardToAfter, @@ -48,6 +48,7 @@ export const useRecastKanbanGroupBy = () => { // Add other type groupBy support const supportedGroupBy = getProperties().filter( prop => + prop.type === PropertyType.Status || prop.type === PropertyType.Select || prop.type === PropertyType.MultiSelect ); @@ -88,7 +89,8 @@ export const useRecastKanbanGroupBy = () => { // TODO: support other property type if ( groupByProperty.type !== PropertyType.Select && - groupByProperty.type !== PropertyType.MultiSelect + groupByProperty.type !== PropertyType.MultiSelect && + groupByProperty.type !== PropertyType.Status ) { console.warn('Not support groupBy type', groupByProperty); @@ -134,7 +136,7 @@ export const useInitKanbanEffect = (): } // 3. no group by, no properties // create a new property and set it as group by - const prop = await createSelect(DEFAULT_GROUP_BY_PROPERTY); + const prop = await createSelect(generateDefaultGroupByProperty()); await setGroupBy(prop.id); }; diff --git a/libs/components/editor-core/src/kanban/types.ts b/libs/components/editor-core/src/kanban/types.ts index c34371f2d8..926b274c77 100644 --- a/libs/components/editor-core/src/kanban/types.ts +++ b/libs/components/editor-core/src/kanban/types.ts @@ -46,7 +46,10 @@ export type DefaultGroup = KanbanGroupBase & { type SelectGroup = KanbanGroupBase & SelectOption & { - type: PropertyType.Select | PropertyType.MultiSelect; + type: + | PropertyType.Select + | PropertyType.MultiSelect + | PropertyType.Status; }; type TextGroup = KanbanGroupBase & { diff --git a/libs/components/editor-core/src/recast-block/property.ts b/libs/components/editor-core/src/recast-block/property.ts index e8f0104269..1452bba849 100644 --- a/libs/components/editor-core/src/recast-block/property.ts +++ b/libs/components/editor-core/src/recast-block/property.ts @@ -257,14 +257,12 @@ export const getRecastItemValue = (block: RecastItem | AsyncBlock) => { const isSelectLikeProperty = ( metaProperty?: RecastMetaProperty ): metaProperty is SelectProperty | MultiSelectProperty => { - if ( + return !( !metaProperty || - (metaProperty.type !== PropertyType.Select && + (metaProperty.type !== PropertyType.Status && + metaProperty.type !== PropertyType.Select && metaProperty.type !== PropertyType.MultiSelect) - ) { - return false; - } - return true; + ); }; /** @@ -312,7 +310,7 @@ export const useSelectProperty = () => { }; const updateSelect = ( - selectProperty: SelectProperty | MultiSelectProperty + selectProperty: StatusProperty | SelectProperty | MultiSelectProperty ) => { // if (typeof selectProperty === 'string') { // const maybeSelectProperty = getProperty(selectProperty); From dd4360fb7988202bd88ae81c85c03fca0a811336 Mon Sep 17 00:00:00 2001 From: QiShaoXuan Date: Tue, 2 Aug 2022 19:44:04 +0800 Subject: [PATCH 02/48] fix: The status history in kanban mode cannot be synced to text mode, fixed #43 --- .../src/block-pendant/use-pendant.ts | 37 ++------------ .../editor-core/src/block-pendant/utils.ts | 45 +++++++++++++++-- .../components/editor-core/src/kanban/atom.ts | 49 ++++++++----------- .../editor-core/src/kanban/kanban.ts | 21 ++++++-- 4 files changed, 84 insertions(+), 68 deletions(-) diff --git a/libs/components/editor-core/src/block-pendant/use-pendant.ts b/libs/components/editor-core/src/block-pendant/use-pendant.ts index 55c8aa054e..da66906db2 100644 --- a/libs/components/editor-core/src/block-pendant/use-pendant.ts +++ b/libs/components/editor-core/src/block-pendant/use-pendant.ts @@ -1,41 +1,10 @@ -import { removePropertyValueRecord, setPendantHistory } from './utils'; +import { getPendantController } from './utils'; import { AsyncBlock } from '../editor'; -import { - getRecastItemValue, - RecastMetaProperty, - useRecastBlock, -} from '../recast-block'; +import { useRecastBlock } from '../recast-block'; export const usePendant = (block: AsyncBlock) => { // const { getProperties, removeProperty } = useRecastBlockMeta(); const recastBlock = useRecastBlock(); - const { getValue, setValue, removeValue } = getRecastItemValue(block); - // const { updateSelect } = useSelectProperty(); - const setPendant = async (property: RecastMetaProperty, newValue: any) => { - const nv = { - id: property.id, - type: property.type, - value: newValue, - }; - await setValue(nv); - setPendantHistory({ - recastBlockId: recastBlock.id, - blockId: block.id, - propertyId: property.id, - }); - }; - - const removePendant = async (property: RecastMetaProperty) => { - await removeValue(property.id); - removePropertyValueRecord({ - recastBlockId: block.id, - propertyId: property.id, - }); - }; - - return { - setPendant, - removePendant, - }; + return getPendantController(recastBlock, block); }; diff --git a/libs/components/editor-core/src/block-pendant/utils.ts b/libs/components/editor-core/src/block-pendant/utils.ts index a7cd6f3fc9..b55e0a9175 100644 --- a/libs/components/editor-core/src/block-pendant/utils.ts +++ b/libs/components/editor-core/src/block-pendant/utils.ts @@ -1,13 +1,16 @@ import { + getRecastItemValue, PropertyType, - RecastBlockValue, + RecastBlock, + RecastItem, + RecastMetaProperty, RecastPropertyId, SelectOption, } from '../recast-block'; -import { OptionIdType, OptionType } from './types'; +import { OptionIdType, OptionType, PendantConfig, PendantTypes } from './types'; import { pendantConfig } from './config'; -import { PendantConfig, PendantTypes } from './types'; import { nanoid } from 'nanoid'; +import { AsyncBlock } from '../editor'; type Props = { recastBlockId: string; blockId: string; @@ -81,6 +84,42 @@ export const removePendantHistory = ({ localStorage.setItem(LOCAL_STORAGE_NAME, JSON.stringify(data)); }; +export const getPendantController = ( + recastBlock: RecastBlock, + block: AsyncBlock | RecastItem +) => { + const { setValue, removeValue } = getRecastItemValue(block); + + const setPendant = async (property: RecastMetaProperty, newValue: any) => { + const nv = { + id: property.id, + type: property.type, + value: newValue, + }; + + setPendantHistory({ + recastBlockId: recastBlock.id, + blockId: block.id, + propertyId: property.id, + }); + + return await setValue(nv); + }; + + const removePendant = async (property: RecastMetaProperty) => { + removePendantHistory({ + recastBlockId: block.id, + propertyId: property.id, + }); + return await removeValue(property.id); + }; + + return { + setPendant, + removePendant, + }; +}; + /** * In select pendant panel, use mock options instead of use `createSelect` when add or delete option * so the option`s id is index number, not `SelectOptionId` diff --git a/libs/components/editor-core/src/kanban/atom.ts b/libs/components/editor-core/src/kanban/atom.ts index 238690863c..5bb3e652a6 100644 --- a/libs/components/editor-core/src/kanban/atom.ts +++ b/libs/components/editor-core/src/kanban/atom.ts @@ -6,7 +6,6 @@ import { PropertyType, RecastBlockValue, RecastMetaProperty, - RecastPropertyId, } from '../recast-block/types'; import type { DefaultGroup, KanbanGroup } from './types'; import { DEFAULT_GROUP_ID } from './types'; @@ -14,6 +13,7 @@ import { generateInitialOptions, generateRandomFieldName, getPendantIconsConfigByName, + getPendantController, } from '../block-pendant/utils'; import { SelectOption } from '../recast-block'; @@ -106,49 +106,42 @@ export const calcCardGroup = ( /** * Set group value for the card block */ -export const moveCardToGroup = async ( - groupById: RecastPropertyId, - cardBlock: RecastItem, - group: KanbanGroup -) => { - const { setValue, removeValue } = getRecastItemValue(cardBlock); +export const moveCardToGroup = async ({ + groupBy, + cardBlock, + group, + recastBlock, +}: { + groupBy: RecastMetaProperty; + cardBlock: RecastItem; + group: KanbanGroup; + recastBlock: RecastBlock; +}) => { + const { setPendant, removePendant } = getPendantController( + recastBlock, + cardBlock + ); let success = false; if (group.id === DEFAULT_GROUP_ID) { - success = await removeValue(groupById); + success = await removePendant(groupBy); return false; } switch (group.type) { case PropertyType.Select: { - success = await setValue({ - id: groupById, - type: group.type, - value: group.id, - }); + success = await setPendant(groupBy, group.id); break; } case PropertyType.Status: { - success = await setValue({ - id: groupById, - type: group.type, - value: group.id, - }); + success = await setPendant(groupBy, group.id); break; } case PropertyType.MultiSelect: { - success = await setValue({ - id: groupById, - type: group.type, - value: [group.id], - }); + success = await setPendant(groupBy, [group.id]); break; } case PropertyType.Text: { - success = await setValue({ - id: groupById, - type: group.type, - value: group.id, - }); + success = await setPendant(groupBy, group.id); break; } default: diff --git a/libs/components/editor-core/src/kanban/kanban.ts b/libs/components/editor-core/src/kanban/kanban.ts index 21564b6b2e..ff33b17f1d 100644 --- a/libs/components/editor-core/src/kanban/kanban.ts +++ b/libs/components/editor-core/src/kanban/kanban.ts @@ -199,7 +199,12 @@ export const useRecastKanban = () => { beforeBlock: string | null, afterBlock: string | null ) => { - await moveCardToGroup(groupBy.id, child, kanbanMap[id]); + await moveCardToGroup({ + groupBy, + cardBlock: child, + group: kanbanMap[id], + recastBlock, + }); if (beforeBlock) { const block = await editor.getBlockById( beforeBlock @@ -288,7 +293,12 @@ export const useKanban = () => { ); if (isChangedGroup) { // 1.2 Move to the target group - await moveCardToGroup(groupBy.id, targetCard, targetGroup); + await moveCardToGroup({ + groupBy, + cardBlock: targetCard, + group: targetGroup, + recastBlock, + }); } // 2. Reorder the card @@ -326,7 +336,12 @@ export const useKanban = () => { } recastBlock.append(newBlock); const newCard = newBlock as unknown as RecastItem; - await moveCardToGroup(groupBy.id, newCard, group); + await moveCardToGroup({ + groupBy, + cardBlock: newCard, + group, + recastBlock, + }); }, [editor, groupBy.id, recastBlock] ); From 2d1266ac1c4bdc5561a4c18bb9247cac484388fc Mon Sep 17 00:00:00 2001 From: tzhangchi Date: Wed, 3 Aug 2022 10:57:18 +0800 Subject: [PATCH 03/48] docs(contributorsrc): update contributorsrc --- .all-contributorsrc | 246 +++++++++--------- README.md | 24 +- .../src/placeholder/PlaceholderPanel.tsx | 1 + 3 files changed, 136 insertions(+), 135 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 0340f41c92..aadd5a7f93 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -1,125 +1,125 @@ { - "projectName": "Ligo-Virgo", - "projectOwner": "toeverything", - "repoType": "github", - "repoHost": "https://github.com", - "files": [ - "README.md" - ], - "imageSize": 100, - "commit": false, - "commitConvention": "angular", - "contributorsPerLine": 7, - "contributors": [ - { - "login": "darkskygit", - "name": "DarkSky", - "avatar_url": "https://avatars.githubusercontent.com/u/25152247?v=4", - "profile": "https://darksky.eu.org/", - "contributions": [ - "code", - "doc" - ] - }, - { - "login": "tzhangchi", - "name": "Chi Zhang", - "avatar_url": "https://avatars.githubusercontent.com/u/5910926?v=4", - "profile": "https://zhangchi.blog.csdn.net/", - "contributions": [ - "code", - "doc" - ] - }, - { - "login": "alt1o", - "name": "alt1o", - "avatar_url": "https://avatars.githubusercontent.com/u/21084335?v=4", - "profile": "https://github.com/alt1o", - "contributions": [ - "code", - "doc" - ] - }, - { - "login": "DiamondThree", - "name": "Diamond", - "avatar_url": "https://avatars.githubusercontent.com/u/24630517?v=4", - "profile": "https://github.com/DiamondThree", - "contributions": [ - "code", - "doc" - ] - }, - { - "login": "lawvs", - "name": "Whitewater", - "avatar_url": "https://avatars.githubusercontent.com/u/18554747?v=4", - "profile": "https://lawvs.github.io/profile/", - "contributions": [ - "code", - "doc" - ] - }, - { - "login": "zuoxiaodong0815", - "name": "zuoxiaodong0815", - "avatar_url": "https://avatars.githubusercontent.com/u/53252747?v=4", - "profile": "https://github.com/zuoxiaodong0815", - "contributions": [ - "code", - "doc" - ] - }, - { - "login": "SaikaSakura", - "name": "SaikaSakura", - "avatar_url": "https://avatars.githubusercontent.com/u/11530942?v=4", - "profile": "https://github.com/SaikaSakura", - "contributions": [ - "code", - "doc" - ] - }, - { - "login": "QiShaoXuan", - "name": "Qi", - "avatar_url": "https://avatars.githubusercontent.com/u/22772830?v=4", - "profile": "https://github.com/QiShaoXuan", - "contributions": [ - "code", - "doc" - ] - }, - { - "login": "tuluffy", - "name": "tuluffy", - "avatar_url": "https://avatars.githubusercontent.com/u/26808339?v=4", - "profile": "https://tuluffy.github.io/angular.github.io/", - "contributions": [ - "code", - "doc" - ] - }, - { - "login": "Austaras", - "name": "Austaras", - "avatar_url": "https://avatars.githubusercontent.com/u/15013925?v=4", - "profile": "https://shockwave.me/", - "contributions": [ - "code", - "doc" - ] - }, - { - "login": "uptonking", - "name": "Jin Yao", - "avatar_url": "https://avatars.githubusercontent.com/u/11391549?v=4", - "profile": "https://github.com/uptonking?tab=repositories&type=source", - "contributions": [ - "code", - "doc" - ] - } - ] + "projectName": "Ligo-Virgo", + "projectOwner": "toeverything", + "repoType": "github", + "repoHost": "https://github.com", + "files": [ + "README.md" + ], + "imageSize": 100, + "commit": false, + "commitConvention": "angular", + "contributorsPerLine": 7, + "contributors": [ + { + "login": "darkskygit", + "name": "DarkSky", + "avatar_url": "https://avatars.githubusercontent.com/u/25152247?v=4", + "profile": "https://darksky.eu.org/", + "contributions": [ + "code", + "doc" + ] + }, + { + "login": "tzhangchi", + "name": "Chi Zhang", + "avatar_url": "https://avatars.githubusercontent.com/u/5910926?v=4", + "profile": "http://zhangchi.page/", + "contributions": [ + "code", + "doc" + ] + }, + { + "login": "alt1o", + "name": "wang xinglong", + "avatar_url": "https://avatars.githubusercontent.com/u/21084335?v=4", + "profile": "https://github.com/alt1o", + "contributions": [ + "code", + "doc" + ] + }, + { + "login": "DiamondThree", + "name": "DiamondThree", + "avatar_url": "https://avatars.githubusercontent.com/u/24630517?v=4", + "profile": "https://github.com/DiamondThree", + "contributions": [ + "code", + "doc" + ] + }, + { + "login": "lawvs", + "name": "Whitewater", + "avatar_url": "https://avatars.githubusercontent.com/u/18554747?v=4", + "profile": "https://lawvs.github.io/profile/", + "contributions": [ + "code", + "doc" + ] + }, + { + "login": "zuoxiaodong0815", + "name": "xiaodong zuo", + "avatar_url": "https://avatars.githubusercontent.com/u/53252747?v=4", + "profile": "https://github.com/zuoxiaodong0815", + "contributions": [ + "code", + "doc" + ] + }, + { + "login": "SaikaSakura", + "name": "MingLIang Wang", + "avatar_url": "https://avatars.githubusercontent.com/u/11530942?v=4", + "profile": "https://github.com/SaikaSakura", + "contributions": [ + "code", + "doc" + ] + }, + { + "login": "QiShaoXuan", + "name": "Qi", + "avatar_url": "https://avatars.githubusercontent.com/u/22772830?v=4", + "profile": "https://github.com/QiShaoXuan", + "contributions": [ + "code", + "doc" + ] + }, + { + "login": "mitsuhatu", + "name": "mitsuhatu", + "avatar_url": "https://avatars.githubusercontent.com/u/110213079?v=4", + "profile": "https://github.com/mitsuhatu", + "contributions": [ + "code", + "doc" + ] + }, + { + "login": "Austaras", + "name": "Austaras", + "avatar_url": "https://avatars.githubusercontent.com/u/15013925?v=4", + "profile": "https://shockwave.me/", + "contributions": [ + "code", + "doc" + ] + }, + { + "login": "uptonking", + "name": "Jin Yao", + "avatar_url": "https://avatars.githubusercontent.com/u/11391549?v=4", + "profile": "https://github.com/uptonking?tab=repositories&type=source", + "contributions": [ + "code", + "doc" + ] + } + ] } diff --git a/README.md b/README.md index 0fbcf5bf80..4a140fd197 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ See https://github.com/all-contributors/all-contributors/issues/361#issuecomment --> -[all-contributors-badge]: https://img.shields.io/badge/all_contributors-11-orange.svg?style=flat-square +[![All Contributors](https://img.shields.io/badge/all_contributors-11-orange.svg?style=flat-square)](#contributors-) @@ -151,19 +151,19 @@ For help, discussion about best practices, or any other conversation that would - - - - - - - + + + + + + + - - - - + + + +

DarkSky

💻 📖

Chi Zhang

💻 📖

alt1o

💻 📖

Diamond

💻 📖

Whitewater

💻 📖

zuoxiaodong0815

💻 📖

SaikaSakura

💻 📖

DarkSky

💻 📖

Chi Zhang

💻 📖

wang xinglong

💻 📖

DiamondThree

💻 📖

Whitewater

💻 📖

xiaodong zuo

💻 📖

MingLIang Wang

💻 📖

Qi

💻 📖

tuluffy

💻 📖

Austaras

💻 📖

Jin Yao

💻 📖

Qi

💻 📖

mitsuhatu

💻 📖

Austaras

💻 📖

Jin Yao

💻 📖
diff --git a/libs/components/editor-plugins/src/placeholder/PlaceholderPanel.tsx b/libs/components/editor-plugins/src/placeholder/PlaceholderPanel.tsx index 429336c976..847804bd63 100644 --- a/libs/components/editor-plugins/src/placeholder/PlaceholderPanel.tsx +++ b/libs/components/editor-plugins/src/placeholder/PlaceholderPanel.tsx @@ -141,6 +141,7 @@ export const PlaceholderPanel = (props: PlaceholderPanelProps) => { setOpen(false); props.onClickTips(); }; + //@ts-ignore lint rule change result this code lint error, add ingore const templateList: Array = TemplateFactory.defaultTemplateList; const handleNewFromTemplate = async (template: TemplateMeta) => { From f1774c630c41e82eef2dcde3216f7cbfed250174 Mon Sep 17 00:00:00 2001 From: tzhangchi Date: Wed, 3 Aug 2022 11:02:24 +0800 Subject: [PATCH 04/48] docs(readme): remove unused contributors info --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a140fd197..fa964da17b 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ See https://github.com/all-contributors/all-contributors/issues/361#issuecomment --> -[![All Contributors](https://img.shields.io/badge/all_contributors-11-orange.svg?style=flat-square)](#contributors-) +[all-contributors-badge]: https://img.shields.io/badge/all_contributors-11-orange.svg?style=flat-square From 727c7428890bf855634973bbe386b4d71521ef96 Mon Sep 17 00:00:00 2001 From: QiShaoXuan Date: Wed, 3 Aug 2022 11:14:52 +0800 Subject: [PATCH 05/48] feat: modify the type of animation that appears for the pendant Add button --- .../src/block-pendant/pendant-render/PandentRender.tsx | 7 +++---- libs/components/ui/src/mui.ts | 6 ++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/libs/components/editor-core/src/block-pendant/pendant-render/PandentRender.tsx b/libs/components/editor-core/src/block-pendant/pendant-render/PandentRender.tsx index 8b6c9bb53f..76ed0d4e32 100644 --- a/libs/components/editor-core/src/block-pendant/pendant-render/PandentRender.tsx +++ b/libs/components/editor-core/src/block-pendant/pendant-render/PandentRender.tsx @@ -1,5 +1,5 @@ import { - MuiZoom, + MuiFade, Popover, PopperHandler, styled, @@ -100,16 +100,15 @@ export const PendantRender = ({ block }: { block: AsyncBlock }) => { ); })} {hasAddBtn ? ( - +
-
+ ) : null} ); diff --git a/libs/components/ui/src/mui.ts b/libs/components/ui/src/mui.ts index 94025c5f5b..b0658ad526 100644 --- a/libs/components/ui/src/mui.ts +++ b/libs/components/ui/src/mui.ts @@ -51,6 +51,7 @@ import { tooltipClasses, Typography, Zoom, + Fade, } from '@mui/material'; export { alpha } from '@mui/system'; @@ -233,6 +234,11 @@ export const MuiInput = Input; */ export const MuiZoom = Zoom; +/** + * @deprecated It is not recommended to use Mui directly, because the design will not refer to Mui's interaction logic. + */ +export const MuiFade = Fade; + /** * @deprecated It is not recommended to use Mui directly, because the design will not refer to Mui's interaction logic. */ From fe9a4470fceee1f235567732e86485963db54b65 Mon Sep 17 00:00:00 2001 From: QiShaoXuan Date: Wed, 3 Aug 2022 11:18:00 +0800 Subject: [PATCH 06/48] fix: fix mui select throw wraning when pendant select change --- .../pendant-operation-panel/CreatePendantPanel.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/components/editor-core/src/block-pendant/pendant-operation-panel/CreatePendantPanel.tsx b/libs/components/editor-core/src/block-pendant/pendant-operation-panel/CreatePendantPanel.tsx index fa7d50bfba..b09f23ed35 100644 --- a/libs/components/editor-core/src/block-pendant/pendant-operation-panel/CreatePendantPanel.tsx +++ b/libs/components/editor-core/src/block-pendant/pendant-operation-panel/CreatePendantPanel.tsx @@ -44,7 +44,7 @@ export const CreatePendantPanel = ({ set_search(e.target.value)} /> - @@ -119,8 +99,30 @@ export const Search = (props: SearchProps) => { }} /> ))} - + ); }; + +const SearchInput = styled('input')(({ theme }) => ({ + margin: '0.5em', + backgroundColor: 'white', + boxShadow: theme.affine.shadows.shadowSxDownLg, + padding: '16px 32px', + borderRadius: '10px', +})); + +const ResultContainer = styled(MuiBox)(({ theme }) => ({ + margin: '0.5em', + backgroundColor: 'white', + boxShadow: theme.affine.shadows.shadowSxDownLg, + padding: '16px 32px', + borderRadius: '10px', + transitionProperty: 'max-height', + transitionDuration: '300ms', + transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)', + transitionDelay: '0ms', + overflowX: 'hidden', + overflowY: 'hidden', +})); diff --git a/libs/components/layout/src/header/EditorBoardSwitcher/StatusIcon.tsx b/libs/components/layout/src/header/EditorBoardSwitcher/StatusIcon.tsx index ada3a92f57..47003af1c2 100644 --- a/libs/components/layout/src/header/EditorBoardSwitcher/StatusIcon.tsx +++ b/libs/components/layout/src/header/EditorBoardSwitcher/StatusIcon.tsx @@ -20,7 +20,7 @@ const IconWrapper = styled('div')>( width: '20px', height: '20px', borderRadius: '5px', - boxShadow: '0px 1px 10px rgba(152, 172, 189, 0.6)', + boxShadow: theme.affine.shadows.shadowSxDownLg, color: theme.affine.palette.primary, cursor: 'pointer', backgroundColor: theme.affine.palette.white, diff --git a/libs/components/ui/src/cascader/Cascader.tsx b/libs/components/ui/src/cascader/Cascader.tsx index 5ff6fe608d..5c8a02e3a9 100644 --- a/libs/components/ui/src/cascader/Cascader.tsx +++ b/libs/components/ui/src/cascader/Cascader.tsx @@ -133,7 +133,7 @@ export function Cascader(props: CascaderProps) { const MenuPaper = styled('div')(({ theme }) => ({ fontFamily: 'PingFang SC', background: '#FFF', - boxShadow: '0px 1px 10px rgba(152, 172, 189, 0.6)', + boxShadow: theme.affine.shadows.shadowSxDownLg, borderRadius: '10px 0px 10px 10px', color: '#4C6275', fontWeight: '400', diff --git a/libs/components/ui/src/theme/theme.ts b/libs/components/ui/src/theme/theme.ts index a51bca8827..1e9f6f5436 100644 --- a/libs/components/ui/src/theme/theme.ts +++ b/libs/components/ui/src/theme/theme.ts @@ -225,7 +225,7 @@ export const Theme = { }, shadows: { none: 'none', - shadowSxDownLg: '0px 1px 10px rgba(152, 172, 189, 0.6)', + shadowSxDownLg: '0px 1px 5px rgba(152, 172, 189, 0.2)', }, border: ['none'], spacing: { From fdc9a17f46e54d493d3a9249ea983bc03cfe7dcb Mon Sep 17 00:00:00 2001 From: DarkSky Date: Thu, 4 Aug 2022 17:13:24 +0800 Subject: [PATCH 44/48] chore: file copy --- .github/deployment/Dockerfile-affine | 2 +- .github/deployment/Dockerfile-lisa | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/deployment/Dockerfile-affine b/.github/deployment/Dockerfile-affine index 09524b335b..46a46233f2 100644 --- a/.github/deployment/Dockerfile-affine +++ b/.github/deployment/Dockerfile-affine @@ -7,7 +7,7 @@ RUN npm i -g pnpm@7 && pnpm i --frozen-lockfile --store=node_modules/.pnpm-store FROM node:16-alpine as relocate WORKDIR /app COPY --from=builder /app/dist/apps/ligo-virgo ./dist -COPY --from=builder /app/.github/deployment/Caddyfile-affine ./ +COPY --from=builder /app/.github/deployment/Caddyfile-affine ./Caddyfile RUN rm ./dist/*.txt # ============= diff --git a/.github/deployment/Dockerfile-lisa b/.github/deployment/Dockerfile-lisa index 413cb625fa..471e4d0d48 100644 --- a/.github/deployment/Dockerfile-lisa +++ b/.github/deployment/Dockerfile-lisa @@ -7,7 +7,7 @@ RUN npm i -g pnpm@7 && pnpm i --frozen-lockfile --store=node_modules/.pnpm-store FROM node:16-alpine as relocate WORKDIR /app COPY --from=builder /app/dist/apps/ligo-virgo ./dist -COPY --from=builder /app/.github/deployment/Caddyfile-lisa ./ +COPY --from=builder /app/.github/deployment/Caddyfile-lisa ./Caddyfile RUN rm ./dist/*.txt # ============= From ce5a523b12ff5244ed7c553cec6b3792fb01e262 Mon Sep 17 00:00:00 2001 From: alt0 Date: Thu, 4 Aug 2022 17:47:09 +0800 Subject: [PATCH 45/48] fix: rename shadowSxDownLg -> shadow1 --- apps/ligo-virgo/src/pages/workspace/docs/Page.tsx | 2 +- libs/components/common/src/lib/text/plugins/link.tsx | 4 ++-- libs/components/editor-blocks/src/blocks/group/GroupView.tsx | 2 +- .../editor-blocks/src/blocks/group/components/Panel.tsx | 2 +- libs/components/editor-plugins/src/comment/Container.tsx | 2 +- .../editor-plugins/src/menu/command-menu/Container.tsx | 2 +- .../editor-plugins/src/menu/inline-menu/Container.tsx | 2 +- .../editor-plugins/src/menu/reference-menu/Container.tsx | 2 +- libs/components/editor-plugins/src/search/Search.tsx | 4 ++-- .../layout/src/header/EditorBoardSwitcher/StatusIcon.tsx | 2 +- .../layout/src/settings-sidebar/Comments/CommentItem.tsx | 2 +- libs/components/ui/src/cascader/Cascader.tsx | 2 +- libs/components/ui/src/popover/Container.tsx | 2 +- libs/components/ui/src/select/Select.tsx | 2 +- libs/components/ui/src/theme/theme.ts | 4 ++-- 15 files changed, 18 insertions(+), 18 deletions(-) diff --git a/apps/ligo-virgo/src/pages/workspace/docs/Page.tsx b/apps/ligo-virgo/src/pages/workspace/docs/Page.tsx index b150303d31..9bab8ba8ea 100644 --- a/apps/ligo-virgo/src/pages/workspace/docs/Page.tsx +++ b/apps/ligo-virgo/src/pages/workspace/docs/Page.tsx @@ -210,7 +210,7 @@ const WorkspaceSidebar = styled('div')(({ theme }) => ({ width: 300, minWidth: 300, borderRadius: '0px 10px 10px 0px', - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, backgroundColor: '#FFFFFF', transitionProperty: 'left', transitionDuration: '0.35s', diff --git a/libs/components/common/src/lib/text/plugins/link.tsx b/libs/components/common/src/lib/text/plugins/link.tsx index 52c39f6053..60193e38a0 100644 --- a/libs/components/common/src/lib/text/plugins/link.tsx +++ b/libs/components/common/src/lib/text/plugins/link.tsx @@ -125,7 +125,7 @@ const LinkStyledTooltip = styled(({ className, ...props }: MuiTooltipProps) => ( [`& .${muiTooltipClasses.tooltip}`]: { backgroundColor: '#fff', color: '#4C6275', - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, fontSize: '14px', }, [`& .MuiTooltip-tooltipPlacementBottom`]: { @@ -497,7 +497,7 @@ const LinkModalContainer = styled('div')(({ theme }) => ({ padding: '12px', display: 'flex', borderRadius: '4px', - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, backgroundColor: '#fff', alignItems: 'center', zIndex: '1', diff --git a/libs/components/editor-blocks/src/blocks/group/GroupView.tsx b/libs/components/editor-blocks/src/blocks/group/GroupView.tsx index a3e2353fb5..193a97f076 100644 --- a/libs/components/editor-blocks/src/blocks/group/GroupView.tsx +++ b/libs/components/editor-blocks/src/blocks/group/GroupView.tsx @@ -69,7 +69,7 @@ const GroupContainer = styled('div')<{ isSelect?: boolean }>( } : { '&:hover': { - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, }, }), }) diff --git a/libs/components/editor-blocks/src/blocks/group/components/Panel.tsx b/libs/components/editor-blocks/src/blocks/group/components/Panel.tsx index 269fe892bf..d6d4b79f02 100644 --- a/libs/components/editor-blocks/src/blocks/group/components/Panel.tsx +++ b/libs/components/editor-blocks/src/blocks/group/components/Panel.tsx @@ -6,7 +6,7 @@ const StyledPanel = styled('div')(({ theme }) => ({ position: 'absolute', top: 50, background: '#FFFFFF', - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, borderRadius: 10, padding: '12px 24px', })); diff --git a/libs/components/editor-plugins/src/comment/Container.tsx b/libs/components/editor-plugins/src/comment/Container.tsx index 6c0ed17b4c..fd8568725f 100644 --- a/libs/components/editor-plugins/src/comment/Container.tsx +++ b/libs/components/editor-plugins/src/comment/Container.tsx @@ -64,7 +64,7 @@ const StyledContainerForAddCommentContainer = styled('div')(({ theme }) => { zIndex: 1, display: 'flex', borderRadius: theme.affine.shape.borderRadius, - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, backgroundColor: theme.affine.palette.white, }; }); diff --git a/libs/components/editor-plugins/src/menu/command-menu/Container.tsx b/libs/components/editor-plugins/src/menu/command-menu/Container.tsx index 755076d49d..43092ea535 100644 --- a/libs/components/editor-plugins/src/menu/command-menu/Container.tsx +++ b/libs/components/editor-plugins/src/menu/command-menu/Container.tsx @@ -31,7 +31,7 @@ const RootContainer = styled('div')(({ theme }) => { width: 352, maxHeight: 525, borderRadius: '10px', - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, backgroundColor: '#fff', padding: '8px 4px', }; diff --git a/libs/components/editor-plugins/src/menu/inline-menu/Container.tsx b/libs/components/editor-plugins/src/menu/inline-menu/Container.tsx index ac9b985dc4..27807b6186 100644 --- a/libs/components/editor-plugins/src/menu/inline-menu/Container.tsx +++ b/libs/components/editor-plugins/src/menu/inline-menu/Container.tsx @@ -82,6 +82,6 @@ const ToolbarContainer = styled('div')(({ theme }) => ({ alignItems: 'center', padding: '0 12px', borderRadius: '10px', - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, backgroundColor: '#fff', })); diff --git a/libs/components/editor-plugins/src/menu/reference-menu/Container.tsx b/libs/components/editor-plugins/src/menu/reference-menu/Container.tsx index fc1c09d2ca..47a1672d4d 100644 --- a/libs/components/editor-plugins/src/menu/reference-menu/Container.tsx +++ b/libs/components/editor-plugins/src/menu/reference-menu/Container.tsx @@ -179,7 +179,7 @@ const RootContainer = styled('div')(({ theme }) => ({ zIndex: 1, maxHeight: '525px', borderRadius: '10px', - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, backgroundColor: '#fff', padding: '8px 4px', })); diff --git a/libs/components/editor-plugins/src/search/Search.tsx b/libs/components/editor-plugins/src/search/Search.tsx index 228c858aa5..6b02b6334e 100644 --- a/libs/components/editor-plugins/src/search/Search.tsx +++ b/libs/components/editor-plugins/src/search/Search.tsx @@ -108,7 +108,7 @@ export const Search = (props: SearchProps) => { const SearchInput = styled('input')(({ theme }) => ({ margin: '0.5em', backgroundColor: 'white', - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, padding: '16px 32px', borderRadius: '10px', })); @@ -116,7 +116,7 @@ const SearchInput = styled('input')(({ theme }) => ({ const ResultContainer = styled(MuiBox)(({ theme }) => ({ margin: '0.5em', backgroundColor: 'white', - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, padding: '16px 32px', borderRadius: '10px', transitionProperty: 'max-height', diff --git a/libs/components/layout/src/header/EditorBoardSwitcher/StatusIcon.tsx b/libs/components/layout/src/header/EditorBoardSwitcher/StatusIcon.tsx index 47003af1c2..a30e17f913 100644 --- a/libs/components/layout/src/header/EditorBoardSwitcher/StatusIcon.tsx +++ b/libs/components/layout/src/header/EditorBoardSwitcher/StatusIcon.tsx @@ -20,7 +20,7 @@ const IconWrapper = styled('div')>( width: '20px', height: '20px', borderRadius: '5px', - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, color: theme.affine.palette.primary, cursor: 'pointer', backgroundColor: theme.affine.palette.white, diff --git a/libs/components/layout/src/settings-sidebar/Comments/CommentItem.tsx b/libs/components/layout/src/settings-sidebar/Comments/CommentItem.tsx index 8ebc4baf24..2ac99e7185 100644 --- a/libs/components/layout/src/settings-sidebar/Comments/CommentItem.tsx +++ b/libs/components/layout/src/settings-sidebar/Comments/CommentItem.tsx @@ -94,7 +94,7 @@ const StyledContainerForCommentItem = styled('div', { transition: 'left 150ms ease-in-out', backgroundColor: theme.affine.palette.white, '&:hover': { - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, }, }; }); diff --git a/libs/components/ui/src/cascader/Cascader.tsx b/libs/components/ui/src/cascader/Cascader.tsx index 5c8a02e3a9..ef486e5029 100644 --- a/libs/components/ui/src/cascader/Cascader.tsx +++ b/libs/components/ui/src/cascader/Cascader.tsx @@ -133,7 +133,7 @@ export function Cascader(props: CascaderProps) { const MenuPaper = styled('div')(({ theme }) => ({ fontFamily: 'PingFang SC', background: '#FFF', - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, borderRadius: '10px 0px 10px 10px', color: '#4C6275', fontWeight: '400', diff --git a/libs/components/ui/src/popover/Container.tsx b/libs/components/ui/src/popover/Container.tsx index 8fdfc5aea9..3f7f8c382f 100644 --- a/libs/components/ui/src/popover/Container.tsx +++ b/libs/components/ui/src/popover/Container.tsx @@ -12,7 +12,7 @@ const border_radius_map: Record = { export const PopoverContainer = styled('div')< Pick >(({ theme, direction, style }) => { - const shadow = theme.affine.shadows.shadowSxDownLg; + const shadow = theme.affine.shadows.shadow1; const white = theme.affine.palette.white; const borderRadius = diff --git a/libs/components/ui/src/select/Select.tsx b/libs/components/ui/src/select/Select.tsx index ebbf585e11..d1f3141e69 100644 --- a/libs/components/ui/src/select/Select.tsx +++ b/libs/components/ui/src/select/Select.tsx @@ -117,7 +117,7 @@ const StyledListbox = styled('ul')(({ theme }) => ({ background: '#fff', borderRadius: '10px', overflow: 'auto', - boxShadow: theme.affine.shadows.shadowSxDownLg, + boxShadow: theme.affine.shadows.shadow1, })); const StyledPopper = styled(PopperUnstyled)` diff --git a/libs/components/ui/src/theme/theme.ts b/libs/components/ui/src/theme/theme.ts index 1e9f6f5436..70aace8122 100644 --- a/libs/components/ui/src/theme/theme.ts +++ b/libs/components/ui/src/theme/theme.ts @@ -70,7 +70,7 @@ interface Typography { interface Shadows { none: 'none'; - shadowSxDownLg: string; + shadow1: string; } type StringWithNone = [ @@ -225,7 +225,7 @@ export const Theme = { }, shadows: { none: 'none', - shadowSxDownLg: '0px 1px 5px rgba(152, 172, 189, 0.2)', + shadow1: '0px 1px 5px rgba(152, 172, 189, 0.2)', }, border: ['none'], spacing: { From c4e39980c60ca050f2e9c1bcb820acb5f52d98cb Mon Sep 17 00:00:00 2001 From: austaras Date: Thu, 4 Aug 2022 17:21:38 +0800 Subject: [PATCH 46/48] fix(whiteboard): disable editor rotation --- libs/components/board-sessions/src/rotate-session.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libs/components/board-sessions/src/rotate-session.ts b/libs/components/board-sessions/src/rotate-session.ts index e9da6b6bcc..2de48ed120 100644 --- a/libs/components/board-sessions/src/rotate-session.ts +++ b/libs/components/board-sessions/src/rotate-session.ts @@ -6,6 +6,7 @@ import { TldrawPatch, TDShape, TDStatus, + TDShapeType, } from '@toeverything/components/board-types'; import { TLDR } from '@toeverything/components/board-state'; import { BaseSession } from './base-session'; @@ -75,6 +76,10 @@ export class RotateSession extends BaseSession { app: { currentPageId, currentPoint, shiftKey }, } = this; + const filteredShapes = initialShapes.filter( + shape => shape.shape.type !== TDShapeType.Editor + ); + const shapes: Record> = {}; let directionDelta = @@ -85,7 +90,7 @@ export class RotateSession extends BaseSession { } // Update the shapes - initialShapes.forEach(({ center, shape }) => { + filteredShapes.forEach(({ center, shape }) => { const { rotation = 0 } = shape; let shapeDelta = 0; From e46da42facef00422a36899822fef8a8bf1704ec Mon Sep 17 00:00:00 2001 From: DarkSky Date: Thu, 4 Aug 2022 17:53:59 +0800 Subject: [PATCH 47/48] feat: query blocks --- libs/datasource/jwt/src/index.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libs/datasource/jwt/src/index.ts b/libs/datasource/jwt/src/index.ts index bd01d93dcb..343f1f79ad 100644 --- a/libs/datasource/jwt/src/index.ts +++ b/libs/datasource/jwt/src/index.ts @@ -305,6 +305,18 @@ export class BlockClient< return this._blockIndexer.query(query); } + public queryBlocks(query: QueryIndexMetadata): Promise { + const ids = this.query(query); + return Promise.all( + this._blockIndexer.getMetadata(ids).map(async page => ({ + content: this.get_decoded_content( + await this._adapter.getBlock(page.id) + ), + ...page, + })) + ); + } + /** * Get a fixed name, which has the same UUID in each workspace, and is automatically created when it does not exist * Generally used to store workspace-level global configuration From c63d5da4dfde1976d1907f9e22d72d0cab93d918 Mon Sep 17 00:00:00 2001 From: austaras Date: Thu, 4 Aug 2022 16:04:52 +0800 Subject: [PATCH 48/48] refact(hook): remove afterOnNodeDragOver --- .../src/blocks/bullet/BulletView.tsx | 6 +-- .../src/blocks/code/CodeView.tsx | 6 +-- .../src/blocks/embed-link/EmbedLinkView.tsx | 6 +-- .../src/blocks/figma/FigmaView.tsx | 6 +-- .../src/blocks/image/ImageView.tsx | 6 +-- .../src/blocks/numbered/NumberedView.tsx | 7 ++-- .../src/blocks/text/TextView.tsx | 6 +-- .../src/utils/WithTreeViewChildren.tsx | 6 +-- .../BlockContentWrapper.tsx | 22 ---------- .../src/block-content-wrapper/index.ts | 1 - .../src/drag-drop-wrapper/DragDropWrapper.tsx | 28 ------------- .../src/drag-drop-wrapper/index.ts | 1 - .../editor-core/src/editor/plugin/hooks.ts | 7 ---- .../editor-core/src/editor/types.ts | 5 --- libs/components/editor-core/src/index.ts | 3 -- .../src/menu/left-menu/LeftMenuPlugin.tsx | 42 +++++++++++-------- 16 files changed, 48 insertions(+), 110 deletions(-) delete mode 100644 libs/components/editor-core/src/block-content-wrapper/BlockContentWrapper.tsx delete mode 100644 libs/components/editor-core/src/block-content-wrapper/index.ts delete mode 100644 libs/components/editor-core/src/drag-drop-wrapper/DragDropWrapper.tsx delete mode 100644 libs/components/editor-core/src/drag-drop-wrapper/index.ts diff --git a/libs/components/editor-blocks/src/blocks/bullet/BulletView.tsx b/libs/components/editor-blocks/src/blocks/bullet/BulletView.tsx index 6f1970df15..dee9042e7a 100644 --- a/libs/components/editor-blocks/src/blocks/bullet/BulletView.tsx +++ b/libs/components/editor-blocks/src/blocks/bullet/BulletView.tsx @@ -17,7 +17,7 @@ import { supportChildren, RenderBlockChildren, useOnSelect, - WrapperWithPendantAndDragDrop, + BlockPendantProvider, } from '@toeverything/components/editor-core'; import { List } from '../../components/style-container'; import { getChildrenType, BulletIcon, NumberType } from './data'; @@ -188,7 +188,7 @@ export const BulletView: FC = ({ block, editor }) => { return ( - + @@ -206,7 +206,7 @@ export const BulletView: FC = ({ block, editor }) => { /> - + diff --git a/libs/components/editor-blocks/src/blocks/code/CodeView.tsx b/libs/components/editor-blocks/src/blocks/code/CodeView.tsx index 3a729e51f0..3b64cc3b1a 100644 --- a/libs/components/editor-blocks/src/blocks/code/CodeView.tsx +++ b/libs/components/editor-blocks/src/blocks/code/CodeView.tsx @@ -50,7 +50,7 @@ import { Option, Select } from '@toeverything/components/ui'; import { useOnSelect, - WrapperWithPendantAndDragDrop, + BlockPendantProvider, } from '@toeverything/components/editor-core'; import { copyToClipboard } from '@toeverything/utils'; interface CreateCodeView extends CreateView { @@ -163,7 +163,7 @@ export const CodeView: FC = ({ block, editor }) => { editor.selectionManager.activePreviousNode(block.id, 'start'); }; return ( - + { e.stopPropagation(); @@ -222,6 +222,6 @@ export const CodeView: FC = ({ block, editor }) => { handleKeyArrowUp={handleKeyArrowUp} /> - + ); }; diff --git a/libs/components/editor-blocks/src/blocks/embed-link/EmbedLinkView.tsx b/libs/components/editor-blocks/src/blocks/embed-link/EmbedLinkView.tsx index ac073abdb0..da33c2be4a 100644 --- a/libs/components/editor-blocks/src/blocks/embed-link/EmbedLinkView.tsx +++ b/libs/components/editor-blocks/src/blocks/embed-link/EmbedLinkView.tsx @@ -1,7 +1,7 @@ import { FC, useState } from 'react'; import { CreateView } from '@toeverything/framework/virgo'; import { - WrapperWithPendantAndDragDrop, + BlockPendantProvider, useOnSelect, } from '@toeverything/components/editor-core'; import { Upload } from '../../components/upload/upload'; @@ -33,7 +33,7 @@ export const EmbedLinkView: FC = props => { }; return ( - + {embedLinkUrl ? ( = props => { /> )} - + ); }; diff --git a/libs/components/editor-blocks/src/blocks/figma/FigmaView.tsx b/libs/components/editor-blocks/src/blocks/figma/FigmaView.tsx index 1dbaef3e11..2d12315235 100644 --- a/libs/components/editor-blocks/src/blocks/figma/FigmaView.tsx +++ b/libs/components/editor-blocks/src/blocks/figma/FigmaView.tsx @@ -2,7 +2,7 @@ import { FC, useState } from 'react'; import { CreateView } from '@toeverything/framework/virgo'; import { useOnSelect, - WrapperWithPendantAndDragDrop, + BlockPendantProvider, } from '@toeverything/components/editor-core'; import { Upload } from '../../components/upload/upload'; import { SourceView } from '../../components/source-view'; @@ -30,7 +30,7 @@ export const FigmaView: FC = ({ block, editor }) => { setIsSelect(isSelect); }); return ( - + {figmaUrl ? ( = ({ block, editor }) => { /> )} - + ); }; diff --git a/libs/components/editor-blocks/src/blocks/image/ImageView.tsx b/libs/components/editor-blocks/src/blocks/image/ImageView.tsx index 36b446d790..dd07a1058a 100644 --- a/libs/components/editor-blocks/src/blocks/image/ImageView.tsx +++ b/libs/components/editor-blocks/src/blocks/image/ImageView.tsx @@ -1,7 +1,7 @@ import { useCurrentView, useOnSelect, - WrapperWithPendantAndDragDrop, + BlockPendantProvider, } from '@toeverything/components/editor-core'; import { styled } from '@toeverything/components/ui'; import { services } from '@toeverything/datasource/db-service'; @@ -158,7 +158,7 @@ export const ImageView: FC = ({ block, editor }) => { }; return ( - +
{imgUrl ? ( @@ -229,6 +229,6 @@ export const ImageView: FC = ({ block, editor }) => {
*/}
-
+ ); }; diff --git a/libs/components/editor-blocks/src/blocks/numbered/NumberedView.tsx b/libs/components/editor-blocks/src/blocks/numbered/NumberedView.tsx index 514ce335f6..2f8f29b706 100644 --- a/libs/components/editor-blocks/src/blocks/numbered/NumberedView.tsx +++ b/libs/components/editor-blocks/src/blocks/numbered/NumberedView.tsx @@ -19,9 +19,8 @@ import { supportChildren, RenderBlockChildren, useOnSelect, - WrapperWithPendantAndDragDrop, + BlockPendantProvider, } from '@toeverything/components/editor-core'; -import { styled } from '@toeverything/components/ui'; import { List } from '../../components/style-container'; import { BlockContainer } from '../../components/BlockContainer'; @@ -185,7 +184,7 @@ export const NumberedView: FC = ({ block, editor }) => { return ( - +
{getNumber(properties.numberType, number)}. @@ -203,7 +202,7 @@ export const NumberedView: FC = ({ block, editor }) => { />
-
+ diff --git a/libs/components/editor-blocks/src/blocks/text/TextView.tsx b/libs/components/editor-blocks/src/blocks/text/TextView.tsx index ced1a8745d..66c6360633 100644 --- a/libs/components/editor-blocks/src/blocks/text/TextView.tsx +++ b/libs/components/editor-blocks/src/blocks/text/TextView.tsx @@ -8,7 +8,7 @@ import { supportChildren, unwrapGroup, useOnSelect, - WrapperWithPendantAndDragDrop, + BlockPendantProvider, } from '@toeverything/components/editor-core'; import { styled } from '@toeverything/components/ui'; import { Protocol } from '@toeverything/datasource/db-service'; @@ -231,7 +231,7 @@ export const TextView: FC = ({ selected={isSelect} className={containerClassName} > - + = ({ handleConvert={handleConvert} handleTab={onTab} /> - + diff --git a/libs/components/editor-blocks/src/utils/WithTreeViewChildren.tsx b/libs/components/editor-blocks/src/utils/WithTreeViewChildren.tsx index f7f9cf39d7..f2b2b3652d 100644 --- a/libs/components/editor-blocks/src/utils/WithTreeViewChildren.tsx +++ b/libs/components/editor-blocks/src/utils/WithTreeViewChildren.tsx @@ -3,7 +3,7 @@ import { RenderBlock, useCurrentView, useOnSelect, - WrapperWithPendantAndDragDrop, + BlockPendantProvider, } from '@toeverything/components/editor-core'; import { styled } from '@toeverything/components/ui'; import type { @@ -128,9 +128,9 @@ export const withTreeViewChildren = ( selected={isSelect} className={Wrapper.toString()} > - +
{creator(props)}
-
+ {collapsed && ( = - function ({ block, children, editor }) { - return ( - - - {children} - - - ); - }; diff --git a/libs/components/editor-core/src/block-content-wrapper/index.ts b/libs/components/editor-core/src/block-content-wrapper/index.ts deleted file mode 100644 index 80c770d496..0000000000 --- a/libs/components/editor-core/src/block-content-wrapper/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './BlockContentWrapper'; diff --git a/libs/components/editor-core/src/drag-drop-wrapper/DragDropWrapper.tsx b/libs/components/editor-core/src/drag-drop-wrapper/DragDropWrapper.tsx deleted file mode 100644 index 030c2b5c20..0000000000 --- a/libs/components/editor-core/src/drag-drop-wrapper/DragDropWrapper.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { AsyncBlock, BlockEditor } from '../editor'; -import { ReactElement } from 'react'; - -interface DragDropWrapperProps { - editor: BlockEditor; - block: AsyncBlock; - children: ReactElement | null; -} - -export function DragDropWrapper({ - children, - editor, - block, -}: DragDropWrapperProps) { - const handlerDragOver: React.DragEventHandler = event => { - event.preventDefault(); - if (block.dom) { - editor.getHooks().afterOnNodeDragOver(event, { - blockId: block.id, - dom: block.dom, - rect: block.dom?.getBoundingClientRect(), - type: block.type, - properties: block.getProperties(), - }); - } - }; - return
{children}
; -} diff --git a/libs/components/editor-core/src/drag-drop-wrapper/index.ts b/libs/components/editor-core/src/drag-drop-wrapper/index.ts deleted file mode 100644 index bfade20431..0000000000 --- a/libs/components/editor-core/src/drag-drop-wrapper/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './DragDropWrapper'; diff --git a/libs/components/editor-core/src/editor/plugin/hooks.ts b/libs/components/editor-core/src/editor/plugin/hooks.ts index 1c05308a84..45cecebc0f 100644 --- a/libs/components/editor-core/src/editor/plugin/hooks.ts +++ b/libs/components/editor-core/src/editor/plugin/hooks.ts @@ -113,13 +113,6 @@ export class Hooks implements HooksRunner, PluginHooks { this._runHook(HookType.ON_ROOTNODE_DRAG_OVER_CAPTURE, e); } - public afterOnNodeDragOver( - e: React.DragEvent, - node: BlockDomInfo - ): void { - this._runHook(HookType.AFTER_ON_NODE_DRAG_OVER, e, node); - } - public onSearch(): void { this._runHook(HookType.ON_SEARCH); } diff --git a/libs/components/editor-core/src/editor/types.ts b/libs/components/editor-core/src/editor/types.ts index 797d68f46c..ca22ae5d4e 100644 --- a/libs/components/editor-core/src/editor/types.ts +++ b/libs/components/editor-core/src/editor/types.ts @@ -177,7 +177,6 @@ export enum HookType { ON_ROOTNODE_DRAG_END = 'onRootNodeDragEnd', ON_ROOTNODE_DRAG_OVER_CAPTURE = 'onRootNodeDragOverCapture', ON_ROOTNODE_DROP = 'onRootNodeDrop', - AFTER_ON_NODE_DRAG_OVER = 'afterOnNodeDragOver', BEFORE_COPY = 'beforeCopy', BEFORE_CUT = 'beforeCut', ON_ROOTNODE_SCROLL = 'onRootNodeScroll', @@ -219,10 +218,6 @@ export interface HooksRunner { onRootNodeDragEnd: (e: React.DragEvent) => void; onRootNodeDragLeave: (e: React.DragEvent) => void; onRootNodeDrop: (e: React.DragEvent) => void; - afterOnNodeDragOver: ( - e: React.DragEvent, - node: BlockDomInfo - ) => void; beforeCopy: (e: ClipboardEvent) => void; beforeCut: (e: ClipboardEvent) => void; onRootNodeScroll: (e: React.UIEvent) => void; diff --git a/libs/components/editor-core/src/index.ts b/libs/components/editor-core/src/index.ts index 64939c0659..6cdd358058 100644 --- a/libs/components/editor-core/src/index.ts +++ b/libs/components/editor-core/src/index.ts @@ -15,7 +15,4 @@ export * from './kanban/types'; export * from './utils'; -export * from './drag-drop-wrapper'; -export * from './block-content-wrapper'; - export * from './editor'; diff --git a/libs/components/editor-plugins/src/menu/left-menu/LeftMenuPlugin.tsx b/libs/components/editor-plugins/src/menu/left-menu/LeftMenuPlugin.tsx index 29c421f29f..806c93c971 100644 --- a/libs/components/editor-plugins/src/menu/left-menu/LeftMenuPlugin.tsx +++ b/libs/components/editor-plugins/src/menu/left-menu/LeftMenuPlugin.tsx @@ -37,7 +37,7 @@ export class LeftMenuPlugin extends BasePlugin { ); this.sub.add( this.hooks - .get(HookType.AFTER_ON_NODE_DRAG_OVER) + .get(HookType.ON_ROOTNODE_DRAG_OVER) .subscribe(this._handleDragOverBlockNode) ); this.sub.add( @@ -65,24 +65,30 @@ export class LeftMenuPlugin extends BasePlugin { private _onDrop = () => { this._lineInfo.next(undefined); }; - private _handleDragOverBlockNode = async ([event, blockInfo]: [ - React.DragEvent, - BlockDomInfo - ]) => { - const { type, dom, blockId } = blockInfo; + private _handleDragOverBlockNode = async ( + event: React.DragEvent + ) => { event.preventDefault(); - if (this.editor.dragDropManager.isDragBlock(event)) { - if (ignoreBlockTypes.includes(type)) { - return; - } - const direction = - await this.editor.dragDropManager.checkBlockDragTypes( - event, - dom, - blockId - ); - this._lineInfo.next({ direction, blockInfo }); - } + if (!this.editor.dragDropManager.isDragBlock(event)) return; + const block = await this.editor.getBlockByPoint( + new Point(event.clientX, event.clientY) + ); + if (block == null || ignoreBlockTypes.includes(block.type)) return; + const direction = await this.editor.dragDropManager.checkBlockDragTypes( + event, + block.dom, + block.id + ); + this._lineInfo.next({ + direction, + blockInfo: { + blockId: block.id, + dom: block.dom, + rect: block.dom.getBoundingClientRect(), + type: block.type, + properties: block.getProperties(), + }, + }); }; private _handleMouseMove = async (