Hi Maria,

Thank you very much for your testimonial.
Today I was able to finally solve the problem with a !important to override
the shadow.
Funny that my current status, issues that I'm facing and solutions it's
exactly as yours :)


Maria Jose Esteve <mjest...@iest.com> escreveu no dia sábado, 12/02/2022
à(s) 16:58:

> Hi Hugo,
> My main project also started like yours. I loaded the default JewelTheme,
> so I could use Jewel and then mashed the CSS's in my defaults.css. Now it's
> a bit different: we compile our own Theme based on Jewel but with our own
> colors and our own effects, using sass.
> There are times when just creating a new CSS class and adding it to the
> component (via the "className" property in the mxml tag or with
> addClass/toggleClasse) is enough, but there are other times when I have to
> do a bit more research to mash up the particular style I want to modify.
> And the most drastic thing that I have had to do, because I have not been
> able to replace the styles that I needed, has been to "extend" the control
> and in the constructor to override the typeNames.
>
> Focusing on your need to put a surplus to the "list-popup" of the ComboBox
> this is what I would do:
>
>
>    - IDENTIFY THE STYLE I NEED TO REPLACE. Looking at the DOM code
>    displayed by the browser, I see that the class defined for the "list-popup"
>    of the combo is "combobox-popup open jewel list".
>
>
>
>
> If you notice, the ".combobox-popup .jewel.list @media (min-width:767px)"
> style has the highest priority. That's where the "box-shadow: none
> ¡important" shadow is overridden. If we override that style, the next one
> to be applied is the one defined in the main class, without @media, where
> "shadow does exist":
>
>
> If you want all your combobox-popup's to have this style, in your
> defaults.css you must specify your style:
>
> @media (min-width: 767px) {
>     .combobox-popup.open .jewel.list {
>     box-shadow: 0 0 6px 1px rgb(1 1 1 / 70%) !important;
>     transform: none;
>     transition: none;
>     }
> }
>
>         This way it works as you wish:
>
>
>
> In the case of the ComboBox, in addition, you must consider that the
> combobox-popup of Jewel, in Tablet and Phone is visualized in another way,
> being positioned in the inferior part. If you need to give it an "always"
> style of your own, you should modify the general one: (I have added for
> this example "border-radius: 1rem;"
>
> .combobox-popup.open .jewel.list {
>         border-radius: 1rem;
>         opacity: 1;
>         transform: translate(-50%, -100%);
>         transition: transform 0.3s 0ms, opacity 0.3s 0ms;
> }
>
>
> This is what I like the least, so much manual work overcomes me, but it is
> also true that if you do it "once" you have it done "forever".
> In the public repository that I have for examples I still work this way,
> without sass, and I code the CSS of Jewel and some other JS components like
> the Inspire-Tree or the JSCalendar.
> I've created a branch [1] with these tests in case you're interested in
> seeing it in action. I have overridden the main view and the mxml of this
> example is shown directly.
>
> I am sure that everyone who has worked with their own stylesheet has faced
> the same problems as us and maybe they could give us another view (Carlos,
> Greg, Piotr,...)
>
> [1] https://github.com/mjesteve/royale-examples-community/tree/CSS_Hugo
>
> Hiedra
>
> -----Mensaje original-----
> De: Hugo Ferreira <*hferreira...@gmail.com* <hferreira...@gmail.com>>
> Enviado el: jueves, 10 de febrero de 2022 9:11
> Para: Apache Royale Development <*dev@royale.apache.org*
> <dev@royale.apache.org>>
> Asunto: Re: How to change the List from Jewel ComboBox
>
> Hi Hiedra,
>
> My project definition:
> I'm using a mix of Basic (when I don't need Jewel components) and Jewel
> components for my project.
> I don't use any CSS file that comes with Jewel.
> I'm skinning as much as I can with my own CSS file (compiling from a jess
> file).
>
> My issue:
> What happens with the Jewel components, all of them apply a "jewel" class
> at code time on the class constructor and this "jewel" conflicts with some
> CSS attributes (even though I don't load the jewel template css files).
>
> What I have done to fix this on Jewel TextInput:
> I had created my own TextInput that extends from Jewel TextInput and at
> constructor method I set typeNames = "" and this works.
>
> For Jewel ComboBox is much more complex:
> Jewel ComboBox is built at runtime by a set of classes: ComboBox (the
> base), ComboBoxView (how CombBox is built with a TextInput and a Button),
> ComboBoxPopUp, ComboBoxPopUpView, etc. ...
> Is the ComboBoxPopupView that builds the list when you click on CombBox
> and this is a Jewel List again with "jewel" class name that conflicts with
> my own CSS (I want to add a shadow).
>
> The only solution (a monkey patch) that I found without recreating
> everything was:
> I Created the full path of Jewel List on my own project.
> I Copied the Jewel List file to this folder.
> I Setted the typeNames to ""
>
> A better solution would be:
> 1. Ignoring the typeNames on every Jewel component with CSS (I don't know
> how and if it is possible).
> 2. Overriding the jewel CSS class behaviour with my own CSS to do nothing
> and don't conflict anymore (I don't know how).
> 3. Creating the List.as file but on my own path and defining to use is
> instead of the original one thru CSS (I already tried this several times
> but did not work).
>
>
>
>
>
> Maria Jose Esteve <*mjest...@iest.com* <mjest...@iest.com>> escreveu no
> dia quinta, 10/02/2022
> à(s) 03:08:
>
> > Hi Hugo,
> > I would focus on CSS but since I don't know what you need I can't be
> > 100% sure.
> > Could you share your requirements? (maybe the only thing to debug is
> > the hierarchy of classes in the CSS).
> >
> > Hiedra
> >
> > -----Mensaje original-----
> > De: Hugo Ferreira <*hferreira...@gmail.com* <hferreira...@gmail.com>>
> Enviado el: jueves, 10 de
> > febrero de 2022 1:56
> > Para: Apache Royale Development <*dev@royale.apache.org*
> <dev@royale.apache.org>>
> > Asunto: How to change the List from Jewel ComboBox
> >
> > Hi,
> >
> > I need to change the List component from a Jewel ComboBox without have
> > to override/copy everything, so, if I create the following
> > folder: org.apache.royale.jewel on my project and the the List.as file
> > within, I can override at runtime the List behaviour from a Jewel
> ComboBox.
> > This simply works however it's a ugly monkey patch.
> >
> > There is any better alternative ?
> >
> > I tried using a css file following other examples without success.
> >
> > By the way, I need this just to clean the typeNames property from the
> > List.as otherwise my own style does not work, so if there is a better
> > way even better.
> >
>
>

Reply via email to