This commit resolves a dual-scrolling problem where users could scroll both
the outer modal container and the inner menu list, causing the menu content
to incorrectly scroll above the iOS safe area.
Changes:
- Added :has(.full-menu-list) selector to disable outer scroll only in menu component
- Applied flex layout specifically to menu containers using targeted CSS
- Enhanced .full-menu-list with proper flex properties for contained scrolling
This fix ensures:
- Only the menu list area scrolls, not the entire modal
- Fixed headers and navigation stay in place
- Menu content respects safe area boundaries
- No impact on other components using full-menu-modal (filters, details, etc.)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
팝업 너비를 최소 240px, 최대 360px로 제한
Changes:
- .popup-container에 min-width: 240px, max-width: 360px 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Menu 컴포넌트와 Settlement Detail 컴포넌트의 safe area 처리를 구분하여 적용
Changes:
- .full-menu-container: 기본 padding-top 50px 유지 (Menu용)
- .full-menu-container.pdw-16: safe area를 포함한 padding-top 적용 (Settlement Detail용)
- .full-menu-header: 기본적으로 safe area 아래 위치 (top: env(safe-area-inset-top))
- .full-menu-container.pdw-16 .full-menu-header::before: 가상 요소로 safe area 영역을 덮어 스크롤 컨텐츠가 보이지 않도록 처리
결과:
- Menu: 기존 동작 유지
- Settlement Detail: 헤더는 메뉴와 같은 위치, 스크롤 컨텐츠는 safe area 위로 보이지 않음
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
iOS webview에서 full-menu-modal의 option-list 컨텐츠가 스크롤 시 safe area 위로 올라가는 문제 수정
Changes:
- .full-menu-modal: padding-top 제거 (스크롤되는 영역이므로)
- .full-menu-header: top을 0으로 변경하고 padding-top과 height에 safe-area-inset-top 포함
- .full-menu-container: padding-top에 safe-area-inset-top 추가
헤더가 safe area 전체를 물리적으로 덮도록 하여 스크롤 컨텐츠가 safe area 위로 보이지 않도록 함
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove overflow-y scroll from .full-menu-modal to prevent entire modal from scrolling
- Add overflow-y: hidden to header, top-nav, keywords sections to block vertical scroll
- Ensure only .full-menu-list area is scrollable
- Fix issue where menu content was scrolling through header area
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add PRE_CANCEL and POST_CANCEL transaction types to KeyIn payment
- Update English translations for better readability (FAQ, Settlement Service)
- Fix calendar month date parsing to handle format correctly
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added else clauses to set valueMonth to undefined when month values are not provided:
- Prevents stale date values in calendar
- Ensures calendar displays correctly when switching between date ranges
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed invalid date error when selecting month:
- Changed valueYear (string) to valueMonth (Date) state
- Set valueMonth using moment().toDate() for all calendar types
- Parse startMonth, endMonth, singleMonth with moment and convert to Date
- Calendar component now receives proper Date object instead of year string
- This fixes the "Invalid date" error and prevents error cascade
Changes:
- useState<string> → useState<Date | undefined>
- setValueYear(year) → setValueMonth(moment().toDate())
- Calendar value prop now receives Date object
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Improved date parsing in setMinMaxValueDate:
- Use moment with multiple format support: ['YYYY.MM', 'YYYYMM']
- Add strict parsing mode with true parameter
- Validate date with isValid() before setting
- Handles both 'YYYY.MM' and 'YYYYMM' input formats
This resolves the invalid date error when selecting year/month.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed Invalid date error when selecting year/month:
- Changed date creation from `new Date(moment(endMonth+'01').format('YYYY.MM.DD'))`
to `moment(endMonth + '.01', 'YYYY.MM.DD').toDate()`
- Used proper moment parsing with explicit format string
- Applied to both minMonth and maxMonth date creation
This fixes the error that occurred after localization was applied.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Modified formatDay function in both calendar components:
- For Korean locale (ko), display only the day number (e.g., '10' instead of '10일')
- For other locales, use default toLocaleString formatting
Changes:
- nice-calendar.tsx: Updated formatDay to check currentLocale === 'ko'
- nice-calendar-month.tsx: Updated formatDay to check currentLocale === 'ko'
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Applied i18n locale to both calendar components:
Changes to nice-calendar.tsx:
- Added useTranslation hook import
- Get current locale from i18n.language
- Updated all format functions (formatMonthYear, formatYear, formatMonth, formatDay, formatShortWeekday) to use currentLocale instead of hardcoded 'en'
- Added locale prop to Calendar component
Changes to nice-calendar-month.tsx:
- Added useTranslation hook import
- Get current locale from i18n.language
- Updated all format functions to use currentLocale instead of hardcoded 'en'
- Added locale prop to Calendar component
Now calendars will display in Korean when language is set to 'ko' and in English when set to 'en'.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>