@imposium-hub/components 2.5.11 → 2.5.12

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 (92) hide show
  1. package/dist/cjs/components/assets/AssetsTableAssetIdCell.d.ts +2 -0
  2. package/dist/cjs/components/assets/AssetsTableAssetIdCell.js +54 -0
  3. package/dist/cjs/components/assets/AssetsTableAssetIdCell.js.map +1 -0
  4. package/dist/cjs/components/assets/AssetsTableAssetIdFilter.d.ts +2 -0
  5. package/dist/cjs/components/assets/AssetsTableAssetIdFilter.js +94 -0
  6. package/dist/cjs/components/assets/AssetsTableAssetIdFilter.js.map +1 -0
  7. package/dist/cjs/components/assets/AssetsTableGlobalCell.js +2 -1
  8. package/dist/cjs/components/assets/AssetsTableGlobalCell.js.map +1 -1
  9. package/dist/cjs/components/assets/StoryTableNameFilter.d.ts +2 -0
  10. package/dist/cjs/components/assets/StoryTableNameFilter.js +94 -0
  11. package/dist/cjs/components/assets/StoryTableNameFilter.js.map +1 -0
  12. package/dist/cjs/components/card/Card.d.ts +1 -0
  13. package/dist/cjs/components/card/Card.js +17 -4
  14. package/dist/cjs/components/card/Card.js.map +1 -1
  15. package/dist/cjs/components/color-field/ColorField.js +9 -14
  16. package/dist/cjs/components/color-field/ColorField.js.map +1 -1
  17. package/dist/cjs/components/data-table/DataTable.d.ts +3 -2
  18. package/dist/cjs/components/data-table/DataTable.js +78 -10
  19. package/dist/cjs/components/data-table/DataTable.js.map +1 -1
  20. package/dist/cjs/components/data-table/Paginator.js +76 -11
  21. package/dist/cjs/components/data-table/Paginator.js.map +1 -1
  22. package/dist/cjs/components/header/Header.d.ts +2 -0
  23. package/dist/cjs/components/header/Header.js +39 -8
  24. package/dist/cjs/components/header/Header.js.map +1 -1
  25. package/dist/cjs/components/smpte-field/SMPTEField.d.ts +2 -1
  26. package/dist/cjs/components/smpte-field/SMPTEField.js +9 -3
  27. package/dist/cjs/components/smpte-field/SMPTEField.js.map +1 -1
  28. package/dist/cjs/index.d.ts +6 -1
  29. package/dist/cjs/index.js +14 -2
  30. package/dist/cjs/index.js.map +1 -1
  31. package/dist/cjs/redux/actions/story-filter.d.ts +4 -0
  32. package/dist/cjs/redux/actions/story-filter.js +18 -0
  33. package/dist/cjs/redux/actions/story-filter.js.map +1 -0
  34. package/dist/cjs/redux/reducers/story-filter.d.ts +2 -0
  35. package/dist/cjs/redux/reducers/story-filter.js +33 -0
  36. package/dist/cjs/redux/reducers/story-filter.js.map +1 -0
  37. package/dist/esm/components/assets/AssetsTableAssetIdCell.d.ts +2 -0
  38. package/dist/esm/components/assets/AssetsTableAssetIdCell.js +29 -0
  39. package/dist/esm/components/assets/AssetsTableAssetIdCell.js.map +1 -0
  40. package/dist/esm/components/assets/AssetsTableAssetIdFilter.d.ts +2 -0
  41. package/dist/esm/components/assets/AssetsTableAssetIdFilter.js +20 -0
  42. package/dist/esm/components/assets/AssetsTableAssetIdFilter.js.map +1 -0
  43. package/dist/esm/components/assets/AssetsTableGlobalCell.js +2 -1
  44. package/dist/esm/components/assets/AssetsTableGlobalCell.js.map +1 -1
  45. package/dist/esm/components/assets/StoryTableNameFilter.d.ts +2 -0
  46. package/dist/esm/components/assets/StoryTableNameFilter.js +20 -0
  47. package/dist/esm/components/assets/StoryTableNameFilter.js.map +1 -0
  48. package/dist/esm/components/card/Card.d.ts +1 -0
  49. package/dist/esm/components/card/Card.js +16 -4
  50. package/dist/esm/components/card/Card.js.map +1 -1
  51. package/dist/esm/components/color-field/ColorField.js +9 -14
  52. package/dist/esm/components/color-field/ColorField.js.map +1 -1
  53. package/dist/esm/components/data-table/DataTable.d.ts +3 -2
  54. package/dist/esm/components/data-table/DataTable.js +76 -8
  55. package/dist/esm/components/data-table/DataTable.js.map +1 -1
  56. package/dist/esm/components/data-table/Paginator.js +95 -44
  57. package/dist/esm/components/data-table/Paginator.js.map +1 -1
  58. package/dist/esm/components/header/Header.d.ts +2 -0
  59. package/dist/esm/components/header/Header.js +30 -7
  60. package/dist/esm/components/header/Header.js.map +1 -1
  61. package/dist/esm/components/smpte-field/SMPTEField.d.ts +2 -1
  62. package/dist/esm/components/smpte-field/SMPTEField.js +9 -3
  63. package/dist/esm/components/smpte-field/SMPTEField.js.map +1 -1
  64. package/dist/esm/index.d.ts +6 -1
  65. package/dist/esm/index.js +6 -1
  66. package/dist/esm/index.js.map +1 -1
  67. package/dist/esm/redux/actions/story-filter.d.ts +4 -0
  68. package/dist/esm/redux/actions/story-filter.js +13 -0
  69. package/dist/esm/redux/actions/story-filter.js.map +1 -0
  70. package/dist/esm/redux/reducers/story-filter.d.ts +2 -0
  71. package/dist/esm/redux/reducers/story-filter.js +16 -0
  72. package/dist/esm/redux/reducers/story-filter.js.map +1 -0
  73. package/dist/styles.css +13 -5
  74. package/dist/styles.less +16 -8
  75. package/less/components/data-table.less +4 -0
  76. package/less/components/form-field.less +7 -3
  77. package/less/components/header.less +0 -5
  78. package/less/components/tag.less +5 -0
  79. package/package.json +1 -1
  80. package/src/components/assets/AssetsTableAssetIdCell.tsx +64 -0
  81. package/src/components/assets/AssetsTableAssetIdFilter.tsx +41 -0
  82. package/src/components/assets/AssetsTableGlobalCell.tsx +11 -1
  83. package/src/components/assets/StoryTableNameFilter.tsx +40 -0
  84. package/src/components/card/Card.tsx +27 -13
  85. package/src/components/color-field/ColorField.tsx +16 -17
  86. package/src/components/data-table/DataTable.tsx +96 -12
  87. package/src/components/data-table/Paginator.tsx +162 -93
  88. package/src/components/header/Header.tsx +42 -6
  89. package/src/components/smpte-field/SMPTEField.tsx +8 -3
  90. package/src/index.ts +11 -0
  91. package/src/redux/actions/story-filter.ts +15 -0
  92. package/src/redux/reducers/story-filter.ts +18 -0
