@imposium-hub/components 2.15.0-0 → 2.15.0-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/components/app-wrapper/AppWrapper.d.ts +6 -0
- package/dist/cjs/components/app-wrapper/AppWrapper.js +7 -3
- package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
- package/dist/cjs/components/assets/AssetsUploadMenu.js +5 -5
- package/dist/cjs/components/context-menu/AnimateComponent.d.ts +1 -0
- package/dist/cjs/components/context-menu/AnimateComponent.js.map +1 -1
- package/dist/cjs/components/context-menu/ContextMenu.d.ts +1 -0
- package/dist/cjs/components/context-menu/ContextMenu.js +6 -6
- package/dist/cjs/components/context-menu/ContextMenu.js.map +1 -1
- package/dist/cjs/components/context-menu/ContextMenuItem.d.ts +1 -0
- package/dist/cjs/components/context-menu/ContextMenuItem.js.map +1 -1
- package/dist/cjs/components/context-menu/ContextMenuTrigger.d.ts +1 -0
- package/dist/cjs/components/context-menu/ContextMenuTrigger.js.map +1 -1
- package/dist/cjs/components/context-menu/SubMenu.d.ts +1 -0
- package/dist/cjs/components/context-menu/SubMenu.js.map +1 -1
- package/dist/cjs/components/number-field/NumberField.d.ts +2 -1
- package/dist/cjs/components/number-field/NumberField.js +18 -17
- package/dist/cjs/components/number-field/NumberField.js.map +1 -1
- package/dist/cjs/components/portal/Portal.d.ts +1 -0
- package/dist/cjs/components/portal/Portal.js.map +1 -1
- package/dist/cjs/components/publish-wizard/PublishWizard.d.ts +1 -1
- package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
- package/dist/cjs/components/story-previewer/StoryPreviewer.js +15 -2
- package/dist/cjs/components/story-previewer/StoryPreviewer.js.map +1 -1
- package/dist/cjs/components/tabs/Tabs.d.ts +12 -4
- package/dist/cjs/components/tabs/Tabs.js +21 -3
- package/dist/cjs/components/tabs/Tabs.js.map +1 -1
- package/dist/cjs/components/tabs/Tabs.stories.d.ts +1 -3
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +36 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/routing.d.ts +4 -2
- package/dist/cjs/utils/routing.js +8 -4
- package/dist/cjs/utils/routing.js.map +1 -1
- package/dist/esm/components/app-wrapper/AppWrapper.d.ts +6 -0
- package/dist/esm/components/app-wrapper/AppWrapper.js +8 -4
- package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
- package/dist/esm/components/assets/AssetsUploadMenu.js +5 -5
- package/dist/esm/components/context-menu/AnimateComponent.d.ts +1 -0
- package/dist/esm/components/context-menu/AnimateComponent.js.map +1 -1
- package/dist/esm/components/context-menu/ContextMenu.d.ts +1 -0
- package/dist/esm/components/context-menu/ContextMenu.js +2 -1
- package/dist/esm/components/context-menu/ContextMenu.js.map +1 -1
- package/dist/esm/components/context-menu/ContextMenuItem.d.ts +1 -0
- package/dist/esm/components/context-menu/ContextMenuItem.js.map +1 -1
- package/dist/esm/components/context-menu/ContextMenuTrigger.d.ts +1 -0
- package/dist/esm/components/context-menu/ContextMenuTrigger.js.map +1 -1
- package/dist/esm/components/context-menu/SubMenu.d.ts +1 -0
- package/dist/esm/components/context-menu/SubMenu.js.map +1 -1
- package/dist/esm/components/number-field/NumberField.d.ts +2 -1
- package/dist/esm/components/number-field/NumberField.js +15 -17
- package/dist/esm/components/number-field/NumberField.js.map +1 -1
- package/dist/esm/components/portal/Portal.d.ts +1 -0
- package/dist/esm/components/portal/Portal.js.map +1 -1
- package/dist/esm/components/publish-wizard/PublishWizard.d.ts +1 -1
- package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
- package/dist/esm/components/story-previewer/StoryPreviewer.js +14 -2
- package/dist/esm/components/story-previewer/StoryPreviewer.js.map +1 -1
- package/dist/esm/components/tabs/Tabs.d.ts +12 -4
- package/dist/esm/components/tabs/Tabs.js +11 -4
- package/dist/esm/components/tabs/Tabs.js.map +1 -1
- package/dist/esm/components/tabs/Tabs.stories.d.ts +1 -3
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/routing.d.ts +4 -2
- package/dist/esm/utils/routing.js +6 -3
- package/dist/esm/utils/routing.js.map +1 -1
- package/dist/styles.css +3 -3
- package/dist/styles.less +64 -63
- package/less/components/assets.less +6 -5
- package/less/components/auth-gate.less +1 -1
- package/less/components/data-table.less +2 -2
- package/less/components/determinate-loader.less +2 -2
- package/less/components/font-preview.less +1 -1
- package/less/components/form-field.less +5 -5
- package/less/components/header.less +30 -30
- package/less/components/modal.less +2 -2
- package/less/components/player.less +2 -2
- package/less/components/section.less +2 -2
- package/less/components/static-composition-editor.less +4 -4
- package/less/components/story-previewer.less +4 -4
- package/less/components/tabs.less +3 -3
- package/package.json +8 -8
- package/src/components/app-wrapper/AppWrapper.tsx +17 -4
- package/src/components/assets/AssetsUploadMenu.tsx +5 -5
- package/src/components/context-menu/AnimateComponent.tsx +1 -0
- package/src/components/context-menu/ContextMenu.tsx +15 -13
- package/src/components/context-menu/ContextMenuItem.tsx +1 -0
- package/src/components/context-menu/ContextMenuTrigger.tsx +1 -0
- package/src/components/context-menu/SubMenu.tsx +1 -0
- package/src/components/number-field/NumberField.tsx +21 -18
- package/src/components/portal/Portal.tsx +1 -0
- package/src/components/publish-wizard/PublishWizard.tsx +1 -1
- package/src/components/story-previewer/StoryPreviewer.tsx +21 -8
- package/src/components/tabs/Tabs.tsx +25 -8
- package/src/index.ts +2 -1
- package/src/utils/routing.ts +10 -6
|
@@ -2,6 +2,14 @@ import * as React from 'react';
|
|
|
2
2
|
import FieldWrapper from '../field-wrapper/FieldWrapper';
|
|
3
3
|
import { IToolTipConfig } from '../Tooltip';
|
|
4
4
|
|
|
5
|
+
export const validateNumInput = (val: number, min: number, max: number) => {
|
|
6
|
+
if (val < min || val > max) {
|
|
7
|
+
return false;
|
|
8
|
+
} else {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
5
13
|
interface INumberFieldProps {
|
|
6
14
|
buttons?: any;
|
|
7
15
|
label?: any;
|
|
@@ -60,30 +68,25 @@ class NumberField extends React.PureComponent<INumberFieldProps, INumberFieldSta
|
|
|
60
68
|
|
|
61
69
|
public componentDidUpdate(prevProps): void {
|
|
62
70
|
if (prevProps.value !== this.props.value) {
|
|
63
|
-
this.setState(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
this.setState(
|
|
72
|
+
{
|
|
73
|
+
value: this.props.value
|
|
74
|
+
},
|
|
75
|
+
() => {
|
|
76
|
+
this.validateValue(this.props.value);
|
|
77
|
+
}
|
|
78
|
+
);
|
|
67
79
|
}
|
|
68
80
|
}
|
|
69
81
|
|
|
70
|
-
private
|
|
82
|
+
private validateValue(val) {
|
|
71
83
|
const { max, min } = this.props;
|
|
72
|
-
const
|
|
73
|
-
this.setState({
|
|
74
|
-
if (min || max) {
|
|
75
|
-
if (val < min || val > max) {
|
|
76
|
-
this.setState({ error: true });
|
|
77
|
-
} else {
|
|
78
|
-
this.setState({ error: false });
|
|
79
|
-
this.onChange(e);
|
|
80
|
-
}
|
|
81
|
-
} else {
|
|
82
|
-
this.onChange(e);
|
|
83
|
-
}
|
|
84
|
+
const error = validateNumInput(val, min, max);
|
|
85
|
+
this.setState({ error: !error });
|
|
84
86
|
}
|
|
85
87
|
|
|
86
88
|
private onChange(e) {
|
|
89
|
+
this.validateValue(e.target.value);
|
|
87
90
|
let val = e.target.value;
|
|
88
91
|
if (val === '' || val === null) {
|
|
89
92
|
val = this.props.min;
|
|
@@ -201,7 +204,7 @@ class NumberField extends React.PureComponent<INumberFieldProps, INumberFieldSta
|
|
|
201
204
|
onKeyDown={(e) => this.onKeyDownHandler(e)}
|
|
202
205
|
onFocus={() => this.onSelectFocus()}
|
|
203
206
|
onBlur={(e) => this.onSelectBlur(e)}
|
|
204
|
-
onChange={(e) => this.
|
|
207
|
+
onChange={(e) => this.onChange(e)}
|
|
205
208
|
/>
|
|
206
209
|
</FieldWrapper>
|
|
207
210
|
);
|
|
@@ -844,7 +844,7 @@ export const BigButton: React.FC<IBigButtonProps> = (p) => (
|
|
|
844
844
|
</div>
|
|
845
845
|
);
|
|
846
846
|
|
|
847
|
-
export const TabContent: React.FC = ({ children }) => (
|
|
847
|
+
export const TabContent: React.FC<React.PropsWithChildren> = ({ children }) => (
|
|
848
848
|
<div className='tab-content'>
|
|
849
849
|
<div className='settings-tab'>
|
|
850
850
|
<div className='integration-details'>{children}</div>
|
|
@@ -20,7 +20,7 @@ import ImagePlayer from '../players/ImagePlayer';
|
|
|
20
20
|
import { saveAs } from 'file-saver';
|
|
21
21
|
import MediaVariableField from '../media-variable-field/MediaVariableField';
|
|
22
22
|
import { IExperience } from '../../interfaces/experience';
|
|
23
|
-
import
|
|
23
|
+
import { useResizeDetector } from 'react-resize-detector';
|
|
24
24
|
import { ERROR, previewer as copy } from '../../constants/copy';
|
|
25
25
|
import { formattedTime } from '../../Util';
|
|
26
26
|
import Timer from '../../services/Timer';
|
|
@@ -30,6 +30,25 @@ import { ICON_DOWNLOAD, ICON_CLIPBOARD } from '../../constants/icons';
|
|
|
30
30
|
import AudioPlayer from '../players/AudioPlayer';
|
|
31
31
|
import ColorField from '../color-field/ColorField';
|
|
32
32
|
|
|
33
|
+
const ResizeDetectorWrapper: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
|
34
|
+
const { width, height, ref } = useResizeDetector<HTMLDivElement>({
|
|
35
|
+
handleWidth: true,
|
|
36
|
+
handleHeight: true
|
|
37
|
+
});
|
|
38
|
+
return (
|
|
39
|
+
<div
|
|
40
|
+
ref={ref}
|
|
41
|
+
style={{ width: '100%', height: '100%' }}>
|
|
42
|
+
{React.Children.map(children, (child) => {
|
|
43
|
+
if (React.isValidElement(child)) {
|
|
44
|
+
return React.cloneElement(child, { width, height } as any);
|
|
45
|
+
}
|
|
46
|
+
return child;
|
|
47
|
+
})}
|
|
48
|
+
</div>
|
|
49
|
+
);
|
|
50
|
+
};
|
|
51
|
+
|
|
33
52
|
interface IStoryPreviewerProps {
|
|
34
53
|
api: IImposiumAPI;
|
|
35
54
|
storyId: string;
|
|
@@ -786,13 +805,7 @@ class StoryPreviewer extends React.PureComponent<IStoryPreviewerProps, IStoryPre
|
|
|
786
805
|
);
|
|
787
806
|
}
|
|
788
807
|
|
|
789
|
-
return
|
|
790
|
-
<ReactResizeDetector
|
|
791
|
-
handleWidth
|
|
792
|
-
handleHeight>
|
|
793
|
-
{player}
|
|
794
|
-
</ReactResizeDetector>
|
|
795
|
-
);
|
|
808
|
+
return <ResizeDetectorWrapper>{player}</ResizeDetectorWrapper>;
|
|
796
809
|
}
|
|
797
810
|
|
|
798
811
|
return null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { useResizeDetector } from 'react-resize-detector';
|
|
3
3
|
import ButtonMenu from '../button-menu/ButtonMenu';
|
|
4
4
|
import ButtonMenuItem from '../button-menu/ButtonMenuItem';
|
|
5
5
|
import Button from '../button/Button';
|
|
@@ -14,15 +14,15 @@ export interface ITab {
|
|
|
14
14
|
menuButtons?: JSX.Element;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
interface ITabsProps {
|
|
17
|
+
export interface ITabsProps {
|
|
18
18
|
activeTab?: string;
|
|
19
19
|
keepMounted?: boolean;
|
|
20
20
|
options: ITab[];
|
|
21
21
|
onChange(i): void;
|
|
22
|
-
onClose(i): void;
|
|
22
|
+
onClose?(i): void;
|
|
23
23
|
tabPadding?: number;
|
|
24
|
-
width
|
|
25
|
-
height
|
|
24
|
+
width?: number;
|
|
25
|
+
height?: number;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
interface ITabsState {
|
|
@@ -85,7 +85,7 @@ class Tabs extends React.PureComponent<ITabsProps, ITabsState> {
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
private renderContent() {
|
|
88
|
-
const { options, activeTab, keepMounted, width, height } = this.props;
|
|
88
|
+
const { options, activeTab, keepMounted, width = 0, height = 0 } = this.props;
|
|
89
89
|
|
|
90
90
|
if (keepMounted) {
|
|
91
91
|
const contentArray = [];
|
|
@@ -132,7 +132,9 @@ class Tabs extends React.PureComponent<ITabsProps, ITabsState> {
|
|
|
132
132
|
onClick={(e) => {
|
|
133
133
|
e.preventDefault();
|
|
134
134
|
e.stopPropagation();
|
|
135
|
-
this.props.onClose
|
|
135
|
+
if (this.props.onClose) {
|
|
136
|
+
this.props.onClose(key);
|
|
137
|
+
}
|
|
136
138
|
}}>
|
|
137
139
|
{ICON_TIMES}
|
|
138
140
|
</Button>
|
|
@@ -218,4 +220,19 @@ class Tabs extends React.PureComponent<ITabsProps, ITabsState> {
|
|
|
218
220
|
}
|
|
219
221
|
}
|
|
220
222
|
|
|
221
|
-
|
|
223
|
+
const TabsWithResize: React.FC<Omit<ITabsProps, 'width' | 'height'>> = (props) => {
|
|
224
|
+
const { width = 0, height = 0, ref } = useResizeDetector<HTMLDivElement>();
|
|
225
|
+
return (
|
|
226
|
+
<div
|
|
227
|
+
ref={ref}
|
|
228
|
+
style={{ width: '100%', height: '100%' }}>
|
|
229
|
+
<Tabs
|
|
230
|
+
{...props}
|
|
231
|
+
width={width}
|
|
232
|
+
height={height}
|
|
233
|
+
/>
|
|
234
|
+
</div>
|
|
235
|
+
);
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
export default TabsWithResize;
|
package/src/index.ts
CHANGED
|
@@ -16,7 +16,7 @@ import FieldWrapper from './components/field-wrapper/FieldWrapper';
|
|
|
16
16
|
import CheckboxField from './components/checkbox-field/CheckboxField';
|
|
17
17
|
import ListField from './components/list-field/ListField';
|
|
18
18
|
import ButtonGroupField from './components/button-group-field/ButtonGroupField';
|
|
19
|
-
import NumberField from './components/number-field/NumberField';
|
|
19
|
+
import NumberField, { validateNumInput } from './components/number-field/NumberField';
|
|
20
20
|
import SelectField from './components/select-field/SelectField';
|
|
21
21
|
import TextField from './components/text-field/TextField';
|
|
22
22
|
import TextAreaField from './components/text-area-field/TextAreaField';
|
|
@@ -337,6 +337,7 @@ export {
|
|
|
337
337
|
IconToggle,
|
|
338
338
|
DEFAULT_FONTS,
|
|
339
339
|
FontField,
|
|
340
|
+
validateNumInput,
|
|
340
341
|
IChangeReportNode,
|
|
341
342
|
IChangeReportSection,
|
|
342
343
|
IPublishLogEntry,
|
package/src/utils/routing.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ICompatibleHistory } from '../components/app-wrapper/AppWrapper';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
browserHistory.push(route);
|
|
5
|
-
};
|
|
3
|
+
let historySingleton: ICompatibleHistory | null = null;
|
|
6
4
|
|
|
7
|
-
export const
|
|
8
|
-
|
|
5
|
+
export const configureHistory = (history: ICompatibleHistory): void => {
|
|
6
|
+
historySingleton = history;
|
|
7
|
+
};
|
|
8
|
+
export const pushRoute = (route: string): void => {
|
|
9
|
+
historySingleton?.push(route);
|
|
10
|
+
};
|
|
11
|
+
export const replaceRoute = (route: string): void => {
|
|
12
|
+
historySingleton?.replace(route);
|
|
9
13
|
};
|
|
10
14
|
|
|
11
15
|
export const getDemoURL = (): string => {
|