@dhis2-ui/button 8.14.1 → 8.14.2-alpha.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. package/package.json +10 -8
  2. 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.14.1",
3
+ "version": "8.14.2-alpha.1",
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.14.1",
36
- "@dhis2-ui/loader": "8.14.1",
37
- "@dhis2-ui/popper": "8.14.1",
38
- "@dhis2/ui-constants": "8.14.1",
39
- "@dhis2/ui-icons": "8.14.1",
35
+ "@dhis2-ui/layer": "8.14.2-alpha.1",
36
+ "@dhis2-ui/loader": "8.14.2-alpha.1",
37
+ "@dhis2-ui/popper": "8.14.2-alpha.1",
38
+ "@dhis2/ui-constants": "8.14.2-alpha.1",
39
+ "@dhis2/ui-icons": "8.14.2-alpha.1",
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
  }
@@ -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
+ }