@@ -3,6 +3,22 @@ import type { HandleInputEvent } from "./handleInput.js";
33
44import handleCheckboxDynamic from "../checkbox/handleCheckboxDynamic/handleCheckboxDynamic.js" ;
55
6+ /**
7+ * for url http://google.com/test?abc&def#hash
8+ * returns {abc: true, def: true}
9+ */
10+ const hasKeys = ( function ( ) {
11+ const url = new URL ( location . href ) ;
12+
13+ const obj : Record < string , boolean > = { } ;
14+
15+ [ ...url . searchParams . keys ( ) ] . forEach ( ( key ) => {
16+ obj [ key ] = true ;
17+ } ) ;
18+
19+ return obj ;
20+ } ) ( ) ;
21+
622const form = document . querySelector ( "form" ) as HTMLFormElement ;
723const pre = document . querySelector ( "pre" ) as HTMLPreElement ;
824const resetButton = document . querySelector ( "#reset" ) as HTMLButtonElement ;
@@ -15,6 +31,46 @@ form.addEventListener("submit", (e) => {
1531 e . preventDefault ( ) ;
1632} ) ;
1733
34+ const addbox = document . querySelector ( "#addbox" ) as HTMLDivElement ;
35+ const addbutton = document . querySelector ( "#addbutton" ) as HTMLButtonElement ;
36+
37+ if ( addbox && addbutton ) {
38+ const sets = [
39+ { name : "d" , value : "value d" } ,
40+ { name : "e" , value : "value ee" } ,
41+ { name : "ff" , value : "value f" } ,
42+ { name : "h" , value : "value h" } ,
43+ ] ;
44+ function getNextSet ( ) {
45+ return sets . shift ( ) ;
46+ }
47+
48+ addbutton . addEventListener ( "click" , ( ) => {
49+ const set = getNextSet ( ) ;
50+ if ( ! set ) {
51+ console . log ( "all sets are used" ) ;
52+ return ;
53+ }
54+
55+ const div = document . createElement ( "div" ) ;
56+ div . innerHTML = `
57+ <label>
58+ input ${ set . name } <input type="text" name="${ set . name } " value="${ set . value } " />
59+ </label>
60+ <button type="button" name="${ set . name } ">remove</button>
61+ ` ;
62+ addbox . appendChild ( div ) ;
63+ } ) ;
64+
65+ form . addEventListener ( "click" , ( e ) => {
66+ const el = e . target as HTMLElement ;
67+ if ( el . tagName === "BUTTON" && el . innerText === "remove" ) {
68+ const row = el . parentElement ;
69+ row ?. remove ( ) ;
70+ }
71+ } ) ;
72+ }
73+
1874const preTarget = document . querySelector ( "#target pre" ) as HTMLPreElement ;
1975const preValue = document . querySelector ( "#value pre" ) as HTMLPreElement ;
2076const preType = document . querySelector ( "#type pre" ) as HTMLPreElement ;
@@ -69,7 +125,11 @@ handleCheckboxDynamic(
69125
70126 console . log ( "handleInput.event:" , e ) ;
71127 } ,
72- { onLoad : true , events }
128+ {
129+ onLoad : hasKeys . onLoad ,
130+ observeMutations : hasKeys . observeMutations ,
131+ events
132+ }
73133 ) ;
74134 } ,
75135 { onLoad : true }
0 commit comments