Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
stimulus-use
Advanced tools
If you want to use stimulus-use
with Stimulus 3 you can use the version 0.50.0+
. This and all future versions are designed to work with the @hotwired/stimulus
npm package.
Note: If other packages still depend on the stimulus
npm package you can safely keep that in your package.json
, this won't break the stimulus-use
compability.
npm i stimulus-use @hotwired/stimulus
yarn add stimulus-use @hotwired/stimulus
If you want to use stimulus-use
with Stimulus 2 (or below) you can use version 0.41.0
. This version is designed to work with the stimulus
npm package.
npm i stimulus-use@0.41.0 stimulus@2.0.0
yarn add stimulus-use@0.41.0 stimulus@2.0.0
We got you covered 👉 stimulus-use.github.io/stimulus-use
This set of mixins is built around the Observer APIs
and custom events to enhance your controllers with new behaviors.
Mixin | Description | NEW Callbacks |
---|---|---|
useClickOutside | Tracks the clicks outside of the element and adds a new lifecycle callback clickOutside. | clickOutside |
useHotkeys | Registers hotkeys using the hotkeys-js library and binds them to handler methods | |
useHover | Tracks the user's mouse movements over an element and adds mouseEnter and mouseLeave callbacks to your controller. | mouseEnter mouseLeave |
useIdle | Tracks if the user is idle on your page and adds away and back callbacks to your controller. | away back |
useIntersection | Tracks the element's intersection and adds appear, disappear callbacks to your controller. | appear disappear |
useMatchMedia | Tracks if the window matches a media query string. | is[Name] , not[Name] and [name]Changed |
useMutation | Tracks mutations on an element, its attributes and/or subtree. Adds a mutate callback to your controller. | mutate |
useResize | Tracks the element's size and adds a new lifecycle callback resize. | resize |
useTargetMutation | Tracks when targets are added or removed from the controller's scope, or their contents changed. Adds [target]TargetAdded , [target]TargetRemoved and [target]TargetChanged callback to your controller for each specified target. | [target]TargetAdded [target]TargetRemoved [target]TargetChanged |
useVisibility | Tracks the page visibility and adds visible, invisible callbacks to your controller. | visible invisible |
useWindowFocus | Tracks the window focus and adds focus, unfocus callbacks to your controller. | focus unfocus |
useWindowResize | Tracks the size of the window object and adds a new lifecycle callback windowResize. | windowResize |
A set of mixin to optimize performances.
Mixin | Description |
---|---|
useDebounce | Adds the ability to specify an array "debounces" of functions to debounce. |
useMemo | Memoize expensive getters by mixing in useMemo and adding a static memos array. |
useThrottle | Adds the ability to specify an array "throttles" of functions to throttle. |
A set of mixin and controllers to build animations.
Mixin | Description |
---|---|
useTransition | Mixin or controller to apply classes to various stages of an element's transition. |
Mixin | Description |
---|---|
useApplication, ApplicationController | supercharged controller for your application. |
useDispatch | Adds a dispatch helper function to emit custom events. Useful to communicate between different controllers. |
useMeta | Adds getters to easily access meta values. |
Stimulus-use can be used in two ways: composing with mixins or extending built-in controllers
Composing with mixins
This is the prefered approach as it bring the most flexibility. Simply import a mixin and apply it in the connect
or initialize
to adds new behaviors to you controller. You can combine several mixins within the same controller.
import { Controller } from '@hotwired/stimulus'
import { useIntersection, useResize } from 'stimulus-use'
export default class extends Controller {
connect() {
useIntersection(this)
useResize(this)
}
appear(entry) {
// triggered when the element appears within the viewport
}
resize({ height, width }) {
// trigered when the element is resized
}
}
Extending built-in controllers
You can create your Stimulus controller from a pre-built Stimulus-use controller which offers the new behavior you're looking for. This method works perfectly when you only need a single behavior for your controller.
import { IntersectionController } from 'stimulus-use'
export default class extends IntersectionController {
appear(entry) {
// triggered when the element appears within the viewport
}
}
yarn install
yarn start
- to run the local dev server with examplesyarn test
- to run the unit testsyarn lint
- to run the linter with ESLintyarn format
- to format changes with Prettieryarn build
- to bundle the app into static files for productionMade with :heart: by @adrienpoly, @marcoroth and all these wonderful contributors (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
Continuous integration and cross browser testing is generously provided Sauce Labs.
FAQs
A collection of standard controllers and utilities for Stimulus
We found that stimulus-use demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 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
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.