ninegrid2 6.1387.0 → 6.1389.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28474,6 +28474,41 @@ class nxDiv extends HTMLElement {
28474
28474
  return ninegrid.querySelectorAll("input[name], textarea[name], select[name], nx-editor[name]", this.#root);
28475
28475
  }
28476
28476
 
28477
+ // [공통 로직 1] 특정 요소에 값을 쓰거나 초기화하는 핵심 함수
28478
+ #updateElement(el, value) {
28479
+ const tagName = el.tagName.toUpperCase();
28480
+ const type = el.type;
28481
+ let isChanged = false;
28482
+
28483
+ if (["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"].includes(tagName)) {
28484
+ if (type === "checkbox") {
28485
+ const t = el.getAttribute("true-value") || "Y";
28486
+ const isChecked = (String(t) === String(value));
28487
+ if (el.checked !== isChecked) isChanged = true;
28488
+ el.checked = isChecked;
28489
+ } else if (type === "radio") {
28490
+ const isChecked = (String(el.value) === String(value));
28491
+ if (el.checked !== isChecked) isChanged = true;
28492
+ el.checked = isChecked;
28493
+ } else {
28494
+ if (el.value !== value) isChanged = true;
28495
+ el.value = value;
28496
+ }
28497
+ } else {
28498
+ if (el.textContent !== value) isChanged = true;
28499
+ el.textContent = value;
28500
+ }
28501
+ return isChanged;
28502
+ }
28503
+
28504
+ // [공통 로직 2] 이벤트 리스너 일괄 등록
28505
+ #refreshListeners() {
28506
+ this.#getElements().forEach(el => {
28507
+ el.removeEventListener("input", this.#changeHandler);
28508
+ el.addEventListener("input", this.#changeHandler);
28509
+ });
28510
+ }
28511
+
28477
28512
  getData = () => {
28478
28513
  const jsonData = {};
28479
28514
  this.#getElements().forEach(el => {
@@ -28501,79 +28536,32 @@ class nxDiv extends HTMLElement {
28501
28536
  return jsonData;
28502
28537
  };
28503
28538
 
28504
- clearData = (jsonData) => {
28505
- this.#getElements().forEach(el => {
28506
- el.removeEventListener("input", this.#changeHandler);
28507
- el.addEventListener("input", this.#changeHandler);
28508
- });
28509
-
28510
- //if (!jsonData || typeof jsonData !== 'object') return;
28511
-
28512
- //let bChanged = false;
28539
+ // 파라미터가 있으면 해당 값으로, 없으면 전체 공백 초기화
28540
+ clearData = (jsonData = {}) => {
28541
+ this.#refreshListeners();
28513
28542
  this.#getElements().forEach(el => {
28514
28543
  const key = el.name;
28515
- //console.log(el.tagName, key, el.name);
28516
-
28517
- const value = jsonData[key] || "";
28518
- const inputTags = ["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"];
28519
-
28520
- if (inputTags.includes(el.tagName)) {
28521
- if (el.type === "checkbox") {
28522
- let t = el.getAttribute("true-value") || "Y";
28523
- const isChecked = (t === String(value));
28524
-
28525
- el.checked = isChecked;
28526
- } else if (el.type === "radio") {
28527
- el.value = value;
28528
- } else {
28529
- el.value = value;
28530
- }
28531
- } else {
28532
- el.textContent = value;
28533
- }
28544
+ if (!key) return;
28545
+ const val = (jsonData && jsonData[key] !== undefined) ? jsonData[key] : "";
28546
+ this.#updateElement(el, val);
28534
28547
  });
28535
28548
  this.#changed(false);
28536
28549
  };
28537
28550
 
