superdesk-ui-framework 3.0.1-beta.2 → 3.0.1-beta.3

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 (328) hide show
  1. package/.vscode/settings.json +5 -0
  2. package/app/img/SD-logo.svg +52 -0
  3. package/app/styles/_accessibility.scss +1 -0
  4. package/app/styles/_big-icon-font.scss +3 -0
  5. package/app/styles/_boxed-list.scss +3 -0
  6. package/app/styles/_hamburger.scss +160 -0
  7. package/app/styles/_helpers.scss +11 -4
  8. package/app/styles/_icon-font.scss +3 -0
  9. package/app/styles/app.scss +3 -0
  10. package/app/styles/components/_sd-notification-panel.scss +48 -0
  11. package/app/styles/design-tokens/_design-tokens-general.scss +2 -5
  12. package/app/styles/design-tokens/_new-colors.scss +5 -0
  13. package/app/styles/form-elements/_inputs.scss +280 -63
  14. package/app/styles/grids/_grid-layout.scss +119 -39
  15. package/app/styles/menus/_sd-bottom-tabs.scss +70 -0
  16. package/app/styles/menus/_sd-left-navigation.scss +24 -1
  17. package/app/styles/menus/_sd-sidebar-menu.scss +10 -14
  18. package/app/styles/menus/_sd-top-menu.scss +19 -5
  19. package/app/styles/primereact/_pr-dropdown.scss +0 -2
  20. package/app-typescript/components/DatePicker.tsx +67 -20
  21. package/app-typescript/components/DonutChart.tsx +1 -1
  22. package/app-typescript/components/Icon.tsx +1 -1
  23. package/app-typescript/components/IconButton.tsx +5 -1
  24. package/app-typescript/components/Input.tsx +17 -3
  25. package/app-typescript/components/Layouts/BottomBarAction.tsx +35 -0
  26. package/app-typescript/components/Layouts/CoreLayout.tsx +62 -0
  27. package/app-typescript/components/Layouts/CoreLayoutContainer.tsx +16 -0
  28. package/app-typescript/components/Layouts/CoreLayoutFooter.tsx +15 -0
  29. package/app-typescript/components/Layouts/CoreLayoutMain.tsx +16 -0
  30. package/app-typescript/components/Layouts/CoreLayoutOverlay.tsx +15 -0
  31. package/app-typescript/components/Layouts/CoreLayoutSlideInMenu.tsx +24 -0
  32. package/app-typescript/components/Layouts/CoreLayoutTopMenu.tsx +35 -0
  33. package/app-typescript/components/Layouts/HamburgerButton.tsx +41 -0
  34. package/app-typescript/components/Layouts/Layout.tsx +1 -1
  35. package/app-typescript/components/Layouts/MainMenu.tsx +101 -0
  36. package/app-typescript/components/Layouts/NotificationPanel.tsx +109 -0
  37. package/app-typescript/components/Layouts/index.tsx +12 -0
  38. package/app-typescript/components/LeftMenu.tsx +6 -0
  39. package/app-typescript/components/Lists/BoxedList.tsx +36 -4
  40. package/app-typescript/components/Menu.tsx +31 -7
  41. package/app-typescript/components/Modal.tsx +5 -2
  42. package/app-typescript/components/MultiSelect.tsx +65 -22
  43. package/app-typescript/components/NavButton.tsx +4 -0
  44. package/app-typescript/components/Navigation/BottomNav.tsx +82 -0
  45. package/app-typescript/components/Select.tsx +8 -0
  46. package/app-typescript/components/SelectGrid.tsx +1 -1
  47. package/app-typescript/components/Skeleton.tsx +1 -1
  48. package/app-typescript/components/Text/Time.tsx +34 -0
  49. package/app-typescript/components/Togglebox.tsx +1 -1
  50. package/app-typescript/components/Tooltip.tsx +7 -5
  51. package/app-typescript/components/WithSizeObserver.tsx +88 -0
  52. package/app-typescript/dist/components/Alert.d.ts +16 -0
  53. package/app-typescript/dist/components/Autocomplete.d.ts +48 -0
  54. package/app-typescript/dist/components/Avatar.d.ts +33 -0
  55. package/app-typescript/dist/components/Badge.d.ts +13 -0
  56. package/app-typescript/dist/components/Button.d.ts +23 -0
  57. package/app-typescript/dist/components/ButtonGroup.d.ts +12 -0
  58. package/app-typescript/dist/components/CheckButtonGroup.d.ts +11 -0
  59. package/app-typescript/dist/components/CheckGroup.d.ts +9 -0
  60. package/app-typescript/dist/components/Checkbox.d.ts +19 -0
  61. package/app-typescript/dist/components/CheckboxButton.d.ts +19 -0
  62. package/app-typescript/dist/components/DatePicker.d.ts +37 -0
  63. package/app-typescript/dist/components/Divider.d.ts +9 -0
  64. package/app-typescript/dist/components/DonutChart.d.ts +12 -0
  65. package/app-typescript/dist/components/Dropdown.d.ts +28 -0
  66. package/app-typescript/dist/components/DropdownFirst.d.ts +42 -0
  67. package/app-typescript/dist/components/EmptyState.d.ts +11 -0
  68. package/app-typescript/dist/components/FormLabel.d.ts +9 -0
  69. package/app-typescript/dist/components/Genie.d.ts +13 -0
  70. package/app-typescript/dist/components/GridItem.d.ts +69 -0
  71. package/app-typescript/dist/components/GridList.d.ts +14 -0
  72. package/app-typescript/dist/components/HeadingText.d.ts +10 -0
  73. package/app-typescript/dist/components/HelloWorld.d.ts +8 -0
  74. package/app-typescript/dist/components/Icon.d.ts +12 -0
  75. package/app-typescript/dist/components/IconButton.d.ts +12 -0
  76. package/app-typescript/dist/components/IconLabel.d.ts +11 -0
  77. package/app-typescript/dist/components/Input.d.ts +24 -0
  78. package/app-typescript/dist/components/Label.d.ts +15 -0
  79. package/app-typescript/dist/components/LeftMenu.d.ts +26 -0
  80. package/app-typescript/dist/components/Loader.d.ts +8 -0
  81. package/app-typescript/dist/components/NavButton.d.ts +15 -0
  82. package/app-typescript/dist/components/Popover.d.ts +13 -0
  83. package/app-typescript/dist/components/PropsList.d.ts +15 -0
  84. package/app-typescript/dist/components/Radio.d.ts +19 -0
  85. package/app-typescript/dist/components/RadioButton.d.ts +20 -0
  86. package/app-typescript/dist/components/Select.d.ts +29 -0
  87. package/app-typescript/dist/components/SelectWithTemplate.d.ts +32 -0
  88. package/app-typescript/dist/components/SlidingToolbar.d.ts +8 -0
  89. package/app-typescript/dist/components/StrechBar.d.ts +4 -0
  90. package/app-typescript/dist/components/SubNav.d.ts +10 -0
  91. package/app-typescript/dist/components/Switch.d.ts +12 -0
  92. package/app-typescript/dist/components/TabCustom.d.ts +25 -0
  93. package/app-typescript/dist/components/TabList.d.ts +22 -0
  94. package/app-typescript/dist/components/Tag.d.ts +9 -0
  95. package/app-typescript/dist/components/TagInput.d.ts +7 -0
  96. package/app-typescript/dist/components/TagInputTest.d.ts +18 -0
  97. package/app-typescript/dist/components/TimePicker.d.ts +11 -0
  98. package/app-typescript/dist/components/Tooltip.d.ts +11 -0
  99. package/app-typescript/dist/components/_Positioner.d.ts +27 -0
  100. package/app-typescript/dist/index.d.ts +56 -0
  101. package/app-typescript/helpers.tsx +3 -0
  102. package/app-typescript/index.ts +3 -0
  103. package/dist/SD-logo.svg +52 -0
  104. package/dist/examples.bundle.css +660 -0
  105. package/dist/examples.bundle.js +29711 -27786
  106. package/dist/playgrounds/accessible-theme-test.html +1 -1
  107. package/dist/playgrounds/layout-test-2.html +1 -1
  108. package/dist/playgrounds/list-item-test.html +1 -1
  109. package/dist/playgrounds/master-desk.html +1 -1
  110. package/dist/playgrounds/media-carousel.html +1 -1
  111. package/dist/playgrounds/photo-desk.html +1 -1
  112. package/dist/playgrounds/planning.html +1 -1
  113. package/dist/playgrounds/publish.html +1 -1
  114. package/dist/playgrounds/publisher-content-analytics.html +1 -1
  115. package/dist/playgrounds/publisher-content-list-automatic.html +1 -1
  116. package/dist/playgrounds/publisher-content-list-manual.html +1 -1
  117. package/dist/playgrounds/publisher-content-lists.html +1 -1
  118. package/dist/playgrounds/publisher-dashboard.html +1 -1
  119. package/dist/playgrounds/publisher-output-control.html +1 -1
  120. package/dist/playgrounds/react-playgrounds/CoreLayout.tsx +145 -0
  121. package/dist/playgrounds/react-playgrounds/Index.tsx +1 -0
  122. package/dist/playgrounds/react-playgrounds/TestGround.tsx +36 -0
  123. package/dist/playgrounds/react-playgrounds/components/Layout.tsx +1 -1
  124. package/dist/playgrounds/swimlane-view.html +1 -1
  125. package/dist/playgrounds/toasts.html +1 -1
  126. package/dist/playgrounds/video-editor.html +1 -1
  127. package/dist/react/DatePicker.tsx +10 -5
  128. package/dist/react/Index.tsx +5 -0
  129. package/dist/react/Inputs.tsx +109 -6
  130. package/dist/react/MultiSelect.tsx +6 -1
  131. package/dist/react/Selects.tsx +55 -0
  132. package/dist/react/WithSizeObserver.tsx +44 -0
  133. package/dist/superdesk-ui.bundle.css +2386 -116
  134. package/dist/superdesk-ui.bundle.js +30241 -28731
  135. package/dist/vendor.bundle.js +25026 -25026
  136. package/examples/index.js +4 -0
  137. package/examples/pages/playgrounds/accessible-theme-test.html +1 -1
  138. package/examples/pages/playgrounds/layout-test-2.html +1 -1
  139. package/examples/pages/playgrounds/list-item-test.html +1 -1
  140. package/examples/pages/playgrounds/master-desk.html +1 -1
  141. package/examples/pages/playgrounds/media-carousel.html +1 -1
  142. package/examples/pages/playgrounds/photo-desk.html +1 -1
  143. package/examples/pages/playgrounds/planning.html +1 -1
  144. package/examples/pages/playgrounds/publish.html +1 -1
  145. package/examples/pages/playgrounds/publisher-content-analytics.html +1 -1
  146. package/examples/pages/playgrounds/publisher-content-list-automatic.html +1 -1
  147. package/examples/pages/playgrounds/publisher-content-list-manual.html +1 -1
  148. package/examples/pages/playgrounds/publisher-content-lists.html +1 -1
  149. package/examples/pages/playgrounds/publisher-dashboard.html +1 -1
  150. package/examples/pages/playgrounds/publisher-output-control.html +1 -1
  151. package/examples/pages/playgrounds/react-playgrounds/CoreLayout.tsx +145 -0
  152. package/examples/pages/playgrounds/react-playgrounds/Index.tsx +1 -0
  153. package/examples/pages/playgrounds/react-playgrounds/TestGround.tsx +36 -0
  154. package/examples/pages/playgrounds/react-playgrounds/components/Layout.tsx +1 -1
  155. package/examples/pages/playgrounds/swimlane-view.html +1 -1
  156. package/examples/pages/playgrounds/toasts.html +1 -1
  157. package/examples/pages/playgrounds/video-editor.html +1 -1
  158. package/examples/pages/react/DatePicker.tsx +10 -5
  159. package/examples/pages/react/Index.tsx +5 -0
  160. package/examples/pages/react/Inputs.tsx +109 -6
  161. package/examples/pages/react/MultiSelect.tsx +6 -1
  162. package/examples/pages/react/Selects.tsx +55 -0
  163. package/examples/pages/react/WithSizeObserver.tsx +44 -0
  164. package/package.json +4 -4
  165. package/patches/@superdesk+primereact+5.0.2-4.patch +44 -0
  166. package/react/components/Alert.js +10 -8
  167. package/react/components/Autocomplete.js +16 -12
  168. package/react/components/Avatar.js +8 -6
  169. package/react/components/Badge.js +7 -5
  170. package/react/components/Button.js +8 -6
  171. package/react/components/ButtonGroup.js +7 -5
  172. package/react/components/Carousel.js +4 -2
  173. package/react/components/CheckButtonGroup.js +6 -4
  174. package/react/components/CheckGroup.js +5 -3
  175. package/react/components/Checkbox.js +5 -3
  176. package/react/components/CheckboxButton.js +6 -4
  177. package/react/components/ContentDivider.js +8 -6
  178. package/react/components/CreateButton.js +6 -4
  179. package/react/components/DatePicker.d.ts +10 -0
  180. package/react/components/DatePicker.js +60 -35
  181. package/react/components/Divider.js +6 -4
  182. package/react/components/DonutChart.d.ts +1 -1
  183. package/react/components/DonutChart.js +24 -6
  184. package/react/components/DropZone.js +6 -4
  185. package/react/components/Dropdown.js +7 -6
  186. package/react/components/DropdownFirst.js +18 -11
  187. package/react/components/EmptyState.js +7 -5
  188. package/react/components/Form/FormGroup.js +7 -5
  189. package/react/components/Form/FormItem.js +5 -3
  190. package/react/components/Form/FormLabel.js +5 -3
  191. package/react/components/Form/FormRow.js +5 -3
  192. package/react/components/Form/FormText.js +4 -2
  193. package/react/components/Form/index.js +1 -0
  194. package/react/components/FormLabel.js +5 -3
  195. package/react/components/GridItem.js +9 -7
  196. package/react/components/GridList.js +8 -6
  197. package/react/components/HeadingText.js +4 -2
  198. package/react/components/HelloWorld.js +4 -2
  199. package/react/components/Icon.d.ts +1 -1
  200. package/react/components/Icon.js +9 -7
  201. package/react/components/IconButton.js +8 -6
  202. package/react/components/IconLabel.js +7 -5
  203. package/react/components/IconPicker.js +13 -9
  204. package/react/components/Input.d.ts +6 -2
  205. package/react/components/Input.js +27 -13
  206. package/react/components/Label.js +10 -8
  207. package/react/components/Layouts/AuthorinInnerSideBar.js +4 -2
  208. package/react/components/Layouts/AuthoringContainer.js +7 -5
  209. package/react/components/Layouts/AuthoringFrame.js +4 -2
  210. package/react/components/Layouts/AuthoringFrameContainer.js +4 -2
  211. package/react/components/Layouts/AuthoringFrameLeftBar.js +4 -2
  212. package/react/components/Layouts/AuthoringFrameMain.js +4 -2
  213. package/react/components/Layouts/AuthoringFrameNavBar.js +4 -2
  214. package/react/components/Layouts/AuthoringFrameOverlay.js +4 -2
  215. package/react/components/Layouts/AuthoringFrameRightBar.js +4 -2
  216. package/react/components/Layouts/AuthoringFrameSidePanel.js +5 -3
  217. package/react/components/Layouts/AuthoringFrameSidePanelOverlay.js +5 -3
  218. package/react/components/Layouts/AuthoringInnerBody.js +4 -2
  219. package/react/components/Layouts/AuthoringInnerHeader.js +6 -4
  220. package/react/components/Layouts/AuthoringMain.js +4 -2
  221. package/react/components/Layouts/AuthoringMainContainer.js +4 -2
  222. package/react/components/Layouts/AuthoringMainContent.js +4 -2
  223. package/react/components/Layouts/AuthoringMainToolBar.js +5 -3
  224. package/react/components/Layouts/BottomBarAction.d.ts +12 -0
  225. package/react/components/Layouts/BottomBarAction.js +59 -0
  226. package/react/components/Layouts/Container.js +9 -7
  227. package/react/components/Layouts/ContentSplitter.js +6 -4
  228. package/react/components/Layouts/CoreLayout.d.ts +19 -0
  229. package/react/components/Layouts/CoreLayout.js +55 -0
  230. package/react/components/Layouts/CoreLayoutContainer.d.ts +9 -0
  231. package/react/components/Layouts/CoreLayoutContainer.js +49 -0
  232. package/react/components/Layouts/CoreLayoutFooter.d.ts +8 -0
  233. package/react/components/Layouts/CoreLayoutFooter.js +49 -0
  234. package/react/components/Layouts/CoreLayoutMain.d.ts +9 -0
  235. package/react/components/Layouts/CoreLayoutMain.js +49 -0
  236. package/react/components/Layouts/CoreLayoutOverlay.d.ts +8 -0
  237. package/react/components/Layouts/CoreLayoutOverlay.js +49 -0
  238. package/react/components/Layouts/CoreLayoutSlideInMenu.d.ts +11 -0
  239. package/react/components/Layouts/CoreLayoutSlideInMenu.js +58 -0
  240. package/react/components/Layouts/CoreLayoutTopMenu.d.ts +14 -0
  241. package/react/components/Layouts/CoreLayoutTopMenu.js +54 -0
  242. package/react/components/Layouts/HamburgerButton.d.ts +14 -0
  243. package/react/components/Layouts/HamburgerButton.js +63 -0
  244. package/react/components/Layouts/HeaderPanel.js +4 -2
  245. package/react/components/Layouts/Layout.js +4 -3
  246. package/react/components/Layouts/LayoutContainer.js +4 -2
  247. package/react/components/Layouts/LeftPanel.js +5 -3
  248. package/react/components/Layouts/MainMenu.d.ts +41 -0
  249. package/react/components/Layouts/MainMenu.js +103 -0
  250. package/react/components/Layouts/MainPanel.js +5 -3
  251. package/react/components/Layouts/NotificationPanel.d.ts +45 -0
  252. package/react/components/Layouts/NotificationPanel.js +110 -0
  253. package/react/components/Layouts/OverlayPanel.js +4 -2
  254. package/react/components/Layouts/PageLayout.js +4 -2
  255. package/react/components/Layouts/Panel.js +16 -14
  256. package/react/components/Layouts/RightPanel.js +4 -2
  257. package/react/components/Layouts/index.d.ts +11 -0
  258. package/react/components/Layouts/index.js +23 -0
  259. package/react/components/LeftMenu.d.ts +2 -0
  260. package/react/components/LeftMenu.js +19 -12
  261. package/react/components/ListItemLoader.js +4 -2
  262. package/react/components/Lists/BoxedList.d.ts +6 -0
  263. package/react/components/Lists/BoxedList.js +36 -15
  264. package/react/components/Lists/SimpleList.js +9 -7
  265. package/react/components/Lists/index.js +1 -0
  266. package/react/components/Loader.js +4 -2
  267. package/react/components/Menu.d.ts +2 -1
  268. package/react/components/Menu.js +48 -12
  269. package/react/components/Modal.d.ts +2 -1
  270. package/react/components/Modal.js +30 -9
  271. package/react/components/NavButton.d.ts +1 -0
  272. package/react/components/NavButton.js +9 -4
  273. package/react/components/Navigation/BottomNav.d.ts +23 -0
  274. package/react/components/Navigation/BottomNav.js +88 -0
  275. package/react/components/Navigation/QuickNavBar.js +13 -9
  276. package/react/components/Navigation/SideBarMenu.js +4 -2
  277. package/react/components/Navigation/SideBarTabs.js +4 -2
  278. package/react/components/Navigation/index.js +1 -0
  279. package/react/components/Popover.js +4 -2
  280. package/react/components/PropsList.js +4 -2
  281. package/react/components/RadioButtonGroup.js +9 -7
  282. package/react/components/RadioGroup.js +6 -4
  283. package/react/components/SearchBar.js +6 -4
  284. package/react/components/Select.d.ts +4 -0
  285. package/react/components/Select.js +19 -11
  286. package/react/components/SelectGrid.d.ts +1 -1
  287. package/react/components/SelectGrid.js +44 -23
  288. package/react/components/SelectWithTemplate.js +4 -2
  289. package/react/components/Skeleton.d.ts +1 -1
  290. package/react/components/Skeleton.js +26 -5
  291. package/react/components/SlidingToolbar.js +6 -4
  292. package/react/components/Spinner.js +6 -4
  293. package/react/components/StrechBar.js +4 -2
  294. package/react/components/SubNav.js +9 -7
  295. package/react/components/Switch.js +6 -4
  296. package/react/components/SwitchGroup.js +5 -3
  297. package/react/components/TabCustom.js +11 -7
  298. package/react/components/TabList.js +6 -4
  299. package/react/components/Tag.js +5 -4
  300. package/react/components/TagInput.js +7 -6
  301. package/react/components/TagInputTest.js +13 -9
  302. package/react/components/Text/Heading.js +10 -8
  303. package/react/components/Text/Text.js +10 -8
  304. package/react/components/Text/Time.d.ts +15 -0
  305. package/react/components/Text/Time.js +65 -0
  306. package/react/components/ThemeSelector.js +7 -5
  307. package/react/components/TimePicker.js +4 -2
  308. package/react/components/Toast.js +1 -1
  309. package/react/components/ToastMessage.js +6 -5
  310. package/react/components/ToastText.js +1 -1
  311. package/react/components/ToastWrapper.d.ts +2 -2
  312. package/react/components/ToastWrapper.js +14 -10
  313. package/react/components/Togglebox.d.ts +1 -1
  314. package/react/components/Togglebox.js +36 -15
  315. package/react/components/Tooltip.d.ts +1 -0
  316. package/react/components/Tooltip.js +14 -10
  317. package/react/components/WithSizeObserver.d.ts +25 -0
  318. package/react/components/WithSizeObserver.js +95 -0
  319. package/react/components/_Positioner.js +4 -2
  320. package/react/helpers.d.ts +1 -0
  321. package/react/helpers.js +7 -0
  322. package/react/index.d.ts +3 -0
  323. package/react/index.js +9 -1
  324. package/yarn-error.log +111 -0
  325. package/sd_icons.eot +0 -0
  326. package/sd_icons.svg +0 -189
  327. package/sd_icons.ttf +0 -0
  328. package/sd_icons.woff +0 -0
