ninegrid2 6.1394.0 → 6.1396.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.
@@ -28437,6 +28437,7 @@ class nxDiv extends HTMLElement {
28437
28437
  originContents;
28438
28438
  #isInitialized = false;
28439
28439
  #root; // Shadow DOM 사용 여부에 따라 shadowRoot 또는 this를 가리킴
28440
+ #hasChanged = false; // 1. 내부 상태 관리를 위한 프라이빗 변수
28440
28441
 
28441
28442
  constructor() {
28442
28443
  super();
@@ -28463,6 +28464,24 @@ class nxDiv extends HTMLElement {
28463
28464
  return false;
28464
28465
  }
28465
28466
 
28467
+ // 2. changed Getter: 현재 변경 상태를 반환
28468
+ get changed() {
28469
+ return this.#hasChanged;
28470
+ }
28471
+
28472
+ // 3. changed Setter: 상태를 업데이트하고 UI(nx-title2)에 반영
28473
+ set changed(v) {
28474
+ const value = Boolean(v);
28475
+ this.#hasChanged = value;
28476
+
28477
+ // 기존 #changed 로직을 setter 내부로 통합
28478
+ const parent = this.closest(".detail-wrapper");
28479
+ if (parent) {
28480
+ const el = parent.querySelector("nx-title2");
28481
+ if (el) el.changed = value;
28482
+ }
28483
+ }
28484
+
28466
28485
  // 자식 클래스에서 접근 가능하도록 getter 제공
28467
28486
  get root() {
28468
28487
  return this.#root || this;
@@ -28566,19 +28585,13 @@ class nxDiv extends HTMLElement {
28566
28585
 
28567
28586
  initData = (jsonData) => {
28568
28587
  this.clearData(jsonData);
28569
- this.#changed(false);
28588
+ //this.#changed(false);
28589
+ this.changed = false; // 4. setter 호출
28570
28590
  };
28571
28591
 
28572
- #changed = (v) => {
28573
- const parent = this.closest(".detail-wrapper");
28574
- if (parent) {
28575
- const el = parent.querySelector("nx-title2");
28576
- if (el) el.changed = v;
28577
- }
28578
- }
28579
-
28580
28592
  #changeHandler = (e) => {
28581
- this.#changed(true);
28593
+ //this.#changed(true);
28594
+ this.changed = true; // 4. setter 호출
28582
28595
  }
28583
28596
 
28584
28597
  #init = () => {
@@ -28593,14 +28606,12 @@ class nxDiv extends HTMLElement {
28593
28606
  //console.log(this.innerHTML.trim());
28594
28607
  this.originContents = this.innerHTML.trim();
28595
28608
 
28596
- /**
28597
- this.originContents = this.innerHTML.trim();
28598
28609
  this.innerHTML = ""; // 기존 내부 HTML 제거
28599
28610
 
28600
28611
  // 만약 순수 nx-div로만 쓰일 경우(상속 x), 내용을 shadow에 채워줌
28601
28612
  if (this.shadowRoot && this.tagName.toLowerCase() === 'nx-div') {
28602
28613
  this.shadowRoot.innerHTML = this.originContents;
28603
- } */
28614
+ }
28604
28615
  };
28605
28616
  }
28606
28617
 
@@ -28638,10 +28649,10 @@ class nxTitle2 extends nxDiv {
28638
28649
  <span>${caption}</span>
28639
28650
  </div>
28640
28651
 
28641
- <slot></slot>
28652
+ ${this.originContents}
28642
28653
  `;
28643
28654
 
28644
- this.shadowRoot.appendChild(htmlTmpl.content.cloneNode(true));
28655
+ (this.shadowRoot || this).appendChild(htmlTmpl.content.cloneNode(true));
28645
28656
  }
28646
28657
  }
28647
28658
 
@@ -28900,7 +28911,7 @@ class nxPanel extends nxDiv {
28900
28911
  </div>
28901
28912
  `;
28902
28913
 
28903
- this.shadowRoot.appendChild(htmlTmpl.content.cloneNode(true));
28914
+ (this.shadowRoot || this).appendChild(htmlTmpl.content.cloneNode(true));
28904
28915
  }
