@imposium-hub/components 2.4.1 → 2.4.2-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 (130) hide show
  1. package/dist/cjs/components/assets/AssetsTableTypeFilter.js +22 -2
  2. package/dist/cjs/components/assets/AssetsTableTypeFilter.js.map +1 -1
  3. package/dist/cjs/components/assets/AssetsTypeIcon.js +8 -2
  4. package/dist/cjs/components/assets/AssetsTypeIcon.js.map +1 -1
  5. package/dist/cjs/components/data-table/DataTable.d.ts +1 -0
  6. package/dist/cjs/components/data-table/DataTable.js +3 -1
  7. package/dist/cjs/components/data-table/DataTable.js.map +1 -1
  8. package/dist/cjs/components/data-table/Paginator.js +21 -5
  9. package/dist/cjs/components/data-table/Paginator.js.map +1 -1
  10. package/dist/cjs/components/dropdown/{dropdown.stories.js → Dropdown.stories.js} +1 -1
  11. package/dist/cjs/components/dropdown/{dropdown.stories.js.map → Dropdown.stories.js.map} +1 -1
  12. package/dist/cjs/components/header/Header.js +50 -24
  13. package/dist/cjs/components/header/Header.js.map +1 -1
  14. package/dist/cjs/components/smpte-field/SMPTEField.js +1 -1
  15. package/dist/cjs/components/smpte-field/SMPTEField.js.map +1 -1
  16. package/dist/cjs/constants/copy.d.ts +6 -0
  17. package/dist/cjs/constants/copy.js +8 -2
  18. package/dist/cjs/constants/copy.js.map +1 -1
  19. package/dist/cjs/constants/icons.d.ts +1 -0
  20. package/dist/cjs/constants/icons.js +4 -2
  21. package/dist/cjs/constants/icons.js.map +1 -1
  22. package/dist/cjs/redux/actions/publish.js +1 -3
  23. package/dist/cjs/redux/actions/publish.js.map +1 -1
  24. package/dist/cjs/redux/reducers/asset-filters.js +1 -0
  25. package/dist/cjs/redux/reducers/asset-filters.js.map +1 -1
  26. package/dist/cjs/services/API.d.ts +1 -1
  27. package/dist/cjs/services/API.js +3 -2
  28. package/dist/cjs/services/API.js.map +1 -1
  29. package/dist/esm/components/assets/AssetsTableTypeFilter.js +20 -2
  30. package/dist/esm/components/assets/AssetsTableTypeFilter.js.map +1 -1
  31. package/dist/esm/components/assets/AssetsTypeIcon.js +9 -3
  32. package/dist/esm/components/assets/AssetsTypeIcon.js.map +1 -1
  33. package/dist/esm/components/data-table/DataTable.d.ts +1 -0
  34. package/dist/esm/components/data-table/DataTable.js +3 -1
  35. package/dist/esm/components/data-table/DataTable.js.map +1 -1
  36. package/dist/esm/components/data-table/Paginator.js +21 -5
  37. package/dist/esm/components/data-table/Paginator.js.map +1 -1
  38. package/dist/esm/components/dropdown/{dropdown.stories.js → Dropdown.stories.js} +1 -1
  39. package/dist/esm/components/dropdown/{dropdown.stories.js.map → Dropdown.stories.js.map} +1 -1
  40. package/dist/esm/components/header/Header.js +28 -24
  41. package/dist/esm/components/header/Header.js.map +1 -1
  42. package/dist/esm/components/smpte-field/SMPTEField.js +1 -1
  43. package/dist/esm/components/smpte-field/SMPTEField.js.map +1 -1
  44. package/dist/esm/constants/copy.d.ts +6 -0
  45. package/dist/esm/constants/copy.js +8 -2
  46. package/dist/esm/constants/copy.js.map +1 -1
  47. package/dist/esm/constants/icons.d.ts +1 -0
  48. package/dist/esm/constants/icons.js +2 -0
  49. package/dist/esm/constants/icons.js.map +1 -1
  50. package/dist/esm/redux/actions/publish.js +1 -3
  51. package/dist/esm/redux/actions/publish.js.map +1 -1
  52. package/dist/esm/redux/reducers/asset-filters.js +1 -0
  53. package/dist/esm/redux/reducers/asset-filters.js.map +1 -1
  54. package/dist/esm/services/API.d.ts +1 -1
  55. package/dist/esm/services/API.js +2 -2
  56. package/dist/esm/services/API.js.map +1 -1
  57. package/dist/styles.css +55 -11
  58. package/dist/styles.less +51 -10
  59. package/less/components/assets.less +10 -2
  60. package/less/components/controlled-list.less +2 -2
  61. package/less/components/header.less +39 -6
  62. package/package.json +2 -1
  63. package/src/components/assets/AssetsTableTypeFilter.tsx +27 -3
  64. package/src/components/assets/AssetsTypeIcon.tsx +16 -4
  65. package/src/components/data-table/DataTable.tsx +4 -2
  66. package/src/components/data-table/Paginator.tsx +27 -4
  67. package/src/components/header/Header.tsx +45 -52
  68. package/src/components/smpte-field/SMPTEField.tsx +1 -1
  69. package/src/constants/copy.ts +8 -2
  70. package/src/constants/icons.tsx +3 -0
  71. package/src/redux/actions/publish.ts +1 -3
  72. package/src/redux/reducers/asset-filters.ts +1 -0
  73. package/src/services/API.ts +3 -2
  74. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +0 -27
  75. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +0 -243
  76. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +0 -1
  77. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +0 -28
  78. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +0 -255
  79. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +0 -1
  80. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +0 -27
  81. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +0 -243
  82. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +0 -1
  83. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +0 -28
  84. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +0 -251
  85. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +0 -1
  86. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.d.ts +0 -15
  87. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js +0 -91
  88. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js.map +0 -1
  89. package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +0 -33
  90. package/dist/cjs/components/header/Header_BACKUP_73021.js +0 -393
  91. package/dist/cjs/components/header/Header_BACKUP_73021.js.map +0 -1
  92. package/dist/cjs/components/header/Header_BASE_73021.d.ts +0 -29
  93. package/dist/cjs/components/header/Header_BASE_73021.js +0 -376
  94. package/dist/cjs/components/header/Header_BASE_73021.js.map +0 -1
  95. package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +0 -33
  96. package/dist/cjs/components/header/Header_LOCAL_73021.js +0 -382
  97. package/dist/cjs/components/header/Header_LOCAL_73021.js.map +0 -1
  98. package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +0 -30
  99. package/dist/cjs/components/header/Header_REMOTE_73021.js +0 -386
  100. package/dist/cjs/components/header/Header_REMOTE_73021.js.map +0 -1
  101. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +0 -27
  102. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +0 -194
  103. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +0 -1
  104. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +0 -28
  105. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +0 -208
  106. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +0 -1
  107. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +0 -27
  108. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +0 -194
  109. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +0 -1
  110. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +0 -28
  111. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +0 -204
  112. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +0 -1
  113. package/dist/esm/components/error-message-preview/ErrorMessagePreview.d.ts +0 -15
  114. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js +0 -35
  115. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js.map +0 -1
  116. package/dist/esm/components/header/Header_BACKUP_73021.d.ts +0 -33
  117. package/dist/esm/components/header/Header_BACKUP_73021.js +0 -336
  118. package/dist/esm/components/header/Header_BACKUP_73021.js.map +0 -1
  119. package/dist/esm/components/header/Header_BASE_73021.d.ts +0 -29
  120. package/dist/esm/components/header/Header_BASE_73021.js +0 -322
  121. package/dist/esm/components/header/Header_BASE_73021.js.map +0 -1
  122. package/dist/esm/components/header/Header_LOCAL_73021.d.ts +0 -33
  123. package/dist/esm/components/header/Header_LOCAL_73021.js +0 -328
  124. package/dist/esm/components/header/Header_LOCAL_73021.js.map +0 -1
  125. package/dist/esm/components/header/Header_REMOTE_73021.d.ts +0 -30
  126. package/dist/esm/components/header/Header_REMOTE_73021.js +0 -329
  127. package/dist/esm/components/header/Header_REMOTE_73021.js.map +0 -1
  128. /package/dist/cjs/components/dropdown/{dropdown.stories.d.ts → Dropdown.stories.d.ts} +0 -0
  129. /package/dist/esm/components/dropdown/{dropdown.stories.d.ts → Dropdown.stories.d.ts} +0 -0
  130. /package/src/components/dropdown/{dropdown.stories.tsx → Dropdown.stories.tsx} +0 -0