28538
28551
  setData = (jsonData) => {
28539
- this.#getElements().forEach(el => {
28540
- el.removeEventListener("input", this.#changeHandler);
28541
- el.addEventListener("input", this.#changeHandler);
28542
- });
28543
-
28544
28552
  if (!jsonData || typeof jsonData !== 'object') return;
28553
+ this.#refreshListeners();
28545
28554
 
28546
28555
  let bChanged = false;
28547
28556
  this.#getElements().forEach(el => {
28548
28557
  const key = el.name;
28549
- //console.log(el.tagName, key, el.name);
28550
-
28551
28558
  if (!key || !jsonData.hasOwnProperty(key)) return;
28552
28559
 
28553
- const value = jsonData[key];
28554
- const inputTags = ["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"];
28555
-
28556
- if (inputTags.includes(el.tagName)) {
28557
- if (el.type === "checkbox") {
28558
- let t = el.getAttribute("true-value") || "Y";
28559
- el.getAttribute("false-value") || "N";
28560
- const isChecked = (t === String(value));
28561
- if (el.checked !== isChecked) bChanged = true;
28562
- el.checked = isChecked;
28563
- } else if (el.type === "radio") {
28564
- const isChecked = (String(el.value) === String(value));
28565
- if (el.checked !== isChecked) bChanged = true;
28566
- el.checked = value;
28567
- } else {
28568
- if (el.value !== value) bChanged = true;
28569
- el.value = value;
28570
- }
28571
- } else {
28572
- if (el.textContent !== value) bChanged = true;
28573
- el.textContent = value;
28560
+ if (this.#updateElement(el, jsonData[key])) {
28561
+ bChanged = true;
28574
28562
  }
28575
28563
  });
28576
- if (bChanged) this.#changed(bChanged);
28564
+ if (bChanged) this.#changed(true);
28577
28565
  };
28578
28566
 
28579
28567
  clearData = (bChanged) => {
@@ -28470,6 +28470,41 @@ class nxDiv extends HTMLElement {
28470
28470
  return ninegrid.querySelectorAll("input[name], textarea[name], select[name], nx-editor[name]", this.#root);
28471
28471
  }
28472
28472
 
28473
+ // [공통 로직 1] 특정 요소에 값을 쓰거나 초기화하는 핵심 함수
28474
+ #updateElement(el, value) {
28475
+ const tagName = el.tagName.toUpperCase();
28476
+ const type = el.type;
28477
+ let isChanged = false;
28478
+
28479
+ if (["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"].includes(tagName)) {
28480
+ if (type === "checkbox") {
28481
+ const t = el.getAttribute("true-value") || "Y";
28482
+ const isChecked = (String(t) === String(value));
28483
+ if (el.checked !== isChecked) isChanged = true;
28484
+ el.checked = isChecked;
28485
+ } else if (type === "radio") {
28486
+ const isChecked = (String(el.value) === String(value));
28487
+ if (el.checked !== isChecked) isChanged = true;
28488
+ el.checked = isChecked;
28489
+ } else {
28490
+ if (el.value !== value) isChanged = true;
28491
+ el.value = value;
28492
+ }
28493
+ } else {
28494
+ if (el.textContent !== value) isChanged = true;
28495
+ el.textContent = value;
28496
+ }
28497
+ return isChanged;
28498
+ }
28499
+
28500
+ // [공통 로직 2] 이벤트 리스너 일괄 등록
28501
+ #refreshListeners() {
28502
+ this.#getElements().forEach(el => {
28503
+ el.removeEventListener("input", this.#changeHandler);
28504
+ el.addEventListener("input", this.#changeHandler);
28505
+ });
28506
+ }
28507
+
28473
28508
  getData = () => {
28474
28509
  const jsonData = {};
28475
28510
  this.#getElements().forEach(el => {
@@ -28497,79 +28532,32 @@ class nxDiv extends HTMLElement {
28497
28532
  return jsonData;
28498
28533
  };
28499
28534
 
28500
- clearData = (jsonData) => {
28501
- this.#getElements().forEach(el => {
28502
- el.removeEventListener("input", this.#changeHandler);
28503
- el.addEventListener("input", this.#changeHandler);
28504
- });
28505
-
28506
- //if (!jsonData || typeof jsonData !== 'object') return;
28507
-
28508
- //let bChanged = false;
28535
+ // 파라미터가 있으면 해당 값으로, 없으면 전체 공백 초기화
28536
+ clearData = (jsonData = {}) => {
28537
+ this.#refreshListeners();
28509
28538
  this.#getElements().forEach(el => {
28510
28539
  const key = el.name;
28511
- //console.log(el.tagName, key, el.name);
28512
-
28513
- const value = jsonData[key] || "";
28514
- const inputTags = ["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"];
28515
-
28516
- if (inputTags.includes(el.tagName)) {
28517
- if (el.type === "checkbox") {
28518
- let t = el.getAttribute("true-value") || "Y";
28519
- const isChecked = (t === String(value));
28520
-
28521
- el.checked = isChecked;
28522
- } else if (el.type === "radio") {
28523
- el.value = value;
28524
- } else {
28525
- el.value = value;
28526
- }
28527
- } else {
28528
- el.textContent = value;
28529
- }
28540
+ if (!key) return;
28541
+ const val = (jsonData && jsonData[key] !== undefined) ? jsonData[key] : "";
28542
+ this.#updateElement(el, val);
28530
28543
  });
28531
28544
  this.#changed(false);
28532
28545
  };
