superdesk-ui-framework 3.1.29 → 4.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.
Files changed (96) hide show
  1. package/app-typescript/components/Dropdown.tsx +120 -165
  2. package/app-typescript/components/Layouts/AuthoringInnerHeader.tsx +9 -4
  3. package/app-typescript/components/Layouts/AuthoringMain.tsx +2 -0
  4. package/app-typescript/components/Layouts/Panel.tsx +3 -2
  5. package/app-typescript/components/Menu.tsx +3 -4
  6. package/app-typescript/components/Modal.tsx +4 -2
  7. package/app-typescript/components/MultiSelect.tsx +3 -2
  8. package/app-typescript/components/Popover.tsx +0 -2
  9. package/app-typescript/components/SelectWithTemplate.tsx +3 -1
  10. package/app-typescript/components/ShowPopup.tsx +9 -5
  11. package/app-typescript/components/SubNav.tsx +5 -6
  12. package/app-typescript/components/TreeMenu.tsx +3 -2
  13. package/app-typescript/components/TreeSelect/TreeSelect.tsx +3 -2
  14. package/app-typescript/components/WithPopover.tsx +0 -2
  15. package/app-typescript/components/_Positioner.tsx +3 -4
  16. package/app-typescript/components/avatar/avatar-group.tsx +0 -3
  17. package/app-typescript/index.ts +1 -0
  18. package/app-typescript/zIndex.tsx +5 -0
  19. package/dist/components/CreateButton.tsx +2 -2
  20. package/dist/components/Dropdowns.tsx +4 -483
  21. package/dist/components/Modal.tsx +0 -12
  22. package/dist/components/MultiSelect.tsx +0 -2
  23. package/dist/components/NavButtons.tsx +4 -4
  24. package/dist/components/Panel.tsx +0 -1
  25. package/dist/components/Popover.tsx +0 -3
  26. package/dist/components/SubNav.tsx +9 -10
  27. package/dist/components/TableList.tsx +1 -1
  28. package/dist/design-patterns/ThreePaneLayoutPattern.tsx +3 -3
  29. package/dist/examples.bundle.js +3115 -3481
  30. package/dist/playgrounds/react-playgrounds/CoreLayout.tsx +2 -3
  31. package/dist/playgrounds/react-playgrounds/EditorTest.tsx +1 -1
  32. package/dist/playgrounds/react-playgrounds/Multiedit.tsx +1 -2
  33. package/dist/playgrounds/react-playgrounds/PageLayoutTest.tsx +1 -1
  34. package/dist/playgrounds/react-playgrounds/PersonalProfile.tsx +2 -2
  35. package/dist/playgrounds/react-playgrounds/Rundowns.tsx +3 -10
  36. package/dist/playgrounds/react-playgrounds/SamsPlayground.tsx +2 -3
  37. package/dist/playgrounds/react-playgrounds/TestGround.tsx +0 -4
  38. package/dist/playgrounds/react-playgrounds/UiPlayground.tsx +2 -3
  39. package/dist/superdesk-ui.bundle.js +2411 -2402
  40. package/dist/vendor.bundle.js +21 -21
  41. package/examples/pages/components/CreateButton.tsx +2 -2
  42. package/examples/pages/components/Dropdowns.tsx +4 -483
  43. package/examples/pages/components/Modal.tsx +0 -12
  44. package/examples/pages/components/MultiSelect.tsx +0 -2
  45. package/examples/pages/components/NavButtons.tsx +4 -4
  46. package/examples/pages/components/Panel.tsx +0 -1
  47. package/examples/pages/components/Popover.tsx +0 -3
  48. package/examples/pages/components/SubNav.tsx +9 -10
  49. package/examples/pages/components/TableList.tsx +1 -1
  50. package/examples/pages/design-patterns/ThreePaneLayoutPattern.tsx +3 -3
  51. package/examples/pages/playgrounds/react-playgrounds/CoreLayout.tsx +2 -3
  52. package/examples/pages/playgrounds/react-playgrounds/EditorTest.tsx +1 -1
  53. package/examples/pages/playgrounds/react-playgrounds/Multiedit.tsx +1 -2
  54. package/examples/pages/playgrounds/react-playgrounds/PageLayoutTest.tsx +1 -1
  55. package/examples/pages/playgrounds/react-playgrounds/PersonalProfile.tsx +2 -2
  56. package/examples/pages/playgrounds/react-playgrounds/Rundowns.tsx +3 -10
  57. package/examples/pages/playgrounds/react-playgrounds/SamsPlayground.tsx +2 -3
  58. package/examples/pages/playgrounds/react-playgrounds/TestGround.tsx +0 -4
  59. package/examples/pages/playgrounds/react-playgrounds/UiPlayground.tsx +2 -3
  60. package/package.json +1 -1
  61. package/react/components/Dropdown.d.ts +1 -3
  62. package/react/components/Dropdown.js +31 -60
  63. package/react/components/Layouts/AuthoringInnerHeader.d.ts +1 -0
  64. package/react/components/Layouts/AuthoringInnerHeader.js +4 -2
  65. package/react/components/Layouts/AuthoringMain.d.ts +1 -0
  66. package/react/components/Layouts/AuthoringMain.js +1 -1
  67. package/react/components/Layouts/Panel.d.ts +1 -1
  68. package/react/components/Layouts/Panel.js +5 -2
  69. package/react/components/Menu.d.ts +1 -1
  70. package/react/components/Menu.js +3 -3
  71. package/react/components/Modal.d.ts +1 -1
  72. package/react/components/Modal.js +5 -2
  73. package/react/components/MultiSelect.d.ts +1 -1
  74. package/react/components/MultiSelect.js +3 -1
  75. package/react/components/Popover.d.ts +0 -1
  76. package/react/components/Popover.js +1 -1
  77. package/react/components/SelectWithTemplate.d.ts +3 -0
  78. package/react/components/SelectWithTemplate.js +3 -0
  79. package/react/components/ShowPopup.d.ts +20 -1
  80. package/react/components/ShowPopup.js +12 -5
  81. package/react/components/SubNav.d.ts +0 -1
  82. package/react/components/SubNav.js +1 -4
  83. package/react/components/TreeMenu.d.ts +1 -1
  84. package/react/components/TreeMenu.js +3 -1
  85. package/react/components/TreeSelect/TreeSelect.d.ts +1 -1
  86. package/react/components/TreeSelect/TreeSelect.js +3 -1
  87. package/react/components/WithPopover.d.ts +0 -1
  88. package/react/components/WithPopover.js +1 -1
  89. package/react/components/_Positioner.d.ts +0 -1
  90. package/react/components/_Positioner.js +3 -3
  91. package/react/components/avatar/avatar-group.d.ts +0 -1
  92. package/react/components/avatar/avatar-group.js +2 -3
  93. package/react/index.d.ts +1 -0
  94. package/react/index.js +4 -1
  95. package/react/zIndex.d.ts +2 -0
  96. package/react/zIndex.js +8 -0
