ソースを参照

Adds undo / redo / clear button

main
Steve Ruiz 4年前
コミット
2755b58f8f
4個のファイルの変更50行の追加3行の削除
  1. 1
    3
      components/editor.tsx
  2. 2
    0
      components/tools-panel/tools-panel.tsx
  3. 46
    0
      components/tools-panel/undo-redo.tsx
  4. 1
    0
      state/state.ts

+ 1
- 3
components/editor.tsx ファイルの表示

@@ -20,7 +20,6 @@ export default function Editor() {
20 20
 
21 21
   return (
22 22
     <Layout>
23
-      <Toolbar />
24 23
       <Canvas />
25 24
       <LeftPanels>
26 25
         <CodePanel />
@@ -42,10 +41,9 @@ const Layout = styled('div', {
42 41
   bottom: 0,
43 42
   right: 0,
44 43
   display: 'grid',
45
-  gridTemplateRows: '40px 1fr auto 40px',
44
+  gridTemplateRows: '1fr auto 40px',
46 45
   gridTemplateColumns: 'minmax(50%, 400px) 1fr auto',
47 46
   gridTemplateAreas: `
48
-    "toolbar toolbar toolbar"
49 47
     "leftPanels main rightPanels"
50 48
     "tools tools tools"
51 49
     "statusbar statusbar statusbar"

+ 2
- 0
components/tools-panel/tools-panel.tsx ファイルの表示

@@ -16,6 +16,7 @@ import React from 'react'
16 16
 import state, { useSelector } from 'state'
17 17
 import styled from 'styles'
18 18
 import { ShapeType } from 'types'
19
+import UndoRedo from './undo-redo'
19 20
 import Zoom from './zoom'
20 21
 
21 22
 const selectSelectTool = () => state.send('SELECTED_SELECT_TOOL')
@@ -129,6 +130,7 @@ export default function ToolsPanel() {
129 130
           </IconButton>
130 131
         )}
131 132
       </Container>
133
+      <UndoRedo />
132 134
     </OuterContainer>
133 135
   )
134 136
 }

+ 46
- 0
components/tools-panel/undo-redo.tsx ファイルの表示

@@ -0,0 +1,46 @@
1
+import { IconButton } from 'components/shared'
2
+import { RotateCcw, RotateCw, Trash2 } from 'react-feather'
3
+import state, { useSelector } from 'state'
4
+import styled from 'styles'
5
+
6
+const undo = () => state.send('UNDO')
7
+const redo = () => state.send('REDO')
8
+const clear = () => state.send('CLEARED_PAGE')
9
+
10
+export default function UndoRedo() {
11
+  return (
12
+    <Container>
13
+      <IconButton onClick={undo}>
14
+        <RotateCcw />
15
+      </IconButton>
16
+      <IconButton onClick={redo}>
17
+        <RotateCw />
18
+      </IconButton>
19
+      <IconButton onClick={clear}>
20
+        <Trash2 />
21
+      </IconButton>
22
+    </Container>
23
+  )
24
+}
25
+
26
+const Container = styled('div', {
27
+  position: 'absolute',
28
+  bottom: 12,
29
+  right: 12,
30
+  backgroundColor: '$panel',
31
+  borderRadius: '4px',
32
+  overflow: 'hidden',
33
+  alignSelf: 'flex-end',
34
+  border: '1px solid $border',
35
+  pointerEvents: 'all',
36
+  userSelect: 'none',
37
+  zIndex: 200,
38
+  boxShadow: '0px 2px 12px rgba(0,0,0,.08)',
39
+  display: 'flex',
40
+  padding: 4,
41
+
42
+  '& svg': {
43
+    height: 13,
44
+    width: 13,
45
+  },
46
+})

+ 1
- 0
state/state.ts ファイルの表示

@@ -143,6 +143,7 @@ const state = createState({
143 143
             SAVED: 'forceSave',
144 144
             UNDO: 'undo',
145 145
             REDO: 'redo',
146
+            CLEARED_PAGE: ['selectAll', 'deleteSelection'],
146 147
             SAVED_CODE: 'saveCode',
147 148
             DELETED: 'deleteSelection',
148 149
             STARTED_PINCHING: { to: 'pinching' },

読み込み中…
キャンセル
保存