package/dist/styles.css CHANGED
@@ -371,12 +371,18 @@ body a {
371
371
  .asset-filter {
372
372
  padding: 7px;
373
373
  border-bottom: 1px solid #494949;
374
- background: #272727;
374
+ background: #161616;
375
375
  display: inline-block;
376
376
  }
377
- .asset-filter:hover {
377
+ .asset-filter .clear-filter {
378
+ cursor: default;
379
+ }
380
+ .asset-filter.active {
378
381
  background: #353535;
379
382
  }
383
+ .asset-filter:hover {
384
+ background: #272727;
385
+ }
380
386
  .assets-paginator {
381
387
  width: 100%;
382
388
  height: 25px;
@@ -864,8 +870,8 @@ body a {
864
870
  .controlled-list .item .buttons {
865
871
  display: none;
866
872
  position: absolute;
867
- right: 0px;
868
- top: 0px;
873
+ right: 10px;
874
+ top: 2px;
869
875
  }
870
876
  .ip-table-wrapper {
871
877
  width: 100%;
@@ -1771,6 +1777,8 @@ body a {
1771
1777
  white-space: nowrap;
1772
1778
  overflow-x: hidden;
1773
1779
  text-overflow: ellipsis;
1780
+ text-transform: none;
1781
+ font-size: 17px;
1774
1782
  max-width: 220px;
1775
1783
  }
1776
1784
  .imposium-header .inner-content .inner-right .btn-logout {
@@ -1866,8 +1874,33 @@ body a {
1866
1874
  }
1867
1875
  .imposium-header .orgs-menu {
1868
1876
  width: 240px;
1869
- max-height: 400px;
1870
- overflow: auto;
1877
+ }
1878
+ .imposium-header .orgs-menu .react-select__menu {
1879
+ margin-bottom: unset;
1880
+ margin-top: unset;
1881
+ width: 100.8%;
1882
+ left: -1px;
1883
+ position: relative;
1884
+ }
1885
+ .imposium-header .orgs-menu .react-select__single-value {
1886
+ color: white;
1887
+ }
1888
+ .imposium-header .orgs-menu .react-select__control {
1889
+ background-color: #161616;
1890
+ border-style: none;
1891
+ box-shadow: unset;
1892
+ }
1893
+ .imposium-header .orgs-menu .react-select__control:hover {
1894
+ border-color: unset;
1895
+ }
1896
+ .imposium-header .orgs-menu .react-select__menu-list {
1897
+ padding-bottom: unset;
1898
+ padding-top: unset;
1899
+ background-color: #161616;
1900
+ border: 1px solid #5f5f5f;
1901
+ }
1902
+ .imposium-header .orgs-menu .react-select__indicator {
1903
+ color: white;
1871
1904
  }
1872
1905
  .imposium-header .orgs-menu .orgs-menu-active-org {
1873
1906
  font-family: 'OswaldHeader', 'Oswald', sans-serif;
@@ -1899,7 +1932,11 @@ body a {
1899
1932
  line-height: 40px;
1900
1933
  margin-right: 10px;
1901
1934
  }
1902
- .imposium-header .orgs-menu .menu-item {
1935
+ .imposium-header .orgs-menu .react-select__input-container {
1936
+ color: white;
1937
+ }
1938
+ .imposium-header .orgs-menu .menu-item,
1939
+ .imposium-header .orgs-menu .react-select__option {
1903
1940
  padding: 0;
1904
1941
  border: none;
1905
1942
  font: inherit;
@@ -1918,11 +1955,16 @@ body a {
1918
1955
  text-transform: uppercase;
1919
1956
  color: white;
1920
1957
  width: 100%;
1921
- padding: 10px 0px;
1958
+ padding: 10px;
1922
1959
  font-size: 12px;
1923
1960
  border-bottom: 1px solid #494949;
1924
1961
  }
1925
- .imposium-header .orgs-menu .menu-item .inactive-first-char {
1962
+ .imposium-header .orgs-menu .menu-item.react-select__option--is-focused,
1963
+ .imposium-header .orgs-menu .react-select__option.react-select__option--is-focused {
1964
+ background-color: #494949;
1965
+ }
1966
+ .imposium-header .orgs-menu .menu-item .inactive-first-char,
1967
+ .imposium-header .orgs-menu .react-select__option .inactive-first-char {
1926
1968
  -webkit-touch-callout: none;
1927
1969
  -webkit-user-select: none;
1928
1970
  -khtml-user-select: none;
@@ -1937,14 +1979,16 @@ body a {
1937
1979
  line-height: 28px;
1938
1980
  margin-right: 10px;
1939
1981
  }
1940
- .imposium-header .orgs-menu .menu-item.inactive-org-button {
1982
+ .imposium-header .orgs-menu .menu-item.inactive-org-button,
1983
+ .imposium-header .orgs-menu .react-select__option.inactive-org-button {
1941
1984
  display: flex;
1942
1985
  align-items: center;
1943
1986
  box-sizing: content-box;
1944
1987
  box-sizing: border-box;
1945
1988
  padding: 10px;
1946
1989
  }
1947
- .imposium-header .orgs-menu .menu-item:last-of-type {
1990
+ .imposium-header .orgs-menu .menu-item:last-of-type,
1991
+ .imposium-header .orgs-menu .react-select__option:last-of-type {
1948
1992
  border-bottom: none;
1949
1993
  }
1950
1994
  .imposium-header .orgs-menu .orgs-menu-footer {
package/dist/styles.less CHANGED
@@ -461,11 +461,19 @@ body{
461
461
  .asset-filter {
462
462
  padding: 7px;
463
463
  border-bottom: 1px solid #494949;
464
- background: @background;
464
+ background: @backgroundDark;
465
465
  display: inline-block;
466
- &:hover {
466
+
467
+ .clear-filter {
468
+ cursor: default;
469
+ }
470
+
471
+ &.active {
467
472
  background: @backgroundLight;
468
473
  }
474
+ &:hover {
475
+ background: @background;
476
+ }
469
477
  }
470
478
 
471
479
  .assets-paginator {
@@ -998,8 +1006,8 @@ body{
998
1006
  .buttons{
999
1007
  display: none;
1000
1008
  position:absolute;
1001
- right:0px;
1002
- top:0px;
1009
+ right: 10px;
1010
+ top: 2px;
1003
1011
  }
1004
1012
  }
1005
1013
  }
@@ -1799,6 +1807,8 @@ body{
1799
1807
 
1800
1808
  .story-name {
1801
1809
  .ellipsis;
1810
+ text-transform: none;
1811
+ font-size: 17px;
1802
1812
  max-width: 220px;
1803
1813
  }
1804
1814
  }
@@ -1886,9 +1896,35 @@ body{
1886
1896
 
1887
1897
  .orgs-menu {
1888
1898
  width: 240px;
1889
- max-height: 400px;
1890
- overflow: auto;
1891
-
1899
+ // max-height: 400px;
1900
+ // overflow: auto;
1901
+ .react-select__menu{
1902
+ margin-bottom: unset;
1903
+ margin-top: unset;
1904
+ width: 100.8%;
1905
+ left: -1px;
1906
+ position: relative;
1907
+ }
1908
+ .react-select__single-value{
1909
+ color: white;
1910
+ }
1911
+ .react-select__control{
1912
+ background-color: rgb(22, 22, 22);
1913
+ border-style: none;
1914
+ box-shadow: unset;
1915
+ &:hover {
1916
+ border-color: unset;
1917
+ }
1918
+ }
1919
+ .react-select__menu-list{
1920
+ padding-bottom: unset;
1921
+ padding-top: unset;
1922
+ background-color: rgb(22, 22, 22);
1923
+ border: 1px solid #5f5f5f;
1924
+ }
1925
+ .react-select__indicator{
1926
+ color: white
1927
+ }
1892
1928
  .orgs-menu-active-org {
1893
1929
  .font-style;
1894
1930
  .flex-row;
@@ -1905,14 +1941,19 @@ body{
1905
1941
  margin-right: 10px;
1906
1942
  }
1907
1943
  }
1908
-
1909
- .menu-item {
1944
+ .react-select__input-container{
1945
+ color: white;
1946
+ }
1947
+ .menu-item, .react-select__option {
1910
1948
  .btn-reset;
1911
1949
  width: 100%;
1912
- padding: 10px 0px;
1950
+ padding: 10px;
1913
1951
  font-size: 12px;
1914
1952
  border-bottom: 1px solid @defaultBorderColor;
1915
1953
 
1954
+ &.react-select__option--is-focused{
1955
+ background-color: #494949
1956
+ }
1916
1957
  .inactive-first-char {
1917
1958
  .circle-style;
1918
1959
  margin-right: 10px;
@@ -215,11 +215,19 @@
215
215
  .asset-filter {
216
216
  padding: 7px;
217
217
  border-bottom: 1px solid #494949;
218
- background: @background;
218
+ background: @backgroundDark;
219
219
  display: inline-block;
220
- &:hover {
220
+
221
+ .clear-filter {
222
+ cursor: default;
223
+ }
224
+
225
+ &.active {
221
226
  background: @backgroundLight;
222
227
  }
228
+ &:hover {
229
+ background: @background;
230
+ }
223
231
  }
224
232
 
225
233
  .assets-paginator {
@@ -20,8 +20,8 @@
20
20
  .buttons{
21
21
  display: none;
22
22
  position:absolute;
23
- right:0px;
24
- top:0px;
23
+ right: 10px;
24
+ top: 2px;
25
25
  }
26
26
  }
27
27
  }
@@ -214,6 +214,8 @@
214
214
 
215
215
  .story-name {
216
216
  .ellipsis;
217
+ text-transform: none;
218
+ font-size: 17px;
217
219
  max-width: 220px;
218
220
  }
219
221
  }
@@ -301,9 +303,35 @@
301
303
 
302
304
  .orgs-menu {
303
305
  width: 240px;
304
- max-height: 400px;
305
- overflow: auto;
306
-
306
+ // max-height: 400px;
307
+ // overflow: auto;
308
+ .react-select__menu{
309
+ margin-bottom: unset;
310
+ margin-top: unset;
311
+ width: 100.8%;
312
+ left: -1px;
313
+ position: relative;
314
+ }
315
+ .react-select__single-value{
316
+ color: white;
317
+ }
318
+ .react-select__control{
319
+ background-color: rgb(22, 22, 22);
320
+ border-style: none;
321
+ box-shadow: unset;
322
+ &:hover {
323
+ border-color: unset;
324
+ }
325
+ }
326
+ .react-select__menu-list{
327
+ padding-bottom: unset;
328
+ padding-top: unset;
329
+ background-color: rgb(22, 22, 22);
330
+ border: 1px solid #5f5f5f;
331
+ }
332
+ .react-select__indicator{
333
+ color: white
334
+ }
307
335
  .orgs-menu-active-org {
308
336
  .font-style;
309
337
  .flex-row;
@@ -320,14 +348,19 @@
320
348
  margin-right: 10px;
321
349
  }
322
350
  }
323
-
324
- .menu-item {
351
+ .react-select__input-container{
352
+ color: white;
353
+ }
354
+ .menu-item, .react-select__option {
325
355
  .btn-reset;
326
356
  width: 100%;
327
- padding: 10px 0px;
357
+ padding: 10px;
328
358
  font-size: 12px;
329
359
  border-bottom: 1px solid @defaultBorderColor;
330
360
 
361
+ &.react-select__option--is-focused{
362
+ background-color: #494949
363
+ }
331
364
  .inactive-first-char {
332
365
  .circle-style;
333
366
  margin-right: 10px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imposium-hub/components",
3
- "version": "2.4.1",
3
+ "version": "2.4.2-1",
4
4
  "description": "React & Typescript component / asset library for Imposium front-ends",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -46,6 +46,7 @@
46
46
  "moment": "^2.29.1",
47
47
  "react-merge-refs": "^1.1.0",
48
48
  "react-moveable": "^0.26.1",
49
+ "react-select": "^5.8.0",
49
50
  "react-transition-group": "^4.4.5"
50
51
  },
51
52
  "peerDependencies": {
@@ -33,8 +33,31 @@ class AssetsTableTypeFilter extends React.PureComponent<
33
33
  }
34
34
 
35
35
  private handleFilterChange = (type: string): void => {
36
+ const {
37
+ assetFilters: { type: filterType }
38
+ } = this.props;
39
+
40
+ const { openMenu } = this.state;
41
+ let filter = [];
42
+
43
+ if (filterType !== '') {
44
+ filter = filterType.split(',');
45
+ }
46
+
36
47
  const freshTypeFilter: string = type !== ASSET_TYPES.ALL ? type : '';
37
- this.props.updateFilters({ type: freshTypeFilter, page: 1 });
48
+
49
+ if (type === ASSET_TYPES.ALL) {
50
+ this.setState({ openMenu: !openMenu }, () =>
51
+ this.props.updateFilters({ type: freshTypeFilter, page: 1 })
52
+ );
53
+ return;
54
+ } else if (filter.indexOf(freshTypeFilter) === -1) {
55
+ filter.push(freshTypeFilter);
56
+ } else {
57
+ filter.splice(filter.indexOf(freshTypeFilter), 1);
58
+ }
59
+
60
+ this.props.updateFilters({ type: filter.toString(), page: 1 });
38
61
  };
39
62
 
40
63
  public render = (): JSX.Element => {
@@ -43,12 +66,13 @@ class AssetsTableTypeFilter extends React.PureComponent<
43
66
  assetFilters: { type }
44
67
  } = this.props;
45
68
  const filterButtons: any = [];
46
-
69
+ const filter = type.split(',');
47
70
  for (const assetTypeOption of ASSET_TYPE_FILTER_OPTIONS) {
71
+ const index = filter.indexOf(assetTypeOption);
48
72
  filterButtons.push(
49
73
  <div
50
74
  key={assetTypeOption}
51
- className='asset-filter'
75
+ className={`asset-filter ${index !== -1 ? 'active' : null}`}
52
76
  onClick={() => this.handleFilterChange(assetTypeOption)}>
53
77
  <AssetsTypeIcon type={assetTypeOption} />
54
78
  </div>
@@ -3,7 +3,6 @@ import { ASSET_COLORS, ASSET_TYPES } from '../../constants/assets';
3
3
  import { assets as copy } from '../../constants/copy';
4
4
  import {
5
5
  ICON_FILTER,
6
- ICON_TIMES,
7
6
  ICON_VIDEO,
8
7
  ICON_AUDIO_TYPE,
9
8
  ICON_FONT,
@@ -14,7 +13,8 @@ import {
14
13
  ICON_FILE_ARCHIVE,
15
14
  ICON_IMAGE_SEQ_TYPE,
16
15
  ICON_FILE_CODE,
17
- ICON_CLAPPERBOARD_PLAY
16
+ ICON_CLAPPERBOARD_PLAY,
17
+ ICON_FILTERS
18
18
  } from '../../constants/icons';
19
19
 
20
20
  interface IAssetsTypeIconProps {
@@ -26,11 +26,19 @@ const AssetsTypeIcon: React.FC<IAssetsTypeIconProps> = (p: IAssetsTypeIconProps)
26
26
  color: ASSET_COLORS[p.type]
27
27
  };
28
28
 
29
+ const filter = p.type.split(',').length > 0 ? 'multi' : null;
30
+
29
31
  switch (p.type) {
30
32
  case 'filter':
31
33
  return <span>{ICON_FILTER}</span>;
32
34
  case 'all':
33
- return <span title={copy.iconTypes.all}>{ICON_TIMES}</span>;
35
+ return (
36
+ <span
37
+ className='clear-filter'
38
+ title={copy.iconTypes.all}>
39
+ Clear
40
+ </span>
41
+ );
34
42
  case ASSET_TYPES.VIDEO:
35
43
  return (
36
44
  <span
@@ -102,7 +110,11 @@ const AssetsTypeIcon: React.FC<IAssetsTypeIconProps> = (p: IAssetsTypeIconProps)
102
110
  </span>
103
111
  );
104
112
  default:
105
- return null;
113
+ if (filter === 'multi') {
114
+ return <span>{ICON_FILTERS}</span>;
115
+ } else {
116
+ return null;
117
+ }
106
118
  }
107
119
  };
108
120
 
@@ -75,7 +75,7 @@ interface IDataTableProps {
75
75
  itemsPerPage?: number;
76
76
  totalItems?: number;
77
77
  onPage?: (pageIndex: number, pageSize: number) => void;
78
-
78
+ onItemsPerPage?: (item: number) => void;
79
79
  // controlled sorting props, use internal sorting if not set
80
80
  sortBy?: any[];
81
81
  onSort?: (sortBy: any[]) => void;
@@ -442,7 +442,9 @@ const DataTable: React.FC<IDataTableProps> = (props: IDataTableProps) => {
442
442
  : nextPage,
443
443
  previousPage: manualPagination
444
444
  ? () => props.onPage(props.currentPage - 1, pageSize)
445
- : previousPage
445
+ : previousPage,
446
+ itemsPerPage: props.itemsPerPage,
447
+ onItemsPerPage: (i) => props.onItemsPerPage(i)
446
448
  }}
447
449
  />
448
450
  )}
@@ -8,6 +8,7 @@ import {
8
8
  ICON_ANGLE_RIGHT
9
9
  } from '../../constants/icons';
10
10
 
11
+ import { assets as copy } from '../../constants/copy';
11
12
  let textInputTimeout: number;
12
13
 
13
14
  const Paginator: React.FC<any> = ({
@@ -22,7 +23,9 @@ const Paginator: React.FC<any> = ({
22
23
  gotoPage,
23
24
  previousPage,
24
25
  nextPage,
25
- setPageSize
26
+ setPageSize,
27
+ itemsPerPage,
28
+ onItemsPerPage
26
29
  }) => (
27
30
  <section className='ip-table-pagination'>
28
31
  <span>
@@ -60,14 +63,14 @@ const Paginator: React.FC<any> = ({
60
63
  </Button>
61
64
  &nbsp;&nbsp;
62
65
  <span>
63
- Page&nbsp;&nbsp;
66
+ {copy.table.page}&nbsp;&nbsp;
64
67
  <strong>
65
68
  {pageIndex} of {pageCount}
66
69
  </strong>
67
70
  &nbsp;&nbsp;
68
71
  </span>
69
72
  <span>
70
- Go to page &nbsp;&nbsp;
73
+ {copy.table.goToPage}&nbsp;&nbsp;
71
74
  <input
72
75
  className='paginator-input'
73
76
  type='number'
@@ -92,10 +95,30 @@ const Paginator: React.FC<any> = ({
92
95
  />
93
96
  </span>
94
97
  &nbsp;&nbsp;
98
+ <span>
99
+ {copy.table.itemsPerPage}&nbsp;&nbsp;
100
+ <input
101
+ className='paginator-input'
102
+ type='number'
103
+ placeholder={itemsPerPage}
104
+ onChange={(e) => {
105
+ const input = e.target.value;
106
+ const inputNum = Number(input);
107
+
108
+ clearTimeout(textInputTimeout);
109
+
110
+ if (!input || inputNum < 1) {
111
+ return;
112
+ }
113
+
114
+ textInputTimeout = window.setTimeout(() => onItemsPerPage(inputNum), 300);
115
+ }}
116
+ />
117
+ </span>
95
118
  </span>
96
119
 
97
120
  <span className='total-assets'>
98
- Total&nbsp;&nbsp;<strong>{totalItems || 0}</strong>
121
+ {copy.table.total}&nbsp;&nbsp;<strong>{totalItems || 0}</strong>
99
122
  </span>
100
123
  </section>
101
124
  );