@imposium-hub/components 2.15.0-0 → 2.15.0-2

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 (120) hide show
  1. package/dist/cjs/components/app-wrapper/AppWrapper.d.ts +6 -0
  2. package/dist/cjs/components/app-wrapper/AppWrapper.js +7 -3
  3. package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
  4. package/dist/cjs/components/asset-details/AssetDetails.js +1 -1
  5. package/dist/cjs/components/assets/AssetsTableComplexTagCell.js +1 -1
  6. package/dist/cjs/components/assets/AssetsTableTagsPivot.js +1 -1
  7. package/dist/cjs/components/assets/AssetsUploadMenu.js +6 -6
  8. package/dist/cjs/components/context-menu/AnimateComponent.d.ts +1 -0
  9. package/dist/cjs/components/context-menu/AnimateComponent.js.map +1 -1
  10. package/dist/cjs/components/context-menu/ContextMenu.d.ts +1 -0
  11. package/dist/cjs/components/context-menu/ContextMenu.js +6 -6
  12. package/dist/cjs/components/context-menu/ContextMenu.js.map +1 -1
  13. package/dist/cjs/components/context-menu/ContextMenuItem.d.ts +1 -0
  14. package/dist/cjs/components/context-menu/ContextMenuItem.js.map +1 -1
  15. package/dist/cjs/components/context-menu/ContextMenuTrigger.d.ts +1 -0
  16. package/dist/cjs/components/context-menu/ContextMenuTrigger.js.map +1 -1
  17. package/dist/cjs/components/context-menu/SubMenu.d.ts +1 -0
  18. package/dist/cjs/components/context-menu/SubMenu.js.map +1 -1
  19. package/dist/cjs/components/controlled-list/ControlledList.stories.js +1 -1
  20. package/dist/cjs/components/number-field/NumberField.d.ts +2 -1
  21. package/dist/cjs/components/number-field/NumberField.js +18 -17
  22. package/dist/cjs/components/number-field/NumberField.js.map +1 -1
  23. package/dist/cjs/components/portal/Portal.d.ts +1 -0
  24. package/dist/cjs/components/portal/Portal.js.map +1 -1
  25. package/dist/cjs/components/publish-wizard/PublishWizard.d.ts +1 -1
  26. package/dist/cjs/components/publish-wizard/PublishWizard.js +7 -2
  27. package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
  28. package/dist/cjs/components/story-previewer/StoryPreviewer.js +15 -2
  29. package/dist/cjs/components/story-previewer/StoryPreviewer.js.map +1 -1
  30. package/dist/cjs/components/tabs/Tabs.d.ts +12 -4
  31. package/dist/cjs/components/tabs/Tabs.js +21 -3
  32. package/dist/cjs/components/tabs/Tabs.js.map +1 -1
  33. package/dist/cjs/components/tabs/Tabs.stories.d.ts +1 -3
  34. package/dist/cjs/components/tag/Tag.js.map +1 -1
  35. package/dist/cjs/components/tag/Tag.test.js.map +1 -1
  36. package/dist/cjs/index.d.ts +3 -3
  37. package/dist/cjs/index.js +37 -3
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/cjs/utils/routing.d.ts +4 -2
  40. package/dist/cjs/utils/routing.js +8 -4
  41. package/dist/cjs/utils/routing.js.map +1 -1
  42. package/dist/esm/components/app-wrapper/AppWrapper.d.ts +6 -0
  43. package/dist/esm/components/app-wrapper/AppWrapper.js +8 -4
  44. package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
  45. package/dist/esm/components/asset-details/AssetDetails.js +1 -1
  46. package/dist/esm/components/assets/AssetsTableComplexTagCell.js +1 -1
  47. package/dist/esm/components/assets/AssetsTableTagsPivot.js +1 -1
  48. package/dist/esm/components/assets/AssetsUploadMenu.js +6 -6
  49. package/dist/esm/components/context-menu/AnimateComponent.d.ts +1 -0
  50. package/dist/esm/components/context-menu/AnimateComponent.js.map +1 -1
  51. package/dist/esm/components/context-menu/ContextMenu.d.ts +1 -0
  52. package/dist/esm/components/context-menu/ContextMenu.js +2 -1
  53. package/dist/esm/components/context-menu/ContextMenu.js.map +1 -1
  54. package/dist/esm/components/context-menu/ContextMenuItem.d.ts +1 -0
  55. package/dist/esm/components/context-menu/ContextMenuItem.js.map +1 -1
  56. package/dist/esm/components/context-menu/ContextMenuTrigger.d.ts +1 -0
  57. package/dist/esm/components/context-menu/ContextMenuTrigger.js.map +1 -1
  58. package/dist/esm/components/context-menu/SubMenu.d.ts +1 -0
  59. package/dist/esm/components/context-menu/SubMenu.js.map +1 -1
  60. package/dist/esm/components/controlled-list/ControlledList.stories.js +1 -1
  61. package/dist/esm/components/number-field/NumberField.d.ts +2 -1
  62. package/dist/esm/components/number-field/NumberField.js +15 -17
  63. package/dist/esm/components/number-field/NumberField.js.map +1 -1
  64. package/dist/esm/components/portal/Portal.d.ts +1 -0
  65. package/dist/esm/components/portal/Portal.js.map +1 -1
  66. package/dist/esm/components/publish-wizard/PublishWizard.d.ts +1 -1
  67. package/dist/esm/components/publish-wizard/PublishWizard.js +7 -2
  68. package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
  69. package/dist/esm/components/story-previewer/StoryPreviewer.js +14 -2
  70. package/dist/esm/components/story-previewer/StoryPreviewer.js.map +1 -1
  71. package/dist/esm/components/tabs/Tabs.d.ts +12 -4
  72. package/dist/esm/components/tabs/Tabs.js +11 -4
  73. package/dist/esm/components/tabs/Tabs.js.map +1 -1
  74. package/dist/esm/components/tabs/Tabs.stories.d.ts +1 -3
  75. package/dist/esm/components/tag/Tag.js.map +1 -1
  76. package/dist/esm/components/tag/Tag.test.js.map +1 -1
  77. package/dist/esm/index.d.ts +3 -3
  78. package/dist/esm/index.js +3 -3
  79. package/dist/esm/index.js.map +1 -1
  80. package/dist/esm/utils/routing.d.ts +4 -2
  81. package/dist/esm/utils/routing.js +6 -3
  82. package/dist/esm/utils/routing.js.map +1 -1
  83. package/dist/styles.css +14 -8
  84. package/dist/styles.less +76 -68
  85. package/less/components/assets.less +6 -5
  86. package/less/components/auth-gate.less +1 -1
  87. package/less/components/change-report.less +11 -5
  88. package/less/components/data-table.less +2 -2
  89. package/less/components/determinate-loader.less +2 -2
  90. package/less/components/font-preview.less +1 -1
  91. package/less/components/form-field.less +5 -5
  92. package/less/components/header.less +30 -30
  93. package/less/components/modal.less +2 -2
  94. package/less/components/player.less +2 -2
  95. package/less/components/publish-wizard.less +1 -0
  96. package/less/components/section.less +2 -2
  97. package/less/components/static-composition-editor.less +4 -4
  98. package/less/components/story-previewer.less +4 -4
  99. package/less/components/tabs.less +3 -3
  100. package/package.json +8 -8
  101. package/src/components/app-wrapper/AppWrapper.tsx +17 -4
  102. package/src/components/asset-details/AssetDetails.tsx +1 -1
  103. package/src/components/assets/AssetsTableComplexTagCell.tsx +1 -1
  104. package/src/components/assets/AssetsTableTagsPivot.tsx +1 -1
  105. package/src/components/assets/AssetsUploadMenu.tsx +6 -6
  106. package/src/components/context-menu/AnimateComponent.tsx +1 -0
  107. package/src/components/context-menu/ContextMenu.tsx +15 -13
  108. package/src/components/context-menu/ContextMenuItem.tsx +1 -0
  109. package/src/components/context-menu/ContextMenuTrigger.tsx +1 -0
  110. package/src/components/context-menu/SubMenu.tsx +1 -0
  111. package/src/components/controlled-list/ControlledList.stories.tsx +1 -1
  112. package/src/components/number-field/NumberField.tsx +21 -18
  113. package/src/components/portal/Portal.tsx +1 -0
  114. package/src/components/publish-wizard/PublishWizard.tsx +19 -3
  115. package/src/components/story-previewer/StoryPreviewer.tsx +21 -8
  116. package/src/components/tabs/Tabs.tsx +25 -8
  117. package/src/index.ts +3 -2
  118. package/src/utils/routing.ts +10 -6
  119. /package/src/components/{tag → Tag}/Tag.test.tsx +0 -0
  120. /package/src/components/{tag → Tag}/Tag.tsx +0 -0
