@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.
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.9",
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.14.9",
36
- "@dhis2-ui/loader": "8.14.9",
37
- "@dhis2-ui/popper": "8.14.9",
38
- "@dhis2/ui-constants": "8.14.9",
39
- "@dhis2/ui-icons": "8.14.9",
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
  }
@@ -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
+ }