Skip to content

Commit 02664cd

Browse files
Merge pull request #19 from dacook/events
Dispatch event when adding new record
2 parents 079232f + d0ee821 commit 02664cd

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

spec/index.test.ts

+15
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,19 @@ describe('#nestedForm', (): void => {
4343

4444
expect(target.previousElementSibling.innerHTML).toContain('New todo')
4545
})
46+
47+
it('should dispatch events', (): void => {
48+
const controllerElement: HTMLButtonElement = document.querySelector("[data-controller='nested-form']")
49+
const addButton: HTMLButtonElement = document.querySelector("[data-action='nested-form#add']")
50+
51+
// @ts-ignore following line
52+
jest.spyOn(global, 'Event').mockImplementation((type: string, eventInit?: any) => ({ type, eventInit }))
53+
const mockDispatchEvent = jest.spyOn(controllerElement, 'dispatchEvent').mockImplementation(() => true)
54+
55+
addButton.click()
56+
57+
expect(mockDispatchEvent).toHaveBeenCalledWith({
58+
type: 'nested-form:add'
59+
})
60+
})
4661
})

src/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ export default class extends Controller {
1818

1919
const content: string = this.templateTarget.innerHTML.replace(/NEW_RECORD/g, new Date().getTime().toString())
2020
this.targetTarget.insertAdjacentHTML('beforebegin', content)
21+
22+
this.element.dispatchEvent(new Event('nested-form:add', { bubbles: true }))
2123
}
2224

2325
remove (e: Event): void {

0 commit comments

Comments
 (0)