Commit Graph

362 Commits

Author SHA1 Message Date
ead9aab888 Remove enzyme (#640)
The test that was added is not a good test. If we want to test things, we should be testing logic that is error prone such as all the mouse handling logic and state management. Adding a test for something trivial as displaying a list of data is just going to be annoying when we eventually change the UI and the test breaks.

Since this is the only test using enzyme, I also removed enzyme. We can add it back if we want to test a component using it.
2020-01-31 21:32:09 +00:00
e4919e2e6c Replace i18n by a custom implementation (#638)
There are two problems with the current localization strategy:
- We download the translations on-demand, which means that it does a serial roundtrip for nothing.
- withTranslation helper actually renders the app 3 times on startup, instead of once (I haven't tried to debug it)
2020-01-31 21:06:06 +00:00
4ad38e317e 485: Ability to switch to previously loaded ids in UI (#583) 2020-01-30 21:39:37 +02:00
023400c3cc Revert "Fix keyboard shortcut (#587)" (#617)
This reverts commit cc3d71f13c.
2020-01-30 10:40:49 +01:00
cc3d71f13c Fix keyboard shortcut (#587)
* Fix keyboard shortcut

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-29 16:31:49 +00:00
2dce2ce712 Show labels instead of icons for PNG, SVG (#606) 2020-01-29 02:30:02 +02:00
a9790c74f5 Wider export dialog (#603) 2020-01-29 02:26:02 +02:00
ba4fc0f1b3 Minor redesign of Export Dialog (#604) 2020-01-29 02:25:47 +02:00
97b11b0f53 SVG export (#598)
* first draft of export to SVG. WIP

* enabled text rendeing - which is not quite right atm

* placeholder svg icon

* size the canvas based on the bounding box of elements

* Do not add opacity attributes if default

* render background rect

* Ensure arrows are in the same SVG group

* parse font-size from font

* export web fonts

* use fixed locations for fonts

* Rename export functions

* renamed export file

* oops broke the icon.
2020-01-28 12:25:13 -08:00
de68561df5 lowercase pasted color (#594)
* lowercase pasted color

* remove unused class & don't lowercase input

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-27 19:51:11 +01:00
67eca2bda1 Add landmarks (#564)
Use HTML semantic elements to set the landmarks of the page.

This is helpful for assistive technologies to determine the different regions of content. In our case it's useful for jumping between the different islands that we use to group the form controls.
2020-01-26 17:14:31 -03:00
61264ee2d6 move title to label (#584) 2020-01-26 20:49:18 +01:00
263fef4eaa Add a gap between shapes and lock (#569)
* Add a gap between shapes and lock

The lock is a different type as the rest of the shapes, so we should visually separate it.

* redesign lock icon

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-26 19:01:56 +00:00
94e18bd8e4 Untranslated lock icon (#568)
Sorry my OCD is kicking in... It's super weird that the base of the lock moves when we check / unckeck it. Instead, just the semi-circle shape should move (what this PR implements).
2020-01-26 11:34:15 +01:00
3901ad7dbe Adjust context menu and use open colors (#553)
* Adjust context menu and use open colors

* word wrap

* revert colors & padding

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-26 11:19:21 +01:00
e4ff408f23 Accessible modals (#560)
Improve the accessibility of our modals (the color picker and the export dialog)

Implement a focus trap so that tapping through the controls inside them don't escape to outer elements, it also allows to close the modals with the "Escape" key.
2020-01-25 19:37:58 -03:00
ba13f88924 Do not trigger modal actions when not visible (#562)
Right now we're running useEffect block which runs getExportCanvasPreview on every state update, even if the modal is not visible (eg: when moving the mouse around!). This puts the modal code in its own component so that it doesn't trigger useEffect when not visible.

The code isn't very elegant as we're forwarding all the props, there's likely a better way to handle it (if anyone is interested, PR would be appreciated), but at least now it no longer double renders the scene.

Fixes #559
2020-01-25 14:11:26 -08:00
5b19aeafe9 Make color selection accessible (#556)
By changing from a `<div>` to a `<button>`, it's now possible to use the space key in order to select it
2020-01-25 10:11:57 -08:00
69061e20ac Some a11y fixes (#534)
* Rename ToolIcon to ToolButton

It makes more semantic sense

* Label and keyboard shortcuts announcement

* Refactor common props for ToolButton

* Better doc outline and form controls

* Adjust color picker

* Styling fixes

Co-authored-by: Christopher Chedeau <vjeuxx@gmail.com>
2020-01-25 09:52:03 -08:00
689c94151d fix: typos (#540) 2020-01-24 21:02:55 +01:00
54f9c296b5 Enhance language selection (#538)
* Enhance language selection

* remove top/left margin to limit unusable canvas area

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-24 19:10:44 +01:00
ee68af0fd3 Set Trailing Cmma to (#525) 2020-01-24 12:04:54 +02:00
48024c9116 Remove selected object when storing to backend (#506) 2020-01-22 18:27:44 +02:00
a436e70764 Internationalization followup (#500)
* add translations in data.ts

* add language list
add spanish version

* fixes pr review

* add more translations

* remove unused label

Co-authored-by: David Luzar <luzar.david@gmail.com>
2020-01-22 16:25:04 +02:00
d30498a289 Pointer for Tool icons (#501) 2020-01-21 22:07:09 +01:00
a72a143c84 Introduce Shapelock (#480)
* Introduce shape lock

* Format code with prettier

* Do not reset elementLocked on selection change

* Don't set isSelected to true if element is locked

* Don't reset the cursor

* Move reset cursor call to better spot

* Run prettier + lint
2020-01-20 15:52:19 -08:00
2340dddaad Sync panel props to editing element (#470)
* ensure panel props are sync to editing elem

* ensure we don't create empty-text elements (fixes #468)

* remove dead code

Co-authored-by: Christopher Chedeau <vjeuxx@gmail.com>
2020-01-20 15:16:22 -08:00
ff7a340d2f Internationalization support (#477)
* add i18next lib
add some translations

* add translations

* fix font-family

* fix pin versions
2020-01-20 15:14:10 -08:00
1a03a29025 Use relative CSS units (#484) 2020-01-20 14:59:00 -08:00
4487e9af8a Switch hashes to smaller IDs for the backend (#474)
* Update backend

* log
2020-01-20 20:11:03 +02:00
6ad596e9f1 Share excalidrawings as links! (#356)
* shareable links

* fix

* review comments

* json-excaliber (#464)

* draw

* Boom

* backend

* Remove local

Co-authored-by: Lipis <lipiridis@gmail.com>
2020-01-19 21:56:19 -08:00
7ae52f1164 Add ColorInput component (#455)
* Add ColorInput component

* Use valid color on input blur

* Darken input text and add labels
2020-01-19 18:27:36 -03:00
7f6e1f420e Pure node rendering (#443) 2020-01-19 13:21:33 -08:00
67aed07b72 Subtle border around the color picker (#442)
* Subtle border around the color picker

* Rename
2020-01-18 11:56:47 +01:00
70b88a6a53 Force lowercase for the color inputs (#423) 2020-01-17 21:01:36 +02:00
31403ab373 Bug 389 (#428)
* paste inside the viewport

* Buttons in top left panel aren't horizontally centered
2020-01-17 20:23:41 +02:00
6892348c3d Revert 400 and 420 (#422)
* revert #400 font file

* Revert "Revert "Set scale for export images (#416)" (#420)"

This reverts commit d603921234.
2020-01-17 16:43:24 +02:00
d603921234 Revert "Set scale for export images (#416)" (#420)
This reverts commit 82f559f826.
2020-01-17 15:55:17 +03:00
82f559f826 Set scale for export images (#416) 2020-01-17 15:19:56 +03:00
f4d4b323e1 Update colors from open colors (#406)
* Update to open colors

* Update more

* More colors

* Dahh

* More

* Border none

* More

* Update
2020-01-16 16:54:21 -08:00
8154ccd907 No named colors and lowercase hex (#395)
* No named colors and lowercase hex

* consistent
2020-01-16 10:16:08 -08:00
cb8d866c33 Open colors (#378)
* Add open colors

* More colors

* Update colors

* Shade 0
2020-01-16 18:14:00 +01:00
80cee4d3c0 Add a title for the Export button as it was missing one (#376) 2020-01-15 15:16:43 -08:00
8db8827c6f feat: add line shape (#371)
* feat: add line shape

* fix: align line tool

* fix: hitbox bug sw to ne

* fix: add stroke width n sloppiness  for line

* fix: center line inside a panel box

* fix: use color as a unique key
2020-01-16 00:07:19 +05:00
79aee53ff6 Redesign idea (#343)
* Redisign idea

* Code cleanup

* Fixed to right container

* Reoredered layout

* Reordering panels

* Export dialog

* Removed redunant code

* Fixed not removing temp canvas

* Fixed preview not using only selected elements

* Returned file name on export

* Toggle export selected/all elements

* Hide copy to clipboard button if no support of clipboard

* Added border to swatches

* Fixed modal flickering
2020-01-15 07:42:02 -08:00
8104c8525d ensure contextMenu doesn't overflow viewport (#364) 2020-01-14 09:44:18 +01:00
8785bef523 Support transparent background + inline picker (#325)
Unfortunately, react-color has a bug where transparent color doesn't trigger onChange. I've been annoyed by the huge dependency anyway so decided to take the generated html (which is awesome) and reimplement a specific component for it.

I also made sure that we don't actually render anything when the background is transparent on rough (I looked at the generated path and made sure it didn't have the commands for the background)
2020-01-11 19:10:41 -08:00
157f0eae0c Export to canvas only selected elements (#323)
Fixes #308
2020-01-11 16:15:26 -08:00
1bf18fe4ed Tweak context menu style (#320)
- Move the context menu right next to the mouse so it's not so far away. But 1px out so that nothing is selected until you move your mouse
- Change the colors to be closer to the macos one. Unfortunately, macos has a 0.5px border that I'm not able to reproduce without some annoying hacks, 1px it'll be.
2020-01-11 15:59:42 -08:00
c6accd9fc7 Improve color suggestions (#304)
* Add palettes for each type of color picker.

* Add white canvas background and black element stroke.

* Add white for element background.
2020-01-11 14:58:44 -08:00