Я знаю, что уже поздно, но, надеюсь, это должно помочь другим, так как это не задокументировано, и я просто потратил много времени на выяснение этого.Следующий код позволяет вашим пользовательским компонентам использовать атрибут «mode», чтобы определить, какой стиль загружен.
Шаг 1: Определить несколько styleUrls в определении вашего компонента:
@Component({
tag: 'my-component',
styleUrls: {
default: 'my-component.default.pcss',
dark: 'my-component.dark.pcss',
},
})
export class MyComponent { ... }
Шаг 2: Создание файлов стилей (с общими общими стилями):
Шаг 3: Обновите файл stencil.config.ts для использования globalScript:
export const config: Config = {
namespace: 'mycomponent',
globalScript: './src/globals/global.ts',
...
}
Шаг 4: Создайте глобальный скрипт и определите функцию «setMode», например:
import { setMode } from '@stencil/core';
setMode(elm => {
return (elm as any).mode || elm.getAttribute('mode') || 'default';
});
Шаг 5: Используйте свой пользовательский компонент, например так:
<!-- default mode -->
<my-component />
<my-component mode="default" />
<!-- dark mode -->
<my-component mode="dark" />
Вы можете настроить функцию setMode
для определения режима - например, вы можете найти свойство, установленное в window
, или проверить имя_класса для элемента.Тебе решать.Выше приведен простой пример, который позволяет вам использовать атрибут «mode» для элемента ... возвращаясь к «default», если ничего не указано.