@dhis2-ui/button 8.14.9 → 8.15.0-alpha.2
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/package.json +10 -8
- package/types/index.d.ts +256 -0
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@dhis2-ui/button",
|
3
|
-
"version": "8.
|
3
|
+
"version": "8.15.0-alpha.2",
|
4
4
|
"description": "UI Button",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -32,20 +32,22 @@
|
|
32
32
|
},
|
33
33
|
"dependencies": {
|
34
34
|
"@dhis2/prop-types": "^3.1.2",
|
35
|
-
"@dhis2-ui/layer": "8.
|
36
|
-
"@dhis2-ui/loader": "8.
|
37
|
-
"@dhis2-ui/popper": "8.
|
38
|
-
"@dhis2/ui-constants": "8.
|
39
|
-
"@dhis2/ui-icons": "8.
|
35
|
+
"@dhis2-ui/layer": "8.15.0-alpha.2",
|
36
|
+
"@dhis2-ui/loader": "8.15.0-alpha.2",
|
37
|
+
"@dhis2-ui/popper": "8.15.0-alpha.2",
|
38
|
+
"@dhis2/ui-constants": "8.15.0-alpha.2",
|
39
|
+
"@dhis2/ui-icons": "8.15.0-alpha.2",
|
40
40
|
"classnames": "^2.3.1",
|
41
41
|
"prop-types": "^15.7.2"
|
42
42
|
},
|
43
43
|
"files": [
|
44
|
-
"build"
|
44
|
+
"build",
|
45
|
+
"types"
|
45
46
|
],
|
46
47
|
"devDependencies": {
|
47
48
|
"react": "16.13",
|
48
49
|
"react-dom": "16.13",
|
49
50
|
"styled-jsx": "^4.0.1"
|
50
|
-
}
|
51
|
+
},
|
52
|
+
"types": "types"
|
51
53
|
}
|
package/types/index.d.ts
ADDED
@@ -0,0 +1,256 @@
|
|
1
|
+
import * as React from 'react'
|
2
|
+
|
3
|
+
export type ButtonType = 'submit' | 'reset' | 'button'
|
4
|
+
|
5
|
+
export interface ButtonEventPayload {
|
6
|
+
value?: string
|
7
|
+
name?: string
|
8
|
+
}
|
9
|
+
|
10
|
+
type ButtonEventHandler<Event extends React.SyntheticEvent> = (
|
11
|
+
arg0: ButtonEventPayload,
|
12
|
+
event: Event
|
13
|
+
) => void
|
14
|
+
|
15
|
+
type ButtonOpenEventHandler<
|
16
|
+
Event extends React.SyntheticEvent = React.MouseEvent<HTMLButtonElement>
|
17
|
+
> = (arg0: ButtonEventPayload & { open: boolean }, event: Event) => void
|
18
|
+
|
19
|
+
export interface ButtonProps {
|
20
|
+
/**
|
21
|
+
* Component to render inside the button
|
22
|
+
*/
|
23
|
+
children?: React.ReactNode
|
24
|
+
/**
|
25
|
+
* A className that will be passed to the `<button>` element
|
26
|
+
*/
|
27
|
+
className?: string
|
28
|
+
/**
|
29
|
+
* A string that will be applied as a `data-test` attribute on the button element
|
30
|
+
* for identification during testing
|
31
|
+
*/
|
32
|
+
dataTest?: string
|
33
|
+
/**
|
34
|
+
* Indicates that the button makes potentially dangerous
|
35
|
+
* deletions or data changes.
|
36
|
+
* Mutually exclusive with `primary` and `secondary` props
|
37
|
+
*/
|
38
|
+
destructive?: boolean
|
39
|
+
/**
|
40
|
+
* Applies a greyed-out appearance and makes the button non-interactive
|
41
|
+
*/
|
42
|
+
disabled?: boolean
|
43
|
+
/**
|
44
|
+
* An icon element to display inside the button
|
45
|
+
*/
|
46
|
+
icon?: React.ReactElement
|
47
|
+
/**
|
48
|
+
* Use this variant to capture the initial focus on the page.
|
49
|
+
*/
|
50
|
+
initialFocus?: boolean
|
51
|
+
/**
|
52
|
+
* Makes the button large. Mutually exclusive with `small`
|
53
|
+
*/
|
54
|
+
large?: boolean
|
55
|
+
/**
|
56
|
+
* Sets the button into a loading state
|
57
|
+
*/
|
58
|
+
loading?: boolean
|
59
|
+
/**
|
60
|
+
* Sets `name` attribute on button element.
|
61
|
+
* Gets passed as part of the first argument to callbacks (see `onClick`).
|
62
|
+
*/
|
63
|
+
name?: string
|
64
|
+
/**
|
65
|
+
* Applies 'primary' button appearance.
|
66
|
+
* Mutually exclusive with `destructive` and `secondary` props
|
67
|
+
*/
|
68
|
+
primary?: boolean
|
69
|
+
/**
|
70
|
+
* Applies 'secondary' button appearance.
|
71
|
+
* Mutually exclusive with `primary` and `destructive` props
|
72
|
+
*/
|
73
|
+
secondary?: boolean
|
74
|
+
/**
|
75
|
+
* Makes the button small. Mutually exclusive with `large` prop
|
76
|
+
*/
|
77
|
+
small?: boolean
|
78
|
+
/**
|
79
|
+
* Tab index for focusing the button with a keyboard
|
80
|
+
*/
|
81
|
+
tabIndex?: string
|
82
|
+
/**
|
83
|
+
* Changes appearance of button to an on/off state
|
84
|
+
*/
|
85
|
+
toggled?: boolean
|
86
|
+
/**
|
87
|
+
* Sets `type` attribute on `<button>` element
|
88
|
+
*/
|
89
|
+
type?: ButtonType
|
90
|
+
/**
|
91
|
+
* Value associated with the button.
|
92
|
+
* Gets passed as part of the first argument to callbacks (see `onClick`).
|
93
|
+
*/
|
94
|
+
value?: string
|
95
|
+
/**
|
96
|
+
* Callback to trigger on de-focus (blur).
|
97
|
+
* Called with same args as `onClick`
|
98
|
+
*/
|
99
|
+
onBlur?: ButtonEventHandler<React.FocusEvent<HTMLButtonElement>>
|
100
|
+
/**
|
101
|
+
* Callback to trigger on click.
|
102
|
+
* Called with args `({ value, name }, event)`
|
103
|
+
*/
|
104
|
+
onClick?: ButtonEventHandler<React.MouseEvent<HTMLButtonElement>>
|
105
|
+
/**
|
106
|
+
* Callback to trigger on focus. Called with same args as `onClick`
|
107
|
+
*/
|
108
|
+
onFocus?: ButtonEventHandler<React.FocusEvent<HTMLButtonElement>>
|
109
|
+
/**
|
110
|
+
* Callback to trigger on key-down. Called with same args as `onClick`
|
111
|
+
*/
|
112
|
+
onKeyDown?: ButtonEventHandler<React.KeyboardEvent<HTMLButtonElement>>
|
113
|
+
}
|
114
|
+
|
115
|
+
export const Button: React.FC<ButtonProps>
|
116
|
+
|
117
|
+
export interface ButtonStripProps {
|
118
|
+
children?: React.ReactNode
|
119
|
+
className?: string
|
120
|
+
dataTest?: string
|
121
|
+
/**
|
122
|
+
* Horizontal alignment for buttons. Mutually exclusive with `middle` prop
|
123
|
+
*/
|
124
|
+
end?: boolean
|
125
|
+
/**
|
126
|
+
* Horizontal alignment. Mutually exclusive with `end` prop
|
127
|
+
*/
|
128
|
+
middle?: boolean
|
129
|
+
}
|
130
|
+
|
131
|
+
export const ButtonStrip: React.FC<ButtonStripProps>
|
132
|
+
|
133
|
+
export type DropdownButtonType = 'submit' | 'reset' | 'button'
|
134
|
+
|
135
|
+
export interface DropdownButtonProps {
|
136
|
+
/**
|
137
|
+
* Children to render inside the buton
|
138
|
+
*/
|
139
|
+
children?: React.ReactNode
|
140
|
+
className?: string
|
141
|
+
/**
|
142
|
+
* Component to show/hide when button is clicked
|
143
|
+
*/
|
144
|
+
component?: React.ReactElement<any>
|
145
|
+
dataTest?: string
|
146
|
+
/**
|
147
|
+
* Button variant. Mutually exclusive with `primary` and `secondary` props
|
148
|
+
*/
|
149
|
+
destructive?: boolean
|
150
|
+
/**
|
151
|
+
* Make the button non-interactive
|
152
|
+
*/
|
153
|
+
disabled?: boolean
|
154
|
+
icon?: React.ReactElement<any>
|
155
|
+
/**
|
156
|
+
* Grants button initial focus on the page
|
157
|
+
*/
|
158
|
+
initialFocus?: boolean
|
159
|
+
/**
|
160
|
+
* Button size. Mutually exclusive with `small` prop
|
161
|
+
*/
|
162
|
+
large?: boolean
|
163
|
+
name?: string
|
164
|
+
/**
|
165
|
+
* Controls popper visibility. When implementing this prop the component becomes a controlled component
|
166
|
+
*/
|
167
|
+
open?: boolean
|
168
|
+
/**
|
169
|
+
* Button variant. Mutually exclusive with `destructive` and `secondary` props
|
170
|
+
*/
|
171
|
+
primary?: boolean
|
172
|
+
/**
|
173
|
+
* Button variant. Mutually exclusive with `primary` and `destructive` props
|
174
|
+
*/
|
175
|
+
secondary?: boolean
|
176
|
+
/**
|
177
|
+
* Button size. Mutually exclusive with `large` prop
|
178
|
+
*/
|
179
|
+
small?: boolean
|
180
|
+
tabIndex?: string
|
181
|
+
/**
|
182
|
+
* Type of button. Can take advantage of different default behavior
|
183
|
+
*/
|
184
|
+
type?: DropdownButtonType
|
185
|
+
value?: string
|
186
|
+
/**
|
187
|
+
* Callback triggered on click.
|
188
|
+
* Called with signature `({ name: string, value: string, open: bool }, event)`
|
189
|
+
* Is required when using the `open` prop to override the internal
|
190
|
+
* state.
|
191
|
+
*/
|
192
|
+
onClick?: ButtonOpenEventHandler
|
193
|
+
}
|
194
|
+
|
195
|
+
export class DropdownButton extends React.Component<DropdownButtonProps, any> {
|
196
|
+
render(): JSX.Element
|
197
|
+
}
|
198
|
+
|
199
|
+
export type SplitButtonType = 'submit' | 'reset' | 'button'
|
200
|
+
|
201
|
+
export interface SplitButtonProps {
|
202
|
+
children?: string
|
203
|
+
className?: string
|
204
|
+
/**
|
205
|
+
* Component to render when the dropdown is opened
|
206
|
+
*/
|
207
|
+
component?: React.ReactElement<any>
|
208
|
+
dataTest?: string
|
209
|
+
/**
|
210
|
+
* Applies 'destructive' appearance to indicate purpose. Mutually exclusive with `primary` and `secondary` props
|
211
|
+
*/
|
212
|
+
destructive?: boolean
|
213
|
+
/**
|
214
|
+
* Disables the button and makes it uninteractive
|
215
|
+
*/
|
216
|
+
disabled?: boolean
|
217
|
+
/**
|
218
|
+
* An icon to add inside the button
|
219
|
+
*/
|
220
|
+
icon?: React.ReactElement<any>
|
221
|
+
/**
|
222
|
+
* Grants the button the initial focus
|
223
|
+
*/
|
224
|
+
initialFocus?: boolean
|
225
|
+
/**
|
226
|
+
* Changes button size. Mutually exclusive with `small` prop
|
227
|
+
*/
|
228
|
+
large?: boolean
|
229
|
+
name?: string
|
230
|
+
/**
|
231
|
+
* Applies 'primary' appearance to indicate purpose. Mutually exclusive with `destructive` and `secondary` props
|
232
|
+
*/
|
233
|
+
primary?: boolean
|
234
|
+
/**
|
235
|
+
* Applies 'secondary' appearance to indicate purpose. Mutually exclusive with `primary` and `destructive` props
|
236
|
+
*/
|
237
|
+
secondary?: boolean
|
238
|
+
/**
|
239
|
+
* Changes button size. Mutually exclusive with `large` prop
|
240
|
+
*/
|
241
|
+
small?: boolean
|
242
|
+
tabIndex?: string
|
243
|
+
/**
|
244
|
+
* Type of button. Applied to html `button` element
|
245
|
+
*/
|
246
|
+
type?: SplitButtonType
|
247
|
+
/**
|
248
|
+
* Value associated with the button. Passed in object to onClick handler
|
249
|
+
*/
|
250
|
+
value?: string
|
251
|
+
onClick?: ButtonOpenEventHandler
|
252
|
+
}
|
253
|
+
|
254
|
+
export class SplitButton extends React.Component<SplitButtonProps, any> {
|
255
|
+
render(): JSX.Element
|
256
|
+
}
|