@@ -0,0 +1,82 @@
1
+ import * as React from 'react';
2
+ import { Icon } from '../Icon';
3
+ import { IconButton } from '../IconButton';
4
+ import { clone } from 'lodash';
5
+
6
+ interface IProps {
7
+ items: Array<IItem>;
8
+ side?: 'none' | 'left' | 'right';
9
+ }
10
+
11
+ interface IItem {
12
+ icon?: string;
13
+ active?: boolean;
14
+ title: string;
15
+ onClick(event: any): void;
16
+ }
17
+
18
+ interface IState {
19
+ index: number;
20
+ closeIndex: number;
21
+ items: Array<IItem>;
22
+ }
23
+
24
+ export class BottomNav extends React.PureComponent<IProps, IState> {
25
+ constructor(props: IProps) {
26
+ super(props);
27
+ this.state = {
28
+ index: -1,
29
+ closeIndex: -1,
30
+ items: this.props.items,
31
+ };
32
+ this.handleClick = this.handleClick.bind(this);
33
+ this.handleDelete = this.handleDelete.bind(this);
34
+ }
35
+
36
+ handleClick(indexNumber: number) {
37
+ this.setState({
38
+ index: indexNumber,
39
+ });
40
+ if (this.state.index === indexNumber) {
41
+ this.setState({
42
+ closeIndex: indexNumber,
43
+ });
44
+ }
45
+ }
46
+ handleDelete(indexNumber: number) {
47
+ const newItems = clone(this.state.items);
48
+ newItems.splice(indexNumber, 1);
49
+
50
+ this.setState({
51
+ items: newItems,
52
+ });
53
+ }
54
+
55
+ render() {
56
+ return (
57
+ <ul className='sd-bottom-nav-list'>
58
+ {this.state.items.map((item, index) => {
59
+ return (
60
+ <li key={index}
61
+ className={'sd-bottom-nav-list__item' + (item['active'] ? ' sd-bottom-nav-list__item--active' : (index === this.state.index ? ' sd-bottom-nav-list__item--active' : ''))}>
62
+ <a className='sd-bottom-nav-list__item-title' onClick={(event) => {
63
+ this.handleClick(index);
64
+ item.onClick(event);
65
+ }}>
66
+ {item['icon'] &&
67
+ <Icon name={item['icon']} />
68
+ }
69
+ <span>{item.title}</span>
70
+ </a>
71
+ <IconButton
72
+ size='small'
73
+ icon="close-small"
74
+ ariaValue='Delete'
75
+ onClick={() => this.handleDelete(index)} />
76
+ </li>
77
+ );
78
+ })}
79
+ </ul>
80
+ );
81
+ }
82
+ }
@@ -15,6 +15,10 @@ interface ISelect {
15
15
  tabindex?: number;
16
16
  fullWidth?: boolean;
17
17
  onChange(newValue: string): void;
18
+ boxedStyle?: boolean;
19
+ boxedLable?: boolean;
20
+ placeholder?: string;
21
+ size?: 'medium' | 'large' | 'x-large';
18
22
  }