@@ -26,102 +26,171 @@ const Paginator: React.FC<any> = ({
26
26
  setPageSize,
27
27
  itemsPerPage,
28
28
  onItemsPerPage
29
- }) => (
30
- <section className='ip-table-pagination'>
31
- <span>
32
- <Button
33
- style='subtle'
34
- size='small'
35
- tooltip='Go to first page'
36
- disabled={!canPreviousPage}
37
- onClick={() => gotoPage(1, pageSize)}>
38
- {ICON_ANGLE_DOUBLE_LEFT}
39
- </Button>
40
- <Button
41
- style='subtle'
42
- size='small'
43
- tooltip='Go to previous page'
44
- disabled={!canPreviousPage}
45
- onClick={() => previousPage()}>
46
- {ICON_ANGLE_LEFT}
47
- </Button>
48
- <Button
49
- style='subtle'
50
- size='small'
51
- tooltip='Go to next page'
52
- disabled={!canNextPage}
53
- onClick={() => nextPage()}>
54
- {ICON_ANGLE_RIGHT}
55
- </Button>
56
- <Button
57
- style='subtle'
58
- size='small'
59
- tooltip='Go to last page'
60
- disabled={!canNextPage}
61
- onClick={() => gotoPage(pageCount, pageSize)}>
62
- {ICON_ANGLE_DOUBLE_RIGHT}
63
- </Button>
64
- &nbsp;&nbsp;
29
+ }) => {
30
+ const [getPageIndex, setPageIndex] = React.useState<number>(pageIndex);
31
+ const [getItemsPerPage, setItemsPerPage] = React.useState<number>(itemsPerPage);
32
+ const [getPageCount, setPageCount] = React.useState<number>(pageCount);
33
+ const [inputPageIndex, setInputPageIndex] = React.useState<string>('');
34
+ const [inputItemsPerPage, setInputItemsPerPage] = React.useState<string>('');
35
+
36
+ React.useEffect(() => {
37
+ if (pageCount === 0) {
38
+ setPageCount(1);
39
+ } else {
40
+ setPageCount(pageCount);
41
+ }
42
+ }, [pageCount]);
43
+
44
+ React.useEffect(() => {
45
+ if (pageIndex !== getPageIndex) {
46
+ setPageIndex(pageIndex);
47
+ setInputPageIndex('');
48
+ }
49
+
50
+ if (itemsPerPage !== getItemsPerPage) {
51
+ setItemsPerPage(itemsPerPage);
52
+ setInputItemsPerPage('');
53
+ }
54
+ }, [pageIndex, itemsPerPage]);
55
+
56
+ const onItemsPerPageBlur = () => {
57
+ clearTimeout(textInputTimeout);
58
+ if (inputItemsPerPage !== '') {
59
+ onItemsPerPage(inputItemsPerPage);
60
+ }
61
+ };
62
+
63
+ const onGoToPageBlur = () => {
64
+ clearTimeout(textInputTimeout);
65
+ if (inputPageIndex !== '') {
66
+ gotoPage(inputPageIndex, pageSize);
67
+ }
68
+ };
69
+
70
+ const onItemsPerPageKeyDown = (e) => {
71
+ if (e.key === 'Enter' && inputItemsPerPage !== '') {
72
+ clearTimeout(textInputTimeout);
73
+ onItemsPerPage(inputItemsPerPage);
74
+ }
75
+ };
76
+
77
+ const onGoToPageKeyDown = (e) => {
78
+ if (e.key === 'Enter' && inputPageIndex !== '') {
79
+ clearTimeout(textInputTimeout);
80
+ gotoPage(inputPageIndex, pageSize);
81
+ }
82
+ };
83
+
84
+ return (
85
+ <section className='ip-table-pagination'>
65
86
  <span>
66
- {copy.table.page}&nbsp;&nbsp;
67
- <strong>
68
- {pageIndex} of {pageCount}
69
- </strong>
87
+ <Button
88
+ style='subtle'
89
+ size='small'
90
+ tooltip='Go to first page'
91
+ disabled={!canPreviousPage}
92
+ onClick={() => gotoPage(1, pageSize)}>
93
+ {ICON_ANGLE_DOUBLE_LEFT}
94
+ </Button>
95
+ <Button
96
+ style='subtle'
97
+ size='small'
98
+ tooltip='Go to previous page'
99
+ disabled={!canPreviousPage}
100
+ onClick={() => previousPage()}>
101
+ {ICON_ANGLE_LEFT}
102
+ </Button>
103
+ <Button
104
+ style='subtle'
105
+ size='small'
106
+ tooltip='Go to next page'
107
+ disabled={!canNextPage}
108
+ onClick={() => nextPage()}>
109
+ {ICON_ANGLE_RIGHT}
110
+ </Button>
111
+ <Button
112
+ style='subtle'
113
+ size='small'
114
+ tooltip='Go to last page'
115
+ disabled={!canNextPage}
116
+ onClick={() => gotoPage(getPageCount, pageSize)}>
117
+ {ICON_ANGLE_DOUBLE_RIGHT}
118
+ </Button>
70
119
  &nbsp;&nbsp;
120
+ <span>
121
+ {copy.table.page}&nbsp;&nbsp;
122
+ <strong>
123
+ {getPageIndex} of {getPageCount}
124
+ </strong>
125
+ &nbsp;&nbsp;
126
+ </span>
127
+ <span>
128
+ {copy.table.goToPage}&nbsp;&nbsp;
129
+ <input
130
+ className='paginator-input'
131
+ type='number'
132
+ placeholder={getPageIndex.toString()}
133
+ value={inputPageIndex}
134
+ onChange={(e) => {
135
+ const input = e.target.value;
136
+ const inputNum = Number(input);
137
+ let next: number;
138
+
139
+ clearTimeout(textInputTimeout);
140
+ setInputPageIndex(input);
141
+ if (!input || inputNum < 1 || inputNum > getPageCount) {
142
+ return;
143
+ }
144
+
145
+ if (inputNum >= 1 && inputNum <= getPageCount) {
146
+ next = inputNum;
147
+ }
148
+
149
+ textInputTimeout = window.setTimeout(
150
+ () => gotoPage(next, pageSize),
151
+ 1000
152
+ );
153
+ }}
154
+ onBlur={() => onGoToPageBlur()}
155
+ onKeyDown={(e) => onGoToPageKeyDown(e)}
156
+ />
157
+ </span>
158
+ &nbsp;&nbsp;
159
+ <span>
160
+ {copy.table.itemsPerPage}&nbsp;&nbsp;
161
+ <input
162
+ className='paginator-input'
163
+ type='number'
164
+ placeholder={getItemsPerPage.toString()}
165
+ value={inputItemsPerPage}
166
+ onChange={(e) => {
167
+ const input = e.target.value;
168
+ const inputNum = Number(input);
169
+
170
+ clearTimeout(textInputTimeout);
171
+
172
+ setInputItemsPerPage(input);
173
+
174
+ if (!input || inputNum < 1) {
175
+ return;
176
+ }
177
+
178
+ textInputTimeout = window.setTimeout(
179
+ () => onItemsPerPage(inputNum),
180
+ 1000
181
+ );
182
+ }}
183
+ onBlur={() => onItemsPerPageBlur()}
184
+ onKeyDown={(e) => onItemsPerPageKeyDown(e)}
185
+ />
186
+ </span>
71
187
  </span>
72
- <span>
73
- {copy.table.goToPage}&nbsp;&nbsp;
74
- <input
75
- className='paginator-input'
76
- type='number'
77
- placeholder={pageIndex}
78
- onChange={(e) => {
79
- const input = e.target.value;
80
- const inputNum = Number(input);
81
- let next: number;
82
-
83
- clearTimeout(textInputTimeout);
84
-
85
- if (!input || inputNum < 1 || inputNum > pageCount) {
86
- return;
87
- }
88
-
89
- if (inputNum >= 1 && inputNum <= pageCount) {
90
- next = inputNum;
91
- }
92
-
93
- textInputTimeout = window.setTimeout(() => gotoPage(next, pageSize), 300);
94
- }}
95
- />
96
- </span>
97
- &nbsp;&nbsp;
98
- <span>
99
- {copy.table.itemsPerPage}&nbsp;&nbsp;
100
- <input
101
- className='paginator-input'
102
- type='number'
103
- placeholder={itemsPerPage}
104
- min={1}
105
- onChange={(e) => {
106
- const input = e.target.value;
107
- const inputNum = Number(input);
108
-
109
- clearTimeout(textInputTimeout);
110
-
111
- if (!input || inputNum < 1) {
112
- return;
113
- }
114
-
115
- textInputTimeout = window.setTimeout(() => onItemsPerPage(inputNum), 300);
116
- }}
117
- />
118
- </span>
119
- </span>
120
188
 
121
- <span className='total-assets'>
122
- {copy.table.total}&nbsp;&nbsp;<strong>{totalItems || 0}</strong>
123
- </span>
124
- </section>
125
- );
189
+ <span className='total-assets'>
190
+ {copy.table.total}&nbsp;&nbsp;<strong>{totalItems || 0}</strong>
191
+ </span>
192
+ </section>
193
+ );
194
+ };
126
195
 
