Skip to content

Commit 13316b1

Browse files
committed
Use default export in controllers, add functions to load and lazy load controllers
1 parent 5c2a827 commit 13316b1

35 files changed

+207
-229
lines changed

CHANGELOG.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,22 @@
11
## [Unreleased] - YYYY-MM-DD
2+
23
### Added
4+
5+
- Helper function to load stimulus JS controllers
6+
- Helper function to lazy load stimulus JS controllers with [stimulus-controller-resolver](https://github.com/danieldiekmeier/stimulus-controller-resolver)
7+
38
### Changed
9+
10+
- Convert stimulus JS controllers to default export
11+
412
### Deprecated
13+
514
### Removed
15+
616
### Fixed
7-
- Accordion: hide content on initialize to prevent FOUC
17+
18+
- Hide accordion content on initialize to prevent [FOUC](https://en.wikipedia.org/wiki/Flash_of_unstyled_content)
19+
820
### Security
921

1022
## [1.0.0] - 2025-08-04

app/typescript/controllers/accordion_controller.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
getPreviousEnabledIndex,
77
} from '../utils'
88

9-
const AccordionController = class extends Controller<HTMLElement> {
9+
const Accordion = class extends Controller<HTMLElement> {
1010
static name = 'accordion'
1111

1212
// targets
@@ -132,7 +132,4 @@ const AccordionController = class extends Controller<HTMLElement> {
132132
}
133133
}
134134

135-
type Accordion = InstanceType<typeof AccordionController>
136-
137-
export { AccordionController }
138-
export type { Accordion }
135+
export default Accordion
Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
1-
import { DialogController } from './dialog_controller'
1+
import Dialog from './dialog_controller'
22

3-
const AlertDialogController = class extends DialogController {
3+
const AlertDialog = class extends Dialog {
44
static name = 'alert-dialog'
55

66
protected onDOMClick() {
77
return
88
}
99
}
1010

11-
type AlertDialog = InstanceType<typeof AlertDialogController>
12-
13-
export { AlertDialogController }
14-
export type { AlertDialog }
11+
export default AlertDialog

app/typescript/controllers/avatar_controller.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Controller } from '@hotwired/stimulus'
22

3-
const AvatarController = class extends Controller {
3+
const Avatar = class extends Controller {
44
static name = 'avatar'
55

66
// targets
@@ -20,7 +20,4 @@ const AvatarController = class extends Controller {
2020
}
2121
}
2222

23-
type Avatar = InstanceType<typeof AvatarController>
24-
25-
export { AvatarController }
26-
export type { Avatar }
23+
export default Avatar

app/typescript/controllers/checkbox_controller.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Controller } from '@hotwired/stimulus'
22

3-
const CheckboxController = class extends Controller<HTMLElement> {
3+
const Checkbox = class extends Controller<HTMLElement> {
44
static name = 'checkbox'
55

66
// targets
@@ -37,7 +37,4 @@ const CheckboxController = class extends Controller<HTMLElement> {
3737
}
3838
}
3939

40-
type Checkbox = InstanceType<typeof CheckboxController>
41-
42-
export { CheckboxController }
43-
export type { Checkbox }
40+
export default Checkbox

app/typescript/controllers/collapsible_controller.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Controller } from '@hotwired/stimulus'
22
import { hideContent, showContent } from '../utils'
33

4-
const CollapsibleController = class extends Controller {
4+
const Collapsible = class extends Controller {
55
static name = 'collapsible'
66

77
// targets
@@ -48,7 +48,4 @@ const CollapsibleController = class extends Controller {
4848
}
4949
}
5050

51-
type Collapsible = InstanceType<typeof CollapsibleController>
52-
53-
export { CollapsibleController }
54-
export type { Collapsible }
51+
export default Collapsible

app/typescript/controllers/combobox_controller.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import {
2424

2525
import { useClickOutside, useDebounce } from 'stimulus-use'
2626

27-
const ComboboxController = class extends Controller<HTMLElement> {
27+
const Combobox = class extends Controller<HTMLElement> {
2828
static name = 'combobox'
2929

3030
// targets
@@ -371,7 +371,4 @@ const ComboboxController = class extends Controller<HTMLElement> {
371371
}
372372
}
373373

374-
type Combobox = InstanceType<typeof ComboboxController>
375-
376-
export { ComboboxController }
377-
export type { Combobox }
374+
export default Combobox

app/typescript/controllers/command_controller.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ declare global {
3030
}
3131
}
3232

33-
const CommandController = class extends Controller<HTMLElement> {
33+
const Command = class extends Controller<HTMLElement> {
3434
static name = 'command'
3535

3636
// targets
@@ -297,7 +297,4 @@ const CommandController = class extends Controller<HTMLElement> {
297297
}
298298
}
299299

300-
type Command = InstanceType<typeof CommandController>
301-
302-
export { CommandController }
303-
export type { Command }
300+
export default Command

app/typescript/controllers/date_picker_controller.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const isSmallScreen = () => {
2727

2828
const DAYJS_FORMAT = 'YYYY-MM-DD'
2929

30-
const DatePickerController = class extends Controller<HTMLElement> {
30+
const DatePicker = class extends Controller<HTMLElement> {
3131
static name = 'date-picker'
3232

3333
// targets
@@ -348,7 +348,4 @@ const DatePickerController = class extends Controller<HTMLElement> {
348348
}
349349
}
350350

351-
type DatePicker = InstanceType<typeof DatePickerController>
352-
353-
export { DatePickerController }
354-
export type { DatePicker }
351+
export default DatePicker

app/typescript/controllers/date_range_picker_controller.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Calendar, Options } from 'vanilla-calendar-pro'
2-
import { DatePickerController } from './date_picker_controller'
2+
import DatePicker from './date_picker_controller'
33
import dayjs from 'dayjs'
44
import customParseFormat from 'dayjs/plugin/customParseFormat'
55
import utc from 'dayjs/plugin/utc'
@@ -9,7 +9,7 @@ dayjs.extend(utc)
99
const DELIMITER = ' - '
1010
const DAYJS_FORMAT = 'YYYY-MM-DD'
1111

12-
const DateRangePickerController = class extends DatePickerController {
12+
const DateRangePicker = class extends DatePicker {
1313
static name = 'date-range-picker'
1414

1515
// targets
@@ -249,7 +249,4 @@ const DateRangePickerController = class extends DatePickerController {
249249
}
250250
}
251251

252-
type DateRangePicker = InstanceType<typeof DateRangePickerController>
253-
254-
export { DateRangePickerController }
255-
export type { DateRangePicker }
252+
export default DateRangePicker

0 commit comments

Comments
 (0)