@smui/common
Version:
Svelte Material UI - Common
64 lines (44 loc) • 3.76 kB
Markdown
# Svelte Material UI - Feature Targeting
SMUI Feature Targeting provides infrastructure to allow CSS styles to be included or excluded categorically.
Most of the time, you shouldn't need to depend on `smui-feature-targeting` directly. However, understanding it can be useful if you're interested in having more control over when certain types of SMUI styles are emitted.
# Basic Usage
## Styles
Authoring component styles:
```scss
'/common/feature-targeting';
my-component-core-styles($query: feature-targeting.all()) {
$feat-structure: feature-targeting.create-target($query, structure);
feature-targeting.targets($feat-structure) {
// ...
}
}
```
Consuming component styles:
```scss
'/common/feature-targeting';
'my-component-mixins';
// To include all styles (using the default of mdc-feature-all() defined above):
my-component-core-styles;
// Or, to include a specific subset of styles:
my-component-core-styles(structure);
my-component-core-styles(feature-targeting.any(color, typography));
// The above two @includes and the following @include would produce equivalent results:
my-component-core-styles(feature-targeting.without(animation));
```
# Sass Mixins and Functions
| Mixin | Description |
| ------------------------------ | ----------------------------------------------------------------------------------------- |
| `targets($feature-targets...)` | Conditionalizes content to only be emitted if the given feature target(s) is/are queried. |
| Function | Description |
| -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `create-target($feature-query, $targeted-feature)` | Returns a variable to be passed to `targets` in order to filter emitted styles. |
| `all($feature-queries...)` | Returns a query object which will result in emitting `targets` blocks that match _all_ of the specified features. Passing no arguments results in all blocks being emitted, which is the most common use case. |
| `any($feature-queries...)` | Returns a query object which will result in emitting `targets` blocks that match _any_ of the specified features. Passing no arguments results in no blocks being emitted. |
| `without($feature-query)` | Returns a query object which will result in emitting `targets` blocks that do _not_ match the specified feature. |
`$feature-query` and `$feature-queries` refer to one or more of the values listed below under Supported Features.
## Supported Features
SMUI's styles are currently split according to the following features:
- `structure` - All baseline styles that don't fit into any other category
- `animation` - Styles responsible for causing animations and transitions to occur
- `color` - Color-specific styles which rely on `mdc-theme` variables
- `typography` - Typography-specific styles which rely on `mdc-typography`