@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.
Files changed (81) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/es/BaseButton/index.js +64 -43
  3. package/es/BaseButton/props.js +2 -88
  4. package/es/BaseButton/theme.js +1 -1
  5. package/es/Button/index.js +2 -2
  6. package/es/Button/props.js +3 -65
  7. package/es/CloseButton/index.js +23 -18
  8. package/es/CloseButton/props.js +2 -60
  9. package/es/CondensedButton/index.js +2 -2
  10. package/es/CondensedButton/props.js +3 -48
  11. package/es/IconButton/index.js +2 -2
  12. package/es/IconButton/props.js +3 -68
  13. package/es/ToggleButton/index.js +4 -5
  14. package/es/ToggleButton/props.js +1 -58
  15. package/lib/BaseButton/index.js +67 -43
  16. package/lib/BaseButton/props.js +2 -88
  17. package/lib/BaseButton/theme.js +1 -1
  18. package/lib/Button/index.js +2 -2
  19. package/lib/Button/props.js +3 -65
  20. package/lib/CloseButton/index.js +23 -18
  21. package/lib/CloseButton/props.js +2 -60
  22. package/lib/CondensedButton/index.js +2 -2
  23. package/lib/CondensedButton/props.js +3 -48
  24. package/lib/IconButton/index.js +2 -2
  25. package/lib/IconButton/props.js +3 -68
  26. package/lib/ToggleButton/index.js +4 -5
  27. package/lib/ToggleButton/props.js +1 -58
  28. package/package.json +21 -22
  29. package/src/BaseButton/index.tsx +35 -27
  30. package/src/BaseButton/props.ts +103 -72
  31. package/src/BaseButton/theme.ts +1 -6
  32. package/src/Button/index.tsx +4 -8
  33. package/src/Button/props.ts +74 -48
  34. package/src/CloseButton/index.tsx +4 -6
  35. package/src/CloseButton/props.ts +67 -41
  36. package/src/CondensedButton/index.tsx +3 -7
  37. package/src/CondensedButton/props.ts +56 -34
  38. package/src/IconButton/index.tsx +3 -7
  39. package/src/IconButton/props.ts +77 -50
  40. package/src/ToggleButton/index.tsx +8 -15
  41. package/src/ToggleButton/props.ts +65 -39
  42. package/tsconfig.build.json +25 -2
  43. package/tsconfig.build.tsbuildinfo +1 -0
  44. package/types/BaseButton/BaseButtonLocator.d.ts +57 -56
  45. package/types/BaseButton/BaseButtonLocator.d.ts.map +1 -1
  46. package/types/BaseButton/index.d.ts +16 -15
  47. package/types/BaseButton/index.d.ts.map +1 -1
  48. package/types/BaseButton/props.d.ts +76 -5
  49. package/types/BaseButton/props.d.ts.map +1 -1
  50. package/types/BaseButton/theme.d.ts.map +1 -1
  51. package/types/Button/ButtonLocator.d.ts +57 -56
  52. package/types/Button/ButtonLocator.d.ts.map +1 -1
  53. package/types/Button/index.d.ts +10 -7
  54. package/types/Button/index.d.ts.map +1 -1
  55. package/types/Button/locator.d.ts +52 -52
  56. package/types/Button/props.d.ts +57 -3
  57. package/types/Button/props.d.ts.map +1 -1
  58. package/types/CloseButton/CloseButtonLocator.d.ts +52 -52
  59. package/types/CloseButton/index.d.ts +4 -3
  60. package/types/CloseButton/index.d.ts.map +1 -1
  61. package/types/CloseButton/props.d.ts +55 -5
  62. package/types/CloseButton/props.d.ts.map +1 -1
  63. package/types/CondensedButton/CondensedButtonLocator.d.ts +57 -56
  64. package/types/CondensedButton/CondensedButtonLocator.d.ts.map +1 -1
  65. package/types/CondensedButton/index.d.ts +9 -6
  66. package/types/CondensedButton/index.d.ts.map +1 -1
  67. package/types/CondensedButton/props.d.ts +44 -3
  68. package/types/CondensedButton/props.d.ts.map +1 -1
  69. package/types/IconButton/IconButtonLocator.d.ts +57 -56
  70. package/types/IconButton/IconButtonLocator.d.ts.map +1 -1
  71. package/types/IconButton/index.d.ts +11 -8
  72. package/types/IconButton/index.d.ts.map +1 -1
  73. package/types/IconButton/props.d.ts +60 -4
  74. package/types/IconButton/props.d.ts.map +1 -1
  75. package/types/ToggleButton/ToggleButtonLocator.d.ts +57 -56
  76. package/types/ToggleButton/ToggleButtonLocator.d.ts.map +1 -1
  77. package/types/ToggleButton/index.d.ts +12 -13
  78. package/types/ToggleButton/index.d.ts.map +1 -1
  79. package/types/ToggleButton/props.d.ts +52 -4
  80. package/types/ToggleButton/props.d.ts.map +1 -1
  81. 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
