Khan / aphrodite

Framework-agnostic CSS-in-JS with support for server-side rendering, browser prefixing, and minimum CSS generation
5.34k stars 188 forks source link

Handling multiple selectors #401

Open Abban-Fahim opened 2 years ago

Abban-Fahim commented 2 years ago

This issue is to resurface a four year old issue https://github.com/Khan/aphrodite/issues/196.

As the issue already explains, using a , to separate two psuedo slectors in the same style block, wont add the base style (with the hash) to the second psuedo-selector. I've been scrutinising the library's code and beleive it si due to the fact that the logic only targets the first psuedo selector in the generateSubtreeStyles function: https://github.com/Khan/aphrodite/blob/225f43c5802259a9e042b384a1f4f2e5b48094ea/src/generate.js#L74-L81 I don't have the expertise to solve this problem or I would submit a PR. I hope this sort of feature can be added. Ideally, I would want it to work like this:

const style = StyleSheet.create({
  selector1: {
    ':before, :after': {backgroundColor: "green"}
});

to output something like this:

.selector1_HASH:before, .selector1_HASH:after {
   background-color: green;
}

Thanks!