@charcoal-ui/react 3.0.0-beta.2 → 3.0.0-beta.4
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/dist/_lib/compat.d.ts +19 -1
- package/dist/_lib/compat.d.ts.map +1 -1
- package/dist/_lib/index.d.ts +7 -0
- package/dist/_lib/index.d.ts.map +1 -1
- package/dist/components/Button/index.d.ts +1 -2
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/Button/index.story.d.ts +1 -2
- package/dist/components/Button/index.story.d.ts.map +1 -1
- package/dist/components/Button/index.test.d.ts +4 -0
- package/dist/components/Button/index.test.d.ts.map +1 -0
- package/dist/components/Checkbox/index.d.ts +2 -1
- package/dist/components/Checkbox/index.d.ts.map +1 -1
- package/dist/components/Checkbox/index.story.d.ts +2 -2
- package/dist/components/Checkbox/index.story.d.ts.map +1 -1
- package/dist/components/Clickable/index.d.ts +1 -1
- package/dist/components/Clickable/index.d.ts.map +1 -1
- package/dist/components/Clickable/index.story.d.ts +1 -2
- package/dist/components/Clickable/index.story.d.ts.map +1 -1
- package/dist/components/DropdownSelector/Divider.d.ts +3 -0
- package/dist/components/DropdownSelector/Divider.d.ts.map +1 -1
- package/dist/components/DropdownSelector/DropdownMenuItem.d.ts +7 -0
- package/dist/components/DropdownSelector/DropdownMenuItem.d.ts.map +1 -0
- package/dist/components/DropdownSelector/DropdownPopover.d.ts +8 -8
- package/dist/components/DropdownSelector/DropdownPopover.d.ts.map +1 -1
- package/dist/components/DropdownSelector/ListItem/index.d.ts +18 -0
- package/dist/components/DropdownSelector/ListItem/index.d.ts.map +1 -0
- package/dist/components/DropdownSelector/ListItem/index.story.d.ts +9 -0
- package/dist/components/DropdownSelector/ListItem/index.story.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuItem/index.d.ts +11 -0
- package/dist/components/DropdownSelector/MenuItem/index.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.d.ts +9 -0
- package/dist/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.d.ts +10 -0
- package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuItemGroup/index.d.ts +14 -0
- package/dist/components/DropdownSelector/MenuItemGroup/index.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuList/MenuListContext.d.ts +10 -0
- package/dist/components/DropdownSelector/MenuList/MenuListContext.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuList/index.d.ts +18 -0
- package/dist/components/DropdownSelector/MenuList/index.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuList/index.story.d.ts +11 -0
- package/dist/components/DropdownSelector/MenuList/index.story.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuList/internals/getValuesRecursive.d.ts +11 -0
- package/dist/components/DropdownSelector/MenuList/internals/getValuesRecursive.d.ts.map +1 -0
- package/dist/components/DropdownSelector/Popover/index.d.ts +17 -0
- package/dist/components/DropdownSelector/Popover/index.d.ts.map +1 -0
- package/dist/components/DropdownSelector/Popover/index.story.d.ts +9 -0
- package/dist/components/DropdownSelector/Popover/index.story.d.ts.map +1 -0
- package/dist/components/DropdownSelector/index.d.ts +3 -10
- package/dist/components/DropdownSelector/index.d.ts.map +1 -1
- package/dist/components/DropdownSelector/index.story.d.ts +4 -4
- package/dist/components/DropdownSelector/index.story.d.ts.map +1 -1
- package/dist/components/DropdownSelector/utils/findPreviewRecursive.d.ts +12 -0
- package/dist/components/DropdownSelector/utils/findPreviewRecursive.d.ts.map +1 -0
- package/dist/components/FieldLabel/index.d.ts +1 -1
- package/dist/components/FieldLabel/index.d.ts.map +1 -1
- package/dist/components/Icon/index.d.ts +1 -1
- package/dist/components/Icon/index.d.ts.map +1 -1
- package/dist/components/Icon/index.story.d.ts +2 -3
- package/dist/components/Icon/index.story.d.ts.map +1 -1
- package/dist/components/IconButton/index.d.ts +1 -2
- package/dist/components/IconButton/index.d.ts.map +1 -1
- package/dist/components/IconButton/index.story.d.ts +1 -2
- package/dist/components/IconButton/index.story.d.ts.map +1 -1
- package/dist/components/LoadingSpinner/index.d.ts +9 -8
- package/dist/components/LoadingSpinner/index.d.ts.map +1 -1
- package/dist/components/LoadingSpinner/index.story.d.ts +1 -2
- package/dist/components/LoadingSpinner/index.story.d.ts.map +1 -1
- package/dist/components/Modal/ModalPlumbing.d.ts.map +1 -1
- package/dist/components/Modal/index.d.ts +18 -27
- package/dist/components/Modal/index.d.ts.map +1 -1
- package/dist/components/Modal/index.story.d.ts +12 -2
- package/dist/components/Modal/index.story.d.ts.map +1 -1
- package/dist/components/MultiSelect/context.d.ts +1 -1
- package/dist/components/MultiSelect/context.d.ts.map +1 -1
- package/dist/components/MultiSelect/index.d.ts +18 -6
- package/dist/components/MultiSelect/index.d.ts.map +1 -1
- package/dist/components/MultiSelect/index.story.d.ts +21 -16
- package/dist/components/MultiSelect/index.story.d.ts.map +1 -1
- package/dist/components/Radio/index.d.ts +13 -6
- package/dist/components/Radio/index.d.ts.map +1 -1
- package/dist/components/Radio/index.story.d.ts +11 -8
- package/dist/components/Radio/index.story.d.ts.map +1 -1
- package/dist/components/SegmentedControl/RadioGroupContext.d.ts +1 -1
- package/dist/components/SegmentedControl/RadioGroupContext.d.ts.map +1 -1
- package/dist/components/SegmentedControl/index.d.ts +2 -1
- package/dist/components/SegmentedControl/index.d.ts.map +1 -1
- package/dist/components/SegmentedControl/index.story.d.ts +1 -2
- package/dist/components/SegmentedControl/index.story.d.ts.map +1 -1
- package/dist/components/Switch/index.d.ts +3 -2
- package/dist/components/Switch/index.d.ts.map +1 -1
- package/dist/components/Switch/index.story.d.ts +1 -2
- package/dist/components/Switch/index.story.d.ts.map +1 -1
- package/dist/components/TagItem/index.d.ts +3 -3
- package/dist/components/TagItem/index.d.ts.map +1 -1
- package/dist/components/TagItem/index.story.d.ts +2 -3
- package/dist/components/TagItem/index.story.d.ts.map +1 -1
- package/dist/components/TextArea/TextArea.story.d.ts +28 -0
- package/dist/components/TextArea/TextArea.story.d.ts.map +1 -0
- package/dist/components/TextArea/index.d.ts +21 -0
- package/dist/components/TextArea/index.d.ts.map +1 -0
- package/dist/components/TextField/TextField.story.d.ts +28 -0
- package/dist/components/TextField/TextField.story.d.ts.map +1 -0
- package/dist/components/TextField/index.d.ts +8 -30
- package/dist/components/TextField/index.d.ts.map +1 -1
- package/dist/core/CharcoalProvider.d.ts +1 -1
- package/dist/core/CharcoalProvider.d.ts.map +1 -1
- package/dist/core/ComponentAbstraction.d.ts +1 -1
- package/dist/core/ComponentAbstraction.d.ts.map +1 -1
- package/dist/index.cjs.js +1064 -771
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +1028 -750
- package/dist/index.esm.js.map +1 -1
- package/dist/styled.d.ts +13 -13
- package/package.json +7 -7
- package/src/_lib/compat.ts +20 -1
- package/src/_lib/index.ts +23 -0
- package/src/components/Button/__snapshots__/index.test.tsx.snap +385 -0
- package/src/components/Button/index.story.tsx +1 -1
- package/src/components/Button/index.test.tsx +24 -0
- package/src/components/Button/index.tsx +2 -2
- package/src/components/Checkbox/index.story.tsx +1 -1
- package/src/components/Checkbox/index.tsx +4 -2
- package/src/components/Clickable/index.story.tsx +0 -1
- package/src/components/Clickable/index.tsx +1 -1
- package/src/components/DropdownSelector/Divider.tsx +3 -0
- package/src/components/DropdownSelector/DropdownMenuItem.tsx +40 -0
- package/src/components/DropdownSelector/DropdownPopover.tsx +21 -42
- package/src/components/DropdownSelector/ListItem/index.story.tsx +51 -0
- package/src/components/DropdownSelector/ListItem/index.tsx +58 -0
- package/src/components/DropdownSelector/MenuItem/index.tsx +31 -0
- package/src/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.tsx +43 -0
- package/src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx +55 -0
- package/src/components/DropdownSelector/MenuItemGroup/index.tsx +42 -0
- package/src/components/DropdownSelector/MenuList/MenuListContext.ts +17 -0
- package/src/components/DropdownSelector/MenuList/index.story.tsx +51 -0
- package/src/components/DropdownSelector/MenuList/index.tsx +51 -0
- package/src/components/DropdownSelector/MenuList/internals/getValuesRecursive.tsx +35 -0
- package/src/components/DropdownSelector/Popover/index.story.tsx +65 -0
- package/src/components/DropdownSelector/Popover/index.tsx +69 -0
- package/src/components/DropdownSelector/index.story.tsx +56 -21
- package/src/components/DropdownSelector/index.tsx +19 -60
- package/src/components/DropdownSelector/utils/findPreviewRecursive.tsx +39 -0
- package/src/components/FieldLabel/index.tsx +1 -1
- package/src/components/Icon/index.story.tsx +0 -1
- package/src/components/Icon/index.tsx +1 -1
- package/src/components/IconButton/index.story.tsx +0 -1
- package/src/components/IconButton/index.tsx +2 -2
- package/src/components/LoadingSpinner/index.story.tsx +8 -2
- package/src/components/LoadingSpinner/index.tsx +44 -29
- package/src/components/Modal/ModalPlumbing.tsx +0 -1
- package/src/components/Modal/index.story.tsx +0 -1
- package/src/components/Modal/index.tsx +19 -12
- package/src/components/MultiSelect/context.ts +2 -2
- package/src/components/MultiSelect/index.story.tsx +26 -27
- package/src/components/MultiSelect/index.test.tsx +5 -23
- package/src/components/MultiSelect/index.tsx +83 -78
- package/src/components/Radio/index.story.tsx +7 -9
- package/src/components/Radio/index.test.tsx +3 -4
- package/src/components/Radio/index.tsx +24 -23
- package/src/components/SegmentedControl/RadioGroupContext.tsx +2 -1
- package/src/components/SegmentedControl/index.story.tsx +0 -1
- package/src/components/SegmentedControl/index.tsx +16 -5
- package/src/components/Switch/index.story.tsx +1 -1
- package/src/components/Switch/index.tsx +38 -32
- package/src/components/TagItem/index.story.tsx +0 -1
- package/src/components/TagItem/index.tsx +1 -6
- package/src/components/TextArea/TextArea.story.tsx +61 -0
- package/src/components/TextArea/index.tsx +246 -0
- package/src/components/TextField/{index.story.tsx → TextField.story.tsx} +6 -29
- package/src/components/TextField/index.tsx +148 -378
- package/src/components/a11y.test.tsx +0 -1
- package/src/core/CharcoalProvider.tsx +1 -1
- package/src/core/ComponentAbstraction.tsx +2 -1
- package/src/index.ts +8 -6
- package/dist/components/DropdownSelector/OptionItem.d.ts +0 -7
- package/dist/components/DropdownSelector/OptionItem.d.ts.map +0 -1
- package/dist/components/DropdownSelector/utils/focusIfHTMLLIElement.d.ts +0 -6
- package/dist/components/DropdownSelector/utils/focusIfHTMLLIElement.d.ts.map +0 -1
- package/dist/components/DropdownSelector/utils/handleFocusByKeyBoard.d.ts +0 -6
- package/dist/components/DropdownSelector/utils/handleFocusByKeyBoard.d.ts.map +0 -1
- package/src/components/DropdownSelector/OptionItem.tsx +0 -85
- package/src/components/DropdownSelector/utils/focusIfHTMLLIElement.tsx +0 -12
- package/src/components/DropdownSelector/utils/handleFocusByKeyBoard.tsx +0 -20
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import React, { ReactNode, useContext } from 'react'
|
|
2
|
-
import styled from 'styled-components'
|
|
3
|
-
import { px } from '@charcoal-ui/utils'
|
|
4
|
-
import Icon from '../Icon'
|
|
5
|
-
import { theme } from '../../styled'
|
|
6
|
-
import { DropdownSelectorContext } from '.'
|
|
7
|
-
import { focusIfHTMLLIElement } from './utils/focusIfHTMLLIElement'
|
|
8
|
-
|
|
9
|
-
export type OptionItemProps = {
|
|
10
|
-
children?: ReactNode
|
|
11
|
-
value: string
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export function OptionItem(props: OptionItemProps) {
|
|
15
|
-
const { value, setValue } = useContext(DropdownSelectorContext)
|
|
16
|
-
const isSelected = props.value === value
|
|
17
|
-
const onSelect = () => {
|
|
18
|
-
setValue(props.value)
|
|
19
|
-
}
|
|
20
|
-
return (
|
|
21
|
-
<OptionRoot
|
|
22
|
-
data-key={props.value}
|
|
23
|
-
onMouseMove={(e) => {
|
|
24
|
-
e.currentTarget.focus({ preventScroll: true })
|
|
25
|
-
}}
|
|
26
|
-
onKeyDown={(e) => {
|
|
27
|
-
if (e.key === 'Enter') {
|
|
28
|
-
onSelect()
|
|
29
|
-
} else if (e.key === 'ArrowUp') {
|
|
30
|
-
// prevent scroll
|
|
31
|
-
e.preventDefault()
|
|
32
|
-
const prev = e.currentTarget.previousElementSibling
|
|
33
|
-
if (prev === null) {
|
|
34
|
-
focusIfHTMLLIElement(e.currentTarget.parentElement?.lastChild)
|
|
35
|
-
}
|
|
36
|
-
focusIfHTMLLIElement(prev)
|
|
37
|
-
} else if (e.key === 'ArrowDown') {
|
|
38
|
-
// prevent scroll
|
|
39
|
-
e.preventDefault()
|
|
40
|
-
const next = e.currentTarget.nextElementSibling
|
|
41
|
-
if (next === null) {
|
|
42
|
-
focusIfHTMLLIElement(e.currentTarget.parentElement?.firstChild)
|
|
43
|
-
}
|
|
44
|
-
focusIfHTMLLIElement(next)
|
|
45
|
-
} else if (e.key === ' ') {
|
|
46
|
-
// prevent scroll
|
|
47
|
-
e.preventDefault()
|
|
48
|
-
}
|
|
49
|
-
}}
|
|
50
|
-
onClick={onSelect}
|
|
51
|
-
tabIndex={-1}
|
|
52
|
-
>
|
|
53
|
-
{isSelected && <OptionCheckIcon name="16/Check" />}
|
|
54
|
-
<OptionText isSelected={isSelected}>{props.children}</OptionText>
|
|
55
|
-
</OptionRoot>
|
|
56
|
-
)
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const OptionRoot = styled.li`
|
|
60
|
-
display: flex;
|
|
61
|
-
align-items: center;
|
|
62
|
-
gap: ${({ theme }) => px(theme.spacing[4])};
|
|
63
|
-
height: 40px;
|
|
64
|
-
cursor: pointer;
|
|
65
|
-
outline: none;
|
|
66
|
-
|
|
67
|
-
${theme((o) => [o.padding.horizontal(8)])}
|
|
68
|
-
|
|
69
|
-
:focus {
|
|
70
|
-
${theme((o) => [o.bg.surface3])}
|
|
71
|
-
}
|
|
72
|
-
`
|
|
73
|
-
|
|
74
|
-
const OptionCheckIcon = styled(Icon)`
|
|
75
|
-
${theme((o) => [o.font.text2])}
|
|
76
|
-
`
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* アイコンがない時を考慮して20px(16pxのwidthと4pxのgap)の余白をとる
|
|
80
|
-
*/
|
|
81
|
-
const OptionText = styled.span<{ isSelected?: boolean }>`
|
|
82
|
-
display: block;
|
|
83
|
-
${theme((o) => [o.typography(14), o.font.text2])}
|
|
84
|
-
margin-left: ${({ isSelected }) => (isSelected === true ? 0 : 20)}px;
|
|
85
|
-
`
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { handleFocusByKeyBoard } from './handleFocusByKeyBoard'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* li要素ならフォーカスしてスクロールスクロール領域に見えるように親要素をスクロールする
|
|
5
|
-
* @param element
|
|
6
|
-
*/
|
|
7
|
-
export function focusIfHTMLLIElement(element: Node | null | undefined) {
|
|
8
|
-
if (element instanceof HTMLLIElement) {
|
|
9
|
-
element.focus({ preventScroll: true })
|
|
10
|
-
handleFocusByKeyBoard(element)
|
|
11
|
-
}
|
|
12
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* スクロールスクロール領域に見えるように親要素をスクロールする
|
|
3
|
-
* @param element
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
export function handleFocusByKeyBoard(element: HTMLElement) {
|
|
7
|
-
const parent = element.parentElement
|
|
8
|
-
if (!parent) return
|
|
9
|
-
const rect = element.getBoundingClientRect()
|
|
10
|
-
const parentRect = parent.getBoundingClientRect()
|
|
11
|
-
if (rect.bottom > parentRect.bottom) {
|
|
12
|
-
parent.scrollTo({
|
|
13
|
-
top: parent.scrollTop + rect.bottom - parentRect.bottom,
|
|
14
|
-
})
|
|
15
|
-
} else if (rect.top < parentRect.top) {
|
|
16
|
-
parent.scrollTo({
|
|
17
|
-
top: parent.scrollTop - (parentRect.top - rect.top),
|
|
18
|
-
})
|
|
19
|
-
}
|
|
20
|
-
}
|