@ihabdevteam/core 0.201.0 → 0.203.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 +93 -0
- package/dist/components.cjs.js +177 -174
- package/dist/components.esm.css +2 -2
- package/dist/hooks.cjs.js +1 -1
- package/dist/i18n.cjs.js +1 -1
- package/dist/ihabdevteam-core.cjs.js +184 -181
- package/dist/ihabdevteam-core.d.ts +52 -3
- package/dist/packages/core/src/components/Word/WordTableBlock.d.ts +1 -1
- package/dist/packages/core/src/components/Word/WordTableBlock.js +11 -4
- package/dist/packages/core/src/components/Word/wordTableBlockTypes.d.ts +28 -0
- package/dist/packages/core/src/components/Word/wordTablePrint.js +4 -1
- package/dist/packages/core/src/components/WordTable.css +60 -2
- package/dist/packages/core/src/components/WordTable.d.ts +22 -1
- package/dist/packages/core/src/components/WordTable.js +7 -3
- package/dist/packages/core/src/version.d.ts +1 -1
- package/dist/packages/core/src/version.js +1 -1
- package/dist/utils.cjs.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,95 @@ All notable changes to this project will be documented in this file.
|
|
|
7
7
|
> 적은 글이라, 지금 이름으로 고쳐 놓으면 그 시절에 그 이름으로 받은 사람이
|
|
8
8
|
> 제 이야기를 못 찾는다.
|
|
9
9
|
|
|
10
|
+
## 0.203.0
|
|
11
|
+
|
|
12
|
+
### 더해짐 — `WordTableBlock` 도 `renderCellAction` 을 받는다 (말귀 요청 ㉓)
|
|
13
|
+
|
|
14
|
+
0.202.0 의 `renderCellAction` 을 `WordTable` 에만 냈더니 **청한 쪽 자리에 안 닿았다.**
|
|
15
|
+
사람이 단추를 원한 칸은 `WordTableBlock` 이 그리는 표였는데, 그 블록이 이 프롭을 받지도
|
|
16
|
+
안쪽 표에 넘기지도 않았다. 청하는 글에 "미리 본 표" 라고만 적혀 있었고 그 사이 그 표가
|
|
17
|
+
다른 컴포넌트로 바뀌어 있었다 — **어느 컴포넌트인지 서로 확인하지 않은 값**이다.
|
|
18
|
+
|
|
19
|
+
그대로 넘기되 **칸 번호에 쪽 몫을 더한다.** 쪽이 나뉘면 안쪽 표는 제 쪽 안의 번호(0부터)를
|
|
20
|
+
주는데, 그대로 흘리면 **둘째 쪽 첫 칸이 0** 이 되어 부르는 쪽이 첫 쪽 첫 칸을 건드린다 —
|
|
21
|
+
아무 데서도 안 터지고 엉뚱한 칸이 바뀐다. `onReorder` 가 쓰던 셈(`+ i * itemsPerPage`)과
|
|
22
|
+
같다. 부르는 쪽은 쪽이 몇으로 나뉘었는지 몰라도 된다.
|
|
23
|
+
|
|
24
|
+
편집 모드에는 안 간다 — 얹을 항목이 없다.
|
|
25
|
+
|
|
26
|
+
### 고침 — 쪽 번호가 마지막 칸을 가렸다 (말귀 요청 ㉒)
|
|
27
|
+
|
|
28
|
+
`1 / 2` 가 **마지막 칸 위에 겹쳐** 있었다(실측 2026-09-27: 번호 y 570~592, 마지막 칸
|
|
29
|
+
y 262~601). `bottom: 8px` 이 양수라 격자 **안**에 머물렀는데, 격자는 종이 안쪽을 꽉 채우므로
|
|
30
|
+
(`height: 100%`) 거기에는 번호가 설 자리가 애초에 없다.
|
|
31
|
+
|
|
32
|
+
**밖으로 옮길 수는 없었다.** 인쇄가 베끼는 것이 그 격자다(`contentRef` 가 가리키는 요소를
|
|
33
|
+
통째로 복사해 인쇄 문서에 넣는다). 격자 밖 요소로 내면 화면에서는 제자리를 찾지만 **종이에서
|
|
34
|
+
번호가 사라진다.**
|
|
35
|
+
|
|
36
|
+
그래서 **자리만 밖으로 냈다** — 격자의 자식으로 두되 `bottom` 을 음수로 주어 종이 아래 여백
|
|
37
|
+
(57px) 안에 앉힌다. 칸 높이는 한 픽셀도 안 바뀐다(격자 상자를 안 건드렸다).
|
|
38
|
+
|
|
39
|
+
재 본 것 — 화면: 번호가 격자 아래로 7px, 종이 끝까지 30px, **겹친 칸 0**. 인쇄 꼴(격자를
|
|
40
|
+
`padding: 57px` 짜리 종이 통에 넣어 재현): 번호 보임, 종이 안, **겹친 칸 0**. 둘이 함께여야
|
|
41
|
+
하는 건이라 둘 다 쟀다.
|
|
42
|
+
|
|
43
|
+
## 0.202.0
|
|
44
|
+
|
|
45
|
+
### 더해짐 — `WordTable` 의 `renderCellAction` (말귀 요청 ⑳)
|
|
46
|
+
|
|
47
|
+
칸 오른쪽 위에 **부르는 쪽이 제 것을 얹는 자리**다. 칸 번호와 그 칸의 항목을 받고, 돌려준
|
|
48
|
+
것이 거기 그려진다.
|
|
49
|
+
|
|
50
|
+
```tsx
|
|
51
|
+
<WordTable
|
|
52
|
+
items={문제들}
|
|
53
|
+
renderCellAction={(i, item) => (
|
|
54
|
+
<Button size={40} type="dot" icon="refresh-cw" ariaLabel={`${i + 1}번 칸 바꾸기`}
|
|
55
|
+
onClick={() => 그칸만바꾸기(item.id)} />
|
|
56
|
+
)} />
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**까닭** — 표 전체를 다시 고르는 길만 있으면(`onReshuffle` 을 쥔 화면) 여덟 칸 중 하나가
|
|
60
|
+
마음에 안 들어도 **나머지 일곱이 함께 바뀐다.** 치료사가 고른 것을 잃는다. 기존 손잡이로는
|
|
61
|
+
안 되던 자리다: `onRemoveItem`·`onRemoveCell` 은 칸을 비우고, `onActivateCell` 은 빈 칸에만
|
|
62
|
+
오고, `onReorder` 는 자리만 바꾼다.
|
|
63
|
+
|
|
64
|
+
**동작이 아니라 그리는 자리를 받는다.** 그 모서리의 뜻이 화면마다 다르다 — 한 곳은
|
|
65
|
+
'다른 쌍으로', 다른 곳은 '이 낱말만 빼기' 일 수 있다. 무엇을 그릴지는 부르는 쪽이 알고,
|
|
66
|
+
표는 **어디에 놓을지**만 안다:
|
|
67
|
+
|
|
68
|
+
- **자리**: 칸 오른쪽 위. 빼기(`onRemoveItem`)가 함께 서면 **한 줄로 나란히** 서고 지우는 것이
|
|
69
|
+
오른쪽 끝이다(`ItemActions` 와 같은 차례). 각자 `position: absolute` 로 두면 그대로 겹친다.
|
|
70
|
+
- **드러나는 때**: 칸에 손을 얹거나 초점이 들어올 때 — 재생·정보·빼기와 같은 규칙. hover 가
|
|
71
|
+
없는 기기에서는 늘 보인다.
|
|
72
|
+
- **인쇄에는 안 나온다** — 화면 인쇄(`@media print`)와 인쇄 창(`wordTablePrint`) **두 길 모두**에서
|
|
73
|
+
치운다. 만드는 동안만 쓰는 손잡이다.
|
|
74
|
+
|
|
75
|
+
**표시 모드(`items`)에만 있다** — 편집 모드(`cells`)에는 얹을 항목이 없다.
|
|
76
|
+
|
|
77
|
+
**코어가 가져가는 CSS 클래스 이름** — `word-table-block__card-actions`(그 한 줄).
|
|
78
|
+
`word-table-block__card-close` 는 그대로다 — 줄 안에 들면 제 자리를 줄에 맡기고, 편집 모드에서는
|
|
79
|
+
지금까지처럼 혼자 선다.
|
|
80
|
+
|
|
81
|
+
### 더해짐 — `WordTableBlock` 의 `initialItemsPerPage` (말귀 요청 ㉑)
|
|
82
|
+
|
|
83
|
+
'페이지당 개수' 로 **들어설 때 골라져 있을 값**이다. 안 주면 지금까지처럼 8, `'all'` 이면
|
|
84
|
+
한 쪽에 전부.
|
|
85
|
+
|
|
86
|
+
한 쪽에 다 담는 길은 이미 있었다 — 고르개 첫 칸이 늘 항목 수 그대로이고
|
|
87
|
+
`itemsPerPageFromChoice` 가 그것을 무한대로 기억한다. 막혀 있던 것은 **처음 값**(`useState(8)`)
|
|
88
|
+
뿐이라, 열두 낱말짜리 표를 만들어 놓고도 늘 여덟씩 두 쪽으로 시작했다. "열두 개짜리 표를
|
|
89
|
+
만든다" 고 말해 놓고 두 쪽을 내밀어, 사람이 매번 `12개` 를 다시 눌렀다.
|
|
90
|
+
|
|
91
|
+
**처음 값이지 매인 값이 아니다.** 들어설 때 한 번만 읽고 그 뒤 사람이 고른 것을 덮지 않는다 —
|
|
92
|
+
밖에서 계속 밀어 넣는 꼴이면 사람이 고른 쪽을 앱이 도로 바꿔 버린다.
|
|
93
|
+
|
|
94
|
+
> **개수가 도중에 바뀌는 화면이면 `'all'` 을 준다.** 그러면 설정이 "전부" 로 남아 있어 낱말이
|
|
95
|
+
> 8개든 12개든 그때그때 한 쪽으로 선다. 숫자를 주면 그 숫자에 못 박히므로, 화면이 열린 채
|
|
96
|
+
> 수가 늘면 늘어난 만큼이 다음 쪽으로 넘어간다 — 이 프롭은 나중에 바꿔도 안 따라가니
|
|
97
|
+
> 숫자로는 그 자리를 못 푼다.
|
|
98
|
+
|
|
10
99
|
## 0.201.0
|
|
11
100
|
|
|
12
101
|
### 고침 — 펼친 태블릿 레일이 넓은 화면과 달랐다 (사장님 지시 2026-09-27)
|
|
@@ -90,6 +179,10 @@ GoTrue 의 `BroadcastChannel` 은 저장소 종류와 무관하게 세션 이벤
|
|
|
90
179
|
> 제자리에 있다. **죽은 코드가 아니라 아직 안 부르는 것이다.**
|
|
91
180
|
|
|
92
181
|
**사전에 더한 것** — `common.discardConfirm.title` · `.body` · `.confirm`(ko · en).
|
|
182
|
+
같은 열쇠를 들고 있던 소비자는 제 사전에서 빼야 코어 문장이 산다. **열쇠만 빼면 안 된다** —
|
|
183
|
+
`t()` 의 되짚을 값이 한국어라 영어 화면에 한글이 뜬다(아무 데서도 안 터지고 한국어 화면은
|
|
184
|
+
멀쩡하다). 부르는 자리를 이 훅으로 옮기면 그 부름이 코어 안으로 들어가 두 언어가 다 산다.
|
|
185
|
+
말귀가 이 자리를 `i18nOwnership` 으로 잡았다(2026-09-27) — 자세한 것은 CONSUMING.md.
|
|
93
186
|
|
|
94
187
|
### 더해짐 — `useListControls`
|
|
95
188
|
|