- // @ts-expect-error ts-migrate(6133) FIXME: 'el' is declared but its value is never read.
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
- // @ts-expect-error ts-migrate(7006) FIXME: Parameter 'props' implicitly has an 'any' type.
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
- ? // @ts-expect-error ts-migrate(2339) FIXME: Property 'isShowingTooltip' does not exist on type... Remove this comment to see the full error message
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
- // @ts-expect-error ts-migrate(6133) FIXME: 'event' is declared but its value is never read.
116
- onShowContent={(event) => {
111
+ onShowContent={() => {
117
112
  this.setState({ isShowingTooltip: true })
118
113
  }}
119
- // @ts-expect-error ts-migrate(6133) FIXME: 'event' is declared but its value is never read.
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: PropTypes.string.isRequired,
46
+ screenReaderLabel: string
47
+
70
48
  /**
71
49
  * Text to render in the tooltip shown on hover/focus
72
50
  */
73
- renderTooltipContent: PropTypes.oneOfType([PropTypes.node, PropTypes.func])
74
- .isRequired,
51
+ renderTooltipContent: React.ReactNode | ((...args: any[]) => any)
52
+
75
53
  /**
76
54
  * An icon or function that returns an icon
77
55
  */
78
- renderIcon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,
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: PropTypes.oneOf(['pressed', 'unpressed']).isRequired,
61
+ status: 'pressed' | 'unpressed'
62
+
83
63
  /**
84
64
  * The element to render as the component root; `button` by default
85
65
  */
86
- as: PropTypes.elementType,
66
+ as?: AsElementType
67
+
87
68
  /**
88
69
  * Specifies if interaction with `ToggleButton` is `enabled`, `disabled`, or `readonly`
89
70
  */
90
- interaction: PropTypes.oneOf(['enabled', 'disabled', 'readonly']),
71
+ interaction?: 'enabled' | 'disabled' | 'readonly'
72
+
91
73
  /**
92
74
  * The size of the `ToggleButton`
93
75
  */
94
- size: PropTypes.oneOf(['small', 'medium', 'large']),
76
+ size?: 'small' | 'medium' | 'large'
77
+
95
78
  /**
96
79
  * Provides a reference to `ToggleButton`'s underlying HTML element
97
80
  */
98
- elementRef: PropTypes.func,
81
+ elementRef?: (element: Element | null) => void
82
+
99
83
  /**
100
84
  * Callback fired when the `ToggleButton` is clicked
101
85
  */
102
- onClick: PropTypes.func,
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: PropTypes.string,
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: PropTypes.bool,
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: PositionPropTypes.mountNode,
103
+ mountNode?: PositionMountNode
104
+
115
105
  /**
116
106
  * The placement of the tooltip in relation to the button
117
107
  */
118
- placement: PositionPropTypes.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 }
@@ -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
  }