@riboseinc/paneron-registry-kit 2.2.30 → 2.2.32
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/index.js +1 -0
- package/index.js.map +1 -1
- package/item-classes/Tree.d.ts +5 -0
- package/item-classes/Tree.js +115 -0
- package/item-classes/Tree.js.map +1 -0
- package/item-classes/treeNodes.d.ts +12 -0
- package/item-classes/treeNodes.js +68 -0
- package/item-classes/treeNodes.js.map +1 -0
- package/package.json +2 -2
- package/proposals/actionableGroups/Tree.d.ts +7 -0
- package/proposals/actionableGroups/Tree.js +179 -0
- package/proposals/actionableGroups/Tree.js.map +1 -0
- package/proposals/actionableGroups/queries.d.ts +5 -0
- package/proposals/actionableGroups/queries.js +81 -0
- package/proposals/actionableGroups/queries.js.map +1 -0
- package/proposals/actionableGroups/treeNodes.d.ts +26 -0
- package/proposals/actionableGroups/treeNodes.js +96 -0
- package/proposals/actionableGroups/treeNodes.js.map +1 -0
- package/proposals/actionableGroups/types.d.ts +6 -0
- package/proposals/actionableGroups/types.js +5 -0
- package/proposals/actionableGroups/types.js.map +1 -0
- package/types/cr.d.ts +1 -0
- package/types/cr.js.map +1 -1
- package/types/register.d.ts +4 -1
- package/types/register.js.map +1 -1
- package/types/stakeholder.d.ts +22 -41
- package/types/stakeholder.js +34 -16
- package/types/stakeholder.js.map +1 -1
- package/types/views.d.ts +2 -0
- package/types/views.js.map +1 -1
- package/views/BrowserCtx.d.ts +1 -1
- package/views/BrowserCtx.js.map +1 -1
- package/views/GenericRelatedItemView.js +21 -8
- package/views/GenericRelatedItemView.js.map +1 -1
- package/views/ItemDetailsDrawer.d.ts +1 -0
- package/views/ItemDetailsDrawer.js +4 -2
- package/views/ItemDetailsDrawer.js.map +1 -1
- package/views/ItemSearchDrawer.js +1 -1
- package/views/ItemSearchDrawer.js.map +1 -1
- package/views/RegisterStakeholder.js +2 -2
- package/views/RegisterStakeholder.js.map +1 -1
- package/views/StatefulTree.d.ts +28 -0
- package/views/StatefulTree.js +131 -0
- package/views/StatefulTree.js.map +1 -0
- package/views/change-request/TransitionHistory.js +6 -3
- package/views/change-request/TransitionHistory.js.map +1 -1
- package/views/change-request/TransitionOptions.js +37 -13
- package/views/change-request/TransitionOptions.js.map +1 -1
- package/views/detail/RegisterHome/index.js +20 -79
- package/views/detail/RegisterHome/index.js.map +1 -1
- package/views/detail/RegisterItem/index.d.ts +2 -2
- package/views/detail/RegisterItem/index.js +7 -2
- package/views/detail/RegisterItem/index.js.map +1 -1
- package/views/detail/RegisterItemClass.d.ts +12 -0
- package/views/detail/RegisterItemClass.js +98 -0
- package/views/detail/RegisterItemClass.js.map +1 -0
- package/views/detail/RegisterMeta/RegisterMetaForm.js +272 -114
- package/views/detail/RegisterMeta/RegisterMetaForm.js.map +1 -1
- package/views/detail/RegisterMeta/index.js +1 -1
- package/views/detail/RegisterMeta/index.js.map +1 -1
- package/views/index.js +63 -6
- package/views/index.js.map +1 -1
- package/views/protocolRegistry.d.ts +1 -0
- package/views/protocolRegistry.js +4 -0
- package/views/protocolRegistry.js.map +1 -1
- package/views/sidebar/Browse/index.js +8 -44
- package/views/sidebar/Browse/index.js.map +1 -1
- package/views/sidebar/Registration/index.js.map +1 -1
- package/views/sidebar/index.d.ts +2 -1
- package/views/sidebar/index.js +77 -62
- package/views/sidebar/index.js.map +1 -1
- package/views/util.d.ts +5 -0
- package/views/util.js +42 -4
- package/views/util.js.map +1 -1
|
@@ -13,14 +13,14 @@ var _react2 = require("@emotion/react");
|
|
|
13
13
|
|
|
14
14
|
var _core = require("@blueprintjs/core");
|
|
15
15
|
|
|
16
|
+
var _select = require("@blueprintjs/select");
|
|
17
|
+
|
|
16
18
|
var _datetime = require("@blueprintjs/datetime");
|
|
17
19
|
|
|
18
20
|
var _HelpTooltip = _interopRequireDefault(require("@riboseinc/paneron-extension-kit/widgets/HelpTooltip"));
|
|
19
21
|
|
|
20
22
|
var _util = require("../../../views/util");
|
|
21
23
|
|
|
22
|
-
var _types = require("../../../types");
|
|
23
|
-
|
|
24
24
|
var _stakeholder = require("../../../types/stakeholder");
|
|
25
25
|
|
|
26
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -34,17 +34,23 @@ const DUMMY_VERSION = {
|
|
|
34
34
|
};
|
|
35
35
|
const DUMMY_CONTACT = {
|
|
36
36
|
label: 'email',
|
|
37
|
-
value: ''
|
|
38
|
-
};
|
|
39
|
-
const DUMMY_PARTY = {
|
|
40
|
-
name: '',
|
|
41
|
-
contacts: [DUMMY_CONTACT]
|
|
37
|
+
value: 'example@example.com'
|
|
42
38
|
};
|
|
39
|
+
const DUMMY_ORG = {
|
|
40
|
+
name: 'New organization',
|
|
41
|
+
logoURL: ''
|
|
42
|
+
}; // const DUMMY_PARTY: Register["stakeholders"][number]["parties"][number] = {
|
|
43
|
+
// name: '',
|
|
44
|
+
// contacts: [DUMMY_CONTACT],
|
|
45
|
+
// };
|
|
46
|
+
|
|
43
47
|
const DUMMY_STAKEHOLDER = {
|
|
44
|
-
|
|
45
|
-
name: '',
|
|
48
|
+
roles: [_stakeholder.StakeholderRole.Submitter],
|
|
49
|
+
name: 'New stakeholder',
|
|
46
50
|
gitServerUsername: undefined,
|
|
47
|
-
|
|
51
|
+
affiliations: {},
|
|
52
|
+
contacts: [DUMMY_CONTACT] //parties: [DUMMY_PARTY],
|
|
53
|
+
|
|
48
54
|
};
|
|
49
55
|
|
|
50
56
|
const RegisterMetaForm = function ({
|
|
@@ -52,9 +58,7 @@ const RegisterMetaForm = function ({
|
|
|
52
58
|
onChange,
|
|
53
59
|
className
|
|
54
60
|
}) {
|
|
55
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
56
|
-
|
|
57
|
-
console.debug("Rendering RegisterMetaForm");
|
|
61
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
58
62
|
|
|
59
63
|
function handleOperatingLanguageChange(fieldName) {
|
|
60
64
|
return evt => {
|
|
@@ -80,6 +84,8 @@ const RegisterMetaForm = function ({
|
|
|
80
84
|
}
|
|
81
85
|
|
|
82
86
|
const stakeholders = (_a = value.stakeholders) !== null && _a !== void 0 ? _a : [];
|
|
87
|
+
const orgs = (_b = value.organizations) !== null && _b !== void 0 ? _b : {};
|
|
88
|
+
const organizationIDs = Object.keys(orgs);
|
|
83
89
|
|
|
84
90
|
function makeStakeholderChangeHandler(idx, func) {
|
|
85
91
|
return makeFormEventHandler(val => ({
|
|
@@ -103,6 +109,54 @@ const RegisterMetaForm = function ({
|
|
|
103
109
|
}));
|
|
104
110
|
}
|
|
105
111
|
|
|
112
|
+
function makeOrgChangeHandler(orgID, func) {
|
|
113
|
+
return makeFormEventHandler(val => ({
|
|
114
|
+
organizations: {
|
|
115
|
+
[orgID]: func(val)
|
|
116
|
+
}
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function handleOrgAdd() {
|
|
121
|
+
const newID = crypto.randomUUID();
|
|
122
|
+
onChange({ ...value,
|
|
123
|
+
organizations: { ...orgs,
|
|
124
|
+
[newID]: DUMMY_ORG
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function handleOrgDelete(orgID) {
|
|
130
|
+
onChange((0, _immutabilityHelper.default)(value, {
|
|
131
|
+
organizations: {
|
|
132
|
+
$unset: [orgID]
|
|
133
|
+
}
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function findAffiliations(orgID) {
|
|
138
|
+
return stakeholders.filter(s => {
|
|
139
|
+
var _a;
|
|
140
|
+
|
|
141
|
+
return ((_a = s.affiliations) === null || _a === void 0 ? void 0 : _a[orgID]) !== undefined;
|
|
142
|
+
}).flatMap(s => {
|
|
143
|
+
var _a;
|
|
144
|
+
|
|
145
|
+
return Object.values((_a = s.affiliations) !== null && _a !== void 0 ? _a : {});
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function findAffiliationOptions(s) {
|
|
150
|
+
return Object.entries(orgs).filter(([orgID]) => {
|
|
151
|
+
var _a;
|
|
152
|
+
|
|
153
|
+
return ((_a = s.affiliations) === null || _a === void 0 ? void 0 : _a[orgID]) === undefined;
|
|
154
|
+
}).map(([orgID, org]) => ({
|
|
155
|
+
value: orgID,
|
|
156
|
+
label: org.name
|
|
157
|
+
}));
|
|
158
|
+
}
|
|
159
|
+
|
|
106
160
|
return (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_util.FormGroupAsCardInGrid, {
|
|
107
161
|
label: "Basics:",
|
|
108
162
|
paddingPx: PADDING_PX
|
|
@@ -148,17 +202,17 @@ const RegisterMetaForm = function ({
|
|
|
148
202
|
}, (0, _react2.jsx)(_core.InputGroup, {
|
|
149
203
|
readOnly: !onChange,
|
|
150
204
|
placeholder: "E.g., Welsh",
|
|
151
|
-
value: (
|
|
205
|
+
value: (_d = (_c = value.operatingLanguage) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : '',
|
|
152
206
|
onChange: handleOperatingLanguageChange('name')
|
|
153
207
|
}), (0, _react2.jsx)(_core.InputGroup, {
|
|
154
208
|
readOnly: !onChange,
|
|
155
209
|
placeholder: "3-character numerical country code from ISO 3166-1",
|
|
156
|
-
value: (
|
|
210
|
+
value: (_f = (_e = value.operatingLanguage) === null || _e === void 0 ? void 0 : _e.country) !== null && _f !== void 0 ? _f : '',
|
|
157
211
|
onChange: handleOperatingLanguageChange('country')
|
|
158
212
|
}), (0, _react2.jsx)(_core.InputGroup, {
|
|
159
213
|
readOnly: !onChange,
|
|
160
214
|
placeholder: "3-character language code from ISO 639-2",
|
|
161
|
-
value: (
|
|
215
|
+
value: (_h = (_g = value.operatingLanguage) === null || _g === void 0 ? void 0 : _g.languageCode) !== null && _h !== void 0 ? _h : '',
|
|
162
216
|
onChange: handleOperatingLanguageChange('languageCode')
|
|
163
217
|
})))), (0, _react2.jsx)(_util.FormGroupAsCardInGrid, {
|
|
164
218
|
label: "Version: ",
|
|
@@ -168,7 +222,7 @@ const RegisterMetaForm = function ({
|
|
|
168
222
|
}, (0, _react2.jsx)(_core.FormGroup, {
|
|
169
223
|
label: "Identifier: "
|
|
170
224
|
}, (0, _react2.jsx)(_core.InputGroup, {
|
|
171
|
-
value: (
|
|
225
|
+
value: (_k = (_j = value.version) === null || _j === void 0 ? void 0 : _j.id) !== null && _k !== void 0 ? _k : '',
|
|
172
226
|
readOnly: !onChange,
|
|
173
227
|
placeholder: "E.g., 1.2",
|
|
174
228
|
onChange: makeFormEventHandler(val => ({
|
|
@@ -186,7 +240,7 @@ const RegisterMetaForm = function ({
|
|
|
186
240
|
}, (0, _react2.jsx)(_datetime.DatePicker, {
|
|
187
241
|
css: (0, _react2.css)`margin: 0 -${PADDING_PX - 1}px;`,
|
|
188
242
|
timePrecision: _datetime.TimePrecision.MINUTE,
|
|
189
|
-
value: (
|
|
243
|
+
value: (_m = (_l = value.version) === null || _l === void 0 ? void 0 : _l.timestamp) !== null && _m !== void 0 ? _m : null,
|
|
190
244
|
showActionsBar: onChange ? true : false,
|
|
191
245
|
onChange: val => onChange((0, _immutabilityHelper.default)(value, val !== null ? {
|
|
192
246
|
version: v => (0, _immutabilityHelper.default)(v !== null && v !== void 0 ? v : DUMMY_VERSION, {
|
|
@@ -199,34 +253,30 @@ const RegisterMetaForm = function ({
|
|
|
199
253
|
}))
|
|
200
254
|
}))), (0, _react2.jsx)(_util.FormGroupAsCardInGrid, {
|
|
201
255
|
paddingPx: PADDING_PX,
|
|
202
|
-
label: "
|
|
203
|
-
css: (0, _react2.css)`min-width:
|
|
256
|
+
label: "Organizations:",
|
|
257
|
+
css: (0, _react2.css)`min-width: 100%`,
|
|
204
258
|
helperText: onChange ? (0, _react2.jsx)(_core.Button, {
|
|
205
|
-
onClick:
|
|
259
|
+
onClick: handleOrgAdd,
|
|
206
260
|
icon: "add"
|
|
207
261
|
}, "Add") : null
|
|
208
|
-
},
|
|
262
|
+
}, organizationIDs.length > 0 ? (0, _react2.jsx)(_core.HTMLTable, {
|
|
209
263
|
css: (0, _react2.css)`margin: 0 -${PADDING_PX}px;`
|
|
210
264
|
}, (0, _react2.jsx)("thead", null, (0, _react2.jsx)("tr", {
|
|
211
265
|
css: (0, _react2.css)`& > * { white-space: nowrap }`
|
|
212
|
-
}, (0, _react2.jsx)("th", null, "
|
|
213
|
-
key:
|
|
214
|
-
}, (0, _react2.jsx)("td", null, (0, _react2.jsx)(_core.
|
|
215
|
-
options: _stakeholder.STAKEHOLDER_ROLES.map(r => ({
|
|
216
|
-
value: r,
|
|
217
|
-
label: r
|
|
218
|
-
})),
|
|
219
|
-
disabled: !onChange,
|
|
220
|
-
onChange: makeStakeholderChangeHandler(idx, val => (0, _types.isStakeholderRole)(val) ? {
|
|
221
|
-
role: {
|
|
222
|
-
$set: val
|
|
223
|
-
}
|
|
224
|
-
} // Why do we need to cast this
|
|
225
|
-
: {}),
|
|
226
|
-
value: s.role
|
|
227
|
-
})), (0, _react2.jsx)("td", null, (0, _react2.jsx)(_core.InputGroup, {
|
|
266
|
+
}, (0, _react2.jsx)("th", null, "Name"), (0, _react2.jsx)("th", null, "Logo URL"))), (0, _react2.jsx)("tbody", null, [...Object.entries(value.organizations)].map(([orgID, s]) => (0, _react2.jsx)("tr", {
|
|
267
|
+
key: orgID
|
|
268
|
+
}, (0, _react2.jsx)("td", null, (0, _react2.jsx)(_core.InputGroup, {
|
|
228
269
|
readOnly: !onChange,
|
|
229
|
-
|
|
270
|
+
rightElement: (0, _react2.jsx)(_core.Button, {
|
|
271
|
+
key: "delete",
|
|
272
|
+
outlined: true,
|
|
273
|
+
disabled: !onChange || findAffiliations(orgID).length > 0,
|
|
274
|
+
title: "Delete this organization",
|
|
275
|
+
onClick: () => handleOrgDelete(orgID),
|
|
276
|
+
icon: "cross",
|
|
277
|
+
intent: "warning"
|
|
278
|
+
}),
|
|
279
|
+
onChange: makeOrgChangeHandler(orgID, val => ({
|
|
230
280
|
name: {
|
|
231
281
|
$set: val
|
|
232
282
|
}
|
|
@@ -234,92 +284,200 @@ const RegisterMetaForm = function ({
|
|
|
234
284
|
value: s.name
|
|
235
285
|
})), (0, _react2.jsx)("td", null, (0, _react2.jsx)(_core.InputGroup, {
|
|
236
286
|
readOnly: !onChange,
|
|
237
|
-
onChange:
|
|
238
|
-
|
|
239
|
-
$set: val
|
|
287
|
+
onChange: makeOrgChangeHandler(orgID, val => ({
|
|
288
|
+
logoURL: {
|
|
289
|
+
$set: val
|
|
240
290
|
}
|
|
241
291
|
})),
|
|
242
|
-
value: s.
|
|
243
|
-
}))
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
})
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
}
|
|
292
|
+
value: s.logoURL
|
|
293
|
+
})))))) : null), (0, _react2.jsx)(_util.FormGroupAsCardInGrid, {
|
|
294
|
+
paddingPx: PADDING_PX,
|
|
295
|
+
label: "Users:",
|
|
296
|
+
css: (0, _react2.css)`min-width: 100%`,
|
|
297
|
+
helperText: onChange ? (0, _react2.jsx)(_core.Button, {
|
|
298
|
+
onClick: handleStakeholderAdd,
|
|
299
|
+
icon: "add"
|
|
300
|
+
}, "Add") : null
|
|
301
|
+
}, stakeholders.length > 0 ? (0, _react2.jsx)(_core.HTMLTable, {
|
|
302
|
+
css: (0, _react2.css)`margin: 0 -${PADDING_PX}px;`
|
|
303
|
+
}, (0, _react2.jsx)("thead", null, (0, _react2.jsx)("tr", {
|
|
304
|
+
css: (0, _react2.css)`& > * { white-space: nowrap }`
|
|
305
|
+
}, (0, _react2.jsx)("th", null, "Name"), (0, _react2.jsx)("th", null, "Git server username"), (0, _react2.jsx)("th", null, "Role"), (0, _react2.jsx)("th", null, "Affiliations"), (0, _react2.jsx)("th", null, "Contact email"))), (0, _react2.jsx)("tbody", null, [...stakeholders.entries()].map(([idx, s]) => {
|
|
306
|
+
var _a, _b, _c, _d;
|
|
307
|
+
|
|
308
|
+
return (0, _react2.jsx)("tr", {
|
|
309
|
+
key: idx
|
|
310
|
+
}, (0, _react2.jsx)("td", null, (0, _react2.jsx)(_core.InputGroup, {
|
|
311
|
+
readOnly: !onChange,
|
|
312
|
+
onChange: makeStakeholderChangeHandler(idx, val => ({
|
|
313
|
+
name: {
|
|
314
|
+
$set: val
|
|
266
315
|
}
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
316
|
+
})),
|
|
317
|
+
rightElement: (0, _react2.jsx)(_core.Button, {
|
|
318
|
+
key: "delete",
|
|
319
|
+
outlined: true,
|
|
320
|
+
disabled: !onChange,
|
|
321
|
+
title: "Delete this stakeholder",
|
|
322
|
+
onClick: () => handleStakeholderDelete(idx),
|
|
323
|
+
icon: "cross",
|
|
324
|
+
intent: "warning"
|
|
325
|
+
}),
|
|
326
|
+
value: s.name
|
|
327
|
+
})), (0, _react2.jsx)("td", null, (0, _react2.jsx)(_core.InputGroup, {
|
|
328
|
+
readOnly: !onChange,
|
|
329
|
+
onChange: makeStakeholderChangeHandler(idx, val => ({
|
|
330
|
+
gitServerUsername: {
|
|
331
|
+
$set: val || undefined
|
|
332
|
+
}
|
|
333
|
+
})),
|
|
334
|
+
value: s.gitServerUsername || ''
|
|
335
|
+
})), (0, _react2.jsx)("td", null, (0, _react2.jsx)(_select.MultiSelect2, {
|
|
336
|
+
items: _stakeholder.STAKEHOLDER_ROLES,
|
|
337
|
+
popoverProps: {
|
|
338
|
+
minimal: true,
|
|
339
|
+
matchTargetWidth: true
|
|
340
|
+
},
|
|
341
|
+
itemPredicate: (query, roleID) => // Match can be in both role ID and role label
|
|
342
|
+
`${roleID} ${_stakeholder.StakeholderRoleLabels[roleID]}`.toLowerCase().indexOf(query.toLowerCase()) >= 0,
|
|
343
|
+
resetOnSelect: true,
|
|
344
|
+
css: (0, _react2.css)`max-width: 300px;`,
|
|
345
|
+
selectedItems: [...((_a = s.roles) !== null && _a !== void 0 ? _a : [s.role])],
|
|
346
|
+
disabled: !onChange || !s.roles,
|
|
347
|
+
itemDisabled: roleID => {
|
|
348
|
+
var _a;
|
|
349
|
+
|
|
350
|
+
return (_a = s.roles) === null || _a === void 0 ? void 0 : _a.includes(roleID);
|
|
351
|
+
},
|
|
352
|
+
tagRenderer: roleID => _stakeholder.StakeholderRoleLabels[roleID],
|
|
353
|
+
// Make each role take full width & so stak them vertically
|
|
354
|
+
tagInputProps: {
|
|
355
|
+
tagProps: {
|
|
356
|
+
className: 'bp4-fill'
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
onRemove: roleID => onChange((0, _immutabilityHelper.default)(value, {
|
|
360
|
+
stakeholders: {
|
|
361
|
+
[idx]: {
|
|
362
|
+
roles: {
|
|
363
|
+
$splice: [[s.roles.indexOf(roleID), 1]]
|
|
364
|
+
}
|
|
279
365
|
}
|
|
280
366
|
}
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
367
|
+
})),
|
|
368
|
+
itemRenderer: (roleID, {
|
|
369
|
+
handleClick,
|
|
370
|
+
modifiers: {
|
|
371
|
+
active,
|
|
372
|
+
disabled
|
|
373
|
+
}
|
|
374
|
+
}) => (0, _react2.jsx)(_core.MenuItem, {
|
|
375
|
+
text: _stakeholder.StakeholderRoleLabels[roleID],
|
|
376
|
+
active: active,
|
|
377
|
+
disabled: disabled,
|
|
378
|
+
onClick: handleClick
|
|
379
|
+
}),
|
|
380
|
+
onItemSelect: roleID => onChange((0, _immutabilityHelper.default)(value, {
|
|
381
|
+
stakeholders: {
|
|
382
|
+
[idx]: {
|
|
383
|
+
roles: {
|
|
384
|
+
$push: [roleID]
|
|
385
|
+
}
|
|
296
386
|
}
|
|
297
387
|
}
|
|
298
|
-
}
|
|
299
|
-
})),
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
388
|
+
}))
|
|
389
|
+
})), (0, _react2.jsx)("td", null, (0, _react2.jsx)(_core.ControlGroup, {
|
|
390
|
+
vertical: true
|
|
391
|
+
}, Object.entries((_b = s.affiliations) !== null && _b !== void 0 ? _b : {}).sort(([, aff], [, aff2]) => aff2.role.localeCompare(aff.role)).map(([orgID, affiliation], _affiliationIdx) => {
|
|
392
|
+
var _a, _b;
|
|
393
|
+
|
|
394
|
+
return (0, _react2.jsx)(_core.ButtonGroup, {
|
|
395
|
+
key: orgID
|
|
396
|
+
}, (0, _react2.jsx)(_core.InputGroup, {
|
|
397
|
+
key: "org",
|
|
398
|
+
readOnly: true,
|
|
399
|
+
value: (_b = (_a = orgs[orgID]) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : orgID,
|
|
400
|
+
rightElement: (0, _react2.jsx)(_core.Button, {
|
|
401
|
+
key: "delete",
|
|
402
|
+
outlined: true,
|
|
403
|
+
disabled: !onChange,
|
|
404
|
+
title: "Delete this affiliation",
|
|
405
|
+
onClick: () => onChange((0, _immutabilityHelper.default)(value, {
|
|
406
|
+
stakeholders: {
|
|
407
|
+
[idx]: {
|
|
408
|
+
affiliations: {
|
|
409
|
+
$unset: [orgID]
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
})),
|
|
414
|
+
icon: "cross"
|
|
415
|
+
})
|
|
416
|
+
}), (0, _react2.jsx)(_core.HTMLSelect, {
|
|
417
|
+
key: "set-role",
|
|
418
|
+
disabled: !onChange,
|
|
419
|
+
value: affiliation.role,
|
|
420
|
+
options: [{
|
|
421
|
+
value: 'pointOfContact',
|
|
422
|
+
label: 'point of contact'
|
|
423
|
+
}, {
|
|
424
|
+
value: 'member',
|
|
425
|
+
label: 'member'
|
|
426
|
+
}],
|
|
427
|
+
onChange: evt => onChange((0, _immutabilityHelper.default)(value, {
|
|
428
|
+
stakeholders: {
|
|
429
|
+
[idx]: {
|
|
430
|
+
affiliations: {
|
|
431
|
+
[orgID]: {
|
|
432
|
+
role: {
|
|
433
|
+
$set: evt.currentTarget.value
|
|
434
|
+
}
|
|
435
|
+
}
|
|
315
436
|
}
|
|
316
437
|
}
|
|
317
438
|
}
|
|
439
|
+
})),
|
|
440
|
+
title: "Specify role in organization"
|
|
441
|
+
}));
|
|
442
|
+
}), findAffiliationOptions(s).length > 0 && onChange ? (0, _react2.jsx)(_core.HTMLSelect, {
|
|
443
|
+
key: "add",
|
|
444
|
+
options: [{
|
|
445
|
+
label: "Append affiliation…",
|
|
446
|
+
value: ''
|
|
447
|
+
}, ...findAffiliationOptions(s)],
|
|
448
|
+
value: "",
|
|
449
|
+
onChange: evt => {
|
|
450
|
+
var _a;
|
|
451
|
+
|
|
452
|
+
return ((_a = evt.currentTarget.value) === null || _a === void 0 ? void 0 : _a.trim()) !== '' ? onChange((0, _immutabilityHelper.default)(value, {
|
|
453
|
+
stakeholders: {
|
|
454
|
+
[idx]: {
|
|
455
|
+
affiliations: {
|
|
456
|
+
[evt.currentTarget.value]: {
|
|
457
|
+
$set: {
|
|
458
|
+
role: 'member'
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
})) : void 0;
|
|
465
|
+
},
|
|
466
|
+
title: "Append affiliation\u2026"
|
|
467
|
+
}) : null)), (0, _react2.jsx)("td", null, (0, _react2.jsx)(_core.InputGroup, {
|
|
468
|
+
readOnly: !onChange,
|
|
469
|
+
type: "email",
|
|
470
|
+
onChange: makeStakeholderChangeHandler(idx, val => ({
|
|
471
|
+
contacts: {
|
|
472
|
+
$set: [{
|
|
473
|
+
label: 'email',
|
|
474
|
+
value: val
|
|
475
|
+
}]
|
|
318
476
|
}
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
})))
|
|
477
|
+
})),
|
|
478
|
+
value: ((_d = (_c = s.contacts) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.value) || ''
|
|
479
|
+
})));
|
|
480
|
+
}))) : null));
|
|
323
481
|
};
|
|
324
482
|
|
|
325
483
|
const PADDING_PX = 11;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegisterMetaForm.js","sourceRoot":"","sources":["../../../../src/views/detail/RegisterMeta/RegisterMetaForm.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport update, { type Spec } from 'immutability-helper';\nimport React from 'react';\nimport { jsx, css } from '@emotion/react';\nimport {\n ControlGroup,\n InputGroup,\n FormGroup,\n TextArea,\n HTMLTable,\n HTMLSelect,\n Button,\n ButtonGroup,\n} from '@blueprintjs/core';\nimport { DatePicker, TimePrecision } from '@blueprintjs/datetime';\nimport HelpTooltip from '@riboseinc/paneron-extension-kit/widgets/HelpTooltip';\nimport { FormGroupAsCardInGrid } from '../../../views/util'; \nimport type { Register, RegisterStakeholder, Locale } from '../../../types';\nimport { isStakeholderRole } from '../../../types';\nimport { STAKEHOLDER_ROLES, StakeholderRole } from '../../../types/stakeholder';\n\n\n\nconst DUMMY_VERSION: Register[\"version\"] = {\n id: '',\n timestamp: new Date(),\n};\n\nconst DUMMY_CONTACT: Register[\"stakeholders\"][number][\"parties\"][number][\"contacts\"][number] = {\n label: 'email',\n value: '',\n};\n\nconst DUMMY_PARTY: Register[\"stakeholders\"][number][\"parties\"][number] = {\n name: '',\n contacts: [DUMMY_CONTACT],\n};\n\nconst DUMMY_STAKEHOLDER: Register[\"stakeholders\"][number] = {\n role: StakeholderRole.Submitter,\n name: '',\n gitServerUsername: undefined,\n parties: [DUMMY_PARTY],\n};\n\n\nconst RegisterMetaForm: React.FC<{\n value: Register;\n onChange?: (newMeta: Register) => void;\n className?: string;\n}> = function ({ value, onChange, className }) {\n\n console.debug(\"Rendering RegisterMetaForm\");\n\n function handleOperatingLanguageChange(fieldName: keyof Omit<Locale, 'characterEncoding'>) {\n return (evt: React.FormEvent<HTMLInputElement>) => {\n const newValue = update(value, { operatingLanguage: op => update(op ?? {}, { [fieldName]: { $set: evt.currentTarget.value } }) });\n onChange!(newValue);\n }\n }\n\n function makeFormEventHandler\n <T extends HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement = HTMLInputElement>\n (func: (val: string) => Spec<typeof value>) {\n return (evt: React.FormEvent<T>) => {\n const spec = func(evt.currentTarget.value);\n if (spec) {\n onChange!(update(value, spec));\n }\n };\n }\n\n const stakeholders = value.stakeholders ?? [];\n\n function makeStakeholderChangeHandler<T extends HTMLInputElement | HTMLSelectElement>(\n idx: number,\n func: (val: string) => Spec<typeof value[\"stakeholders\"][number]>,\n ) {\n return makeFormEventHandler<T>(val => ({ stakeholders: { [idx]: func(val) } }));\n }\n\n function handleStakeholderAdd() {\n onChange!({ ...value, stakeholders: [ ...stakeholders, DUMMY_STAKEHOLDER ] });\n }\n function handleStakeholderDelete(idx: number) {\n onChange!(update(value, { stakeholders: { $splice: [[idx, 1]] } }));\n }\n\n return (\n <>\n\n <FormGroupAsCardInGrid label=\"Basics:\" paddingPx={PADDING_PX}>\n <FormGroup label=\"Name:\">\n <InputGroup\n fill\n value={value.name || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler(val => ({ name: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Uniform resource identifier:\">\n <InputGroup\n fill\n type=\"url\"\n value={value.uniformResourceIdentifier || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler(val => ({ uniformResourceIdentifier: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Content summary:\">\n <TextArea\n fill\n value={value.contentSummary || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler<HTMLTextAreaElement>(val => ({ contentSummary: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Operating language (locale):\" helperText=\"Name, country and ISO 639-2 language code.\">\n <ControlGroup vertical>\n <InputGroup\n readOnly={!onChange}\n placeholder=\"E.g., Welsh\"\n value={value.operatingLanguage?.name ?? ''}\n onChange={handleOperatingLanguageChange('name')} />\n <InputGroup\n readOnly={!onChange}\n placeholder=\"3-character numerical country code from ISO 3166-1\"\n value={value.operatingLanguage?.country ?? ''}\n onChange={handleOperatingLanguageChange('country')} />\n <InputGroup\n readOnly={!onChange}\n placeholder=\"3-character language code from ISO 639-2\"\n value={value.operatingLanguage?.languageCode ?? ''}\n onChange={handleOperatingLanguageChange('languageCode')} />\n </ControlGroup>\n </FormGroup>\n </FormGroupAsCardInGrid>\n\n <FormGroupAsCardInGrid\n label=\"Version: \"\n // Accommodation for date picker\n css={css`padding-bottom: 0;`}\n paddingPx={PADDING_PX}>\n <FormGroup label=\"Identifier: \">\n <InputGroup\n value={value.version?.id ?? ''}\n readOnly={!onChange}\n placeholder=\"E.g., 1.2\"\n onChange={makeFormEventHandler(val =>\n ({ version: v => update(v ?? DUMMY_VERSION, { id: { $set: val } }) })\n )}\n />\n </FormGroup>\n <FormGroup\n label=\"Published on: \"\n helperText={\n <>\n Date and time are\n <br />\n in {Intl.DateTimeFormat().resolvedOptions().timeZone}.\n {\" \"}\n <HelpTooltip content={<>\n Times are in your computer’s current time zone.\n {onChange\n ? \" When specifying, make sure to offset accordingly if it is different than register publication time zone.\"\n : null}\n </>} />\n </>}>\n <DatePicker\n css={css`margin: 0 -${PADDING_PX - 1}px;`}\n timePrecision={TimePrecision.MINUTE}\n value={value.version?.timestamp ?? null}\n showActionsBar={onChange ? true : false}\n onChange={(val: Date | null) =>\n onChange!(update(value, val !== null\n ? { version: v => update(v ?? DUMMY_VERSION, { timestamp: { $set: val } }) }\n : { $unset: ['version'] }))\n }\n />\n </FormGroup>\n </FormGroupAsCardInGrid>\n\n <FormGroupAsCardInGrid\n paddingPx={PADDING_PX}\n label=\"Stakeholders:\"\n css={css`min-width: max-content`}\n helperText={onChange\n ? <Button onClick={handleStakeholderAdd} icon=\"add\">Add</Button>\n : null}>\n {stakeholders.length > 0\n ? <HTMLTable css={css`margin: 0 -${PADDING_PX}px;`}>\n <thead>\n <tr css={css`& > * { white-space: nowrap }`}>\n <th>Role</th>\n <th>Name</th>\n <th>Git server username</th>\n <th>Parties</th>\n <th>Name</th>\n <th>Email</th>\n </tr>\n </thead>\n <tbody>\n {[ ...stakeholders.entries() ].map(([idx, s]) =>\n <tr key={idx}>\n <td>\n <HTMLSelect\n options={STAKEHOLDER_ROLES.map(r => ({ value: r, label: r }))}\n disabled={!onChange}\n onChange={makeStakeholderChangeHandler<HTMLSelectElement>(idx, (val) =>\n isStakeholderRole(val)\n ? { role: { $set: val } } as Spec<RegisterStakeholder> // Why do we need to cast this\n : {}\n )}\n value={s.role} />\n </td>\n <td>\n <InputGroup\n readOnly={!onChange}\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ name: { $set: val } })\n )}\n value={s.name} />\n </td>\n <td>\n <InputGroup\n readOnly={!onChange}\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ gitServerUsername: { $set: val || undefined } })\n )}\n value={s.gitServerUsername || ''} />\n </td>\n <td>\n <ControlGroup vertical={s.parties.length > 1}>\n {s.parties.map((party, partyIdx) =>\n <ButtonGroup key={partyIdx}>\n {s.parties.length < 2\n ? <Button\n key=\"delete\"\n outlined\n disabled={!onChange || s.parties.length > 1}\n title=\"Delete this stakeholder\"\n onClick={() => handleStakeholderDelete(idx)}\n icon=\"cross\"\n intent=\"warning\"\n />\n : <Button\n key=\"delete\"\n outlined\n disabled={!onChange || s.parties.length < 2 || party.name !== ''}\n title=\"Delete this party\"\n onClick={() => onChange!(update(value, { stakeholders: { [idx]: { parties: { $splice: [[ partyIdx, 1 ]] } } } }))}\n icon=\"cross\"\n />}\n {partyIdx === s.parties.length - 1\n ? <Button\n key=\"add\"\n outlined\n disabled={!onChange}\n onClick={() => onChange!(update(value, { stakeholders: { [idx]: { parties: { $push: [DUMMY_PARTY] } } } }))}\n title=\"Append a party\"\n icon=\"plus\"\n />\n : null}\n </ButtonGroup>\n )}\n </ControlGroup>\n </td>\n <td>\n <ControlGroup vertical={s.parties.length > 1}>\n {s.parties.map((party, partyIdx) =>\n <InputGroup\n key={partyIdx}\n readOnly={!onChange}\n placeholder=\"Individual or organization\"\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ parties: { [partyIdx]: { name: { $set: val } } } })\n )}\n value={(party as { name: string }).name}\n />\n )}\n </ControlGroup>\n </td>\n <td>\n <ControlGroup vertical={s.parties.length > 1}>\n {s.parties.map((party, partyIdx) =>\n <InputGroup\n key={partyIdx}\n type=\"email\"\n placeholder=\"Contact email\"\n readOnly={!onChange}\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ parties: { [partyIdx]: { contacts: { 0: { value: { $set: val } } } } } })\n )}\n value={party.contacts[0].value || ''} />\n )}\n </ControlGroup>\n </td>\n </tr>)}\n </tbody>\n </HTMLTable>\n : null}\n </FormGroupAsCardInGrid>\n </>\n );\n};\n\n\nconst PADDING_PX = 11;\n\n\nexport default RegisterMetaForm;\n"]}
|
|
1
|
+
{"version":3,"file":"RegisterMetaForm.js","sourceRoot":"","sources":["../../../../src/views/detail/RegisterMeta/RegisterMetaForm.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport update, { type Spec } from 'immutability-helper';\nimport React from 'react';\nimport { jsx, css } from '@emotion/react';\nimport {\n ControlGroup,\n InputGroup,\n FormGroup,\n TextArea,\n HTMLTable,\n HTMLSelect,\n Button,\n ButtonGroup,\n MenuItem,\n} from '@blueprintjs/core';\nimport { MultiSelect2 as Select } from '@blueprintjs/select';\nimport { DatePicker, TimePrecision } from '@blueprintjs/datetime';\nimport HelpTooltip from '@riboseinc/paneron-extension-kit/widgets/HelpTooltip';\nimport { FormGroupAsCardInGrid } from '../../../views/util'; \nimport type { Register, RegisterStakeholder, Locale } from '../../../types';\nimport {\n STAKEHOLDER_ROLES,\n type Contact,\n type Organization,\n type StakeholderOrgAffiliation,\n StakeholderRole,\n StakeholderRoleLabels,\n type StakeholderRoleType,\n} from '../../../types/stakeholder';\n\n\n\nconst DUMMY_VERSION: Register[\"version\"] = {\n id: '',\n timestamp: new Date(),\n} as const;\n\nconst DUMMY_CONTACT: Contact = {\n label: 'email',\n value: 'example@example.com',\n} as const;\n\nconst DUMMY_ORG: Organization = {\n name: 'New organization',\n logoURL: '',\n} as const;\n \n// const DUMMY_PARTY: Register[\"stakeholders\"][number][\"parties\"][number] = {\n// name: '',\n// contacts: [DUMMY_CONTACT],\n// };\n\nconst DUMMY_STAKEHOLDER: Register[\"stakeholders\"][number] = {\n roles: [StakeholderRole.Submitter],\n name: 'New stakeholder',\n gitServerUsername: undefined,\n affiliations: {},\n contacts: [DUMMY_CONTACT] as Contact[],\n //parties: [DUMMY_PARTY],\n} as const;\n\n\nconst RegisterMetaForm: React.FC<{\n value: Register;\n onChange?: (newMeta: Register) => void;\n className?: string;\n}> = function ({ value, onChange, className }) {\n\n function handleOperatingLanguageChange(fieldName: keyof Omit<Locale, 'characterEncoding'>) {\n return (evt: React.FormEvent<HTMLInputElement>) => {\n const newValue = update(value, { operatingLanguage: op => update(op ?? {}, { [fieldName]: { $set: evt.currentTarget.value } }) });\n onChange!(newValue);\n }\n }\n\n function makeFormEventHandler\n <T extends HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement = HTMLInputElement>\n (func: (val: string) => Spec<typeof value>) {\n return (evt: React.FormEvent<T>) => {\n const spec = func(evt.currentTarget.value);\n if (spec) {\n onChange!(update(value, spec));\n }\n };\n }\n\n const stakeholders = value.stakeholders ?? [];\n\n const orgs = value.organizations ?? {};\n const organizationIDs = Object.keys(orgs);\n\n function makeStakeholderChangeHandler<T extends HTMLInputElement | HTMLSelectElement>(\n idx: number,\n func: (val: string) => Spec<typeof value[\"stakeholders\"][number]>,\n ) {\n return makeFormEventHandler<T>(val => ({ stakeholders: { [idx]: func(val) } }));\n }\n\n function handleStakeholderAdd() {\n onChange!({ ...value, stakeholders: [ ...stakeholders, DUMMY_STAKEHOLDER ] });\n }\n function handleStakeholderDelete(idx: number) {\n onChange!(update(value, { stakeholders: { $splice: [[idx, 1]] } }));\n }\n\n function makeOrgChangeHandler<T extends HTMLInputElement | HTMLSelectElement>(\n orgID: string,\n func: (val: string) => Spec<typeof value[\"organizations\"][string]>,\n ) {\n return makeFormEventHandler<T>(val => ({ organizations: { [orgID]: func(val) } }));\n }\n\n function handleOrgAdd() {\n const newID = crypto.randomUUID();\n onChange!({ ...value, organizations: { ...orgs, [newID]: DUMMY_ORG } });\n }\n function handleOrgDelete(orgID: string) {\n onChange!(update(value, { organizations: { $unset: [orgID] } }));\n }\n\n function findAffiliations(orgID: string): StakeholderOrgAffiliation[] {\n return stakeholders.\n filter(s => s.affiliations?.[orgID] !== undefined).\n flatMap(s => Object.values(s.affiliations ?? {}));\n }\n\n function findAffiliationOptions(s: RegisterStakeholder) {\n return Object.entries(orgs).\n filter(([orgID]) => s.affiliations?.[orgID] === undefined).\n map(([orgID, org]) => ({\n value: orgID,\n label: org.name,\n }));\n }\n\n return (\n <>\n\n <FormGroupAsCardInGrid label=\"Basics:\" paddingPx={PADDING_PX}>\n <FormGroup label=\"Name:\">\n <InputGroup\n fill\n value={value.name || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler(val => ({ name: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Uniform resource identifier:\">\n <InputGroup\n fill\n type=\"url\"\n value={value.uniformResourceIdentifier || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler(val => ({ uniformResourceIdentifier: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Content summary:\">\n <TextArea\n fill\n value={value.contentSummary || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler<HTMLTextAreaElement>(val => ({ contentSummary: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Operating language (locale):\" helperText=\"Name, country and ISO 639-2 language code.\">\n <ControlGroup vertical>\n <InputGroup\n readOnly={!onChange}\n placeholder=\"E.g., Welsh\"\n value={value.operatingLanguage?.name ?? ''}\n onChange={handleOperatingLanguageChange('name')} />\n <InputGroup\n readOnly={!onChange}\n placeholder=\"3-character numerical country code from ISO 3166-1\"\n value={value.operatingLanguage?.country ?? ''}\n onChange={handleOperatingLanguageChange('country')} />\n <InputGroup\n readOnly={!onChange}\n placeholder=\"3-character language code from ISO 639-2\"\n value={value.operatingLanguage?.languageCode ?? ''}\n onChange={handleOperatingLanguageChange('languageCode')} />\n </ControlGroup>\n </FormGroup>\n </FormGroupAsCardInGrid>\n\n <FormGroupAsCardInGrid\n label=\"Version: \"\n // Accommodation for date picker\n css={css`padding-bottom: 0;`}\n paddingPx={PADDING_PX}>\n <FormGroup label=\"Identifier: \">\n <InputGroup\n value={value.version?.id ?? ''}\n readOnly={!onChange}\n placeholder=\"E.g., 1.2\"\n onChange={makeFormEventHandler(val =>\n ({ version: v => update(v ?? DUMMY_VERSION, { id: { $set: val } }) })\n )}\n />\n </FormGroup>\n <FormGroup\n label=\"Published on: \"\n helperText={\n <>\n Date and time are\n <br />\n in {Intl.DateTimeFormat().resolvedOptions().timeZone}.\n {\" \"}\n <HelpTooltip content={<>\n Times are in your computer’s current time zone.\n {onChange\n ? \" When specifying, make sure to offset accordingly if it is different than register publication time zone.\"\n : null}\n </>} />\n </>}>\n <DatePicker\n css={css`margin: 0 -${PADDING_PX - 1}px;`}\n timePrecision={TimePrecision.MINUTE}\n value={value.version?.timestamp ?? null}\n showActionsBar={onChange ? true : false}\n onChange={(val: Date | null) =>\n onChange!(update(value, val !== null\n ? { version: v => update(v ?? DUMMY_VERSION, { timestamp: { $set: val } }) }\n : { $unset: ['version'] }))\n }\n />\n </FormGroup>\n </FormGroupAsCardInGrid>\n\n <FormGroupAsCardInGrid\n paddingPx={PADDING_PX}\n label=\"Organizations:\"\n css={css`min-width: 100%`}\n helperText={onChange\n ? <Button onClick={handleOrgAdd} icon=\"add\">Add</Button>\n : null}>\n {organizationIDs.length > 0\n ? <HTMLTable css={css`margin: 0 -${PADDING_PX}px;`}>\n <thead>\n <tr css={css`& > * { white-space: nowrap }`}>\n <th>Name</th>\n <th>Logo URL</th>\n </tr>\n </thead>\n <tbody>\n {[ ...Object.entries(value.organizations) ].map(([orgID, s]) =>\n <tr key={orgID}>\n <td>\n <InputGroup\n readOnly={!onChange}\n rightElement={\n <Button\n key=\"delete\"\n outlined\n disabled={!onChange || findAffiliations(orgID).length > 0}\n title=\"Delete this organization\"\n onClick={() => handleOrgDelete(orgID)}\n icon=\"cross\"\n intent=\"warning\"\n />\n }\n onChange={makeOrgChangeHandler(orgID, (val) =>\n ({ name: { $set: val } })\n )}\n value={s.name} />\n </td>\n <td>\n <InputGroup\n readOnly={!onChange}\n onChange={makeOrgChangeHandler(orgID, (val) =>\n ({ logoURL: { $set: val } })\n )}\n value={s.logoURL} />\n </td>\n </tr>)}\n </tbody>\n </HTMLTable>\n : null}\n </FormGroupAsCardInGrid>\n\n <FormGroupAsCardInGrid\n paddingPx={PADDING_PX}\n label=\"Users:\"\n css={css`min-width: 100%`}\n helperText={onChange\n ? <Button onClick={handleStakeholderAdd} icon=\"add\">Add</Button>\n : null}>\n {stakeholders.length > 0\n ? <HTMLTable css={css`margin: 0 -${PADDING_PX}px;`}>\n <thead>\n <tr css={css`& > * { white-space: nowrap }`}>\n <th>Name</th>\n <th>Git server username</th>\n <th>Role</th>\n <th>Affiliations</th>\n <th>Contact email</th>\n </tr>\n </thead>\n <tbody>\n {[ ...stakeholders.entries() ].map(([idx, s]) =>\n <tr key={idx}>\n <td>\n <InputGroup\n readOnly={!onChange}\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ name: { $set: val } })\n )}\n rightElement={\n <Button\n key=\"delete\"\n outlined\n disabled={!onChange}\n title=\"Delete this stakeholder\"\n onClick={() => handleStakeholderDelete(idx)}\n icon=\"cross\"\n intent=\"warning\"\n />\n }\n value={s.name} />\n </td>\n <td>\n <InputGroup\n readOnly={!onChange}\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ gitServerUsername: { $set: val || undefined } })\n )}\n value={s.gitServerUsername || ''} />\n </td>\n <td>\n <Select<StakeholderRoleType>\n items={STAKEHOLDER_ROLES}\n popoverProps={{\n minimal: true,\n matchTargetWidth: true,\n }}\n itemPredicate={(query, roleID) =>\n // Match can be in both role ID and role label\n `${roleID} ${StakeholderRoleLabels[roleID]}`.\n toLowerCase().\n indexOf(query.toLowerCase()) >= 0\n }\n resetOnSelect\n css={css`max-width: 300px;`}\n selectedItems={[...(s.roles ?? [(s as any).role as string])]}\n disabled={!onChange || !s.roles}\n itemDisabled={roleID => s.roles?.includes(roleID)}\n tagRenderer={roleID => StakeholderRoleLabels[roleID]}\n // Make each role take full width & so stak them vertically\n tagInputProps={{ tagProps: { className: 'bp4-fill' }}}\n onRemove={roleID =>\n onChange!(update(value, { stakeholders: { [idx]: { roles: { $splice: [[s.roles.indexOf(roleID), 1]] } } } }))\n }\n itemRenderer={(roleID, { handleClick, modifiers: { active, disabled } }) =>\n <MenuItem\n text={StakeholderRoleLabels[roleID]}\n active={active}\n disabled={disabled}\n onClick={handleClick}\n />\n }\n onItemSelect={roleID =>\n onChange!(update(value, { stakeholders: { [idx]: { roles: { $push: [roleID] } } } }))\n }\n />\n </td>\n <td>\n <ControlGroup vertical>\n {Object.entries(s.affiliations ?? {}).\n sort(([, aff], [, aff2]) => aff2.role.localeCompare(aff.role)).\n map(([orgID, affiliation], _affiliationIdx) =>\n <ButtonGroup key={orgID}>\n <InputGroup\n key=\"org\"\n readOnly\n value={orgs[orgID]?.name ?? orgID}\n rightElement={\n <Button\n key=\"delete\"\n outlined\n disabled={!onChange}\n title=\"Delete this affiliation\"\n onClick={() => onChange!(update(value, { stakeholders: { [idx]: { affiliations: { $unset: [orgID] } } } }))}\n icon=\"cross\"\n />\n }\n />\n <HTMLSelect\n key=\"set-role\"\n disabled={!onChange}\n value={affiliation.role}\n options={[\n { value: 'pointOfContact', label: 'point of contact' },\n { value: 'member', label: 'member' },\n ]}\n onChange={(evt) => onChange!(update(value, { stakeholders: { [idx]: { affiliations: { [orgID]: { role: { $set: evt.currentTarget.value as 'pointOfContact' | 'member' } } } } } }))}\n title=\"Specify role in organization\"\n />\n </ButtonGroup>\n )}\n {findAffiliationOptions(s).length > 0 && onChange\n ? <HTMLSelect\n key=\"add\"\n options={[\n { label: \"Append affiliation…\", value: '' },\n ...findAffiliationOptions(s),\n ]}\n value=\"\"\n onChange={(evt) => evt.currentTarget.value?.trim() !== ''\n ? onChange!(update(value, { stakeholders: { [idx]: { affiliations: { [evt.currentTarget.value]: { $set: { role: 'member' } } } } } }))\n : void 0}\n title=\"Append affiliation…\"\n />\n : null}\n </ControlGroup>\n </td>\n <td>\n <InputGroup\n readOnly={!onChange}\n type=\"email\"\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ contacts: { $set: [{ label: 'email', value: val }] } })\n )}\n value={s.contacts?.[0]?.value || ''} />\n </td>\n </tr>)}\n </tbody>\n </HTMLTable>\n : null}\n </FormGroupAsCardInGrid>\n </>\n );\n};\n\n\nconst PADDING_PX = 11;\n\n\nexport default RegisterMetaForm;\n"]}
|
|
@@ -48,7 +48,7 @@ const RegisterMeta = function () {
|
|
|
48
48
|
const [editedMetadata, setEditedMetadata] = (0, _react.useState)(null);
|
|
49
49
|
const canChange = updateObjects ? true : false;
|
|
50
50
|
const didChange = registerMetadata && editedMetadata && JSON.stringify(editedMetadata) !== JSON.stringify(registerMetadata);
|
|
51
|
-
const owner = ((_a = registerMetadata === null || registerMetadata === void 0 ? void 0 : registerMetadata.stakeholders) !== null && _a !== void 0 ? _a : []).find(
|
|
51
|
+
const owner = ((_a = registerMetadata === null || registerMetadata === void 0 ? void 0 : registerMetadata.stakeholders) !== null && _a !== void 0 ? _a : []).find(_stakeholder.isOwner);
|
|
52
52
|
const stakeholderCanEdit = !owner || stakeholder && (0, _stakeholder.isOwner)(stakeholder);
|
|
53
53
|
|
|
54
54
|
function handleClear() {
|