ninegrid2 6.1384.0 → 6.1386.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.
@@ -28501,46 +28501,48 @@ class nxDiv extends HTMLElement {
28501
28501
  return jsonData;
28502
28502
  };
28503
28503
 
28504
- setData = (jsonData) => {
28505
- this.#getElements().forEach(el => {
28506
- el.removeEventListener("input", this.#changeHandler);
28507
- el.addEventListener("input", this.#changeHandler);
28508
- });
28504
+ // [공통 로직 1] 특정 요소에 값을 쓰거나 초기화하는 핵심 함수
28505
+ #updateElement(el, value) {
28506
+ const tagName = el.tagName.toUpperCase();
28507
+ const type = el.type;
28508
+ let isChanged = false;
28509
+
28510
+ if (["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"].includes(tagName)) {
28511
+ if (type === "checkbox") {
28512
+ const t = el.getAttribute("true-value") || "Y";
28513
+ const isChecked = (String(t) === String(value));
28514
+ if (el.checked !== isChecked) isChanged = true;
28515
+ el.checked = isChecked;
28516
+ } else if (type === "radio") {
28517
+ const isChecked = (String(el.value) === String(value));
28518
+ if (el.checked !== isChecked) isChanged = true;
28519
+ el.checked = isChecked;
28520
+ } else {
28521
+ if (el.value !== value) isChanged = true;
28522
+ el.value = value;
28523
+ }
28524
+ } else {
28525
+ if (el.textContent !== value) isChanged = true;
28526
+ el.textContent = value;
28527
+ }
28528
+ return isChanged;
28529
+ }
28509
28530
 
28531
+ // 파라미터가 있으면 해당 값으로, 없으면 전체 공백 초기화
28532
+ setData = (jsonData) => {
28510
28533
  if (!jsonData || typeof jsonData !== 'object') return;
28534
+ this.#refreshListeners();
28511
28535
 
28512
28536
  let bChanged = false;
28513
28537
  this.#getElements().forEach(el => {
28514
28538
  const key = el.name;
28515
- //console.log(el.tagName, key, el.name);
28516
-
28517
28539
  if (!key || !jsonData.hasOwnProperty(key)) return;
28518
28540
 
28519
- const value = jsonData[key];
28520
- const inputTags = ["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"];
28521
-
28522
- if (inputTags.includes(el.tagName)) {
28523
- if (el.type === "checkbox") {
28524
- let t = el.getAttribute("true-value") || "Y";
28525
- el.getAttribute("false-value") || "N";
28526
- const isChecked = (t === String(value));
28527
- if (el.checked !== isChecked) bChanged = true;
28528
- el.checked = isChecked;
28529
- } else if (el.type === "radio") {
28530
- const isChecked = (String(el.value) === String(value));
28531
- if (el.checked !== isChecked) bChanged = true;
28532
- // 라디오 버튼 그룹 내에서 값 일치 여부 확인
28533
- el.checked = isChecked;
28534
- } else {
28535
- if (el.value !== value) bChanged = true;
28536
- el.value = value;
28537
- }
28538
- } else {
28539
- if (el.textContent !== value) bChanged = true;
28540
- el.textContent = value;
28541
+ if (this.#updateElement(el, jsonData[key])) {
28542
+ bChanged = true;
28541
28543
  }
28542
28544
  });
28543
- if (bChanged) this.#changed(bChanged);
28545
+ if (bChanged) this.#changed(true);
28544
28546
  };
28545
28547
 
