@ihabdevteam/core 0.134.0 → 0.136.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 +133 -0
- package/dist/components.cjs.js +177 -177
- package/dist/components.esm.css +2 -2
- package/dist/hooks.cjs.js +1 -1
- package/dist/i18n.cjs.js +3 -3
- package/dist/ihabdevteam-core.cjs.js +182 -182
- package/dist/ihabdevteam-core.d.ts +19 -3
- package/dist/packages/core/src/components/Alert.js +1 -1
- package/dist/packages/core/src/components/BarChart.js +3 -1
- package/dist/packages/core/src/components/Button.css +5 -0
- package/dist/packages/core/src/components/Button.js +3 -3
- package/dist/packages/core/src/components/Checkbox.js +10 -2
- package/dist/packages/core/src/components/CodeBox.js +2 -1
- package/dist/packages/core/src/components/Effect/EffectPartyPopper.js +2 -0
- package/dist/packages/core/src/components/IconGridMenu.js +25 -22
- package/dist/packages/core/src/components/Popup/ConfirmPopup.js +34 -21
- package/dist/packages/core/src/components/Popup/CouponInputPopup.js +4 -1
- package/dist/packages/core/src/components/Popup/ListPopup.js +10 -3
- package/dist/packages/core/src/components/Popup/LoadTablePopup.js +6 -5
- package/dist/packages/core/src/components/Popup/Popup.css +9 -0
- package/dist/packages/core/src/components/Popup/Popup.d.ts +9 -1
- package/dist/packages/core/src/components/Popup/Popup.js +2 -2
- package/dist/packages/core/src/components/Popup/SaveTablePopup.js +13 -3
- package/dist/packages/core/src/components/Popup/TrainingResultPopup.js +5 -1
- package/dist/packages/core/src/components/Popup/customerDetailUtils.js +5 -3
- package/dist/packages/core/src/components/ProgressBar.js +5 -2
- package/dist/packages/core/src/components/ProgressIndicator.js +6 -1
- package/dist/packages/core/src/components/Rating.js +3 -1
- package/dist/packages/core/src/components/Report/ReportDocument.js +35 -10
- package/dist/packages/core/src/components/RingChart.js +14 -3
- package/dist/packages/core/src/components/SideNav.js +6 -3
- package/dist/packages/core/src/components/SplashLogo.js +1 -2
- package/dist/packages/core/src/components/StatChart.js +1 -1
- package/dist/packages/core/src/components/Table.js +15 -5
- package/dist/packages/core/src/components/Tooltip/TrainingTooltip.js +6 -5
- package/dist/packages/core/src/components/Training/TrainingBlockButton.css +57 -0
- package/dist/packages/core/src/components/Training/TrainingBlockButton.js +8 -4
- package/dist/packages/core/src/components/Training/TrainingPagePopup.js +28 -2
- package/dist/packages/core/src/components/Training/TrainingPagePopupTitle.js +2 -1
- package/dist/packages/core/src/components/Training/TrainingStepCard.js +4 -3
- package/dist/packages/core/src/components/Training/TrainingStepCardOrder.js +36 -26
- package/dist/packages/core/src/components/Training/TrainingStepOrderList.js +11 -7
- package/dist/packages/core/src/components/Training/TrainingStepTextBox.js +7 -4
- package/dist/packages/core/src/components/Training/TrainingStepTitle.js +4 -1
- package/dist/packages/core/src/components/Training/TrainingWordCard.js +4 -0
- package/dist/packages/core/src/components/Training/WordTablePopup.js +9 -3
- package/dist/packages/core/src/components/Training/trainingBlockButtonTypes.d.ts +3 -1
- package/dist/packages/core/src/components/Training/trainingMissStats.js +9 -2
- package/dist/packages/core/src/components/Word/WordTableBlock.js +7 -3
- package/dist/packages/core/src/components/Word/WordTableButton.js +3 -0
- package/dist/packages/core/src/components/Word/useWordTableDisplaySettings.js +5 -1
- package/dist/packages/core/src/components/Word/wordScoreStats.js +7 -2
- package/dist/packages/core/src/components/Word/wordTablePrint.js +15 -2
- package/dist/packages/core/src/components/barChartData.d.ts +8 -0
- package/dist/packages/core/src/components/barChartData.js +21 -0
- package/dist/packages/core/src/components/buttonTypes.d.ts +6 -0
- package/dist/packages/core/src/components/useBarChartControl.js +5 -3
- package/dist/packages/core/src/components/useCalendarMonth.js +15 -17
- package/dist/packages/core/src/components/useToastLifecycle.js +7 -2
- package/dist/packages/core/src/context/I18nProvider.js +12 -3
- package/dist/packages/core/src/hooks/useDailyTrainingSelection.js +17 -1
- package/dist/packages/core/src/hooks/useEditableList.d.ts +6 -0
- package/dist/packages/core/src/hooks/useEditableList.js +20 -1
- package/dist/packages/core/src/hooks/useSoundCompassExam.js +13 -2
- package/dist/packages/core/src/hooks/useTablePaging.js +4 -0
- package/dist/packages/core/src/hooks/useVisitHistory.js +2 -2
- package/dist/packages/core/src/hooks/useVisitSchedule.js +5 -4
- package/dist/packages/core/src/hooks/useWordMeanings.js +13 -4
- package/dist/packages/core/src/i18n/locales/en.json +3 -1
- package/dist/packages/core/src/i18n/locales/ko.json +3 -1
- package/dist/packages/core/src/utils/date.js +26 -5
- package/dist/packages/core/src/utils/getTrainingData.js +11 -4
- package/dist/packages/core/src/utils/imageConfig.js +6 -3
- package/dist/packages/core/src/utils/speak.js +23 -3
- package/dist/packages/core/src/utils/textSort.js +12 -1
- package/dist/packages/core/src/utils/ttsConfig.js +10 -8
- package/dist/packages/core/src/utils/wordTrainingRuntime.d.ts +1 -1
- package/dist/packages/core/src/utils/wordTrainingRuntime.js +11 -4
- package/dist/packages/core/src/version.d.ts +1 -1
- package/dist/packages/core/src/version.js +1 -1
- package/dist/utils.cjs.js +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,139 @@ All notable changes to this project will be documented in this file.
|
|
|
7
7
|
> 적은 글이라, 지금 이름으로 고쳐 놓으면 그 시절에 그 이름으로 받은 사람이
|
|
8
8
|
> 제 이야기를 못 찾는다.
|
|
9
9
|
|
|
10
|
+
## 0.136.0
|
|
11
|
+
|
|
12
|
+
5차 검수 판이다 — 이번에는 아직 깊이 안 본 곳(context·i18n·유틸, 입력·표시 컴포넌트, 팝업·툴팁·단어표 도구, 훈련 단계)을
|
|
13
|
+
훑어 **재현된** 결함만 고쳤다. 항목마다 시험을 붙이고 고친 줄을 되돌리면 붉어지는 것을 확인했다. 말귀가 앱에서 덮어쓰던
|
|
14
|
+
규칙을 코어 prop 으로 가져왔다. 걷은 prop·타입·열쇠는 없다. 사전 열쇠 `training.selectInOrder` 를 더했다.
|
|
15
|
+
|
|
16
|
+
### 소비자에게 먼저
|
|
17
|
+
|
|
18
|
+
- **칸순**(ListPopup 정렬): 글자 안의 숫자도 수로 견준다 — `'회차 9'` 가 `'회차 10'` 앞에 선다(전에는 뒤). 숫자 칸과
|
|
19
|
+
숫자로 시작하는 글자 칸이 섞이면 차례가 돌아(`'9'<'10'`·`'10'<'10분'`·`'10분'<'9'`) 들어온 차례에 따라 결과가 달랐다.
|
|
20
|
+
- **ProgressBar** `max=0`: 라벨 `"0 / 0"`·`aria-valuemax=0`(전에는 `"0 / 1"`).
|
|
21
|
+
- **ProgressIndicator** `announce`: 알림 자리 안에 눈에 안 보이는 글자로 단계를 적고 aria-label 은 달지 않는다.
|
|
22
|
+
- **StatChart** 누르는 카드 이름에 증감이 붙는다(`"오늘 방문 7 +3"`).
|
|
23
|
+
- **formatDuration**: 초로 반올림한다(`90.5` → `"1분 31초"`, 0.5초 미만은 `'-'`).
|
|
24
|
+
- **tableTrends**: 매긴 칸이 하나도 없는 기록은 흐름에서 뺀다(모두 비면 그 표는 결과에 없다).
|
|
25
|
+
- **날짜 형식 함수**(`formatDateKo`·`formatDateLongKo`·`formatDatetimeKo`·`formatDateLocale`·`formatDateLongLocale`): 못 읽는 값이면
|
|
26
|
+
`"Invalid Date"` 대신 빈 글자.
|
|
27
|
+
- **IconGridMenu** 제어 모드: prop 을 그대로 그린다 — 누르면 onSelect 만 부르고, 부모가 값을 안 바꾸면 화면도 그대로다.
|
|
28
|
+
|
|
29
|
+
### 더함 (말귀 요청)
|
|
30
|
+
|
|
31
|
+
- **Popup `layer`**: `'modal'`(기본) | `'belowPagePopup'` — 훈련 페이지 팝업 바로 아래 층(`--z-page-popup` - 1).
|
|
32
|
+
- **Popup `size`**: `'xlarge'`(1320px, 폭 화면 - 80px) · `'fit'`(내용 폭, 최소 min(480px, 화면-40px)·최대 min(1140px, 화면-40px)).
|
|
33
|
+
- **TrainingBlockButton `size="row"`**: 전체 너비 가로 행 [아이콘][유형·제목][문항수], 미리 듣기 없음 — 좁은 화면 목록용.
|
|
34
|
+
- **Button `tooltipOnly`**: 툴팁만 보여 주는 칩 — 커서만 기본 화살표(모양·포커스·툴팁 그대로, `disabled` 와 다름).
|
|
35
|
+
|
|
36
|
+
### 바뀜 — 입력·표시
|
|
37
|
+
|
|
38
|
+
- **Checkbox**: `indeterminate` 가 누르는 순간 풀려(브라우저가 DOM 속성을 끔) prop 이 그대로 true 여도 빈 칸으로 남았다.
|
|
39
|
+
- **IconGridMenu**: 비제어에서 카테고리가 늦게 오면 첫 항목이 안 골라졌고, StrictMode 에서 첫 알림이 두 번.
|
|
40
|
+
- **SplashLogo**: `onDone` 이 나중에 들어오면 타이머가 끝내 안 걸려 스플래시가 남았다.
|
|
41
|
+
- **Rating**: 소수 값이 모두 반 별로 그려져 4.1 과 4.9 가 같았다 — 값만큼 채운다.
|
|
42
|
+
- **CodeBox**: `language` 가 'sh' 를 품기만 해도(csharp) 셸로 읽었다.
|
|
43
|
+
- **Alert**: `message=""` 면 children 이 가려 빈 칸.
|
|
44
|
+
- **useCalendarMonth**: 한 핸들러에서 `prevMonth` 를 두 번 부르면 (2026, -1).
|
|
45
|
+
- **Toast**: 마우스·포커스로 멈춘 채 문구가 바뀌면 읽는 알림이 손 밑에서 사라졌다.
|
|
46
|
+
- **SideNav**: `appMode` 를 안 주면 여기만 매니저로 봐 Header·BottomNav 와 반대 방향 전환 단추를 띄웠다.
|
|
47
|
+
- **ListPopup**: 고른 행 표시가 열 className(맞춤·폭)을 덮었다.
|
|
48
|
+
- **Button**: `onDisabledClick` 을 준 막힌 단추에 `aria-disabled` 가 안 붙었다.
|
|
49
|
+
|
|
50
|
+
### 바뀜 — 훈련
|
|
51
|
+
|
|
52
|
+
- **useSoundCompassExam**: 수가 같은 다른 배치로 바꾸면 다시 시작하지 않아 무엇을 골라도 오답이었다. 한 대기에서 고르기가
|
|
53
|
+
두 번 불리면 점수 +2.
|
|
54
|
+
- **TrainingStepCard**: 따로 쓴 단계에서 '모두 듣기' 가 소리 없이 끝났다.
|
|
55
|
+
- **TrainingStepCardOrder**: StrictMode 에서 onChange·onDone 두 번, 풀 때 onChange 없음, 낱말에 '|' 가 있으면 못 끝냄, 기본
|
|
56
|
+
제목 한국어 고정.
|
|
57
|
+
- **TrainingStepTitle**: 키보드로 누른 '모두 듣기' 가 재생 중 막히며 초점이 body 로 빠졌다.
|
|
58
|
+
- **TrainingStepTextBox**: 펼쳐 둔 상자에서 다음 문제로 넘어가면 한 틱 동안 새 문장(정답)이 드러났다.
|
|
59
|
+
- **TrainingPagePopupTitle**: title 이 비고 depth 가 없으면 subtitle 이 두 줄.
|
|
60
|
+
- **TrainingTooltip**: 영어에서도 훈련 유형 머리글이 한국어.
|
|
61
|
+
- **summarizeMisses**: A→B→A 로 풀면 복습이 가장 최근 세트 대신 옛 세트로 짜였다.
|
|
62
|
+
- **WordTablePopup `autoPrint`**: StrictMode·100ms 안 인쇄 설정 변경에서 한 번도 안 떴다.
|
|
63
|
+
- **EffectPartyPopper**: 첫 틀이 조각 지연보다 이르면 한 조각도 안 나고 곧바로 끝났다.
|
|
64
|
+
|
|
65
|
+
### 바뀜 — 단어표·팝업·유틸
|
|
66
|
+
|
|
67
|
+
- **LoadTablePopup**: 저장소의 표 하나가 `savedAt`·`words` 가 없으면 팝업 전체가 렌더 중에 터졌다. 영어에서도 "N개".
|
|
68
|
+
- **WordTableButton**: 카드 안 '더보기'·게시자 단추에서 Enter/Space 가 카드를 열었다.
|
|
69
|
+
- **WordTableBlock·useWordTableDisplaySettings**: 페이지당 개수 '전체' 를 고른 뒤 항목이 늘면 선택지에 없는 값이 남았다.
|
|
70
|
+
- **printWordTableElements**: iframe 인쇄 뒤 탭 제목이 표 이름으로 남을 수 있었고, 다음 인쇄가 그것을 원래 제목으로 잡았다.
|
|
71
|
+
- **checkAudioExists**: 서버 오류(5xx)를 '음성 없음' 으로 영구 캐시했다. 비운 뒤 늦게 실패한 옛 요청이 새 확인을 지웠다.
|
|
72
|
+
- **speak·stopSpeaking**: 목소리 목록이 비었을 때 부른 말이 줄을 서고 멈추지 않았고, 목록이 끝내 안 오면 onEnd 가 안 불렸다.
|
|
73
|
+
- **I18nProvider**: `locale="en-US"` 이면 한국어로 떨어지고 context 는 `'en-US'` 로 남았다.
|
|
74
|
+
|
|
75
|
+
### 고치지 않은 것 — 결정·확인이 필요하다
|
|
76
|
+
|
|
77
|
+
- `saveTable`·`updateSavedTable`·`duplicateTable` 은 저장소 쓰기가 실패해도 성공처럼 돌려준다 — 반환 타입을 바꿔야 한다.
|
|
78
|
+
- 오프셋 없는 시각 문자열(`normalizeDate`·`formatYmd`)이 기기 시간대를 따른다.
|
|
79
|
+
- `reviewTableName`: '수업 3차' 의 첫 복습과 '수업' 의 3차 복습이 같은 이름이다(이름만으로는 가를 수 없다).
|
|
80
|
+
- `weakItems`: 동형어가 저장 labels 에 번호가 없어 합쳐진다.
|
|
81
|
+
- Board 의 빈 목록 기본 문구가 한국어 고정(서버 렌더 호환이라 hook 을 안 쓴다).
|
|
82
|
+
- Rating 조작 모드에 소수 `value` 를 주면 화살표가 3.5 를 낸다.
|
|
83
|
+
- ConfirmPopup: onConfirm 거절이 처리되지 않은 거절로 올라간다(삼키면 오류 추적에서 사라진다).
|
|
84
|
+
|
|
85
|
+
## 0.135.0
|
|
86
|
+
|
|
87
|
+
3차·4차 검수 판이다 — 훈련 단계 UI·차트·리포트·팝업·방문 훅을 훑어 **재현된** 결함만 고쳤다. 항목마다 시험을 붙이고 고친 줄을
|
|
88
|
+
되돌리면 붉어지는 것을 확인했다. 걷은 prop·타입·열쇠는 없다. 사전 열쇠 `wordTable.save.copyName` 을 더했다.
|
|
89
|
+
|
|
90
|
+
### 소비자에게 먼저
|
|
91
|
+
|
|
92
|
+
- **문장 순서화(92b71ac 되돌림)**: 끝낸 단계에서도 옮기기 단추·끌어놓기가 열린다. 옮기면 onChange 로 점수가 따라간다.
|
|
93
|
+
그 결정을 굳혀 둔 코어 시험 둘을 까닭과 함께 고쳤다.
|
|
94
|
+
- **useEditableList**(방문 훅): 비지 않은 **같은 id** 면 다른 객체여도 같은 항목으로 본다(지우기·고른 항목 옮기기). id 가 없으면
|
|
95
|
+
전과 같이 참조로 견준다.
|
|
96
|
+
- **훈련 결과 창**: 어두운 바탕을 눌러도 닫히지 않는다(완료·다시하기·Esc 로 닫는다).
|
|
97
|
+
- 나머지는 API 그대로다 — 소비자 코드 수정은 필요 없다.
|
|
98
|
+
|
|
99
|
+
### 바뀜 — 훈련
|
|
100
|
+
|
|
101
|
+
- **문장 순서화**: 카드를 한 번 옮기는 순간(첫 이동의 onDone 이 단계를 넘긴다) 단추·끌어놓기가 모두 사라져 **끝까지 맞출 수 없었다.**
|
|
102
|
+
- **TrainingWordCard**: 카드 안 '소리 듣기' 에서 Enter·Space 를 누르면 소리 대신 **그 카드가 답으로** 골라졌다.
|
|
103
|
+
- **TrainingBlockButton**: '더보기'·'미리 듣기' 에서 누른 Enter 를 가로채 훈련 팝업을 열었다(메뉴를 키보드로 못 엶).
|
|
104
|
+
- **TrainingResultPopup**: 닫기가 곧 '완료'(기록 확정)인데 바탕 누르기로도 닫혀, 잘못 누르면 다시하기를 쓸 수 없었다.
|
|
105
|
+
- **다시하기**: 단계들을 처음부터 다시 그린다 — 같은 문항을 다시 풀면 옛 선택 강조·옛 배치가 남았다.
|
|
106
|
+
- **다음 문제**: 누르면 곧바로 비활성이 되어 포커스가 body 로 빠졌다 — 새 문제의 첫 칸으로.
|
|
107
|
+
- **useDailyTrainingSelection**: 화면을 열어 둔 채 KST 자정을 넘기면 어제 시드의 세트가 '오늘' 로 남았다(폴백 경로).
|
|
108
|
+
- **loadTrainingData**: 도중에 형식 오류로 멈추면 넣던 것이 남은 채 재시도가 또 넣어 풀에 중복이 쌓였다.
|
|
109
|
+
- **precomputeCommonCombinations**: 화면과 다른 열쇠(count·난이도)로 예열해 계산을 전부 버렸다 — 화면 열쇠로.
|
|
110
|
+
- **useWordMeanings**: 뜻 없는 낱말·정렬만 바뀐 행·취소된 조회를 되풀이해 조회하던 것.
|
|
111
|
+
|
|
112
|
+
### 바뀜 — 차트·리포트·표
|
|
113
|
+
|
|
114
|
+
- **BarChart 집계**: 앞 달에 자료가 없으면 첫 월요일 이전 날(9/1~9/6)이 **어느 막대에도 안 들어갔고**(말귀 훈련 현황 — 신규·한 달
|
|
115
|
+
쉰 회원의 달 초 훈련), 주 보기 기본이 미래 주로 갔다. 월 옵션을 모듈 로드 때 한 번 세어 자정을 넘긴 탭에서 이번 달이 빠졌다.
|
|
116
|
+
- **BarChart 눈금**: 가운데 값을 반올림한 채 절반 높이에 두어 선과 숫자가 어긋났다 — 값의 높이에.
|
|
117
|
+
- **RingChart**: NaN 구간 하나가 뒤 구간을 전부 지웠다. 199/200 이 반올림으로 '100%'(링 끝은 비어 있음) — 다 채우기 전에는 99 까지.
|
|
118
|
+
- **ReportDocument**: 블록 수가 줄면 옛 쪽 나눔 번호로 새 blocks 를 읽어 **렌더가 깨졌다**(kscan 결과지). 머리 높이를 첫 갈래 것
|
|
119
|
+
하나로 재어 제목 있는 뒤 갈래의 장이 넘쳤다 — 갈래마다. 숨김→보임에서 다시 잰다.
|
|
120
|
+
- **Table**: 저장 칸 폭을 마운트 때만 읽어 열쇠가 바뀌어도 앞 열쇠 폭이 씌워졌다. 0·음수·NaN 저장값을 받던 것.
|
|
121
|
+
- **useTablePaging**: 행이 줄어 끝 쪽에 붙은 뒤 다시 늘면 예전 쪽 번호로 튀었다.
|
|
122
|
+
|
|
123
|
+
### 바뀜 — 팝업·방문
|
|
124
|
+
|
|
125
|
+
- **ConfirmPopup**: 잠금을 onConfirm 이 끝나자마자 풀어 닫힘 애니메이션 동안 한 번 더 누르면 **또 불렸다**(말귀 단어표·이용권 삭제가
|
|
126
|
+
두 번). 닫지 않고 끝나면 처리 중 꺼진 단추로 떨어진 포커스를 되돌린다.
|
|
127
|
+
- **방문 훅**(useEditableList·useVisitSchedule·useVisitHistory): 수정 저장 → 재조회(새 객체) → 같은 상세에서 '방문' 을 누르면 예정이
|
|
128
|
+
안 지워져 **방문예정·방문완료 양쪽에** 떴다(말귀 CustomerDetailPopup). 취소·서버 거절 되돌림 뒤에도 편집 폼이 거절된 값을 들었다.
|
|
129
|
+
예정→방문이 id 를 버려 이어서 수정할 때 서버가 행을 못 찾았다.
|
|
130
|
+
- **CouponInputPopup**: 한글 조합 중 Enter 가 적용을 보냈고, 오류 뒤 입력칸으로 포커스가 안 돌아왔다.
|
|
131
|
+
- **SaveTablePopup**: 저장 단추의 닫힘 동안 이름칸 Enter 로 onSave 가 두 번.
|
|
132
|
+
- **ListPopup**: 목록이 줄어 보던 쪽이 범위를 넘으면 '항목이 없습니다' 와 '총 N개' 가 함께 떴다.
|
|
133
|
+
- **WordTableBlock**: '다른 이름으로 저장' 기본 이름 '(복사)' 가 박혀 있었다(`wordTable.save.copyName`).
|
|
134
|
+
- **checkImageExists**: 망 끊김·5xx 까지 '이미지 없음' 으로 영구 캐시해 망이 돌아와도 그 단어가 '이미지 있음' 필터에서 빠졌다.
|
|
135
|
+
|
|
136
|
+
### 고치지 않은 것 — 결정·확인이 필요하다
|
|
137
|
+
|
|
138
|
+
- 숫자 보기(`[2,3,4]`)에서 `selected` 가 값인지 자리 번호인지 API 가 가르지 못한다(지금 쓰는 소비자 없음).
|
|
139
|
+
- `useRelativeDay` 는 날짜 경계가 아니라 24시간 단위로 센다 — 주석상 의도라 두었다.
|
|
140
|
+
- `useVisitHistory.today()` 가 기기 시간대 날짜를 쓴다(KST 기기에서는 같다).
|
|
141
|
+
- 0.134.0 에 적은 결정 넷(SoundCompass 화면 번호 · wordCount 품사/어종 · 결과 캐시 · 편집 중 서버 목록)은 그대로.
|
|
142
|
+
|
|
10
143
|
## 0.134.0
|
|
11
144
|
|
|
12
145
|
0.133.0 뒤 2차 검수 판이다 — 소리방향성(SoundCompass)·단어 기능·레이아웃/결제를 새로 훑었다. 항목마다 시험을 붙이고 고친 줄을
|