@kineticdata/react 5.0.17 → 5.0.18

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 (26) hide show
  1. package/lib/apis/core/authentication.js +11 -3
  2. package/lib/apis/core/fileResources.js +36 -0
  3. package/lib/apis/core/filestores.js +40 -0
  4. package/lib/components/agent/filestore/FilestoreForm.js +132 -0
  5. package/lib/components/agent/filestore/FilestoreTable.js +53 -0
  6. package/lib/components/common/Scroller.js +6 -6
  7. package/lib/components/core/core_form/CoreForm.js +10 -10
  8. package/lib/components/core/field_definition/FieldDefinitionForm.js +130 -0
  9. package/lib/components/core/field_definition/FieldDefinitionTable.js +86 -0
  10. package/lib/components/core/file_resource/FileResourceForm.js +180 -0
  11. package/lib/components/core/file_resource/FileResourceTable.js +71 -0
  12. package/lib/components/core/i18n/I18n.js +14 -14
  13. package/lib/components/core/submission/FormSubmissionFilters.js +378 -0
  14. package/lib/components/core/submission/FormSubmissionTable.js +116 -0
  15. package/lib/components/core/submission/KappSubmissionTable.js +250 -0
  16. package/lib/components/core/submission/SubmissionForm.js +124 -0
  17. package/lib/components/core/submission/helpers.js +95 -0
  18. package/lib/components/core/submission/helpers.test.js +96 -0
  19. package/lib/components/form/Form.js +2 -2
  20. package/lib/components/index.js +4 -4
  21. package/lib/components/system/SystemBackgroundTasksTable.js +83 -0
  22. package/lib/components/system/SystemSecurityForm.js +69 -0
  23. package/lib/components/task/builder/Connector.js +2 -2
  24. package/lib/components/task/builder/TaskDefinitionConfigForm.js +113 -0
  25. package/lib/components/task/builder/TreeBuilder.js +2 -2
  26. package/package.json +2 -2
@@ -52,9 +52,17 @@ export var singleSignOn = function singleSignOn(spaceSlug, dimensions) {
52
52
  var options = _objectSpread(_objectSpread({}, dimensions), getPopupPosition(window, dimensions));
53
53
 
54
54
  var endpoint = bundle.spaceLocation() + '/app/saml/login/alias/' + spaceSlug;
55
- var popup = window.open(endpoint, target, stringifyOptions(options)); // Create an event handler that closes the popup window if we focus the
55
+ var popup = window.open(endpoint, target, stringifyOptions(options));
56
+
57
+ if (!popup) {
58
+ resolve({
59
+ error: 'Enterprise Sign In popup was blocked by the browser.'
60
+ });
61
+ return;
62
+ } // Create an event handler that closes the popup window if we focus the
56
63
  // parent window
57
64
 
65
+
58
66
  var windowFocusHandler = function windowFocusHandler() {
59
67
  popup.close();
60
68
  window.removeEventListener('focus', windowFocusHandler);
@@ -80,7 +88,7 @@ export var singleSignOn = function singleSignOn(spaceSlug, dimensions) {
80
88
  }
81
89
 
82
90
  resolve({
83
- error: 'Single Sign-on cancelled'
91
+ error: 'Enterprise Sign In was cancelled'
84
92
  });
85
93
  _context.next = 12;
86
94
  break;
@@ -107,7 +115,7 @@ export var singleSignOn = function singleSignOn(spaceSlug, dimensions) {
107
115
  } else {
108
116
  popup.close();
109
117
  resolve({
110
- error: 'Single Sign-on timed out'
118
+ error: 'Enterprise Sign In timed out'
111
119
  });
112
120
  }
113
121
 
@@ -0,0 +1,36 @@
1
+ import { apiGroup } from '../http';
2
+
3
+ var _apiGroup = apiGroup({
4
+ name: 'FileResource',
5
+ dataOption: 'fileResource',
6
+ plural: {
7
+ requiredOptions: [],
8
+ url: function url() {
9
+ return '/fileResources';
10
+ },
11
+ transform: function transform(response) {
12
+ return {
13
+ fileResources: response.data.fileResources
14
+ };
15
+ }
16
+ },
17
+ singular: {
18
+ requiredOptions: ['fileResourceSlug'],
19
+ url: function url(_ref) {
20
+ var fileResourceSlug = _ref.fileResourceSlug;
21
+ return "/fileResources/".concat(fileResourceSlug);
22
+ },
23
+ transform: function transform(response) {
24
+ return {
25
+ fileResource: response.data.fileResource
26
+ };
27
+ }
28
+ }
29
+ }),
30
+ fetchFileResources = _apiGroup.fetchFileResources,
31
+ fetchFileResource = _apiGroup.fetchFileResource,
32
+ createFileResource = _apiGroup.createFileResource,
33
+ updateFileResource = _apiGroup.updateFileResource,
34
+ deleteFileResource = _apiGroup.deleteFileResource;
35
+
36
+ export { fetchFileResources, fetchFileResource, createFileResource, updateFileResource, deleteFileResource };
@@ -0,0 +1,40 @@
1
+ import { apiGroup } from '../http';
2
+
3
+ var _apiGroup = apiGroup({
4
+ name: 'Filestore',
5
+ dataOption: 'filestore',
6
+ plural: {
7
+ requiredOptions: [],
8
+ url: function url(_ref) {
9
+ var _ref$agentSlug = _ref.agentSlug,
10
+ agentSlug = _ref$agentSlug === void 0 ? 'system' : _ref$agentSlug;
11
+ return "/app/components/agents/".concat(agentSlug, "/app/api/v1/filestores");
12
+ },
13
+ transform: function transform(response) {
14
+ return {
15
+ filestores: response.data.filestores
16
+ };
17
+ }
18
+ },
19
+ singular: {
20
+ requiredOptions: ['filestoreSlug'],
21
+ url: function url(_ref2) {
22
+ var _ref2$agentSlug = _ref2.agentSlug,
23
+ agentSlug = _ref2$agentSlug === void 0 ? 'system' : _ref2$agentSlug,
24
+ filestoreSlug = _ref2.filestoreSlug;
25
+ return "/app/components/agents/".concat(agentSlug, "/app/api/v1/filestores/").concat(filestoreSlug);
26
+ },
27
+ transform: function transform(response) {
28
+ return {
29
+ filestore: response.data.filestore
30
+ };
31
+ }
32
+ }
33
+ }),
34
+ fetchFilestores = _apiGroup.fetchFilestores,
35
+ fetchFilestore = _apiGroup.fetchFilestore,
36
+ createFilestore = _apiGroup.createFilestore,
37
+ updateFilestore = _apiGroup.updateFilestore,
38
+ deleteFilestore = _apiGroup.deleteFilestore;
39
+
40
+ export { fetchFilestores, fetchFilestore, createFilestore, updateFilestore, deleteFilestore };
@@ -0,0 +1,132 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import { createFilestore, fetchFilestore, updateFilestore } from '../../../apis';
3
+ import { fetchAdapters } from '../../../apis';
4
+ import { get, getIn, List, Map } from 'immutable';
5
+ import { buildPropertyFields, handleFormErrors } from '../../form/Form.helpers';
6
+ import { generateForm } from '../../form/Form';
7
+
8
+ var dataSources = function dataSources(_ref) {
9
+ var agentSlug = _ref.agentSlug,
10
+ filestoreSlug = _ref.filestoreSlug,
11
+ adapterClass = _ref.adapterClass;
12
+ return {
13
+ filestore: {
14
+ fn: fetchFilestore,
15
+ params: agentSlug && filestoreSlug && [{
16
+ agentSlug: agentSlug,
17
+ filestoreSlug: filestoreSlug,
18
+ include: 'details'
19
+ }],
20
+ transform: function transform(result) {
21
+ return result.filestore;
22
+ }
23
+ },
24
+ adapters: {
25
+ fn: fetchAdapters,
26
+ params: [{
27
+ include: 'details',
28
+ type: 'filestore',
29
+ agentSlug: agentSlug
30
+ }],
31
+ transform: function transform(result) {
32
+ return result.adapters;
33
+ }
34
+ },
35
+ adapterProperties: {
36
+ fn: function fn(adapters, filestore) {
37
+ var appliedAdapterClass = filestore ? filestore.get('adapterClass') : adapterClass;
38
+ var adapter = adapters.find(function (adapter) {
39
+ return adapter.get('class') === appliedAdapterClass;
40
+ });
41
+ return adapter ? List(adapter.get('properties')) : List();
42
+ },
43
+ params: function params(_ref2) {
44
+ var adapters = _ref2.adapters,
45
+ filestore = _ref2.filestore;
46
+ return (!filestoreSlug || filestore) && adapters && [adapters, filestore];
47
+ }
48
+ }
49
+ };
50
+ };
51
+
52
+ var handleSubmit = function handleSubmit(_ref3) {
53
+ var agentSlug = _ref3.agentSlug,
54
+ filestoreSlug = _ref3.filestoreSlug;
55
+ return function (values) {
56
+ return (filestoreSlug ? updateFilestore : createFilestore)({
57
+ agentSlug: agentSlug,
58
+ filestoreSlug: filestoreSlug,
59
+ filestore: values.toJS()
60
+ }).then(handleFormErrors('filestore', 'There was a problem saving the filestore.'));
61
+ };
62
+ };
63
+
64
+ var fields = function fields(_ref4) {
65
+ var adapterClass = _ref4.adapterClass;
66
+ return function (_ref5) {
67
+ var filestore = _ref5.filestore,
68
+ adapters = _ref5.adapters,
69
+ adapterProperties = _ref5.adapterProperties;
70
+
71
+ if (adapterProperties) {
72
+ var _buildPropertyFields = buildPropertyFields({
73
+ isNew: !filestore,
74
+ properties: adapterProperties,
75
+ getName: function getName(property) {
76
+ return property.get('name');
77
+ },
78
+ getRequired: function getRequired(property) {
79
+ return property.get('required');
80
+ },
81
+ getSensitive: function getSensitive(property) {
82
+ return property.get('sensitive');
83
+ },
84
+ getOptions: function getOptions(property) {
85
+ return property.get('options');
86
+ },
87
+ getValue: function getValue(property) {
88
+ return getIn(filestore, ['properties', property.get('name')], '');
89
+ }
90
+ }),
91
+ propertiesFields = _buildPropertyFields.propertiesFields,
92
+ propertiesSerialize = _buildPropertyFields.propertiesSerialize;
93
+
94
+ return [{
95
+ name: 'slug',
96
+ label: 'Filestore Slug',
97
+ type: 'text',
98
+ required: true,
99
+ initialValue: get(filestore, 'slug', ''),
100
+ pattern: /^[a-z\d-]+$/,
101
+ patternMessage: 'File Store Slug may only contain letters, numbers, and dashes',
102
+ helpText: 'Unique name used in the bridge path.'
103
+ }, {
104
+ name: 'adapterClass',
105
+ label: 'Adapter Class',
106
+ type: 'text',
107
+ enabled: false,
108
+ required: false,
109
+ initialValue: filestore ? filestore.get('adapterClass') : adapterClass,
110
+ options: adapters.map(function (adapter) {
111
+ return Map({
112
+ value: adapter.get('class'),
113
+ label: adapter.get('name')
114
+ });
115
+ })
116
+ }].concat(_toConsumableArray(propertiesFields), [{
117
+ name: 'properties',
118
+ visible: false,
119
+ initialValue: get(filestore, 'properties', {}),
120
+ serialize: propertiesSerialize
121
+ }]);
122
+ }
123
+ };
124
+ };
125
+
126
+ export var FilestoreForm = generateForm({
127
+ formOptions: ['filestoreSlug', 'adapterClass', 'agentSlug'],
128
+ dataSources: dataSources,
129
+ fields: fields,
130
+ handleSubmit: handleSubmit
131
+ });
132
+ FilestoreForm.displayName = 'FilestoreForm';
@@ -0,0 +1,53 @@
1
+ import { defineFilter } from '../../../helpers';
2
+ import { fetchFilestores } from '../../../apis';
3
+ import { generateTable } from '../../table/Table';
4
+ var clientSide = defineFilter(true).startsWith('slug', 'slug').end();
5
+
6
+ var dataSource = function dataSource(_ref) {
7
+ var agentSlug = _ref.agentSlug;
8
+ return {
9
+ fn: fetchFilestores,
10
+ clientSide: clientSide,
11
+ params: function params() {
12
+ return [{
13
+ agentSlug: agentSlug,
14
+ include: 'details'
15
+ }];
16
+ },
17
+ transform: function transform(result) {
18
+ return {
19
+ data: result.filestores
20
+ };
21
+ }
22
+ };
23
+ };
24
+
25
+ var filters = function filters() {
26
+ return function () {
27
+ return [{
28
+ name: 'slug',
29
+ label: 'Slug',
30
+ type: 'text'
31
+ }];
32
+ };
33
+ };
34
+
35
+ var columns = [{
36
+ value: 'slug',
37
+ title: 'Slug',
38
+ sortable: true
39
+ }, {
40
+ value: 'adapterClass',
41
+ title: 'Adapter',
42
+ sortable: true,
43
+ valueTransform: function valueTransform(_value) {
44
+ return _value.split('.').pop().match(/[A-Z][a-z]+/g).join(' ');
45
+ }
46
+ }];
47
+ export var FilestoreTable = generateTable({
48
+ tableOptions: ['agentSlug'],
49
+ columns: columns,
50
+ filters: filters,
51
+ dataSource: dataSource
52
+ });
53
+ FilestoreTable.displayName = 'FilestoreTable';
@@ -50,13 +50,13 @@ export var Scroller = /*#__PURE__*/function (_Component) {
50
50
  }
51
51
  } // when scrolling up...
52
52
  else if (childTop < this.lastTop) {
53
- // check to see if the top of the child element is above the top of the
54
- // scrollable parent
55
- if (childTop < parent.scrollTop) {
56
- // scroll the child into view (passing true which aligns by top)
57
- child.scrollIntoView(true);
58
- }
53
+ // check to see if the top of the child element is above the top of the
54
+ // scrollable parent
55
+ if (childTop < parent.scrollTop) {
56
+ // scroll the child into view (passing true which aligns by top)
57
+ child.scrollIntoView(true);
59
58
  }
59
+ }
60
60
 
61
61
  this.lastTop = child.offsetTop;
62
62
  }
@@ -286,16 +286,16 @@ export var CoreFormComponent = /*#__PURE__*/function (_Component) {
286
286
  }));
287
287
  } // If pending and error state has just been set, call error callback
288
288
  else if (this.state.pending && this.state.error && !prevState.error) {
289
- if (this.state.error.statusCode === 401) {
290
- applyGuard(this.props.onUnauthorized || this.props.unauthorized);
291
- } else if (this.state.error.statusCode === 403) {
292
- applyGuard(this.props.onForbidden || this.props.forbidden);
293
- } else if (this.state.error.statusCode === 404) {
294
- applyGuard(this.props.onNotFound || this.props.onNotFound);
295
- } else {
296
- applyGuard(this.props.onError || this.props.error);
297
- }
298
- } // If locking is turned on and has been initalized
289
+ if (this.state.error.statusCode === 401) {
290
+ applyGuard(this.props.onUnauthorized || this.props.unauthorized);
291
+ } else if (this.state.error.statusCode === 403) {
292
+ applyGuard(this.props.onForbidden || this.props.forbidden);
293
+ } else if (this.state.error.statusCode === 404) {
294
+ applyGuard(this.props.onNotFound || this.props.onNotFound);
295
+ } else {
296
+ applyGuard(this.props.onError || this.props.error);
297
+ }
298
+ } // If locking is turned on and has been initalized
299
299
 
300
300
 
301
301
  if (this.state.lock && this.state.lock.init) {
@@ -0,0 +1,130 @@
1
+ import { generateForm } from '../../form/Form';
2
+ import { fetchKapp, fetchSpace, updateKapp, updateSpace } from '../../../apis';
3
+ import { FIELD_DATA_TYPES } from './FieldDefinitionTable';
4
+
5
+ var dataSources = function dataSources(_ref) {
6
+ var kappSlug = _ref.kappSlug,
7
+ name = _ref.name;
8
+ return {
9
+ form: {
10
+ fn: kappSlug ? fetchKapp : fetchSpace,
11
+ params: [{
12
+ kappSlug: kappSlug,
13
+ include: 'fields'
14
+ }],
15
+ transform: function transform(result) {
16
+ return kappSlug ? result.kapp : result.space;
17
+ }
18
+ },
19
+ fieldDefinition: {
20
+ fn: function fn(form, name) {
21
+ return form.get('fields').find(function (f) {
22
+ return f.get('name') === name;
23
+ });
24
+ },
25
+ params: function params(_ref2) {
26
+ var form = _ref2.form;
27
+ return form && name && [form, name];
28
+ }
29
+ }
30
+ };
31
+ };
32
+
33
+ var handleSubmit = function handleSubmit(_ref3) {
34
+ var kappSlug = _ref3.kappSlug,
35
+ name = _ref3.name;
36
+ return function (values, _ref4) {
37
+ var form = _ref4.form;
38
+ var dataType = FIELD_DATA_TYPES.find(function (fdt) {
39
+ return fdt.value === values.get('renderType');
40
+ }).dataType;
41
+ var field = values.set('dataType', dataType);
42
+ var fields = name ? form.get('fields').map(function (fd) {
43
+ return fd.get('name') === name ? field : fd;
44
+ }) : form.get('fields').push(field);
45
+ return (kappSlug ? updateKapp({
46
+ kapp: {
47
+ fields: fields
48
+ },
49
+ kappSlug: kappSlug
50
+ }) : updateSpace({
51
+ space: {
52
+ fields: fields
53
+ }
54
+ })).then(function (_ref5) {
55
+ var kapp = _ref5.kapp,
56
+ space = _ref5.space,
57
+ error = _ref5.error;
58
+
59
+ if (error) {
60
+ throw error.statusCode === 400 && error.message || 'There was an error saving the field definition';
61
+ }
62
+
63
+ return kappSlug ? kapp : space;
64
+ });
65
+ };
66
+ };
67
+
68
+ var fields = function fields(_ref6) {
69
+ var name = _ref6.name;
70
+ return function (_ref7) {
71
+ var form = _ref7.form,
72
+ fieldDefinition = _ref7.fieldDefinition;
73
+ return (!name || fieldDefinition) && form && [{
74
+ name: 'name',
75
+ label: 'Name',
76
+ type: 'text',
77
+ required: true,
78
+ initialValue: fieldDefinition ? fieldDefinition.get('name') : ''
79
+ }, {
80
+ name: 'renderType',
81
+ label: 'Type',
82
+ type: 'select',
83
+ required: true,
84
+ options: FIELD_DATA_TYPES,
85
+ initialValue: fieldDefinition ? fieldDefinition.get('renderType') : ''
86
+ }, {
87
+ name: 'createdAt',
88
+ label: 'Created At',
89
+ type: 'text',
90
+ visible: false,
91
+ initialValue: fieldDefinition ? fieldDefinition.get('createdAt') : '2020-08-24T22:06:20.572Z'
92
+ }, {
93
+ name: 'createdBy',
94
+ label: 'Created By',
95
+ type: 'text',
96
+ visible: false,
97
+ initialValue: fieldDefinition ? fieldDefinition.get('createdBy') : 'admin'
98
+ }, {
99
+ name: 'updatedAt',
100
+ label: 'Updated At',
101
+ type: 'text',
102
+ visible: false,
103
+ initialValue: fieldDefinition ? fieldDefinition.get('updatedAt') : '2020-08-24T22:06:20.572Z'
104
+ }, {
105
+ name: 'updatedBy',
106
+ label: 'Updated By',
107
+ type: 'text',
108
+ visible: false,
109
+ initialValue: fieldDefinition ? fieldDefinition.get('updatedBy') : 'admin'
110
+ }];
111
+ };
112
+ };
113
+ /**
114
+ * @component
115
+ * A form for creating and updating Field Definitions within the Kinetic Platform
116
+ */
117
+
118
+
119
+ export var FieldDefinitionForm = generateForm({
120
+ formOptions: ['kappSlug', 'name'],
121
+ dataSources: dataSources,
122
+ fields: fields,
123
+ handleSubmit: handleSubmit
124
+ });
125
+ FieldDefinitionForm.displayName = 'FieldDefinitionForm'; // Specifies the default values for props:
126
+
127
+ FieldDefinitionForm.defaultProps = {
128
+ fieldName: null,
129
+ kappSlug: null
130
+ };
@@ -0,0 +1,86 @@
1
+ import { generateTable } from '../../table/Table';
2
+ import { fetchKapp, fetchSpace } from '../../../apis';
3
+ import { defineFilter } from '../../../helpers';
4
+ export var FIELD_DATA_TYPES = [{
5
+ value: 'checkbox',
6
+ label: 'Checkbox',
7
+ dataType: 'json'
8
+ }, {
9
+ value: 'date',
10
+ label: 'Date',
11
+ dataType: 'string'
12
+ }, {
13
+ value: 'datetime',
14
+ label: 'Date/Time',
15
+ dataType: 'string'
16
+ }, {
17
+ value: 'dropdown',
18
+ label: 'Dropdown',
19
+ dataType: 'string'
20
+ }, {
21
+ value: 'radio',
22
+ label: 'Radio',
23
+ dataType: 'string'
24
+ }, {
25
+ value: 'text',
26
+ label: 'Text',
27
+ dataType: 'string'
28
+ }, {
29
+ value: 'time',
30
+ label: 'Time',
31
+ dataType: 'string'
32
+ }];
33
+ var clientSide = defineFilter(true).startsWith('name', 'name').end();
34
+
35
+ var dataSource = function dataSource(_ref) {
36
+ var kappSlug = _ref.kappSlug;
37
+ return {
38
+ fn: kappSlug ? fetchKapp : fetchSpace,
39
+ clientSide: clientSide,
40
+ params: function params() {
41
+ return [{
42
+ kappSlug: kappSlug,
43
+ include: 'fields'
44
+ }];
45
+ },
46
+ transform: function transform(result) {
47
+ return {
48
+ data: kappSlug ? result.kapp.fields : result.space.fields
49
+ };
50
+ }
51
+ };
52
+ };
53
+
54
+ var filters = function filters() {
55
+ return function () {
56
+ return [{
57
+ name: 'name',
58
+ label: 'Name',
59
+ type: 'text'
60
+ }];
61
+ };
62
+ };
63
+
64
+ var columns = [{
65
+ value: 'name',
66
+ title: 'Name'
67
+ }, {
68
+ value: 'renderType',
69
+ title: 'Render Type'
70
+ }, {
71
+ value: 'dataType',
72
+ title: 'Data Type'
73
+ }, {
74
+ value: 'updatedAt',
75
+ title: 'Updated At'
76
+ }, {
77
+ value: 'updatedBy',
78
+ title: 'Updated By'
79
+ }];
80
+ export var FieldDefinitionTable = generateTable({
81
+ tableOptions: ['kappSlug'],
82
+ columns: columns,
83
+ filters: filters,
84
+ dataSource: dataSource
85
+ });
86
+ FieldDefinitionTable.displayName = 'FieldDefinitionTable';