28546
28548
  initData = (jsonData) => {
@@ -28497,46 +28497,48 @@ class nxDiv extends HTMLElement {
28497
28497
  return jsonData;
28498
28498
  };
28499
28499
 
28500
- setData = (jsonData) => {
28501
- this.#getElements().forEach(el => {
28502
- el.removeEventListener("input", this.#changeHandler);
28503
- el.addEventListener("input", this.#changeHandler);
28504
- });
28500
+ // [공통 로직 1] 특정 요소에 값을 쓰거나 초기화하는 핵심 함수
28501
+ #updateElement(el, value) {
28502
+ const tagName = el.tagName.toUpperCase();
28503
+ const type = el.type;
28504
+ let isChanged = false;
28505
+
28506
+ if (["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"].includes(tagName)) {
28507
+ if (type === "checkbox") {
28508
+ const t = el.getAttribute("true-value") || "Y";
28509
+ const isChecked = (String(t) === String(value));
28510
+ if (el.checked !== isChecked) isChanged = true;
28511
+ el.checked = isChecked;
28512
+ } else if (type === "radio") {
28513
+ const isChecked = (String(el.value) === String(value));
28514
+ if (el.checked !== isChecked) isChanged = true;
28515
+ el.checked = isChecked;
28516
+ } else {
28517
+ if (el.value !== value) isChanged = true;
28518
+ el.value = value;
28519
+ }
28520
+ } else {
28521
+ if (el.textContent !== value) isChanged = true;
28522
+ el.textContent = value;
28523
+ }
28524
+ return isChanged;
28525
+ }
28505
28526
 
28527
+ // 파라미터가 있으면 해당 값으로, 없으면 전체 공백 초기화
28528
+ setData = (jsonData) => {
28506
28529
  if (!jsonData || typeof jsonData !== 'object') return;
28530
+ this.#refreshListeners();
28507
28531
 
28508
28532
  let bChanged = false;
28509
28533
  this.#getElements().forEach(el => {
28510
28534
  const key = el.name;
28511
- //console.log(el.tagName, key, el.name);
28512
-
28513
28535
  if (!key || !jsonData.hasOwnProperty(key)) return;
28514
28536
 
28515
- const value = jsonData[key];
28516
- const inputTags = ["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"];
28517
-
28518
- if (inputTags.includes(el.tagName)) {
28519
- if (el.type === "checkbox") {
28520
- let t = el.getAttribute("true-value") || "Y";
28521
- el.getAttribute("false-value") || "N";
28522
- const isChecked = (t === String(value));
28523
- if (el.checked !== isChecked) bChanged = true;
28524
- el.checked = isChecked;
28525
- } else if (el.type === "radio") {
28526
- const isChecked = (String(el.value) === String(value));
28527
- if (el.checked !== isChecked) bChanged = true;
28528
- // 라디오 버튼 그룹 내에서 값 일치 여부 확인
28529
- el.checked = isChecked;
28530
- } else {
28531
- if (el.value !== value) bChanged = true;
28532
- el.value = value;
28533
- }
28534
- } else {
28535
- if (el.textContent !== value) bChanged = true;
28536
- el.textContent = value;
28537
+ if (this.#updateElement(el, jsonData[key])) {
28538
+ bChanged = true;
28537
28539
  }
28538
28540
  });
28539
- if (bChanged) this.#changed(bChanged);
28541
+ if (bChanged) this.#changed(true);
28540
28542
  };
28541
28543
 
28542
28544
  initData = (jsonData) => {
package/dist/nx/_nxDiv.js CHANGED
@@ -68,46 +68,48 @@ export class nxDiv extends HTMLElement {
68
68
  return jsonData;
69
69
  };
70
70
 
71
- setData = (jsonData) => {
72
- this.#getElements().forEach(el => {
73
- el.removeEventListener("input", this.#changeHandler);
74
- el.addEventListener("input", this.#changeHandler);
75
- });
71
+ // [공통 로직 1] 특정 요소에 값을 쓰거나 초기화하는 핵심 함수
72
+ #updateElement(el, value) {
73
+ const tagName = el.tagName.toUpperCase();
74
+ const type = el.type;
75
+ let isChanged = false;
76
+
77
+ if (["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"].includes(tagName)) {
78
+ if (type === "checkbox") {
79
+ const t = el.getAttribute("true-value") || "Y";
80
+ const isChecked = (String(t) === String(value));
81
+ if (el.checked !== isChecked) isChanged = true;
82
+ el.checked = isChecked;
83
+ } else if (type === "radio") {
84
+ const isChecked = (String(el.value) === String(value));
85
+ if (el.checked !== isChecked) isChanged = true;
86
+ el.checked = isChecked;
87
+ } else {
88
+ if (el.value !== value) isChanged = true;
89
+ el.value = value;
90
+ }
91
+ } else {
92
+ if (el.textContent !== value) isChanged = true;
93
+ el.textContent = value;
94
+ }
95
+ return isChanged;
96
+ }
76
97
 
98
+ // 파라미터가 있으면 해당 값으로, 없으면 전체 공백 초기화
99
+ setData = (jsonData) => {
77
100
  if (!jsonData || typeof jsonData !== 'object') return;
101
+ this.#refreshListeners();
78
102
 
79
103
  let bChanged = false;
80
104
  this.#getElements().forEach(el => {
81
105
  const key = el.name;
82
- //console.log(el.tagName, key, el.name);
83
-
84
106
  if (!key || !jsonData.hasOwnProperty(key)) return;
85
107
 
86
- const value = jsonData[key];
87
- const inputTags = ["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"];
88
-
89
- if (inputTags.includes(el.tagName)) {
90
- if (el.type === "checkbox") {
91
- let t = el.getAttribute("true-value") || "Y";
92
- let f = el.getAttribute("false-value") || "N";
93
- const isChecked = (t === String(value));
94
- if (el.checked !== isChecked) bChanged = true;
95
- el.checked = isChecked;
96
- } else if (el.type === "radio") {
97
- const isChecked = (String(el.value) === String(value));
98
- if (el.checked !== isChecked) bChanged = true;
99
- // 라디오 버튼 그룹 내에서 값 일치 여부 확인
100
- el.checked = isChecked;
101
- } else {
102
- if (el.value !== value) bChanged = true;
103
- el.value = value;
104
- }
105
- } else {
106
- if (el.textContent !== value) bChanged = true;
107
- el.textContent = value;
108
+ if (this.#updateElement(el, jsonData[key])) {
109
+ bChanged = true;
108
110
  }
109
111
  });
110
- if (bChanged) this.#changed(bChanged);
112
+ if (bChanged) this.#changed(true);
111
113
  };
