Skip to content

Commit 3698cc0

Browse files
committed
fixed events
1 parent b17f97c commit 3698cc0

File tree

4 files changed

+41
-12
lines changed

4 files changed

+41
-12
lines changed

eslint.config.mjs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
import getIbexaConfig from '@ibexa/eslint-config/eslint';
2-
3-
export default getIbexaConfig({ react: false });
2+
[
3+
...getIbexaConfig({ react: false }),
4+
{
5+
files: ['**/*.stories.ts'],
6+
rules: {
7+
'@typescript-eslint/unbound-method': 'off',
8+
},
9+
},
10+
];

src/bundle/Resources/public/ts/components/checkbox/checkboxes_list_field.ts

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { ChangeEvent } from 'react';
21
import { BaseInputsList } from '../../partials';
32

43
export enum CheckboxesListFieldAction {
@@ -9,6 +8,11 @@ export enum CheckboxesListFieldAction {
98
export class CheckboxesListField extends BaseInputsList<string[]> {
109
private _itemsContainer: HTMLDivElement;
1110

11+
static EVENTS = {
12+
...BaseInputsList.EVENTS,
13+
CHANGE: 'ids:checkboxes-list-field:change',
14+
};
15+
1216
constructor(container: HTMLDivElement) {
1317
super(container);
1418

@@ -21,11 +25,12 @@ export class CheckboxesListField extends BaseInputsList<string[]> {
2125
this._itemsContainer = itemsContainer;
2226

2327
this.onItemChange = this.onItemChange.bind(this);
24-
// this.onChange = this.onChange.bind(this);
2528
}
2629

2730
getItemsCheckboxes() {
28-
const itemsCheckboxes = [...this._itemsContainer.querySelectorAll<HTMLInputElement>('.ids-choice-input-field .ids-input--checkbox')];
31+
const itemsCheckboxes = [
32+
...this._itemsContainer.querySelectorAll<HTMLInputElement>('.ids-choice-input-field .ids-input--checkbox'),
33+
];
2934

3035
return itemsCheckboxes;
3136
}
@@ -56,19 +61,15 @@ export class CheckboxesListField extends BaseInputsList<string[]> {
5661
}
5762

5863
onChange(nextValue: string[], itemValue: string, actionPerformed: CheckboxesListFieldAction) {
59-
const changeEvent = new CustomEvent('change', {
64+
const changeEvent = new CustomEvent(CheckboxesListField.EVENTS.CHANGE, {
6065
bubbles: true,
61-
detail: [
62-
nextValue,
63-
itemValue,
64-
actionPerformed,
65-
],
66+
detail: [nextValue, itemValue, actionPerformed],
6667
});
6768

69+
console.log(changeEvent.detail);
6870
this._container.dispatchEvent(changeEvent);
6971
}
7072

71-
7273
initCheckboxes() {
7374
const itemsCheckboxes = this.getItemsCheckboxes();
7475

@@ -77,6 +78,21 @@ export class CheckboxesListField extends BaseInputsList<string[]> {
7778
});
7879
}
7980

81+
unbindCheckboxes() {
82+
const itemsCheckboxes = this.getItemsCheckboxes();
83+
84+
itemsCheckboxes.forEach((checkbox) => {
85+
checkbox.removeEventListener('change', this.onItemChange, false);
86+
});
87+
}
88+
89+
reinit() {
90+
super.reinit();
91+
92+
this.unbindCheckboxes();
93+
this.initCheckboxes();
94+
}
95+
8096
init() {
8197
super.init();
8298

src/bundle/Resources/public/ts/partials/base.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ export abstract class Base {
1717
return this._container;
1818
}
1919

20+
reinit() {
21+
// to be overridden in subclasses if needed
22+
}
23+
2024
init() {
2125
this._container.setAttribute('data-ids-initialized', 'true');
2226

src/bundle/Resources/views/themes/standard/design_system/components/checkbox/list_field.html.twig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
{% extends '@IbexaDesignSystemTwig/themes/standard/design_system/partials/base_inputs_list.html.twig' %}
22

3+
{% set class = html_classes('ids-checkboxes-list-field', attributes.render('class') ?? '') %}
4+
35
{% block item %}
46
<twig:ibexa:checkbox:field {{ ...item }}>
57
{{ item.label }}

0 commit comments

Comments
 (0)