@ihabdevteam/core 0.142.0 → 0.144.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 +79 -0
- package/dist/components.cjs.js +185 -180
- package/dist/hooks.cjs.js +1 -1
- package/dist/i18n.cjs.js +1 -1
- package/dist/ihabdevteam-core.cjs.js +191 -186
- package/dist/ihabdevteam-core.d.ts +66 -22
- package/dist/packages/core/src/components/Badge.js +3 -1
- package/dist/packages/core/src/components/BarChart.d.ts +1 -1
- package/dist/packages/core/src/components/BarChart.js +4 -3
- package/dist/packages/core/src/components/BottomNav.js +4 -0
- package/dist/packages/core/src/components/BulkBar.js +1 -1
- package/dist/packages/core/src/components/Button.js +12 -5
- package/dist/packages/core/src/components/Calendar.js +9 -6
- package/dist/packages/core/src/components/DatePicker.js +9 -4
- package/dist/packages/core/src/components/Dialog.js +3 -1
- package/dist/packages/core/src/components/Dropdown.d.ts +3 -1
- package/dist/packages/core/src/components/Dropdown.js +10 -5
- package/dist/packages/core/src/components/FileUpload.js +3 -1
- package/dist/packages/core/src/components/FilterPanel.js +3 -2
- package/dist/packages/core/src/components/Loader.js +6 -1
- package/dist/packages/core/src/components/Pagination.js +1 -1
- package/dist/packages/core/src/components/PanelRow.js +13 -4
- package/dist/packages/core/src/components/Popup/DeviceSideTable.js +3 -1
- package/dist/packages/core/src/components/Popup/LoadTablePopup.js +5 -2
- package/dist/packages/core/src/components/Popup/Popup.d.ts +1 -1
- package/dist/packages/core/src/components/Popup/Popup.js +26 -6
- package/dist/packages/core/src/components/ProgressBar.js +1 -1
- package/dist/packages/core/src/components/SideNav.js +1 -1
- package/dist/packages/core/src/components/Slider.js +10 -1
- package/dist/packages/core/src/components/Table.js +2 -0
- package/dist/packages/core/src/components/TextField.js +3 -1
- package/dist/packages/core/src/components/Toolbar.js +3 -1
- package/dist/packages/core/src/components/Tooltip/Tooltip.js +7 -2
- package/dist/packages/core/src/components/Training/TrainingPagePopup.d.ts +1 -1
- package/dist/packages/core/src/components/Training/TrainingPagePopup.js +3 -1
- package/dist/packages/core/src/components/Training/TrainingStepAudioPlayer.js +49 -2
- package/dist/packages/core/src/components/Training/WordTablePopup.js +9 -1
- package/dist/packages/core/src/components/Training/useAudioPreview.js +28 -3
- package/dist/packages/core/src/components/Word/WordSearchResultBlock.js +19 -5
- package/dist/packages/core/src/components/Word/WordTableBlock.js +5 -2
- package/dist/packages/core/src/components/Word/WordTableButton.d.ts +3 -3
- package/dist/packages/core/src/components/Word/WordTableButton.js +1 -1
- package/dist/packages/core/src/components/Word/useWordTableDisplaySettings.js +1 -1
- package/dist/packages/core/src/components/Word/wordTableBlockTypes.d.ts +2 -2
- package/dist/packages/core/src/components/Word/wordTablePrint.js +27 -8
- package/dist/packages/core/src/components/barChartData.d.ts +3 -5
- package/dist/packages/core/src/components/barChartData.js +7 -3
- package/dist/packages/core/src/components/barChartTypes.d.ts +16 -3
- package/dist/packages/core/src/components/barChartTypes.js +27 -13
- package/dist/packages/core/src/components/useCalendarMonth.js +3 -2
- package/dist/packages/core/src/components/useToastLifecycle.js +5 -0
- package/dist/packages/core/src/components.d.ts +1 -0
- package/dist/packages/core/src/hooks/focusReturn.d.ts +4 -0
- package/dist/packages/core/src/hooks/focusReturn.js +27 -0
- package/dist/packages/core/src/hooks/useVisitHistory.d.ts +2 -0
- package/dist/packages/core/src/hooks/useVisitHistory.js +5 -6
- package/dist/packages/core/src/hooks/useWordMeanings.js +6 -3
- package/dist/packages/core/src/hooks/useWordTrainingFilter.d.ts +2 -2
- package/dist/packages/core/src/hooks/useWordTrainingFilter.js +57 -17
- package/dist/packages/core/src/utils/date.d.ts +18 -0
- package/dist/packages/core/src/utils/date.js +23 -0
- package/dist/packages/core/src/utils/format.js +2 -1
- package/dist/packages/core/src/utils/imageConfig.d.ts +2 -0
- package/dist/packages/core/src/utils/imageConfig.js +34 -5
- package/dist/packages/core/src/utils/josa.js +2 -0
- package/dist/packages/core/src/utils/koreanSyllable.d.ts +5 -0
- package/dist/packages/core/src/utils/koreanSyllable.js +69 -43
- package/dist/packages/core/src/utils/phonemePairSearch.js +17 -0
- package/dist/packages/core/src/utils/timeoutSignal.d.ts +5 -0
- package/dist/packages/core/src/utils/timeoutSignal.js +12 -0
- package/dist/packages/core/src/utils/ttsConfig.js +2 -1
- package/dist/packages/core/src/utils/wordContrast.js +6 -4
- package/dist/packages/core/src/utils/wordTrainingPool.js +14 -5
- package/dist/packages/core/src/utils.d.ts +1 -1
- package/dist/packages/core/src/utils.js +1 -1
- 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,85 @@ All notable changes to this project will be documented in this file.
|
|
|
7
7
|
> 적은 글이라, 지금 이름으로 고쳐 놓으면 그 시절에 그 이름으로 받은 사람이
|
|
8
8
|
> 제 이야기를 못 찾는다.
|
|
9
9
|
|
|
10
|
+
## 0.144.0
|
|
11
|
+
|
|
12
|
+
13차 검수 판이다 — 해외 기기 KST(달력·날짜 고르개·방문 폼), 낭독기, 떠난 뒤 불리던 콜백, 단어표 인쇄를 고쳤다.
|
|
13
|
+
더한 공개 API: Dropdown `ariaDescribedBy`.
|
|
14
|
+
|
|
15
|
+
### 소비자에게 먼저
|
|
16
|
+
|
|
17
|
+
- **KST 오늘**: Calendar(여는 달·오늘 칸)·DatePicker(오늘 표시·열 때 포커스)·useCalendarMonth(값 없을 때 여는 달)·useVisitHistory `today()`
|
|
18
|
+
와 방문 폼·useVisitSchedule 일정 폼 기본 날짜가 KST 의 날이다. 한국 기기에서는 같다. `today()` 는 뜻이 '기기 오늘' → 'KST 오늘'.
|
|
19
|
+
- **낭독기 속성이 더해졌다 — 역할로 찾는 시험을 확인할 것**:
|
|
20
|
+
- `role="status"`: Toolbar 결과 수(`.toolbar__count`)·BulkBar 선택 개수. 이것이 든 화면에서 `getByRole('status')` 가 여럿을 만날 수 있다.
|
|
21
|
+
- `aria-live`: Pagination "2 / 5"·Calendar 달 제목. `aria-current`: SideNav 지금 메뉴("page")·Calendar 오늘("date").
|
|
22
|
+
- Loader 스피너의 status 안에 이름과 같은 숨은 글자.
|
|
23
|
+
- Dropdown 에 `ariaLabel` 을 주면 이름은 그대로, 고른 값은 설명(aria-describedby). PanelRow 드롭다운 행 오류도 설명으로.
|
|
24
|
+
- PanelRowDevice 착용 해제 단추 이름이 "좌 착용 해제"·"우 착용 해제"(이름으로 찾으면 `/착용 해제$/`).
|
|
25
|
+
- Button: toggleable·selected 가 아니면 넘긴 `aria-pressed` 를 그대로 둔다(전에는 덮었다). 듣기 플레이어 재생/멈춤이 이것을 쓴다.
|
|
26
|
+
- 누를 수 없는 Badge 점은 `role="img"`. 듣기 플레이어의 재생 전 조작 줄은 `inert`. Slider·ProgressBar 에 `aria-valuetext`.
|
|
27
|
+
- **단어표 인쇄 문서는 늘 light 테마**(종이가 흰색이라). 인쇄가 진행 중이면(10초 한도) 다시 눌러도 받지 않는다.
|
|
28
|
+
- useWordTrainingFilter 품사·어종 사전 열쇠를 글자 그대로 적었다(`wordSearch.filter.pos.*`·`type.*`) — 열쇠 소유 가드용.
|
|
29
|
+
|
|
30
|
+
### 바뀜
|
|
31
|
+
|
|
32
|
+
- **떠난 뒤 onClose**: 닫는 애니메이션 도중 부모가 치운 Popup(X·ESC·바탕)·Tooltip(ESC)·Toast(문구가 바뀐 뒤 사라지는 중)의 onClose 가 떠난
|
|
33
|
+
뒤에 불렸다. Table 은 열 폭을 끄는 중 치우면 window `pointercancel` 리스너가 남아 옛 폭을 저장했다.
|
|
34
|
+
- **단어표 인쇄**: 불러오는 중이던 그림이 빈칸으로 인쇄 · 종이가 내용만큼 커지거나 끝에 빈 쪽(Chromium PDF 로 확인) · 어두운 테마에서
|
|
35
|
+
흰 종이에 흰 글자 · 연달아 누르면 인쇄 대화상자 두 번.
|
|
36
|
+
|
|
37
|
+
### 고치지 않은 것 — 결정·확인이 필요하다
|
|
38
|
+
|
|
39
|
+
- 시간대 없는 시각 글자('2026-09-30T20:00:00')를 날짜 함수들이 기기 지역시각으로 읽음 · Calendar·DatePicker 오늘을 prop 으로 받을지.
|
|
40
|
+
- Alert 가 톤과 무관하게 role="alert" · Table 정렬 aria-sort · Toast 첫 문구 알림 · Button 툴팁 문구 설명 · SegmentedControl count 이름.
|
|
41
|
+
- Popup 이 주는 `animateThen(cb)` 는 치워도 cb 를 부른다(삭제·저장 확정일 수 있어 그대로).
|
|
42
|
+
- printWordTable()(전역 인쇄)의 여러 쪽 표 · 글자 크기를 종이에 옮길지 · CSV 선행 0·BOM 중복.
|
|
43
|
+
- 앞 판에 적은 결정은 그대로.
|
|
44
|
+
|
|
45
|
+
## 0.143.0
|
|
46
|
+
|
|
47
|
+
12차 검수 판이다 — 환경 실패·경계값·여러 벌·언어 전환·prop 계약·큰 자료 성능 검수에서 **재현된** 결함을 고쳤고, **해외 기기의 날짜를
|
|
48
|
+
KST 로** 맞췄다(시간대 공식 지원 — 사용자 결정).
|
|
49
|
+
더한 공개 API: `getTodayKstDate`·`kstStartOfDay`·`parseLocalYmd`(utils 묶음에도), `ControlDateRange` 타입, `getControlDateRange` 둘째 인자.
|
|
50
|
+
|
|
51
|
+
### 소비자에게 먼저
|
|
52
|
+
|
|
53
|
+
- **`getControlDateRange` 가 KST 의 날로 자른다**: `from` = 첫날 00:00 KST, `to` = 끝날 23:59:59.999 KST **순간**. 새 필드
|
|
54
|
+
`fromYmd`·`toYmd`(KST 'YYYY-MM-DD'), 둘째 인자 `offset`(`-1` = 앞 주 · 앞 **달력** 달). 한국 기기에서는 값이 전과 같다. 이름표·달력
|
|
55
|
+
셈은 `from` 을 기기 getter 로 읽지 말고 `parseLocalYmd(fromYmd)` 로.
|
|
56
|
+
- **BarChart 의 '오늘'·이번 주·이번 달이 KST**(`buildMonthChartData`·`todayWeekValue`·월 옵션). 점(`ChartPoint.date`)은 KST 달력 날짜를
|
|
57
|
+
기기 달력 자정 Date 로 넣는다 — `parseLocalYmd(toKstYmd(시각))` 또는 `parseLocalYmd(log_date)`.
|
|
58
|
+
- **소리 자물쇠**: 훈련 단계 재생기·블록 미리 듣기도 "지금 울리는 소리는 하나" 에 든다 — 다른 재생기·낱말 카드·미리 듣기가 울리면
|
|
59
|
+
멈춤 단추처럼 멈춘다(이어 듣기 가능). 전에는 듣기 단계 둘·듣기+카드 단계에서 두 소리가 함께 울렸다. 소음은 그대로 함께 울린다.
|
|
60
|
+
- **PanelRow `error`** 가 이제 모든 variant 에서 문구를 낸다(전에는 input·dropdown 만) — 소리방향성 결과 저장 폴더 행에 까닭이 보인다.
|
|
61
|
+
- **TrainingStepAudioPlayer `disabled`** 이면 듣기 단추가 `disabled` — 키보드로도 안 눌린다(말귀 순서 훈련의 거짓 "가져오지 못했습니다").
|
|
62
|
+
- **LoadTablePopup**: `tables` 를 주고 `onDelete` 를 안 주면 삭제 단추가 없다(전에는 브라우저 저장소의 같은 id 표를 지웠다).
|
|
63
|
+
- **useWordTrainingFilter**: 품사·어종을 고정 코드로 저장한다(`posFilter`·`wordTypeFilter` 반환은 지금 언어 라벨 그대로). 옛 라벨 저장값도 읽는다.
|
|
64
|
+
|
|
65
|
+
### 바뀜
|
|
66
|
+
|
|
67
|
+
- **환경**: `AbortSignal.timeout` 없는 iOS/iPadOS 15 이하에서 이미지·음성 존재 확인이 거절(말귀 '이미지 있는 단어만' 첫 검색이 안
|
|
68
|
+
끝남) · 뜻 조회 빈 응답을 '뜻 없음' 으로 굳힘 · 객체 아닌 이미지 캐시 저장값에 매번 던짐.
|
|
69
|
+
- **조각 한글(NFD)·전각 숫자**: 맥·PDF 에서 붙여넣은 검색어가 단어 검색 0건·입력 오류(`searchAndRankWords` 등 다섯) · NFD 끝
|
|
70
|
+
받침의 조사 · `formatPhone` 이 전각 숫자를 버림.
|
|
71
|
+
- **창 이어 열기 포커스**: 닫으면서 다음 창을 열면(미리보기 → 삭제 확인) 확인 창을 닫을 때 포커스가 body 로 떨어졌다.
|
|
72
|
+
- **언어 전환**: 화면을 연 채 ko→en 이면 단어훈련 품사·어종 필터가 모든 단어를 걸렀다.
|
|
73
|
+
- **prop 계약**: WordTableBlock 쪽이 나뉘면 끌어 옮기기 꺼짐 · WordTablePopup 열자마자 `onScoreChange` · DeviceSideTable 한쪽 콜백이면
|
|
74
|
+
체크 잠김 · 열린 채 disabled 된 Dropdown·DatePicker · readOnly/disabled TextField 후보 · FilterPanel `allOptionDisabled`(segmented·dropdown)
|
|
75
|
+
· FileUpload disabled 제거 · BottomNav "…" 의 꺼진 항목 · Popup `useTitle={false}` 창 이름 · Button toggleable·blur 의 onMouseLeave
|
|
76
|
+
· Tooltip `edgeMargin={0}` · JSDoc 몇 곳.
|
|
77
|
+
- **큰 자료 성능**(실제 23,000 낱말로 결과가 같음을 확인): 단어훈련 칩 한 번 130–550ms → 46–212ms · 대립쌍 음소 검색 110–320ms →
|
|
78
|
+
60–114ms · 단어 검색 키마다 14–36ms → 5–10ms · 시작 우선 정렬.
|
|
79
|
+
|
|
80
|
+
### 고치지 않은 것 — 결정·확인이 필요하다
|
|
81
|
+
|
|
82
|
+
- 같은 값을 다시 골랐을 때 onChange(Dropdown·Rating·Tabs·SegmentedControl) 규칙 통일.
|
|
83
|
+
- 공용 속성 필터(`useWordAttributeFilter`·`filterSelected`)가 번역 라벨을 열쇠로 씀 — 저장된 표 config 이전이 필요.
|
|
84
|
+
- `saveTable`·`updateSavedTable` 이 저장 공간이 차도 성공처럼 반환 · TextField 글자 수가 UTF-16 단위.
|
|
85
|
+
- BarChart `barWidth` 8px 하한 · RingChart small `hideCenter={false}` · PhonemeSelectBlock `showInfoButton` 등 보이는 것이 바뀌는 prop 들.
|
|
86
|
+
- 칩 한 번에 남은 46–212ms(양보·워커) · Table 행 memo.
|
|
87
|
+
- 앞 판에 적은 결정은 그대로.
|
|
88
|
+
|
|
10
89
|
## 0.142.0
|
|
11
90
|
|
|
12
91
|
11차 검수 판이다 — 이번 밤에 고친 것들을 거꾸로 훑어 **그 수정이 만든 회귀** 를 고쳤다. 놀이터 문서를 0.133~0.141 동작에 맞췄다.
|