@imposium-hub/components 2.5.10-11 → 2.5.10-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.
- package/dist/cjs/components/assets/AssetsTableGlobalCell.js +2 -1
- package/dist/cjs/components/assets/AssetsTableGlobalCell.js.map +1 -1
- package/dist/cjs/components/card/Card.d.ts +1 -0
- package/dist/cjs/components/card/Card.js +17 -4
- package/dist/cjs/components/card/Card.js.map +1 -1
- package/dist/cjs/components/data-table/Paginator.js +51 -7
- package/dist/cjs/components/data-table/Paginator.js.map +1 -1
- package/dist/cjs/components/smpte-field/SMPTEField.d.ts +2 -1
- package/dist/cjs/components/smpte-field/SMPTEField.js +9 -3
- package/dist/cjs/components/smpte-field/SMPTEField.js.map +1 -1
- package/dist/cjs/components/tabs/Tabs.d.ts +1 -4
- package/dist/cjs/components/tabs/Tabs.stories.d.ts +1 -3
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.js +6 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/redux/actions/asset-list.js +34 -42
- package/dist/cjs/redux/actions/asset-list.js.map +1 -1
- package/dist/cjs/services/API.d.ts +3 -0
- package/dist/cjs/services/API.js +9 -0
- package/dist/cjs/services/API.js.map +1 -1
- package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
- package/dist/esm/components/anchor-field/AnchorField.d.ts +1 -1
- package/dist/esm/components/assets/AssetsTableGlobalCell.js +2 -1
- package/dist/esm/components/assets/AssetsTableGlobalCell.js.map +1 -1
- package/dist/esm/components/assets/AssetsTablePreviewCell.d.ts +1 -1
- package/dist/esm/components/assets/FontAssetPreview.d.ts +1 -1
- package/dist/esm/components/assets/StoryTableTotalRendersCell.d.ts +1 -2
- package/dist/esm/components/button/Button.d.ts +1 -1
- package/dist/esm/components/button/Button.stories.d.ts +5 -6
- package/dist/esm/components/button-group-field/ButtonGroupField.stories.d.ts +1 -2
- package/dist/esm/components/button-menu/ButtonMenu.d.ts +2 -2
- package/dist/esm/components/button-menu/ButtonMenu.stories.d.ts +1 -2
- package/dist/esm/components/button-menu/ButtonMenuItem.d.ts +1 -1
- package/dist/esm/components/card/Card.d.ts +5 -4
- package/dist/esm/components/card/Card.js +16 -4
- package/dist/esm/components/card/Card.js.map +1 -1
- package/dist/esm/components/card/Card.stories.d.ts +1 -2
- package/dist/esm/components/checkbox-field/CheckboxField.d.ts +1 -1
- package/dist/esm/components/checkbox-field/CheckboxField.stories.d.ts +1 -2
- package/dist/esm/components/color-field/ColorField.d.ts +1 -1
- package/dist/esm/components/color-field/ColorFiled.stories.d.ts +1 -2
- package/dist/esm/components/compositions/TextLayer.d.ts +1 -1
- package/dist/esm/components/confirm-modal/ConfirmModal.d.ts +1 -2
- package/dist/esm/components/context-menu/AnimateComponent.d.ts +1 -2
- package/dist/esm/components/context-menu/ContextMenu.d.ts +1 -2
- package/dist/esm/components/context-menu/ContextMenuItem.d.ts +1 -2
- package/dist/esm/components/context-menu/ContextMenuTrigger.d.ts +1 -2
- package/dist/esm/components/context-menu/SubMenu.d.ts +1 -2
- package/dist/esm/components/controlled-list/ControlledList.d.ts +2 -2
- package/dist/esm/components/controlled-list/ControlledList.stories.d.ts +1 -2
- package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.d.ts +1 -1
- package/dist/esm/components/data-table/Paginator.js +74 -44
- package/dist/esm/components/data-table/Paginator.js.map +1 -1
- package/dist/esm/components/determinate-loader/DeterminateLoader.stories.d.ts +3 -3
- package/dist/esm/components/dropdown/Dropdown.d.ts +1 -1
- package/dist/esm/components/dropdown/dropdown.stories.d.ts +1 -1
- package/dist/esm/components/field-wrapper/FieldWrapper.d.ts +2 -2
- package/dist/esm/components/field-wrapper/FieldWrapper.stories.d.ts +1 -2
- package/dist/esm/components/font-picker/FontPicker.d.ts +1 -1
- package/dist/esm/components/h-rule/HRule.d.ts +1 -2
- package/dist/esm/components/h-rule/HRule.stories.d.ts +2 -3
- package/dist/esm/components/list-field/ListField.d.ts +1 -1
- package/dist/esm/components/list-field/ListField.stories.d.ts +1 -2
- package/dist/esm/components/log-viewer/LogViewer.d.ts +1 -1
- package/dist/esm/components/media-variable-field/MediaVariableField.d.ts +1 -1
- package/dist/esm/components/modal/Modal.d.ts +1 -1
- package/dist/esm/components/modal/Modal.stories.d.ts +1 -2
- package/dist/esm/components/number-field/NumberField.d.ts +1 -1
- package/dist/esm/components/number-field/NumberField.stories.d.ts +1 -2
- package/dist/esm/components/players/AudioPlayer.d.ts +1 -1
- package/dist/esm/components/players/AudioPreview.d.ts +1 -1
- package/dist/esm/components/players/ImagePlayer.d.ts +1 -1
- package/dist/esm/components/players/ImagePreview.d.ts +1 -1
- package/dist/esm/components/players/ImageSequencePlayer.d.ts +1 -1
- package/dist/esm/components/players/TemplatePlayer.d.ts +1 -1
- package/dist/esm/components/players/VideoPlayer.d.ts +1 -1
- package/dist/esm/components/players/VideoPreview.d.ts +1 -1
- package/dist/esm/components/publish-wizard/PublishWizard.d.ts +3 -3
- package/dist/esm/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
- package/dist/esm/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
- package/dist/esm/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
- package/dist/esm/components/section/Section.d.ts +1 -2
- package/dist/esm/components/section/Section.stories.d.ts +2 -3
- package/dist/esm/components/select-field/SelectField.d.ts +1 -1
- package/dist/esm/components/select-field/SelectField.stories.d.ts +1 -2
- package/dist/esm/components/shortcut-menu/ShortcutMenu.stories.d.ts +1 -1
- package/dist/esm/components/slider-field/SliderField.d.ts +1 -1
- package/dist/esm/components/slider-field/SliderField.stories.d.ts +1 -2
- package/dist/esm/components/smpte-field/SMPTEField.d.ts +3 -2
- package/dist/esm/components/smpte-field/SMPTEField.js +9 -3
- package/dist/esm/components/smpte-field/SMPTEField.js.map +1 -1
- package/dist/esm/components/tabs/Tabs.stories.d.ts +1 -1
- package/dist/esm/components/text-area-field/TextAreaField.d.ts +1 -1
- package/dist/esm/components/text-area-field/TextAreaField.stories.d.ts +1 -2
- package/dist/esm/components/text-field/TextField.d.ts +1 -1
- package/dist/esm/components/text-field/TextField.stories.d.ts +1 -2
- package/dist/esm/constants/icons.d.ts +73 -74
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/redux/actions/asset-list.js +34 -42
- package/dist/esm/redux/actions/asset-list.js.map +1 -1
- package/dist/esm/services/API.d.ts +3 -0
- package/dist/esm/services/API.js +9 -0
- package/dist/esm/services/API.js.map +1 -1
- package/dist/styles.css +13 -2
- package/dist/styles.less +16 -3
- package/less/components/data-table.less +4 -0
- package/less/components/form-field.less +7 -3
- package/less/components/tag.less +5 -0
- package/package.json +1 -1
- package/src/components/assets/AssetsTableAssetIdCell.tsx +65 -0
- package/src/components/assets/AssetsTableAssetIdFilter.tsx +40 -0
- package/src/components/assets/AssetsTableGlobalCell.tsx +11 -1
- package/src/components/card/Card.tsx +27 -13
- package/src/components/data-table/Paginator.tsx +140 -93
- package/src/components/smpte-field/SMPTEField.tsx +8 -3
- package/src/index.ts +4 -0
- package/src/redux/actions/asset-list.ts +37 -44
- package/src/services/API.ts +15 -0
package/dist/styles.less
CHANGED
|
@@ -1246,6 +1246,10 @@ body{
|
|
|
1246
1246
|
border-top: 0;
|
|
1247
1247
|
background-color: darken(@background, 1%);
|
|
1248
1248
|
|
|
1249
|
+
input[type=number] {
|
|
1250
|
+
-moz-appearance: textfield;
|
|
1251
|
+
}
|
|
1252
|
+
|
|
1249
1253
|
.paginator-input {
|
|
1250
1254
|
.inputMixin;
|
|
1251
1255
|
width: 60px;
|
|
@@ -1375,6 +1379,10 @@ body{
|
|
|
1375
1379
|
padding:4px;
|
|
1376
1380
|
}
|
|
1377
1381
|
|
|
1382
|
+
input[type=number] {
|
|
1383
|
+
-moz-appearance: textfield;
|
|
1384
|
+
}
|
|
1385
|
+
|
|
1378
1386
|
textarea{
|
|
1379
1387
|
height:@inputHeight * 3;
|
|
1380
1388
|
resize:none;
|
|
@@ -1476,15 +1484,15 @@ body{
|
|
|
1476
1484
|
padding-top: 1px;
|
|
1477
1485
|
box-sizing: border-box;
|
|
1478
1486
|
color:darken(@textDefault, 30%);
|
|
1479
|
-
|
|
1487
|
+
background: #373737;
|
|
1480
1488
|
&:hover{
|
|
1481
1489
|
background:darken(@inputBackground, 5%);
|
|
1482
1490
|
}
|
|
1483
1491
|
|
|
1484
1492
|
&.active{
|
|
1485
1493
|
cursor:auto;
|
|
1486
|
-
background:
|
|
1487
|
-
color
|
|
1494
|
+
background:unset;
|
|
1495
|
+
color:unset;
|
|
1488
1496
|
}
|
|
1489
1497
|
|
|
1490
1498
|
&.disabled svg {
|
|
@@ -2936,6 +2944,11 @@ body{
|
|
|
2936
2944
|
}
|
|
2937
2945
|
}
|
|
2938
2946
|
}
|
|
2947
|
+
|
|
2948
|
+
.imposium-asset-id {
|
|
2949
|
+
cursor: pointer;
|
|
2950
|
+
user-select: none;
|
|
2951
|
+
}
|
|
2939
2952
|
h1, h2, h3, h4, h5 {
|
|
2940
2953
|
font-family: 'Oswald', sans-serif;
|
|
2941
2954
|
color:@headerTextDefault;
|
|
@@ -55,6 +55,10 @@
|
|
|
55
55
|
padding:4px;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
input[type=number] {
|
|
59
|
+
-moz-appearance: textfield;
|
|
60
|
+
}
|
|
61
|
+
|
|
58
62
|
textarea{
|
|
59
63
|
height:@inputHeight * 3;
|
|
60
64
|
resize:none;
|
|
@@ -156,15 +160,15 @@
|
|
|
156
160
|
padding-top: 1px;
|
|
157
161
|
box-sizing: border-box;
|
|
158
162
|
color:darken(@textDefault, 30%);
|
|
159
|
-
|
|
163
|
+
background: #373737;
|
|
160
164
|
&:hover{
|
|
161
165
|
background:darken(@inputBackground, 5%);
|
|
162
166
|
}
|
|
163
167
|
|
|
164
168
|
&.active{
|
|
165
169
|
cursor:auto;
|
|
166
|
-
background:
|
|
167
|
-
color
|
|
170
|
+
background:unset;
|
|
171
|
+
color:unset;
|
|
168
172
|
}
|
|
169
173
|
|
|
170
174
|
&.disabled svg {
|
package/less/components/tag.less
CHANGED
package/package.json
CHANGED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { copying } from '../../constants/copy';
|
|
3
|
+
import { updateFilters } from '../../redux/actions/asset-filters';
|
|
4
|
+
import { connect } from 'react-redux';
|
|
5
|
+
import { bindActionCreators } from 'redux';
|
|
6
|
+
|
|
7
|
+
interface IAssetsTableAssetIdCellProps {
|
|
8
|
+
cell: any;
|
|
9
|
+
onNotification?: (e) => void;
|
|
10
|
+
onError?: (e) => void;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const AssetsTableAssetIdCell: React.FC<IAssetsTableAssetIdCellProps> = (
|
|
14
|
+
props: IAssetsTableAssetIdCellProps
|
|
15
|
+
) => {
|
|
16
|
+
const {
|
|
17
|
+
onNotification,
|
|
18
|
+
onError,
|
|
19
|
+
cell: {
|
|
20
|
+
row: {
|
|
21
|
+
original: { id }
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
} = props;
|
|
25
|
+
console.log('AssetsTableAssetIdCell');
|
|
26
|
+
console.log(id);
|
|
27
|
+
|
|
28
|
+
const copyToClipboard = (e) => {
|
|
29
|
+
navigator.clipboard.writeText(e.target.textContent).then(
|
|
30
|
+
() => {
|
|
31
|
+
if (onNotification) {
|
|
32
|
+
onNotification(`${copying.copied}`);
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
() => {
|
|
36
|
+
if (onError) {
|
|
37
|
+
onError(`${copying.error}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
<div
|
|
45
|
+
key={id}
|
|
46
|
+
className='imposium-asset-id'
|
|
47
|
+
onClick={(e) => copyToClipboard(e)}>
|
|
48
|
+
{id}
|
|
49
|
+
</div>
|
|
50
|
+
);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const mapDispatchToProps = (dispatch): any => {
|
|
54
|
+
return bindActionCreators({ updateFilters }, dispatch);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const mapStateToProps = (state): any => {
|
|
58
|
+
return { assetFilters: state.assetFilters };
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const AssetsTableAssetIdCellMemoized = connect(
|
|
62
|
+
mapStateToProps,
|
|
63
|
+
mapDispatchToProps
|
|
64
|
+
)(React.memo(AssetsTableAssetIdCell));
|
|
65
|
+
export default AssetsTableAssetIdCellMemoized;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import TextField from '../text-field/TextField';
|
|
3
|
+
import { updateFilters } from '../../redux/actions/asset-filters';
|
|
4
|
+
import { connect } from 'react-redux';
|
|
5
|
+
import { bindActionCreators } from 'redux';
|
|
6
|
+
|
|
7
|
+
interface IAssetsTableAssetIdFilterProps {
|
|
8
|
+
assetFilters: any;
|
|
9
|
+
updateFilters: (filters: any) => any;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
class AssetsTableAssetIdFilter extends React.PureComponent<IAssetsTableAssetIdFilterProps> {
|
|
13
|
+
public render = (): JSX.Element => {
|
|
14
|
+
const { assetFilters } = this.props;
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<TextField
|
|
18
|
+
className='asset-id'
|
|
19
|
+
submittable
|
|
20
|
+
submittableType='search'
|
|
21
|
+
value={assetFilters.id}
|
|
22
|
+
doSubmit={(n) => this.props.updateFilters({ id: n })}
|
|
23
|
+
/>
|
|
24
|
+
);
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const mapDispatchToProps = (dispatch): any => {
|
|
29
|
+
return bindActionCreators({ updateFilters }, dispatch);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const mapStateToProps = (state): any => {
|
|
33
|
+
return { assetFilters: state.assetFilters };
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const AssetsTableAssetIdFilterMemoized = connect(
|
|
37
|
+
mapStateToProps,
|
|
38
|
+
mapDispatchToProps
|
|
39
|
+
)(React.memo(AssetsTableAssetIdFilter));
|
|
40
|
+
export default AssetsTableAssetIdFilterMemoized;
|
|
@@ -6,8 +6,18 @@ interface IAssetsTableGlobalCell {
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
const AssetsTableGlobalCell: React.FC<IAssetsTableGlobalCell> = (p: IAssetsTableGlobalCell) => {
|
|
9
|
+
const {
|
|
10
|
+
cell: {
|
|
11
|
+
row: {
|
|
12
|
+
original: { story_id }
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
} = p;
|
|
16
|
+
|
|
9
17
|
return (
|
|
10
|
-
<div className='asset-global-cell'>
|
|
18
|
+
<div className='asset-global-cell'>
|
|
19
|
+
{story_id || story_id === undefined ? null : ICON_GLOBE}
|
|
20
|
+
</div>
|
|
11
21
|
);
|
|
12
22
|
};
|
|
13
23
|
|
|
@@ -11,6 +11,7 @@ interface ICardProps {
|
|
|
11
11
|
onOpen?: (e: any) => any;
|
|
12
12
|
onClose?: (e: any) => any;
|
|
13
13
|
onToggle?: (toggle: boolean) => any;
|
|
14
|
+
buttons?: any[];
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
interface ICardState {
|
|
@@ -97,9 +98,7 @@ class Card extends React.PureComponent<ICardProps, ICardState> {
|
|
|
97
98
|
|
|
98
99
|
return (
|
|
99
100
|
<div className={`card ${openClass} ${collapsableClass} ${styleClass}`}>
|
|
100
|
-
<div
|
|
101
|
-
className='card-header'
|
|
102
|
-
onClick={this.evtHandlers.toggleOpen}>
|
|
101
|
+
<div className='card-header'>
|
|
103
102
|
{this.renderTitle(styleClass)}
|
|
104
103
|
{this.renderButtons()}
|
|
105
104
|
</div>
|
|
@@ -109,21 +108,36 @@ class Card extends React.PureComponent<ICardProps, ICardState> {
|
|
|
109
108
|
}
|
|
110
109
|
|
|
111
110
|
public renderButtons() {
|
|
112
|
-
const { collapsable } = this.props;
|
|
111
|
+
const { collapsable, buttons } = this.props;
|
|
113
112
|
const { open } = this.state;
|
|
114
113
|
const buttonIcon = open ? ICON_CARET_UP : ICON_CARET_DOWN;
|
|
115
114
|
|
|
115
|
+
let buttonArray: JSX.Element[];
|
|
116
|
+
|
|
117
|
+
const toggleBtn = (
|
|
118
|
+
<Button
|
|
119
|
+
key='toggleOpen'
|
|
120
|
+
style='subtle'
|
|
121
|
+
onClick={(e) => this.toggleOpen(e)}>
|
|
122
|
+
{buttonIcon}
|
|
123
|
+
</Button>
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
if (buttons && buttons.length > 0) {
|
|
127
|
+
buttonArray = buttons.map((button) => {
|
|
128
|
+
return button;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
|
|
116
132
|
if (collapsable) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
{buttonIcon}
|
|
123
|
-
</Button>
|
|
124
|
-
</div>
|
|
125
|
-
);
|
|
133
|
+
if (buttonArray && buttonArray.length > 0) {
|
|
134
|
+
buttonArray.push(toggleBtn);
|
|
135
|
+
} else {
|
|
136
|
+
buttonArray = [toggleBtn];
|
|
137
|
+
}
|
|
126
138
|
}
|
|
139
|
+
|
|
140
|
+
return <div className='header-buttons'>{buttonArray}</div>;
|
|
127
141
|
}
|
|
128
142
|
}
|
|
129
143
|
|
|
@@ -26,102 +26,149 @@ const Paginator: React.FC<any> = ({
|
|
|
26
26
|
setPageSize,
|
|
27
27
|
itemsPerPage,
|
|
28
28
|
onItemsPerPage
|
|
29
|
-
}) =>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
29
|
+
}) => {
|
|
30
|
+
const [getPageIndex, setPageIndex] = React.useState<number>(pageIndex);
|
|
31
|
+
const [getItemsPerPage, setItemsPerPage] = React.useState<number>(itemsPerPage);
|
|
32
|
+
|
|
33
|
+
React.useEffect(() => {
|
|
34
|
+
if (pageIndex !== getPageIndex) {
|
|
35
|
+
setPageIndex(pageIndex);
|
|
36
|
+
}
|
|
37
|
+
}, [pageIndex]);
|
|
38
|
+
|
|
39
|
+
const onItemsPerPageBlur = () => {
|
|
40
|
+
clearTimeout(textInputTimeout);
|
|
41
|
+
onItemsPerPage(getItemsPerPage);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const onGoToPageBlur = () => {
|
|
45
|
+
clearTimeout(textInputTimeout);
|
|
46
|
+
gotoPage(getPageIndex, pageSize);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const onItemsPerPageKeyDown = (e) => {
|
|
50
|
+
if (e.key === 'Enter') {
|
|
51
|
+
clearTimeout(textInputTimeout);
|
|
52
|
+
onItemsPerPage(getItemsPerPage);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const onGoToPageKeyDown = (e) => {
|
|
57
|
+
if (e.key === 'Enter') {
|
|
58
|
+
clearTimeout(textInputTimeout);
|
|
59
|
+
gotoPage(getPageIndex, pageSize);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
return (
|
|
64
|
+
<section className='ip-table-pagination'>
|
|
65
65
|
<span>
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
<Button
|
|
67
|
+
style='subtle'
|
|
68
|
+
size='small'
|
|
69
|
+
tooltip='Go to first page'
|
|
70
|
+
disabled={!canPreviousPage}
|
|
71
|
+
onClick={() => gotoPage(1, pageSize)}>
|
|
72
|
+
{ICON_ANGLE_DOUBLE_LEFT}
|
|
73
|
+
</Button>
|
|
74
|
+
<Button
|
|
75
|
+
style='subtle'
|
|
76
|
+
size='small'
|
|
77
|
+
tooltip='Go to previous page'
|
|
78
|
+
disabled={!canPreviousPage}
|
|
79
|
+
onClick={() => previousPage()}>
|
|
80
|
+
{ICON_ANGLE_LEFT}
|
|
81
|
+
</Button>
|
|
82
|
+
<Button
|
|
83
|
+
style='subtle'
|
|
84
|
+
size='small'
|
|
85
|
+
tooltip='Go to next page'
|
|
86
|
+
disabled={!canNextPage}
|
|
87
|
+
onClick={() => nextPage()}>
|
|
88
|
+
{ICON_ANGLE_RIGHT}
|
|
89
|
+
</Button>
|
|
90
|
+
<Button
|
|
91
|
+
style='subtle'
|
|
92
|
+
size='small'
|
|
93
|
+
tooltip='Go to last page'
|
|
94
|
+
disabled={!canNextPage}
|
|
95
|
+
onClick={() => gotoPage(pageCount, pageSize)}>
|
|
96
|
+
{ICON_ANGLE_DOUBLE_RIGHT}
|
|
97
|
+
</Button>
|
|
70
98
|
|
|
99
|
+
<span>
|
|
100
|
+
{copy.table.page}
|
|
101
|
+
<strong>
|
|
102
|
+
{getPageIndex} of {pageCount}
|
|
103
|
+
</strong>
|
|
104
|
+
|
|
105
|
+
</span>
|
|
106
|
+
<span>
|
|
107
|
+
{copy.table.goToPage}
|
|
108
|
+
<input
|
|
109
|
+
className='paginator-input'
|
|
110
|
+
type='number'
|
|
111
|
+
placeholder={getPageIndex.toString()}
|
|
112
|
+
onChange={(e) => {
|
|
113
|
+
const input = e.target.value;
|
|
114
|
+
const inputNum = Number(input);
|
|
115
|
+
let next: number;
|
|
116
|
+
|
|
117
|
+
clearTimeout(textInputTimeout);
|
|
118
|
+
|
|
119
|
+
if (!input || inputNum < 1 || inputNum > pageCount) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (inputNum >= 1 && inputNum <= pageCount) {
|
|
124
|
+
next = inputNum;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
textInputTimeout = window.setTimeout(
|
|
128
|
+
() => gotoPage(next, pageSize),
|
|
129
|
+
1000
|
|
130
|
+
);
|
|
131
|
+
}}
|
|
132
|
+
onBlur={() => onGoToPageBlur()}
|
|
133
|
+
onKeyDown={(e) => onGoToPageKeyDown(e)}
|
|
134
|
+
/>
|
|
135
|
+
</span>
|
|
136
|
+
|
|
137
|
+
<span>
|
|
138
|
+
{copy.table.itemsPerPage}
|
|
139
|
+
<input
|
|
140
|
+
className='paginator-input'
|
|
141
|
+
type='number'
|
|
142
|
+
placeholder={getItemsPerPage.toString()}
|
|
143
|
+
min={1}
|
|
144
|
+
onChange={(e) => {
|
|
145
|
+
const input = e.target.value;
|
|
146
|
+
const inputNum = Number(input);
|
|
147
|
+
|
|
148
|
+
clearTimeout(textInputTimeout);
|
|
149
|
+
|
|
150
|
+
if (!input || inputNum < 1) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
setItemsPerPage(inputNum);
|
|
155
|
+
|
|
156
|
+
textInputTimeout = window.setTimeout(
|
|
157
|
+
() => onItemsPerPage(inputNum),
|
|
158
|
+
1000
|
|
159
|
+
);
|
|
160
|
+
}}
|
|
161
|
+
onBlur={() => onItemsPerPageBlur()}
|
|
162
|
+
onKeyDown={(e) => onItemsPerPageKeyDown(e)}
|
|
163
|
+
/>
|
|
164
|
+
</span>
|
|
71
165
|
</span>
|
|
72
|
-
<span>
|
|
73
|
-
{copy.table.goToPage}
|
|
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
|
-
|
|
98
|
-
<span>
|
|
99
|
-
{copy.table.itemsPerPage}
|
|
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
166
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
);
|
|
167
|
+
<span className='total-assets'>
|
|
168
|
+
{copy.table.total} <strong>{totalItems || 0}</strong>
|
|
169
|
+
</span>
|
|
170
|
+
</section>
|
|
171
|
+
);
|
|
172
|
+
};
|
|
126
173
|
|
|
127
174
|
export default Paginator;
|
|
@@ -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.
|
|
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.
|
|
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
|
|
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,7 @@ 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 } from './components/confirm-modal/ConfirmModal';
|
|
163
|
+
import AssetsTableAssetIdCell from './components/assets/AssetsTableAssetIdCell';
|
|
162
164
|
|
|
163
165
|
export {
|
|
164
166
|
AppWrapper,
|
|
@@ -217,6 +219,8 @@ export {
|
|
|
217
219
|
AssetsTableGlobalCell,
|
|
218
220
|
AssetsTableStatusCell,
|
|
219
221
|
AssetsTableNameFilter,
|
|
222
|
+
AssetsTableAssetIdFilter,
|
|
223
|
+
AssetsTableAssetIdCell,
|
|
220
224
|
AssetsTableNameCell,
|
|
221
225
|
AssetsTableDurationCell,
|
|
222
226
|
AssetsTableRateCell,
|