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