@charcoal-ui/react 3.10.1 → 3.12.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.
Files changed (91) hide show
  1. package/dist/components/Checkbox/index.d.ts.map +1 -1
  2. package/dist/components/DropdownSelector/Popover/index.d.ts +1 -2
  3. package/dist/components/DropdownSelector/Popover/index.d.ts.map +1 -1
  4. package/dist/components/Modal/index.d.ts +1 -1
  5. package/dist/components/Modal/index.d.ts.map +1 -1
  6. package/dist/components/Modal/useCustomModalOverlay.d.ts.map +1 -1
  7. package/dist/components/MultiSelect/index.d.ts.map +1 -1
  8. package/dist/components/Radio/index.d.ts +4 -4
  9. package/dist/components/Radio/index.d.ts.map +1 -1
  10. package/dist/components/TextArea/index.d.ts.map +1 -1
  11. package/dist/components/TextField/index.d.ts.map +1 -1
  12. package/dist/core/CharcoalProvider.d.ts +1 -1
  13. package/dist/core/CharcoalProvider.d.ts.map +1 -1
  14. package/dist/index.cjs.js +123 -351
  15. package/dist/index.cjs.js.map +1 -1
  16. package/dist/index.esm.js +85 -313
  17. package/dist/index.esm.js.map +1 -1
  18. package/package.json +13 -17
  19. package/src/components/Checkbox/__snapshots__/index.story.storyshot +601 -173
  20. package/src/components/Checkbox/index.story.tsx +57 -77
  21. package/src/components/Checkbox/index.tsx +7 -2
  22. package/src/components/DropdownSelector/Popover/index.tsx +1 -2
  23. package/src/components/IconButton/__snapshots__/index.story.storyshot +6 -8
  24. package/src/components/IconButton/index.story.tsx +14 -37
  25. package/src/components/LoadingSpinner/__snapshots__/index.story.storyshot +139 -1
  26. package/src/components/LoadingSpinner/index.story.tsx +18 -7
  27. package/src/components/Modal/index.tsx +1 -1
  28. package/src/components/Modal/useCustomModalOverlay.tsx +5 -4
  29. package/src/components/MultiSelect/__snapshots__/index.story.storyshot +32 -44
  30. package/src/components/MultiSelect/index.story.tsx +88 -192
  31. package/src/components/MultiSelect/index.tsx +2 -1
  32. package/src/components/Radio/__snapshots__/index.story.storyshot +1 -1
  33. package/src/components/Radio/index.story.tsx +20 -21
  34. package/src/components/Radio/index.tsx +14 -13
  35. package/src/components/Switch/__snapshots__/index.story.storyshot +8 -9
  36. package/src/components/Switch/index.story.tsx +10 -18
  37. package/src/components/TagItem/__snapshots__/index.story.storyshot +791 -665
  38. package/src/components/TagItem/index.story.tsx +44 -161
  39. package/src/components/TextArea/TextArea.story.tsx +62 -24
  40. package/src/components/TextArea/__snapshots__/TextArea.story.storyshot +1858 -472
  41. package/src/components/TextArea/index.tsx +2 -0
  42. package/src/components/TextField/TextField.story.tsx +77 -67
  43. package/src/components/TextField/__snapshots__/TextField.story.storyshot +2004 -786
  44. package/src/components/TextField/index.tsx +2 -0
  45. package/src/components/a11y.test.tsx +1 -1
  46. package/src/core/CharcoalProvider.tsx +1 -1
  47. package/dist/components/Button/index.story.d.ts +0 -14
  48. package/dist/components/Button/index.story.d.ts.map +0 -1
  49. package/dist/components/Checkbox/index.story.d.ts +0 -8
  50. package/dist/components/Checkbox/index.story.d.ts.map +0 -1
  51. package/dist/components/Clickable/index.story.d.ts +0 -6
  52. package/dist/components/Clickable/index.story.d.ts.map +0 -1
  53. package/dist/components/DropdownSelector/ListItem/index.story.d.ts +0 -9
  54. package/dist/components/DropdownSelector/ListItem/index.story.d.ts.map +0 -1
  55. package/dist/components/DropdownSelector/MenuList/index.story.d.ts +0 -8
  56. package/dist/components/DropdownSelector/MenuList/index.story.d.ts.map +0 -1
  57. package/dist/components/DropdownSelector/Popover/index.story.d.ts +0 -5
  58. package/dist/components/DropdownSelector/Popover/index.story.d.ts.map +0 -1
  59. package/dist/components/DropdownSelector/index.story.d.ts +0 -19
  60. package/dist/components/DropdownSelector/index.story.d.ts.map +0 -1
  61. package/dist/components/Icon/index.story.d.ts +0 -6
  62. package/dist/components/Icon/index.story.d.ts.map +0 -1
  63. package/dist/components/IconButton/index.story.d.ts +0 -9
  64. package/dist/components/IconButton/index.story.d.ts.map +0 -1
  65. package/dist/components/LoadingSpinner/LoadingSpinnerIcon.story.d.ts +0 -8
  66. package/dist/components/LoadingSpinner/LoadingSpinnerIcon.story.d.ts.map +0 -1
  67. package/dist/components/LoadingSpinner/index.story.d.ts +0 -6
  68. package/dist/components/LoadingSpinner/index.story.d.ts.map +0 -1
  69. package/dist/components/Modal/index.story.d.ts +0 -21
  70. package/dist/components/Modal/index.story.d.ts.map +0 -1
  71. package/dist/components/MultiSelect/index.story.d.ts +0 -82
  72. package/dist/components/MultiSelect/index.story.d.ts.map +0 -1
  73. package/dist/components/MultiSelect/index.test.d.ts +0 -2
  74. package/dist/components/MultiSelect/index.test.d.ts.map +0 -1
  75. package/dist/components/Radio/index.story.d.ts +0 -26
  76. package/dist/components/Radio/index.story.d.ts.map +0 -1
  77. package/dist/components/Radio/index.test.d.ts +0 -2
  78. package/dist/components/Radio/index.test.d.ts.map +0 -1
  79. package/dist/components/SegmentedControl/index.story.d.ts +0 -7
  80. package/dist/components/SegmentedControl/index.story.d.ts.map +0 -1
  81. package/dist/components/Switch/index.story.d.ts +0 -9
  82. package/dist/components/Switch/index.story.d.ts.map +0 -1
  83. package/dist/components/TagItem/index.story.d.ts +0 -16
  84. package/dist/components/TagItem/index.story.d.ts.map +0 -1
  85. package/dist/components/TextArea/TextArea.story.d.ts +0 -9
  86. package/dist/components/TextArea/TextArea.story.d.ts.map +0 -1
  87. package/dist/components/TextField/TextField.story.d.ts +0 -22
  88. package/dist/components/TextField/TextField.story.d.ts.map +0 -1
  89. package/dist/components/a11y.test.d.ts +0 -2
  90. package/dist/components/a11y.test.d.ts.map +0 -1
  91. package/src/components/LoadingSpinner/LoadingSpinnerIcon.story.tsx +0 -13
