zastrowm / friendly-engine Goto Github PK
View Code? Open in Web Editor NEWWYSIWYG Web App Builder
License: MIT License
WYSIWYG Web App Builder
License: MIT License
See https://github.com/jamiebuilds/tinykeys; it seems to have better control over the scope of the shortcuts.
There are specific controls that take more advanced data structures, such as trees or lists, and we need to design how we expect those controls/structures will be edited and rendered in a way that provides flexibility but doesn't include make it overly complex for non-coding users.
Longer term, we should consider whether templates would solve enough use cases (see https://sheetui.com/ for inspiration) or whether we can incorporate a "mini-instance" of the designer for each sub-item.
We started with stencil.js because of the hot-reload and fast development cycle, but some of the choices made conflict with how we'd like to architect the application. Specifically:
async
methods on elements even when we know that elements should be loaded and availableWe think that we could mimic the hot-reloadness and use raw custom elements (maybe with some TS decorators), allowing more control over the framework.
I, as a user, would like to be able to add controls other than buttons, so that the user can provide other types of inputs like numeric values or textual values.
Possible list of controls:
Eventually it would be nice to support:
Currently, the editor is the only surface available for the controls, but the end result is supposed to be an hostable app that accepts data from an external source. We need to enable this at some point.
We should get this in from the beginning before we get too far; architecturally it'll need to be thought out.
We should be able to support the following on all controls that have simple-text:
At least for development, this will speed up trying things out
We need to determine how we plan on testing the framework & actually write said tests
Open issue meant to document interesting products that have a similar focus or can serve as inspiration
I, as a user, would like multiple controls to be selectable & resizable at once, so that I can more quickly adjust the layout of multiple items at once.
Currently, they're absolutely positioned from the top-left, but the layout system needs to be able to specify the position as relative to whatever size the user specifies.
The canvas area (currently checker boarded) should be selectable and allow its properties (like the background color) should be editable. Ideally the size would also be editable
Currently, all controls have drag handles but ideally we should be better about when we show them
Rather than requiring a fixed layout of all the controls, it'd be better to use a docking framework and allow the user to customize where panes appear.
Status issue to serve as an indicator of the progress of the move to react.js
We're inconsistent on how default property values should behavior. For instance, BackgroundColorProperty
returns '' when no value is set, but may have a default value set by the theme. On the other hand, HorizontalAlignmentProperty
returns the computed value by default (center
, but is settable via theme) and doesn't really support returning "I'm using the default value"; FontSizeProperty behaves sort of in the same way as HorizontalAlignmentProperty
.
We need to determine if we want computed values to be returned by getValue
. Perhaps we need both getAppliedValue
and getCurrentValue
; where the former is explicitly set values, and the latter is the the value, even if it's computed from the current theme.
We should also consider if this is only a problem for "layout" properties, because of theming, or if it's a generalized issue.
General issue to gather thoughts on how the winform behaves.
The subsequently selected have black dots instead of open-white ones:
They have to use the drag handle:
But not resized - containers don't support mouse-down drag:
After the switch away from stencil.js (see #5), we lost a couple nice benefits like hot reload, TS decorators. This issue serves as the milestone tracker for getting back the niceties that we lost.
I, as a user, would like to be able to change the properties of controls so that I can customize controls to fit my needs.
We should be able to adjust things like:
Eventually these are things that would be nice to have as well:
Eventually we'll need a plan for binding. At the moment we could envision two types of binding:
We will probably implement (1) initially and potentially implement (2) as an app-specific thing. The important thing about (2) is that we expose a way to indicate the properties are overridden/sourced from elsewhere.
JSX is much more concise than using document.createElement
directly; it'd be nice to be able to start using it again to define elements, even if it's only for a single element.
As mentioned in #19 and via comment on #9, we need to support additional layout containers for cases where users don't want to use absolute positioning.
We need to consider the use cases and how different frameworks solve them.
Some general containers known to other UI technologies:
Came across this when implementing #20
document.activeElement
points to the document.body
resulting in keyboard shortcuts no longer workingAs denoted by #6 (and #5) we need to implement hot-reload functionality.
This issue shall serve as a tracker and as a place for research to be placed.
The prototype branch (specifically 4c7256c) contains some code related to HMR.
The webpack HMR Api documentation is @ https://webpack.js.org/api/hot-module-replacement/
In 4c7256c I determined that we can have custom elements auto-reload, but it does look like parent modules also are required to accept the updates - I looked into this via Aborted because parent is not accepted and couldn't find a way around it.
Current plan of approach:
Seems like an easy item to add; right now you can't simply copy an existing control to make a copy of it.
User feedback along the lines of "I didn't know I could add multiple components because it's blank by default".
For newly added controls, we should include default text
Certain controls could benefit from an auto-height or auto-width. Specifically with the label control, you change the text then need to change the size right after to match.
For #6, it would be ideal if we had typescript decorators/transformers to cut down on some of the boilerplate for custom elements.
This issue serves as a placeholder for the research/links about transformers.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.