28905
28916
  }
28906
28917
 
@@ -28918,8 +28929,6 @@ class nxButtons extends nxDiv {
28918
28929
 
28919
28930
  #init = () => {
28920
28931
 
28921
- const target = this.shadowRoot || this;
28922
-
28923
28932
  const htmlTmpl = document.createElement("template");
28924
28933
  htmlTmpl.innerHTML = `
28925
28934
  <style>
@@ -28927,10 +28936,10 @@ class nxButtons extends nxDiv {
28927
28936
  ${ninegrid.getCustomPath(this,"nxButtons.css")}
28928
28937
  </style>
28929
28938
 
28930
- <slot></slot>
28939
+ ${this.originContents}
28931
28940
  `;
28932
28941
 
28933
- target.appendChild(htmlTmpl.content.cloneNode(true));
28942
+ (this.shadowRoot || this).appendChild(htmlTmpl.content.cloneNode(true));
28934
28943
  }
28935
28944
  }
28936
28945
 
@@ -28433,6 +28433,7 @@ class nxDiv extends HTMLElement {
28433
28433
  originContents;
28434
28434
  #isInitialized = false;
28435
28435
  #root; // Shadow DOM 사용 여부에 따라 shadowRoot 또는 this를 가리킴
28436
+ #hasChanged = false; // 1. 내부 상태 관리를 위한 프라이빗 변수
28436
28437
 
28437
28438
  constructor() {
28438
28439
  super();
@@ -28459,6 +28460,24 @@ class nxDiv extends HTMLElement {
28459
28460
  return false;
28460
28461
  }
28461
28462
 
28463
+ // 2. changed Getter: 현재 변경 상태를 반환
28464
+ get changed() {
28465
+ return this.#hasChanged;
28466
+ }
28467
+
28468
+ // 3. changed Setter: 상태를 업데이트하고 UI(nx-title2)에 반영
28469
+ set changed(v) {
28470
+ const value = Boolean(v);
28471
+ this.#hasChanged = value;
28472
+
28473
+ // 기존 #changed 로직을 setter 내부로 통합
28474
+ const parent = this.closest(".detail-wrapper");
28475
+ if (parent) {
28476
+ const el = parent.querySelector("nx-title2");
28477
+ if (el) el.changed = value;
28478
+ }
28479
+ }
28480
+
28462
28481
  // 자식 클래스에서 접근 가능하도록 getter 제공
28463
28482
  get root() {
28464
28483
  return this.#root || this;
@@ -28562,19 +28581,13 @@ class nxDiv extends HTMLElement {
28562
28581
 
28563
28582
  initData = (jsonData) => {
28564
28583
  this.clearData(jsonData);
28565
- this.#changed(false);
28584
+ //this.#changed(false);
28585
+ this.changed = false; // 4. setter 호출
28566
28586
  };
28567
28587
 
28568
- #changed = (v) => {
28569
- const parent = this.closest(".detail-wrapper");
28570
- if (parent) {
28571
- const el = parent.querySelector("nx-title2");
28572
- if (el) el.changed = v;
28573
- }
28574
- }
28575
-
28576
28588
  #changeHandler = (e) => {
28577
- this.#changed(true);
28589
+ //this.#changed(true);
28590
+ this.changed = true; // 4. setter 호출
28578
28591
  }
28579
28592
 
28580
28593
  #init = () => {
@@ -28589,14 +28602,12 @@ class nxDiv extends HTMLElement {
28589
28602
  //console.log(this.innerHTML.trim());
28590
28603
  this.originContents = this.innerHTML.trim();
28591
28604
 
28592
- /**
28593
- this.originContents = this.innerHTML.trim();
28594
28605
  this.innerHTML = ""; // 기존 내부 HTML 제거
28595
28606
 
28596
28607
  // 만약 순수 nx-div로만 쓰일 경우(상속 x), 내용을 shadow에 채워줌
28597
28608
  if (this.shadowRoot && this.tagName.toLowerCase() === 'nx-div') {
28598
28609
  this.shadowRoot.innerHTML = this.originContents;
28599
- } */
28610
+ }
28600
28611
  };
28601
28612
  }
28602
28613
 
@@ -28634,10 +28645,10 @@ class nxTitle2 extends nxDiv {
28634
28645
  <span>${caption}</span>
28635
28646
  </div>
28636
28647
 
28637
- <slot></slot>
28648
+ ${this.originContents}
28638
28649
  `;
28639
28650
 
28640
- this.shadowRoot.appendChild(htmlTmpl.content.cloneNode(true));
28651
+ (this.shadowRoot || this).appendChild(htmlTmpl.content.cloneNode(true));
28641
28652
  }
28642
28653
  }
28643
28654
 
@@ -28896,7 +28907,7 @@ class nxPanel extends nxDiv {
28896
28907
  </div>
28897
28908
  `;
28898
28909
 
28899
- this.shadowRoot.appendChild(htmlTmpl.content.cloneNode(true));
28910
+ (this.shadowRoot || this).appendChild(htmlTmpl.content.cloneNode(true));
28900
28911
  }
28901
28912
  }
28902
28913
 
@@ -28914,8 +28925,6 @@ class nxButtons extends nxDiv {
28914
28925
 
28915
28926
  #init = () => {
28916
28927
 
28917
- const target = this.shadowRoot || this;
28918
-
28919
28928
  const htmlTmpl = document.createElement("template");
28920
28929
  htmlTmpl.innerHTML = `
28921
28930
  <style>
@@ -28923,10 +28932,10 @@ class nxButtons extends nxDiv {
28923
28932
  ${ninegrid.getCustomPath(this,"nxButtons.css")}
28924
28933
  </style>
28925
28934
 
28926
- <slot></slot>
28935
+ ${this.originContents}
28927
28936
  `;
28928
28937
 
28929
- target.appendChild(htmlTmpl.content.cloneNode(true));
28938
+ (this.shadowRoot || this).appendChild(htmlTmpl.content.cloneNode(true));
28930
28939
  }
28931
28940
  }
28932
28941
 
package/dist/nx/_nxDiv.js CHANGED
@@ -4,6 +4,7 @@ export class nxDiv extends HTMLElement {
4
4
  originContents;
5
5
  #isInitialized = false;
6
6
  #root; // Shadow DOM 사용 여부에 따라 shadowRoot 또는 this를 가리킴
7
+ #hasChanged = false; // 1. 내부 상태 관리를 위한 프라이빗 변수
7
8
 
8
9
  constructor() {
9
10
  super();
@@ -30,6 +31,24 @@ export class nxDiv extends HTMLElement {
30
31
  return false;
31
32
  }
32
33
 
34
+ // 2. changed Getter: 현재 변경 상태를 반환
35
+ get changed() {
36
+ return this.#hasChanged;
37
+ }
38
+
39
+ // 3. changed Setter: 상태를 업데이트하고 UI(nx-title2)에 반영
40
+ set changed(v) {
41
+ const value = Boolean(v);
42
+ this.#hasChanged = value;
43
+
44
+ // 기존 #changed 로직을 setter 내부로 통합
45
+ const parent = this.closest(".detail-wrapper");
46
+ if (parent) {
47
+ const el = parent.querySelector("nx-title2");
48
+ if (el) el.changed = value;
49
+ }
50
+ }
51
+
33
52
  // 자식 클래스에서 접근 가능하도록 getter 제공
34
53
  get root() {
35
54
  return this.#root || this;
@@ -133,19 +152,13 @@ export class nxDiv extends HTMLElement {
133
152
 
134
153
  initData = (jsonData) => {
135
154
  this.clearData(jsonData);
136
- this.#changed(false);
155
+ //this.#changed(false);
156
+ this.changed = false; // 4. setter 호출
137
157
  };
138
158
 
139
- #changed = (v) => {
140
- const parent = this.closest(".detail-wrapper");
141
- if (parent) {
142
- const el = parent.querySelector("nx-title2");
143
- if (el) el.changed = v;
144
- }
145
- }
146
-
147
159
  #changeHandler = (e) => {
148
- this.#changed(true);
160
+ //this.#changed(true);
161
+ this.changed = true; // 4. setter 호출
149
162
  }
150
163
 
151
164
  #init = () => {
@@ -160,13 +173,11 @@ export class nxDiv extends HTMLElement {
160
173
  //console.log(this.innerHTML.trim());
161
174
  this.originContents = this.innerHTML.trim();
162
175
 
163
- /**
164
- this.originContents = this.innerHTML.trim();
165
176
  this.innerHTML = ""; // 기존 내부 HTML 제거
166
177
 
167
178
  // 만약 순수 nx-div로만 쓰일 경우(상속 x), 내용을 shadow에 채워줌
168
179
  if (this.shadowRoot && this.tagName.toLowerCase() === 'nx-div') {
169
180
  this.shadowRoot.innerHTML = this.originContents;
170
- } */
181
+ }
171
182
  };
172
183
  }
@@ -13,8 +13,6 @@ class nxButtons extends nxDiv {
13
13
 
14
14
  #init = () => {
15
15
 
16
- const target = this.shadowRoot || this;
17
-
18
16
  const htmlTmpl = document.createElement("template");
19
17
  htmlTmpl.innerHTML = `
20
18
  <style>
@@ -22,10 +20,10 @@ class nxButtons extends nxDiv {
22
20
  ${ninegrid.getCustomPath(this,"nxButtons.css")}
23
21
  </style>
24
22
 
25
- <slot></slot>
23
+ ${this.originContents}
26
24
  `;
27
25
 
28
- target.appendChild(htmlTmpl.content.cloneNode(true));
26
+ (this.shadowRoot || this).appendChild(htmlTmpl.content.cloneNode(true));
29
27
  }
30
28
  }
31
29
 
@@ -33,7 +33,7 @@ class nxPanel extends nxDiv {
33
33
  </div>
34
34
  `;
35
35
 
36
- this.shadowRoot.appendChild(htmlTmpl.content.cloneNode(true));
36
+ (this.shadowRoot || this).appendChild(htmlTmpl.content.cloneNode(true));
37
37
  }
38
38
  }
39
39
 
@@ -35,10 +35,10 @@ class nxTitle2 extends nxDiv {
35
35
  <span>${caption}</span>
36
36
  </div>
37
37
 
38
- <slot></slot>
38
+ ${this.originContents}
39
39
  `;
40
40
 
41
- this.shadowRoot.appendChild(htmlTmpl.content.cloneNode(true));
41
+ (this.shadowRoot || this).appendChild(htmlTmpl.content.cloneNode(true));
42
42
  }
43
43
  }
44
44
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ninegrid2",
3
3
  "type": "module",
4
- "version": "6.1394.0",
4
+ "version": "6.1396.0",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "exports": {
package/src/nx/_nxDiv.js CHANGED
@@ -4,6 +4,7 @@ export class nxDiv extends HTMLElement {
4
4
  originContents;
5
5
  #isInitialized = false;
6
6
  #root; // Shadow DOM 사용 여부에 따라 shadowRoot 또는 this를 가리킴
7
+ #hasChanged = false; // 1. 내부 상태 관리를 위한 프라이빗 변수
7
8
 
8
9
  constructor() {
9
10
  super();
@@ -30,6 +31,24 @@ export class nxDiv extends HTMLElement {
30
31
  return false;
31
32
  }
32
33
 
34
+ // 2. changed Getter: 현재 변경 상태를 반환
35
+ get changed() {
36
+ return this.#hasChanged;
37
+ }
38
+
39
+ // 3. changed Setter: 상태를 업데이트하고 UI(nx-title2)에 반영
40
+ set changed(v) {
41
+ const value = Boolean(v);
42
+ this.#hasChanged = value;
43
+
44
+ // 기존 #changed 로직을 setter 내부로 통합
45
+ const parent = this.closest(".detail-wrapper");
46
+ if (parent) {
47
+ const el = parent.querySelector("nx-title2");
48
+ if (el) el.changed = value;
49
+ }
50
+ }
51
+
33
52
  // 자식 클래스에서 접근 가능하도록 getter 제공
34
53
  get root() {
35
54
  return this.#root || this;
@@ -133,19 +152,13 @@ export class nxDiv extends HTMLElement {
133
152
 
134
153
  initData = (jsonData) => {
135
154
  this.clearData(jsonData);
136
- this.#changed(false);
155
+ //this.#changed(false);
156
+ this.changed = false; // 4. setter 호출
137
157
  };
138
158
 
139
- #changed = (v) => {
140
- const parent = this.closest(".detail-wrapper");
141
- if (parent) {
142
- const el = parent.querySelector("nx-title2");
143
- if (el) el.changed = v;
144
- }
145
- }
146
-
147
159
  #changeHandler = (e) => {
148
- this.#changed(true);
160
+ //this.#changed(true);
161
+ this.changed = true; // 4. setter 호출
149
162
  }
150
163
 
151
164
  #init = () => {
@@ -160,13 +173,11 @@ export class nxDiv extends HTMLElement {
160
173
  //console.log(this.innerHTML.trim());
161
174
  this.originContents = this.innerHTML.trim();
162
175
 
163
- /**
164
- this.originContents = this.innerHTML.trim();
165
176
  this.innerHTML = ""; // 기존 내부 HTML 제거
166
177
 
167
178
  // 만약 순수 nx-div로만 쓰일 경우(상속 x), 내용을 shadow에 채워줌
168
179
  if (this.shadowRoot && this.tagName.toLowerCase() === 'nx-div') {
169
180
  this.shadowRoot.innerHTML = this.originContents;
170
- } */
181
+ }
171
182
  };
172
183
  }
@@ -13,8 +13,6 @@ class nxButtons extends nxDiv {
13
13
 
14
14
  #init = () => {
15
15
 
16
- const target = this.shadowRoot || this;
17
-
18
16
  const htmlTmpl = document.createElement("template");
19
17
  htmlTmpl.innerHTML = `
20
18
  <style>
@@ -22,10 +20,10 @@ class nxButtons extends nxDiv {
22
20
  ${ninegrid.getCustomPath(this,"nxButtons.css")}
23
21
  </style>
24
22
 
25
- <slot></slot>
23
+ ${this.originContents}
26
24
  `;
27
25
 
28
- target.appendChild(htmlTmpl.content.cloneNode(true));
26
+ (this.shadowRoot || this).appendChild(htmlTmpl.content.cloneNode(true));
29
27
  }
30
28
  }
31
29
 
package/src/nx/nxPanel.js CHANGED
@@ -33,7 +33,7 @@ class nxPanel extends nxDiv {
33
33
  </div>
34
34
  `;
35
35
 
36
- this.shadowRoot.appendChild(htmlTmpl.content.cloneNode(true));
36
+ (this.shadowRoot || this).appendChild(htmlTmpl.content.cloneNode(true));
37
37
  }
38
38
  }
39
39
 
@@ -35,10 +35,10 @@ class nxTitle2 extends nxDiv {
35
35
  <span>${caption}</span>
36
36
  </div>
37
37
 
38
- <slot></slot>
38
+ ${this.originContents}
39
39
  `;
40
40
 
41
- this.shadowRoot.appendChild(htmlTmpl.content.cloneNode(true));
41
+ (this.shadowRoot || this).appendChild(htmlTmpl.content.cloneNode(true));
42
42
  }
43
43
  }
44
44