Hi,

ok. I think it's clear there's no much consensus, so I think we should left
things as they are now and see other ways to solve.
I think we can have a removeStyleProperty function that accepts an element
and a string property to be removed. This can solve most of the problems of
this kind with any property user needs.
As well, I think since Jewel is more focused on making things easier so
I'll implement width/height changes at StyledUIBase level.

Thanks for your participation! :)

Carlos




El lun., 23 dic. 2019 a las 11:42, Harbs (<[email protected]>) escribió:

>
>
> > On Dec 23, 2019, at 10:34 AM, Carlos Rovira <[email protected]>
> wrote:
> >
> >>> If NaN is not allowed then what’s the uninitialized value?
> >>
> >> The initial value is obviously NaN. That has a special meaning on the
> >> uninitialized state — meaning there’s no value to set.
> >>
> >
> > For me that't the key: in JS a style not set means it has the default
> value
> > since is not assigned to a concrete instance.
> > (width and height defaults to auto, position to static, display to block
> or
> > inline depending on the element).
>
> I disagree. That’s just an implementation detail that doesn’t concern the
> user.
>
> The getter for dimensions never return NaN, so while “_height” might be
> NaN, “height” (the getter) will never be NaN.
>
> >
> >>
> >> My point is that *setting* the value to NaN is an anti-pattern (besides
> >> adding extra code for that not being PAYG). Usually setting a value
> which
> >> is supposed to be a valid number to NaN indicates a bug somewhere. We’d
> be
> >> doing a better service to developers by explicitly making NaN illegal
> and
> >> throwing an error rather than allowing it and encouraging an
> anti-pattern.
> >>
> >
> > We can do that, but IMO the special way JS works will need people to
> learn
> > about what means NaN for width/height in Royale, all because JS does in
> > that strange way, and we need to think "what will be more useful for our
> > devs/users?", options are:
> >
> >   - Remove style value for width/height: I think that will be useful for
> >   them (I know since I work on things like that all the time)
>
> We should have an inheritWidth and inheritHeight utility function which
> removes the style. For non-basic components (such as Jewel), I’d bake this
> into the components as a method (with the same name).
>
> It likely makes sense to have inheritX and inheritY as well.
>
> >   - Make it ilegal (throw error): IMHO, people will find this strange
> >   since NaN is a possible value for Number, so I think nothing better or
> >   worse than the above option, but more cumbersome since people will left
> >   without options to go back to the default value in JS. Then some of
> them
> >   could try to do going to lower JS code as I did in some components
> already.
>
> We should do this as well. I don’t think it’s strange at all to get an
> error “height must be a valid number”. It would go a long way towards
> finding bugs. I’ve actually bumped into this class of bugs already.



-- 
Carlos Rovira
http://about.me/carlosrovira

Reply via email to