This commit is contained in:
alpadev 2025-05-02 08:45:31 +00:00 committed by GitHub
commit 5b88c7b029
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 34 additions and 20 deletions

View File

@ -29,6 +29,11 @@ class BaseComponent extends Config {
return
}
const instance = Data.get(element, this.constructor.DATA_KEY)
if (instance instanceof this.constructor) {
instance.dispose()
}
this._element = element
this._config = this._getConfig(config)

View File

@ -18,9 +18,9 @@ describe('Alert', () => {
const alertEl = fixtureEl.querySelector('.alert')
const alertBySelector = new Alert('.alert')
const alertByElement = new Alert(alertEl)
expect(alertBySelector._element).toEqual(alertEl)
const alertByElement = new Alert(alertEl)
expect(alertByElement._element).toEqual(alertEl)
})

View File

@ -114,6 +114,15 @@ describe('Base Component', () => {
expect(spy).toHaveBeenCalledWith(element, DummyClass.EVENT_KEY)
})
it('should call dispose automatically when an component is reinitialized', () => {
instance = new DummyClass(element)
const spy = spyOn(instance, 'dispose')
instance = new DummyClass(element)
expect(spy).toHaveBeenCalled()
})
})
describe('getInstance', () => {

View File

@ -16,9 +16,9 @@ describe('Button', () => {
fixtureEl.innerHTML = '<button data-bs-toggle="button">Placeholder</button>'
const buttonEl = fixtureEl.querySelector('[data-bs-toggle="button"]')
const buttonBySelector = new Button('[data-bs-toggle="button"]')
const buttonByElement = new Button(buttonEl)
expect(buttonBySelector._element).toEqual(buttonEl)
const buttonByElement = new Button(buttonEl)
expect(buttonByElement._element).toEqual(buttonEl)
})

View File

@ -59,9 +59,9 @@ describe('Carousel', () => {
const carouselEl = fixtureEl.querySelector('#myCarousel')
const carouselBySelector = new Carousel('#myCarousel')
const carouselByElement = new Carousel(carouselEl)
expect(carouselBySelector._element).toEqual(carouselEl)
const carouselByElement = new Carousel(carouselEl)
expect(carouselByElement._element).toEqual(carouselEl)
})

View File

@ -37,9 +37,9 @@ describe('Collapse', () => {
const collapseEl = fixtureEl.querySelector('div.my-collapse')
const collapseBySelector = new Collapse('div.my-collapse')
const collapseByElement = new Collapse(collapseEl)
expect(collapseBySelector._element).toEqual(collapseEl)
const collapseByElement = new Collapse(collapseEl)
expect(collapseByElement._element).toEqual(collapseEl)
})

View File

@ -53,9 +53,9 @@ describe('Dropdown', () => {
const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
const dropdownBySelector = new Dropdown('[data-bs-toggle="dropdown"]')
const dropdownByElement = new Dropdown(btnDropdown)
expect(dropdownBySelector._element).toEqual(btnDropdown)
const dropdownByElement = new Dropdown(btnDropdown)
expect(dropdownByElement._element).toEqual(btnDropdown)
})

View File

@ -50,9 +50,9 @@ describe('Modal', () => {
const modalEl = fixtureEl.querySelector('.modal')
const modalBySelector = new Modal('.modal')
const modalByElement = new Modal(modalEl)
expect(modalBySelector._element).toEqual(modalEl)
const modalByElement = new Modal(modalEl)
expect(modalByElement._element).toEqual(modalEl)
})
})

View File

@ -100,9 +100,9 @@ describe('ScrollSpy', () => {
const sSpyEl = fixtureEl.querySelector('.content')
const sSpyBySelector = new ScrollSpy('.content')
const sSpyByElement = new ScrollSpy(sSpyEl)
expect(sSpyBySelector._element).toEqual(sSpyEl)
const sSpyByElement = new ScrollSpy(sSpyEl)
expect(sSpyByElement._element).toEqual(sSpyEl)
})

View File

@ -33,9 +33,9 @@ describe('Tab', () => {
const tabEl = fixtureEl.querySelector('[href="#home"]')
const tabBySelector = new Tab('[href="#home"]')
const tabByElement = new Tab(tabEl)
expect(tabBySelector._element).toEqual(tabEl)
const tabByElement = new Tab(tabEl)
expect(tabByElement._element).toEqual(tabEl)
})

View File

@ -32,9 +32,9 @@ describe('Toast', () => {
const toastEl = fixtureEl.querySelector('.toast')
const toastBySelector = new Toast('.toast')
const toastByElement = new Toast(toastEl)
expect(toastBySelector._element).toEqual(toastEl)
const toastByElement = new Toast(toastEl)
expect(toastByElement._element).toEqual(toastEl)
})

View File

@ -62,9 +62,9 @@ describe('Tooltip', () => {
const tooltipEl = fixtureEl.querySelector('#tooltipEl')
const tooltipBySelector = new Tooltip('#tooltipEl')
const tooltipByElement = new Tooltip(tooltipEl)
expect(tooltipBySelector._element).toEqual(tooltipEl)
const tooltipByElement = new Tooltip(tooltipEl)
expect(tooltipByElement._element).toEqual(tooltipEl)
})