Я создал новый проект, используя стартер компонента трафарета. Внутри моего компонента я использую внешний JS nouislider , который вводит HTML элементов в мой div
(this.slider
ref):
...
componentDidLoad() {
noUiSlider.create(this.slider, {
start: [20, 80],
range: {
'min': 0,
'max': 100
}
})
}
...
Имею скопировал ползунок CSS в my-component.css
и переписал все с помощью селекторов :host
для теневого домена:
:host(.my-component) .noUi-target {
position: relative;
direction: ltr
}
Все отлично работает в Chrome / Firefox, но стили ползунка не работают в IE11 / Edge, потому что Stencil добавляет вспомогательный класс sc-my-component
к каждому элементу, который есть у меня в методе рендеринга, и генерирует CSS правил следующим образом:
.my-component.sc-my-component-h .noUi-target.sc-my-component {
position: relative;
direction: ltr
}
, но внедренные nouislider
дочерние HTML элементы на них нет вспомогательных классов. У меня есть отвратительное исправление для этого случая atm:
...
componentDidLoad() {
noUiSlider.create(this.slider, {
start: [20, 80],
range: {
'min': 0,
'max': 100
}
})
this.slider.querySelectorAll('div').forEach((child)=>{
child.classList.add('sc-my-component')
})
}
...
Я добавляю вспомогательные классы после создания ползунка (ползунок генерирует только дочерний элемент divs
). Есть ли лучший способ сообщить Stencil, что я внедряю элементы в методы жизненного цикла и что он должен распознавать эти элементы при создании правил CSS?