@ihabdevteam/core 0.350.0 → 0.352.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.
- package/CHANGELOG.md +96 -0
- package/dist/components.cjs.js +179 -178
- package/dist/components.esm.css +1 -1
- package/dist/hooks.cjs.js +1 -1
- package/dist/i18n.cjs.js +1 -1
- package/dist/ihabdevteam-core.cjs.js +188 -187
- package/dist/ihabdevteam-core.d.ts +108 -1
- package/dist/packages/core/src/components/Checkbox.css +7 -0
- package/dist/packages/core/src/components/NotifyTextPreview.css +81 -0
- package/dist/packages/core/src/components/NotifyTextPreview.d.ts +65 -0
- package/dist/packages/core/src/components/NotifyTextPreview.js +15 -0
- package/dist/packages/core/src/components.d.ts +2 -0
- package/dist/packages/core/src/components.js +3 -0
- package/dist/packages/core/src/utils/smsBytes.d.ts +59 -0
- package/dist/packages/core/src/utils/smsBytes.js +69 -0
- package/dist/packages/core/src/utils.d.ts +2 -0
- package/dist/packages/core/src/utils.js +3 -0
- package/dist/packages/core/src/version.d.ts +1 -1
- package/dist/packages/core/src/version.js +1 -1
- package/dist/utils.cjs.js +5 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,102 @@ All notable changes to this project will be documented in this file.
|
|
|
7
7
|
> 적은 글이라, 지금 이름으로 고쳐 놓으면 그 시절에 그 이름으로 받은 사람이
|
|
8
8
|
> 제 이야기를 못 찾는다.
|
|
9
9
|
|
|
10
|
+
## 0.352.0 — 알림 문자 칸 · 문자 바이트를 재는 자 (314)
|
|
11
|
+
|
|
12
|
+
사장님 지시(2026-10-21, 말귀 청 (314)): *"sms 도 이메일처럼 디자인 시스템 페이지에서
|
|
13
|
+
카테고리 추가해서 항목별로 볼 수 있도록"*.
|
|
14
|
+
|
|
15
|
+
### 왜 — 흩어진 글은 어긋나도 안 보인다
|
|
16
|
+
|
|
17
|
+
말귀가 보내는 문자 글이 **여섯 파일에 흩어져** 있었다. 그래서 방문 알림만 머리말이
|
|
18
|
+
`[기관명]` 으로 다른 것을(나머지 일곱은 `[말귀]`) **다음 날에야** 알았다. 한자리에 모으면
|
|
19
|
+
그 자리에서 보인다 — 지금은 **열 통이 모두 `[말귀]`** 다.
|
|
20
|
+
|
|
21
|
+
### 재는 자는 코어가 — 같은 셈이 두 벌이 되지 않게
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
eucKrBytes(text) 한글 2 · ASCII 1 · 줄바꿈 2
|
|
25
|
+
smsTypeFor(text) 'SMS' | 'LMS'
|
|
26
|
+
measureSmsText(text) { bytes, type, limit, over }
|
|
27
|
+
SMS_BYTE_LIMIT 90 · LMS_BYTE_LIMIT 2000
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**90바이트**가 단문(18원)과 장문(45원)을 가르는데 한글이 2바이트라 **글자 수로는 가늠이
|
|
31
|
+
안 된다**(45자가 90바이트). 말귀가 같은 셈을 들고 있어 **한 결정이 두 곳에 적힐 자리**였다 —
|
|
32
|
+
그쪽이 제 것을 걷고 이것을 쓴다. 그래서 **뜻이 한 글자도 다르면 안 되고**, 못이 그쪽 값을
|
|
33
|
+
그대로 박았다(`test/smsBytes.test.ts`).
|
|
34
|
+
|
|
35
|
+
> 참 EUC-KR 인코더가 아니라 **그 자가 재는 값을 흉내 낸 셈**이다. `\r\n` 이 든 글은 4로
|
|
36
|
+
> **크게** 잡는데, 크게 잡는 쪽은 안전하다(단문에 들 것을 장문으로 보낼 뿐 잘리지 않는다).
|
|
37
|
+
> 두 자리 다 말귀가 쓰던 셈 그대로이고, 고치려면 **양쪽을 같은 날 고친다.**
|
|
38
|
+
|
|
39
|
+
### 받아서 그리는 블록 — `NotifyTextPreview`
|
|
40
|
+
|
|
41
|
+
문자 본문과 알림톡 본문을 나란히 두고 문자 쪽에 바이트와 갈래를 적는다. 한계를 넘으면
|
|
42
|
+
**색만이 아니라 글로도** 말한다(`한계 넘음`).
|
|
43
|
+
|
|
44
|
+
**글은 쓰는 쪽이 넘긴다.** 코어가 문안을 들고 있으면 반드시 낡으므로, 코어가 쥐는 것은
|
|
45
|
+
재는 자와 그리는 꼴뿐이다. 곁말은 `meta` 로 **이름·값 짝**을 받는다 — `to`·`when` 처럼
|
|
46
|
+
칸을 박으면 *"보내는 함수"* 나 *"알림톡 환경변수"* 를 적을 자리가 없다.
|
|
47
|
+
|
|
48
|
+
### 놀이터 — eMail 과 같은 꼴
|
|
49
|
+
|
|
50
|
+
메뉴에 **SMS** 묶음을 더하고 **갈래마다 한 줄**(열 통). `Components` 묶음 **밖**에 둔다 —
|
|
51
|
+
코어가 그리는 조각이 아니라 앱이 보내는 글이고, 섞으면 *"이것도 코어가 그린다"* 로 읽힌다.
|
|
52
|
+
한 쪽에 쌓지 않는 것도 메일 쪽에서 배운 것이다(쌓으면 메뉴에 한 줄만 서서 열어 봐야 안다).
|
|
53
|
+
|
|
54
|
+
열 통이 지금은 다 단문인데 **`인증번호 (보호자 동의)` 가 89바이트**로 한 칸 남았다 —
|
|
55
|
+
글을 한 자만 늘려도 값이 두 배가 된다. 그 수가 쪽마다 적힌다.
|
|
56
|
+
|
|
57
|
+
### 세우며 겪은 것
|
|
58
|
+
|
|
59
|
+
- **없는 CSS 토큰**(`--color-lightWhite`)을 적었다. 없는 변수는 **조용히 아무 꼴도 안 낸다** —
|
|
60
|
+
쓰는 변수 여섯을 `tokens.css` 와 대조해 잡았다. 지난 판의 `--font-label-m` 과 같은 흠이다.
|
|
61
|
+
- 놀이터 조각들의 프롭을 **짐작으로** 적었다(`PageParagraph.text`·`CodeBox.code`·`ApiMeta.name`).
|
|
62
|
+
넷이 타입에서 걸렸고, **참 꼴을 읽고** 고쳤다.
|
|
63
|
+
- `headingFamily` 못이 박아 둔 `<h4>` 를 잡았다 — 담는 것 안에 서는 블록이라 `titleLevel` 을
|
|
64
|
+
열었다(`ChartSection` 과 같은 규약).
|
|
65
|
+
|
|
66
|
+
## 0.351.0 — 체크박스를 누르면 폰에서 창이 맨 위로 튀던 것
|
|
67
|
+
|
|
68
|
+
### 체크박스를 누르면 폰에서 창이 맨 위로 튀던 것
|
|
69
|
+
|
|
70
|
+
사장님 신고(2026-10-20) · 말귀가 **실제 폰에서 재현하고 자리까지 짚어** 왔다. 가입 창의
|
|
71
|
+
동의 칸을 누르면 창이 맨 위로 튀었다.
|
|
72
|
+
|
|
73
|
+
`.checkbox__input` 은 진짜 `<input>` 을 **1px 로 숨기고**(`position: absolute` · `clip`) 곁의
|
|
74
|
+
그림을 대신 그린다 — 자판과 읽어 주기가 살아 있으려면 칸을 지우면 안 되기 때문이다.
|
|
75
|
+
그런데 감싸개 `.checkbox` 에 `position` 이 없어 그 칸이 **가장 가까운 자리 잡힌 조상**,
|
|
76
|
+
즉 **창의 스크롤 통**에 매였다. 이름표를 누르면 숨은 칸이 초점을 받고 브라우저가 그것을
|
|
77
|
+
보이려 거기로 굴린다.
|
|
78
|
+
|
|
79
|
+
**브라우저로 견줬다** — 놀이터의 체크박스 셋:
|
|
80
|
+
|
|
81
|
+
| | 고치기 전 | 고친 뒤 |
|
|
82
|
+
|---|---|---|
|
|
83
|
+
| 감싸개 `position` | `static` | `relative` |
|
|
84
|
+
| 숨은 칸의 `offsetParent` | **`main.playground-content`**(스크롤 통) | **`label.checkbox`** |
|
|
85
|
+
| `offsetTop` | 4916 · 5072 · 9142 | 84 · 52 · 21 |
|
|
86
|
+
|
|
87
|
+
`offsetParent` 가 바로 "가장 가까운 자리 잡힌 조상" 이라 이것을 물으면 눈으로 재는 것보다
|
|
88
|
+
또렷하다(쪽이 3만px 라 `scrollIntoView` 로는 굴림이 안 멎어 흔들렸다).
|
|
89
|
+
|
|
90
|
+
**`.radio`·`.toggle` 은 진작 `position: relative` 를 갖고 있었고 `.checkbox` 만 빠져 있었다.**
|
|
91
|
+
같은 꼴로 숨기는 자리가 여섯인데, **초점을 받는 것은 입력칸 셋뿐**이다(나머지는 읽어 주기용
|
|
92
|
+
글이라 초점을 안 받아 안 튄다). `.word-table-cell__score-slot` 은 단추가 들지만 조상
|
|
93
|
+
(`.word-table-cell`)이 자리를 잡고 있어 멀쩡하다.
|
|
94
|
+
|
|
95
|
+
**못을 세웠다** — `test/hiddenInputNeedsAnchor1020.test.ts`. CSS 를 글자가 아니라 postcss 로
|
|
96
|
+
파서, 숨기는 규칙(`position: absolute` + 눈에서 치우는 표시)을 찾고 그 **감싸개가 자리를
|
|
97
|
+
잡았는지** 본다. 이 꼴은 **터지지도 울지도 콘솔에 남지도 않고 화면만 튄다** — 눈으로만 잡힌다.
|
|
98
|
+
`.checkbox` 와 `.radio` 양쪽에서 `position` 을 빼어 둘 다 자리를 또박또박 짚는 것을 봤다.
|
|
99
|
+
|
|
100
|
+
앱이 `src/app/App.css` 에 임시로 덮어 둔 것은 이 판을 받으면 걷으면 된다.
|
|
101
|
+
|
|
102
|
+
**새 시험에 한글 이름을 또 썼다**(`못짚음`·`뜬것`) — `identifiersAreEnglish1013` 이 울렸다.
|
|
103
|
+
집안 규약은 시험에도 걸리는데 **같은 자리에서 세 번째다.** 다음부터는 시험을 쓴 뒤 담기 전에
|
|
104
|
+
그 문을 먼저 돌린다 — 관문 한 바퀴(10분)를 거기에 쓸 까닭이 없다.
|
|
105
|
+
|
|
10
106
|
## 0.350.0 — `DatePicker` 를 손으로 치고, `PanelRowText` 가 마디를 받는다
|
|
11
107
|
|
|
12
108
|
### `DatePicker` 연·월 — 가운데로 모으고, 1900년까지 연다
|