Product
Socket Now Supports uv.lock Files
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
reshape-component
Advanced tools
[See also: reshape-components
for a more Web Component style API]
This plugin is based on reshape-include
and supports the same functionality.
In addition it provides more component-like paramaterized includes by copying attributes and content from the
component
tag to the template.
For example, in the following use of component
:
<component src="components/Card/Card.html" id="card1" class="active"></component>
The id
and class
attributes will be copied to the first top-level node in the components/Card/Card.html
file.
While this plugin does everything reshape-include
does and more, it is recommended
for clarity's sake to use reshape-include
for simple includes. In case both plugins are in use, this plugin should be
loaded after reshape-include
.
Spike uses reshape-standard
to configure Reshape. Configuration options for Reshape are passed from app.js
, so to add reshape-component
to a Spike project:
npm install reshape-component
reshape-component
in app.js
and add it to the config:// ..
const htmlStandards = require('reshape-standard');
const reshapeComponent = require('reshape-component');
module.exports = {
// ...
reshape: htmlStandards({
// ...
appendPlugins: [
reshapeComponent()
]
})
};
src
and type
attributes are used by the reshape-component
plugin and will not be copiedclass
attribute will be appended to any existing class
attributetype
attributeThis attribute provides a convenience for specifying component types by a short name, e.g.:
<component type="Card" id="card1" class="active"></component>
is equivalent to:
<component src="components/Card/Card.html" id="card1" class="active"></component>
The path is configurable in the options passed to the plugin via the componentPath
property.
Name | Default | Description |
---|---|---|
componentPath | 'components/$type/$type.html' | Specifies the path to use to include components specified by the type attribute. Any occurrences of $type in the path will be replaced with the value of the type attribute. |
preserveType | false | If true the type attribute will be copied from the component tag to the first top-level node in the template. If a string value is provided it will be used as the name of the target attribute. This can be useful for JavaScript that wants to query the DOM for component nodes. |
preserveType
example// configuring reshape-component:
reshapeComponent({ preserveType: 'data-component-type' })
<!-- defining a component template: -->
<div>
<p>${content}</p>
</div>
<!-- using a component -->
<component type="Card">
<content>Card One</content>
</component>
<!-- result -->
<div data-component-type="Card">
<p>Card One</p>
</div>
Tokens can be used as placeholders in a template and will be substituted with content from the component. Tokens can be used for both plain text values and node trees as well.
Card template:
<div class="card" title="${card-name}">
<h1>${card-title}</h1>
<div>${card-body}</div>
</div>
Component that uses the template:
<component type="Card" class="active">
<card-name>Card One</card-name>
<card-title><span class="title">My Title</span></card-title>
<card-body>My Body Content</card-body>
</component>
Result:
<div class="card active" title="Card One">
<h1><span class="title">My Title</span></h1>
<div>My Body Content</div>
</div>
Tokens can specify default values with the =
character. It works a little differently depending on if the token is
in the content of a node or if it is an attribute.
Card template:
<div class="card" title="${card-name}" ${hidden}="true">
<h1>${card-title=Default title}</h1>
<div>${card-body}</div>
</div>
${hidden}
: since this is an attribute the =
character must appear after the token. If <hidden>
is not defined in
the component then the result will be hidden="true"
${card-title}
: the =
character must appear inside the token. If <card-title>
is not defined in the component then the result
will be <h1>Default title</h1>
[Object object]
FAQs
Include components in reshape templates
The npm package reshape-component receives a total of 2 weekly downloads. As such, reshape-component popularity was classified as not popular.
We found that reshape-component demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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.
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.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.