@@ -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
- error: false,
65
- value: this.props.value
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 validate(e) {
82
+ private validateValue(val) {
71
83
  const { max, min } = this.props;
72
- const val = e.target.value;
73
- this.setState({ value: val });
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.validate(e)}
207
+ onChange={(e) => this.onChange(e)}
205
208
  />
206
209
  </FieldWrapper>
207
210
  );
@@ -8,6 +8,7 @@ import { createPortal } from 'react-dom';
8
8
 
9
9
  interface IPortalProps {
10
10
  id: string;
11
+ children?: React.ReactNode;
11
12
  }
12
13
 
13
14
  const Portal: React.FC<IPortalProps> = ({ children, id }): ReactPortal => {
@@ -458,6 +458,19 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
458
458
  {copy.publish.btnSkip}
459
459
  </Button>
460
460
  );
461
+
462
+ if (hasReviewStep) {
463
+ lowerButtons.push(
464
+ <Button
465
+ tooltip={copy.publish.btnBack}
466
+ size={'large'}
467
+ key='btn-back'
468
+ onClick={() => this.setState({ screenIndex: 0 })}
469
+ color='primary'>
470
+ {copy.publish.btnBack}
471
+ </Button>
472
+ );
473
+ }
461
474
  } else {
462
475
  // Distribution and sub-screens: Back button (and Done/Finish if applicable)
463
476
  if (done || error) {
@@ -473,9 +486,12 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
473
486
  );
474
487
  }