19
23
 
20
24
  interface IState {
@@ -48,6 +52,10 @@ class Select extends React.Component<ISelect, IState> {
48
52
  'sd-input--disabled': this.props.disabled,
49
53
  'sd-input--full-width': this.props.fullWidth,
50
54
  'sd-input--invalid': this.props.invalid || this.state.invalid,
55
+ 'sd-input--medium': this.props.size === undefined,
56
+ [`sd-input--${this.props.size}`]: this.props.size || this.props.size !== undefined,
57
+ 'sd-input--boxed-style': this.props.boxedStyle,
58
+ 'sd-input--boxed-label': this.props.boxedLable,
51
59
  });
52
60
  const labelClasses = classNames('sd-input__label', {
53
61
  'a11y-only': this.props.labelHidden,
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import * as React from 'react';
2
2
  import nextId from "react-id-generator";
3
3
  import { OverlayPanel } from '@superdesk/primereact/overlaypanel';
4
4
  import { Loader } from "./Loader";
@@ -1,5 +1,5 @@
1
1
 
2
- import React from 'react';
2
+ import * as React from 'react';
3
3
  import classNames from 'classnames';
4
4
 
5
5
  interface IProps {
@@ -0,0 +1,34 @@
1
+ import * as React from 'react';
2
+ import classNames from 'classnames';
3
+
4
+ interface IProps {
5
+ children: React.ReactNode;
6
+ className?: string;
7
+ weight?: 'light' | 'normal' | 'medium' | 'strong';
8
+ style?: 'normal' | 'italic';
9
+ align?: 'start' | 'end' | 'center' | 'justify';
10
+ size?: 'x-small' | 'small' | 'medium' | 'large';
11
+ color?: 'normal' | 'light' | 'lighter';
12
+ datetime?: string;
13
+ }
14
+
15
+ export class Time extends React.PureComponent<IProps> {
16
+ render() {
17
+ let classes = classNames('sd-time', {
18
+ 'sd-text--italic': this.props.style === 'italic',
19
+ 'sd-text--normal': this.props.weight === undefined,
20
+ [`sd-text--${this.props.weight}`]: this.props.weight || this.props.weight !== undefined,
21
+ 'sd-text-align--left': this.props.align === undefined,
22
+ [`sd-text-align--${this.props.align}`]: this.props.align && this.props.align !== 'start',
23
+ [`sd-font-size--${this.props.size}`]: this.props.size && this.props.size !== 'x-small',
24
+ '': this.props.color === undefined,
25
+ [`sd-text-color--${this.props.color}`]: this.props.color && this.props.color !== 'normal',
26
+ }, this.props.className);
27
+
28
+ return (
29
+ <time dateTime={this.props.datetime} className={classes}>
30
+ {this.props.children}
31
+ </time>
32
+ );
33
+ }
34
+ }
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import * as React from 'react';
2
2
  import classNames from 'classnames';
3
3
  import nextId from "react-id-generator";
4
4
 
@@ -5,13 +5,15 @@ interface IProps {
5
5
  text: string;
6
6
  flow?: 'top' | 'left' | 'right' | 'down'; // defaults to 'top'
7
7
  appendToBody?: boolean;
8
+ disabled?: boolean;
8
9
  }
9
10
 
10
- export const Tooltip: React.FC<IProps> = ({appendToBody, children, ...otherProps}) =>
11
- appendToBody ?
12
- <TooltipAppended {...otherProps}>{children}</TooltipAppended>
13
- :
14
- <TooltipBasic {...otherProps}>{children}</TooltipBasic>;
11
+ export const Tooltip: React.FC<IProps> = ({appendToBody, children, disabled, ...otherProps}) =>
12
+ disabled
13
+ ? <React.Fragment>{children}</React.Fragment>
14
+ : appendToBody
15
+ ? <TooltipAppended {...otherProps}>{children}</TooltipAppended>
16
+ : <TooltipBasic {...otherProps}>{children}</TooltipBasic>;
15
17
 
16
18
  class TooltipBasic extends React.PureComponent<IProps> {
17
19
  htmlId = nextId();
@@ -0,0 +1,88 @@
1
+ import * as React from 'react';
2
+
3
+ interface ISize {
4
+ width: number;
5
+ height: number;
6
+ }
7
+
8
+ interface IProps {
9
+ children: (props: ISize) => JSX.Element;
10
+ style?: React.CSSProperties;
11
+ }
12
+
13
+ interface IState {
14
+ dimensions: ISize | 'not-initialized';
15
+ }
16
+
17
+ /**
18
+ * Higher order component for dynamically retrieving dimensions of any element.
19
+ * It uses `ResizeObserver` to listen for updates and re-render children efficiently.
20
+ */
21
+ export class WithSizeObserver extends React.PureComponent<IProps, IState> {
22
+ private el: HTMLDivElement | null;
23
+ private observerInstance?: ResizeObserver;
24
+
25
+ constructor(props: IProps) {
26
+ super(props);
27
+
28
+ this.state = {
29
+ dimensions: 'not-initialized',
30
+ };
31
+
32
+ this.el = null;
33
+ }
34
+
35
+ componentDidMount() {
36
+ this.observerInstance = new ResizeObserver((entries) => {
37
+ this.setState({
38
+ dimensions: {
39
+ width: Math.floor(entries[0].contentRect.width),
40
+ height: Math.floor(entries[0].contentRect.height),
41
+ },
42
+ });
43
+ });
44
+
45
+ if (this.el != null) {
46
+ this.observerInstance.observe(this.el);
47
+ }
48
+ }
49
+
50
+ componentWillUnmount() {
51
+ if (this.observerInstance != null && this.el != null) {
52
+ this.observerInstance.unobserve(this.el);
53
+ }
54
+ }
55
+
56
+ render() {
57
+ const {dimensions} = this.state;
58
+
59
+ return (
60
+ <div
61
+ ref={(el) => {
62
+ this.el = el;
63
+ }}
64
+ style={{
65
+ position: 'relative',
66
+ width: '100%',
67
+ height: '100%',
68
+ ...this.props.style,
69
+ }}
70
+ >
71
+ {/**
72
+ * Absolute positioning is needed for accurate calculation.
73
+ * Otherwise, initial calculation would work well,
74
+ * but if parent of `ResizeObserverComponent` is resized down,
75
+ * it would include its own size(which is based on the initial result from this component),
76
+ * including children, into calculation and would produce a wrong result.
77
+ */}
78
+ <div style={{position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'}}>
79
+ {
80
+ dimensions === 'not-initialized'
81
+ ? null
82
+ : this.props.children(dimensions)
83
+ }
84
+ </div>
85
+ </div>
86
+ );
87
+ }
88
+ }
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ interface IProps {
3
+ type?: 'primary' | 'success' | 'warning' | 'alert' | 'highlight' | 'sd-green';
4
+ style?: 'filled' | 'hollow';
5
+ size?: 'normal' | 'small';
6
+ restoreIcon?: 'info' | 'help';
7
+ }
8
+ interface IState {
9
+ open: boolean;
10
+ }
11
+ export declare class Alert extends React.PureComponent<IProps, IState> {
12
+ constructor(props: IProps);
13
+ onToggle(): void;
14
+ render(): JSX.Element;
15
+ }
16
+ export {};
@@ -0,0 +1,48 @@
1
+ import * as React from 'react';
2
+ interface IProps {
3
+ items: Array<any>;
4
+ keyValue?: string;
5
+ minLength?: number;
6
+ value?: string | object;
7
+ label?: string;
8
+ placeholder?: string;
9
+ info?: string;
10
+ error?: string;
11
+ required?: boolean;
12
+ disabled?: boolean;
13
+ invalid?: boolean;
14
+ inlineLabel?: boolean;
15
+ isSearchField?: boolean;
16
+ listItemTemplate?(value: any): any;
17
+ search?(searhString: string, callback: (result: Array<any>) => void): {
18
+ cancel: () => void;
19
+ };
20
+ onChange(newValue: string): void;
21
+ onSelect?(suggestion: string): void;
22
+ }
23
+ interface IState {
24
+ selectedItem: any;
25
+ filteredItems: any;
26
+ invalid: boolean;
27
+ focused: boolean;
28
+ }
29
+ export declare class Autocomplete extends React.Component<IProps, IState> {
30
+ latestCall?: {
31
+ cancel: () => void;
32
+ };
33
+ constructor(props: IProps);
34
+ htmlId: string;
35
+ search(term: string): void;
36
+ searchItem(event: any): void;
37
+ handleChange(event: {
38
+ originalEvent: Event;
39
+ value: any;
40
+ }): void;
41
+ handleSelect(event: {
42
+ originalEvent: Event;
43
+ value: any;
44
+ }): void;
45
+ handleInputClear(): void;
46
+ render(): JSX.Element;
47
+ }
48
+ export {};
@@ -0,0 +1,33 @@
1
+ import * as React from 'react';
2
+ interface IBase {
3
+ tooltipText?: string;
4
+ }
5
+ interface IImageAvatar extends IBase {
6
+ imageUrl?: string;
7
+ }
8
+ interface ITextAvatar extends IBase {
9
+ text: string;
10
+ }
11
+ export declare class AvatarContentText extends React.PureComponent<ITextAvatar> {
12
+ render(): JSX.Element;
13
+ }
14
+ export declare class AvatarContentImage extends React.PureComponent<IImageAvatar> {
15
+ render(): JSX.Element;
16
+ }
17
+ interface IPropsAvatarWrapper {
18
+ size?: 'small' | 'medium' | 'large' | 'x-large' | 'xx-large';
19
+ statusIndicator?: {
20
+ status: 'online' | 'offline';
21
+ tooltipText?: string;
22
+ };
23
+ administratorIndicator?: {
24
+ enabled: boolean;
25
+ tooltipText?: string;
26
+ };
27
+ children: React.ReactNode;
28
+ 'data-test-id'?: string;
29
+ }
30
+ export declare class AvatarWrapper extends React.PureComponent<IPropsAvatarWrapper> {
31
+ render(): JSX.Element;
32
+ }
33
+ export {};
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ interface IProps {
3
+ text?: string;
4
+ type?: 'default' | 'primary' | 'success' | 'warning' | 'alert' | 'highlight' | 'light';
5
+ color?: string;
6
+ shape?: 'round' | 'square';
7
+ children?: React.ReactNode;
8
+ 'data-test-id'?: string;
9
+ }
10
+ export declare class Badge extends React.PureComponent<IProps> {
11
+ render(): JSX.Element;
12
+ }
13
+ export {};
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ interface IButtonBase {
3
+ id?: string;
4
+ theme?: 'light' | 'dark';
5
+ type?: 'default' | 'primary' | 'success' | 'warning' | 'alert' | 'highlight' | 'sd-green';
6
+ size?: 'small' | 'normal' | 'large';
7
+ children?: never;
8
+ icon?: string;
9
+ disabled?: boolean;
10
+ iconOnly?: boolean;
11
+ onClick(): void;
12
+ 'data-test-id'?: string;
13
+ }
14
+ interface IPropsButton extends IButtonBase {
15
+ text: string;
16
+ expand?: boolean;
17
+ style?: 'filled' | 'hollow' | 'text-only';
18
+ shape?: 'square' | 'round';
19
+ }
20
+ export declare class Button extends React.PureComponent<IPropsButton> {
21
+ render(): JSX.Element;
22
+ }
23
+ export {};
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ interface IProps {
3
+ orientation?: 'horizontal' | 'vertical';
4
+ spaces?: 'comfort' | 'compact';
5
+ align?: 'left' | 'right' | 'center' | 'inline';
6
+ padded?: boolean;
7
+ children: React.ReactNode;
8
+ }
9
+ export declare class ButtonGroup extends React.PureComponent<IProps> {
10
+ render(): JSX.Element;
11
+ }
12
+ export {};
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ interface IProps {
3
+ orientation?: 'horizontal' | 'vertical';
4
+ grid?: boolean;
5
+ align?: 'left' | 'right' | 'center' | 'inline';
6
+ padded?: boolean;
7
+ }
8
+ export declare class CheckButtonGroup extends React.PureComponent<IProps> {
9
+ render(): JSX.Element;
10
+ }
11
+ export {};
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ interface IProps {
3
+ orientation?: 'horizontal' | 'vertical';
4
+ children: React.ReactNode;
5
+ }
6
+ export declare class CheckGroup extends React.PureComponent<IProps> {
7
+ render(): JSX.Element;
8
+ }
9
+ export {};
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+ interface IProps {
3
+ label: {
4
+ text: string;
5
+ side?: 'left' | 'right';
6
+ hidden?: boolean;
7
+ };
8
+ checked?: boolean;
9
+ disabled?: boolean;
10
+ required?: boolean;
11
+ onChange(nextValue: boolean): void;
12
+ }
13
+ export declare class Checkbox extends React.Component<IProps> {
14
+ htmlId: string;
15
+ constructor(props: IProps);
16
+ handleChange(event: React.ChangeEvent<HTMLInputElement>): void;
17
+ render(): JSX.Element;
18
+ }
19
+ export {};
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+ interface IProps {
3
+ label: {
4
+ text: string;
5
+ icon?: string;
6
+ hidden?: boolean;
7
+ };
8
+ checked?: boolean;
9
+ disabled?: boolean;
10
+ required?: boolean;
11
+ onChange(nextValue: boolean): void;
12
+ }
13
+ export declare class CheckboxButton extends React.Component<IProps> {
14
+ htmlId: string;
15
+ constructor(props: IProps);
16
+ handleChange(event: React.ChangeEvent<HTMLInputElement>): void;
17
+ render(): JSX.Element;
18
+ }
19
+ export {};
@@ -0,0 +1,37 @@
1
+ import * as React from 'react';
2
+ import { LocaleSettings, CalendarProps } from '@superdesk/primereact/calendar';
3
+ export declare type DatePickerLocaleSettings = Omit<LocaleSettings, 'today' | 'clear'>;
4
+ interface IDatePickerBase {
5
+ disabled?: boolean;
6
+ dateFormat: string;
7
+ shortcuts?: Array<{
8
+ days: number;
9
+ label: string;
10
+ }>;
11
+ locale?: DatePickerLocaleSettings;
12
+ }
13
+ interface IDatePicker extends IDatePickerBase {
14
+ value: Date | null;
15
+ onChange(valueNext: Date | null): void;
16
+ }
17
+ interface IState {
18
+ value: CalendarProps['value'];
19
+ valid: boolean;
20
+ }
21
+ export declare class DatePicker extends React.PureComponent<IDatePicker, IState> {
22
+ private instance;
23
+ hidePopupOnScroll: () => void;
24
+ constructor(props: IDatePicker);
25
+ componentDidMount(): void;
26
+ componentWillUnmount(): void;
27
+ componentDidUpdate(prevProps: IDatePicker): void;
28
+ render(): JSX.Element;
29
+ }
30
+ interface IDatePickerISO extends IDatePickerBase {
31
+ value: string;
32
+ onChange(value: string): void;
33
+ }
34
+ export declare class DatePickerISO extends React.PureComponent<IDatePickerISO> {
35
+ render(): JSX.Element;
36
+ }
37
+ export {};
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ interface IProps {
3
+ size?: 'mini' | 'small' | 'medium' | 'large';
4
+ border?: boolean;
5
+ }
6
+ export declare class Divider extends React.PureComponent<IProps> {
7
+ render(): JSX.Element;
8
+ }
9
+ export {};
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { ChartData, ChartOptions } from 'chart.js';
3
+ interface IProps {
4
+ data: ChartData;
5
+ options: ChartOptions;
6
+ width: string;
7
+ height: string;
8
+ }
9
+ export declare class DonutChart extends React.Component<IProps, {}> {
10
+ render(): JSX.Element;
11
+ }
12
+ export {};
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ export interface IMenuItem {
3
+ label: string;
4
+ icon?: string;
5
+ onSelect(): void;
6
+ }
7
+ export interface ISubmenu {
8
+ type: 'submenu';
9
+ label: string;
10
+ icon?: string;
11
+ items: Array<IMenuItem | ISubmenu | IMenuGroup | 'divider'>;
12
+ }
13
+ export interface IMenuGroup {
14
+ type: 'group';
15
+ label?: string;
16
+ items: Array<IMenuItem | ISubmenu | IMenuGroup | 'divider'>;
17
+ }
18
+ interface IMenu {
19
+ label?: string;
20
+ align?: 'left' | 'right';
21
+ items: Array<IMenuItem | ISubmenu | IMenuGroup | 'divider'>;
22
+ header?: Array<IMenuItem | ISubmenu | IMenuGroup | 'divider'>;
23
+ footer?: Array<IMenuItem | ISubmenu | IMenuGroup | 'divider'>;
24
+ append?: boolean;
25
+ children: React.ReactNode;
26
+ }
27
+ export declare const Dropdown: ({ items, header, footer, children, append, align, }: IMenu) => JSX.Element;
28
+ export {};
@@ -0,0 +1,42 @@
1
+ import * as React from 'react';
2
+ interface IProps {
3
+ name: string;
4
+ align?: 'left' | 'right';
5
+ side?: 'left' | 'right';
6
+ icon?: string;
7
+ navDropdown?: boolean;
8
+ level?: boolean;
9
+ headerFooter?: boolean;
10
+ children: React.ReactNode;
11
+ }
12
+ interface IPropsItem {
13
+ text: string;
14
+ noLink?: boolean;
15
+ icon?: string;
16
+ onSelect(): void;
17
+ children?: never;
18
+ }
19
+ interface IPropsLabel {
20
+ text: string;
21
+ children?: never;
22
+ }
23
+ interface IPropsMenu {
24
+ title: string;
25
+ children: React.ReactNode;
26
+ }
27
+ export declare const DropdownFirst: {
28
+ ({ name, align, side, level, icon, headerFooter, navDropdown, children, }: IProps): JSX.Element;
29
+ Item: ({ text, icon, noLink, onSelect, }: IPropsItem) => JSX.Element;
30
+ Divider: ({}: {}) => JSX.Element;
31
+ Label: ({ text, }: IPropsLabel) => JSX.Element;
32
+ Header: ({ title, children, }: IPropsMenu) => JSX.Element;
33
+ Body: ({ title, children, }: IPropsMenu) => JSX.Element;
34
+ Footer: ({ title, children, }: IPropsMenu) => JSX.Element;
35
+ };
36
+ export declare const DropdownItem: ({ text, icon, noLink, onSelect, }: IPropsItem) => JSX.Element;
37
+ export declare const DropdownDivider: ({}: {}) => JSX.Element;
38
+ export declare const DropdownLabel: ({ text, }: IPropsLabel) => JSX.Element;
39
+ export declare const DropdownHeader: ({ title, children, }: IPropsMenu) => JSX.Element;
40
+ export declare const DropdownBody: ({ title, children, }: IPropsMenu) => JSX.Element;
41
+ export declare const DropdownFooter: ({ title, children, }: IPropsMenu) => JSX.Element;
42
+ export {};
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ interface IProps {
3
+ illustration?: string;
4
+ size?: 'small' | 'large';
5
+ title: string;
6
+ description?: string;
7
+ }
8
+ export declare class EmptyState extends React.PureComponent<IProps> {
9
+ render(): JSX.Element;
10
+ }
11
+ export {};
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ interface IProps {
3
+ text: string;
4
+ style?: 'normal' | 'light';
5
+ }
6
+ export declare class FormLabel extends React.PureComponent<IProps> {
7
+ render(): JSX.Element;
8
+ }
9
+ export {};
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ interface IProps<T> {
3
+ val: T;
4
+ }
5
+ export declare class Genie<T extends string> extends React.PureComponent<IProps<T>> {
6
+ render(): JSX.Element;
7
+ }
8
+ export {};
9
+
10
+
11
+ interface Id {
12
+ prop<T>: Genie<T>;
13
+ }