28533
28546
 
28534
28547
  setData = (jsonData) => {
28535
- this.#getElements().forEach(el => {
28536
- el.removeEventListener("input", this.#changeHandler);
28537
- el.addEventListener("input", this.#changeHandler);
28538
- });
28539
-
28540
28548
  if (!jsonData || typeof jsonData !== 'object') return;
28549
+ this.#refreshListeners();
28541
28550
 
28542
28551
  let bChanged = false;
28543
28552
  this.#getElements().forEach(el => {
28544
28553
  const key = el.name;
28545
- //console.log(el.tagName, key, el.name);
28546
-
28547
28554
  if (!key || !jsonData.hasOwnProperty(key)) return;
28548
28555
 
28549
- const value = jsonData[key];
28550
- const inputTags = ["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"];
28551
-
28552
- if (inputTags.includes(el.tagName)) {
28553
- if (el.type === "checkbox") {
28554
- let t = el.getAttribute("true-value") || "Y";
28555
- el.getAttribute("false-value") || "N";
28556
- const isChecked = (t === String(value));
28557
- if (el.checked !== isChecked) bChanged = true;
28558
- el.checked = isChecked;
28559
- } else if (el.type === "radio") {
28560
- const isChecked = (String(el.value) === String(value));
28561
- if (el.checked !== isChecked) bChanged = true;
28562
- el.checked = value;
28563
- } else {
28564
- if (el.value !== value) bChanged = true;
28565
- el.value = value;
28566
- }
28567
- } else {
28568
- if (el.textContent !== value) bChanged = true;
28569
- el.textContent = value;
28556
+ if (this.#updateElement(el, jsonData[key])) {
28557
+ bChanged = true;
28570
28558
  }
28571
28559
  });
28572
- if (bChanged) this.#changed(bChanged);
28560
+ if (bChanged) this.#changed(true);
28573
28561
  };
28574
28562
 
28575
28563
  clearData = (bChanged) => {
package/dist/nx/_nxDiv.js CHANGED
@@ -41,6 +41,41 @@ export class nxDiv extends HTMLElement {
41
41
  return ninegrid.querySelectorAll("input[name], textarea[name], select[name], nx-editor[name]", this.#root);
42
42
  }
43
43
 
44
+ // [공통 로직 1] 특정 요소에 값을 쓰거나 초기화하는 핵심 함수
45
+ #updateElement(el, value) {
46
+ const tagName = el.tagName.toUpperCase();
47
+ const type = el.type;
48
+ let isChanged = false;
49
+
50
+ if (["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"].includes(tagName)) {
51
+ if (type === "checkbox") {
52
+ const t = el.getAttribute("true-value") || "Y";
53
+ const isChecked = (String(t) === String(value));
54
+ if (el.checked !== isChecked) isChanged = true;
55
+ el.checked = isChecked;
56
+ } else if (type === "radio") {
57
+ const isChecked = (String(el.value) === String(value));
58
+ if (el.checked !== isChecked) isChanged = true;
59
+ el.checked = isChecked;
60
+ } else {
61
+ if (el.value !== value) isChanged = true;
62
+ el.value = value;
63
+ }
64
+ } else {
65
+ if (el.textContent !== value) isChanged = true;
66
+ el.textContent = value;
67
+ }
68
+ return isChanged;
69
+ }
70
+
71
+ // [공통 로직 2] 이벤트 리스너 일괄 등록
72
+ #refreshListeners() {
73
+ this.#getElements().forEach(el => {
74
+ el.removeEventListener("input", this.#changeHandler);
75
+ el.addEventListener("input", this.#changeHandler);
76
+ });
77
+ }
78
+
44
79
  getData = () => {
45
80
  const jsonData = {};
46
81
  this.#getElements().forEach(el => {
@@ -68,79 +103,32 @@ export class nxDiv extends HTMLElement {
68
103
  return jsonData;
69
104
  };
70
105
 
71
- clearData = (jsonData) => {
72
- this.#getElements().forEach(el => {
73
- el.removeEventListener("input", this.#changeHandler);
74
- el.addEventListener("input", this.#changeHandler);
75
- });
76
-
77
- //if (!jsonData || typeof jsonData !== 'object') return;
78
-
79
- //let bChanged = false;
106
+ // 파라미터가 있으면 해당 값으로, 없으면 전체 공백 초기화
107
+ clearData = (jsonData = {}) => {
108
+ this.#refreshListeners();
80
109
  this.#getElements().forEach(el => {
81
110
  const key = el.name;
82
- //console.log(el.tagName, key, el.name);
83
-
84
- const value = jsonData[key] || "";
85
- const inputTags = ["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"];
86
-
87
- if (inputTags.includes(el.tagName)) {
88
- if (el.type === "checkbox") {
89
- let t = el.getAttribute("true-value") || "Y";
90
- const isChecked = (t === String(value));
91
-
92
- el.checked = isChecked;
93
- } else if (el.type === "radio") {
94
- el.value = value;
95
- } else {
96
- el.value = value;
97
- }
98
- } else {
99
- el.textContent = value;
100
- }
111
+ if (!key) return;
112
+ const val = (jsonData && jsonData[key] !== undefined) ? jsonData[key] : "";
113
+ this.#updateElement(el, val);
101
114
  });
102
115
  this.#changed(false);
103
116
  };
