@planningcenter/tapestry-react 2.9.2 → 2.10.0-rc.1
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/dist/cjs/Badge/Badge.js +19 -7
- package/dist/cjs/Badge/Status.js +52 -77
- package/dist/cjs/Button/Button.js +1 -1
- package/dist/cjs/Calendar/Day.js +5 -2
- package/dist/cjs/Combobox/ComboboxPopover.js +20 -6
- package/dist/cjs/Input/Inline.js +1 -1
- package/dist/cjs/Input/InputBox.js +1 -1
- package/dist/cjs/Menu/Item.js +47 -25
- package/dist/cjs/Modal/Modal.js +4 -3
- package/dist/cjs/NumberField/NumberField.js +112 -31
- package/dist/cjs/NumberField/NumberField.test.js +8 -2
- package/dist/cjs/Portal/Portal.js +2 -1
- package/dist/cjs/Progress/Progress.js +2 -2
- package/dist/cjs/Radio/Radio.js +12 -8
- package/dist/cjs/Toolbar/Toolbar.js +1 -0
- package/dist/cjs/Tooltip/Tooltip.js +4 -2
- package/dist/cjs/Wizard/Wizard.js +4 -4
- package/dist/cjs/system/utils.js +2 -0
- package/dist/esm/Badge/Badge.js +19 -7
- package/dist/esm/Badge/Status.js +52 -77
- package/dist/esm/Button/Button.js +1 -1
- package/dist/esm/Calendar/Day.js +5 -2
- package/dist/esm/Combobox/ComboboxPopover.js +20 -6
- package/dist/esm/Input/Inline.js +1 -1
- package/dist/esm/Input/InputBox.js +1 -1
- package/dist/esm/Menu/Item.js +47 -25
- package/dist/esm/Modal/Modal.js +4 -3
- package/dist/esm/NumberField/NumberField.js +112 -32
- package/dist/esm/NumberField/NumberField.test.js +8 -2
- package/dist/esm/Portal/Portal.js +2 -1
- package/dist/esm/Progress/Progress.js +2 -2
- package/dist/esm/Radio/Radio.js +12 -8
- package/dist/esm/Toolbar/Toolbar.js +2 -1
- package/dist/esm/Tooltip/Tooltip.js +4 -2
- package/dist/esm/Wizard/Wizard.js +4 -4
- package/dist/esm/system/utils.js +2 -0
- package/dist/types/Badge/Status.d.ts +27 -0
- package/dist/types/Button/Button.d.ts +4 -2
- package/dist/types/Modal/Modal.d.ts +23 -0
- package/dist/types/NumberField/NumberField.d.ts +89 -0
- package/dist/types/Progress/Progress.d.ts +12 -0
- package/dist/types/Radio/Radio.d.ts +44 -0
- package/dist/types/Wizard/Wizard.d.ts +63 -0
- package/package.json +3 -1
- package/src/Badge/Badge.js +8 -0
- package/src/Badge/Status.tsx +90 -0
- package/src/Button/Button.tsx +2 -2
- package/src/Calendar/Day.js +11 -0
- package/src/Combobox/ComboboxPopover.js +30 -0
- package/src/Input/Inline.js +1 -1
- package/src/Input/InputBox.js +1 -1
- package/src/Menu/Item.js +15 -0
- package/src/Modal/{Modal.js → Modal.tsx} +8 -9
- package/src/NumberField/NumberField.mdx +13 -0
- package/src/NumberField/NumberField.test.tsx +38 -11
- package/src/NumberField/{NumberField.js → NumberField.tsx} +124 -48
- package/src/Portal/Portal.tsx +1 -0
- package/src/Progress/{Progress.js → Progress.tsx} +3 -4
- package/src/Radio/{Radio.js → Radio.tsx} +21 -15
- package/src/Toolbar/Toolbar.js +1 -0
- package/src/Tooltip/Tooltip.js +8 -1
- package/src/Wizard/{Wizard.js → Wizard.tsx} +42 -35
- package/src/system/utils.js +2 -0
- package/src/Badge/Status.js +0 -101
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare type StatusProps = {
|
|
2
|
+
/**
|
|
3
|
+
* When `true`, Sets a light background to use against darker backgrounds.
|
|
4
|
+
*/
|
|
5
|
+
light?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Called when the status should be set hidden
|
|
8
|
+
*/
|
|
9
|
+
onClearRequest: () => void;
|
|
10
|
+
/**
|
|
11
|
+
* The size of the badge
|
|
12
|
+
*/
|
|
13
|
+
size?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The status of the badge, if nothing passed, nothing will be rendered.
|
|
16
|
+
*/
|
|
17
|
+
status?: 'error' | 'success';
|
|
18
|
+
/**
|
|
19
|
+
* Title of badge
|
|
20
|
+
*/
|
|
21
|
+
title: string;
|
|
22
|
+
};
|
|
23
|
+
declare const Status: {
|
|
24
|
+
({ light, onClearRequest, size, status, title, ...restProps }: StatusProps): JSX.Element;
|
|
25
|
+
displayName: string;
|
|
26
|
+
};
|
|
27
|
+
export default Status;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { BoxSizes, MediaQueries } from '../index';
|
|
3
3
|
import { StackViewProps } from '../StackView';
|
|
4
|
-
declare type ButtonProps = {
|
|
4
|
+
export declare type ButtonProps = {
|
|
5
5
|
children?: any;
|
|
6
6
|
/**
|
|
7
7
|
* "Soft disables" button by adding an `aria-disabled` attribute and preventing `onClick` and `keyDown` events for "space" / "enter". This approach allows composing components (such as `Tooltip`) to still bubble up their events, while ensuring that clicking the button or submitting a form is prevented.
|
|
@@ -96,7 +96,9 @@ export declare namespace Button {
|
|
|
96
96
|
close: any;
|
|
97
97
|
}) => React.ReactNode);
|
|
98
98
|
size?: "xs" | "sm" | "md" | "lg";
|
|
99
|
-
onClose: () => void;
|
|
99
|
+
onClose: () => void; /**
|
|
100
|
+
* Pass styles for when the button is active.
|
|
101
|
+
*/
|
|
100
102
|
onOpen: () => void;
|
|
101
103
|
} & {
|
|
102
104
|
children?: any;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare type ModalProps = {
|
|
3
|
+
children?: React.ReactNode;
|
|
4
|
+
/**
|
|
5
|
+
* Close the modal when clicking outside of it.
|
|
6
|
+
*/
|
|
7
|
+
closeOnOutsideClick?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Called by either clicking on the internal [`<Scrim/>`](/scrim) component or
|
|
10
|
+
* by pressing the `Escape` key.
|
|
11
|
+
*/
|
|
12
|
+
onRequestClose?: () => null;
|
|
13
|
+
/**
|
|
14
|
+
* Determines whether the modal is open or not.
|
|
15
|
+
*/
|
|
16
|
+
open: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Props passed to the internal [`<Scrim/>`](/scrim) component.
|
|
19
|
+
*/
|
|
20
|
+
scrimProps?: Record<string, any>;
|
|
21
|
+
};
|
|
22
|
+
declare const Modal: ({ children, closeOnOutsideClick, onRequestClose, open, ...restProps }: ModalProps) => JSX.Element;
|
|
23
|
+
export default Modal;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
declare type Props = {
|
|
3
|
+
/**
|
|
4
|
+
* Render custom component or HTML element tag. (Defaults to a [InputField](/input.inputfield) component.). */
|
|
5
|
+
as?: any;
|
|
6
|
+
/**
|
|
7
|
+
* Add controls to increment/decrement the value
|
|
8
|
+
*/
|
|
9
|
+
hasControls?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* An array of keys to ignore when pushed.
|
|
12
|
+
* ex: ["ArrowUp", "ArrowDown"].
|
|
13
|
+
*/
|
|
14
|
+
ignoredKeys: string[];
|
|
15
|
+
/**
|
|
16
|
+
* Maximum number that can be entered.
|
|
17
|
+
*/
|
|
18
|
+
max: number;
|
|
19
|
+
/**
|
|
20
|
+
* Minimum number that can be entered.
|
|
21
|
+
*/
|
|
22
|
+
min: number;
|
|
23
|
+
/**
|
|
24
|
+
* Called when the input's onInput is called with a valid value
|
|
25
|
+
* or when the arrow keys are used to increment/decrement the value.
|
|
26
|
+
* Please note traditional onInput/onChange events are not supported
|
|
27
|
+
* since this component takes control of them.
|
|
28
|
+
*/
|
|
29
|
+
onChange: (value: string) => null;
|
|
30
|
+
/**
|
|
31
|
+
* Maps to the input's `onBlur` prop.
|
|
32
|
+
*/
|
|
33
|
+
onBlur?: () => null;
|
|
34
|
+
onKeyDown?: Function;
|
|
35
|
+
/**
|
|
36
|
+
* The amount of 0s to pad the value with.
|
|
37
|
+
*/
|
|
38
|
+
pad: number;
|
|
39
|
+
/**
|
|
40
|
+
* Forces the input text to stay fully selected while interacting with it.
|
|
41
|
+
*/
|
|
42
|
+
highlightOnInteraction: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* String to display when value is empty.
|
|
45
|
+
*/
|
|
46
|
+
placeholder: string;
|
|
47
|
+
/**
|
|
48
|
+
* The amount to step up/down from the value when using the arrow keys
|
|
49
|
+
* defaults to `1`
|
|
50
|
+
*/
|
|
51
|
+
step: number;
|
|
52
|
+
/**
|
|
53
|
+
* The value of the input.
|
|
54
|
+
*/
|
|
55
|
+
value: number;
|
|
56
|
+
autoWidth: boolean;
|
|
57
|
+
moveFocusOnMax: boolean;
|
|
58
|
+
};
|
|
59
|
+
declare class NumberField extends Component<Props> {
|
|
60
|
+
static defaultProps: {
|
|
61
|
+
as: any;
|
|
62
|
+
hasControls: boolean;
|
|
63
|
+
ignoredKeys: any[];
|
|
64
|
+
min: number;
|
|
65
|
+
max: number;
|
|
66
|
+
step: number;
|
|
67
|
+
moveFocusOnMax: boolean;
|
|
68
|
+
};
|
|
69
|
+
firstTouch: boolean;
|
|
70
|
+
getParsedValues: (value: any) => {
|
|
71
|
+
value: number;
|
|
72
|
+
minValue: number;
|
|
73
|
+
maxValue: number;
|
|
74
|
+
};
|
|
75
|
+
clampValue: (valueToCheck: any) => number;
|
|
76
|
+
isValueValid: (valueToCheck: any) => boolean;
|
|
77
|
+
changeIfValid: (value: any) => void;
|
|
78
|
+
handleBlur: (event: any) => void;
|
|
79
|
+
stepValue: (baseValue: any, step: any) => void;
|
|
80
|
+
incrementValue: () => void;
|
|
81
|
+
decrementValue: () => void;
|
|
82
|
+
handleKeyDown: (event: any) => void;
|
|
83
|
+
handleInput: (event: any) => void;
|
|
84
|
+
getAutoWidthValue(value: any): any;
|
|
85
|
+
renderInput(restProps: any): React.CElement<any, React.Component<any, any, any>>;
|
|
86
|
+
renderInputWithControls(restProps: any): JSX.Element;
|
|
87
|
+
render(): JSX.Element;
|
|
88
|
+
}
|
|
89
|
+
export default NumberField;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare type Props = {
|
|
2
|
+
/**
|
|
3
|
+
* The current value of the progress bar.
|
|
4
|
+
*/
|
|
5
|
+
value?: number;
|
|
6
|
+
/**
|
|
7
|
+
* Active color of the progress bar.
|
|
8
|
+
*/
|
|
9
|
+
activeColor?: string;
|
|
10
|
+
};
|
|
11
|
+
declare const Progress: ({ value, ...restProps }: Props) => JSX.Element;
|
|
12
|
+
export default Progress;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export declare type RadioProps = {
|
|
2
|
+
/**
|
|
3
|
+
* Disables the radio component.
|
|
4
|
+
*/
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Determines if the radio should use an internal label or not.
|
|
8
|
+
*/
|
|
9
|
+
label?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Connects input to its corresponding label's `htmlFor`.
|
|
12
|
+
*/
|
|
13
|
+
id?: string | number;
|
|
14
|
+
/**
|
|
15
|
+
* Checks the radio.
|
|
16
|
+
*/
|
|
17
|
+
checked?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Maps to the internal input's `name` prop.
|
|
20
|
+
*/
|
|
21
|
+
name?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Maps to the internal input's `value` prop.
|
|
24
|
+
*/
|
|
25
|
+
value?: any;
|
|
26
|
+
/**
|
|
27
|
+
* Determines the size of the radio based on a [scale](http://google.com).
|
|
28
|
+
*/
|
|
29
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
30
|
+
/**
|
|
31
|
+
* Maps to the internal input's `onChange` prop.
|
|
32
|
+
*/
|
|
33
|
+
onChange?: () => null;
|
|
34
|
+
/**
|
|
35
|
+
* Maps to the internal input's `onFocus` prop.
|
|
36
|
+
*/
|
|
37
|
+
onFocus?: () => null;
|
|
38
|
+
/**
|
|
39
|
+
* Maps to the internal input's `onBlur` prop.
|
|
40
|
+
*/
|
|
41
|
+
onBlur?: () => null;
|
|
42
|
+
};
|
|
43
|
+
declare const Radio: ({ checked, disabled, id, label, name, onBlur, onChange, onFocus, size, value, ...restProps }: RadioProps) => JSX.Element;
|
|
44
|
+
export default Radio;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ButtonProps } from '../Button/Button';
|
|
3
|
+
export declare type Step = {
|
|
4
|
+
name: string;
|
|
5
|
+
valid?: (payload: Record<string, any>) => boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare type WizardProps = {
|
|
8
|
+
/**
|
|
9
|
+
* Pass props to the back button.
|
|
10
|
+
*/
|
|
11
|
+
backButtonProps?: ButtonProps;
|
|
12
|
+
/**
|
|
13
|
+
* Pass props to all Button components in the footer.
|
|
14
|
+
*/
|
|
15
|
+
buttonProps?: ButtonProps;
|
|
16
|
+
/**
|
|
17
|
+
* Pass props to the cancel button.
|
|
18
|
+
*/
|
|
19
|
+
cancelButtonProps?: ButtonProps;
|
|
20
|
+
/**
|
|
21
|
+
* The content of the component.
|
|
22
|
+
*/
|
|
23
|
+
children: React.ReactNode;
|
|
24
|
+
/**
|
|
25
|
+
* Pass props to the Button components.
|
|
26
|
+
*/
|
|
27
|
+
footerProps?: ButtonProps;
|
|
28
|
+
/**
|
|
29
|
+
* The initial payload state.
|
|
30
|
+
*/
|
|
31
|
+
initialPayload?: Record<string, any>;
|
|
32
|
+
/**
|
|
33
|
+
* Pass props to the next button.
|
|
34
|
+
*/
|
|
35
|
+
nextButtonProps?: ButtonProps;
|
|
36
|
+
/**
|
|
37
|
+
* Determines what the next button title displays.
|
|
38
|
+
*/
|
|
39
|
+
nextButtonTitle?: (props: {
|
|
40
|
+
activeStepIndex: number;
|
|
41
|
+
steps: Step[];
|
|
42
|
+
totalSteps: number;
|
|
43
|
+
}) => string;
|
|
44
|
+
/**
|
|
45
|
+
* Creates a cancel button for canceling a process from the first step.
|
|
46
|
+
*/
|
|
47
|
+
onCancel?: () => void;
|
|
48
|
+
/**
|
|
49
|
+
* Called when the `Done` button is pressed on the last view. Passes back the `payload` state
|
|
50
|
+
* as well as an option `complete` callback to revert the button spinner back to normal.
|
|
51
|
+
*/
|
|
52
|
+
onSubmit?: (payload: Record<string, any>, complete: () => void) => void;
|
|
53
|
+
/**
|
|
54
|
+
* Provide a custom progress component to render in place of `StepperProgress`.
|
|
55
|
+
*/
|
|
56
|
+
renderProgress?: (props: {
|
|
57
|
+
activeStepIndex: number;
|
|
58
|
+
steps: Step[];
|
|
59
|
+
totalSteps: number;
|
|
60
|
+
}) => React.ReactNode;
|
|
61
|
+
};
|
|
62
|
+
declare const Wizard: (props: WizardProps) => JSX.Element;
|
|
63
|
+
export default Wizard;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@planningcenter/tapestry-react",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.10.0-rc.1",
|
|
4
4
|
"description": "A collection of flexible React components to help you build resilient, accessible user interfaces quickly and effectively.",
|
|
5
5
|
"author": "Front End Systems Engineering <frontend@pco.bz>",
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -61,6 +61,8 @@
|
|
|
61
61
|
"@types/jest": "^26.0.20",
|
|
62
62
|
"@types/react": "^18.0.24",
|
|
63
63
|
"@types/react-dom": "^18.0.8",
|
|
64
|
+
"@typescript-eslint/eslint-plugin": "^6.9.1",
|
|
65
|
+
"@typescript-eslint/parser": "^6.9.1",
|
|
64
66
|
"babel-eslint": "10.1.0",
|
|
65
67
|
"chokidar-cli": "^2.1.0",
|
|
66
68
|
"dotenv": "^8.2.0",
|
package/src/Badge/Badge.js
CHANGED
|
@@ -106,9 +106,13 @@ function Badge({
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
if (badgeProps.radius === 'circle') {
|
|
109
|
+
// @ts-ignore error TS2339: Property 'position' does not exist on type ...
|
|
109
110
|
textStyle.position = 'absolute'
|
|
111
|
+
// @ts-ignore error TS2339: Property 'top' does not exist on type ...
|
|
110
112
|
textStyle.top = '50%'
|
|
113
|
+
// @ts-ignore error TS2339: Property 'left' does not exist on type ...
|
|
111
114
|
textStyle.left = '50%'
|
|
115
|
+
// @ts-ignore error TS2339: Property 'transform' does not exist on type ...
|
|
112
116
|
textStyle.transform = 'translate(-50%, -50%)'
|
|
113
117
|
}
|
|
114
118
|
|
|
@@ -160,8 +164,10 @@ function Badge({
|
|
|
160
164
|
>
|
|
161
165
|
{typeof renderLeft === 'string'
|
|
162
166
|
? renderLeft
|
|
167
|
+
// @ts-ignore error TS2769: No overload matches this call.
|
|
163
168
|
: cloneElement(renderLeft, {
|
|
164
169
|
size:
|
|
170
|
+
// @ts-ignore error TS2339: Property 'props' does not exist on type ...
|
|
165
171
|
(renderLeft.props && renderLeft.props.size) ||
|
|
166
172
|
badgeProps.size,
|
|
167
173
|
})}
|
|
@@ -187,8 +193,10 @@ function Badge({
|
|
|
187
193
|
>
|
|
188
194
|
{typeof renderRight === 'string'
|
|
189
195
|
? renderRight
|
|
196
|
+
// @ts-ignore error TS2769: No overload matches this call.
|
|
190
197
|
: cloneElement(renderRight, {
|
|
191
198
|
size:
|
|
199
|
+
// @ts-ignore error TS2339: Property 'props' does not exist on type ...
|
|
192
200
|
(renderRight.props && renderRight.props.size) ||
|
|
193
201
|
badgeProps.size,
|
|
194
202
|
})}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react'
|
|
2
|
+
import { getColor } from '../system'
|
|
3
|
+
import Icon from '../Icon'
|
|
4
|
+
import Badge from './Badge'
|
|
5
|
+
|
|
6
|
+
const statuses = {
|
|
7
|
+
error: { color: 'error', icon: 'general.x' },
|
|
8
|
+
success: { color: 'success', icon: 'general.check' },
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export type StatusProps = {
|
|
12
|
+
/**
|
|
13
|
+
* When `true`, Sets a light background to use against darker backgrounds.
|
|
14
|
+
*/
|
|
15
|
+
light?: boolean
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Called when the status should be set hidden
|
|
19
|
+
*/
|
|
20
|
+
onClearRequest: () => void
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The size of the badge
|
|
24
|
+
*/
|
|
25
|
+
size?: string
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The status of the badge, if nothing passed, nothing will be rendered.
|
|
29
|
+
*/
|
|
30
|
+
status?: 'error' | 'success'
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Title of badge
|
|
34
|
+
*/
|
|
35
|
+
title: string
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const Status = ({
|
|
39
|
+
light,
|
|
40
|
+
onClearRequest,
|
|
41
|
+
size = 'sm',
|
|
42
|
+
status,
|
|
43
|
+
title,
|
|
44
|
+
...restProps
|
|
45
|
+
}: StatusProps): JSX.Element => {
|
|
46
|
+
const [timeoutId, setTimeoutId] = useState<NodeJS.Timeout | null>(null)
|
|
47
|
+
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
const requestClear = () => {
|
|
50
|
+
if (timeoutId) {
|
|
51
|
+
clearTimeout(timeoutId)
|
|
52
|
+
}
|
|
53
|
+
setTimeoutId(setTimeout(onClearRequest, 1800))
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
requestClear()
|
|
57
|
+
|
|
58
|
+
return () => {
|
|
59
|
+
if (timeoutId) {
|
|
60
|
+
clearTimeout(timeoutId)
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}, [onClearRequest, status, timeoutId])
|
|
64
|
+
|
|
65
|
+
if (!status) {
|
|
66
|
+
return null
|
|
67
|
+
} else {
|
|
68
|
+
const { color, icon } = statuses[status]
|
|
69
|
+
return (
|
|
70
|
+
<Badge
|
|
71
|
+
color={
|
|
72
|
+
light
|
|
73
|
+
? { background: 'light', foreground: getColor(color) }
|
|
74
|
+
: getColor(color)
|
|
75
|
+
}
|
|
76
|
+
fontWeight={600}
|
|
77
|
+
paddingRight={1}
|
|
78
|
+
radius="pill"
|
|
79
|
+
renderLeft={<Icon name={icon} />}
|
|
80
|
+
{...{ size, title }}
|
|
81
|
+
{...restProps}
|
|
82
|
+
/>
|
|
83
|
+
)
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// @ts-ignore error TS2339: Property 'displayName' does not exist on type 'typeof Status'.
|
|
88
|
+
Status.displayName = 'Badge.Status'
|
|
89
|
+
|
|
90
|
+
export default Status
|
package/src/Button/Button.tsx
CHANGED
|
@@ -12,7 +12,7 @@ import { useAccessibilityViolation } from '../hooks/use-accessibility-violation'
|
|
|
12
12
|
|
|
13
13
|
import Input from './Input'
|
|
14
14
|
|
|
15
|
-
type ButtonProps = {
|
|
15
|
+
export type ButtonProps = {
|
|
16
16
|
children?: any
|
|
17
17
|
|
|
18
18
|
/**
|
|
@@ -164,7 +164,7 @@ export function Button({
|
|
|
164
164
|
inline: true,
|
|
165
165
|
lineHeight,
|
|
166
166
|
position: 'relative',
|
|
167
|
-
radius:
|
|
167
|
+
radius: 4,
|
|
168
168
|
strokeAlign: 'inside',
|
|
169
169
|
strokeWeight: 1,
|
|
170
170
|
userSelect: 'none',
|
package/src/Calendar/Day.js
CHANGED
|
@@ -46,18 +46,26 @@ export type PublicProps = {
|
|
|
46
46
|
|
|
47
47
|
const Day = ({
|
|
48
48
|
backgroundColor,
|
|
49
|
+
// @ts-ignore error TS2339: Property 'cellSize' does not exist on type 'PublicProps'.
|
|
49
50
|
cellSize,
|
|
50
51
|
children,
|
|
51
52
|
color,
|
|
53
|
+
// @ts-ignore error TS2339: Property 'date' does not exist on type 'PublicProps'.
|
|
52
54
|
date,
|
|
53
55
|
disabled,
|
|
54
56
|
fontSize,
|
|
55
57
|
fontWeight,
|
|
58
|
+
// @ts-ignore error TS2339: Property 'isSameMonth' does not exist on type 'PublicProps'.
|
|
56
59
|
inSameMonth,
|
|
60
|
+
// @ts-ignore error TS2339: Property 'isMinDate' does not exist on type 'PublicProps'.
|
|
57
61
|
isMinDate,
|
|
62
|
+
// @ts-ignore error TS2339: Property 'isMaxDate' does not exist on type 'PublicProps'.
|
|
58
63
|
isMaxDate,
|
|
64
|
+
// @ts-ignore error TS2339: Property 'isSelected' does not exist on type 'PublicProps'.
|
|
59
65
|
isSelected,
|
|
66
|
+
// @ts-ignore error TS2339: Property 'isToday' does not exist on type 'PublicProps'.
|
|
60
67
|
isToday,
|
|
68
|
+
// @ts-ignore error TS2339: Property 'selectDate' does not exist on type 'PublicProps'.
|
|
61
69
|
selectDate,
|
|
62
70
|
selectedColor = 'primary',
|
|
63
71
|
statusColor = 'transparent',
|
|
@@ -69,6 +77,8 @@ const Day = ({
|
|
|
69
77
|
!disabled &&
|
|
70
78
|
!isMinDate &&
|
|
71
79
|
!isMaxDate &&
|
|
80
|
+
// @ts-ignore error TS2339: Property 'onClick' does not exist on type '{}'.
|
|
81
|
+
// @ts-ignore error TS2339: Property 'onMouseDown' does not exist on type '{}'.
|
|
72
82
|
(selectDate || restProps.onClick || restProps.onMouseDown)
|
|
73
83
|
return (
|
|
74
84
|
<StackView
|
|
@@ -88,6 +98,7 @@ const Day = ({
|
|
|
88
98
|
height="100%"
|
|
89
99
|
alignment="center"
|
|
90
100
|
distribution="center"
|
|
101
|
+
// @ts-ignore error TS2322: Type '"" | "none"' is not assignable to type 'PointerEvents'.
|
|
91
102
|
pointerEvents={(disabled || isMinDate || isMaxDate) && 'none'}
|
|
92
103
|
hover={
|
|
93
104
|
affordance && {
|
|
@@ -27,6 +27,7 @@ class ComboboxPopover extends Component<Props> {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
state = {
|
|
30
|
+
// @ts-ignore error TS2339: Property 'defaultOpen' does not exist on type 'Readonly<Props>'.
|
|
30
31
|
isPopoverOpen: this.props.defaultOpen || false,
|
|
31
32
|
}
|
|
32
33
|
|
|
@@ -41,6 +42,7 @@ class ComboboxPopover extends Component<Props> {
|
|
|
41
42
|
componentDidUpdate(lastProps) {
|
|
42
43
|
if (
|
|
43
44
|
lastProps.disabled !== lastProps.disabled &&
|
|
45
|
+
// @ts-ignore error TS2339: Property 'disabled' does not exist on type 'Readonly<Props>'.
|
|
44
46
|
this.props.disabled === true
|
|
45
47
|
) {
|
|
46
48
|
this.closePopover()
|
|
@@ -48,7 +50,9 @@ class ComboboxPopover extends Component<Props> {
|
|
|
48
50
|
const isComboboxFocused = document.activeElement === this.inputNode
|
|
49
51
|
if (
|
|
50
52
|
isComboboxFocused &&
|
|
53
|
+
// @ts-ignore error TS2339: Property 'value' does not exist on type 'Readonly<Props>'.
|
|
51
54
|
lastProps.value !== this.props.value &&
|
|
55
|
+
// @ts-ignore error TS2339: Property 'value' does not exist on type 'Readonly<Props>'.
|
|
52
56
|
this.props.value.length > 0 &&
|
|
53
57
|
!this.state.isPopoverOpen
|
|
54
58
|
) {
|
|
@@ -63,15 +67,18 @@ class ComboboxPopover extends Component<Props> {
|
|
|
63
67
|
}
|
|
64
68
|
|
|
65
69
|
setItemListRef = (component) => {
|
|
70
|
+
// @ts-ignore error TS2339: Property 'itemList' does not exist on type 'ComboboxPopover'.
|
|
66
71
|
this.itemList = component
|
|
67
72
|
}
|
|
68
73
|
|
|
69
74
|
setInputRef = (component) => {
|
|
75
|
+
// @ts-ignore error TS2339: Property 'input' does not exist on type 'ComboboxPopover'.
|
|
70
76
|
this.input = component
|
|
71
77
|
}
|
|
72
78
|
|
|
73
79
|
openPopover = () => {
|
|
74
80
|
this.setState({ isPopoverOpen: true }, () => {
|
|
81
|
+
// @ts-ignore error TS2339: Property 'itemList' does not exist on type 'ComboboxPopover'.
|
|
75
82
|
this.itemList.setHighlightedIndex(0, { maybeScrollIntoView: false })
|
|
76
83
|
})
|
|
77
84
|
}
|
|
@@ -80,6 +87,7 @@ class ComboboxPopover extends Component<Props> {
|
|
|
80
87
|
// push to next event stack because Popover events are messed up :(
|
|
81
88
|
this.closeRequestId = requestAnimationFrame(() => {
|
|
82
89
|
this.setState({ isPopoverOpen: false }, () => {
|
|
90
|
+
// @ts-ignore error TS2339: Property 'itemList' does not exist on type 'ComboboxPopover'.
|
|
83
91
|
this.itemList.clearHighlightedIndex()
|
|
84
92
|
})
|
|
85
93
|
})
|
|
@@ -88,7 +96,9 @@ class ComboboxPopover extends Component<Props> {
|
|
|
88
96
|
handleBlur = (event) => {
|
|
89
97
|
this.closePopover()
|
|
90
98
|
this.inputTouched = false
|
|
99
|
+
// @ts-ignore error TS2339: Property 'onBlur' does not exist on type 'Readonly<Props>'.
|
|
91
100
|
if (this.props.onBlur) {
|
|
101
|
+
// @ts-ignore error TS2339: Property 'onBlur' does not exist on type 'Readonly<Props>'.
|
|
92
102
|
this.props.onBlur(event)
|
|
93
103
|
}
|
|
94
104
|
}
|
|
@@ -97,30 +107,47 @@ class ComboboxPopover extends Component<Props> {
|
|
|
97
107
|
if (this.props.closeOnSelect) {
|
|
98
108
|
this.closePopover()
|
|
99
109
|
}
|
|
110
|
+
// @ts-ignore error TS2339: Property 'onSelect' does not exist on type 'Readonly<Props>'.
|
|
100
111
|
if (this.props.onSelect) {
|
|
112
|
+
// @ts-ignore error TS2339: Property 'onSelect' does not exist on type 'Readonly<Props>'.
|
|
101
113
|
this.props.onSelect(event)
|
|
102
114
|
}
|
|
103
115
|
}
|
|
104
116
|
|
|
105
117
|
render() {
|
|
106
118
|
const {
|
|
119
|
+
// @ts-ignore error TS2339: Property 'children' does not exist on type 'Readonly<Props>'.
|
|
107
120
|
children,
|
|
121
|
+
// @ts-ignore error TS2339: Property 'closeButton' does not exist on type 'Readonly<Props>'.
|
|
108
122
|
closeButton,
|
|
109
123
|
closeOnSelect,
|
|
124
|
+
// @ts-ignore error TS2339: Property 'disabled' does not exist on type 'Readonly<Props>'.
|
|
110
125
|
disabled,
|
|
126
|
+
// @ts-ignore error TS2339: Property 'dropdownButton' does not exist on type 'Readonly<Props>'.
|
|
111
127
|
dropdownButton,
|
|
128
|
+
// @ts-ignore error TS2339: Property 'innerRef' does not exist on type 'Readonly<Props>'.
|
|
112
129
|
innerRef,
|
|
130
|
+
// @ts-ignore error TS2339: Property 'defaultOpen' does not exist on type 'Readonly<Props>'.
|
|
113
131
|
defaultOpen,
|
|
132
|
+
// @ts-ignore error TS2339: Property 'lockScrollWhileOpen' does not exist on type 'Readonly<Props>'.
|
|
114
133
|
lockScrollWhileOpen,
|
|
134
|
+
// @ts-ignore error TS2339: Property 'onClear' does not exist on type 'Readonly<Props>'.
|
|
115
135
|
onClear,
|
|
136
|
+
// @ts-ignore error TS2339: Property 'onBlur' does not exist on type 'Readonly<Props>'.
|
|
116
137
|
onBlur,
|
|
138
|
+
// @ts-ignore error TS2339: Property 'onFocus' does not exist on type 'Readonly<Props>'.
|
|
117
139
|
onFocus,
|
|
140
|
+
// @ts-ignore error TS2339: Property 'onSelect' does not exist on type 'Readonly<Props>'.
|
|
118
141
|
onSelect,
|
|
119
142
|
openOnFocus,
|
|
143
|
+
// @ts-ignore error TS2339: Property 'placement' does not exist on type 'Readonly<Props>'.
|
|
120
144
|
placement,
|
|
121
145
|
popoverProps,
|
|
146
|
+
// @ts-ignore error TS2339: Property 'relativeTo' does not exist on type 'Readonly<Props>'.
|
|
122
147
|
relativeTo,
|
|
148
|
+
// @ts-ignore error TS2339: Property 'renderTo' does not exist on type 'Readonly<Props>'.
|
|
123
149
|
renderTo,
|
|
150
|
+
// @ts-ignore error TS2339: Property 'value' does not exist on type 'Readonly<Props>'.
|
|
124
151
|
value,
|
|
125
152
|
...restProps
|
|
126
153
|
} = this.props
|
|
@@ -138,6 +165,7 @@ class ComboboxPopover extends Component<Props> {
|
|
|
138
165
|
{...popoverProps}
|
|
139
166
|
as={Menu}
|
|
140
167
|
ref={(component) => {
|
|
168
|
+
// @ts-ignore error TS2339: Property 'popover' does not exist on type 'ComboboxPopover'.
|
|
141
169
|
this.popover = component
|
|
142
170
|
}}
|
|
143
171
|
innerRef={(node) => {
|
|
@@ -152,6 +180,7 @@ class ComboboxPopover extends Component<Props> {
|
|
|
152
180
|
renderTo={renderTo}
|
|
153
181
|
open={isPopoverOpen}
|
|
154
182
|
onBlur={requestBlur}
|
|
183
|
+
// @ts-ignore error TS2322: Type '(anchorProps: any) => Element' is not assignable to type 'ReactElement<...
|
|
155
184
|
anchorElement={(anchorProps) => (
|
|
156
185
|
<ComboboxInput
|
|
157
186
|
ref={this.setInputRef}
|
|
@@ -209,6 +238,7 @@ class ComboboxPopover extends Component<Props> {
|
|
|
209
238
|
} else {
|
|
210
239
|
this.openPopover()
|
|
211
240
|
}
|
|
241
|
+
// @ts-ignore error TS2339: Property 'input' does not exist on type 'ComboboxPopover'.
|
|
212
242
|
this.input.focus()
|
|
213
243
|
}}
|
|
214
244
|
/>
|
package/src/Input/Inline.js
CHANGED