Vanilla JavaScript web component that makes web content self-destruct, meaning it removes itself from the DOM. It has no dependencies.
It can be used to easily implement timers, alerts, toasts, and other temporary content.
- Fades out just before being removed
 - Honors the browser’s reduced motion preference to disable fade animation, or explicitly disable the animation
 - Ability to specify the TTL (time to live). 5 seconds is the default.
 - Optionally shows a progress indicator of the countdown (seconds, pie chart, bar)
 - On hover and on click event interactivity
 - Light DOM so its elements can be styled with CSS
 - Progressive enhancement, so the content simply won’t self-destruct if the custom element fails to load
 
Import the custom element and wrap your content to destroy.
<script type="module" src="SelfDestruct.js"></script>
<!-- wrap password inputs in custom element -->
<self-destruct>
  <p>This message will self-destruct in 5 seconds.</p>
</self-destruct>
<!-- add optional attributes to the custom element -->
<self-destruct ttl="12.5s" progress="pie">
  <p>This message will self-destruct in 12½ seconds. <button type="button" class="self-destruct">Close now</button>
</self-destruct>| Attribute name | Type | Behavior | 
|---|---|---|
no-animation | 
n/a | Add this attribute to disable fade animation regardless of reduced motion preference | 
on-click | 
String | Specify the behavior of when the main element is clicked. See Interactivity below. | 
on-hover | 
String | Specify the behavior of when the main element is hovered over. See Interactivity below. | 
progress | 
String | Name of the timeout animation, if any. Valid options are: bar, pie, seconds. | 
progress-target | 
String | Use this selector (within the scope of the main element) to place the progress indicator instead of adding its own | 
ttl | 
String or Int | Time to live in milliseconds, or use #s or #ms. E.g., .2s = 0.2s = 200ms = 200 | 
Note: progress indicators do not show up when the initial TTL is less than 1 second.
Both on-click and on-hover can specify what happens when the the main element is clicked or hovered via the mouse respectively.
| Value | Behavior | 
|---|---|
pause | 
Pauses the countdown timer. For on-click, tapping the element again will resume the countdown. For on-hover, the countdown will only resume when then mouse leaves the main element. | 
prevent | 
Prevents the self-destruct from happening. | 
reset | 
Resets the countdown timer to the initial TTL value. With on-hover, the countdown will only resume when the mouse leaves the main element. | 
Note: the element will always look for a click event on anything within it that has a .self-destruct class and will immediately trigger the self-destruct upon such a click.
.self-destruct-progresstargets the timeout progress indicator.self-destruct-progress-bartargets the timeout bar.self-destruct-svgtargets the timeout pie chart.self-destruct-svg-bgtargets the background of the pie chart.self-destruct-svg-bgtargets the foreground slice of the pie chart (note there is no slice when the min length is met)
GNU LGPL 3.0