475
488
 
476
- // Back button: from distribution → go to 0 (Review Changes ON) or 0 (Publish OFF)
489
+ // Back button: from distribution → go to publish step
477
490
  // from sub-screens → go back to distribution
478
- const backIndex = screenIndex === distributionScreenIndex ? 0 : distributionScreenIndex;
491
+ const backIndex =
492
+ screenIndex === distributionScreenIndex
493
+ ? publishScreenIndex
494
+ : distributionScreenIndex;
479
495
 
480
496
  lowerButtons.push(
481
497
  <Button
@@ -844,7 +860,7 @@ export const BigButton: React.FC<IBigButtonProps> = (p) => (
844
860
  </div>
845
861
  );
846
862
 
847
- export const TabContent: React.FC = ({ children }) => (
863
+ export const TabContent: React.FC<React.PropsWithChildren> = ({ children }) => (
848
864
  <div className='tab-content'>
849
865
  <div className='settings-tab'>
850
866
  <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 ReactResizeDetector from 'react-resize-detector';
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 { withResizeDetector } from 'react-resize-detector';
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: number;
25
- height: number;
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(key);
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
- export default withResizeDetector(Tabs);
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,14 +16,14 @@ 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';
23
23
  import ToastService from './components/toast-service/ToastService';
24
24
  import SliderField from './components/slider-field/SliderField';
25
25
  import ColorField from './components/color-field/ColorField';
26
- import Tag from './components/tag/Tag';
26
+ import Tag from './components/Tag/Tag';
27
27
  import HRule from './components/h-rule/HRule';
28
28
  import Section from './components/section/Section';
29
29
  import Spinner from './components/spinner/Spinner';
@@ -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,
@@ -1,11 +1,15 @@
1
- import { browserHistory } from 'react-router';
1
+ import { ICompatibleHistory } from '../components/app-wrapper/AppWrapper';
2
2
 
3
- export const pushRoute = (route): void => {
4
- browserHistory.push(route);
5
- };
3
+ let historySingleton: ICompatibleHistory | null = null;
6
4
 
7
- export const replaceRoute = (route): void => {
8
- browserHistory.replace(route);
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 => {
File without changes
File without changes