The library provides simple directive for Angular which does the css injection
npm i --save ngx-shadow-class
- Import
ShadowClassModule
into yourapp.module
or other shared module - Add
shadow-class="my-class"
to inject css into the shadow element
- It will receive list of classes which need's to be injected into the shadow DOM style
- It will take all style sheets of the document and search for the
<components_tag_name>.<style from received list>
and inject the body into the styles of the shadow DOM ashost:(.<style from received list>) ....
Important to create style by specifying component tag and class name.
Use /deep/
if the style is in the host:
ex below
Ex: ion-toggle.my-class-name ...
The example is provided based on the Ionic 4.0.x project
<ion-header>
<ion-toolbar>
<ion-title>
Ionic Blank
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content padding>
<ion-toggle class="test-class" shadow-class="test-class test-class-global"></ion-toggle>
</ion-content>
:host {
/deep/ ion-toggle {
&.test-class {
.toggle-inner {
width: 10px;
}
button {
z-index: 9999;
}
}
}
}
ion-toggle {
&.test-class-global {
.toggle-inner {
width: 10px;
}
}
}
- :host(.test-class-global) .toggle-inner { width: 10px; }
- :host(.test-class) .toggle-inner { width: 10px; }
- :host(.test-class) button { z-index: 9999; }