@@ -3,6 +3,18 @@ function dselectUpdate(button, classElement, classToggler) {
33 const target = button . closest ( `.${ classElement } ` ) . previousElementSibling ;
44 const toggler = target . nextElementSibling . getElementsByClassName ( classToggler ) [ 0 ] ;
55 const input = target . nextElementSibling . querySelector ( "input" ) ;
6+
7+ if ( target )
8+ {
9+ target . dispatchEvent ( new CustomEvent ( "update" , {
10+ detail : {
11+ button : button ,
12+ classElement : classElement ,
13+ classToggler : classToggler
14+ }
15+ } ) ) ;
16+ }
17+
618 if ( target . multiple ) {
719 Array . from ( target . options ) . filter ( ( option ) => option . value === value ) [ 0 ] . selected = true ;
820 } else {
@@ -22,6 +34,18 @@ function dselectRemoveTag(button, classElement, classToggler) {
2234 const target = button . closest ( `.${ classElement } ` ) . previousElementSibling ;
2335 const toggler = target . nextElementSibling . getElementsByClassName ( classToggler ) [ 0 ] ;
2436 const input = target . nextElementSibling . querySelector ( "input" ) ;
37+
38+ if ( target )
39+ {
40+ target . dispatchEvent ( new CustomEvent ( "removeTag" , {
41+ detail : {
42+ button : button ,
43+ classElement : classElement ,
44+ classToggler : classToggler
45+ }
46+ } ) ) ;
47+ }
48+
2549 Array . from ( target . options ) . filter ( ( option ) => option . value === value ) [ 0 ] . selected = false ;
2650 target . dispatchEvent ( new Event ( "change" ) ) ;
2751 toggler . click ( ) ;
@@ -35,6 +59,21 @@ function dselectSearch(event, input, classElement, classToggler, creatable, loca
3559 const headers = Array . from ( itemsContainer . querySelectorAll ( ".dropdown-header" ) ) ;
3660 const items = Array . from ( itemsContainer . querySelectorAll ( ".dropdown-item" ) ) ;
3761 const noResults = itemsContainer . nextElementSibling ;
62+ const target = input . closest ( `.${ classElement } ` ) . previousElementSibling ;
63+
64+ if ( target )
65+ {
66+ target . dispatchEvent ( new CustomEvent ( "search" , {
67+ detail : {
68+ event : event ,
69+ input : input ,
70+ classElement : classElement ,
71+ classToggler : classToggler ,
72+ creatable : creatable ,
73+ localization : localization
74+ }
75+ } ) ) ;
76+ }
3877
3978 headers . forEach ( ( header ) => header . classList . add ( "d-none" ) ) ;
4079
@@ -75,7 +114,6 @@ function dselectSearch(event, input, classElement, classToggler, creatable, loca
75114 if ( creatable ) {
76115 noResults . innerHTML = localization . replace ( "[searched-term]" , input . value ) ;
77116 if ( event . key === "Enter" ) {
78- const target = input . closest ( `.${ classElement } ` ) . previousElementSibling ;
79117 const toggler = target . nextElementSibling . querySelector ( `.${ classToggler } ` ) ;
80118 target . insertAdjacentHTML ( "afterbegin" , `<option value="${ input . value } " selected>${ input . value } </option>` ) ;
81119 target . dispatchEvent ( new Event ( "change" ) ) ;
@@ -92,6 +130,17 @@ function dselectSearch(event, input, classElement, classToggler, creatable, loca
92130}
93131function dselectClear ( button , classElement ) {
94132 const target = button . closest ( `.${ classElement } ` ) . previousElementSibling ;
133+
134+ if ( target )
135+ {
136+ target . dispatchEvent ( new CustomEvent ( "clear" , {
137+ detail : {
138+ event : button ,
139+ input : classElement
140+ }
141+ } ) ) ;
142+ }
143+
95144 Array . from ( target . options ) . forEach ( ( option ) => option . selected = false ) ;
96145 target . dispatchEvent ( new Event ( "change" ) ) ;
97146}
@@ -249,8 +298,7 @@ function dselect(el, option = {}) {
249298 </div>
250299 </div>
251300 ${ clearBtn }
252- </div>
253- ` ;
301+ </div>` ;
254302 removePrev ( ) ;
255303 el . insertAdjacentHTML ( "afterend" , template ) ;
256304 const dropdownElement = el . nextElementSibling ;
0 commit comments