104
117
 
105
118
  setData = (jsonData) => {
106
- this.#getElements().forEach(el => {
107
- el.removeEventListener("input", this.#changeHandler);
108
- el.addEventListener("input", this.#changeHandler);
109
- });
110
-
111
119
  if (!jsonData || typeof jsonData !== 'object') return;
120
+ this.#refreshListeners();
112
121
 
113
122
  let bChanged = false;
114
123
  this.#getElements().forEach(el => {
115
124
  const key = el.name;
116
- //console.log(el.tagName, key, el.name);
117
-
118
125
  if (!key || !jsonData.hasOwnProperty(key)) return;
119
126
 
120
- const value = jsonData[key];
121
- const inputTags = ["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"];
122
-
123
- if (inputTags.includes(el.tagName)) {
124
- if (el.type === "checkbox") {
125
- let t = el.getAttribute("true-value") || "Y";
126
- let f = el.getAttribute("false-value") || "N";
127
- const isChecked = (t === String(value));
128
- if (el.checked !== isChecked) bChanged = true;
129
- el.checked = isChecked;
130
- } else if (el.type === "radio") {
131
- const isChecked = (String(el.value) === String(value));
132
- if (el.checked !== isChecked) bChanged = true;
133
- el.checked = value;
134
- } else {
135
- if (el.value !== value) bChanged = true;
136
- el.value = value;
137
- }
138
- } else {
139
- if (el.textContent !== value) bChanged = true;
140
- el.textContent = value;
127
+ if (this.#updateElement(el, jsonData[key])) {
128
+ bChanged = true;
141
129
  }
142
130
  });
143
- if (bChanged) this.#changed(bChanged);
131
+ if (bChanged) this.#changed(true);
144
132
  };
145
133
 
