datocms-react-ui 1.0.1 → 1.1.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/dist/cjs/Button/index.js +5 -5
- package/dist/cjs/Button/index.js.map +1 -1
- package/dist/cjs/ButtonGroup/Button/index.js +1 -1
- package/dist/cjs/ButtonGroup/Button/index.js.map +1 -1
- package/dist/cjs/ButtonGroup/Group/index.js +1 -1
- package/dist/cjs/ButtonGroup/Group/index.js.map +1 -1
- package/dist/cjs/Canvas/index.js +3 -3
- package/dist/cjs/Canvas/index.js.map +1 -1
- package/dist/cjs/ContextInspector/index.js +34 -35
- package/dist/cjs/ContextInspector/index.js.map +1 -1
- package/dist/cjs/Dropdown/Dropdown.js +8 -30
- package/dist/cjs/Dropdown/Dropdown.js.map +1 -1
- package/dist/cjs/Dropdown/Group.js +2 -2
- package/dist/cjs/Dropdown/Group.js.map +1 -1
- package/dist/cjs/Dropdown/Menu.js +20 -18
- package/dist/cjs/Dropdown/Menu.js.map +1 -1
- package/dist/cjs/Dropdown/MenuContext.js.map +1 -1
- package/dist/cjs/Dropdown/Option.js +3 -3
- package/dist/cjs/Dropdown/Option.js.map +1 -1
- package/dist/cjs/Dropdown/OptionAction.js +1 -1
- package/dist/cjs/Dropdown/OptionAction.js.map +1 -1
- package/dist/cjs/Dropdown/Portal.js +6 -28
- package/dist/cjs/Dropdown/Portal.js.map +1 -1
- package/dist/cjs/Dropdown/Separator.js +1 -1
- package/dist/cjs/Dropdown/Separator.js.map +1 -1
- package/dist/cjs/Dropdown/Text.js +1 -1
- package/dist/cjs/Dropdown/Text.js.map +1 -1
- package/dist/cjs/Dropdown/index.js.map +1 -1
- package/dist/cjs/FieldError/index.js.map +1 -1
- package/dist/cjs/FieldGroup/index.js +1 -1
- package/dist/cjs/FieldGroup/index.js.map +1 -1
- package/dist/cjs/FieldHint/index.js.map +1 -1
- package/dist/cjs/FieldWrapper/index.js.map +1 -1
- package/dist/cjs/Form/index.js +1 -1
- package/dist/cjs/Form/index.js.map +1 -1
- package/dist/cjs/FormLabel/index.js +1 -1
- package/dist/cjs/FormLabel/index.js.map +1 -1
- package/dist/cjs/Section/index.js +6 -6
- package/dist/cjs/Section/index.js.map +1 -1
- package/dist/cjs/SelectField/index.js.map +1 -1
- package/dist/cjs/SelectInput/index.js.map +1 -1
- package/dist/cjs/SidebarPanel/index.js +5 -5
- package/dist/cjs/SidebarPanel/index.js.map +1 -1
- package/dist/cjs/Spinner/index.js +1 -1
- package/dist/cjs/Spinner/index.js.map +1 -1
- package/dist/cjs/SwitchField/index.js +1 -1
- package/dist/cjs/SwitchField/index.js.map +1 -1
- package/dist/cjs/SwitchInput/index.js +5 -5
- package/dist/cjs/SwitchInput/index.js.map +1 -1
- package/dist/cjs/TextField/index.js.map +1 -1
- package/dist/cjs/TextInput/index.js +4 -26
- package/dist/cjs/TextInput/index.js.map +1 -1
- package/dist/cjs/TextareaField/index.js.map +1 -1
- package/dist/cjs/TextareaInput/index.js +4 -26
- package/dist/cjs/TextareaInput/index.js.map +1 -1
- package/dist/cjs/Toolbar/Button/index.js +1 -1
- package/dist/cjs/Toolbar/Button/index.js.map +1 -1
- package/dist/cjs/Toolbar/Stack/index.js +1 -1
- package/dist/cjs/Toolbar/Stack/index.js.map +1 -1
- package/dist/cjs/Toolbar/Title/index.js +1 -1
- package/dist/cjs/Toolbar/Title/index.js.map +1 -1
- package/dist/cjs/Toolbar/Toolbar/index.js +1 -1
- package/dist/cjs/Toolbar/Toolbar/index.js.map +1 -1
- package/dist/cjs/generateStyleFromCtx/index.js +16 -10
- package/dist/cjs/generateStyleFromCtx/index.js.map +1 -1
- package/dist/cjs/icons.js.map +1 -1
- package/dist/cjs/mergeRefs/index.js +3 -2
- package/dist/cjs/mergeRefs/index.js.map +1 -1
- package/dist/cjs/useMediaQuery/index.js +14 -5
- package/dist/cjs/useMediaQuery/index.js.map +1 -1
- package/dist/esm/Button/index.d.ts +2 -1
- package/dist/esm/Button/index.js +5 -5
- package/dist/esm/Button/index.js.map +1 -1
- package/dist/esm/ButtonGroup/Button/index.d.ts +1 -1
- package/dist/esm/ButtonGroup/Button/index.js +1 -1
- package/dist/esm/ButtonGroup/Button/index.js.map +1 -1
- package/dist/esm/ButtonGroup/Group/index.d.ts +1 -1
- package/dist/esm/ButtonGroup/Group/index.js +1 -1
- package/dist/esm/ButtonGroup/Group/index.js.map +1 -1
- package/dist/esm/Canvas/index.d.ts +2 -2
- package/dist/esm/Canvas/index.js +4 -4
- package/dist/esm/Canvas/index.js.map +1 -1
- package/dist/esm/ContextInspector/index.js +34 -35
- package/dist/esm/ContextInspector/index.js.map +1 -1
- package/dist/esm/Dropdown/Dropdown.js +4 -3
- package/dist/esm/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/Dropdown/Group.d.ts +2 -1
- package/dist/esm/Dropdown/Group.js +2 -2
- package/dist/esm/Dropdown/Group.js.map +1 -1
- package/dist/esm/Dropdown/Menu.js +20 -18
- package/dist/esm/Dropdown/Menu.js.map +1 -1
- package/dist/esm/Dropdown/MenuContext.d.ts +1 -1
- package/dist/esm/Dropdown/MenuContext.js.map +1 -1
- package/dist/esm/Dropdown/Option.js +3 -3
- package/dist/esm/Dropdown/Option.js.map +1 -1
- package/dist/esm/Dropdown/OptionAction.d.ts +2 -1
- package/dist/esm/Dropdown/OptionAction.js +1 -1
- package/dist/esm/Dropdown/OptionAction.js.map +1 -1
- package/dist/esm/Dropdown/Portal.d.ts +2 -1
- package/dist/esm/Dropdown/Portal.js +4 -3
- package/dist/esm/Dropdown/Portal.js.map +1 -1
- package/dist/esm/Dropdown/Separator.js +1 -1
- package/dist/esm/Dropdown/Separator.js.map +1 -1
- package/dist/esm/Dropdown/Text.js +1 -1
- package/dist/esm/Dropdown/Text.js.map +1 -1
- package/dist/esm/Dropdown/index.d.ts +6 -6
- package/dist/esm/Dropdown/index.js.map +1 -1
- package/dist/esm/FieldError/index.d.ts +1 -1
- package/dist/esm/FieldError/index.js.map +1 -1
- package/dist/esm/FieldGroup/index.js +1 -1
- package/dist/esm/FieldGroup/index.js.map +1 -1
- package/dist/esm/FieldHint/index.d.ts +1 -1
- package/dist/esm/FieldHint/index.js.map +1 -1
- package/dist/esm/FieldWrapper/index.d.ts +2 -2
- package/dist/esm/FieldWrapper/index.js.map +1 -1
- package/dist/esm/Form/index.d.ts +1 -1
- package/dist/esm/Form/index.js +1 -1
- package/dist/esm/Form/index.js.map +1 -1
- package/dist/esm/FormLabel/index.js +1 -1
- package/dist/esm/FormLabel/index.js.map +1 -1
- package/dist/esm/Section/index.d.ts +1 -1
- package/dist/esm/Section/index.js +6 -6
- package/dist/esm/Section/index.js.map +1 -1
- package/dist/esm/SelectField/index.d.ts +3 -3
- package/dist/esm/SelectField/index.js.map +1 -1
- package/dist/esm/SelectInput/index.d.ts +4 -4
- package/dist/esm/SelectInput/index.js.map +1 -1
- package/dist/esm/SidebarPanel/index.d.ts +1 -1
- package/dist/esm/SidebarPanel/index.js +5 -5
- package/dist/esm/SidebarPanel/index.js.map +1 -1
- package/dist/esm/Spinner/index.js +1 -1
- package/dist/esm/Spinner/index.js.map +1 -1
- package/dist/esm/SwitchField/index.d.ts +2 -2
- package/dist/esm/SwitchField/index.js +1 -1
- package/dist/esm/SwitchField/index.js.map +1 -1
- package/dist/esm/SwitchInput/index.js +5 -5
- package/dist/esm/SwitchInput/index.js.map +1 -1
- package/dist/esm/TextField/index.d.ts +2 -2
- package/dist/esm/TextField/index.js +1 -1
- package/dist/esm/TextField/index.js.map +1 -1
- package/dist/esm/TextInput/index.d.ts +2 -1
- package/dist/esm/TextInput/index.js +3 -2
- package/dist/esm/TextInput/index.js.map +1 -1
- package/dist/esm/TextareaField/index.d.ts +2 -2
- package/dist/esm/TextareaField/index.js.map +1 -1
- package/dist/esm/TextareaInput/index.d.ts +2 -1
- package/dist/esm/TextareaInput/index.js +3 -2
- package/dist/esm/TextareaInput/index.js.map +1 -1
- package/dist/esm/Toolbar/Button/index.d.ts +1 -1
- package/dist/esm/Toolbar/Button/index.js +1 -1
- package/dist/esm/Toolbar/Button/index.js.map +1 -1
- package/dist/esm/Toolbar/Stack/index.d.ts +1 -1
- package/dist/esm/Toolbar/Stack/index.js +1 -1
- package/dist/esm/Toolbar/Stack/index.js.map +1 -1
- package/dist/esm/Toolbar/Title/index.d.ts +1 -1
- package/dist/esm/Toolbar/Title/index.js +1 -1
- package/dist/esm/Toolbar/Title/index.js.map +1 -1
- package/dist/esm/Toolbar/Toolbar/index.d.ts +1 -1
- package/dist/esm/Toolbar/Toolbar/index.js +1 -1
- package/dist/esm/Toolbar/Toolbar/index.js.map +1 -1
- package/dist/esm/generateStyleFromCtx/index.d.ts +3 -3
- package/dist/esm/generateStyleFromCtx/index.js +16 -10
- package/dist/esm/generateStyleFromCtx/index.js.map +1 -1
- package/dist/esm/icons.d.ts +1 -1
- package/dist/esm/icons.js.map +1 -1
- package/dist/esm/mergeRefs/index.js +3 -2
- package/dist/esm/mergeRefs/index.js.map +1 -1
- package/dist/esm/useMediaQuery/index.js +14 -5
- package/dist/esm/useMediaQuery/index.js.map +1 -1
- package/dist/types/Button/index.d.ts +2 -1
- package/dist/types/ButtonGroup/Button/index.d.ts +1 -1
- package/dist/types/ButtonGroup/Group/index.d.ts +1 -1
- package/dist/types/Canvas/index.d.ts +2 -2
- package/dist/types/Dropdown/Group.d.ts +2 -1
- package/dist/types/Dropdown/MenuContext.d.ts +1 -1
- package/dist/types/Dropdown/OptionAction.d.ts +2 -1
- package/dist/types/Dropdown/Portal.d.ts +2 -1
- package/dist/types/Dropdown/index.d.ts +6 -6
- package/dist/types/FieldError/index.d.ts +1 -1
- package/dist/types/FieldHint/index.d.ts +1 -1
- package/dist/types/FieldWrapper/index.d.ts +2 -2
- package/dist/types/Form/index.d.ts +1 -1
- package/dist/types/Section/index.d.ts +1 -1
- package/dist/types/SelectField/index.d.ts +3 -3
- package/dist/types/SelectInput/index.d.ts +4 -4
- package/dist/types/SidebarPanel/index.d.ts +1 -1
- package/dist/types/SwitchField/index.d.ts +2 -2
- package/dist/types/TextField/index.d.ts +2 -2
- package/dist/types/TextInput/index.d.ts +2 -1
- package/dist/types/TextareaField/index.d.ts +2 -2
- package/dist/types/TextareaInput/index.d.ts +2 -1
- package/dist/types/Toolbar/Button/index.d.ts +1 -1
- package/dist/types/Toolbar/Stack/index.d.ts +1 -1
- package/dist/types/Toolbar/Title/index.d.ts +1 -1
- package/dist/types/Toolbar/Toolbar/index.d.ts +1 -1
- package/dist/types/generateStyleFromCtx/index.d.ts +3 -3
- package/dist/types/icons.d.ts +1 -1
- package/package.json +3 -3
- package/src/Button/index.tsx +6 -9
- package/src/ButtonGroup/Button/index.tsx +6 -2
- package/src/ButtonGroup/Group/index.tsx +2 -2
- package/src/Canvas/index.tsx +10 -5
- package/src/ContextInspector/index.tsx +76 -80
- package/src/Dropdown/Dropdown.tsx +4 -3
- package/src/Dropdown/Group.tsx +4 -3
- package/src/Dropdown/Menu.tsx +25 -24
- package/src/Dropdown/MenuContext.tsx +1 -1
- package/src/Dropdown/Option.tsx +3 -3
- package/src/Dropdown/OptionAction.tsx +3 -2
- package/src/Dropdown/Portal.tsx +5 -4
- package/src/Dropdown/Separator.tsx +1 -1
- package/src/Dropdown/Text.tsx +1 -1
- package/src/Dropdown/index.tsx +6 -6
- package/src/FieldError/index.tsx +1 -1
- package/src/FieldGroup/index.tsx +1 -1
- package/src/FieldHint/index.tsx +1 -1
- package/src/FieldWrapper/index.tsx +2 -2
- package/src/Form/index.tsx +5 -5
- package/src/FormLabel/index.tsx +1 -1
- package/src/Section/index.tsx +6 -6
- package/src/SelectField/index.tsx +7 -7
- package/src/SelectInput/index.tsx +9 -7
- package/src/SidebarPanel/index.tsx +8 -8
- package/src/Spinner/index.tsx +1 -1
- package/src/SwitchField/index.tsx +4 -4
- package/src/SwitchInput/index.tsx +5 -5
- package/src/TextField/index.tsx +7 -2
- package/src/TextInput/index.tsx +3 -2
- package/src/TextareaField/index.tsx +3 -3
- package/src/TextareaInput/index.tsx +3 -2
- package/src/Toolbar/Button/index.tsx +6 -2
- package/src/Toolbar/Stack/index.tsx +2 -2
- package/src/Toolbar/Title/index.tsx +2 -2
- package/src/Toolbar/Toolbar/index.tsx +2 -2
- package/src/generateStyleFromCtx/index.ts +22 -18
- package/src/icons.tsx +4 -4
- package/src/mergeRefs/index.ts +4 -3
- package/src/useMediaQuery/index.ts +5 -3
- package/types.json +353 -353
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type RefObject } from 'react';
|
|
2
3
|
export declare type TextInputChangeEventHandler = (newValue: string, event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
3
4
|
export declare type TextInputProps = {
|
|
4
5
|
type?: 'text' | 'password' | 'email' | 'number' | 'search' | 'url' | 'date' | 'time';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { FormLabelProps, TextareaInputProps } from '..';
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type FormLabelProps, type TextareaInputProps } from '..';
|
|
3
3
|
declare type TextareaFieldProps = {
|
|
4
4
|
id: string;
|
|
5
5
|
name: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type RefObject } from 'react';
|
|
2
3
|
export declare type TextareaInputChangeEventHandler = (newValue: string, event: React.ChangeEvent<HTMLTextAreaElement>) => void;
|
|
3
4
|
export declare type TextareaInputProps = {
|
|
4
5
|
name?: string;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { RenderProperties } from 'datocms-plugin-sdk';
|
|
2
|
-
import { CSSProperties } from 'react';
|
|
3
|
-
export declare function generateStyleFromCtx(ctx: RenderProperties): CSSProperties;
|
|
1
|
+
import type { RenderProperties } from 'datocms-plugin-sdk';
|
|
2
|
+
import type { CSSProperties } from 'react';
|
|
3
|
+
export declare function generateStyleFromCtx(ctx: RenderProperties, noBodyPadding?: boolean): CSSProperties;
|
package/dist/types/icons.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "datocms-react-ui",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "React components to use inside DatoCMS plugins",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"datocms",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"classnames": "^2.3.1",
|
|
44
|
-
"datocms-plugin-sdk": "^1.0
|
|
44
|
+
"datocms-plugin-sdk": "^1.1.0",
|
|
45
45
|
"react-intersection-observer": "^8.31.0",
|
|
46
46
|
"react-select": "^5.2.1",
|
|
47
47
|
"scroll-into-view-if-needed": "^2.2.20"
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
"postcss-nested": "^5.0.6",
|
|
58
58
|
"typedoc": "^0.23.20"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "fa6d8ee19dcbc6553af5bf1a74dcca5d50db21e7"
|
|
61
61
|
}
|
package/src/Button/index.tsx
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import React, { CSSProperties, MouseEventHandler, ReactNode } from 'react';
|
|
2
1
|
import cn from 'classnames';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import type { CSSProperties, MouseEventHandler, ReactNode } from 'react';
|
|
3
4
|
import styles from './styles.module.css.json';
|
|
4
5
|
|
|
5
6
|
export type ButtonProps = {
|
|
@@ -107,12 +108,10 @@ export function Button({
|
|
|
107
108
|
onClick={onClick}
|
|
108
109
|
style={style}
|
|
109
110
|
>
|
|
110
|
-
{leftIcon &&
|
|
111
|
-
<span className={styles['button__leftIcon']}>{leftIcon}</span>
|
|
112
|
-
)}
|
|
111
|
+
{leftIcon && <span className={styles.button__leftIcon}>{leftIcon}</span>}
|
|
113
112
|
{children && <span>{children}</span>}
|
|
114
113
|
{rightIcon && (
|
|
115
|
-
<span className={styles
|
|
114
|
+
<span className={styles.button__rightIcon}>{rightIcon}</span>
|
|
116
115
|
)}
|
|
117
116
|
</button>
|
|
118
117
|
);
|
|
@@ -161,12 +160,10 @@ export function ButtonLink({
|
|
|
161
160
|
style={style}
|
|
162
161
|
onClick={onClick}
|
|
163
162
|
>
|
|
164
|
-
{leftIcon &&
|
|
165
|
-
<span className={styles['button__leftIcon']}>{leftIcon}</span>
|
|
166
|
-
)}
|
|
163
|
+
{leftIcon && <span className={styles.button__leftIcon}>{leftIcon}</span>}
|
|
167
164
|
{children && <span>{children}</span>}
|
|
168
165
|
{rightIcon && (
|
|
169
|
-
<span className={styles
|
|
166
|
+
<span className={styles.button__rightIcon}>{rightIcon}</span>
|
|
170
167
|
)}
|
|
171
168
|
</a>
|
|
172
169
|
);
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import classNames from 'classnames';
|
|
2
|
-
import React, {
|
|
2
|
+
import React, {
|
|
3
|
+
type CSSProperties,
|
|
4
|
+
type MouseEventHandler,
|
|
5
|
+
type ReactNode,
|
|
6
|
+
} from 'react';
|
|
3
7
|
import s from './styles.module.css.json';
|
|
4
8
|
|
|
5
9
|
export type ButtonProps = {
|
|
@@ -25,7 +29,7 @@ export function Button({
|
|
|
25
29
|
onClick={onClick}
|
|
26
30
|
disabled={disabled}
|
|
27
31
|
className={classNames(
|
|
28
|
-
s
|
|
32
|
+
s.Button,
|
|
29
33
|
{
|
|
30
34
|
[s['Button--selected']]: selected,
|
|
31
35
|
[s['Button--disabled']]: disabled,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import classNames from 'classnames';
|
|
2
|
-
import React, { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
import React, { type CSSProperties, type ReactNode } from 'react';
|
|
3
3
|
import s from './styles.module.css.json';
|
|
4
4
|
|
|
5
5
|
export type GroupProps = {
|
|
@@ -24,7 +24,7 @@ export type GroupProps = {
|
|
|
24
24
|
*/
|
|
25
25
|
export function Group({ children, style, className }: GroupProps): JSX.Element {
|
|
26
26
|
return (
|
|
27
|
-
<div className={classNames(s
|
|
27
|
+
<div className={classNames(s.Group, className)} style={style}>
|
|
28
28
|
{children}
|
|
29
29
|
</div>
|
|
30
30
|
);
|
package/src/Canvas/index.tsx
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import classNames from 'classnames';
|
|
2
|
+
import type {
|
|
3
3
|
RenderMethods,
|
|
4
4
|
RenderProperties,
|
|
5
5
|
SizingUtilities,
|
|
6
6
|
} from 'datocms-plugin-sdk';
|
|
7
|
-
import
|
|
7
|
+
import React, {
|
|
8
|
+
createContext,
|
|
9
|
+
type ReactNode,
|
|
10
|
+
useContext,
|
|
11
|
+
useEffect,
|
|
12
|
+
} from 'react';
|
|
8
13
|
import { generateStyleFromCtx } from '../generateStyleFromCtx';
|
|
9
|
-
import
|
|
14
|
+
import s from './styles.module.css.json';
|
|
10
15
|
|
|
11
16
|
type BaseRenderPropertiesAndMethods = RenderProperties & RenderMethods;
|
|
12
17
|
|
|
@@ -550,7 +555,7 @@ export function Canvas({
|
|
|
550
555
|
return (
|
|
551
556
|
<CtxContext.Provider value={ctx}>
|
|
552
557
|
<div
|
|
553
|
-
className={classNames(s
|
|
558
|
+
className={classNames(s.themeVariables, s.canvas)}
|
|
554
559
|
style={generateStyleFromCtx(ctx)}
|
|
555
560
|
>
|
|
556
561
|
{children}
|
|
@@ -99,7 +99,7 @@ function buildCtx(manifest: any, definition: any): any {
|
|
|
99
99
|
if (definition.type.type === 'intersection') {
|
|
100
100
|
let result: any[] = [];
|
|
101
101
|
|
|
102
|
-
definition.type.types
|
|
102
|
+
for (const elementInIntersection of definition.type.types) {
|
|
103
103
|
if (elementInIntersection.type === 'reference') {
|
|
104
104
|
const innerDefinition = findChildrenById(
|
|
105
105
|
manifest,
|
|
@@ -107,7 +107,7 @@ function buildCtx(manifest: any, definition: any): any {
|
|
|
107
107
|
);
|
|
108
108
|
result = [...result, buildCtx(manifest, innerDefinition)];
|
|
109
109
|
}
|
|
110
|
-
}
|
|
110
|
+
}
|
|
111
111
|
|
|
112
112
|
return result.flat().filter((x) => x);
|
|
113
113
|
}
|
|
@@ -128,11 +128,7 @@ function buildCtx(manifest: any, definition: any): any {
|
|
|
128
128
|
name: definition.name,
|
|
129
129
|
description: findShortText(definition),
|
|
130
130
|
properties: properties.map((child: any) => {
|
|
131
|
-
if (
|
|
132
|
-
child.type &&
|
|
133
|
-
child.type.declaration &&
|
|
134
|
-
child.type.declaration.signatures
|
|
135
|
-
) {
|
|
131
|
+
if (child.type?.declaration?.signatures) {
|
|
136
132
|
child.signatures = child.type.declaration.signatures;
|
|
137
133
|
}
|
|
138
134
|
|
|
@@ -176,6 +172,7 @@ const ExpandablePane = ({ children, label }: any) => {
|
|
|
176
172
|
return (
|
|
177
173
|
<div className={s.panel}>
|
|
178
174
|
<button
|
|
175
|
+
type="button"
|
|
179
176
|
className={s.panelHandle}
|
|
180
177
|
onClick={() => setOpen((open) => !open)}
|
|
181
178
|
>
|
|
@@ -249,81 +246,80 @@ export function ContextInspector(): JSX.Element {
|
|
|
249
246
|
|
|
250
247
|
return (
|
|
251
248
|
<div className={s.inspector}>
|
|
252
|
-
{groups
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
<
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
{
|
|
266
|
-
<div
|
|
267
|
-
<
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
{
|
|
281
|
-
<
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
<
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
</Button>
|
|
296
|
-
</div>
|
|
249
|
+
{groups?.map((group) => {
|
|
250
|
+
const name = group.name
|
|
251
|
+
.replace('AdditionalMethods', 'Methods')
|
|
252
|
+
.replace('AdditionalProperties', 'Properties')
|
|
253
|
+
.replace('Methods', ' methods')
|
|
254
|
+
.replace('Properties', ' properties')
|
|
255
|
+
.replace('Utilities', ' utilities');
|
|
256
|
+
|
|
257
|
+
return (
|
|
258
|
+
<ExpandablePane label={`${name}`} key={name}>
|
|
259
|
+
<div className={s.groupDescription}>{group.description}</div>
|
|
260
|
+
<div className={s.propertyGroup}>
|
|
261
|
+
{(group.properties || []).map((item: any) => (
|
|
262
|
+
<div key={item.name} className={s.propertyOrMethod}>
|
|
263
|
+
<div className={s.propertyOrMethodBody}>
|
|
264
|
+
<a
|
|
265
|
+
className={s.propertyOrMethodName}
|
|
266
|
+
href={`${baseUrl}#L${item.lineNumber}`}
|
|
267
|
+
target="_blank"
|
|
268
|
+
rel="noreferrer"
|
|
269
|
+
>
|
|
270
|
+
{item.name}
|
|
271
|
+
{item.type === 'function' ? '()' : ''}
|
|
272
|
+
</a>
|
|
273
|
+
|
|
274
|
+
<div>{item.description}</div>
|
|
275
|
+
</div>
|
|
276
|
+
{item.type === 'property' && (
|
|
277
|
+
<div className={s.propertyOrMethodExample}>
|
|
278
|
+
<pre>
|
|
279
|
+
{JSON.stringify((ctx as any)[item.name], null, 2)}
|
|
280
|
+
</pre>
|
|
281
|
+
<div className={s.propertyOrMethodExampleActions}>
|
|
282
|
+
<Button
|
|
283
|
+
type="button"
|
|
284
|
+
buttonSize="xxs"
|
|
285
|
+
onClick={handleCopy.bind(
|
|
286
|
+
null,
|
|
287
|
+
JSON.stringify((ctx as any)[item.name], null, 2),
|
|
288
|
+
)}
|
|
289
|
+
>
|
|
290
|
+
Copy value
|
|
291
|
+
</Button>
|
|
297
292
|
</div>
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
</
|
|
293
|
+
</div>
|
|
294
|
+
)}
|
|
295
|
+
{item.example && (
|
|
296
|
+
<div className={s.propertyOrMethodExample}>
|
|
297
|
+
<pre>{item.example}</pre>
|
|
298
|
+
<div className={s.propertyOrMethodExampleActions}>
|
|
299
|
+
<Button
|
|
300
|
+
type="button"
|
|
301
|
+
buttonSize="xxs"
|
|
302
|
+
buttonType="primary"
|
|
303
|
+
onClick={handleRun.bind(null, item.example)}
|
|
304
|
+
>
|
|
305
|
+
Run example
|
|
306
|
+
</Button>
|
|
307
|
+
<Button
|
|
308
|
+
type="button"
|
|
309
|
+
buttonSize="xxs"
|
|
310
|
+
onClick={handleCopy.bind(null, item.example)}
|
|
311
|
+
>
|
|
312
|
+
Copy example
|
|
313
|
+
</Button>
|
|
319
314
|
</div>
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
</
|
|
325
|
-
|
|
326
|
-
|
|
315
|
+
</div>
|
|
316
|
+
)}
|
|
317
|
+
</div>
|
|
318
|
+
))}
|
|
319
|
+
</div>
|
|
320
|
+
</ExpandablePane>
|
|
321
|
+
);
|
|
322
|
+
})}
|
|
327
323
|
</div>
|
|
328
324
|
);
|
|
329
325
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useCallback, useState } from 'react';
|
|
2
3
|
import { useClickOutside } from '../useClickOutside';
|
|
3
4
|
import { DropdownContext } from './DropdownContext';
|
|
4
5
|
import s from './styles.module.css.json';
|
|
@@ -123,7 +124,7 @@ export function Dropdown({
|
|
|
123
124
|
|
|
124
125
|
const handleClickOutside = useCallback(
|
|
125
126
|
(event) => {
|
|
126
|
-
if (!event.target.closest(
|
|
127
|
+
if (!event.target.closest(`.${s.Dropdown__menu}`) && isOpen) {
|
|
127
128
|
setOpen(false);
|
|
128
129
|
}
|
|
129
130
|
},
|
|
@@ -142,7 +143,7 @@ export function Dropdown({
|
|
|
142
143
|
|
|
143
144
|
return (
|
|
144
145
|
<DropdownContext.Provider value={{ closeMenu: handleClose }}>
|
|
145
|
-
<div className={s
|
|
146
|
+
<div className={s.Dropdown} ref={outsideRef}>
|
|
146
147
|
{renderTrigger({ open: isOpen, onClick: handleToggle })}
|
|
147
148
|
{isOpen && children}
|
|
148
149
|
</div>
|
package/src/Dropdown/Group.tsx
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
2
3
|
import s from './styles.module.css.json';
|
|
3
4
|
|
|
4
5
|
export type GroupProps = {
|
|
@@ -9,8 +10,8 @@ export type GroupProps = {
|
|
|
9
10
|
export const Group = ({ children, name }: GroupProps): JSX.Element => {
|
|
10
11
|
return (
|
|
11
12
|
<div>
|
|
12
|
-
<div className={s
|
|
13
|
-
<div className={s
|
|
13
|
+
<div className={s.Dropdown__menu__group__title}>{name}</div>
|
|
14
|
+
<div className={s.Dropdown__menu__group__content}>{children}</div>
|
|
14
15
|
</div>
|
|
15
16
|
);
|
|
16
17
|
};
|
package/src/Dropdown/Menu.tsx
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import React, {
|
|
2
2
|
createRef,
|
|
3
|
-
SyntheticEvent,
|
|
3
|
+
type SyntheticEvent,
|
|
4
4
|
useCallback,
|
|
5
5
|
useContext,
|
|
6
6
|
useEffect,
|
|
7
7
|
useRef,
|
|
8
8
|
useState,
|
|
9
9
|
} from 'react';
|
|
10
|
-
import scrollIntoView from 'scroll-into-view-if-needed';
|
|
11
10
|
import { useInView } from 'react-intersection-observer';
|
|
12
|
-
import
|
|
11
|
+
import scrollIntoView from 'scroll-into-view-if-needed';
|
|
12
|
+
import { mergeRefs } from '../mergeRefs';
|
|
13
13
|
import { DropdownContext } from './DropdownContext';
|
|
14
14
|
import { Group } from './Group';
|
|
15
15
|
import { MenuContext } from './MenuContext';
|
|
16
|
+
import { Portal } from './Portal';
|
|
16
17
|
import s from './styles.module.css.json';
|
|
17
|
-
import { mergeRefs } from '../mergeRefs';
|
|
18
18
|
|
|
19
19
|
const MenuDesktopContainer = React.forwardRef<
|
|
20
20
|
HTMLDivElement,
|
|
@@ -33,13 +33,17 @@ const MenuDesktopContainer = React.forwardRef<
|
|
|
33
33
|
|
|
34
34
|
function getAbsoluteHeight(el: HTMLElement) {
|
|
35
35
|
const styles = window.getComputedStyle(el);
|
|
36
|
-
const margin =
|
|
36
|
+
const margin =
|
|
37
|
+
Number.parseFloat(styles.marginTop) +
|
|
38
|
+
Number.parseFloat(styles.marginBottom);
|
|
37
39
|
return Math.ceil(el.offsetHeight + margin);
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
function getAbsoluteWidth(el: HTMLElement) {
|
|
41
43
|
const styles = window.getComputedStyle(el);
|
|
42
|
-
const margin =
|
|
44
|
+
const margin =
|
|
45
|
+
Number.parseFloat(styles.marginLeft) +
|
|
46
|
+
Number.parseFloat(styles.marginRight);
|
|
43
47
|
return Math.ceil(el.offsetWidth + margin);
|
|
44
48
|
}
|
|
45
49
|
|
|
@@ -68,14 +72,14 @@ function setPosition(
|
|
|
68
72
|
window.innerHeight || 0,
|
|
69
73
|
);
|
|
70
74
|
|
|
71
|
-
const menu = panel.querySelector<HTMLElement>(
|
|
75
|
+
const menu = panel.querySelector<HTMLElement>(`.${s.Dropdown__menu}`);
|
|
72
76
|
|
|
73
77
|
if (!menu) {
|
|
74
78
|
return;
|
|
75
79
|
}
|
|
76
80
|
|
|
77
81
|
const styles = window.getComputedStyle(menu);
|
|
78
|
-
const marginTop = parseFloat(styles.marginTop);
|
|
82
|
+
const marginTop = Number.parseFloat(styles.marginTop);
|
|
79
83
|
|
|
80
84
|
const fitsBelow = rect.bottom + height <= windowHeight;
|
|
81
85
|
const fitsAbove = rect.top - height > 0;
|
|
@@ -96,7 +100,7 @@ function setPosition(
|
|
|
96
100
|
menu.style.maxHeight = `${windowHeight - rect.bottom - marginTop - 10}px`;
|
|
97
101
|
} else {
|
|
98
102
|
// eslint-disable-next-line no-param-reassign
|
|
99
|
-
panel.style.top =
|
|
103
|
+
panel.style.top = '0px';
|
|
100
104
|
menu.style.maxHeight = `${rect.top - marginTop}px`;
|
|
101
105
|
}
|
|
102
106
|
}
|
|
@@ -178,20 +182,18 @@ export const Menu = ({
|
|
|
178
182
|
const delta = event.key === 'ArrowUp' ? -1 : 1;
|
|
179
183
|
|
|
180
184
|
const selectedOption = contentRef.current.querySelector(
|
|
181
|
-
|
|
185
|
+
`.${s['Dropdown__menu__option--is-selected']}`,
|
|
182
186
|
);
|
|
183
187
|
|
|
184
|
-
let nextOption;
|
|
188
|
+
let nextOption: Element | null;
|
|
185
189
|
|
|
186
190
|
if (!selectedOption) {
|
|
187
191
|
nextOption = contentRef.current.querySelector(
|
|
188
|
-
|
|
192
|
+
`.${s.Dropdown__menu__option}`,
|
|
189
193
|
);
|
|
190
194
|
} else {
|
|
191
195
|
const elements = Array.from(
|
|
192
|
-
contentRef.current.querySelectorAll(
|
|
193
|
-
'.' + s['Dropdown__menu__option'],
|
|
194
|
-
),
|
|
196
|
+
contentRef.current.querySelectorAll(`.${s.Dropdown__menu__option}`),
|
|
195
197
|
);
|
|
196
198
|
const index = elements.findIndex((el) => el === selectedOption);
|
|
197
199
|
const nextIndex =
|
|
@@ -223,13 +225,13 @@ export const Menu = ({
|
|
|
223
225
|
}
|
|
224
226
|
|
|
225
227
|
const selectedOption = contentRef.current.querySelector(
|
|
226
|
-
|
|
228
|
+
`.${s['Dropdown__menu__option--is-selected']}`,
|
|
227
229
|
);
|
|
228
230
|
|
|
229
231
|
if (selectedOption) {
|
|
230
232
|
const id = (selectedOption as HTMLButtonElement).dataset.optionId;
|
|
231
233
|
const option = options.find((x) => x.id === id);
|
|
232
|
-
if (option
|
|
234
|
+
if (option?.handler) {
|
|
233
235
|
option.handler(event);
|
|
234
236
|
}
|
|
235
237
|
}
|
|
@@ -280,31 +282,30 @@ export const Menu = ({
|
|
|
280
282
|
<>
|
|
281
283
|
<div
|
|
282
284
|
ref={mergeRefs(observerRef, parentRef)}
|
|
283
|
-
className={s
|
|
285
|
+
className={s.Dropdown__spacer}
|
|
284
286
|
/>
|
|
285
287
|
<MenuDesktopContainer ref={menuRef}>
|
|
286
|
-
<div className={s
|
|
288
|
+
<div className={s.Dropdown__menu}>
|
|
287
289
|
{options.length > 5 && (
|
|
288
|
-
<div className={s
|
|
290
|
+
<div className={s.Dropdown__menu__search}>
|
|
289
291
|
<input
|
|
290
292
|
type="text"
|
|
291
293
|
value={searchTerm || ''}
|
|
292
294
|
onChange={handleChange}
|
|
293
295
|
onKeyDown={handleKeyDown}
|
|
294
296
|
placeholder="Search..."
|
|
295
|
-
|
|
296
|
-
className={s['Dropdown__menu__search__input']}
|
|
297
|
+
className={s.Dropdown__menu__search__input}
|
|
297
298
|
/>
|
|
298
299
|
</div>
|
|
299
300
|
)}
|
|
300
301
|
<MenuContext.Provider
|
|
301
302
|
value={{ searchTerm, addOption, setClickHandlerForOption }}
|
|
302
303
|
>
|
|
303
|
-
<div className={s
|
|
304
|
+
<div className={s.Dropdown__menu__inner} ref={contentRef}>
|
|
304
305
|
{anyGroup ? (
|
|
305
306
|
children
|
|
306
307
|
) : (
|
|
307
|
-
<div className={s
|
|
308
|
+
<div className={s.Dropdown__menu__group__content}>
|
|
308
309
|
{children}
|
|
309
310
|
</div>
|
|
310
311
|
)}
|
package/src/Dropdown/Option.tsx
CHANGED
|
@@ -118,21 +118,21 @@ export const Option = ({
|
|
|
118
118
|
<>
|
|
119
119
|
<button
|
|
120
120
|
type="button"
|
|
121
|
-
className={s
|
|
121
|
+
className={s.Dropdown__menu__option__content}
|
|
122
122
|
ref={contentRef}
|
|
123
123
|
onClick={handleClick}
|
|
124
124
|
>
|
|
125
125
|
{notButtons}
|
|
126
126
|
</button>
|
|
127
127
|
{buttons.length > 0 && (
|
|
128
|
-
<div className={s
|
|
128
|
+
<div className={s.Dropdown__menu__option__icons}>{buttons}</div>
|
|
129
129
|
)}
|
|
130
130
|
</>
|
|
131
131
|
);
|
|
132
132
|
|
|
133
133
|
return (
|
|
134
134
|
<div
|
|
135
|
-
className={classNames(s
|
|
135
|
+
className={classNames(s.Dropdown__menu__option, {
|
|
136
136
|
[s['Dropdown__menu__option--is-active']]: active,
|
|
137
137
|
[s['Dropdown__menu__option--is-disabled']]: disabled,
|
|
138
138
|
[s['Dropdown__menu__option--is-valid']]: valid,
|