1. Home
  2. /
  3. Stimulus-js
  4. /
  5. Stimulus.js Counter Controller

Stimulus.js Counter Controller - Stimulus-js Typing CST Test

Loading…

Stimulus.js Counter Controller — Stimulus-js Code

Basic counter using Stimulus.js with dark/light theme toggle.

<div data-controller="counter" data-counter-dark-value="false" data-counter-count-value="0">
	<h2>Counter: <span data-counter-target="count">0</span></h2>
	<div>
		<button data-action="click->counter#increment">+</button>
		<button data-action="click->counter#decrement">-</button>
		<button data-action="click->counter#reset">Reset</button>
	</div>
	<button data-action="click->counter#toggleTheme">Switch Theme</button>
</div>

<script>
	import { Application } from '@hotwired/stimulus';
	const application = Application.start();

	application.register('counter', class extends Stimulus.Controller {
		static targets = ['count'];
		static values = { count: Number, dark: Boolean };
		connect() { this.updateDisplay(); }
		increment() { this.countValue++; this.updateDisplay(); }
		decrement() { this.countValue--; this.updateDisplay(); }
		reset() { this.countValue = 0; this.updateDisplay(); }
		toggleTheme() { this.darkValue = !this.darkValue; this.updateDisplay(); }
		updateDisplay() { this.countTarget.textContent = this.countValue; this.element.className = this.darkValue ? 'dark-theme' : 'light-theme'; }
	});
</script>

<style>
.dark-theme { background-color: #222; color: #eee; }
.light-theme { background-color: #fff; color: #000; }
</style>

Stimulus-js Language Guide

Stimulus.js is a modest JavaScript framework designed to enhance static HTML by connecting elements to JavaScript controllers. It complements server-rendered HTML, making it ideal for modestly interactive UIs without a heavy frontend framework.

Primary Use Cases

  • ▸Server-rendered apps with light JS enhancements
  • ▸Rails and Turbo/Hotwire projects
  • ▸Interactive form behaviors
  • ▸Small UI widgets
  • ▸Progressive enhancement without SPA complexity

Notable Features

  • ▸Controller-based architecture
  • ▸HTML-driven declarative data bindings
  • ▸Lightweight (~3 KB gzipped)
  • ▸Easy integration with existing markup
  • ▸Automatic event handling via data attributes

Origin & Creator

Created by Basecamp (David Heinemeier Hansson and team) and first released in 2016.

Industrial Note

Stimulus is perfect for server-rendered applications that need modest interactivity, like Rails apps, Turbo-driven frontends, and progressive enhancement use-cases.

More Stimulus-js Typing Exercises

Stimulus.js Counter with Step IncrementStimulus.js Counter with Max LimitStimulus.js Counter with Auto-ResetStimulus.js Counter with HistoryStimulus.js Counter with Dark Mode OnlyStimulus.js Counter with Auto-IncrementStimulus.js Counter with Conditional ThemeStimulus.js Full Featured Counter

Practice Other Languages

CReactPythonC++RustTypeScriptKotlinPHPJavaC#RubyMqlCqlN1qlCypher