@instructure/ui-buttons 8.13.1-snapshot.9 → 8.14.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.
- package/CHANGELOG.md +4 -0
- package/es/BaseButton/index.js +64 -43
- package/es/BaseButton/props.js +2 -88
- package/es/BaseButton/theme.js +1 -1
- package/es/Button/index.js +2 -2
- package/es/Button/props.js +3 -65
- package/es/CloseButton/index.js +23 -18
- package/es/CloseButton/props.js +2 -60
- package/es/CondensedButton/index.js +2 -2
- package/es/CondensedButton/props.js +3 -48
- package/es/IconButton/index.js +2 -2
- package/es/IconButton/props.js +3 -68
- package/es/ToggleButton/index.js +4 -5
- package/es/ToggleButton/props.js +1 -58
- package/lib/BaseButton/index.js +67 -43
- package/lib/BaseButton/props.js +2 -88
- package/lib/BaseButton/theme.js +1 -1
- package/lib/Button/index.js +2 -2
- package/lib/Button/props.js +3 -65
- package/lib/CloseButton/index.js +23 -18
- package/lib/CloseButton/props.js +2 -60
- package/lib/CondensedButton/index.js +2 -2
- package/lib/CondensedButton/props.js +3 -48
- package/lib/IconButton/index.js +2 -2
- package/lib/IconButton/props.js +3 -68
- package/lib/ToggleButton/index.js +4 -5
- package/lib/ToggleButton/props.js +1 -58
- package/package.json +21 -22
- package/src/BaseButton/index.tsx +35 -27
- package/src/BaseButton/props.ts +103 -72
- package/src/BaseButton/theme.ts +1 -6
- package/src/Button/index.tsx +4 -8
- package/src/Button/props.ts +74 -48
- package/src/CloseButton/index.tsx +4 -6
- package/src/CloseButton/props.ts +67 -41
- package/src/CondensedButton/index.tsx +3 -7
- package/src/CondensedButton/props.ts +56 -34
- package/src/IconButton/index.tsx +3 -7
- package/src/IconButton/props.ts +77 -50
- package/src/ToggleButton/index.tsx +8 -15
- package/src/ToggleButton/props.ts +65 -39
- package/tsconfig.build.json +25 -2
- package/tsconfig.build.tsbuildinfo +1 -0
- package/types/BaseButton/BaseButtonLocator.d.ts +57 -56
- package/types/BaseButton/BaseButtonLocator.d.ts.map +1 -1
- package/types/BaseButton/index.d.ts +16 -15
- package/types/BaseButton/index.d.ts.map +1 -1
- package/types/BaseButton/props.d.ts +76 -5
- package/types/BaseButton/props.d.ts.map +1 -1
- package/types/BaseButton/theme.d.ts.map +1 -1
- package/types/Button/ButtonLocator.d.ts +57 -56
- package/types/Button/ButtonLocator.d.ts.map +1 -1
- package/types/Button/index.d.ts +10 -7
- package/types/Button/index.d.ts.map +1 -1
- package/types/Button/locator.d.ts +52 -52
- package/types/Button/props.d.ts +57 -3
- package/types/Button/props.d.ts.map +1 -1
- package/types/CloseButton/CloseButtonLocator.d.ts +52 -52
- package/types/CloseButton/index.d.ts +4 -3
- package/types/CloseButton/index.d.ts.map +1 -1
- package/types/CloseButton/props.d.ts +55 -5
- package/types/CloseButton/props.d.ts.map +1 -1
- package/types/CondensedButton/CondensedButtonLocator.d.ts +57 -56
- package/types/CondensedButton/CondensedButtonLocator.d.ts.map +1 -1
- package/types/CondensedButton/index.d.ts +9 -6
- package/types/CondensedButton/index.d.ts.map +1 -1
- package/types/CondensedButton/props.d.ts +44 -3
- package/types/CondensedButton/props.d.ts.map +1 -1
- package/types/IconButton/IconButtonLocator.d.ts +57 -56
- package/types/IconButton/IconButtonLocator.d.ts.map +1 -1
- package/types/IconButton/index.d.ts +11 -8
- package/types/IconButton/index.d.ts.map +1 -1
- package/types/IconButton/props.d.ts +60 -4
- package/types/IconButton/props.d.ts.map +1 -1
- package/types/ToggleButton/ToggleButtonLocator.d.ts +57 -56
- package/types/ToggleButton/ToggleButtonLocator.d.ts.map +1 -1
- package/types/ToggleButton/index.d.ts +12 -13
- package/types/ToggleButton/index.d.ts.map +1 -1
- package/types/ToggleButton/props.d.ts +52 -4
- package/types/ToggleButton/props.d.ts.map +1 -1
- package/LICENSE.md +0 -27
|
@@ -32,16 +32,17 @@ import { Tooltip } from '@instructure/ui-tooltip'
|
|
|
32
32
|
import { IconButton } from '../IconButton'
|
|
33
33
|
|
|
34
34
|
import { propTypes, allowedProps } from './props'
|
|
35
|
-
import type { ToggleButtonProps } from './props'
|
|
35
|
+
import type { ToggleButtonProps, ToggleButtonState } from './props'
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
38
|
---
|
|
39
39
|
category: components
|
|
40
40
|
---
|
|
41
|
+
@tsProps
|
|
41
42
|
**/
|
|
42
43
|
|
|
43
44
|
@testable()
|
|
44
|
-
class ToggleButton extends Component<ToggleButtonProps> {
|
|
45
|
+
class ToggleButton extends Component<ToggleButtonProps, ToggleButtonState> {
|
|
45
46
|
static readonly componentId = 'ToggleButton'
|
|
46
47
|
|
|
47
48
|
static propTypes = propTypes
|
|
@@ -50,18 +51,14 @@ class ToggleButton extends Component<ToggleButtonProps> {
|
|
|
50
51
|
size: 'medium',
|
|
51
52
|
as: 'button',
|
|
52
53
|
// Leave interaction default undefined so that `disabled` and `readOnly` can also be supplied
|
|
53
|
-
|
|
54
|
-
elementRef: (el) => {},
|
|
55
|
-
renderIcon: () => {},
|
|
56
|
-
onClick: () => {},
|
|
54
|
+
interaction: undefined,
|
|
57
55
|
mountNode: null,
|
|
58
56
|
color: 'secondary',
|
|
59
57
|
placement: 'top center',
|
|
60
58
|
constrain: 'window'
|
|
61
59
|
}
|
|
62
60
|
|
|
63
|
-
|
|
64
|
-
constructor(props) {
|
|
61
|
+
constructor(props: ToggleButtonProps) {
|
|
65
62
|
super(props)
|
|
66
63
|
|
|
67
64
|
this.state = {
|
|
@@ -83,8 +80,7 @@ class ToggleButton extends Component<ToggleButtonProps> {
|
|
|
83
80
|
|
|
84
81
|
get isShowingTooltip() {
|
|
85
82
|
return typeof this.props.isShowingTooltip === 'undefined'
|
|
86
|
-
?
|
|
87
|
-
this.state.isShowingTooltip
|
|
83
|
+
? this.state.isShowingTooltip
|
|
88
84
|
: this.props.isShowingTooltip
|
|
89
85
|
}
|
|
90
86
|
|
|
@@ -112,12 +108,10 @@ class ToggleButton extends Component<ToggleButtonProps> {
|
|
|
112
108
|
placement={placement}
|
|
113
109
|
color={color === 'primary-inverse' ? 'primary-inverse' : 'primary'}
|
|
114
110
|
isShowingContent={this.isShowingTooltip}
|
|
115
|
-
|
|
116
|
-
onShowContent={(event) => {
|
|
111
|
+
onShowContent={() => {
|
|
117
112
|
this.setState({ isShowingTooltip: true })
|
|
118
113
|
}}
|
|
119
|
-
|
|
120
|
-
onHideContent={(event) => {
|
|
114
|
+
onHideContent={() => {
|
|
121
115
|
this.setState({ isShowingTooltip: false })
|
|
122
116
|
}}
|
|
123
117
|
mountNode={mountNode}
|
|
@@ -127,7 +121,6 @@ class ToggleButton extends Component<ToggleButtonProps> {
|
|
|
127
121
|
screenReaderLabel={screenReaderLabel}
|
|
128
122
|
withBackground={false}
|
|
129
123
|
withBorder={false}
|
|
130
|
-
// @ts-expect-error ts-migrate(2769) FIXME: No overload matches this call.
|
|
131
124
|
color={color}
|
|
132
125
|
size={size}
|
|
133
126
|
elementRef={this.handleRef}
|
|
@@ -37,90 +37,116 @@ import type {
|
|
|
37
37
|
PositionConstraint,
|
|
38
38
|
PositionMountNode
|
|
39
39
|
} from '@instructure/ui-position'
|
|
40
|
+
import type { ViewProps } from '@instructure/ui-view'
|
|
40
41
|
|
|
41
42
|
type ToggleButtonOwnProps = {
|
|
42
|
-
screenReaderLabel: string
|
|
43
|
-
renderTooltipContent: React.ReactNode | ((...args: any[]) => any)
|
|
44
|
-
renderIcon: React.ReactNode | ((...args: any[]) => any)
|
|
45
|
-
status: 'pressed' | 'unpressed'
|
|
46
|
-
as?: AsElementType
|
|
47
|
-
interaction?: 'enabled' | 'disabled' | 'readonly'
|
|
48
|
-
size?: 'small' | 'medium' | 'large'
|
|
49
|
-
elementRef?: (element: Element | null) => void
|
|
50
|
-
onClick?: (...args: any[]) => any
|
|
51
|
-
color?: string
|
|
52
|
-
isShowingTooltip?: boolean
|
|
53
|
-
mountNode?: PositionMountNode
|
|
54
|
-
placement?: PlacementPropValues
|
|
55
|
-
constrain?: PositionConstraint
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
type PropKeys = keyof ToggleButtonOwnProps
|
|
59
|
-
|
|
60
|
-
type AllowedPropKeys = Readonly<Array<PropKeys>>
|
|
61
|
-
|
|
62
|
-
type ToggleButtonProps = ToggleButtonOwnProps &
|
|
63
|
-
OtherHTMLAttributes<ToggleButtonOwnProps>
|
|
64
|
-
|
|
65
|
-
const propTypes: PropValidators<PropKeys> = {
|
|
66
43
|
/**
|
|
67
44
|
* Text to output only to screen readers
|
|
68
45
|
*/
|
|
69
|
-
screenReaderLabel:
|
|
46
|
+
screenReaderLabel: string
|
|
47
|
+
|
|
70
48
|
/**
|
|
71
49
|
* Text to render in the tooltip shown on hover/focus
|
|
72
50
|
*/
|
|
73
|
-
renderTooltipContent:
|
|
74
|
-
|
|
51
|
+
renderTooltipContent: React.ReactNode | ((...args: any[]) => any)
|
|
52
|
+
|
|
75
53
|
/**
|
|
76
54
|
* An icon or function that returns an icon
|
|
77
55
|
*/
|
|
78
|
-
renderIcon:
|
|
56
|
+
renderIcon: React.ReactNode | (() => React.ReactNode)
|
|
57
|
+
|
|
79
58
|
/**
|
|
80
59
|
* Toggles the `aria-pressed` attribute on the button (`true` if `pressed`; `false` if `unpressed`)
|
|
81
60
|
*/
|
|
82
|
-
status:
|
|
61
|
+
status: 'pressed' | 'unpressed'
|
|
62
|
+
|
|
83
63
|
/**
|
|
84
64
|
* The element to render as the component root; `button` by default
|
|
85
65
|
*/
|
|
86
|
-
as
|
|
66
|
+
as?: AsElementType
|
|
67
|
+
|
|
87
68
|
/**
|
|
88
69
|
* Specifies if interaction with `ToggleButton` is `enabled`, `disabled`, or `readonly`
|
|
89
70
|
*/
|
|
90
|
-
interaction
|
|
71
|
+
interaction?: 'enabled' | 'disabled' | 'readonly'
|
|
72
|
+
|
|
91
73
|
/**
|
|
92
74
|
* The size of the `ToggleButton`
|
|
93
75
|
*/
|
|
94
|
-
size
|
|
76
|
+
size?: 'small' | 'medium' | 'large'
|
|
77
|
+
|
|
95
78
|
/**
|
|
96
79
|
* Provides a reference to `ToggleButton`'s underlying HTML element
|
|
97
80
|
*/
|
|
98
|
-
elementRef:
|
|
81
|
+
elementRef?: (element: Element | null) => void
|
|
82
|
+
|
|
99
83
|
/**
|
|
100
84
|
* Callback fired when the `ToggleButton` is clicked
|
|
101
85
|
*/
|
|
102
|
-
onClick
|
|
86
|
+
onClick?: (
|
|
87
|
+
event: React.KeyboardEvent<ViewProps> | React.MouseEvent<ViewProps>
|
|
88
|
+
) => void
|
|
89
|
+
|
|
103
90
|
/**
|
|
104
91
|
* The color in which to display the icon
|
|
105
92
|
*/
|
|
106
|
-
color
|
|
93
|
+
color?: 'primary' | 'primary-inverse' | 'secondary' | 'success' | 'danger'
|
|
94
|
+
|
|
107
95
|
/**
|
|
108
96
|
* By default, the tooltip will show on hover/focus. Use this prop if you need to override that behavior.
|
|
109
97
|
*/
|
|
110
|
-
isShowingTooltip
|
|
98
|
+
isShowingTooltip?: boolean
|
|
99
|
+
|
|
111
100
|
/**
|
|
112
101
|
* An element or a function returning an element to use as the mount node
|
|
113
102
|
*/
|
|
114
|
-
mountNode
|
|
103
|
+
mountNode?: PositionMountNode
|
|
104
|
+
|
|
115
105
|
/**
|
|
116
106
|
* The placement of the tooltip in relation to the button
|
|
117
107
|
*/
|
|
118
|
-
placement
|
|
108
|
+
placement?: PlacementPropValues
|
|
109
|
+
|
|
119
110
|
/**
|
|
120
111
|
* The parent in which to constrain the tooltip.
|
|
121
112
|
* One of: 'window', 'scroll-parent', 'parent', 'none', an element,
|
|
122
113
|
* or a function returning an element.
|
|
123
114
|
*/
|
|
115
|
+
constrain?: PositionConstraint
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
type PropKeys = keyof ToggleButtonOwnProps
|
|
119
|
+
|
|
120
|
+
type AllowedPropKeys = Readonly<Array<PropKeys>>
|
|
121
|
+
|
|
122
|
+
type ToggleButtonProps = ToggleButtonOwnProps &
|
|
123
|
+
OtherHTMLAttributes<ToggleButtonOwnProps>
|
|
124
|
+
|
|
125
|
+
type ToggleButtonState = {
|
|
126
|
+
isShowingTooltip: boolean
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const propTypes: PropValidators<PropKeys> = {
|
|
130
|
+
screenReaderLabel: PropTypes.string.isRequired,
|
|
131
|
+
renderTooltipContent: PropTypes.oneOfType([PropTypes.node, PropTypes.func])
|
|
132
|
+
.isRequired,
|
|
133
|
+
renderIcon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,
|
|
134
|
+
status: PropTypes.oneOf(['pressed', 'unpressed']).isRequired,
|
|
135
|
+
as: PropTypes.elementType,
|
|
136
|
+
interaction: PropTypes.oneOf(['enabled', 'disabled', 'readonly']),
|
|
137
|
+
size: PropTypes.oneOf(['small', 'medium', 'large']),
|
|
138
|
+
elementRef: PropTypes.func,
|
|
139
|
+
onClick: PropTypes.func,
|
|
140
|
+
color: PropTypes.oneOf([
|
|
141
|
+
'primary',
|
|
142
|
+
'primary-inverse',
|
|
143
|
+
'secondary',
|
|
144
|
+
'success',
|
|
145
|
+
'danger'
|
|
146
|
+
]),
|
|
147
|
+
isShowingTooltip: PropTypes.bool,
|
|
148
|
+
mountNode: PositionPropTypes.mountNode,
|
|
149
|
+
placement: PositionPropTypes.placement,
|
|
124
150
|
constrain: PositionPropTypes.constrain
|
|
125
151
|
}
|
|
126
152
|
|
|
@@ -141,5 +167,5 @@ const allowedProps: AllowedPropKeys = [
|
|
|
141
167
|
'status'
|
|
142
168
|
]
|
|
143
169
|
|
|
144
|
-
export type { ToggleButtonProps }
|
|
170
|
+
export type { ToggleButtonProps, ToggleButtonState }
|
|
145
171
|
export { propTypes, allowedProps }
|
package/tsconfig.build.json
CHANGED
|
@@ -1,7 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"extends": "../../tsconfig.build.json",
|
|
3
3
|
"compilerOptions": {
|
|
4
|
-
"outDir": "./types"
|
|
4
|
+
"outDir": "./types",
|
|
5
|
+
"composite": true,
|
|
6
|
+
"rootDir": "./src"
|
|
5
7
|
},
|
|
6
|
-
"include": ["src
|
|
8
|
+
"include": ["src"],
|
|
9
|
+
"references": [
|
|
10
|
+
{ "path": "../ui-babel-preset/tsconfig.build.json" },
|
|
11
|
+
{ "path": "../ui-test-locator/tsconfig.build.json" },
|
|
12
|
+
{ "path": "../ui-test-queries/tsconfig.build.json" },
|
|
13
|
+
{ "path": "../ui-test-utils/tsconfig.build.json" },
|
|
14
|
+
{ "path": "../ui-themes/tsconfig.build.json" },
|
|
15
|
+
{ "path": "../console/tsconfig.build.json" },
|
|
16
|
+
{ "path": "../emotion/tsconfig.build.json" },
|
|
17
|
+
{ "path": "../shared-types/tsconfig.build.json" },
|
|
18
|
+
{ "path": "../ui-a11y-content/tsconfig.build.json" },
|
|
19
|
+
{ "path": "../ui-a11y-utils/tsconfig.build.json" },
|
|
20
|
+
{ "path": "../ui-color-utils/tsconfig.build.json" },
|
|
21
|
+
{ "path": "../ui-dom-utils/tsconfig.build.json" },
|
|
22
|
+
{ "path": "../ui-icons/tsconfig.build.json" },
|
|
23
|
+
{ "path": "../ui-position/tsconfig.build.json" },
|
|
24
|
+
{ "path": "../ui-react-utils/tsconfig.build.json" },
|
|
25
|
+
{ "path": "../ui-testable/tsconfig.build.json" },
|
|
26
|
+
{ "path": "../ui-tooltip/tsconfig.build.json" },
|
|
27
|
+
{ "path": "../ui-utils/tsconfig.build.json" },
|
|
28
|
+
{ "path": "../ui-view/tsconfig.build.json" }
|
|
29
|
+
]
|
|
7
30
|
}
|