* Migrate to esbuild WIP * Add exclude * Remove redundant file * Move file * Move to javascript_include_tag * Lint fix * WIP * WIP * Add watch mode to esbuild WIP * Get jest working * Remove babel * Revert "Remove babel" This reverts commit 6da35260aa19d6f97f586deb66c0ecaf48433b73. * More WIP * Got image to load * WIP * Resolve audit * Lint fix * WIP * Fix jest spec * [CI] Remove asset-restore for test build stage * Production compliant * Temp disable sourcemap * Update glob * Add esbuild helper to stimulus * Import fragment * Temp disable coverage to see failing tests * Fix broken spec * Address lint * Set proper es6 target * Use esbuild for everything * wait what * Revert "Set proper es6 target" This reverts commit 98f5278093421baa8ffe2ca580845b01c1a1eadf. * Revert "Use esbuild for everything" This reverts commit 0ac46738f07ffcb6af095ccb1ffa5e439b7fefa3. * Replace uglifier with terser * New compiled assets version * Remvoe honeybadger-io/webpack * Remove cypress coverage checks for now * Update jsconfig.json * Update docker-compose * Remove public/packs-test from ci cache
31 lines
1,006 B
JavaScript
31 lines
1,006 B
JavaScript
import { Controller } from '@hotwired/stimulus';
|
|
|
|
// Wraps the Preact Snackbar component into a Stimulus controller
|
|
export default class SnackbarController extends Controller {
|
|
static targets = ['snackZone'];
|
|
|
|
async connect() {
|
|
const [{ h, render }, { Snackbar }] = await Promise.all([
|
|
import('preact'),
|
|
// eslint-disable-next-line import/no-unresolved
|
|
import('../../Snackbar'),
|
|
]);
|
|
|
|
render(<Snackbar lifespan="3" />, this.snackZoneTarget);
|
|
}
|
|
|
|
async disconnect() {
|
|
const { render } = await import('preact');
|
|
render(null, this.snackZoneTarget);
|
|
}
|
|
|
|
// Any Stimulus controller can add an item to the Snackbar by dispatching a custom event
|
|
// data-action="snackbar:add@document->snackbar#addItem"
|
|
async addItem(event) {
|
|
const { message, addCloseButton = false } = event.detail;
|
|
|
|
// eslint-disable-next-line import/no-unresolved
|
|
const { addSnackbarItem } = await import('../../Snackbar');
|
|
addSnackbarItem({ message, addCloseButton });
|
|
}
|
|
}
|