@@ -52,6 +52,7 @@ const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(
52
52
  disabled = false,
53
53
  required,
54
54
  invalid = false,
55
+ readOnly = false,
55
56
  assistiveText,
56
57
  maxLength,
57
58
  autoHeight = false,
@@ -107,6 +108,7 @@ const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(
107
108
  inputElementType: 'textarea',
108
109
  isDisabled: disabled,
109
110
  isRequired: required,
111
+ isReadOnly: readOnly,
110
112
  validationState: invalid ? 'invalid' : 'valid',
111
113
  description: !invalid && assistiveText,
112
114
  errorMessage: invalid && assistiveText,
@@ -1,83 +1,94 @@
1
1
  import styled from 'styled-components'
2
2
  import Clickable from '../Clickable'
3
3
  import TextField from '.'
4
- import { px } from '@charcoal-ui/utils'
5
- import IconButton from '../IconButton'
6
- import { useCallback, useState } from 'react'
4
+ import { useState } from 'react'
7
5
  import { Meta, StoryObj } from '@storybook/react'
8
6
 
9
7
  export default {
10
8
  title: 'TextField',
11
9
  component: TextField,
12
- argTypes: {},
10
+ parameters: {
11
+ layout: 'centered',
12
+ },
13
+ } as Meta<typeof TextField>
14
+
15
+ export const Default: StoryObj<typeof TextField> = {
13
16
  args: {
14
17
  showLabel: false,
15
18
  assistiveText: '',
16
19
  disabled: false,
17
20
  required: false,
18
21
  invalid: false,
22
+ readOnly: false,
19
23
  label: 'Label',
20
24
  requiredText: '*必須',
21
25
  subLabel: <Clickable>Text Link</Clickable>,
22
26
  placeholder: 'TextField',
23
27
  },
24
- render: function Render(args) {
25
- return (
26
- <Container>
27
- <TextField {...args} />
28
- </Container>
29
- )
28
+ render(args) {
29
+ return <TextField {...args} />
30
30
  },
31
- } as Meta<typeof TextField>
31
+ }
32
32
 
33
- const Container = styled.div`
34
- display: grid;
35
- gap: ${({ theme }) => px(theme.spacing[24])};
36
- `
33
+ export const Label: StoryObj<typeof TextField> = {
34
+ render() {
35
+ return <TextField showLabel label="Label" />
36
+ },
37
+ }
37
38
 
38
- export const Default = {}
39
+ export const Placeholder: StoryObj<typeof TextField> = {
40
+ render() {
41
+ return <TextField label="Label" placeholder="Placeholder" />
42
+ },
43
+ }
39
44
 
40
- export const Number: StoryObj<typeof TextField> = {
41
- render: function Render(args) {
42
- const [count, setCount] = useState(0)
45
+ export const RequiredText: StoryObj<typeof TextField> = {
46
+ render() {
47
+ return <TextField label="Label" showLabel required requiredText="*必須" />
48
+ },
49
+ }
50
+
51
+ export const AssistiveText: StoryObj<typeof TextField> = {
52
+ render() {
53
+ return <TextField label="Label" assistiveText="説明が入ります" />
54
+ },
55
+ }
56
+
57
+ export const SubLabel: StoryObj<typeof TextField> = {
58
+ render() {
43
59
  return (
44
- <Container>
45
- <TextField
46
- {...args}
47
- type="number"
48
- value={count.toString()}
49
- onChange={(value) => setCount(parseInt(value))}
50
- onWheel={(e) => {
51
- e.currentTarget.blur()
52
- e.stopPropagation()
53
- }}
54
- />
55
- </Container>
60
+ <TextField label="Label" subLabel={<Clickable>Text Link</Clickable>} />
56
61
  )
57
62
  },
58
63
  }
59
64
 
60
- export const HasLabel = {
61
- args: {
62
- showLabel: true,
63
- assistiveText: 'Assistive text',
64
- required: true,
65
+ export const ShowCount = {
66
+ render() {
67
+ return <TextField label="Label" showCount maxLength={100} />
65
68
  },
66
69
  }
67
70
 
68
- export const HasCount = {
69
- args: {
70
- showCount: true,
71
- maxLength: 100,
71
+ export const Disabled: StoryObj<typeof TextField> = {
72
+ render() {
73
+ return <TextField label="Label" disabled />
72
74
  },
73
75
  }
74
76
 
75
- export const HasAffix: StoryObj<typeof TextField> = {
76
- args: {
77
- showCount: true,
78
- maxLength: 200,
79
- prefix: '/home/john/',
80
- suffix: '.png',
77
+ export const Invalid: StoryObj<typeof TextField> = {
78
+ render() {
79
+ return <TextField label="Label" invalid assistiveText="エラーメッセージ" />
80
+ },
81
+ }
82
+
83
+ export const ReadOnly: StoryObj<typeof TextField> = {
84
+ render() {
85
+ return <TextField label="Label" readOnly value="読み取り専用" />
86
+ },
87
+ }
88
+
89
+ export const Affix: StoryObj<typeof TextField> = {
90
+ render() {
91
+ return <TextField label="Label" prefix="/home/john/" suffix=".png" />
81
92
  },
82
93
  }
83
94
 
@@ -87,35 +98,34 @@ const PrefixIconWrap = styled.div`
87
98
  color: ${({ theme }) => theme.color.text3};
88
99
  `
89
100
 
90
- export const PrefixIcon: StoryObj<typeof TextField> = {
91
- render: function Render(args) {
92
- const [value, setValue] = useState('')
93
- const handleChange = useCallback((value: string) => {
94
- setValue(value)
95
- }, [])
96
- const handleClear = useCallback(() => {
97
- setValue('')
98
- }, [])
101
+ export const Prefix: StoryObj<typeof TextField> = {
102
+ render() {
99
103
  return (
100
104
  <TextField
101
- {...args}
102
105
  label="Label"
103
- placeholder="作品を検索"
104
- value={value}
105
- onChange={handleChange}
106
106
  prefix={
107
107
  <PrefixIconWrap>
108
108
  <pixiv-icon name="16/Search" />
109
109
  </PrefixIconWrap>
110
110
  }
111
- suffix={
112
- <IconButton
113
- variant="Overlay"
114
- icon={'16/Remove'}
115
- size="XS"
116
- onClick={handleClear}
117
- />
118
- }
111
+ />
112
+ )
113
+ },
114
+ }
115
+
116
+ export const Number: StoryObj<typeof TextField> = {
117
+ render: function Render(args) {
118
+ const [count, setCount] = useState(0)
119
+ return (
120
+ <TextField
121
+ {...args}
122
+ type="number"
123
+ value={count.toString()}
124
+ onChange={(value) => setCount(parseInt(value))}
125
+ onWheel={(e) => {
126
+ e.currentTarget.blur()
127
+ e.stopPropagation()
128
+ }}
119
129
  />
120
130
  )
121
131
  },