146
134
  clearData = (bChanged) => {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ninegrid2",
3
3
  "type": "module",
4
- "version": "6.1387.0",
4
+ "version": "6.1389.0",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "exports": {
package/src/nx/_nxDiv.js CHANGED
@@ -41,6 +41,41 @@ export class nxDiv extends HTMLElement {
41
41
  return ninegrid.querySelectorAll("input[name], textarea[name], select[name], nx-editor[name]", this.#root);
42
42
  }
43
43
 
44
+ // [공통 로직 1] 특정 요소에 값을 쓰거나 초기화하는 핵심 함수
45
+ #updateElement(el, value) {
46
+ const tagName = el.tagName.toUpperCase();
47
+ const type = el.type;
48
+ let isChanged = false;
49
+
50
+ if (["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"].includes(tagName)) {
51
+ if (type === "checkbox") {
52
+ const t = el.getAttribute("true-value") || "Y";
53
+ const isChecked = (String(t) === String(value));
54
+ if (el.checked !== isChecked) isChanged = true;
55
+ el.checked = isChecked;
56
+ } else if (type === "radio") {
57
+ const isChecked = (String(el.value) === String(value));
58
+ if (el.checked !== isChecked) isChanged = true;
59
+ el.checked = isChecked;
60
+ } else {
61
+ if (el.value !== value) isChanged = true;
62
+ el.value = value;
63
+ }
64
+ } else {
65
+ if (el.textContent !== value) isChanged = true;
66
+ el.textContent = value;
67
+ }
68
+ return isChanged;
69
+ }
70
+
71
+ // [공통 로직 2] 이벤트 리스너 일괄 등록
72
+ #refreshListeners() {
73
+ this.#getElements().forEach(el => {
74
+ el.removeEventListener("input", this.#changeHandler);
75
+ el.addEventListener("input", this.#changeHandler);
76
+ });
77
+ }
78
+
44
79
  getData = () => {
45
80
  const jsonData = {};
46
81
  this.#getElements().forEach(el => {
@@ -68,79 +103,32 @@ export class nxDiv extends HTMLElement {
68
103
  return jsonData;
69
104
  };
70
105
 
71
- clearData = (jsonData) => {
72
- this.#getElements().forEach(el => {
73
- el.removeEventListener("input", this.#changeHandler);
74
- el.addEventListener("input", this.#changeHandler);
75
- });
76
-
77
- //if (!jsonData || typeof jsonData !== 'object') return;
78
-
79
- //let bChanged = false;
106
+ // 파라미터가 있으면 해당 값으로, 없으면 전체 공백 초기화
107
+ clearData = (jsonData = {}) => {
108
+ this.#refreshListeners();
80
109
  this.#getElements().forEach(el => {
81
110
  const key = el.name;
82
- //console.log(el.tagName, key, el.name);
83
-
84
- const value = jsonData[key] || "";
85
- const inputTags = ["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"];
86
-
87
- if (inputTags.includes(el.tagName)) {
88
- if (el.type === "checkbox") {
89
- let t = el.getAttribute("true-value") || "Y";
90
- const isChecked = (t === String(value));
91
-
92
- el.checked = isChecked;
93
- } else if (el.type === "radio") {
94
- el.value = value;
95
- } else {
96
- el.value = value;
97
- }
98
- } else {
99
- el.textContent = value;
100
- }
111
+ if (!key) return;
112
+ const val = (jsonData && jsonData[key] !== undefined) ? jsonData[key] : "";
113
+ this.#updateElement(el, val);
101
114
  });
102
115
  this.#changed(false);
103
116
  };
104
117
 
105
118
  setData = (jsonData) => {
106
- this.#getElements().forEach(el => {
107
- el.removeEventListener("input", this.#changeHandler);
108
- el.addEventListener("input", this.#changeHandler);
109
- });
110
-
111
119
  if (!jsonData || typeof jsonData !== 'object') return;
120
+ this.#refreshListeners();
112
121
 
113
122
  let bChanged = false;
114
123
  this.#getElements().forEach(el => {
115
124
  const key = el.name;
116
- //console.log(el.tagName, key, el.name);
117
-
118
125
  if (!key || !jsonData.hasOwnProperty(key)) return;
119
126
 
120
- const value = jsonData[key];
121
- const inputTags = ["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"];
122
-
123
- if (inputTags.includes(el.tagName)) {
124
- if (el.type === "checkbox") {
125
- let t = el.getAttribute("true-value") || "Y";
126
- let f = el.getAttribute("false-value") || "N";
127
- const isChecked = (t === String(value));
128
- if (el.checked !== isChecked) bChanged = true;
129
- el.checked = isChecked;
130
- } else if (el.type === "radio") {
131
- const isChecked = (String(el.value) === String(value));
132
- if (el.checked !== isChecked) bChanged = true;
133
- el.checked = value;
134
- } else {
135
- if (el.value !== value) bChanged = true;
136
- el.value = value;
137
- }
138
- } else {
139
- if (el.textContent !== value) bChanged = true;
140
- el.textContent = value;
127
+ if (this.#updateElement(el, jsonData[key])) {
128
+ bChanged = true;
141
129
  }
142
130
  });
143
- if (bChanged) this.#changed(bChanged);
131
+ if (bChanged) this.#changed(true);
144
132
  };
145
133
 
146
134
  clearData = (bChanged) => {