Comments (4)
What about solving this with classes or inline styles?
I think it's better to keep the directives count to a minimum.
from surface.
Hi @mazz-seven!
I agree we should keep the directives count to a minimum, however, the :show
directive seems to be extremely useful in Surface especially because :if
cannot be used along with :for
in the same node (btw, I have a TODO to add a static check for this). If you want to conditionally show a component/tag, currently you need to either create an extra node or add a filter in the for
comprehension. Vue.js also has a v-show
directive and I'm not aware of any problem in the community regarding its use. Since we're kind of mapping most of the Vue behaviours in our directives, it sounds like a good addition.
And just for the record, I have only one more directive to be added before the first release, which is a :phx-value
which will accept a keyword list or a map. So instead of being forced to pass values as separated attributes like:
phx-value-myvar1="value1" phx-value-myvar2="value2" phx-value-myvar3="value3"
we can use:
:phx-value={{myvar1: "value1", myvar2: "value2", myvar3="value3"}}
or
values = %{,,,}
...
:phx-value={{values}}
Since :show
is already on master, I'll close this issue but feel free to move on with the discussion in case you have other strong arguments against it ;)
from surface.
The Phoenix value directive is an absolutely going to improve our life.
Regarding, the :show directive, I don't have anything against it. I'm a heavy user of Reactjs so we don't really have any directives in it.
I only remember the times with Angular 1, that have a confusing amount of directives.
So, what I'm trying to say is, we should think really hard about adding directives. They are easy to add but almost impossible to remove. ;)
from surface.
we should think really hard about adding directives. They are easy to add but almost impossible to remove. ;)
Wise words 🙂
from surface.
Related Issues (20)
- Erlang Error in Elixir Language Server with Surface HOT 1
- [Using a plugin] Scoped CSS changes require two page reloads. HOT 1
- inputs_for/3 warning HOT 1
- Warnings on Select component with disabled property
- Props missing inside `handle_event()` `socket.assigns` map. HOT 3
- mix surface.init: no function clause matching in Sourceror.Zipper.down/1 HOT 3
- Support for LiveViewNative? HOT 5
- Submitted forms don't carry the "submitter" attribute
- Surface CSS scoping attributes don't work when root component is a component
- When using :on-click={"name", target="#target_id"} I cannot seem to get a sibling to target another sibling node that is rendered in the same parent. HOT 1
- Compatibility with LiveView 0.20 HOT 7
- Question: How would you make the sample tab component to use svg icons instead of font icons HOT 4
- Elixir 1.16: negative steps are not supported in String.slice/2, pass 1..-2//1 instead
- Malformed HTML when using LiveRedirect with another component inside HOT 1
- Mix.env() usage can cause troubles in release HOT 2
- Question: Form example on latest version HOT 2
- error: module Surface.Components.Form.Inputs is not loaded and could not be found. This may be happening because the module you are trying to load directly or indirectly depends on the current module<Description> HOT 1
- Surface LiveComponent raise single static root error if render root is Form Component HOT 2
- error: undefined function date_select/3 in v0.11.4 HOT 1
- Surface.LiveViewTest is broken after Phoenix LiveView 0.20.15 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from surface.