@singularsystems/neo-react 1.0.0-alpha.2 → 1.0.0-beta.0
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/CHANGELOG.md +98 -0
- package/README.md +4 -0
- package/dist/Modules/NeoReactModule.d.ts +4 -4
- package/dist/Modules/NeoReactModule.js +28 -26
- package/dist/Modules/ReactSetup.d.ts +2 -2
- package/dist/Modules/ReactSetup.js +17 -17
- package/dist/Modules/Types.d.ts +63 -61
- package/dist/Modules/Types.js +13 -12
- package/dist/React/AutoRunner.d.ts +5 -5
- package/dist/React/AutoRunner.js +94 -92
- package/dist/React/DataView.d.ts +6 -6
- package/dist/React/DataView.js +11 -11
- package/dist/React/ReactModelCreator.d.ts +11 -11
- package/dist/React/ReactModelCreator.js +165 -162
- package/dist/ReactComponents/Button.d.ts +24 -23
- package/dist/ReactComponents/Button.js +131 -123
- package/dist/ReactComponents/Card.d.ts +24 -23
- package/dist/ReactComponents/Card.js +56 -54
- package/dist/ReactComponents/Collapsable.d.ts +23 -23
- package/dist/ReactComponents/Collapsable.js +38 -38
- package/dist/ReactComponents/CollapsableBase.d.ts +13 -13
- package/dist/ReactComponents/CollapsableBase.js +42 -42
- package/dist/ReactComponents/ColorPicker.d.ts +26 -26
- package/dist/ReactComponents/ColorPicker.js +67 -67
- package/dist/ReactComponents/ComponentBase.d.ts +17 -17
- package/dist/ReactComponents/ComponentBase.js +33 -33
- package/dist/ReactComponents/ContextMenu/ContextMenu.d.ts +25 -24
- package/dist/ReactComponents/ContextMenu/ContextMenu.js +91 -88
- package/dist/ReactComponents/ContextMenu/ContextMenuContainer.d.ts +14 -14
- package/dist/ReactComponents/ContextMenu/ContextMenuContainer.js +48 -48
- package/dist/ReactComponents/ContextMenu/ContextMenuState.d.ts +8 -7
- package/dist/ReactComponents/ContextMenu/ContextMenuState.js +23 -23
- package/dist/ReactComponents/DatePicker.d.ts +19 -19
- package/dist/ReactComponents/DatePicker.js +53 -53
- package/dist/ReactComponents/DropDown/AutoCompleteDropDown.d.ts +93 -83
- package/dist/ReactComponents/DropDown/AutoCompleteDropDown.js +222 -188
- package/dist/ReactComponents/DropDown/DropDown.d.ts +44 -44
- package/dist/ReactComponents/DropDown/DropDown.js +138 -134
- package/dist/ReactComponents/DropDown/DropDownBase.d.ts +16 -15
- package/dist/ReactComponents/DropDown/DropDownBase.js +86 -108
- package/dist/ReactComponents/DropDown/LookupHelper.d.ts +13 -0
- package/dist/ReactComponents/DropDown/LookupHelper.js +45 -0
- package/dist/ReactComponents/ErrorHandler.d.ts +9 -8
- package/dist/ReactComponents/ErrorHandler.js +92 -91
- package/dist/ReactComponents/FileManager/FileBasicInput.d.ts +20 -20
- package/dist/ReactComponents/FileManager/FileBasicInput.js +70 -70
- package/dist/ReactComponents/FileManager/FileContext.d.ts +16 -16
- package/dist/ReactComponents/FileManager/FileContext.js +24 -24
- package/dist/ReactComponents/FileManager/FileDropArea.d.ts +19 -18
- package/dist/ReactComponents/FileManager/FileDropArea.js +66 -64
- package/dist/ReactComponents/FileManager/FileInput.d.ts +44 -42
- package/dist/ReactComponents/FileManager/FileInput.js +191 -189
- package/dist/ReactComponents/FileManager/FileUploadButton.d.ts +17 -17
- package/dist/ReactComponents/FileManager/FileUploadButton.js +49 -49
- package/dist/ReactComponents/FileManager/FileUploadProgress.d.ts +14 -14
- package/dist/ReactComponents/FileManager/FileUploadProgress.js +35 -35
- package/dist/ReactComponents/Form.d.ts +19 -18
- package/dist/ReactComponents/Form.js +90 -90
- package/dist/ReactComponents/FormContext.d.ts +33 -31
- package/dist/ReactComponents/FormContext.js +39 -40
- package/dist/ReactComponents/FormGroup/FormGroup.d.ts +37 -37
- package/dist/ReactComponents/FormGroup/FormGroup.js +83 -84
- package/dist/ReactComponents/FormGroup/FormGroupFloating.d.ts +19 -19
- package/dist/ReactComponents/FormGroup/FormGroupFloating.js +97 -97
- package/dist/ReactComponents/FormGroup/FormGroupInline.d.ts +11 -11
- package/dist/ReactComponents/FormGroup/FormGroupInline.js +43 -43
- package/dist/ReactComponents/Grid/ButtonColumn.d.ts +47 -47
- package/dist/ReactComponents/Grid/ButtonColumn.js +81 -82
- package/dist/ReactComponents/Grid/Column.d.ts +47 -47
- package/dist/ReactComponents/Grid/Column.js +205 -205
- package/dist/ReactComponents/Grid/ColumnHelper.d.ts +12 -12
- package/dist/ReactComponents/Grid/ColumnHelper.js +19 -19
- package/dist/ReactComponents/Grid/Grid.d.ts +87 -90
- package/dist/ReactComponents/Grid/Grid.js +203 -203
- package/dist/ReactComponents/Grid/Row.d.ts +81 -81
- package/dist/ReactComponents/Grid/Row.js +200 -201
- package/dist/ReactComponents/Grid/_Exports.d.ts +5 -5
- package/dist/ReactComponents/Grid/_Exports.js +5 -5
- package/dist/ReactComponents/GridLayout.d.ts +20 -20
- package/dist/ReactComponents/GridLayout.js +38 -38
- package/dist/ReactComponents/Icons/FontAwesomeIconFactory.d.ts +23 -0
- package/dist/ReactComponents/Icons/FontAwesomeIconFactory.js +43 -0
- package/dist/ReactComponents/Icons/IIconFactory.d.ts +21 -0
- package/dist/ReactComponents/Icons/IIconFactory.js +1 -0
- package/dist/ReactComponents/Icons/IconFactory.d.ts +9 -0
- package/dist/ReactComponents/Icons/IconFactory.js +45 -0
- package/dist/ReactComponents/Icons/index.d.ts +3 -0
- package/dist/ReactComponents/Icons/index.js +2 -0
- package/dist/ReactComponents/Input.d.ts +45 -45
- package/dist/ReactComponents/Input.js +153 -152
- package/dist/ReactComponents/InputHelpers.d.ts +6 -5
- package/dist/ReactComponents/InputHelpers.js +29 -33
- package/dist/ReactComponents/Link.d.ts +13 -13
- package/dist/ReactComponents/Link.js +28 -28
- package/dist/ReactComponents/Loader.d.ts +18 -18
- package/dist/ReactComponents/Loader.js +57 -57
- package/dist/ReactComponents/Misc.d.ts +15 -15
- package/dist/ReactComponents/Misc.js +28 -28
- package/dist/ReactComponents/Modal/Modal.d.ts +11 -11
- package/dist/ReactComponents/Modal/Modal.js +129 -129
- package/dist/ReactComponents/Modal/ModalContainer.d.ts +17 -17
- package/dist/ReactComponents/Modal/ModalContainer.js +37 -37
- package/dist/ReactComponents/Modal/ModalPortal.d.ts +16 -15
- package/dist/ReactComponents/Modal/ModalPortal.js +27 -27
- package/dist/ReactComponents/Notifications/Alert.d.ts +7 -6
- package/dist/ReactComponents/Notifications/Alert.js +38 -35
- package/dist/ReactComponents/Notifications/Toast.d.ts +9 -8
- package/dist/ReactComponents/Notifications/Toast.js +47 -45
- package/dist/ReactComponents/Notifications/ToastContainer.d.ts +8 -8
- package/dist/ReactComponents/Notifications/ToastContainer.js +18 -18
- package/dist/ReactComponents/NumberInput.d.ts +57 -50
- package/dist/ReactComponents/NumberInput.js +260 -246
- package/dist/ReactComponents/Paging/BasicPagerControls.d.ts +26 -25
- package/dist/ReactComponents/Paging/BasicPagerControls.js +57 -55
- package/dist/ReactComponents/Paging/PageSizeControl.d.ts +11 -11
- package/dist/ReactComponents/Paging/PageSizeControl.js +21 -21
- package/dist/ReactComponents/Paging/Pager.d.ts +24 -24
- package/dist/ReactComponents/Paging/Pager.js +41 -41
- package/dist/ReactComponents/ProgressBar.d.ts +19 -19
- package/dist/ReactComponents/ProgressBar.js +52 -52
- package/dist/ReactComponents/PropTypes.d.ts +161 -161
- package/dist/ReactComponents/PropTypes.js +253 -236
- package/dist/ReactComponents/RadioList.d.ts +29 -29
- package/dist/ReactComponents/RadioList.js +59 -77
- package/dist/ReactComponents/Slider.d.ts +28 -28
- package/dist/ReactComponents/Slider.js +76 -76
- package/dist/ReactComponents/StateObserver.d.ts +15 -15
- package/dist/ReactComponents/StateObserver.js +35 -35
- package/dist/ReactComponents/Tabs/Tab.d.ts +42 -41
- package/dist/ReactComponents/Tabs/Tab.js +71 -72
- package/dist/ReactComponents/Tabs/TabContainer.d.ts +44 -44
- package/dist/ReactComponents/Tabs/TabContainer.js +98 -98
- package/dist/ReactComponents/Tabs/TabManager.d.ts +62 -62
- package/dist/ReactComponents/Tabs/TabManager.js +154 -154
- package/dist/ReactComponents/Tooltip.d.ts +20 -19
- package/dist/ReactComponents/Tooltip.js +51 -51
- package/dist/ReactComponents/TooltipHelper.d.ts +8 -8
- package/dist/ReactComponents/TooltipHelper.js +84 -84
- package/dist/ReactComponents/TooltipProvider.d.ts +30 -30
- package/dist/ReactComponents/TooltipProvider.js +111 -111
- package/dist/ReactComponents/ValidationSummary.d.ts +23 -22
- package/dist/ReactComponents/ValidationSummary.js +46 -43
- package/dist/ReactComponents/_Exports.d.ts +41 -41
- package/dist/ReactComponents/_Exports.js +41 -41
- package/dist/ReactComponents/_Managers.d.ts +4 -4
- package/dist/ReactComponents/_Managers.js +4 -4
- package/dist/Routing/BreadCrumbItem.d.ts +14 -14
- package/dist/Routing/BreadCrumbItem.js +12 -12
- package/dist/Routing/IRouteChangedProps.d.ts +31 -31
- package/dist/Routing/IRouteChangedProps.js +1 -1
- package/dist/Routing/IRouteParameter.d.ts +22 -22
- package/dist/Routing/IRouteParameter.js +9 -9
- package/dist/Routing/MenuRoute.d.ts +25 -24
- package/dist/Routing/MenuRoute.js +24 -24
- package/dist/Routing/NavigationHelper.d.ts +41 -40
- package/dist/Routing/NavigationHelper.js +61 -61
- package/dist/Routing/PageLeaveHandler.d.ts +13 -13
- package/dist/Routing/PageLeaveHandler.js +74 -74
- package/dist/Routing/RouteProvider.d.ts +31 -31
- package/dist/Routing/RouteProvider.js +92 -92
- package/dist/Routing/RouteView.d.ts +50 -50
- package/dist/Routing/RouteView.js +143 -144
- package/dist/Routing/RoutingState.d.ts +18 -15
- package/dist/Routing/RoutingState.js +45 -40
- package/dist/Routing/ViewParameter.d.ts +80 -58
- package/dist/Routing/ViewParameter.js +116 -95
- package/dist/Routing/ViewParameterList.d.ts +53 -53
- package/dist/Routing/ViewParameterList.js +163 -145
- package/dist/Routing/index.d.ts +9 -9
- package/dist/Routing/index.js +6 -6
- package/dist/Services/DisposeHelper.d.ts +15 -15
- package/dist/Services/DisposeHelper.js +40 -41
- package/dist/Services/IDisposeHelper.d.ts +12 -12
- package/dist/Services/IDisposeHelper.js +1 -1
- package/dist/Views/EmptyViewModel.d.ts +5 -5
- package/dist/Views/EmptyViewModel.js +14 -14
- package/dist/Views/IViewModel.d.ts +16 -16
- package/dist/Views/IViewModel.js +1 -1
- package/dist/Views/PersistentViewBase.d.ts +10 -10
- package/dist/Views/PersistentViewBase.js +21 -21
- package/dist/Views/ViewBase.d.ts +70 -71
- package/dist/Views/ViewBase.js +166 -153
- package/dist/Views/ViewComponentBase.d.ts +19 -13
- package/dist/Views/ViewComponentBase.js +24 -21
- package/dist/Views/ViewModelBase.d.ts +57 -56
- package/dist/Views/ViewModelBase.js +122 -118
- package/dist/Views/ViewState.d.ts +13 -13
- package/dist/Views/ViewState.js +9 -9
- package/dist/Views/index.d.ts +5 -5
- package/dist/Views/index.js +5 -5
- package/dist/index.d.ts +11 -10
- package/dist/index.js +10 -9
- package/package.json +26 -26
- package/styles/DatePicker.scss +2 -2
- package/styles/Forms.scss +5 -0
- package/styles/Validation.scss +0 -9
|
@@ -1,42 +1,44 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
private
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
private
|
|
37
|
-
/** Renders
|
|
38
|
-
private
|
|
39
|
-
/** Renders where a file has been selected. */
|
|
40
|
-
private
|
|
41
|
-
|
|
42
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Components } from '@singularsystems/neo-core';
|
|
3
|
+
import { FileContext, IFileComponentProps } from './FileContext';
|
|
4
|
+
import { IButtonOptions } from '@singularsystems/neo-core/dist/Components/ButtonOptions';
|
|
5
|
+
import ComponentBase from '../ComponentBase';
|
|
6
|
+
import { AxiosPromise } from 'axios';
|
|
7
|
+
export interface IFileEditorProps extends IFileComponentProps, Partial<Components.IBoundFileManagerOptions> {
|
|
8
|
+
/** Browse button options */
|
|
9
|
+
browseButton?: IButtonOptions;
|
|
10
|
+
/** Set this if you want to allow the user to choose a new file. */
|
|
11
|
+
changeFileText?: string;
|
|
12
|
+
/** Text to show in the download link. Use {0} as a placeholder for fileName */
|
|
13
|
+
downloadLinkText?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Path of API endpoint which will handle downloading a file. Only required if downloadLinkText is specified.
|
|
16
|
+
*/
|
|
17
|
+
downloadEndpoint?: string | ((fileID: any) => string);
|
|
18
|
+
/**
|
|
19
|
+
* Path of API endpoint which will handle downloading a file. Only required if downloadLinkText is specified.
|
|
20
|
+
*/
|
|
21
|
+
downloadEndpointAsync?: ((fileId: any) => Promise<string>) | ((fileId: any) => AxiosPromise<string>);
|
|
22
|
+
isReadOnly?: boolean;
|
|
23
|
+
/** Placeholder text for drag here... */
|
|
24
|
+
placeholder?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The file manager component manages uploading, and binding of files to a model.
|
|
28
|
+
*/
|
|
29
|
+
export default class FileInput extends ComponentBase<IFileEditorProps> {
|
|
30
|
+
static contextType: React.Context<import("./FileContext").IFileContextProps>;
|
|
31
|
+
context: React.ContextType<typeof FileContext>;
|
|
32
|
+
private fileManager;
|
|
33
|
+
private gettingDownloadUrl;
|
|
34
|
+
constructor(props: IFileEditorProps);
|
|
35
|
+
render(): JSX.Element;
|
|
36
|
+
private getFileDisplayComponent;
|
|
37
|
+
/** Renders when the file is busy uploading. */
|
|
38
|
+
private renderBusy;
|
|
39
|
+
/** Renders where a file has not yet been selected. */
|
|
40
|
+
private renderEmpty;
|
|
41
|
+
/** Renders where a file has been selected. */
|
|
42
|
+
private renderSelected;
|
|
43
|
+
private onDownloadLinkClicked;
|
|
44
|
+
}
|
|
@@ -1,189 +1,191 @@
|
|
|
1
|
-
import { __assign, __awaiter, __decorate, __extends, __generator, __metadata, __spreadArray } from "tslib";
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { Components, Utils, Misc, Validation } from '@singularsystems/neo-core';
|
|
4
|
-
import { observer } from 'mobx-react';
|
|
5
|
-
import FileUploadButton from './FileUploadButton';
|
|
6
|
-
import { FileContext } from './FileContext';
|
|
7
|
-
import { ProgressBar, Button, FileDropArea } from '../_Exports';
|
|
8
|
-
import ComponentBase from '../ComponentBase';
|
|
9
|
-
import { BindPropsHelper } from '../PropTypes';
|
|
10
|
-
import { observable } from 'mobx';
|
|
11
|
-
/**
|
|
12
|
-
* The file manager component manages uploading, and binding of files to a model.
|
|
13
|
-
*/
|
|
14
|
-
var FileInput = /** @class */ (function (_super) {
|
|
15
|
-
__extends(FileInput, _super);
|
|
16
|
-
function FileInput() {
|
|
17
|
-
var _this = _super
|
|
18
|
-
_this.gettingDownloadUrl = false;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
var
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
var
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
var
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
var
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
//
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
var
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
buttonOptions
|
|
140
|
-
buttonOptions.menuItems
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
FileInput
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
1
|
+
import { __assign, __awaiter, __decorate, __extends, __generator, __metadata, __spreadArray } from "tslib";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Components, Utils, Misc, Validation } from '@singularsystems/neo-core';
|
|
4
|
+
import { observer } from 'mobx-react';
|
|
5
|
+
import FileUploadButton from './FileUploadButton';
|
|
6
|
+
import { FileContext } from './FileContext';
|
|
7
|
+
import { ProgressBar, Button, FileDropArea } from '../_Exports';
|
|
8
|
+
import ComponentBase from '../ComponentBase';
|
|
9
|
+
import { BindPropsHelper } from '../PropTypes';
|
|
10
|
+
import { makeObservable, observable } from 'mobx';
|
|
11
|
+
/**
|
|
12
|
+
* The file manager component manages uploading, and binding of files to a model.
|
|
13
|
+
*/
|
|
14
|
+
var FileInput = /** @class */ (function (_super) {
|
|
15
|
+
__extends(FileInput, _super);
|
|
16
|
+
function FileInput(props) {
|
|
17
|
+
var _this = _super.call(this, props) || this;
|
|
18
|
+
_this.gettingDownloadUrl = false;
|
|
19
|
+
makeObservable(_this);
|
|
20
|
+
return _this;
|
|
21
|
+
}
|
|
22
|
+
FileInput.prototype.render = function () {
|
|
23
|
+
var splitProps = BindPropsHelper.normaliseEditorProps(this, this.props);
|
|
24
|
+
var fileProps;
|
|
25
|
+
if (splitProps.fileProps) {
|
|
26
|
+
// Part of a form group.
|
|
27
|
+
fileProps = this.props.fileProps;
|
|
28
|
+
if (this.props.bind) {
|
|
29
|
+
fileProps.bind = this.props.bind;
|
|
30
|
+
}
|
|
31
|
+
;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
fileProps = this.props;
|
|
35
|
+
}
|
|
36
|
+
if (!this.fileManager) {
|
|
37
|
+
if (this.context.fileManager) {
|
|
38
|
+
this.fileManager = this.context.fileManager;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
this.fileManager = new Components.BoundFileManager(fileProps.uploadEndpoint, fileProps);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.fileManager.options = fileProps;
|
|
46
|
+
}
|
|
47
|
+
if (!this.fileManager.uploadEndpoint) {
|
|
48
|
+
throw Error("File input requires an uploadEndpoint.");
|
|
49
|
+
}
|
|
50
|
+
if (!this.fileManager.options.bind) {
|
|
51
|
+
throw Error("File input requires a bind property.");
|
|
52
|
+
}
|
|
53
|
+
var displayInfo = this.fileManager.options.bind.validator.getDisplayState(Validation.DisplayMode.Always);
|
|
54
|
+
var domProps = { className: "form-control" };
|
|
55
|
+
displayInfo.applyToDom(domProps, !splitProps.inGroup);
|
|
56
|
+
if (this.fileManager.isUploading || this.gettingDownloadUrl) {
|
|
57
|
+
return this.renderBusy(fileProps);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
if (this.fileManager.options.bind.value) {
|
|
61
|
+
return this.renderSelected(fileProps, splitProps.editor, domProps);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
return this.renderEmpty(fileProps, splitProps.editor, domProps);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
FileInput.prototype.getFileDisplayComponent = function (props, domProps) {
|
|
69
|
+
var _this = this;
|
|
70
|
+
var options = this.fileManager.options;
|
|
71
|
+
if (props.downloadEndpoint || props.downloadEndpointAsync) {
|
|
72
|
+
var downloadLinkText = void 0;
|
|
73
|
+
var fileName = "file";
|
|
74
|
+
if (options.fileDescriptorProperty) {
|
|
75
|
+
var fileDesciptor = options.fileDescriptorProperty.value;
|
|
76
|
+
if (fileDesciptor) {
|
|
77
|
+
if (typeof fileDesciptor === "string") {
|
|
78
|
+
fileName = fileDesciptor;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
fileName = fileDesciptor.fileName;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (props.downloadLinkText) {
|
|
86
|
+
downloadLinkText = props.downloadLinkText.format(fileName);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
downloadLinkText = fileName;
|
|
90
|
+
}
|
|
91
|
+
if (props.downloadEndpointAsync) {
|
|
92
|
+
return React.createElement("a", __assign({}, domProps, { href: "/", onClick: function (e) { return _this.onDownloadLinkClicked(e, props); } }), downloadLinkText);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
var downloadPath = void 0;
|
|
96
|
+
if (typeof props.downloadEndpoint === "string") {
|
|
97
|
+
downloadPath = props.downloadEndpoint;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
downloadPath = props.downloadEndpoint(options.bind.value);
|
|
101
|
+
}
|
|
102
|
+
return React.createElement("a", __assign({}, domProps, { href: downloadPath }), downloadLinkText);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
return React.createElement("span", __assign({}, domProps), "File selected");
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
/** Renders when the file is busy uploading. */
|
|
110
|
+
FileInput.prototype.renderBusy = function (props) {
|
|
111
|
+
return this.gettingDownloadUrl ?
|
|
112
|
+
React.createElement("div", { className: "form-control form-control-loading" },
|
|
113
|
+
React.createElement("div", { className: "spinner-border" })) :
|
|
114
|
+
React.createElement(ProgressBar, { variant: "dark", type: "animated", progress: this.fileManager.uploadPercent });
|
|
115
|
+
};
|
|
116
|
+
/** Renders where a file has not yet been selected. */
|
|
117
|
+
FileInput.prototype.renderEmpty = function (props, editorProps, domProps) {
|
|
118
|
+
var buttonOptions = Utils.populatePartialWithDefaults(Utils.populatePartialWithDefaults(__assign({}, props.browseButton), Misc.Settings.fileManager.fileEditorButton), { text: "Select file", variant: "dark" });
|
|
119
|
+
if (buttonOptions.menuItems) {
|
|
120
|
+
// If the user supplied a custom buton menu, split the button, and remove the start seperator, since this
|
|
121
|
+
// button has no menu items of its own.
|
|
122
|
+
buttonOptions.splitMenu = true;
|
|
123
|
+
if (buttonOptions.menuItems[0].isDivider) {
|
|
124
|
+
buttonOptions.menuItems = buttonOptions.menuItems.slice(1);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
domProps.className += " file-placeholder";
|
|
128
|
+
return (React.createElement("div", { className: "input-group file-editor" },
|
|
129
|
+
React.createElement("span", __assign({}, domProps),
|
|
130
|
+
React.createElement(FileDropArea, { fileManager: this.fileManager }, editorProps.placeholder || "Drag a file here")),
|
|
131
|
+
React.createElement("div", { className: "input-group-append" },
|
|
132
|
+
React.createElement(FileUploadButton, __assign({}, buttonOptions, { fileManager: this.fileManager })))));
|
|
133
|
+
};
|
|
134
|
+
/** Renders where a file has been selected. */
|
|
135
|
+
FileInput.prototype.renderSelected = function (props, editorProps, domProps) {
|
|
136
|
+
var _this = this;
|
|
137
|
+
var append = null;
|
|
138
|
+
if (editorProps.isReadOnly !== true) {
|
|
139
|
+
var buttonOptions = Utils.populatePartialWithDefaults(Utils.populatePartialWithDefaults(__assign({}, props.browseButton), Misc.Settings.fileManager.fileEditorButton), { text: "Options", variant: "dark" });
|
|
140
|
+
buttonOptions.menuItems = buttonOptions.menuItems ? __spreadArray([], buttonOptions.menuItems, true) : [];
|
|
141
|
+
buttonOptions.menuItems.splice(0, 0, { text: props.changeFileText || "Change file", onClick: function () { return _this.fileManager.showFileDialog(); } }, { text: "Unlink file", onClick: function () { return _this.fileManager.clearFile(); } });
|
|
142
|
+
append = React.createElement("div", { className: "input-group-append" },
|
|
143
|
+
React.createElement(Button, __assign({}, buttonOptions)));
|
|
144
|
+
}
|
|
145
|
+
return (React.createElement("div", { className: "input-group file-editor" },
|
|
146
|
+
this.getFileDisplayComponent(props, domProps),
|
|
147
|
+
append));
|
|
148
|
+
};
|
|
149
|
+
FileInput.prototype.onDownloadLinkClicked = function (e, props) {
|
|
150
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
151
|
+
var result, downloadPath;
|
|
152
|
+
return __generator(this, function (_a) {
|
|
153
|
+
switch (_a.label) {
|
|
154
|
+
case 0:
|
|
155
|
+
e.preventDefault();
|
|
156
|
+
_a.label = 1;
|
|
157
|
+
case 1:
|
|
158
|
+
_a.trys.push([1, , 3, 4]);
|
|
159
|
+
this.gettingDownloadUrl = true;
|
|
160
|
+
return [4 /*yield*/, props.downloadEndpointAsync(this.fileManager.options.bind.value)];
|
|
161
|
+
case 2:
|
|
162
|
+
result = _a.sent();
|
|
163
|
+
downloadPath = void 0;
|
|
164
|
+
if (typeof result === "string") {
|
|
165
|
+
downloadPath = result;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
downloadPath = result.data;
|
|
169
|
+
}
|
|
170
|
+
window.location.href = downloadPath;
|
|
171
|
+
return [3 /*break*/, 4];
|
|
172
|
+
case 3:
|
|
173
|
+
this.gettingDownloadUrl = false;
|
|
174
|
+
return [7 /*endfinally*/];
|
|
175
|
+
case 4: return [2 /*return*/];
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
};
|
|
180
|
+
FileInput.contextType = FileContext;
|
|
181
|
+
__decorate([
|
|
182
|
+
observable,
|
|
183
|
+
__metadata("design:type", Boolean)
|
|
184
|
+
], FileInput.prototype, "gettingDownloadUrl", void 0);
|
|
185
|
+
FileInput = __decorate([
|
|
186
|
+
observer,
|
|
187
|
+
__metadata("design:paramtypes", [Object])
|
|
188
|
+
], FileInput);
|
|
189
|
+
return FileInput;
|
|
190
|
+
}(ComponentBase));
|
|
191
|
+
export default FileInput;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Components } from '@singularsystems/neo-core';
|
|
3
|
-
import { IButtonOptions } from '@singularsystems/neo-core/dist/Components/ButtonOptions';
|
|
4
|
-
import { FileContext } from './FileContext';
|
|
5
|
-
interface IFileUploadButtonProps extends IButtonOptions {
|
|
6
|
-
fileManager?: Components.IFileManager;
|
|
7
|
-
}
|
|
8
|
-
export default class FileUploadButton extends React.Component<IFileUploadButtonProps & React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>> {
|
|
9
|
-
static contextType: React.Context<import("./FileContext").IFileContextProps>;
|
|
10
|
-
context: React.ContextType<typeof FileContext>;
|
|
11
|
-
private fileManager;
|
|
12
|
-
private fileInputRef;
|
|
13
|
-
constructor(props: IFileUploadButtonProps & React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>);
|
|
14
|
-
private browseButtonClicked;
|
|
15
|
-
render(): JSX.Element;
|
|
16
|
-
}
|
|
17
|
-
export {};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Components } from '@singularsystems/neo-core';
|
|
3
|
+
import { IButtonOptions } from '@singularsystems/neo-core/dist/Components/ButtonOptions';
|
|
4
|
+
import { FileContext } from './FileContext';
|
|
5
|
+
interface IFileUploadButtonProps extends IButtonOptions {
|
|
6
|
+
fileManager?: Components.IFileManager;
|
|
7
|
+
}
|
|
8
|
+
export default class FileUploadButton extends React.Component<IFileUploadButtonProps & React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>> {
|
|
9
|
+
static contextType: React.Context<import("./FileContext").IFileContextProps>;
|
|
10
|
+
context: React.ContextType<typeof FileContext>;
|
|
11
|
+
private fileManager;
|
|
12
|
+
private fileInputRef;
|
|
13
|
+
constructor(props: IFileUploadButtonProps & React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>);
|
|
14
|
+
private browseButtonClicked;
|
|
15
|
+
render(): JSX.Element;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import { __assign, __decorate, __extends, __metadata, __rest } from "tslib";
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { observer } from 'mobx-react';
|
|
4
|
-
import Button from '../Button';
|
|
5
|
-
import { FileContext } from './FileContext';
|
|
6
|
-
import FileBasicInput from './FileBasicInput';
|
|
7
|
-
var FileUploadButton = /** @class */ (function (_super) {
|
|
8
|
-
__extends(FileUploadButton, _super);
|
|
9
|
-
function FileUploadButton(props) {
|
|
10
|
-
var _this = _super.call(this, props) || this;
|
|
11
|
-
_this.fileInputRef = React.createRef();
|
|
12
|
-
_this.browseButtonClicked = _this.browseButtonClicked.bind(_this);
|
|
13
|
-
return _this;
|
|
14
|
-
}
|
|
15
|
-
FileUploadButton.prototype.browseButtonClicked = function (e) {
|
|
16
|
-
if (this.fileInputRef.current) {
|
|
17
|
-
this.fileInputRef.current.click();
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
FileUploadButton.prototype.render = function () {
|
|
21
|
-
var _a = this.props, fileManager = _a.fileManager, buttonProps = __rest(_a, ["fileManager"]);
|
|
22
|
-
if (this.context.fileManager) {
|
|
23
|
-
this.fileManager = this.context.fileManager;
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
if (!fileManager) {
|
|
27
|
-
throw Error("File upload button must be in a FileContext, or have fileManager specified.");
|
|
28
|
-
}
|
|
29
|
-
this.fileManager = fileManager;
|
|
30
|
-
}
|
|
31
|
-
if (!buttonProps)
|
|
32
|
-
buttonProps = {};
|
|
33
|
-
if (!buttonProps.variant)
|
|
34
|
-
buttonProps.variant = "light";
|
|
35
|
-
if (this.fileManager.isUploading && !this.fileManager.options.allowConcurrent) {
|
|
36
|
-
buttonProps.disabled = true;
|
|
37
|
-
}
|
|
38
|
-
return (React.createElement(React.Fragment, null,
|
|
39
|
-
React.createElement(Button, __assign({}, buttonProps, { onClick: this.browseButtonClicked }), this.props.children),
|
|
40
|
-
React.createElement(FileBasicInput, { fileManager: this.fileManager, isHidden: true, inputRef: this.fileInputRef })));
|
|
41
|
-
};
|
|
42
|
-
FileUploadButton.contextType = FileContext;
|
|
43
|
-
FileUploadButton = __decorate([
|
|
44
|
-
observer,
|
|
45
|
-
__metadata("design:paramtypes", [Object])
|
|
46
|
-
], FileUploadButton);
|
|
47
|
-
return FileUploadButton;
|
|
48
|
-
}(React.Component));
|
|
49
|
-
export default FileUploadButton;
|
|
1
|
+
import { __assign, __decorate, __extends, __metadata, __rest } from "tslib";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
4
|
+
import Button from '../Button';
|
|
5
|
+
import { FileContext } from './FileContext';
|
|
6
|
+
import FileBasicInput from './FileBasicInput';
|
|
7
|
+
var FileUploadButton = /** @class */ (function (_super) {
|
|
8
|
+
__extends(FileUploadButton, _super);
|
|
9
|
+
function FileUploadButton(props) {
|
|
10
|
+
var _this = _super.call(this, props) || this;
|
|
11
|
+
_this.fileInputRef = React.createRef();
|
|
12
|
+
_this.browseButtonClicked = _this.browseButtonClicked.bind(_this);
|
|
13
|
+
return _this;
|
|
14
|
+
}
|
|
15
|
+
FileUploadButton.prototype.browseButtonClicked = function (e) {
|
|
16
|
+
if (this.fileInputRef.current) {
|
|
17
|
+
this.fileInputRef.current.click();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
FileUploadButton.prototype.render = function () {
|
|
21
|
+
var _a = this.props, fileManager = _a.fileManager, buttonProps = __rest(_a, ["fileManager"]);
|
|
22
|
+
if (this.context.fileManager) {
|
|
23
|
+
this.fileManager = this.context.fileManager;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
if (!fileManager) {
|
|
27
|
+
throw Error("File upload button must be in a FileContext, or have fileManager specified.");
|
|
28
|
+
}
|
|
29
|
+
this.fileManager = fileManager;
|
|
30
|
+
}
|
|
31
|
+
if (!buttonProps)
|
|
32
|
+
buttonProps = {};
|
|
33
|
+
if (!buttonProps.variant)
|
|
34
|
+
buttonProps.variant = "light";
|
|
35
|
+
if (this.fileManager.isUploading && !this.fileManager.options.allowConcurrent) {
|
|
36
|
+
buttonProps.disabled = true;
|
|
37
|
+
}
|
|
38
|
+
return (React.createElement(React.Fragment, null,
|
|
39
|
+
React.createElement(Button, __assign({}, buttonProps, { onClick: this.browseButtonClicked }), this.props.children),
|
|
40
|
+
React.createElement(FileBasicInput, { fileManager: this.fileManager, isHidden: true, inputRef: this.fileInputRef })));
|
|
41
|
+
};
|
|
42
|
+
FileUploadButton.contextType = FileContext;
|
|
43
|
+
FileUploadButton = __decorate([
|
|
44
|
+
observer,
|
|
45
|
+
__metadata("design:paramtypes", [Object])
|
|
46
|
+
], FileUploadButton);
|
|
47
|
+
return FileUploadButton;
|
|
48
|
+
}(React.Component));
|
|
49
|
+
export default FileUploadButton;
|