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<mailto:hferreira...@gmail.com>> Enviado el: jueves, 10 de febrero de 2022 9:11 Para: Apache Royale Development <dev@royale.apache.org<mailto: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<mailto: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<mailto:hferreira...@gmail.com>> > Enviado el: jueves, 10 de > febrero de 2022 1:56 > Para: Apache Royale Development > <dev@royale.apache.org<mailto: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. >