reka-ui
Version:
Vue port for Radix UI Primitives.
45 lines (39 loc) • 1.23 kB
text/typescript
import { useKbd } from '@/shared'
export function isSegmentNavigationKey(key: string) {
const kbd = useKbd()
if (key === kbd.ARROW_RIGHT || key === kbd.ARROW_LEFT)
return true
return false
}
export function isNumberString(value: string) {
if (Number.isNaN(Number.parseInt(value)))
return false
return true
}
export function isAcceptableSegmentKey(key: string) {
const kbd = useKbd()
const acceptableSegmentKeys = [
kbd.ENTER,
kbd.ARROW_UP,
kbd.ARROW_DOWN,
kbd.ARROW_LEFT,
kbd.ARROW_RIGHT,
kbd.BACKSPACE,
kbd.SPACE,
'a',
'A',
'p',
'P',
]
if (acceptableSegmentKeys.includes(key))
return true
if (isNumberString(key))
return true
return false
}
export function getSegmentElements(parentElement: HTMLElement): Element[] {
return Array.from(parentElement.querySelectorAll('[data-reka-date-field-segment]')).filter(item => item.getAttribute('data-reka-date-field-segment') !== 'literal')
}
export function getTimeFieldSegmentElements(parentElement: HTMLElement): Element[] {
return Array.from(parentElement.querySelectorAll('[data-reka-time-field-segment]')).filter(item => item.getAttribute('data-reka-time-field-segment') !== 'literal')
}