112
114
 
113
115
  initData = (jsonData) => {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ninegrid2",
3
3
  "type": "module",
4
- "version": "6.1384.0",
4
+ "version": "6.1386.0",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "exports": {
package/src/nx/_nxDiv.js CHANGED
@@ -68,46 +68,48 @@ export class nxDiv extends HTMLElement {
68
68
  return jsonData;
69
69
  };
70
70
 
71
- setData = (jsonData) => {
72
- this.#getElements().forEach(el => {
73
- el.removeEventListener("input", this.#changeHandler);
74
- el.addEventListener("input", this.#changeHandler);
75
- });
71
+ // [공통 로직 1] 특정 요소에 값을 쓰거나 초기화하는 핵심 함수
72
+ #updateElement(el, value) {
73
+ const tagName = el.tagName.toUpperCase();
74
+ const type = el.type;
75
+ let isChanged = false;
76
+
77
+ if (["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"].includes(tagName)) {
78
+ if (type === "checkbox") {
79
+ const t = el.getAttribute("true-value") || "Y";
80
+ const isChecked = (String(t) === String(value));
81
+ if (el.checked !== isChecked) isChanged = true;
82
+ el.checked = isChecked;
83
+ } else if (type === "radio") {
84
+ const isChecked = (String(el.value) === String(value));
85
+ if (el.checked !== isChecked) isChanged = true;
86
+ el.checked = isChecked;
87
+ } else {
88
+ if (el.value !== value) isChanged = true;
89
+ el.value = value;
90
+ }
91
+ } else {
92
+ if (el.textContent !== value) isChanged = true;
93
+ el.textContent = value;
94
+ }
95
+ return isChanged;
96
+ }
76
97
 
98
+ // 파라미터가 있으면 해당 값으로, 없으면 전체 공백 초기화
99
+ setData = (jsonData) => {
77
100
  if (!jsonData || typeof jsonData !== 'object') return;
101
+ this.#refreshListeners();
78
102
 
79
103
  let bChanged = false;
80
104
  this.#getElements().forEach(el => {
81
105
  const key = el.name;
82
- //console.log(el.tagName, key, el.name);
83
-
84
106
  if (!key || !jsonData.hasOwnProperty(key)) return;
85
107
 
86
- const value = jsonData[key];
87
- const inputTags = ["INPUT", "TEXTAREA", "SELECT", "NX-EDITOR"];
88
-
89
- if (inputTags.includes(el.tagName)) {
90
- if (el.type === "checkbox") {
91
- let t = el.getAttribute("true-value") || "Y";
92
- let f = el.getAttribute("false-value") || "N";
93
- const isChecked = (t === String(value));
94
- if (el.checked !== isChecked) bChanged = true;
95
- el.checked = isChecked;
96
- } else if (el.type === "radio") {
97
- const isChecked = (String(el.value) === String(value));
98
- if (el.checked !== isChecked) bChanged = true;
99
- // 라디오 버튼 그룹 내에서 값 일치 여부 확인
100
- el.checked = isChecked;
101
- } else {
102
- if (el.value !== value) bChanged = true;
103
- el.value = value;
104
- }
105
- } else {
106
- if (el.textContent !== value) bChanged = true;
107
- el.textContent = value;
108
+ if (this.#updateElement(el, jsonData[key])) {
109
+ bChanged = true;
108
110
  }
109
111
  });
110
- if (bChanged) this.#changed(bChanged);
112
+ if (bChanged) this.#changed(true);
111
113
  };
112
114
 
113
115
  initData = (jsonData) => {