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
@@ -17,7 +17,7 @@ export default class NavButtonsDoc 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} />
@@ -36,7 +36,7 @@ export default class NavButtonsDoc extends React.Component {
36
36
  </SubNav>
37
37
  </Markup.ReactMarkupPreview>
38
38
  <Markup.ReactMarkupCode>{`
39
- <SubNav zIndex={2}>
39
+ <SubNav>
40
40
  <ButtonGroup align='start' spaces='no-space'>
41
41
  <Tooltip text='Filters' flow='right'>
42
42
  <NavButton icon='filter-large' type='darker' state="active" text="Filter" onClick={() => false} />
@@ -59,7 +59,7 @@ export default class NavButtonsDoc extends React.Component {
59
59
  <h3 className="docs-page__h3">Styles / Types</h3>
60
60
  <Markup.ReactMarkup>
61
61
  <Markup.ReactMarkupPreview>
62
- <SubNav zIndex={2}>
62
+ <SubNav>
63
63
  <ButtonGroup align='start' spaces='no-space'>
64
64
  <NavButton icon='adjust' type='default' text="Adjust" onClick={() => false} />
65
65
  <NavButton icon='eye-open' type='darker' text="View" onClick={() => false} />
@@ -72,7 +72,7 @@ export default class NavButtonsDoc extends React.Component {
72
72
  </SubNav>
73
73
  </Markup.ReactMarkupPreview>
74
74
  <Markup.ReactMarkupCode>{`
75
- <SubNav zIndex={2}>
75
+ <SubNav>
76
76
  <ButtonGroup align='start' spaces='no-space'>
77
77
  <NavButton icon='adjust' type='default' text="Adjust" onClick={() => false} />
78
78
  <NavButton icon='eye-open' type='darker' text="View" onClick={() => false} />
@@ -359,7 +359,6 @@ export default class PanelDoc extends React.Component<IProps, IState> {
359
359
  <p className="docs-page__paragraph">PanelHeader</p>
360
360
  <PropsList>
361
361
  <Prop name='title' isRequired={false} type='string' default='/' description='Specifies the title of the panel.'/>
362
- <Prop name='zIndex' isRequired={false} type='number' default='1' description='Increase the z-index of the header if needed.'/>
363
362
  <Prop name='theme' isRequired={false} type='light | dark' default='/' description='Explicitly define the theme just for the of Panel Header. All child elements and the content inside the Header will inherit the selected theme.'/>
364
363
  <Prop name='color' isRequired={false} type='light | darker | blueGrey | blueGreyDarker' default='light' description='Background colour of the Panel Header. blueGrey and blueGreyDarker will also change the text colour to white.'/>
365
364
  <Prop name='ClassName' isRequired={false} type='string' default='false' description='Add custom or helper classes to modify the default behaviour if needed. Use only if necessary.'/>
@@ -35,7 +35,6 @@ export class PopoverDoc extends React.Component {
35
35
  triggerSelector="#button-view-content"
36
36
  title="Popover test"
37
37
  placement="top-end"
38
- zIndex={999}
39
38
  >
40
39
  Donec sed odio dui. Aenean lacinia bibendum nulla sed consectetur.
41
40
  </Popover>
@@ -49,7 +48,6 @@ export class PopoverDoc extends React.Component {
49
48
  triggerSelector="#button-view-content"
50
49
  title="Popover test"
51
50
  placement="top-end"
52
- zIndex={999}
53
51
  >
54
52
  Donec sed odio dui. Aenean lacinia bibendum nulla sed consectetur.
55
53
  </Popover>
@@ -65,7 +63,6 @@ export class PopoverDoc extends React.Component {
65
63
  <Prop name='placement' isRequired={false}
66
64
  type='auto | auto-end | auto-start | bottom | bottom-end | bottom-start | left | left-end | left-start | right | right-end | right-start | top | top-end | top-start'
67
65
  default='auto' description='Define the placement of the Popover.' />
68
- <Prop name='zIndex' isRequired={false} type='number' default='null' description='Defines the z-index of the Popover.' />
69
66
  </PropsList>
70
67
  </section>
71
68
  )
@@ -9,7 +9,7 @@ export default class SubNavDoc extends React.Component {
9
9
  <h2 className='docs-page__h2'>Sub Navigation bar</h2>
10
10
  <p></p>
11
11
  <Markup.ReactMarkupCodePreview>{`
12
- <SubNav zIndex={2}>
12
+ <SubNav>
13
13
  <ButtonGroup align='start'>
14
14
  <NavButton icon='search' onClick={()=> false} />
15
15
  </ButtonGroup>
@@ -22,7 +22,7 @@ export default class SubNavDoc extends React.Component {
22
22
 
23
23
  <Markup.ReactMarkup>
24
24
  <Markup.ReactMarkupPreview>
25
- <SubNav zIndex={4}>
25
+ <SubNav>
26
26
  <ButtonGroup align='start'>
27
27
  <NavButton icon='search' onClick={()=> false} />
28
28
  </ButtonGroup>
@@ -30,7 +30,7 @@ export default class SubNavDoc extends React.Component {
30
30
  <NavButton icon='expand-thin' type='highlight' onClick={()=> false} />
31
31
  </ButtonGroup>
32
32
  </SubNav>
33
- <SubNav color='darker' zIndex={3}>
33
+ <SubNav color='darker'>
34
34
  <ButtonGroup align='start'>
35
35
  <NavButton icon='filter-large' type='darker' onClick={()=> false} />
36
36
  </ButtonGroup>
@@ -48,7 +48,7 @@ export default class SubNavDoc extends React.Component {
48
48
  </ButtonGroup>
49
49
  </SubNav>
50
50
  <br />
51
- <SubNav color='darker' zIndex={2}>
51
+ <SubNav color='darker'>
52
52
  <ButtonGroup align='start' padded={true}>
53
53
  <Button text='Something' onClick={()=> false} />
54
54
  <Button text='Else' onClick={()=> false} />
@@ -58,7 +58,7 @@ export default class SubNavDoc extends React.Component {
58
58
  </ButtonGroup>
59
59
  </SubNav>
60
60
  <br />
61
- <SubNav color='blueGreyDarker' zIndex={1}>
61
+ <SubNav color='blueGreyDarker'>
62
62
  <ButtonGroup align='center'>
63
63
  <Button text='One' onClick={()=> false} />
64
64
  <Button text='Two' onClick={()=> false} />
@@ -72,7 +72,7 @@ export default class SubNavDoc extends React.Component {
72
72
  </SubNav>
73
73
  </Markup.ReactMarkupPreview>
74
74
  <Markup.ReactMarkupCode>{`
75
- <SubNav zIndex={4}>
75
+ <SubNav>
76
76
  <ButtonGroup align='start'>
77
77
  <NavButton icon='search' onClick={()=> false} />
78
78
  </ButtonGroup>
@@ -80,7 +80,7 @@ export default class SubNavDoc extends React.Component {
80
80
  <NavButton icon='expand-thin' type='highlight' onClick={()=> false} />
81
81
  </ButtonGroup>
82
82
  </SubNav>
83
- <SubNav color='darker' zIndex={3}>
83
+ <SubNav color='darker'>
84
84
  <ButtonGroup align='start'>
85
85
  <NavButton icon='filter-large' type='darker' onClick={()=> false} />
86
86
  </ButtonGroup>
@@ -100,7 +100,7 @@ export default class SubNavDoc extends React.Component {
100
100
 
101
101
  <br />
102
102
 
103
- <SubNav color='darker' zIndex={2}>
103
+ <SubNav color='darker'>
104
104
  <ButtonGroup align='start' padded={true}>
105
105
  <Button text='Something' onClick={()=> false} />
106
106
  <Button text='Else' onClick={()=> false} />
@@ -112,7 +112,7 @@ export default class SubNavDoc extends React.Component {
112
112
 
113
113
  <br />
114
114
 
115
- <SubNav color='blueGreyDarker' zIndex={1}>
115
+ <SubNav color='blueGreyDarker'>
116
116
  <ButtonGroup align='center'>
117
117
  <Button text='One' onClick={()=> false} />
118
118
  <Button text='Two' onClick={()=> false} />
@@ -132,7 +132,6 @@ export default class SubNavDoc extends React.Component {
132
132
  <PropsList>
133
133
  <Prop name='color' isRequired={false} type='light | darker | blueGrey | blueGreyDarker' default='light' description='Background colour of the SubNav component.'/>
134
134
  <Prop name='theme' isRequired={false} type='light | dark' default='/' description='Choose the UI theme. It will inherit the default theme if not set. All child elements will inherit the theme of the SubNav if it is set.'/>
135
- <Prop name='zIndex' isRequired={true} type='number' default='1000' description='Increase the default z-index value (1000) by the specified amount.'/>
136
135
  <Prop name='className' isRequired={false} type='string' default='/' description='Add helper classes or custom CSS styles.'/>
137
136
  </PropsList>
138
137
  </section>
@@ -23,7 +23,7 @@ export default class TableListDoc extends React.Component<IProps, IState> {
23
23
  </>,
24
24
  center: <span>Item 1</span>,
25
25
  end: <IconLabel style='translucent' text='Label success' type='success' icon='time' />,
26
- action: <Dropdown append={true} items={[
26
+ action: <Dropdown items={[
27
27
  { label: <Label style='translucent' type='primary' text='aacc' />, onSelect: () => 1 },
28
28
  { label: <Label style='translucent' text='prlg' />, onSelect: () => 1 },
29
29
  { label: <Label style='translucent' type='primary' text='prlg' />, onSelect: () => 1 },
@@ -77,7 +77,7 @@ class ThreePaneLayoutPattern extends React.Component<IProps, IState> {
77
77
  <div style={{height: 600,}} className='sd-border--light'>
78
78
  <Layout.PageLayout fullHeight={true}
79
79
  header={(
80
- <SubNav zIndex={2}>
80
+ <SubNav>
81
81
  <ButtonGroup align="inline">
82
82
  <Tooltip text='Click to toggle left panel' flow='right'>
83
83
  <NavButton
@@ -212,7 +212,7 @@ class ThreePaneLayoutPattern extends React.Component<IProps, IState> {
212
212
  <Markup.ReactMarkupCode>{`
213
213
  <Layout.PageLayout
214
214
  header={(
215
- <SubNav zIndex={2}>
215
+ <SubNav>
216
216
  <ButtonGroup align="inline">
217
217
  <Tooltip text='Click to toggle left panel' flow='right'>
218
218
  <NavButton
@@ -359,4 +359,4 @@ class ThreePaneLayoutPattern extends React.Component<IProps, IState> {
359
359
  }
360
360
  }
361
361
 
362
- export { ThreePaneLayoutPattern };
362
+ export { ThreePaneLayoutPattern };
@@ -296,7 +296,7 @@ export class CoreLayout extends React.Component<IProps, IState> {
296
296
  {!this.state.fullEditor && !this.state.rightPanel
297
297
  && <Layout.LayoutContainer>
298
298
  <Layout.HeaderPanel>
299
- <SubNav zIndex={2}>
299
+ <SubNav>
300
300
  <SearchBar placeholder='Search media'></SearchBar>
301
301
  <ButtonGroup align='end' spaces='no-space'>
302
302
  <Dropdown
@@ -346,7 +346,7 @@ export class CoreLayout extends React.Component<IProps, IState> {
346
346
  </Dropdown>
347
347
  </ButtonGroup>
348
348
  </SubNav>
349
- <SubNav zIndex={1}>
349
+ <SubNav>
350
350
  <ButtonGroup align='start'>
351
351
  <NavButton icon='filter-large' onClick={this.handleFilter} />
352
352
  </ButtonGroup>
@@ -585,7 +585,6 @@ export class CoreLayout extends React.Component<IProps, IState> {
585
585
  <Layout.Container className='sd-margin-s--auto sd-flex--items-center'>
586
586
  {/* <Dropdown
587
587
  align = 'right'
588
- append = {true}
589
588
  items={[
590
589
  {
591
590
  type: 'group', label: 'Actions', items: [
@@ -68,7 +68,7 @@ export class EditorTest extends React.Component<IProps, IState> {
68
68
  return (
69
69
  <Layout.AuthoringFrame
70
70
  header={(
71
- <SubNav zIndex={2}>
71
+ <SubNav>
72
72
  <ButtonGroup align='end'>
73
73
  <Button
74
74
  text="Open pinned"
@@ -84,7 +84,6 @@ export class Multiedit extends React.Component<IProps, IState> {
84
84
  }}
85
85
  >
86
86
  <Dropdown
87
- append
88
87
  items={[
89
88
  { label: 'Action 1', onSelect: () => this.setState({arr: [...this.state.arr, <Editor />]}) },
90
89
  ]}
@@ -116,7 +115,7 @@ export class Editor extends React.Component<{}, IEditor> {
116
115
  <div style={{borderRight: '4px solid grey'}}>
117
116
  <Layout.AuthoringFrame
118
117
  header={(
119
- <SubNav zIndex={2}>
118
+ <SubNav>
120
119
  <ButtonGroup align='end'>
121
120
  <ButtonGroup subgroup={true} spaces="no-space">
122
121
  <Tooltip text='More actions' flow='left'>
@@ -56,7 +56,7 @@ export class PageLayoutTest extends React.Component<IProps, IState> {
56
56
  return (
57
57
  <Layout.PageLayout
58
58
  header={(
59
- <SubNav zIndex={2}>
59
+ <SubNav>
60
60
  <ButtonGroup align="start" padded={true}>
61
61
  <Button
62
62
  text="Open left panel"
@@ -123,7 +123,7 @@ export class PersonalProfile extends React.Component<IProps, IState> {
123
123
  <Components.Layout header='My Profile' theme={this.state.theme}>
124
124
  <Components.LayoutContainer>
125
125
  <Components.HeaderPanel>
126
- <SubNav zIndex={2}>
126
+ <SubNav>
127
127
  <ButtonGroup align='start' spaces='no-space'>
128
128
  <Tooltip text='User list' flow='right'>
129
129
  <NavButton icon='arrow-left' onClick={() => false} />
@@ -135,7 +135,7 @@ export class PersonalProfile extends React.Component<IProps, IState> {
135
135
  </AvatarWrapper>
136
136
  <h2 className='subnav__page-title'>Jeffrey Lebowski</h2>
137
137
  </SubNav>
138
- <SubNav zIndex={1}>
138
+ <SubNav>
139
139
  <SubNavDivider width='small' />
140
140
  <Tabs onClick={this.handleClick}>
141
141
  <TabLabel label='Overview' indexValue={0}/>
@@ -176,7 +176,7 @@ export class Rundowns extends React.Component<IProps, IState> {
176
176
 
177
177
  <Layout.LayoutContainer>
178
178
  <Layout.HeaderPanel>
179
- <SubNav zIndex={2}>
179
+ <SubNav>
180
180
  <SearchBar placeholder='Search media'></SearchBar>
181
181
  <ButtonGroup align='end' spaces='no-space'>
182
182
  <Dropdown
@@ -227,7 +227,7 @@ export class Rundowns extends React.Component<IProps, IState> {
227
227
  </Dropdown>
228
228
  </ButtonGroup>
229
229
  </SubNav>
230
- <SubNav zIndex={1}>
230
+ <SubNav>
231
231
  <ButtonGroup align='start'>
232
232
  <NavButton icon='filter-large' onClick={this.handleFilter} />
233
233
  </ButtonGroup>
@@ -503,7 +503,6 @@ export class Rundowns extends React.Component<IProps, IState> {
503
503
  <Container className='sd-margin-s--auto sd-flex--items-center'>
504
504
  {/* <Dropdown
505
505
  align = 'right'
506
- append = {true}
507
506
  items={[
508
507
  {
509
508
  type: 'group', label: 'Actions', items: [
@@ -588,7 +587,6 @@ export class Rundowns extends React.Component<IProps, IState> {
588
587
  <Modal
589
588
  headerTemplate="Manage Templates"
590
589
  visible={this.state.modalManageTemplate}
591
- zIndex={1000}
592
590
  contentBg='medium'
593
591
  contentPadding='none'
594
592
  size='x-large' onHide={() => {this.setState({modalManageTemplate: false})}}
@@ -691,7 +689,6 @@ export class Rundowns extends React.Component<IProps, IState> {
691
689
  <Modal
692
690
  headerTemplate="Create new Show"
693
691
  visible={this.state.modalNewShow}
694
- zIndex={1000}
695
692
  footerTemplate={newShowFooter}
696
693
  contentBg='medium'
697
694
  size='medium' onHide={() => {this.setState({modalNewShow: false})}}
@@ -723,7 +720,6 @@ export class Rundowns extends React.Component<IProps, IState> {
723
720
  <Modal
724
721
  headerTemplate="Create new Show"
725
722
  visible={this.state.modalNewShowSuccess}
726
- zIndex={1000}
727
723
  footerTemplate={newShowFooter2}
728
724
  contentBg='medium'
729
725
  size='medium' onHide={() => {this.setState({modalNewShowSuccess: false})}}
@@ -740,7 +736,6 @@ export class Rundowns extends React.Component<IProps, IState> {
740
736
  {/* New Template Modal */}
741
737
  <Modal headerTemplate="Create new Template"
742
738
  visible={this.state.modalNewTemplate}
743
- zIndex={1000}
744
739
  contentBg='medium'
745
740
  contentPadding='none'
746
741
  size='x-large' onHide={() => {this.setState({modalNewTemplate: false})}}
@@ -866,14 +861,13 @@ export class Rundowns extends React.Component<IProps, IState> {
866
861
  headerTemplate="Manage Shows"
867
862
  maximizable
868
863
  visible={this.state.modalManageShow}
869
- zIndex={1000}
870
864
  contentBg='medium'
871
865
  contentPadding='none'
872
866
  size='x-large' onHide={() => {this.setState({modalManageShow: false})}}
873
867
  >
874
868
  <Layout.LayoutContainer>
875
869
  <Layout.HeaderPanel>
876
- <SubNav zIndex={2}>
870
+ <SubNav>
877
871
  <SearchBar placeholder='Search shows'></SearchBar>
878
872
  <ButtonGroup align='end' spaces='no-space'>
879
873
  <CreateButton ariaValue='New show' onClick={() => false} />
@@ -962,7 +956,6 @@ export class Rundowns extends React.Component<IProps, IState> {
962
956
  <Container className='sd-margin-s--auto sd-flex--items-center'>
963
957
  <Dropdown
964
958
  align = 'right'
965
- append = {true}
966
959
  items={[
967
960
  {
968
961
  type: 'group', label: 'Actions', items: [
@@ -83,7 +83,7 @@ export class SamsPlayground extends React.Component<IProps, IState> {
83
83
 
84
84
  <Components.LayoutContainer>
85
85
  <Components.HeaderPanel>
86
- <SubNav zIndex={2}>
86
+ <SubNav>
87
87
  <ButtonGroup align='inline'>
88
88
  <Dropdown
89
89
  items={[
@@ -107,7 +107,7 @@ export class SamsPlayground extends React.Component<IProps, IState> {
107
107
  <NavButton icon='dots-vertical' onClick={() => false} />
108
108
  </ButtonGroup>
109
109
  </SubNav>
110
- <SubNav zIndex={1}>
110
+ <SubNav>
111
111
  <ButtonGroup align='inline'>
112
112
  <NavButton icon='filter-large' onClick={this.handleFilter} />
113
113
  </ButtonGroup>
@@ -270,7 +270,6 @@ export class SamsPlayground extends React.Component<IProps, IState> {
270
270
  <div className="side-panel__content-block-inner side-panel__content-block-inner--right">
271
271
  <Dropdown
272
272
  align = 'right'
273
- append = {true}
274
273
  items={[
275
274
  {
276
275
  type: 'group', label: 'Actions', items: [
@@ -1008,7 +1008,6 @@ export class TestGround extends React.Component<IProps, IState> {
1008
1008
  {/* Event Only (This one existed Before) */}
1009
1009
  <Modal
1010
1010
  headerTemplate="Save Event"
1011
- zIndex={10000}
1012
1011
  visible={this.state.modalSaveEvent}
1013
1012
  contentPadding='medium'
1014
1013
  contentBg='medium'
@@ -1059,7 +1058,6 @@ export class TestGround extends React.Component<IProps, IState> {
1059
1058
  {/* Event and Planning */}
1060
1059
  <Modal
1061
1060
  headerTemplate="Save Event"
1062
- zIndex={10000}
1063
1061
  visible={this.state.modalSaveEvent2}
1064
1062
  contentPadding='medium'
1065
1063
  contentBg='medium'
@@ -1158,7 +1156,6 @@ export class TestGround extends React.Component<IProps, IState> {
1158
1156
  {/* Planning only */}
1159
1157
  <Modal
1160
1158
  headerTemplate="Save Event"
1161
- zIndex={10000}
1162
1159
  visible={this.state.modalSaveEvent3}
1163
1160
  contentPadding='medium'
1164
1161
  contentBg='medium'
@@ -1266,7 +1263,6 @@ export class TestGround extends React.Component<IProps, IState> {
1266
1263
 
1267
1264
  {/* Planning templates modal */}
1268
1265
  <Modal headerTemplate="Planning templates"
1269
- zIndex={10000}
1270
1266
  visible={this.state.modalPlanningTemplates}
1271
1267
  contentPadding='medium'
1272
1268
  contentBg='medium'
@@ -83,7 +83,7 @@ export class UiPlayground extends React.Component<IProps, IState> {
83
83
 
84
84
  <Components.LayoutContainer>
85
85
  <Components.HeaderPanel>
86
- <SubNav zIndex={2}>
86
+ <SubNav>
87
87
  <ButtonGroup align='inline'>
88
88
  <Dropdown
89
89
  items={[
@@ -107,7 +107,7 @@ export class UiPlayground extends React.Component<IProps, IState> {
107
107
  <NavButton icon='dots-vertical' onClick={() => false} />
108
108
  </ButtonGroup>
109
109
  </SubNav>
110
- <SubNav zIndex={1}>
110
+ <SubNav>
111
111
  <ButtonGroup align='inline'>
112
112
  <NavButton icon='filter-large' onClick={this.handleFilter} />
113
113
  </ButtonGroup>
@@ -269,7 +269,6 @@ export class UiPlayground extends React.Component<IProps, IState> {
269
269
  <div className="side-panel__content-block-inner side-panel__content-block-inner--right">
270
270
  <Dropdown
271
271
  align = 'right'
272
- append = {true}
273
272
  items={[
274
273
  {
275
274
  type: 'group', label: 'Actions', items: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "superdesk-ui-framework",
3
- "version": "3.1.29",
3
+ "version": "4.0.1",
4
4
  "license": "AGPL-3.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -22,11 +22,9 @@ interface IMenu {
22
22
  items: Array<IMenuItem | ISubmenu | IMenuGroup | 'divider'>;
23
23
  header?: Array<IMenuItem | ISubmenu | IMenuGroup | 'divider'>;
24
24
  footer?: Array<IMenuItem | ISubmenu | IMenuGroup | 'divider'>;
25
- append?: boolean;
26
25
  children: React.ReactNode;
27
- zIndex?: number;
28
26
  onChange?(event?: any): void;
29
27
  maxHeight?: number;
30
28
  }
31
- export declare const Dropdown: ({ items, header, footer, children, append, align, zIndex, onChange, maxHeight, }: IMenu) => JSX.Element;
29
+ export declare const Dropdown: ({ items, header, footer, children, align, onChange, maxHeight, }: IMenu) => JSX.Element;
32
30
  export {};
@@ -39,11 +39,16 @@ var React = __importStar(require("react"));
39
39
  var ReactDOM = __importStar(require("react-dom"));
40
40
  var core_1 = require("@popperjs/core");
41
41
  var react_id_generator_1 = require("react-id-generator");
42
+ var zIndex_1 = require("./../zIndex");
42
43
  var DROPDOWN_ID_CONTAINER = "sd-dropdown-constainer";
43
44
  var Dropdown = function (_a) {
44
- var items = _a.items, header = _a.header, footer = _a.footer, children = _a.children, append = _a.append, align = _a.align, zIndex = _a.zIndex, onChange = _a.onChange, maxHeight = _a.maxHeight;
45
- var _b = React.useState(false), open = _b[0], setOpen = _b[1];
46
- var _c = React.useState(false), change = _c[0], setChange = _c[1];
45
+ var items = _a.items, header = _a.header, footer = _a.footer, children = _a.children, align = _a.align, onChange = _a.onChange, maxHeight = _a.maxHeight;
46
+ var _b = React.useState(-1), zIndex = _b[0], setZIndex = _b[1];
47
+ if (zIndex === -1) {
48
+ setZIndex((0, zIndex_1.getNextZIndex)());
49
+ }
50
+ var _c = React.useState(false), open = _c[0], setOpen = _c[1];
51
+ var _d = React.useState(false), change = _d[0], setChange = _d[1];
47
52
  var menuID = (0, react_id_generator_1.useId)()[0];
48
53
  var ref = React.useRef(null);
49
54
  var buttonRef = React.useRef(null);
@@ -71,7 +76,7 @@ var Dropdown = function (_a) {
71
76
  }
72
77
  }, [change]);
73
78
  React.useLayoutEffect(function () {
74
- if (append && change) {
79
+ if (change) {
75
80
  addInPlaceholder();
76
81
  }
77
82
  setChange(true);
@@ -101,28 +106,17 @@ var Dropdown = function (_a) {
101
106
  if (!open) {
102
107
  var menuRef_1;
103
108
  setOpen(true);
104
- if (!append) {
109
+ setTimeout(function () {
105
110
  menuRef_1 = ref.current;
106
111
  var toggleRef = buttonRef.current;
107
112
  if (toggleRef && menuRef_1) {
108
113
  (0, core_1.createPopper)(toggleRef, menuRef_1, {
109
114
  placement: checkAlign() ? 'bottom-end' : 'bottom-start',
115
+ strategy: 'fixed',
110
116
  });
117
+ menuRef_1.style.display = 'block';
111
118
  }
112
- }
113
- else {
114
- setTimeout(function () {
115
- menuRef_1 = ref.current;
116
- var toggleRef = buttonRef.current;
117
- if (toggleRef && menuRef_1) {
118
- (0, core_1.createPopper)(toggleRef, menuRef_1, {
119
- placement: checkAlign() ? 'bottom-end' : 'bottom-start',
120
- strategy: 'fixed',
121
- });
122
- menuRef_1.style.display = 'block';
123
- }
124
- }, 0);
125
- }
119
+ }, 0);
126
120
  document.addEventListener('click', closeMenu);
127
121
  setTimeout(function () {
128
122
  menuRef_1.getElementsByTagName('button')[0].focus();
@@ -181,47 +175,24 @@ var Dropdown = function (_a) {
181
175
  return (React.createElement(DropdownItem, { key: index, label: item['label'], icon: item['icon'], active: item['active'], onSelect: item['onSelect'], onChange: onChange }));
182
176
  }
183
177
  }
184
- return (React.createElement("div", { className: 'dropdown ' + (open ? 'open' : '') },
185
- typeof children === 'object' ?
186
- (React.isValidElement(children) ?
187
- React.createElement("div", { ref: buttonRef, style: { display: 'content' } }, (function () {
188
- var attrs = {
189
- className: children.props.className
190
- ? (children.props.className + ' dropdown__toggle dropdown-toggle')
191
- : 'dropdown__toggle dropdown-toggle',
192
- 'aria-haspopup': "menu",
193
- 'aria-expanded': open,
194
- onClick: toggleDisplay,
195
- ref: buttonRef,
196
- };
197
- return React.cloneElement(children, attrs);
198
- })()) : null)
199
- :
200
- React.createElement("button", { style: { whiteSpace: 'nowrap' }, ref: buttonRef, className: ' dropdown__toggle dropdown-toggle', "aria-haspopup": "menu", tabIndex: 0, "aria-expanded": open, onClick: toggleDisplay },
201
- children,
202
- React.createElement("span", { className: "dropdown__caret" })),
203
- append ?
204
- null : (function () {
205
- if (header && footer) {
206
- return (React.createElement("div", { className: 'dropdown__menu dropdown__menu--has-head-foot', role: 'menu', ref: ref, style: { zIndex: zIndex } },
207
- React.createElement("ul", { className: 'dropdown__menu-header' }, headerElements),
208
- React.createElement("ul", { className: 'dropdown__menu-body' }, dropdownElements),
209
- React.createElement("ul", { className: 'dropdown__menu-footer dropdown__menu-footer--has-list ' }, footerElements)));
210
- }
211
- else if (header) {
212
- return (React.createElement("div", { className: 'dropdown__menu dropdown__menu--has-head-foot', role: 'menu', ref: ref, style: { zIndex: zIndex } },
213
- React.createElement("ul", { className: 'dropdown__menu-header' }, headerElements),
214
- React.createElement("ul", { className: 'dropdown__menu-body' }, dropdownElements)));
215
- }
216
- else if (footer) {
217
- return (React.createElement("div", { className: 'dropdown__menu dropdown__menu--has-head-foot', role: 'menu', ref: ref, style: { zIndex: zIndex } },
218
- React.createElement("ul", { className: 'dropdown__menu-body' }, dropdownElements),
219
- React.createElement("ul", { className: 'dropdown__menu-footer dropdown__menu-footer--has-list ' }, footerElements)));
220
- }
221
- else {
222
- return (React.createElement("ul", { className: 'dropdown__menu', role: 'menu', ref: ref, style: { zIndex: zIndex } }, dropdownElements));
223
- }
224
- })()));
178
+ return (React.createElement("div", { className: 'dropdown ' + (open ? 'open' : '') }, typeof children === 'object'
179
+ ? (React.isValidElement(children)
180
+ ? React.createElement("div", { ref: buttonRef, style: { display: 'content' } }, (function () {
181
+ var attrs = {
182
+ className: children.props.className
183
+ ? (children.props.className + ' dropdown__toggle dropdown-toggle')
184
+ : 'dropdown__toggle dropdown-toggle',
185
+ 'aria-haspopup': "menu",
186
+ 'aria-expanded': open,
187
+ onClick: toggleDisplay,
188
+ ref: buttonRef,
189
+ };
190
+ return React.cloneElement(children, attrs);
191
+ })())
192
+ : null)
193
+ : React.createElement("button", { style: { whiteSpace: 'nowrap' }, ref: buttonRef, className: ' dropdown__toggle dropdown-toggle', "aria-haspopup": "menu", tabIndex: 0, "aria-expanded": open, onClick: toggleDisplay },
194
+ children,
195
+ React.createElement("span", { className: "dropdown__caret" }))));
225
196
  };
226
197
  exports.Dropdown = Dropdown;
227
198
  var DropdownItem = function (_a) {
@@ -4,6 +4,7 @@ interface IProps {
4
4
  children?: React.ReactNode;
5
5
  collapsed?: boolean;
6
6
  headerPadding?: HeaderPadding;
7
+ hideCollapseButton?: boolean;
7
8
  }
8
9
  interface IState {
9
10
  collapsed: boolean;
@@ -56,6 +56,8 @@ var AuthoringInnerHeader = /** @class */ (function (_super) {
56
56
  }
57
57
  AuthoringInnerHeader.prototype.render = function () {
58
58
  var _this = this;
59
+ var _a;
60
+ var hideCollapseButton = (_a = this.props.hideCollapseButton) !== null && _a !== void 0 ? _a : false;
59
61
  var classes = (0, classnames_1.default)('sd-editor-content__authoring-header', {
60
62
  'authoring-header--collapsed': this.state.collapsed,
61
63
  });
@@ -67,8 +69,8 @@ var AuthoringInnerHeader = /** @class */ (function (_super) {
67
69
  paddingInlineEnd: headerPadding === null || headerPadding === void 0 ? void 0 : headerPadding.inlineEnd,
68
70
  }, className: classes },
69
71
  React.createElement("div", { className: "authoring-header__holder" }, this.props.children),
70
- React.createElement("button", { className: "authoring-header__toggle", onClick: function () { return _this.setState({ collapsed: !_this.state.collapsed }); } },
71
- React.createElement(Icon_1.Icon, { name: "chevron-up-thin" }))));
72
+ !hideCollapseButton && (React.createElement("button", { className: "authoring-header__toggle", onClick: function () { return _this.setState({ collapsed: !_this.state.collapsed }); } },
73
+ React.createElement(Icon_1.Icon, { name: "chevron-up-thin" })))));
72
74
  };
73
75
  return AuthoringInnerHeader;
74
76
  }(React.PureComponent));