postcss / postcss-nested

PostCSS plugin to unwrap nested rules like how Sass does it.
MIT License
1.15k stars 66 forks source link

select all inputs with type as well as text area and select elements with :focus #149

Open FranciscoKloganB opened 1 year ago

FranciscoKloganB commented 1 year ago

Howdy! :wave:

I am currently working on a TailwindCSS/PostCSS project and I am using the @tailwindcss/forms plugin. Unfortunately, it applies an undesired color styling to my forms. The author's recommended approach is to use normal CSS to override that color on the base layer which I am doing. I also have postcss-nested installed and configured on my project according to the instructions of TailwindCSS v3 documentation.

Given the two examples below, only the first one works. The second, which I wish it worked does not. I would like to know what I am doing wrong. :(

TLDR: The first example works but I have to add :focus suffix to all elements I want to target.

// Works
@layer base {
  [type="text"]:focus,
  [type="email"]:focus,
  [type="url"]:focus,
  [type="password"]:focus,
  [type="number"]:focus,
  [type="date"]:focus,
  [type="datetime-local"]:focus,
  [type="month"]:focus,
  [type="search"]:focus,
  [type="tel"]:focus,
  [type="time"]:focus,
  [type="week"]:focus,
  [multiple]:focus,
  textarea:focus,
  select:focus {
    border-color: theme("colors.primary-light");
  }
}

// Does not work
@layer base {
  [type="text"],
  [type="email"],
  [type="url"],
  [type="password"],
  [type="number"],
  [type="date"],
  [type="datetime-local"],
  [type="month"],
  [type="search"],
  [type="tel"],
  [type="time"],
  [type="week"],
  [multiple],
  textarea,
  select {
    &:focus {
      border-color: theme("colors.primary-light");
    }
  }
}
ai commented 1 year ago

Hi! The second example should work (at least with only postcss-nested).

  1. What is your PostCSS config?
  2. What is your output and what output do you expect?
FranciscoKloganB commented 1 year ago

Hey! How are you? Sorry for the late response but I spent so much time on this, I eventually just accepted pure CSS.

module.exports = {
  plugins: {
    "postcss-import": {},
    "postcss-focus-visible": {
      replaceWith: "[data-focus-visible-added]"
    },
    "tailwindcss/nesting": "postcss-nested",
    tailwindcss: {},
    autoprefixer: {}
  }
}
  1. 
    /* I would expect the output above (commented with // Works); */

/ But when the code minifies, from what I remember back then, it simply "spitted out" whatever I had written. /

select:focus { border-color: theme("colors.primary-light"); }

ai commented 1 year ago

Can you show me some example on top of pure postcss-nested (without any plugins) in a way: input, real output, expected output?