Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Mixins with Pseudo Elements Incorrectly Namespaced #191

Closed
mysterycommand opened this issue Nov 22, 2016 · 7 comments
Closed

Mixins with Pseudo Elements Incorrectly Namespaced #191

mysterycommand opened this issue Nov 22, 2016 · 7 comments

Comments

@mysterycommand
Copy link

This SCSS:

@mixin do-a-thing-with-pseudo-elements() {
  position: relative;
  &::before {
    content: '';
    // whatever else in here
  }
}

.some-class {
  @include do-a-thing-with-pseudo-elements();
}

… produces this CSS:

.___namespace_1234 .some-class {
  position: relative;
}
.___namespace_1234 .some-class ___namespace_1234::before {
  content: '';
  // whatever else in here
}

… but should produce:

.___namespace_1234 .some-class {
  position: relative;
}
.___namespace_1234 .some-class::before {
  content: '';
  // whatever else in here
}

cc/ @oligriffiths

@webark
Copy link
Owner

webark commented Nov 25, 2016

@topaxi is there any reason to ever namespace selectors who's parents are a type of atrule?

@webark
Copy link
Owner

webark commented Nov 28, 2016

@topaxi I guess the one reason would be media queries maybe? Maybe we could just exlude media quires at rules?

function parentIsAllowedAtRule(rule) {
  return rule.parent &&
    rule.parent.type === 'atrule' &&
    !/^@media/.test(rule.parent.name)
}

Something like that?

@topaxi
Copy link
Collaborator

topaxi commented Dec 1, 2016

@webark you're right, namespacing makes only sense in some atrules, i've made an exception for @media and @supports for now :)

Published as postcss-selector-namespace 1.2.8

@webark
Copy link
Owner

webark commented Dec 1, 2016

@topaxi sweet thanks! @mysterycommand just put our v0.2.7 with this in it.

@davearel
Copy link
Contributor

FYI -- This doesn't work in an example of using a mixin for media queries (like bootstraps @media-breakpoint-*)

for example:

@include media-breakpoint-up(md) {
 .test { display: none; }
}

should produce

@media (min-width: 768px) {
  .___namespace_1234 .test { display: none; }
}

but instead it leaves the class exposed 'globally'

@media (min-width: 768px) {
  .test { display: none; }
}

@webark
Copy link
Owner

webark commented Feb 21, 2017

@davearel hmm.. That one is tricky. We namespace before we preprocess the style files. In your case, that would be somewhere you'd have to preprocess it before adding the namespaces, which opens up a whole other can of worms. I'd say, giving you access to some kine of :--component css property that refers to the component would be better. But maybe not.

@davearel
Copy link
Contributor

@webark probably the best temporary fix. Or use something like & {} and just wrap everything inside it.

webark added a commit that referenced this issue Nov 2, 2017
# Change Log

All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.

<a name="0.3.7"></a>
## [0.3.7](v0.3.6...v0.3.7) (2017-11-02)


### Features

* **manifest ordering:** updated broccoli style manifest to now have the order of files in the manifest be sorted first by depth, then by alphanumeric ([fd710bf](fd710bf))



<a name="0.3.6"></a>
## [0.3.6](v0.3.5...v0.3.6) (2017-11-01)



<a name="0.3.5"></a>
## [0.3.5](v0.3.4...v0.3.5) (2017-07-31)


### Bug Fixes

* **component name parsing:** only switching out the word 'component/' if it is what starts the path, not for nest options. This should be revisited with unification Closes [#236](#236) ([54e087e](54e087e))



<a name="0.3.4"></a>
## [0.3.4](v0.3.3...v0.3.4) (2017-06-01)


### Bug Fixes

* **ensure environment:** getting the 'root host', and using a shim if the find host method isn't present, Closes [#231](#231) ([09fa5ec](09fa5ec))



<a name="0.3.3"></a>
## [0.3.3](v0.3.2...v0.3.3) (2017-04-24)



<a name="0.3.2"></a>
## [0.3.2](v0.3.1...v0.3.2) (2017-04-05)


### Bug Fixes

* **style manifest:** updated to new brocoli-style-mainifest properties that are more explicit ([5e848ca](5e848ca))


### Features

* **optimization:** ability to use terse class names to reduce css size ([d53ead8](d53ead8))



<a name="0.3.1"></a>
## [0.3.1](v0.3.0...v0.3.1) (2017-03-30)


### Bug Fixes

* **npm dependencies:** published what was being used to compile multiple differnt css preprocessors into one. closes [#221](#221) ([a060942](a060942))



<a name="0.3.0"></a>
# [0.3.0](v0.2.12...v0.3.0) (2017-02-25)


### Features

* **extensible identifier:** moved the generation of the namespace identifier and if the class should be added to a mixin for easier extensibility ([e3c627b](e3c627b))



<a name="0.2.12"></a>
## [0.2.12](v0.2.11...v0.2.12) (2017-02-24)


### Bug Fixes

* **description:** removed pod specificity ([16eae3b](16eae3b))
* **scss @ rules:** now allowing namespaceing of rules deinfed inside of a scss @ for rule. Fixes [#216](#216) ([6840c5e](6840c5e))



<a name="0.2.11"></a>
## [0.2.11](v0.2.10...v0.2.11) (2017-02-03)


### Bug Fixes

* **documentation:** updated for readabitlity ([d354534](d354534))



<a name="0.2.10"></a>
## [0.2.10](v0.2.9...v0.2.10) (2017-01-26)


### Bug Fixes

* **plain css:** Due to the odd nature of 'glob', you can't have a set of just one item. ([fd0d770](fd0d770)), closes [#178](#178) [#204](#204)



<a name="0.2.9"></a>
## [0.2.9](v0.2.8...v0.2.9) (2017-01-16)


### Bug Fixes

* **nested addons:** no longer switching to the parent app so that addon's specific settings can be used ([849a72d](849a72d))



<a name="0.2.8"></a>
## [0.2.8](v0.2.7...v0.2.8) (2016-12-14)



<a name="0.2.7"></a>
## [0.2.7](v0.2.6...v0.2.7) (2016-12-01)


### Bug Fixes

* **namespacing:** no longer namespacing children of @ rules ([489f23f](489f23f)), closes [#191](#191)



<a name="0.2.6"></a>
## [0.2.6](v0.2.5...v0.2.6) (2016-12-01)


### Bug Fixes

* **ember-2.11:** moving to concatenating and reassigning the classnames in case a classname is already in the array before the init call per [@rwjblue](https://github.com/rwjblue) suggestion ([40113e6](40113e6))



<a name="0.2.5"></a>
## [0.2.5](v0.2.4...v0.2.5) (2016-12-01)


### Bug Fixes

* **ember-2.11:** now not pushing to the frozen classnames property, but reasigning it ([63274c0](63274c0))



<a name="0.2.4"></a>
## [0.2.4](v0.2.3...v0.2.4) (2016-11-22)



<a name="0.2.3"></a>
## [0.2.3](v0.2.2...v0.2.3) (2016-11-15)



<a name="0.2.2"></a>
## [0.2.2](v0.2.1...v0.2.2) (2016-11-05)
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants