@simplysm/angular 14.1.14 → 14.1.15
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-textfield.d.ts","sourceRoot":"","sources":["../../../src/controls/input/sd-textfield.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;;AAEtC,qBAqRa,WAAW,CAAC,CAAC,SAAS,MAAM,gBAAgB;IACvD,KAAK,uEAAgC;IAErC,IAAI,yCAAuB;IAC3B,WAAW,0DAAmB;IAC9B,KAAK,0DAAmB;IACxB,UAAU,0DAAmB;IAC7B,UAAU,0DAAmB;IAE7B,QAAQ,qEAAiD;IACzD,QAAQ,qEAAiD;IAEzD,QAAQ,qEAAiD;IACzD,GAAG,uEAAgC;IACnC,GAAG,uEAAgC;IACnC,SAAS,0DAAmB;IAC5B,SAAS,0DAAmB;IAC5B,OAAO,0DAAmB;IAC1B,WAAW,+CAAiB,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,eAAI;IACtF,MAAM,0DAAmB;IAEzB,IAAI,0DAAmB;IACvB,YAAY,0DAAmB;IAC/B,cAAc,qEAAgD;IAC9D,SAAS,0DAAmB;IAE5B,MAAM,qEAAiD;IACvD,KAAK,qEAAiD;IACtD,IAAI,+DAAwB;IAC5B,KAAK,8IAED;IAEJ,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsD;IAGlF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAc;IAGpD,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsD;IAE/E,WAAW,yCAA+C;IAE1D,WAAW,kDAA+D;IAE1E,YAAY,yCAOT;IAEH,gBAAgB,qDAMb;;
|
|
1
|
+
{"version":3,"file":"sd-textfield.d.ts","sourceRoot":"","sources":["../../../src/controls/input/sd-textfield.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;;AAEtC,qBAqRa,WAAW,CAAC,CAAC,SAAS,MAAM,gBAAgB;IACvD,KAAK,uEAAgC;IAErC,IAAI,yCAAuB;IAC3B,WAAW,0DAAmB;IAC9B,KAAK,0DAAmB;IACxB,UAAU,0DAAmB;IAC7B,UAAU,0DAAmB;IAE7B,QAAQ,qEAAiD;IACzD,QAAQ,qEAAiD;IAEzD,QAAQ,qEAAiD;IACzD,GAAG,uEAAgC;IACnC,GAAG,uEAAgC;IACnC,SAAS,0DAAmB;IAC5B,SAAS,0DAAmB;IAC5B,OAAO,0DAAmB;IAC1B,WAAW,+CAAiB,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,eAAI;IACtF,MAAM,0DAAmB;IAEzB,IAAI,0DAAmB;IACvB,YAAY,0DAAmB;IAC/B,cAAc,qEAAgD;IAC9D,SAAS,0DAAmB;IAE5B,MAAM,qEAAiD;IACvD,KAAK,qEAAiD;IACtD,IAAI,+DAAwB;IAC5B,KAAK,8IAED;IAEJ,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsD;IAGlF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAc;IAGpD,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsD;IAE/E,WAAW,yCAA+C;IAE1D,WAAW,kDAA+D;IAE1E,YAAY,yCAOT;IAEH,gBAAgB,qDAMb;;IAuEH,kBAAkB,IAAI,IAAI;IAI1B,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAK/C,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAO3B,OAAO,CAAC,WAAW;IAiBnB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAU/B,OAAO,CAAC,mBAAmB;yCAhLhB,WAAW;2CAAX,WAAW;CAoLvB"}
|
|
@@ -132,6 +132,10 @@ export class SdTextfield {
|
|
|
132
132
|
const inputEl = this._inputElRef()?.nativeElement;
|
|
133
133
|
if (inputEl == null)
|
|
134
134
|
return;
|
|
135
|
+
// IME 조합 중에는 DOM 을 되쓰지 않는다. 되쓰면 진행 중 조합이 깨진다.
|
|
136
|
+
// 조합이 끝나면 onCompositionEnd → value.set 이 controlValue 를 바꿔 effect 가 다시 돌아 최종값을 반영한다.
|
|
137
|
+
if (this._composing)
|
|
138
|
+
return;
|
|
135
139
|
// 편집(포커스) 중이라도 변경 origin 을 구분한다.
|
|
136
140
|
// 사용자 입력이 만든 DOM(정규화 차이·진행 중 입력 포함)은 보호하고,
|
|
137
141
|
// 모델만 외부에서 바뀐 경우(프로그래밍적 리셋·prefill·표시옵션 변경)는 되써서 반영한다.
|
|
@@ -191,7 +195,8 @@ export class SdTextfield {
|
|
|
191
195
|
}
|
|
192
196
|
onInput(event) {
|
|
193
197
|
// 조합 중 input 은 무시하고, 완성 시 onCompositionEnd 에서 한 번만 반영
|
|
194
|
-
|
|
198
|
+
// isComposing 은 compositionstart 가 늦거나 누락된 IME 에서도 브라우저가 조합 구간 input 에 직접 실어주는 신호
|
|
199
|
+
if (event.isComposing || this._composing)
|
|
195
200
|
return;
|
|
196
201
|
this._applyInput(event.target);
|
|
197
202
|
}
|
|
@@ -216,6 +221,8 @@ export class SdTextfield {
|
|
|
216
221
|
onBlur(event) {
|
|
217
222
|
// 편집 종료 시 모델 기준값으로 동기화 (number 콤마 포맷 반영, date 미완성 입력 정리)
|
|
218
223
|
// date 미완성 입력은 input.value 가 "" 라 비교 없이 무조건 되써야 남은 세그먼트가 정리됨
|
|
224
|
+
// compositionend 가 스킵된 채 blur 되면 _composing 이 true 로 고착되므로 여기서 리셋한다.
|
|
225
|
+
this._composing = false;
|
|
219
226
|
const inputEl = event.target;
|
|
220
227
|
inputEl.value = this.controlValue();
|
|
221
228
|
this._syncNativeValidity(inputEl);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/angular",
|
|
3
|
-
"version": "14.1.
|
|
3
|
+
"version": "14.1.15",
|
|
4
4
|
"description": "심플리즘 패키지 - Angular",
|
|
5
5
|
"author": "심플리즘",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -32,11 +32,11 @@
|
|
|
32
32
|
"./styles.css"
|
|
33
33
|
],
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@angular/common": "^22.0.
|
|
36
|
-
"@angular/core": "^22.0.
|
|
37
|
-
"@angular/platform-browser": "^22.0.
|
|
38
|
-
"@angular/router": "^22.0.
|
|
39
|
-
"@angular/service-worker": "^22.0.
|
|
35
|
+
"@angular/common": "^22.0.5",
|
|
36
|
+
"@angular/core": "^22.0.5",
|
|
37
|
+
"@angular/platform-browser": "^22.0.5",
|
|
38
|
+
"@angular/router": "^22.0.5",
|
|
39
|
+
"@angular/service-worker": "^22.0.5",
|
|
40
40
|
"@ng-icons/core": "^33.3.0",
|
|
41
41
|
"@ng-icons/tabler-icons": "^33.3.0",
|
|
42
42
|
"@tiptap/core": "^3.27.1",
|
|
@@ -52,19 +52,19 @@
|
|
|
52
52
|
"@tiptap/extension-underline": "^3.27.1",
|
|
53
53
|
"@tiptap/markdown": "^3.27.1",
|
|
54
54
|
"@tiptap/starter-kit": "^3.27.1",
|
|
55
|
-
"bwip-js": "^4.11.
|
|
55
|
+
"bwip-js": "^4.11.2",
|
|
56
56
|
"echarts": "^6.1.0",
|
|
57
57
|
"html-to-image": "^1.11.13",
|
|
58
58
|
"jspdf": "^4.2.1",
|
|
59
59
|
"rxjs": "^7.8.2",
|
|
60
60
|
"tabbable": "^6.5.0",
|
|
61
|
-
"@simplysm/
|
|
62
|
-
"@simplysm/
|
|
63
|
-
"@simplysm/service-common": "14.1.
|
|
64
|
-
"@simplysm/core-common": "14.1.
|
|
61
|
+
"@simplysm/core-browser": "14.1.15",
|
|
62
|
+
"@simplysm/service-client": "14.1.15",
|
|
63
|
+
"@simplysm/service-common": "14.1.15",
|
|
64
|
+
"@simplysm/core-common": "14.1.15"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@angular/compiler": "^22.0.
|
|
67
|
+
"@angular/compiler": "^22.0.5"
|
|
68
68
|
},
|
|
69
69
|
"scripts": {}
|
|
70
70
|
}
|
|
@@ -368,6 +368,10 @@ export class SdTextfield<K extends keyof SdTextfieldTypes> {
|
|
|
368
368
|
const inputEl = this._inputElRef()?.nativeElement;
|
|
369
369
|
if (inputEl == null) return;
|
|
370
370
|
|
|
371
|
+
// IME 조합 중에는 DOM 을 되쓰지 않는다. 되쓰면 진행 중 조합이 깨진다.
|
|
372
|
+
// 조합이 끝나면 onCompositionEnd → value.set 이 controlValue 를 바꿔 effect 가 다시 돌아 최종값을 반영한다.
|
|
373
|
+
if (this._composing) return;
|
|
374
|
+
|
|
371
375
|
// 편집(포커스) 중이라도 변경 origin 을 구분한다.
|
|
372
376
|
// 사용자 입력이 만든 DOM(정규화 차이·진행 중 입력 포함)은 보호하고,
|
|
373
377
|
// 모델만 외부에서 바뀐 경우(프로그래밍적 리셋·prefill·표시옵션 변경)는 되써서 반영한다.
|
|
@@ -437,7 +441,8 @@ export class SdTextfield<K extends keyof SdTextfieldTypes> {
|
|
|
437
441
|
|
|
438
442
|
onInput(event: Event): void {
|
|
439
443
|
// 조합 중 input 은 무시하고, 완성 시 onCompositionEnd 에서 한 번만 반영
|
|
440
|
-
|
|
444
|
+
// isComposing 은 compositionstart 가 늦거나 누락된 IME 에서도 브라우저가 조합 구간 input 에 직접 실어주는 신호
|
|
445
|
+
if ((event as InputEvent).isComposing || this._composing) return;
|
|
441
446
|
this._applyInput(event.target as HTMLInputElement);
|
|
442
447
|
}
|
|
443
448
|
|
|
@@ -461,6 +466,8 @@ export class SdTextfield<K extends keyof SdTextfieldTypes> {
|
|
|
461
466
|
onBlur(event: FocusEvent): void {
|
|
462
467
|
// 편집 종료 시 모델 기준값으로 동기화 (number 콤마 포맷 반영, date 미완성 입력 정리)
|
|
463
468
|
// date 미완성 입력은 input.value 가 "" 라 비교 없이 무조건 되써야 남은 세그먼트가 정리됨
|
|
469
|
+
// compositionend 가 스킵된 채 blur 되면 _composing 이 true 로 고착되므로 여기서 리셋한다.
|
|
470
|
+
this._composing = false;
|
|
464
471
|
const inputEl = event.target as HTMLInputElement;
|
|
465
472
|
inputEl.value = this.controlValue();
|
|
466
473
|
this._syncNativeValidity(inputEl);
|