Pausansol / Camilo

Sketch plugin specially crafted to work in Design systems with multiple themes
MIT License
188 stars 18 forks source link

Not swapping nested symbol colors. #15

Closed txcrew closed 5 years ago

txcrew commented 5 years ago

Hi there,

I believe I found a bug switching between brand libraries and the master library, when one of the symbols in the document contains a nested symbol with a shared style.

EDIT: To clarify, the issue only occurs when the "brand" libraries contain a symbol of the same name that also contains a nested symbol, with an applied style.

Here is the scenario:

I have a "master" library with a set of shared color styles, and 2 symbols. Symbol A is a circle, and Symbol B is a square with Symbol A nested inside of it. Both symbols, A & B are attached to shared styles, Primary and Accent, respectively.

I have 2 "brand" libraries set up that contain alternate shared styles, and both Symbol A and Symbol B. In each brand library Symbol B has a different layer mask on it to change it's shape.

All shared style and art board names in each library are identical.

The bug comes in on brand switch. When swapping from master > brand1 and then from brand1 > brand2, everything works correctly. However, when I swap back from brand1 > master or brand2 > master, colors in the nested symbol hold over from whichever brand library I was on previously.

However, after I notice that the nested color did not swap, if I sync master > master, then all colors are corrected.

My understanding is that the correct behavior should be all color overrides are swapped, regardless if they are top level or nested symbols.

For further clarification, I have attached my example libraries as described : testLibraries.zip

Thanks for checking this out!

txcrew commented 5 years ago

This might help further clarify the issue with a simpler explanation using screen shots of the Sketch inspector panel during the swapping flow:

brandswapflow

And just to add, I'm running: Sketch: 53.2 Camilio: 1.4.1

Pausansol commented 5 years ago

Hi @txcrew, this is a very strange case. I does swapping between brand 1 and brand 2 always and the order you do the switch affects the result. Something to look at, but, in the meantime you can disable the layerStyle overrides in the affected symbol and it will work.

captura de pantalla 2019-03-02 a las 13 35 05
txcrew commented 5 years ago

Great point, @Pausansol, thank you. I will disable the layer style in the "master" library as it seems like the break in the swapping flow only happens when you return to the "master".

Thanks again for the workaround!