
Security News
pnpm 10.0.0 Blocks Lifecycle Scripts by Default
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
@material/density
Advanced tools
Density subsystem provides adaptive layout to components. Material Design uses low-density space by default but offers high-density space when it improves the user experience. Components with high density enable users to process and take action against large amounts of information in a more manageable way. List, tables, and long forms are components that benefit from increased density.
npm install @material/density
NOTE: You do not need to directly depend on
@material/density
, use component provided density Sass mixins instead.
The styles for applying density to button component instance looks like this:
@use "@material/button";
.my-custom-button {
// Sets button density scale to `-3`, i.e. button height to `24px`.
@include button.density(-3);
}
This would apply -3
(high density) to button component instance.
You would indirectly use the Density API through respective component's mixin which takes care of setting appropriate component height.
Here are the components that do provide density Sass mixins:
Components that supports density provides Sass mixins to customize density for that component. Each density mixin takes in a density scale number, e.g. 0 (the default) or -1 (higher density).
Currently, the density system only allows negative numbers to customize for high density. The lower the density scale, the higher the component density. The exact density scale range depends on the component. If the scale number is unsupported by the component density mixin, the compiler will report an error at build time.
The height or size of a component is calculated with the following formula:
@use "@material/button";
@use "@material/density";
$height: button.$height + density.$interval * $density-scale
/// @example 36px + 4px * (-3) => 24px
The density interval is set to 4px for visual consistency.
It is recommended to customize density via the provided density mixins, rather than arbitrarily applying component height.
NOTE: Touch targets are automatically disabled when density mixins are applied, since dense components should be optionally enabled and therefore do not have the same default accessibility requirements.
Components that has different variants may have their own density mixin.
For example, Tab Bar has two density mixins:
tab-bar.density()
: Density mixin for standard tab bar.tab-bar.stacked-density()
: Density mixin for tab bar that has icon stacked on top of label.Similarly, text field provides 3 different density mixins based on its variant.
Material component that renders another component inside it needs set its own density scale accordingly. Applying density mixin on parent component does not automatically apply density to its children.
For example, Applying density to data table does not automatically set density scale to row checkbox. You'll have to explicitly set density scale to its children. This'll allow clients to have full control on the layout.
This package is used as utility for other components' density mixins. Customizations provided by this package is not intended to be consumed directly by developers, use component's density mixin instead.
Variable | Description |
---|---|
$interval | Density interval between each dense scale. This interval is used for numbered density scale to calculate dense height based on baseline component height. |
$minimum-scale | Minimum scale supported by density subsystem. This scale always maps to highest dense scale. |
$maximum-scale | Maximum scale supported by density subsystem. This scale always maps to lowest dense scale. |
$supported-scales | Supported density scale when density literal is used (For example, minimum ). |
Function | Description |
---|---|
prop-value($density-config, $density-scale, $property-name) | Returns component property value based on given density config and density scale. |
14.0.0 (2022-04-27)
unset
is unsupported in IE. (f460e23)validateTooltipWithCaretDistances
method. (3e30054)theme-styles
mixin... the value being retreived from the $theme
map and css property name was swapped. The mixin would request font-size
/font-weight
/letter-spacing
from the $theme
map (which expects size
/weight
/tracking
)... so these values would always be null
. (32b3913)attachTo
. (05db65e)showTimeout
is not set (indicating that this tooltip is about to be re-shown). (6ca8b8f)minRange
param to range sliders to request a minimum gap between the two thumbs. (8fffcb5)valueToAriaValueTextFn
and valueToValueIndicatorTextFn
functions are called for. (b6510c8)PiperOrigin-RevId: 444830518
PiperOrigin-RevId: 419837612
FAQs
Density utilities for Material Components for the web
The npm package @material/density receives a total of 639,675 weekly downloads. As such, @material/density popularity was classified as popular.
We found that @material/density demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 15 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.