127
196
  export default Paginator;
@@ -19,6 +19,8 @@ import Select, { createFilter } from 'react-select';
19
19
  import { setAccessData } from '../../redux/actions/access';
20
20
  import { bindActionCreators } from 'redux';
21
21
  import { StoryTableTotalRendersCell } from '../assets/StoryTableTotalRendersCell';
22
+ import StoryTableNameFilter from '../assets/StoryTableNameFilter';
23
+ import { updateStoryFilter } from '../../redux/actions/story-filter';
22
24
 
23
25
  export interface IHeaderProps {
24
26
  email?: string;
@@ -38,6 +40,8 @@ export interface IHeaderProps {
38
40
  hideDocs?: boolean;
39
41
  showFTLogo?: boolean;
40
42
  access: any;
43
+ storyFilter: any;
44
+ updateStoryFilter(n): any;
41
45
  }
42
46
 
43
47
  export interface IHeaderState {
@@ -172,12 +176,18 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
172
176
  });
173
177
  };
174
178
 
179
+ private closeStoriesDropDown() {
180
+ this.setState({ showStoriesDropdown: false }, () =>
181
+ this.props.updateStoryFilter({ name: '' })
182
+ );
183
+ }
184
+
175
185
  private changeStory = (story: any): void => {
176
186
  const { onStoryChange } = this.props;
177
187
 
178
188
  if (typeof onStoryChange === 'function') {
179
189
  onStoryChange(story);
180
- this.setState({ showStoriesDropdown: false });
190
+ this.closeStoriesDropDown();
181
191
  }
182
192
  };
183
193
 
@@ -290,6 +300,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
290
300
  Header: 'Name',
291
301
  width: 115,
292
302
  minWidth: 115,
303
+ Search: () => <StoryTableNameFilter />,
293
304
  disableSortBy: false
294
305
  },
295
306
  {
@@ -513,7 +524,10 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
513
524
  ref={this.storyToggleRef}
514
525
  onClick={() => {
515
526
  this.setState({ showStoriesDropdown: !showStoriesDropdown }, () => {
516
- if (showStoriesDropdown === false) this.getAccessDataHandler();
527
+ if (showStoriesDropdown === false) {
528
+ this.props.updateStoryFilter({ name: '' });
529
+ this.getAccessDataHandler();
530
+ }
517
531
  });
518
532
  }}>
519
533
  <div className='story-name'>
@@ -533,12 +547,31 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
533
547
  ? [{ id: order, desc: orderDirection === 'desc' }]
534
548
  : undefined;
535
549
 
536
- const sortedStories = _.orderBy(
550
+ let sortedStories = _.orderBy(
537
551
  activeOrganizationBlob.stories,
538
552
  ['date_modified'],
539
553
  ['desc']
540
554
  );
541
555
 
556
+ if (this.props.storyFilter && this.props.storyFilter?.name) {
557
+ const storyFilter = this.props.storyFilter.name.toLowerCase();
558
+
559
+ const sortByName = sortedStories.filter((stories) =>
560
+ stories.name.toLowerCase().includes(storyFilter)
561
+ );
562
+
563
+ if (sortByName.length > 0) {
564
+ sortedStories = sortByName;
565
+ } else {
566
+ const sortById = sortedStories.filter((stories) =>
567
+ stories.id.includes(storyFilter)
568
+ );
569
+ if (sortById.length > 0) {
570
+ sortedStories = sortById;
571
+ }
572
+ }
573
+ }
574
+
542
575
  storyMenuInner = (
543
576
  <DataTable
544
577
  columns={this.getStoriesColumns()}
@@ -548,6 +581,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
548
581
  itemsPerPage={activeOrganizationBlob.stories.length}
549
582
  hidePaginator={true}
550
583
  onRowClick={this.changeStory}
584
+ keyboardNav={true}
551
585
  />
552
586
  );
553
587
  }
@@ -652,7 +686,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
652
686
  position='bottomright'
653
687
  show={showStoriesDropdown}
654
688
  toggleRef={this.storyToggleRef}
655
- onOutsideClick={() => this.setState({ showStoriesDropdown: false })}>
689
+ onOutsideClick={() => this.closeStoriesDropDown()}>
656
690
  <div className='stories-menu'>{storyMenuInner}</div>
657
691
  </ImposiumDropdown>
658
692
 
@@ -672,7 +706,8 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
672
706
  const mapDispatchToProps = (dispatch) => {
673
707
  return bindActionCreators(
674
708
  {
675
- setAccessData
709
+ setAccessData,
710
+ updateStoryFilter
676
711
  },
677
712
  dispatch
678
713
  );
@@ -682,7 +717,8 @@ const mapStateToProps = (state): any => {
682
717
  return {
683
718
  auth: state.auth,
684
719
  story: state.story,
685
- access: state.access
720
+ access: state.access,
721
+ storyFilter: state.storyFilter
686
722
  };
687
723
  };
688
724
 
@@ -12,6 +12,7 @@ interface ISMPTEFieldProps {
12
12
  width?: string | number;
13
13
  onChange?(e): void;
14
14
  onBlur?(e): void;
15
+ onError?(e): void;
15
16
  info?: string;
16
17
  labelPosition?: string;
17
18
  labelWidth?: string | number;
@@ -75,7 +76,7 @@ class SMPTEField extends React.PureComponent<ISMPTEFieldProps, ISMPTEFieldState>
75
76
 
76
77
  private onBlur(e?) {
77
78
  const val = e ? e.target.value : this.inputRef.current.value;
78
- const isValid = this.smptValidator(val);
79
+ const isValid = this.SMTPEValidator(val);
79
80
 
80
81
  if (e && e.key === 'Enter') {
81
82
  this.setDuration(isValid, val);
@@ -88,10 +89,12 @@ class SMPTEField extends React.PureComponent<ISMPTEFieldProps, ISMPTEFieldState>
88
89
 
89
90
  private onChange() {
90
91
  const val = this.inputRef.current.value;
91
- const isValid = this.smptValidator(val);
92
+ const isValid = this.SMTPEValidator(val);
92
93
 
93
94
  if (isValid) {
94
95
  this.props.onChange(val);
96
+ } else {
97
+ this.props.onError(isValid);
95
98
  }
96
99
  }
97
100
 
@@ -101,11 +104,13 @@ class SMPTEField extends React.PureComponent<ISMPTEFieldProps, ISMPTEFieldState>
101
104
  const smpte = getSMPTE(frameRate, val);
102
105
  if (smpte && this.props.onBlur) {
103
106
  this.props.onBlur(smpte);
107
+ } else {
108
+ this.props.onError(isValid);
104
109
  }
105
110
  }
106
111
  }
107
112
 
108
- private smptValidator(val) {
113
+ private SMTPEValidator(val) {
109
114
  const isValidSMPTETimeCode = new RegExp(this.regex);
110
115
  const isValid = isValidSMPTETimeCode.test(val);
111
116
  const errorMsg = isValid ? null : TIMECODE.ERROR;
package/src/index.ts CHANGED
@@ -40,6 +40,7 @@ import AssetField from './components/assets/AssetField';
40
40
  import AssetsTableDropzone from './components/assets/AssetsTableDropzone';
41
41
  import AssetsTableNameCell from './components/assets/AssetsTableNameCell';
42
42
  import AssetsTableNameFilter from './components/assets/AssetsTableNameFilter';
43
+ import AssetsTableAssetIdFilter from './components/assets/AssetsTableAssetIdFilter';
43
44
  import AssetsTableSelectCell from './components/assets/AssetsTableSelectCell';
44
45
  import AssetsTableSelectFilter from './components/assets/AssetsTableSelectFilter';
45
46
  import AssetsTableTagsCell from './components/assets/AssetsTableTagsCell';
@@ -159,6 +160,10 @@ import ContextMenuTrigger from './components/context-menu/ContextMenuTrigger';
159
160
  import CopyPropIdButton from './components/copy-prop-id-button/CopyPropIdButton';
160
161
  import Submenu from './components/context-menu/SubMenu';
161
162
  import { ConfirmModal, IConfirmModalProps } from './components/confirm-modal/ConfirmModal';
163
+ import AssetsTableAssetIdCell from './components/assets/AssetsTableAssetIdCell';
164
+ import { resetStoryFilter, updateStoryFilter } from './redux/actions/story-filter';
165
+ import storyFilter from './redux/reducers/story-filter';
166
+ import StoryTableNameFilter from './components/assets/StoryTableNameFilter';
162
167
 
163
168
  export {
164
169
  AppWrapper,
@@ -217,6 +222,9 @@ export {
217
222
  AssetsTableGlobalCell,
218
223
  AssetsTableStatusCell,
219
224
  AssetsTableNameFilter,
225
+ StoryTableNameFilter,
226
+ AssetsTableAssetIdFilter,
227
+ AssetsTableAssetIdCell,
220
228
  AssetsTableNameCell,
221
229
  AssetsTableDurationCell,
222
230
  AssetsTableRateCell,
@@ -242,6 +250,8 @@ export {
242
250
  storyDeleted,
243
251
  updateFilters,
244
252
  resetFilters,
253
+ updateStoryFilter,
254
+ resetStoryFilter,
245
255
  getAssets,
246
256
  deleteAssets,
247
257
  downloadAssets,
@@ -256,6 +266,7 @@ export {
256
266
  deselectAsset,
257
267
  resetSelection,
258
268
  assetFilters,
269
+ storyFilter,
259
270
  assetList,
260
271
  assetUploads,
261
272
  selectedAssets,
@@ -0,0 +1,15 @@
1
+ const storyFilterActions: any = {
2
+ UPDATE: 'storyFilter/UPDATE',
3
+ RESET: 'storyFilter/RESET'
4
+ };
5
+
6
+ export const updateStoryFilter = (newFilters: any): any => ({
7
+ type: storyFilterActions.UPDATE,
8
+ newFilters
9
+ });
10
+
11
+ export const resetStoryFilter = (): any => ({
12
+ type: storyFilterActions.RESET
13
+ });
14
+
15
+ export default storyFilterActions;
@@ -0,0 +1,18 @@
1
+ import storyFilterActions from '../actions/story-filter';
2
+
3
+ const initialState: any = {
4
+ name: ''
5
+ };
6
+
7
+ const storyFilter = (state = initialState, action): any => {
8
+ switch (action.type) {
9
+ case storyFilterActions.UPDATE:
10
+ return { ...state, ...action.newFilters };
11
+ case storyFilterActions.RESET:
12
+ return { ...initialState };
13
+ default:
14
+ return state;
15
+ }
16
+ };
17
+
18
+ export default storyFilter;