-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[EPIC] WYSIWYG/Rich Text Editor #275
Comments
Why Quill: https://quilljs.com/guides/why-quill |
Quill Checklist example: https://quilljs.com/standalone/list Need to understand how it works under the hood. 🔍 |
Sadly, the Delta does not have the "checked" attribute applied to the done item ... |
The first Advanced feature listed above is Markdown support. While searching for "Quill Markdown support" I came across this post The Why? https://github.com/ianstormtaylor/slate#why But then when we look at the Slate examples they are all React:
Obviously this is because Fb has succeeded in pushing React to most devs despite its objective inferiority from a technical and UX perspective. Slate looks promising, but it's still very much "beta". 💭 |
I wanted to surface https://github.com/bangle-io/bangle.dev, a library which I have been working on recently. It supports majority of your requirements and is built on top of Prosemirror which makes it very easy to extend. And ya it support OT collaboration. |
@kepta apologies for not responding at the time. 🤦 |
For ultra-basic |
Used my alone-time on the train 🚂 today to sketch the "Enhance" Menu for the Feedback is very much encouraged/welcome. 💬 🙏 |
I feel very much like the Actions items you have here are the really important ones that should be built out and tested first. tl;drTooltipsYes! Do these 'play' once, on initial load? Basic EnhancementIt's kind of fascinating because I think it speaks to the different use cases for this app. Of these, the only one I would see as 'important' for my use case(s) is the hyperlink functionality as I have noted/requested in dwyl/mvp#141 Should there be a user feedback request to then make this explicit or actually allow hyperlinking of words as you would need when writing a document/full note/blog post/draft of an email/whatever long form text, then we build that out. ActionsThis is where the magic happens! Picture addition, time estimates, deadlines and tasks are all great, though obviously the task item will need more definition to build out the functionality (does this turn the whole item into a task? Does it create subtasks? How does this appear on the list interface? Definitely all topics for a different - and existing - issue). However, the actual interface here feels too small - I can't quite picture people with big thumbs actually hitting the icon they truly want. I would also consider having them in a separate menu/area altogether to the 'basic enhancement' features and differentiating them with some styling, but this isn't relevant if we start building these actions out first as opposed to the basic enhancement features. I can take a stab at this if I get some help from you @nelsonic in prioritising tasks. When each of these has a linked issue, I can also comment on the functionality (like I would like to be able to take a picture from directly inside the app as a post-MVP feature for example). |
@iteles all good insights/questions as always. ❤️ The goal of building our I've studied interface design enough to know that the flow I'm proposing will work well. Please feel free to open issues for the specific features you would like to see. 🙏 |
As a person using the dwyl App to capture my thoughts/ideas/tasks/nots
I want to have a rich text editor with (basic) controls for formatting
So that I can visually enhance my
items
so they are easier/faster to organise and read.Features / Requirements
Each one of these feature/requirement checkboxes will link to a sub-issue with more detail.
If the feature is already available in our choice of (existing open source) package, then we can simply check it off once the feature is working (and covered by our end-to-end UI tests).
item
becomes atask
✅Please add more features/requirements to this list as you think of them. 🙏
This is your product every bit as much as it's mine. Contribute! 🚀
Research
I've done a fair amount of research (8+ hours) into the available options in preparation for opening this issue.
For Web I think we need to use a existing
JS
package in the short term to ship faster.As much as I (still) love
Elm
, there is no "pret-a-porter" editor we can use, and I think it will take us 1-2 months to develop our own. (see more detail below)During the course of my research I looked at:
Quill.js
My preliminary leaning is towards using Quill.js: https://github.com/quilljs/quill
I don't think Quill is necessarily "better" than any of the others, it just has a "kill feature"!
My reasoning for Quill is actually Delta the underlying format!
zefyr
https://github.com/memspace/zefyr uses Delta:So when we need to build our Cross-platform Native App in Flutter, we already have the format to allow us to efficiently pass minimal data over the wire to collaborate on work as a team. see: dwyl/learn-flutter#50
I like the approach taken by Medium (the blogging/writing) platform they don't show the editor controls at all until you highlight a block of text. At which point they show an ultra-minimalist contextual editor:
We definitely want to take the approach of hiding the interface until the interaction by the "user" invokes it. Having a cluttered interface is the worst!
Elm?
I obviously searched for "elm wysiwyg editor" and "elm rich text editor" both on Google and https://korban.net/elm/catalog (the package search that only includes v0.19 compatible packages) and looked at https://github.com/mweiss/elm-rte ... it hasn't had much traction since the RFP on Elm Discourse (still only 1 contributor last commit 26 Dec 2019), no (real) tests ... the author appears to have shifted focus to: https://github.com/mweiss/elm-rte-toolkit which is still in it's infancy but looks really promising.
See: https://discourse.elm-lang.org/t/a-toolkit-to-create-rich-text-editors-in-elm/5464
If we had unlimited time, we would write our own WYSIWYG editor in Elm for sure!
Having no runtime errors and a compiler to catch any type errors would be awesome!
But we really don't have a lot of time to spend months writing our own editor which will only be useable on the Web and then we would still need to re-write it for Mobile ... We need to Ship!
I don't think we will incur too much technical debt by using an existing JS editor, provided we are laser focussed in our use and it's self contained in the "form" template.
Thoughts?
The text was updated successfully, but these errors were encountered: