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
@@ -11,6 +11,7 @@ interface IProps {
11
11
  authoringHeader?: React.ReactNode;
12
12
  authoringBookmarks?: React.ReactNode;
13
13
  headerCollapsed?: boolean;
14
+ hideCollapseButton?: boolean;
14
15
  headerPadding?: HeaderPadding;
15
16
  toolbarCustom?: boolean;
16
17
  noPaddingForContent?: boolean;
@@ -50,7 +50,7 @@ var AuthoringMain = /** @class */ (function (_super) {
50
50
  return (React.createElement(_1.AuthoringMainContainer, null,
51
51
  this.props.toolBar && (React.createElement(_1.AuthoringMainToolBar, { toolbarCustom: this.props.toolbarCustom }, this.props.toolBar)),
52
52
  React.createElement(_1.AuthoringMainContent, null,
53
- this.props.authoringHeader && (React.createElement(_1.AuthoringInnerHeader, { headerPadding: this.props.headerPadding, collapsed: this.props.headerCollapsed }, this.props.authoringHeader)),
53
+ this.props.authoringHeader && (React.createElement(_1.AuthoringInnerHeader, { hideCollapseButton: this.props.hideCollapseButton, headerPadding: this.props.headerPadding, collapsed: this.props.headerCollapsed }, this.props.authoringHeader)),
54
54
  this.props.authoringBookmarks && (React.createElement(_1.AuthorinInnerSideBar, null, this.props.authoringBookmarks)),
55
55
  React.createElement(_1.AuthoringInnerBody, { noPadding: this.props.noPaddingForContent }, this.props.children))));
56
56
  };
@@ -15,7 +15,6 @@ export default class Panel extends React.PureComponent<IPropsPanel> {
15
15
  }
16
16
  interface IPropsPanelHeader {
17
17
  color?: 'light' | 'darker' | 'blueGrey' | 'blueGreyDarker';
18
- zIndex?: number;
19
18
  title?: string;
20
19
  theme?: 'light-ui' | 'dark-ui';
21
20
  className?: string;
@@ -23,6 +22,7 @@ interface IPropsPanelHeader {
23
22
  iconButtons?: Array<React.ReactNode>;
24
23
  }
25
24
  declare class PanelHeader extends React.PureComponent<IPropsPanelHeader> {
25
+ private zIndex;
26
26
  constructor(props: IPropsPanelHeader);
27
27
  render(): JSX.Element;
28
28
  }
@@ -47,6 +47,7 @@ var IconButton_1 = require("../IconButton");
47
47
  var Spinner_1 = require("../Spinner");
48
48
  var classnames_1 = __importDefault(require("classnames"));
49
49
  var ButtonGroup_1 = require("../ButtonGroup");
50
+ var zIndex_1 = require("../../zIndex");
50
51
  var Panel = /** @class */ (function (_super) {
51
52
  __extends(Panel, _super);
52
53
  function Panel() {
@@ -80,7 +81,9 @@ exports.default = Panel;
80
81
  var PanelHeader = /** @class */ (function (_super) {
81
82
  __extends(PanelHeader, _super);
82
83
  function PanelHeader(props) {
83
- return _super.call(this, props) || this;
84
+ var _this = _super.call(this, props) || this;
85
+ _this.zIndex = (0, zIndex_1.getNextZIndex)();
86
+ return _this;
84
87
  }
85
88
  PanelHeader.prototype.render = function () {
86
89
  var _a;
@@ -90,7 +93,7 @@ var PanelHeader = /** @class */ (function (_super) {
90
93
  _a['side-panel__header--has-close'] = this.props.onClose,
91
94
  _a), this.props.className);
92
95
  var style = {
93
- zIndex: this.props.zIndex ? this.props.zIndex : 10,
96
+ zIndex: this.zIndex,
94
97
  };
95
98
  var defaultTheme = darkColors.includes(this.props.color || '') ? 'dark-ui' : null;
96
99
  return (React.createElement("div", { "data-theme": this.props.theme || defaultTheme, className: classes, style: style },
@@ -46,11 +46,11 @@ interface IMenuBranch {
46
46
  interface IProps {
47
47
  items: Array<IMenuItem>;
48
48
  children: (toggle: (event: SyntheticEvent) => void) => JSX.Element;
49
- zIndex?: number;
50
49
  }
51
50
  export declare class Menu extends React.Component<IProps, {}> {
52
51
  private menu;
53
52
  private focusedBefore;
53
+ private zIndex;
54
54
  constructor(props: IProps);
55
55
  private toPrimeReactInterface;
56
56
  private toggle;
@@ -42,7 +42,7 @@ exports.Menu = void 0;
42
42
  var React = __importStar(require("react"));
43
43
  var tieredmenu_1 = require("@superdesk/primereact/tieredmenu");
44
44
  var helpers_1 = require("../helpers");
45
- var superdeskTopBarZIndex = 1050;
45
+ var zIndex_1 = require("../zIndex");
46
46
  function isSeparator(item) {
47
47
  return item['separator'] === true;
48
48
  }
@@ -56,6 +56,7 @@ var Menu = /** @class */ (function (_super) {
56
56
  __extends(Menu, _super);
57
57
  function Menu(props) {
58
58
  var _this = _super.call(this, props) || this;
59
+ _this.zIndex = (0, zIndex_1.getNextZIndex)();
59
60
  _this.menu = null;
60
61
  _this.focusedBefore = null;
61
62
  _this.close = _this.close.bind(_this);
@@ -107,7 +108,6 @@ var Menu = /** @class */ (function (_super) {
107
108
  };
108
109
  Menu.prototype.render = function () {
109
110
  var _this = this;
110
- var _a;
111
111
  return (React.createElement(React.Fragment, null,
112
112
  this.props.children(this.toggle),
113
113
  React.createElement("div", { onKeyDown: function (event) {
@@ -125,7 +125,7 @@ var Menu = /** @class */ (function (_super) {
125
125
  if (firstMenuItem instanceof HTMLElement) {
126
126
  firstMenuItem.focus();
127
127
  }
128
- }, "data-test-id": "menu", zIndex: (_a = this.props.zIndex) !== null && _a !== void 0 ? _a : superdeskTopBarZIndex }))));
128
+ }, "data-test-id": "menu", zIndex: this.zIndex }))));
129
129
  };
130
130
  return Menu;
131
131
  }(React.Component));
@@ -4,7 +4,6 @@ interface IProps {
4
4
  className?: string;
5
5
  theme?: string;
6
6
  visible?: boolean;
7
- zIndex?: number;
8
7
  closeOnEscape?: boolean;
9
8
  contentBg?: 'default' | 'medium' | 'dark';
10
9
  contentPadding?: 'none' | 'small' | 'medium' | 'large';
@@ -19,6 +18,7 @@ interface IProps {
19
18
  onHide?(): void;
20
19
  }
21
20
  export declare class Modal extends React.Component<IProps, {}> {
21
+ private zIndex;
22
22
  render(): JSX.Element;
23
23
  }
24
24
  export {};
@@ -46,10 +46,13 @@ var React = __importStar(require("react"));
46
46
  var dialog_1 = require("@superdesk/primereact/dialog");
47
47
  var classnames_1 = __importDefault(require("classnames"));
48
48
  var lodash_1 = require("lodash");
49
+ var zIndex_1 = require("./../zIndex");
49
50
  var Modal = /** @class */ (function (_super) {
50
51
  __extends(Modal, _super);
51
52
  function Modal() {
52
- return _super !== null && _super.apply(this, arguments) || this;
53
+ var _this = _super !== null && _super.apply(this, arguments) || this;
54
+ _this.zIndex = (0, zIndex_1.getNextZIndex)();
55
+ return _this;
53
56
  }
54
57
  Modal.prototype.render = function () {
55
58
  var _a;
@@ -62,7 +65,7 @@ var Modal = /** @class */ (function (_super) {
62
65
  _a["p-dialog-content--padding-".concat(this.props.contentPadding)] = this.props.contentPadding,
63
66
  _a), this.props.className);
64
67
  return (React.createElement("div", { style: { display: 'content' }, "data-theme": this.props.theme !== 'dark' ? null : 'dark-ui', "data-test-id": this.props['data-test-id'] },
65
- React.createElement(dialog_1.Dialog, { id: this.props.id, visible: this.props.visible, header: this.props.headerTemplate, footer: this.props.footerTemplate, closeOnEscape: this.props.closeOnEscape, maximized: this.props.maximized, maximizable: this.props.maximizable, contentClassName: classes, onShow: this.props.onShow, onHide: (_b = this.props.onHide) !== null && _b !== void 0 ? _b : lodash_1.noop, zIndex: this.props.zIndex ? this.props.zIndex : 1000, position: this.props.position, closable: this.props.onHide != null ? true : false }, this.props.children)));
68
+ React.createElement(dialog_1.Dialog, { id: this.props.id, visible: this.props.visible, header: this.props.headerTemplate, footer: this.props.footerTemplate, closeOnEscape: this.props.closeOnEscape, maximized: this.props.maximized, maximizable: this.props.maximizable, contentClassName: classes, onShow: this.props.onShow, onHide: (_b = this.props.onHide) !== null && _b !== void 0 ? _b : lodash_1.noop, zIndex: this.zIndex, position: this.props.position, closable: this.props.onHide != null ? true : false }, this.props.children)));
66
69
  };
67
70
  return Modal;
68
71
  }(React.Component));
@@ -13,7 +13,6 @@ interface IProps<T> extends IInputWrapper {
13
13
  filter?: boolean;
14
14
  showClear?: boolean;
15
15
  showSelectAll?: boolean;
16
- zIndex?: number;
17
16
  optionLabel: (option: T) => string;
18
17
  itemTemplate?(item: T): JSX.Element | undefined;
19
18
  selectedItemTemplate?(value: T): JSX.Element | undefined;
@@ -26,6 +25,7 @@ interface IState<T> {
26
25
  }
27
26
  export declare class MultiSelect<T> extends React.Component<IProps<T>, IState<T>> {
28
27
  private htmlId;
28
+ private zIndex;
29
29
  constructor(props: IProps<T>);
30
30
  render(): JSX.Element;
31
31
  }
@@ -48,11 +48,13 @@ var classnames_1 = __importDefault(require("classnames"));
48
48
  var react_id_generator_1 = __importDefault(require("react-id-generator"));
49
49
  var Form_1 = require("./Form");
50
50
  var SelectPreview_1 = require("./SelectPreview");
51
+ var zIndex_1 = require("../zIndex");
51
52
  var MultiSelect = /** @class */ (function (_super) {
52
53
  __extends(MultiSelect, _super);
53
54
  function MultiSelect(props) {
54
55
  var _this = _super.call(this, props) || this;
55
56
  _this.htmlId = (0, react_id_generator_1.default)();
57
+ _this.zIndex = (0, zIndex_1.getNextZIndex)();
56
58
  _this.state = {
57
59
  value: _this.props.value != null ? _this.props.value : [],
58
60
  options: [],
@@ -74,7 +76,7 @@ var MultiSelect = /** @class */ (function (_super) {
74
76
  React.createElement(multiselect_1.MultiSelect, { panelClassName: classes, value: this.props.value, options: this.props.options, onChange: function (_a) {
75
77
  var value = _a.value;
76
78
  return _this.props.onChange(value);
77
- }, display: "chip", zIndex: this.props.zIndex, filter: this.props.filter, appendTo: document.body, placeholder: this.props.placeholder, optionLabel: function (option) { return _this.props.optionLabel(option); }, emptyFilterMessage: this.props.emptyFilterMessage, filterPlaceholder: this.props.filterPlaceholder, itemTemplate: this.props.itemTemplate, selectedItemTemplate: this.props.selectedItemTemplate, maxSelectedLabels: (_a = this.props.maxSelectedLabels) !== null && _a !== void 0 ? _a : 4, selectedItemsLabel: this.props.selectedItemsLabel, ariaLabelledBy: this.htmlId + 'label', tabIndex: this.props.tabIndex ? this.props.tabIndex : '0', showClear: this.props.showClear, disabled: this.props.disabled, inputId: this.htmlId })));
79
+ }, display: "chip", zIndex: this.zIndex, filter: this.props.filter, appendTo: document.body, placeholder: this.props.placeholder, optionLabel: function (option) { return _this.props.optionLabel(option); }, emptyFilterMessage: this.props.emptyFilterMessage, filterPlaceholder: this.props.filterPlaceholder, itemTemplate: this.props.itemTemplate, selectedItemTemplate: this.props.selectedItemTemplate, maxSelectedLabels: (_a = this.props.maxSelectedLabels) !== null && _a !== void 0 ? _a : 4, selectedItemsLabel: this.props.selectedItemsLabel, ariaLabelledBy: this.htmlId + 'label', tabIndex: this.props.tabIndex ? this.props.tabIndex : '0', showClear: this.props.showClear, disabled: this.props.disabled, inputId: this.htmlId })));
78
80
  };
79
81
  return MultiSelect;
80
82
  }(React.Component));
@@ -5,7 +5,6 @@ interface IProps {
5
5
  triggerSelector: string;
6
6
  displayCloseButton?: boolean;
7
7
  placement?: PopperOptions['placement'];
8
- zIndex?: number;
9
8
  }
10
9
  export declare class Popover extends React.Component<IProps> {
11
10
  render(): JSX.Element;
@@ -49,7 +49,7 @@ var Popover = /** @class */ (function (_super) {
49
49
  Popover.prototype.render = function () {
50
50
  var _this = this;
51
51
  var _a, _b;
52
- return (React.createElement(_Positioner_1.Positioner, { triggerSelector: this.props.triggerSelector, placement: (_a = this.props.placement) !== null && _a !== void 0 ? _a : 'auto', className: "sd-popover", zIndex: this.props.zIndex },
52
+ return (React.createElement(_Positioner_1.Positioner, { triggerSelector: this.props.triggerSelector, placement: (_a = this.props.placement) !== null && _a !== void 0 ? _a : 'auto', className: "sd-popover" },
53
53
  React.createElement("div", { className: "sd-popover__header" },
54
54
  React.createElement("h4", { className: "sd-popover__title", tabIndex: 0, id: 'popoverTitle' }, this.props.title),
55
55
  ((_b = this.props.displayCloseButton) !== null && _b !== void 0 ? _b : true) && (React.createElement("button", { className: "icn-btn icn-btn--small sd-popover__close", tabIndex: 0, "aria-label": 'Close dialog', onClick: function () {
@@ -26,6 +26,9 @@ interface IState<T> {
26
26
  loading: boolean;
27
27
  invalid: boolean;
28
28
  }
29
+ /**
30
+ * @deprecated use MultiSelect or TreeSelect
31
+ */
29
32
  export declare class SelectWithTemplate<T> extends React.Component<IProps<T>, IState<T>> {
30
33
  componentRef: Dropdown | null;
31
34
  private htmlId;
@@ -47,6 +47,9 @@ var dropdown_1 = require("@superdesk/primereact/dropdown");
47
47
  var react_id_generator_1 = __importDefault(require("react-id-generator"));
48
48
  var Form_1 = require("./Form");
49
49
  var labelKey = 'label';
50
+ /**
51
+ * @deprecated use MultiSelect or TreeSelect
52
+ */
50
53
  var SelectWithTemplate = /** @class */ (function (_super) {
51
54
  __extends(SelectWithTemplate, _super);
52
55
  function SelectWithTemplate(props) {
@@ -1,10 +1,29 @@
1
1
  import * as React from 'react';
2
2
  import { Placement } from '@popperjs/core';
3
+ interface IPropsPopupPositioner {
4
+ referenceElement: HTMLElement;
5
+ placement: Placement;
6
+ onClose(): void;
7
+ closeOnHoverEnd?: boolean;
8
+ }
9
+ export declare class PopupPositioner extends React.PureComponent<IPropsPopupPositioner> {
10
+ private wrapperEl;
11
+ private popper;
12
+ private zIndex;
13
+ constructor(props: IPropsPopupPositioner);
14
+ closeOnClick(event: MouseEvent): void;
15
+ closeOnScroll(event: Event): void;
16
+ closeOnMouseLeave(event: MouseEvent): void;
17
+ componentDidMount(): void;
18
+ componentWillUnmount(): void;
19
+ render(): JSX.Element;
20
+ }
3
21
  /**
4
22
  * The popup will remove itself if click/scroll events are detected outside the popup.
5
23
  */
6
24
  export declare function showPopup(referenceElement: HTMLElement, placement: Placement, Component: React.ComponentType<{
7
25
  closePopup(): void;
8
- }>, zIndex?: number, closeOnHoverEnd?: boolean, onClose?: () => void): {
26
+ }>, closeOnHoverEnd?: boolean, onClose?: () => void): {
9
27
  close: () => void;
10
28
  };
29
+ export {};
@@ -41,16 +41,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
41
41
  return (mod && mod.__esModule) ? mod : { "default": mod };
42
42
  };
43
43
  Object.defineProperty(exports, "__esModule", { value: true });
44
- exports.showPopup = void 0;
44
+ exports.showPopup = exports.PopupPositioner = void 0;
45
45
  var React = __importStar(require("react"));
46
46
  var react_dom_1 = __importDefault(require("react-dom"));
47
47
  var core_1 = require("@popperjs/core");
48
48
  var lodash_1 = require("lodash");
49
49
  var popper_max_size_modifier_1 = __importDefault(require("popper-max-size-modifier"));
50
+ var zIndex_1 = require("../zIndex");
50
51
  var PopupPositioner = /** @class */ (function (_super) {
51
52
  __extends(PopupPositioner, _super);
52
53
  function PopupPositioner(props) {
53
54
  var _this = _super.call(this, props) || this;
55
+ _this.zIndex = (0, zIndex_1.getNextZIndex)();
54
56
  _this.closeOnClick = _this.closeOnClick.bind(_this);
55
57
  _this.closeOnScroll = (0, lodash_1.throttle)(_this.closeOnScroll.bind(_this), 200);
56
58
  _this.closeOnMouseLeave = _this.closeOnMouseLeave.bind(_this);
@@ -133,17 +135,22 @@ var PopupPositioner = /** @class */ (function (_super) {
133
135
  };
134
136
  PopupPositioner.prototype.render = function () {
135
137
  var _this = this;
136
- var _a;
137
138
  return (React.createElement("div", { ref: function (el) {
138
139
  _this.wrapperEl = el;
139
- }, style: { zIndex: (_a = this.props.zIndex) !== null && _a !== void 0 ? _a : 1, position: 'absolute', left: '-100vw', display: 'flex' } }, this.props.children));
140
+ }, style: {
141
+ position: 'absolute',
142
+ left: '-100vw',
143
+ display: 'flex',
144
+ zIndex: this.zIndex,
145
+ } }, this.props.children));
140
146
  };
141
147
  return PopupPositioner;
142
148
  }(React.PureComponent));
149
+ exports.PopupPositioner = PopupPositioner;
143
150
  /**
144
151
  * The popup will remove itself if click/scroll events are detected outside the popup.
145
152
  */
146
- function showPopup(referenceElement, placement, Component, zIndex, closeOnHoverEnd, onClose) {
153
+ function showPopup(referenceElement, placement, Component, closeOnHoverEnd, onClose) {
147
154
  var el = document.createElement('div');
148
155
  document.body.appendChild(el);
149
156
  var closeFn = function () {
@@ -151,7 +158,7 @@ function showPopup(referenceElement, placement, Component, zIndex, closeOnHoverE
151
158
  el.remove();
152
159
  onClose === null || onClose === void 0 ? void 0 : onClose();
153
160
  };
154
- react_dom_1.default.render((React.createElement(PopupPositioner, { referenceElement: referenceElement, placement: placement, onClose: closeFn, zIndex: zIndex, closeOnHoverEnd: closeOnHoverEnd || false },
161
+ react_dom_1.default.render((React.createElement(PopupPositioner, { referenceElement: referenceElement, placement: placement, onClose: closeFn, closeOnHoverEnd: closeOnHoverEnd || false },
155
162
  React.createElement(Component, { closePopup: closeFn }))), el);
156
163
  return { close: closeFn };
157
164
  }
@@ -1,7 +1,6 @@
1
1
  import * as React from 'react';
2
2
  interface IProps {
3
3
  color?: 'light' | 'darker' | 'blueGrey' | 'blueGreyDarker';
4
- zIndex?: number;
5
4
  theme?: 'light' | 'dark';
6
5
  className?: string;
7
6
  }
@@ -74,11 +74,8 @@ var SubNav = /** @class */ (function (_super) {
74
74
  },
75
75
  _a["subnav--".concat(this.props.color)] = this.props.color || this.props.color !== undefined,
76
76
  _a), this.props.className);
77
- var style = {
78
- zIndex: 1000 + (this.props.zIndex ? this.props.zIndex : 0),
79
- };
80
77
  var defaultTheme = darkColors.includes(this.props.color || '') ? 'dark-ui' : null;
81
- return (React.createElement("div", { "data-theme": this.props.theme ? "".concat(this.props.theme, "-ui") : defaultTheme, className: classes, style: style }, this.props.children));
78
+ return (React.createElement("div", { "data-theme": this.props.theme ? "".concat(this.props.theme, "-ui") : defaultTheme, className: classes }, this.props.children));
82
79
  };
83
80
  return SubNav;
84
81
  }(React.PureComponent));
@@ -11,7 +11,6 @@ interface IState<T> {
11
11
  buttonTarget: Array<string>;
12
12
  }
13
13
  interface IProps<T> {
14
- zIndex?: number;
15
14
  searchPlaceholder?: string;
16
15
  singleLevelSearch?: boolean;
17
16
  'data-test-id'?: string;
@@ -40,6 +39,7 @@ export declare class TreeMenu<T> extends React.Component<IProps<T>, IState<T>> {
40
39
  private treeMenuRef;
41
40
  private inputRef;
42
41
  private popperInstance;
42
+ private zIndex;
43
43
  constructor(props: IProps<T>);
44
44
  inputFocus: () => void;
45
45
  listNavigation: () => void;
@@ -55,6 +55,7 @@ var TreeSelectItem_1 = require("./TreeSelect/TreeSelectItem");
55
55
  var KeyboardNavigation_1 = require("./TreeSelect/KeyboardNavigation");
56
56
  var WithPortal_1 = require("./WithPortal");
57
57
  var helpers_1 = require("../helpers");
58
+ var zIndex_1 = require("../zIndex");
58
59
  function nodeHasChildren(item) {
59
60
  return item[(0, helpers_1.nameof)('children')] != null;
60
61
  }
@@ -77,6 +78,7 @@ var TreeMenu = /** @class */ (function (_super) {
77
78
  __extends(TreeMenu, _super);
78
79
  function TreeMenu(props) {
79
80
  var _this = _super.call(this, props) || this;
81
+ _this.zIndex = (0, zIndex_1.getNextZIndex)();
80
82
  _this.inputFocus = function () {
81
83
  var _a;
82
84
  (_a = _this.inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
@@ -298,7 +300,7 @@ var TreeMenu = /** @class */ (function (_super) {
298
300
  React.createElement("div", { ref: this.openDropdownRef }, this.props.children(this.toggle)),
299
301
  React.createElement(WithPortal_1.WithPortal, { active: this.state.openDropdown, "data-test-id": "tree-menu-popover" },
300
302
  React.createElement("div", { ref: this.dropdownRef, className: "autocomplete autocomplete--multi-select autocomplete--fixed-width", style: {
301
- zIndex: this.props.zIndex,
303
+ zIndex: this.zIndex,
302
304
  } },
303
305
  React.createElement("div", { className: 'autocomplete__header' },
304
306
  React.createElement("div", { className: "autocomplete__icon", onClick: function () {
@@ -28,7 +28,6 @@ interface IPropsBase<T> extends IInputWrapper {
28
28
  searchPlaceholder?: string;
29
29
  noResultsFoundMessage?: string;
30
30
  dropdownInitiallyOpen?: boolean;
31
- zIndex?: number;
32
31
  sortable?: boolean;
33
32
  'data-test-id'?: string;
34
33
  getLabel(item: T): string;
@@ -63,6 +62,7 @@ export declare class TreeSelect<T> extends React.Component<IProps<T>, IState<T>>
63
62
  private treeSelectRef;
64
63
  private htmlId;
65
64
  private popperInstance;
65
+ private zIndex;
66
66
  constructor(props: IProps<T>);
67
67
  inputFocus: () => void;
68
68
  listNavigation: () => void;
@@ -77,6 +77,7 @@ var TreeSelectItem_1 = require("./TreeSelectItem");
77
77
  var KeyboardNavigation_1 = require("./KeyboardNavigation");
78
78
  var WithPortal_1 = require("../WithPortal");
79
79
  var react_beautiful_dnd_1 = require("react-beautiful-dnd");
80
+ var zIndex_1 = require("../../zIndex");
80
81
  var reorder = function (list, startIndex, endIndex) {
81
82
  var result = Array.from(list);
82
83
  var removed = result.splice(startIndex, 1)[0];
@@ -88,6 +89,7 @@ var TreeSelect = /** @class */ (function (_super) {
88
89
  function TreeSelect(props) {
89
90
  var _this = _super.call(this, props) || this;
90
91
  _this.htmlId = (0, react_id_generator_1.default)();
92
+ _this.zIndex = (0, zIndex_1.getNextZIndex)();
91
93
  _this.inputFocus = function () {
92
94
  var _a;
93
95
  (_a = _this.inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
@@ -626,7 +628,7 @@ var TreeSelect = /** @class */ (function (_super) {
626
628
  React.createElement(WithPortal_1.WithPortal, { active: this.state.openDropdown, "data-test-id": "tree-select-popover" },
627
629
  React.createElement("div", { className: "autocomplete autocomplete--multi-select"
628
630
  + (this.props.width === 'medium' ? ' autocomplete--fixed-width' : ''), style: {
629
- zIndex: this.props.zIndex,
631
+ zIndex: this.zIndex,
630
632
  width: (_b = this.treeSelectRef.current) === null || _b === void 0 ? void 0 : _b.offsetWidth,
631
633
  }, ref: this.dropdownRef },
632
634
  React.createElement("div", { className: 'autocomplete__header' },
@@ -6,7 +6,6 @@ export interface IPropsWithPopover {
6
6
  component: React.ComponentType<{
7
7
  closePopup(): void;
8
8
  }>;
9
- zIndex?: number;
10
9
  closeOnHoverEnd?: boolean;
11
10
  onClose?: () => void;
12
11
  }
@@ -55,7 +55,7 @@ var WithPopover = /** @class */ (function (_super) {
55
55
  this.closePopup = undefined;
56
56
  }
57
57
  else {
58
- this.closePopup = (0, ShowPopup_1.showPopup)(referenceElement, this.props.placement, this.props.component, this.props.zIndex, this.props.closeOnHoverEnd, function () {
58
+ this.closePopup = (0, ShowPopup_1.showPopup)(referenceElement, this.props.placement, this.props.component, this.props.closeOnHoverEnd, function () {
59
59
  var _a, _b;
60
60
  _this.closePopup = undefined;
61
61
  (_b = (_a = _this.props).onClose) === null || _b === void 0 ? void 0 : _b.call(_a);
@@ -6,7 +6,6 @@ type ICloseOthersEvent = CustomEvent<{
6
6
  interface IPropsPositioner {
7
7
  triggerSelector: string;
8
8
  placement: PopperOptions['placement'];
9
- zIndex?: number;
10
9
  className?: string;
11
10
  }
12
11
  interface IStatePositioner {
@@ -53,6 +53,7 @@ exports.Positioner = void 0;
53
53
  var React = __importStar(require("react"));
54
54
  var ReactDOM = __importStar(require("react-dom"));
55
55
  var _popper = __importStar(require("popper.js"));
56
+ var zIndex_1 = require("../zIndex");
56
57
  var Popper = _popper.default;
57
58
  var eventCloseOthers = 'superdesk-ui-framework.positioner.closeOthers';
58
59
  var padding = 5;
@@ -60,6 +61,7 @@ var PopperWrapper = /** @class */ (function (_super) {
60
61
  __extends(PopperWrapper, _super);
61
62
  function PopperWrapper(props) {
62
63
  var _this = _super.call(this, props) || this;
64
+ _this.zIndex = (0, zIndex_1.getNextZIndex)();
63
65
  _this.wrapper = document.createElement('div'); // avoid setting to null
64
66
  _this.closeDropdownOnOutsideClickBound = function (event) {
65
67
  _this.props.closeDropdownOnOutsideClick(_this.wrapper, event);
@@ -74,9 +76,7 @@ var PopperWrapper = /** @class */ (function (_super) {
74
76
  _this.props.handleCloseOthers(event);
75
77
  });
76
78
  var dropdownElement = this.wrapper;
77
- if (this.props.zIndex != null) {
78
- dropdownElement.style.zIndex = this.props.zIndex.toString();
79
- }
79
+ dropdownElement.style.zIndex = this.zIndex.toString();
80
80
  var rect = this.props.triggerElement.getBoundingClientRect();
81
81
  var viewportHeight = document.documentElement.clientHeight;
82
82
  var viewportWidth = document.documentElement.clientWidth;
@@ -12,7 +12,6 @@ export interface IPropsAvatarGroup {
12
12
  * if exceeded, "+1"/"+2"/"+n" button will be shown
13
13
  */
14
14
  max?: number | 'show-all';
15
- zIndex?: number;
16
15
  onClick?(): void;
17
16
  }
18
17
  export declare class AvatarGroup extends React.PureComponent<IPropsAvatarGroup> {
@@ -71,8 +71,7 @@ var AvatarGroup = /** @class */ (function (_super) {
71
71
  }
72
72
  AvatarGroup.prototype.render = function () {
73
73
  var _this = this;
74
- var _a;
75
- var _b = this.props, size = _b.size, items = _b.items;
74
+ var _a = this.props, size = _a.size, items = _a.items;
76
75
  var someIconsHaveExtraElements = items.filter(isAvatar).some(function (_a) {
77
76
  var icon = _a.icon, administratorIndicator = _a.administratorIndicator;
78
77
  return icon != null || administratorIndicator != null;
@@ -104,7 +103,7 @@ var AvatarGroup = /** @class */ (function (_super) {
104
103
  }
105
104
  };
106
105
  var someHaveDisplayName = this.props.items.some(function (item) { return isAvatar(item) && item.displayName.length > 0; });
107
- return (React.createElement(WithPopover_1.WithPopover, { zIndex: (_a = this.props.zIndex) !== null && _a !== void 0 ? _a : 101, placement: 'bottom-end', component: function () { return (React.createElement("div", { className: "avatar-popup" }, _this.props.items.map(function (item, index) {
106
+ return (React.createElement(WithPopover_1.WithPopover, { placement: 'bottom-end', component: function () { return (React.createElement("div", { className: "avatar-popup" }, _this.props.items.map(function (item, index) {
108
107
  return (someHaveDisplayName
109
108
  ? React.createElement(common_1.Spacer, { h: true, alignItems: 'center', gap: '16', noGrow: true, key: index },
110
109
  isAvatar(item)
package/react/index.d.ts CHANGED
@@ -92,6 +92,7 @@ export { ContentListItem } from './components/Lists/ContentList';
92
92
  export { MultiSelect } from './components/MultiSelect';
93
93
  export { ResizablePanels } from './components/ResizablePanels';
94
94
  export { WithPopover } from './components/WithPopover';
95
+ export { PopupPositioner, showPopup } from './components/ShowPopup';
95
96
  export { Spacer, SpacerBlock } from '@superdesk/common';
96
97
  export { ResizeObserverComponent } from './components/ResizeObserverComponent';
97
98
  export { DragHandleDots } from './components/DragHandleDots';
package/react/index.js CHANGED
@@ -18,7 +18,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.Divider = exports.Icon = exports.Prop = exports.PropsList = exports.StrechBar = exports.SlidingToolbar = exports.SubNavDivider = exports.SubNav = exports.LeftMenu = exports.TabList = exports.Tab = exports.NavButton = exports.CheckButtonGroup = exports.CheckGroup = exports.CheckboxButton = exports.RadioButtonGroup = exports.Checkbox = exports.RadioGroup = exports.Loader = exports.ButtonGroup = exports.SwitchGroup = exports.Switch = exports.FormLabel = exports.TimePickerV2 = exports.TimePicker = exports.DatePickerISO = exports.DatePicker = exports.getDurationString = exports.DurationInput = exports.Tooltip = exports.IconLabel = exports.IconButton = exports.Rotate = exports.AvatarPlaceholder = exports.Avatar = exports.AvatarGroup = exports.AvatarContentImage = exports.AvatarContentText = exports.AvatarWrapper = exports.Alert = exports.Badge = exports.Label = exports.Popover = exports.WithPagination = exports.SelectWithTemplate = exports.Option = exports.Select = exports.Input = exports.Button = exports.HelloWorld = void 0;
20
20
  exports.Time = exports.Text = exports.LoadingOverlay = exports.Spinner = exports.ListItemLoader = exports.Skeleton = exports.IllustrationButton = exports.SvgIconIllustration = exports.WithSizeObserver = exports.SearchBar = exports.CreateButton = exports.DropZone = exports.ThemeSelector = exports.IconPicker = exports.SelectGrid = exports.ToggleBox = exports.Menu = exports.toasted = exports.GridItemCheckWrapper = exports.GridItemTopActions = exports.GridItemFooterActions = exports.GridItemFooterBlock = exports.GridItemSlug = exports.GridItemText = exports.GridItemTitle = exports.GridItemTime = exports.GridItemContentBlock = exports.GridItemFooter = exports.GridItemMedia = exports.GridItemContent = exports.GridItem = exports.GridList = exports.Modal = exports.Carousel = exports.DonutChart = exports.Autocomplete = exports.EmptyState = exports.Tabs = exports.TabContent = exports.TabPanel = exports.TabLabel = exports.TagInput = exports.Tag = exports.Dropdown = exports.DropdownDivider = exports.DropdownLabel = exports.DropdownItem = exports.DropdownFirst = exports.HeadingText = exports.ContentDivider = void 0;
21
- exports.DragHandle = exports.DragHandleDots = exports.ResizeObserverComponent = exports.SpacerBlock = exports.Spacer = exports.WithPopover = exports.ResizablePanels = exports.MultiSelect = exports.ContentListItem = exports.TableListItem = exports.TableList = exports.TreeMenu = exports.TreeSelect = exports.BottomNav = exports.Heading = void 0;
21
+ exports.DragHandle = exports.DragHandleDots = exports.ResizeObserverComponent = exports.SpacerBlock = exports.Spacer = exports.showPopup = exports.PopupPositioner = exports.WithPopover = exports.ResizablePanels = exports.MultiSelect = exports.ContentListItem = exports.TableListItem = exports.TableList = exports.TreeMenu = exports.TreeSelect = exports.BottomNav = exports.Heading = void 0;
22
22
  var HelloWorld_1 = require("./components/HelloWorld");
23
23
  Object.defineProperty(exports, "HelloWorld", { enumerable: true, get: function () { return HelloWorld_1.HelloWorld; } });
24
24
  var Button_1 = require("./components/Button");
@@ -222,6 +222,9 @@ var ResizablePanels_1 = require("./components/ResizablePanels");
222
222
  Object.defineProperty(exports, "ResizablePanels", { enumerable: true, get: function () { return ResizablePanels_1.ResizablePanels; } });
223
223
  var WithPopover_1 = require("./components/WithPopover");
224
224
  Object.defineProperty(exports, "WithPopover", { enumerable: true, get: function () { return WithPopover_1.WithPopover; } });
225
+ var ShowPopup_1 = require("./components/ShowPopup");
226
+ Object.defineProperty(exports, "PopupPositioner", { enumerable: true, get: function () { return ShowPopup_1.PopupPositioner; } });
227
+ Object.defineProperty(exports, "showPopup", { enumerable: true, get: function () { return ShowPopup_1.showPopup; } });
225
228
  var common_1 = require("@superdesk/common");
226
229
  Object.defineProperty(exports, "Spacer", { enumerable: true, get: function () { return common_1.Spacer; } });
227
230
  Object.defineProperty(exports, "SpacerBlock", { enumerable: true, get: function () { return common_1.SpacerBlock; } });
@@ -0,0 +1,2 @@
1
+ export declare let zIndex: number;
2
+ export declare function getNextZIndex(): number;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getNextZIndex = exports.zIndex = void 0;
4
+ exports.zIndex = 1100;
5
+ function getNextZIndex() {
6
+ return ++exports.zIndex;
7
+ }
8
+ exports.getNextZIndex = getNextZIndex;