@@ -4,18 +4,19 @@ import ReactDOM from 'react-dom';
4
4
  import {createPopper, Instance as PopperInstance, Placement, Modifier} from '@popperjs/core';
5
5
  import {throttle} from 'lodash';
6
6
  import maxSize from 'popper-max-size-modifier';
7
+ import {getNextZIndex} from '../zIndex';
7
8
 
8
9
  interface IPropsPopupPositioner {
9
10
  referenceElement: HTMLElement;
10
11
  placement: Placement;
11
- zIndex?: number;
12
12
  onClose(): void;
13
13
  closeOnHoverEnd?: boolean;
14
14
  }
15
15
 
16
- class PopupPositioner extends React.PureComponent<IPropsPopupPositioner> {
16
+ export class PopupPositioner extends React.PureComponent<IPropsPopupPositioner> {
17
17
  private wrapperEl: HTMLDivElement | null;
18
18
  private popper: PopperInstance | null;
19
+ private zIndex: number = getNextZIndex();
19
20
 
20
21
  constructor(props: IPropsPopupPositioner) {
21
22
  super(props);
@@ -123,7 +124,12 @@ class PopupPositioner extends React.PureComponent<IPropsPopupPositioner> {
123
124
  ref={(el) => {
124
125
  this.wrapperEl = el;
125
126
  }}
126
- style={{zIndex: this.props.zIndex ?? 1, position: 'absolute', left: '-100vw', display: 'flex'}}
127
+ style={{
128
+ position: 'absolute',
129
+ left: '-100vw',
130
+ display: 'flex',
131
+ zIndex: this.zIndex,
132
+ }}
127
133
  >
128
134
  {this.props.children}
129
135
  </div>
@@ -138,7 +144,6 @@ export function showPopup(
138
144
  referenceElement: HTMLElement,
139
145
  placement: Placement,
140
146
  Component: React.ComponentType<{closePopup(): void}>,
141
- zIndex?: number,
142
147
  closeOnHoverEnd?: boolean,
143
148
  onClose?: () => void,
144
149
  ): {close: () => void} {
@@ -158,7 +163,6 @@ export function showPopup(
158
163
  referenceElement={referenceElement}
159
164
  placement={placement}
160
165
  onClose={closeFn}
161
- zIndex={zIndex}
162
166
  closeOnHoverEnd={closeOnHoverEnd || false}
163
167
  >
164
168
  <Component
@@ -3,7 +3,6 @@ import classNames from 'classnames';
3
3
 
4
4
  interface IProps {
5
5
  color?: 'light' | 'darker' | 'blueGrey' | 'blueGreyDarker'; // defaults to 'light'
6
- zIndex?: number;
7
6
  theme?: 'light' | 'dark'; // defaults to 'light
8
7
  className?: string;
9
8
  }
@@ -32,14 +31,14 @@ export class SubNav extends React.PureComponent<IProps> {
32
31
  'subnav--light': this.props.color === undefined,
33
32
  [`subnav--${this.props.color}`]: this.props.color || this.props.color !== undefined,
34
33
  }, this.props.className);
35
- let style = {
36
- zIndex: 1000 + (this.props.zIndex ? this.props.zIndex : 0),
37
- };
34
+
38
35
  let defaultTheme = darkColors.includes(this.props.color || '') ? 'dark-ui' : null;
39
36
 
40
37
  return (
41
- <div data-theme={this.props.theme ? `${this.props.theme}-ui` : defaultTheme}
42
- className={classes} style={style}>
38
+ <div
39
+ data-theme={this.props.theme ? `${this.props.theme}-ui` : defaultTheme}
40
+ className={classes}
41
+ >
43
42
  {this.props.children}
44
43
  </div>
45
44
  );
@@ -5,6 +5,7 @@ import {getPrefixedItemId, TreeSelectItem} from './TreeSelect/TreeSelectItem';
5
5
  import {keyboardNavigation} from './TreeSelect/KeyboardNavigation';
6
6
  import {WithPortal} from './WithPortal';
7
7
  import {nameof} from '../helpers';
8
+ import {getNextZIndex} from '../zIndex';
8
9
 
9
10
  interface IState<T> {
10
11
  options: Array<ITreeMenuNode<T>>;
@@ -21,7 +22,6 @@ interface IState<T> {
21
22
  }
22
23
 
23
24
  interface IProps<T> {
24
- zIndex?: number;
25
25
  searchPlaceholder?: string;
26
26
  singleLevelSearch?: boolean;
27
27
  'data-test-id'?: string;
@@ -78,6 +78,7 @@ export class TreeMenu<T> extends React.Component<IProps<T>, IState<T>> {
78
78
  private treeMenuRef: React.RefObject<HTMLDivElement>;
79
79
  private inputRef: React.RefObject<HTMLInputElement>;
80
80
  private popperInstance: Instance | null;
81
+ private zIndex: number = getNextZIndex();
81
82
 
82
83
  constructor(props: IProps<T>) {
83
84
  super(props);
@@ -357,7 +358,7 @@ export class TreeMenu<T> extends React.Component<IProps<T>, IState<T>> {
357
358
  ref={this.dropdownRef}
358
359
  className="autocomplete autocomplete--multi-select autocomplete--fixed-width"
359
360
  style={{
360
- zIndex: this.props.zIndex,
361
+ zIndex: this.zIndex,
361
362
  }}
362
363
  >
363
364
  <div className='autocomplete__header'>
@@ -14,6 +14,7 @@ import {getPrefixedItemId, TreeSelectItem} from './TreeSelectItem';
14
14
  import {keyboardNavigation} from './KeyboardNavigation';
15
15
  import {WithPortal} from '../WithPortal';
16
16
  import { DragDropContext, Droppable, Draggable, DropResult } from "react-beautiful-dnd";
17
+ import {getNextZIndex} from '../../zIndex';
17
18
 
18
19
  const reorder = (list: Array<any>, startIndex: number, endIndex: number) => {
19
20
  const result = Array.from(list);
@@ -53,7 +54,6 @@ interface IPropsBase<T> extends IInputWrapper {
53
54
  searchPlaceholder?: string;
54
55
  noResultsFoundMessage?: string;
55
56
  dropdownInitiallyOpen?: boolean;
56
- zIndex?: number;
57
57
  sortable?: boolean;
58
58
  'data-test-id'?: string;
59
59
  getLabel(item: T): string;
@@ -94,6 +94,7 @@ export class TreeSelect<T> extends React.Component<IProps<T>, IState<T>> {
94
94
  private treeSelectRef: React.RefObject<HTMLDivElement>;
95
95
  private htmlId: string = nextId();
96
96
  private popperInstance: Instance | null;
97
+ private zIndex: number = getNextZIndex();
97
98
 
98
99
  constructor(props: IProps<T>) {
99
100
  super(props);
@@ -887,7 +888,7 @@ export class TreeSelect<T> extends React.Component<IProps<T>, IState<T>> {
887
888
  + (this.props.width === 'medium' ? ' autocomplete--fixed-width' : '')
888
889
  }
889
890
  style={{
890
- zIndex: this.props.zIndex,
891
+ zIndex: this.zIndex,
891
892
  width: this.treeSelectRef.current?.offsetWidth,
892
893
  }}
893
894
  ref={this.dropdownRef}
@@ -7,7 +7,6 @@ export interface IPropsWithPopover {
7
7
  children(toggle: (referenceElement: HTMLElement) => void): React.ReactNode;
8
8
  placement: Placement;
9
9
  component: React.ComponentType<{closePopup(): void}>;
10
- zIndex?: number;
11
10
  closeOnHoverEnd?: boolean;
12
11
  onClose?: () => void;
13
12
  }
@@ -30,7 +29,6 @@ export class WithPopover extends React.PureComponent<IPropsWithPopover> {
30
29
  referenceElement,
31
30
  this.props.placement,
32
31
  this.props.component,
33
- this.props.zIndex,
34
32
  this.props.closeOnHoverEnd,
35
33
  () => {
36
34
  this.closePopup = undefined;
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  import * as ReactDOM from 'react-dom';
3
3
  import * as _popper from 'popper.js';
4
4
  import {PopperOptions} from 'popper.js';
5
+ import {getNextZIndex} from '../zIndex';
5
6
 
6
7
  const Popper = _popper.default;
7
8
 
@@ -22,6 +23,7 @@ class PopperWrapper extends React.Component<IPropsPopperWrapper> {
22
23
  wrapper: HTMLDivElement;
23
24
  popperInstance: any;
24
25
  previouslyFocusedElement: HTMLElement | undefined;
26
+ public zIndex: number = getNextZIndex();
25
27
 
26
28
  constructor(props: IPropsPopperWrapper) {
27
29
  super(props);
@@ -42,9 +44,7 @@ class PopperWrapper extends React.Component<IPropsPopperWrapper> {
42
44
 
43
45
  const dropdownElement = this.wrapper;
44
46
 
45
- if (this.props.zIndex != null) {
46
- dropdownElement.style.zIndex = this.props.zIndex.toString();
47
- }
47
+ dropdownElement.style.zIndex = this.zIndex.toString();
48
48
 
49
49
  const rect = this.props.triggerElement.getBoundingClientRect();
50
50
 
@@ -110,7 +110,6 @@ class PopperWrapper extends React.Component<IPropsPopperWrapper> {
110
110
  interface IPropsPositioner {
111
111
  triggerSelector: string;
112
112
  placement: PopperOptions['placement'];
113
- zIndex?: number;
114
113
  className?: string;
115
114
  }
116
115
 
@@ -24,8 +24,6 @@ export interface IPropsAvatarGroup {
24
24
  */
25
25
  max?: number | 'show-all';
26
26
 
27
- zIndex?: number;
28
-
29
27
  // unless a custom onClick handler is passed
30
28
  // a popover would get shown when maximum number
31
29
  // of avatars is exceeded.
@@ -78,7 +76,6 @@ export class AvatarGroup extends React.PureComponent<IPropsAvatarGroup> {
78
76
 
79
77
  return (
80
78
  <WithPopover
81
- zIndex={this.props.zIndex ?? 101}
82
79
  placement='bottom-end'
83
80
  component={() => (
84
81
  <div className="avatar-popup">
@@ -100,6 +100,7 @@ export { ContentListItem } from './components/Lists/ContentList';
100
100
  export { MultiSelect } from './components/MultiSelect';
101
101
  export { ResizablePanels } from './components/ResizablePanels';
102
102
  export { WithPopover } from './components/WithPopover';
103
+ export { PopupPositioner, showPopup } from './components/ShowPopup';
103
104
  export { Spacer, SpacerBlock } from '@superdesk/common';
104
105
  export { ResizeObserverComponent } from './components/ResizeObserverComponent';
105
106
  export { DragHandleDots } from './components/DragHandleDots';
@@ -0,0 +1,5 @@
1
+ export let zIndex = 1100;
2
+
3
+ export function getNextZIndex() {
4
+ return ++zIndex;
5
+ }
@@ -17,7 +17,7 @@ export default class CreateButtonDoc extends React.Component {
17
17
 
18
18
  <Markup.ReactMarkup>
19
19
  <Markup.ReactMarkupPreview>
20
- <SubNav zIndex={2}>
20
+ <SubNav>
21
21
  <ButtonGroup align='start' spaces='no-space'>
22
22
  <Tooltip text='Filters' flow='right'>
23
23
  <NavButton icon='filter-large' type='darker' state="active" text="Filter" onClick={() => false} />
@@ -34,7 +34,7 @@ export default class CreateButtonDoc extends React.Component {
34
34
  </SubNav>
35
35
  </Markup.ReactMarkupPreview>
36
36
  <Markup.ReactMarkupCode>{`
37
- <SubNav zIndex={2}>
37
+ <SubNav>
38
38
  <ButtonGroup align='start' spaces='no-space'>
39
39
  <Tooltip text='Filters' flow='right'>
40
40
  <NavButton icon='filter-large' type='darker' state="active" text="Filter" onClick={() => false} />