@riboseinc/paneron-registry-kit 2.2.31 → 2.2.33
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.d.ts +2 -2
- package/index.js +3 -3
- package/index.js.map +1 -1
- package/item-classes/Tree.js +4 -6
- package/item-classes/Tree.js.map +1 -1
- package/item-classes/treeNodes.js +1 -1
- package/item-classes/treeNodes.js.map +1 -1
- package/package.json +2 -2
- package/{views/change-request → proposals}/ChangeRequestContext.d.ts +3 -2
- package/{views/change-request → proposals}/ChangeRequestContext.js +7 -7
- package/proposals/ChangeRequestContext.js.map +1 -0
- package/{views/ProposalHistoryDrawer.js → proposals/HistoryDrawer.js} +11 -13
- package/proposals/HistoryDrawer.js.map +1 -0
- package/{views/change-request/Summary.d.ts → proposals/MetaProperties.d.ts} +4 -3
- package/{views/change-request/Summary.js → proposals/MetaProperties.js} +9 -4
- package/proposals/MetaProperties.js.map +1 -0
- package/proposals/ProposalBrowser.d.ts +22 -0
- package/{views/change-request/Proposals.js → proposals/ProposalBrowser.js} +22 -204
- package/proposals/ProposalBrowser.js.map +1 -0
- package/proposals/ProposalDetail.d.ts +6 -0
- package/proposals/ProposalDetail.js +66 -0
- package/proposals/ProposalDetail.js.map +1 -0
- package/proposals/ProposalItem.d.ts +16 -0
- package/proposals/ProposalItem.js +57 -0
- package/proposals/ProposalItem.js.map +1 -0
- package/proposals/ProposalSummary.d.ts +6 -0
- package/proposals/ProposalSummary.js +62 -0
- package/proposals/ProposalSummary.js.map +1 -0
- package/proposals/ProposalType.d.ts +11 -0
- package/proposals/ProposalType.js +99 -0
- package/proposals/ProposalType.js.map +1 -0
- package/proposals/Search.d.ts +26 -0
- package/proposals/Search.js +108 -0
- package/proposals/Search.js.map +1 -0
- package/{views/change-request → proposals}/TransitionHistory.d.ts +3 -2
- package/{views/change-request → proposals}/TransitionHistory.js +18 -14
- package/proposals/TransitionHistory.js.map +1 -0
- package/{views/change-request → proposals}/TransitionOptions.d.ts +3 -3
- package/{views/change-request → proposals}/TransitionOptions.js +34 -12
- package/proposals/TransitionOptions.js.map +1 -0
- package/proposals/actionableGroups/Tree.js +22 -4
- package/proposals/actionableGroups/Tree.js.map +1 -1
- package/proposals/actionableGroups/queries.d.ts +0 -1
- package/proposals/actionableGroups/queries.js +7 -10
- package/proposals/actionableGroups/queries.js.map +1 -1
- package/proposals/actionableGroups/treeNodes.d.ts +1 -1
- package/proposals/actionableGroups/treeNodes.js +4 -2
- package/proposals/actionableGroups/treeNodes.js.map +1 -1
- package/proposals/index.d.ts +6 -0
- package/proposals/index.js +83 -0
- package/proposals/index.js.map +1 -0
- package/{views/change-request → proposals}/objectChangeset.d.ts +4 -3
- package/{views/change-request → proposals}/objectChangeset.js +5 -5
- package/proposals/objectChangeset.js.map +1 -0
- package/proposals/queries.d.ts +4 -0
- package/proposals/queries.js +14 -0
- package/proposals/queries.js.map +1 -0
- package/{types/cr.d.ts → proposals/types.d.ts} +78 -4
- package/{types/cr.js → proposals/types.js} +68 -2
- package/proposals/types.js.map +1 -0
- package/types/index.d.ts +0 -1
- package/types/index.js +0 -13
- package/types/index.js.map +1 -1
- package/types/views.d.ts +1 -1
- package/types/views.js.map +1 -1
- package/views/FilterCriteria/models.d.ts +2 -0
- package/views/FilterCriteria/models.js +12 -2
- package/views/FilterCriteria/models.js.map +1 -1
- package/views/GenericRelatedItemView.js +4 -4
- package/views/GenericRelatedItemView.js.map +1 -1
- package/views/RegisterStakeholder.d.ts +4 -1
- package/views/RegisterStakeholder.js +19 -13
- package/views/RegisterStakeholder.js.map +1 -1
- package/views/StatefulTree.d.ts +11 -2
- package/views/StatefulTree.js +5 -2
- package/views/StatefulTree.js.map +1 -1
- package/views/detail/ChangeRequest/index.js +10 -10
- package/views/detail/ChangeRequest/index.js.map +1 -1
- package/views/detail/ProposalWork.d.ts +8 -0
- package/views/detail/ProposalWork.js +173 -0
- package/views/detail/ProposalWork.js.map +1 -0
- package/views/detail/RegisterHome/ActiveProposalDetails.d.ts +1 -1
- package/views/detail/RegisterHome/ActiveProposalDetails.js +4 -4
- package/views/detail/RegisterHome/ActiveProposalDetails.js.map +1 -1
- package/views/detail/RegisterHome/Proposal.d.ts +1 -1
- package/views/detail/RegisterHome/Proposal.js +2 -6
- package/views/detail/RegisterHome/Proposal.js.map +1 -1
- package/views/detail/RegisterHome/index.js +10 -14
- package/views/detail/RegisterHome/index.js.map +1 -1
- package/views/detail/RegisterItem/index.d.ts +1 -1
- package/views/detail/RegisterItem/index.js +7 -7
- package/views/detail/RegisterItem/index.js.map +1 -1
- package/views/detail/RegisterItemClass.js +1 -1
- package/views/detail/RegisterItemClass.js.map +1 -1
- package/views/hooks/useRegisterVersion.d.ts +1 -0
- package/views/hooks/useRegisterVersion.js +43 -0
- package/views/hooks/useRegisterVersion.js.map +1 -0
- package/views/hooks/useSingleRegisterItemData.js.map +1 -1
- package/views/index.js +18 -12
- package/views/index.js.map +1 -1
- package/views/itemQueryUtils.d.ts +1 -1
- package/views/itemQueryUtils.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 +2 -2
- package/views/sidebar/Browse/index.js.map +1 -1
- package/views/sidebar/Registration/index.d.ts +0 -1
- package/views/sidebar/Registration/index.js +9 -10
- package/views/sidebar/Registration/index.js.map +1 -1
- package/views/sidebar/Search/index.d.ts +3 -0
- package/views/sidebar/Search/index.js +8 -4
- package/views/sidebar/Search/index.js.map +1 -1
- package/views/util.js +1 -0
- package/views/util.js.map +1 -1
- package/types/cr.js.map +0 -1
- package/types/proposal.d.ts +0 -90
- package/types/proposal.js +0 -71
- package/types/proposal.js.map +0 -1
- package/views/ProposalHistoryDrawer.js.map +0 -1
- package/views/change-request/ChangeRequestContext.js.map +0 -1
- package/views/change-request/Proposals.d.ts +0 -40
- package/views/change-request/Proposals.js.map +0 -1
- package/views/change-request/Summary.js.map +0 -1
- package/views/change-request/TransitionHistory.js.map +0 -1
- package/views/change-request/TransitionOptions.js.map +0 -1
- package/views/change-request/objectChangeset.js.map +0 -1
- package/views/change-request/util.d.ts +0 -4
- package/views/change-request/util.js +0 -14
- package/views/change-request/util.js.map +0 -1
- /package/{views/ProposalHistoryDrawer.d.ts → proposals/HistoryDrawer.d.ts} +0 -0
package/index.d.ts
CHANGED
|
@@ -10,9 +10,9 @@ import GenericRelatedItemView from './views/GenericRelatedItemView';
|
|
|
10
10
|
import { PropertyDetailView } from './views/util';
|
|
11
11
|
import CRITERIA_CONFIGURATION from './views/FilterCriteria/CRITERIA_CONFIGURATION';
|
|
12
12
|
import useSingleRegisterItemData from './views/hooks/useSingleRegisterItemData';
|
|
13
|
-
import { isAddition } from './types
|
|
13
|
+
import { isAddition } from './proposals/types';
|
|
14
14
|
import type { Payload } from './types/item';
|
|
15
15
|
import { Protocols } from './views/protocolRegistry';
|
|
16
|
-
import { ChangeRequestContext } from './
|
|
16
|
+
import { ChangeRequestContext } from './proposals/ChangeRequestContext';
|
|
17
17
|
import RegisterHome from './views/detail/RegisterHome';
|
|
18
18
|
export { itemRefToItemPath, itemPathToItemRef, itemPathInCR, incompleteItemRefToItemPathPrefix, BrowserCtx, CRITERIA_CONFIGURATION, GenericRelatedItemView, PropertyDetailView, useSingleRegisterItemData, isAddition, Payload, Protocols, ChangeRequestContext, RegisterHome, };
|
package/index.js
CHANGED
|
@@ -60,7 +60,7 @@ Object.defineProperty(exports, "useSingleRegisterItemData", {
|
|
|
60
60
|
Object.defineProperty(exports, "isAddition", {
|
|
61
61
|
enumerable: true,
|
|
62
62
|
get: function () {
|
|
63
|
-
return
|
|
63
|
+
return _types.isAddition;
|
|
64
64
|
}
|
|
65
65
|
});
|
|
66
66
|
Object.defineProperty(exports, "Protocols", {
|
|
@@ -105,11 +105,11 @@ var _CRITERIA_CONFIGURATION = _interopRequireDefault(require("./views/FilterCrit
|
|
|
105
105
|
|
|
106
106
|
var _useSingleRegisterItemData = _interopRequireDefault(require("./views/hooks/useSingleRegisterItemData"));
|
|
107
107
|
|
|
108
|
-
var
|
|
108
|
+
var _types = require("./proposals/types");
|
|
109
109
|
|
|
110
110
|
var _protocolRegistry = require("./views/protocolRegistry");
|
|
111
111
|
|
|
112
|
-
var _ChangeRequestContext = require("./
|
|
112
|
+
var _ChangeRequestContext = require("./proposals/ChangeRequestContext");
|
|
113
113
|
|
|
114
114
|
var _RegisterHome = _interopRequireDefault(require("./views/detail/RegisterHome"));
|
|
115
115
|
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,aAAa,MAAM,wDAAwD,CAAC;AAInF,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQvC,MAAM,CAAC,MAAM,qBAAqB,GAA2B,UAAU,IAAI;IACzE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAEtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;QAC5D,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACtD,MAAM,IAAI,GAAG,IAAW,CAAC;YACzB,IAAI,IAAI,EAAE;gBACR,GAAG,CAAC,KAAK,CAAC,MAAoD,CAAC,GAAG,SAAS,uBAAuB,CAAC,KAAK;oBACtG,OAAO,CACL,oBAAC,aAAa,IACV,QAAQ,EAAE,mBAAmB,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAC7C,MAAM,EAAE,MAAM,KAAK,cAAc;wBACnC,oBAAC,IAAI,OAAK,KAAK,GAAI,CACL,CACjB,CAAC;gBACJ,CAAC,CAAC;aACH;SACF;KACF;IAED,MAAM,QAAQ,GAAoC,SAAS,aAAa;QACtE,OAAO,CACL,oBAAC,YAAY,IACX,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,EACnD,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EACjD,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EACrD,eAAe,EAAE,IAAI,CAAC,eAAe,GACrC,CACH,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,aAAa,CAAC;QACnB,QAAQ;QACR,IAAI;QACJ,sBAAsB,EAAE,OAAO;QAC/B,iBAAiB,EAAE,EAAE;QACrB,kBAAkB;KACnB,CAAC,CAAC;AACL,CAAC,CAAC;AAGF,aAAa;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AAC9H,OAAO,sBAAsB,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,sBAAsB,MAAM,+CAA+C,CAAC;AACnF,OAAO,yBAAyB,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,aAAa,MAAM,wDAAwD,CAAC;AAInF,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQvC,MAAM,CAAC,MAAM,qBAAqB,GAA2B,UAAU,IAAI;IACzE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAEtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;QAC5D,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACtD,MAAM,IAAI,GAAG,IAAW,CAAC;YACzB,IAAI,IAAI,EAAE;gBACR,GAAG,CAAC,KAAK,CAAC,MAAoD,CAAC,GAAG,SAAS,uBAAuB,CAAC,KAAK;oBACtG,OAAO,CACL,oBAAC,aAAa,IACV,QAAQ,EAAE,mBAAmB,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAC7C,MAAM,EAAE,MAAM,KAAK,cAAc;wBACnC,oBAAC,IAAI,OAAK,KAAK,GAAI,CACL,CACjB,CAAC;gBACJ,CAAC,CAAC;aACH;SACF;KACF;IAED,MAAM,QAAQ,GAAoC,SAAS,aAAa;QACtE,OAAO,CACL,oBAAC,YAAY,IACX,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,EACnD,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EACjD,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EACrD,eAAe,EAAE,IAAI,CAAC,eAAe,GACrC,CACH,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,aAAa,CAAC;QACnB,QAAQ;QACR,IAAI;QACJ,sBAAsB,EAAE,OAAO;QAC/B,iBAAiB,EAAE,EAAE;QACrB,kBAAkB;KACnB,CAAC,CAAC;AACL,CAAC,CAAC;AAGF,aAAa;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AAC9H,OAAO,sBAAsB,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,sBAAsB,MAAM,+CAA+C,CAAC;AACnF,OAAO,yBAAyB,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,YAAY,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iCAAiC,EACjC,UAAU,EACV,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,yBAAyB,EACzB,UAAU,EAEV,SAAS,EACT,oBAAoB,EACpB,YAAY,GACb,CAAC","sourcesContent":["import React from 'react';\nimport { makeExtension } from '@riboseinc/paneron-extension-kit';\nimport type { Extension } from '@riboseinc/paneron-extension-kit/types';\nimport ErrorBoundary from '@riboseinc/paneron-extension-kit/widgets/ErrorBoundary';\nimport type { ExtensionMakerProps } from '@riboseinc/paneron-extension-kit/types/extension-maker';\nimport type { RegistryViewProps } from './types';\nimport type { ItemClassConfiguration } from './types/views';\nimport datasetInitializer from './migrations/initial';\nimport { RegistryView } from './views';\n\nexport type RegistryExtensionMakerProps =\n Pick<ExtensionMakerProps, 'name'> & RegistryViewProps\n\nexport type RegistryExtensionMaker =\n (opts: RegistryExtensionMakerProps) => Promise<Extension>;\n\nexport const makeRegistryExtension: RegistryExtensionMaker = function (opts) {\n const { name } = opts;\n\n for (const cls of Object.values(opts.itemClassConfiguration)) {\n for (const [viewID, view] of Object.entries(cls.views)) {\n const View = view as any;\n if (View) {\n cls.views[viewID as keyof ItemClassConfiguration<any>[\"views\"]] = function WrappedRegisterItemView(props) {\n return (\n <ErrorBoundary\n viewName={`Detail view for ${cls.meta.title}`}\n inline={viewID === 'listItemView'}>\n <View {...props} />\n </ErrorBoundary>\n );\n };\n }\n }\n }\n\n const mainView: ExtensionMakerProps[\"mainView\"] = function _RegistryView () {\n return (\n <RegistryView\n itemClassConfiguration={opts.itemClassConfiguration}\n itemClassGroups={opts.itemClassGroups}\n subregisters={opts.subregisters}\n CustomWorkspace={opts.CustomWorkspace}\n defaultSearchCriteria={opts.defaultSearchCriteria}\n keyExpression={opts.keyExpression}\n getQuickSearchPredicate={opts.getQuickSearchPredicate}\n alterApprovedCR={opts.alterApprovedCR}\n />\n );\n };\n\n return makeExtension({\n mainView,\n name,\n requiredHostAppVersion: '2.0.0',\n datasetMigrations: {},\n datasetInitializer,\n });\n};\n\n\n// Re-exports\n\nimport { BrowserCtx } from './views/BrowserCtx';\nimport { itemPathInCR, itemPathToItemRef, itemRefToItemPath, incompleteItemRefToItemPathPrefix } from './views/itemPathUtils';\nimport GenericRelatedItemView from './views/GenericRelatedItemView';\nimport { PropertyDetailView } from './views/util';\nimport CRITERIA_CONFIGURATION from './views/FilterCriteria/CRITERIA_CONFIGURATION';\nimport useSingleRegisterItemData from './views/hooks/useSingleRegisterItemData';\nimport { isAddition } from './proposals/types';\nimport type { Payload } from './types/item';\nimport { Protocols } from './views/protocolRegistry';\nimport { ChangeRequestContext } from './proposals/ChangeRequestContext';\nimport RegisterHome from './views/detail/RegisterHome';\n\nexport {\n itemRefToItemPath,\n itemPathToItemRef,\n itemPathInCR,\n incompleteItemRefToItemPathPrefix,\n BrowserCtx,\n CRITERIA_CONFIGURATION,\n GenericRelatedItemView,\n PropertyDetailView,\n useSingleRegisterItemData,\n isAddition,\n Payload,\n Protocols,\n ChangeRequestContext,\n RegisterHome,\n};\n"]}
|
package/item-classes/Tree.js
CHANGED
|
@@ -13,11 +13,9 @@ var _context = require("@riboseinc/paneron-extension-kit/context");
|
|
|
13
13
|
|
|
14
14
|
var _context2 = require("@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace/context");
|
|
15
15
|
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
var _ChangeRequestContext = require("../views/change-request/ChangeRequestContext");
|
|
16
|
+
var _proposals = require("../proposals");
|
|
19
17
|
|
|
20
|
-
var
|
|
18
|
+
var _StatefulTree = _interopRequireDefault(require("../views/StatefulTree"));
|
|
21
19
|
|
|
22
20
|
var _BrowserCtx = require("../views/BrowserCtx");
|
|
23
21
|
|
|
@@ -44,7 +42,7 @@ const ItemClassTree = function () {
|
|
|
44
42
|
const {
|
|
45
43
|
changeRequest: activeCR,
|
|
46
44
|
canEdit: activeCRIsEditable
|
|
47
|
-
} = (0, _react.useContext)(
|
|
45
|
+
} = (0, _react.useContext)(_proposals.ChangeRequestContext);
|
|
48
46
|
const {
|
|
49
47
|
subregisters,
|
|
50
48
|
itemClasses,
|
|
@@ -83,7 +81,7 @@ const ItemClassTree = function () {
|
|
|
83
81
|
const itemPath = (0, _itemPathUtils.itemRefToItemPath)(ref);
|
|
84
82
|
await updateObjects({
|
|
85
83
|
commitMessage: `propose to add new ${ref.classID}`,
|
|
86
|
-
objectChangeset: (0,
|
|
84
|
+
objectChangeset: (0, _proposals.updateCRObjectChangeset)(activeCR, {
|
|
87
85
|
[itemPath]: {
|
|
88
86
|
type: 'addition'
|
|
89
87
|
}
|
package/item-classes/Tree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tree.js","sourceRoot":"","sources":["../../src/item-classes/Tree.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAc,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAE1G,OAAO,
|
|
1
|
+
{"version":3,"file":"Tree.js","sourceRoot":"","sources":["../../src/item-classes/Tree.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAc,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAE1G,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,mBAAgD,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,OAAO,EAAE,qCAAqC,EAAE,MAAM,aAAa,CAAC;AAGpE,MAAM,aAAa,GAAsD;IAEvE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACrF,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IACxD,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAClG,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAE9E,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,aAAsB;;QAC/F,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,IAAI,CAAC,kBAAkB,IAAI,CAAC,QAAQ,EAAE;YACvE,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;SAC3G;QACD,IAAI,YAAY,IAAI,CAAC,aAAa,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;SAC3G;QACD,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;SAC1F;QACD,MAAM,eAAe,GAAG,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,mCAAI,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QACpC,MAAM,GAAG,GAA0B,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QACtE,MAAM,YAAY,GAAsB;YACtC,EAAE,EAAE,MAAM;YACV,YAAY,EAAE,IAAI,IAAI,EAAE;YACxB,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,eAAe;SACtB,CAAC;QACF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,aAAa,CAAC;YAClB,aAAa,EAAE,sBAAsB,GAAG,CAAC,OAAO,EAAE;YAClD,eAAe,EAAE,uBAAuB,CACtC,QAAe,EACf,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EACpC,EAAE,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAC7B;YACD,0BAA0B,EAAE,IAAI;SACjC,CAAC,CAAC;QACH,QAAQ,CAAC,GAAG,SAAS,CAAC,YAAY,IAAI,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,EAAE,YAAY,KAAK,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IAEtG,MAAM,SAAS,GAAmD,OAAO,CAAC,CAAC,GAAG,EAAE,CAC9E,CAAC,YAAY,IAAI,kBAAkB,IAAI,gBAAgB;QACrD,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC;QACvE,CAAC,CAAC,SAAS,CACd,EAAE,CAAC,UAAU,EAAE,YAAY,KAAK,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEnF,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,CAAC,KAAgB,EAAE,EAAE;;QACpB,OAAA,qCAAqC,CAAC,WAAW,EAAE,eAAe,EAAE;YAClE,cAAc,EAAE,MAAA,KAAK,CAAC,cAAc,mCAAI,SAAS;YACjD,mBAAmB,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC;YACnD,aAAa,EAAE,SAAS;SACzB,CAAC,CAAA;KAAA,CAAC,EACL,CAAC,WAAW,EAAE,eAAe,EAAE,SAAS,CAAC,CAC1C,CAAC;IAEF,OAAO,IAAC,mBAAmB,IACzB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAC,cAAc,EACvB,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,GAC3E,CAAC;AACL,CAAC,CAAC;AAGF,eAAe,aAAa,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useContext, useMemo, useCallback } from 'react';\nimport { jsx } from '@emotion/react';\n\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport { TabbedWorkspaceContext } from '@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace/context';\n\nimport { ChangeRequestContext, updateCRObjectChangeset } from '../proposals';\nimport GenericStatefulTree, { type State as TreeState } from '../views/StatefulTree';\nimport { BrowserCtx } from '../views/BrowserCtx';\nimport { itemRefToItemPath } from '../views/itemPathUtils';\nimport { Protocols } from '../views/protocolRegistry';\nimport type { RegisterItem, InternalItemReference } from '../types';\n\nimport { getMaybeGroupedItemClassesAsTreeNodes } from './treeNodes';\n\n\nconst ItemClassTree: React.VoidFunctionComponent<Record<never, never>> = function () {\n\n const { performOperation, updateObjects, makeRandomID } = useContext(DatasetContext);\n const { spawnTab } = useContext(TabbedWorkspaceContext);\n const { changeRequest: activeCR, canEdit: activeCRIsEditable } = useContext(ChangeRequestContext);\n const { subregisters, itemClasses, itemClassGroups } = useContext(BrowserCtx);\n\n const createItem = useCallback(async function _createItem(classID: string, subregisterID?: string) {\n if (!updateObjects || !makeRandomID || !activeCRIsEditable || !activeCR) {\n throw new Error(\"Unable to create item: likely current proposal is not editable or dataset is read-only\");\n }\n if (subregisters && !subregisterID) {\n throw new Error(\"Unable to create item: register uses subregisters, but subregister ID was not provided\");\n }\n const clsConfig = itemClasses[classID];\n if (!clsConfig) {\n throw new Error(\"Unable to generate new item data: item class configuration is missing\");\n }\n const initialItemData = clsConfig?.defaults ?? {};\n const itemID = await makeRandomID();\n const ref: InternalItemReference = { classID, itemID, subregisterID };\n const registerItem: RegisterItem<any> = {\n id: itemID,\n dateAccepted: new Date(),\n status: 'valid',\n data: initialItemData,\n };\n const itemPath = itemRefToItemPath(ref);\n await updateObjects({\n commitMessage: `propose to add new ${ref.classID}`,\n objectChangeset: updateCRObjectChangeset(\n activeCR as any,\n { [itemPath]: { type: 'addition' } },\n { [itemPath]: registerItem },\n ),\n _dangerouslySkipValidation: true,\n });\n spawnTab(`${Protocols.ITEM_DETAILS}:${itemRefToItemPath(ref, activeCR.id)}`);\n }, [activeCR, activeCRIsEditable, subregisters === undefined, spawnTab, updateObjects, makeRandomID]);\n\n const handleAdd: undefined | ((clsID: string) => Promise<void>) = useMemo((() =>\n !subregisters && activeCRIsEditable && performOperation\n ? (clsID) => performOperation('generating new item', createItem)(clsID)\n : undefined\n ), [createItem, subregisters === undefined, activeCRIsEditable, performOperation]);\n\n const getNodes = useCallback(\n ((state: TreeState) =>\n getMaybeGroupedItemClassesAsTreeNodes(itemClasses, itemClassGroups, {\n selectedItemID: state.selectedItemID ?? undefined,\n expandedGroupLabels: new Set(state.expandedItemIDs),\n onProposeItem: handleAdd,\n })),\n [itemClasses, itemClassGroups, handleAdd],\n );\n\n return <GenericStatefulTree\n getNodes={getNodes}\n stateKey=\"item-browser\"\n onItemDoubleClick={(node) => spawnTab(`${Protocols.ITEM_CLASS}:${node.id}`)}\n />;\n};\n\n\nexport default ItemClassTree;\n"]}
|
|
@@ -20,7 +20,7 @@ var _util = require("../views/util");
|
|
|
20
20
|
//import React, { useContext, useMemo } from 'react';
|
|
21
21
|
function getMaybeGroupedItemClassesAsTreeNodes(itemClasses, itemClassGroups, opts) {
|
|
22
22
|
if (!itemClassGroups) {
|
|
23
|
-
return getItemClassesAsTreeNodes(itemClasses, Object.keys(itemClasses));
|
|
23
|
+
return getItemClassesAsTreeNodes(itemClasses, Object.keys(itemClasses), opts);
|
|
24
24
|
} else {
|
|
25
25
|
return Object.entries(itemClassGroups).map(([groupLabel, clsIDs]) => {
|
|
26
26
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeNodes.js","sourceRoot":"","sources":["../../src/item-classes/treeNodes.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B;;;GAGG;AAEH,qDAAqD;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAGrC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAMxD,MAAM,UAAU,qCAAqC,CACnD,WAAwC,EACxC,eAAiD,EACjD,IAIC;IAED,IAAI,CAAC,eAAe,EAAE;QACpB,OAAO,yBAAyB,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"treeNodes.js","sourceRoot":"","sources":["../../src/item-classes/treeNodes.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B;;;GAGG;AAEH,qDAAqD;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAGrC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAMxD,MAAM,UAAU,qCAAqC,CACnD,WAAwC,EACxC,eAAiD,EACjD,IAIC;IAED,IAAI,CAAC,eAAe,EAAE;QACpB,OAAO,yBAAyB,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;KAC/E;SAAM;QACL,OAAO,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE;;YAClE,MAAM,gBAAgB,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,cAAc,KAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACtF,MAAM,UAAU,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,cAAc,KAAI,UAAU,KAAK,IAAI,CAAC,cAAc;gBAC3E,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,KAAK,CAAC;YACV,MAAM,UAAU,GAAG,gBAAgB,KAAI,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,0CAAE,GAAG,CAAC,UAAU,CAAC,CAAA,CAAC;YAClF,OAAO;gBACL,EAAE,EAAE,UAAU;gBACd,KAAK,EAAE,UAAU;gBACjB,QAAQ,EAAE,IAAI;gBACd,UAAU;gBACV,UAAU;gBACV,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAA0B;gBAC7D,UAAU,EAAE,UAAU;oBACpB,CAAC,CAAC,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC;oBACtD,CAAC,CAAC,EAAE;gBACN,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;aAC5B,CAAC;QACJ,CAAC,CAAC,CAAC;KACJ;AACH,CAAC;AAED,SAAS,yBAAyB,CAChC,WAAc;AACd,yBAAyB;AACzB,QAA8B,EAC9B,IAGC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;;QAC1B,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO;YACL,EAAE,EAAE,KAAe;YACnB,KAAK,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,CAAC,KAAK,mCAAI,eAAe;YACzC,IAAI,EAAE,cAAc;YACpB,UAAU,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,cAAc,MAAK,KAAK;YAC1C,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YAC1B,cAAc,EACZ,IAAC,QAAQ;gBACP,IAAC,aAAa,IACZ,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,EAAC,CAAC;wBAC7B,GAAG,EAAE,CAAC,IAAI,CAAC,aAAc,CAAC,KAAe,CAAC;wBAC1C,CAAC,CAAC,SAAS,GACb,CACO;SACd,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\n/**\n * Tools for rendering proposal groups as tree nodes.\n * Each proposal group is top-level node, with proposals as nested nodes.\n */\n\n//import React, { useContext, useMemo } from 'react';\nimport { jsx } from '@emotion/react';\nimport type { RegistryViewProps } from '../types/views';\nimport type { TreeNodeInfo, IconName } from '@blueprintjs/core';\nimport { MoreMenu, ItemClassMenu } from '../views/util';\n\n\nexport type ItemOrGroupTreeNode = TreeNodeInfo<{ type: 'group' | 'item' }>;\n\n\nexport function getMaybeGroupedItemClassesAsTreeNodes<T extends RegistryViewProps>(\n itemClasses: T['itemClassConfiguration'],\n itemClassGroups: T['itemClassGroups'] | undefined,\n opts?: {\n expandedGroupLabels?: Set<string>\n selectedItemID?: string\n onProposeItem?: (clsID: string) => Promise<void>\n },\n): ItemOrGroupTreeNode[] {\n if (!itemClassGroups) {\n return getItemClassesAsTreeNodes(itemClasses, Object.keys(itemClasses), opts);\n } else {\n return Object.entries(itemClassGroups).map(([groupLabel, clsIDs]) => {\n const hasSelectedClass = opts?.selectedItemID && clsIDs.includes(opts.selectedItemID);\n const isSelected = opts?.selectedItemID && groupLabel === opts.selectedItemID\n ? true\n : false;\n const isExpanded = hasSelectedClass || opts?.expandedGroupLabels?.has(groupLabel);\n return {\n id: groupLabel,\n label: groupLabel,\n hasCaret: true,\n isSelected,\n isExpanded,\n icon: isExpanded ? 'folder-open' : 'folder-close' as IconName,\n childNodes: isExpanded\n ? getItemClassesAsTreeNodes(itemClasses, clsIDs, opts)\n : [],\n nodeData: { type: 'group' },\n };\n });\n }\n}\n\nfunction getItemClassesAsTreeNodes<T extends RegistryViewProps['itemClassConfiguration']>(\n itemClasses: T,\n /** Used for ordering. */\n classIDs: readonly (keyof T)[],\n opts?: {\n selectedItemID?: string\n onProposeItem?: (clsID: string) => Promise<void>\n },\n): TreeNodeInfo<{ type: 'item' }>[] {\n return classIDs.map(clsID => {\n const cls = itemClasses[clsID];\n return {\n id: clsID as string,\n label: cls?.meta.title ?? 'unknown class',\n icon: 'folder-close',\n isSelected: opts?.selectedItemID === clsID,\n nodeData: { type: 'item' },\n secondaryLabel:\n <MoreMenu>\n <ItemClassMenu\n cfg={cls}\n onCreate={opts?.onProposeItem ?\n () => opts.onProposeItem!(clsID as string)\n : undefined}\n />\n </MoreMenu>,\n };\n });\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@riboseinc/paneron-registry-kit",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.33",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"author": "Ribose Inc. <open.source@ribose.com>",
|
|
6
6
|
"scripts": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@blueprintjs/select": "~4.9.10",
|
|
29
29
|
"@emotion/react": "^11.10.6",
|
|
30
30
|
"@emotion/styled": "^11.10.6",
|
|
31
|
-
"@riboseinc/paneron-extension-kit": "2.2.
|
|
31
|
+
"@riboseinc/paneron-extension-kit": "2.2.21",
|
|
32
32
|
"@types/react": "17.0.53",
|
|
33
33
|
"@types/react-dom": "^17.0.2",
|
|
34
34
|
"@types/react-helmet": "^6.1.2",
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
2
|
/** @jsxFrag React.Fragment */
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import {
|
|
5
|
-
import type {
|
|
4
|
+
import type { RegisterItem, Payload, InternalItemReference } from '../types';
|
|
5
|
+
import type { ChangeProposal } from './types';
|
|
6
|
+
import { type SomeCR as CR } from './types';
|
|
6
7
|
export interface ChangeRequestContextSpec {
|
|
7
8
|
/**
|
|
8
9
|
* Change request object, undefined if not available/loading,
|
|
@@ -11,18 +11,18 @@ var _react2 = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
|
|
12
12
|
var _context = require("@riboseinc/paneron-extension-kit/context");
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _types = require("../types");
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _BrowserCtx = require("../views/BrowserCtx");
|
|
17
17
|
|
|
18
|
-
var
|
|
19
|
-
|
|
20
|
-
var _itemPathUtils = require("../itemPathUtils");
|
|
18
|
+
var _itemPathUtils = require("../views/itemPathUtils");
|
|
21
19
|
|
|
22
20
|
var _TransitionOptions = require("./TransitionOptions");
|
|
23
21
|
|
|
24
22
|
var _objectChangeset = require("./objectChangeset");
|
|
25
23
|
|
|
24
|
+
var _types2 = require("./types");
|
|
25
|
+
|
|
26
26
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
27
|
|
|
28
28
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -63,9 +63,9 @@ const ChangeRequestContextProvider = function ({
|
|
|
63
63
|
objectPaths: crPath ? [crPath] : [],
|
|
64
64
|
nounLabel: 'proposal(s)'
|
|
65
65
|
}).value) === null || _a === void 0 ? void 0 : _a.data[crPath !== null && crPath !== void 0 ? crPath : '']) !== null && _b !== void 0 ? _b : crPath ? undefined : null;
|
|
66
|
-
const canEdit = changeRequest && stakeholder && (0,
|
|
66
|
+
const canEdit = changeRequest && stakeholder && (0, _types2.canBeEditedBy)(stakeholder, changeRequest) ? true : false;
|
|
67
67
|
const canTransition = changeRequest && stakeholder && (0, _TransitionOptions.canBeTransitionedBy)(stakeholder, changeRequest) ? true : false;
|
|
68
|
-
const canDelete = changeRequest && stakeholder && (0,
|
|
68
|
+
const canDelete = changeRequest && stakeholder && (0, _types2.canBeDeletedBy)(stakeholder, changeRequest) ? true : false;
|
|
69
69
|
const deleteCR = (0, _react2.useMemo)(() => !isBusy && canDelete && updateTree ? performOperation('deleting proposal', async function handleDelete() {
|
|
70
70
|
const subtreeRoot = (0, _itemPathUtils.crIDToCRPath)(changeRequest.id).replace('/main.yaml', '');
|
|
71
71
|
await updateTree({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChangeRequestContext.js","sourceRoot":"","sources":["../../src/proposals/ChangeRequestContext.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAG1E,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAqB,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAmD3E,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,aAAa,CAA2B;IAChF,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE,KAAK;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAEpC,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE;;IAC1C,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACxH,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,eAAe;QAC5B,CAAC,CAAC,cAAc,eAAe,YAAY;QAC3C,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,aAAa,GAAG,MAAA,MAAA,aAAa,CAAC;QAClC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QACnC,SAAS,EAAE,aAAa;KACzB,CAAC,CAAC,KAAK,0CAAE,IAAI,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAO,mCAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAElE,MAAM,OAAO,GAAG,aAAa;WACxB,WAAW;WACX,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC;QAC1C,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,KAAK,CAAC;IAEZ,MAAM,aAAa,GAAG,aAAa;WAC9B,WAAW;WACX,mBAAmB,CAAC,WAAW,EAAE,aAAa,CAAC;QAChD,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,KAAK,CAAC;IAEZ,MAAM,SAAS,GAAG,aAAa;WAC1B,WAAW;WACX,cAAc,CAAC,WAAW,EAAE,aAAa,CAAC;QAC3C,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,KAAK,CAAC;IAEZ,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,CAC7B,CAAC,MAAM,IAAI,SAAS,IAAI,UAAU;QAChC,CAAC,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,KAAK,UAAU,YAAY;YAC/D,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC7E,MAAM,UAAU,CAAC;gBACf,WAAW;gBACX,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,4BAA4B;aAC5C,CAAC,CAAC;QACL,CAAC,CAAC;QACJ,CAAC,CAAC,SAAS,CACd,EAAE;QACD,MAAM,EAAE,gBAAgB;QACxB,UAAU;QACV,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE;QACrC,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE;YACjE,OAAO,SAAS,CAAC;SAClB;aAAM;YACL,OAAO,gBAAgB,CAAC,qBAAqB,EAAE,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,aAAsB;;gBAC/G,IAAI,YAAY,IAAI,CAAC,aAAa,EAAE;oBAClC,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;iBAC3G;gBACD,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBACvC,IAAI,CAAC,SAAS,EAAE;oBACd,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;iBAC1F;gBACD,MAAM,eAAe,GAAG,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,mCAAI,EAAE,CAAC;gBAClD,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;gBACpC,MAAM,GAAG,GAA0B,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;gBACtE,MAAM,YAAY,GAAsB;oBACtC,EAAE,EAAE,MAAM;oBACV,YAAY,EAAE,IAAI,IAAI,EAAE;oBACxB,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,eAAe;iBACtB,CAAC;gBACF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBACxC,MAAM,aAAa,CAAC;oBAClB,aAAa,EAAE,sBAAsB,GAAG,CAAC,OAAO,EAAE;oBAClD,eAAe,EAAE,uBAAuB,CACtC,aAAoB,EACpB,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EACpC,EAAE,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAC7B;oBACD,0BAA0B,EAAE,IAAI;iBACjC,CAAC,CAAC;gBACH,OAAO,GAAG,CAAC;YACb,CAAC,CAAC,CAAA;SACH;IACH,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,YAAY,KAAK,SAAS,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IAEvF,MAAM,kBAAkB,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,CACvC,aAAa,IAAI,OAAO,IAAI,aAAa;QACvC,CAAC,CAAC,KAAK,UAAU,kBAAkB,CAC/B,OAAe,EACf,QAA+B,EAC/B,QAAgB,EAChB,IAAwB,EACxB,cAAwB;YAExB,IAAI,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;aACjC;YACD,IAAI,QAAQ,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,MAAK,WAAW,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,EAAE;gBACtG,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;aACtC;YACD,MAAM,aAAa,CAAC;gBAClB,aAAa,EAAE,GAAG,OAAO,QAAQ,QAAQ,EAAE;gBAC3C,eAAe,EAAE,uBAAuB;gBACtC,yEAAyE;gBACzE,aAAoB,EACpB,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,EACxB,CAAC,CAAC,QAAQ,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,MAAK,WAAW,CAAC,IAAI,cAAc,IAAI,IAAI,CAAC;oBACtE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE;oBACnD,CAAC,CAAC,EAAE,CACP;gBACD,+CAA+C;gBAC/C,yCAAyC;gBACzC,0BAA0B,EAAE,IAAI;aACjC,CAAC,CAAC;QACL,CAAC;QACH,CAAC,CAAC,SAAS,CACd,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;IAE5C,MAAM,GAAG,GAA6B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,aAAa;QACb,OAAO;QACP,aAAa;QACb,SAAS;QACT,QAAQ;QACR,gBAAgB;QAChB,kBAAkB;KACnB,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAE1F,OAAO,CACL,IAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,GAAG,IACtC,QAAQ,CACqB,CACjC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { jsx } from '@emotion/react';\nimport React, { useMemo, useContext } from 'react';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\n\nimport type { RegisterItem, Payload, InternalItemReference } from '../types';\nimport { isRegisterItem } from '../types';\nimport { BrowserCtx } from '../views/BrowserCtx';\nimport { itemRefToItemPath, crIDToCRPath } from '../views/itemPathUtils';\n\nimport { canBeTransitionedBy } from './TransitionOptions';\nimport { updateCRObjectChangeset } from './objectChangeset';\nimport type { ChangeProposal } from './types';\nimport { type SomeCR as CR, canBeDeletedBy, canBeEditedBy } from './types';\n\n\nexport interface ChangeRequestContextSpec {\n /**\n * Change request object, undefined if not available/loading,\n * null is out of ordinary (i.e. changeRequestID is not given).\n */\n changeRequest?: CR | null\n\n /**\n * Contents of current CR can be edited by current stakeholder.\n * Always false if `changeRequest` is not defined or `null`.\n */\n canEdit: boolean\n\n /**\n * Current CR can be transitioned by current stsakeholder.\n * Always false if `changeRequest` is not defined or `null`.\n */\n canTransition: boolean\n\n /**\n * Current CR can be deleted by current stakeholder.\n * Always false if `changeRequest` is not defined or `null`.\n */\n canDelete: boolean\n\n /**\n * Propose new blank item of given item class.\n * Will always be undefined if `canEdit` is not `true`.\n */\n proposeBlankItem?: (clsID: string) => Promise<InternalItemReference>\n\n updateItemProposal?: (\n summary: string,\n proposal: ChangeProposal | null,\n itemPath: string,\n item?: RegisterItem<any>,\n itemData?: Payload,\n ) => Promise<void>\n\n /**\n * Function that performs CR deletion.\n * May not be present if operation is not possible right now,\n * but otherwise is present if `canDelete` is true.\n */\n deleteCR?: () => Promise<void>\n\n}\n\nexport const ChangeRequestContext = React.createContext<ChangeRequestContextSpec>({\n changeRequest: null,\n canEdit: false,\n canTransition: false,\n canDelete: false,\n});\n\nexport const ChangeRequestContextProvider: React.FC<{\n changeRequestID: string | null\n}> = function ({ changeRequestID, children }) {\n const { useObjectData, makeRandomID, updateObjects, updateTree, performOperation, isBusy } = useContext(DatasetContext);\n const { itemClasses, subregisters, stakeholder } = useContext(BrowserCtx);\n\n const crPath = changeRequestID\n ? `/proposals/${changeRequestID}/main.yaml`\n : null;\n\n const changeRequest = useObjectData({\n objectPaths: crPath ? [crPath] : [],\n nounLabel: 'proposal(s)',\n }).value?.data[crPath ?? ''] as CR ?? (crPath ? undefined : null);\n\n const canEdit = changeRequest\n && stakeholder\n && canBeEditedBy(stakeholder, changeRequest)\n ? true\n : false;\n\n const canTransition = changeRequest\n && stakeholder\n && canBeTransitionedBy(stakeholder, changeRequest)\n ? true\n : false;\n\n const canDelete = changeRequest\n && stakeholder\n && canBeDeletedBy(stakeholder, changeRequest)\n ? true\n : false;\n\n const deleteCR = useMemo((() =>\n !isBusy && canDelete && updateTree\n ? performOperation('deleting proposal', async function handleDelete() {\n const subtreeRoot = crIDToCRPath(changeRequest.id).replace('/main.yaml', '');\n await updateTree({\n subtreeRoot,\n newSubtreeRoot: null,\n commitMessage: 'remove unproposed CR draft',\n });\n })\n : undefined\n ), [\n isBusy, performOperation,\n updateTree,\n canDelete,\n ]);\n\n const proposeBlankItem = useMemo((() => {\n if (!updateObjects || !makeRandomID || !canEdit || !changeRequest) {\n return undefined;\n } else {\n return performOperation('creating blank item', async function _createItem(classID: string, subregisterID?: string) {\n if (subregisters && !subregisterID) {\n throw new Error(\"Unable to create item: register uses subregisters, but subregister ID was not provided\");\n }\n const clsConfig = itemClasses[classID];\n if (!clsConfig) {\n throw new Error(\"Unable to generate new item data: item class configuration is missing\");\n }\n const initialItemData = clsConfig?.defaults ?? {};\n const itemID = await makeRandomID();\n const ref: InternalItemReference = { classID, itemID, subregisterID };\n const registerItem: RegisterItem<any> = {\n id: itemID,\n dateAccepted: new Date(),\n status: 'valid',\n data: initialItemData,\n };\n const itemPath = itemRefToItemPath(ref);\n await updateObjects({\n commitMessage: `propose to add new ${ref.classID}`,\n objectChangeset: updateCRObjectChangeset(\n changeRequest as any,\n { [itemPath]: { type: 'addition' } },\n { [itemPath]: registerItem },\n ),\n _dangerouslySkipValidation: true,\n });\n return ref;\n })\n }\n }), [changeRequest, canEdit, subregisters === undefined, updateObjects, makeRandomID]);\n\n const updateItemProposal = useMemo((() =>\n changeRequest && canEdit && updateObjects\n ? async function _handleSetProposal(\n summary: string,\n proposal: ChangeProposal | null,\n itemPath: string,\n item?: RegisterItem<any>,\n editedItemData?: Payload,\n ): Promise<void> {\n if (proposal && !item) {\n throw new Error(\"Missing item\");\n }\n if (proposal && proposal?.type !== 'amendment' && (!editedItemData || !isRegisterItem(editedItemData))) {\n throw new Error(\"Missing item data\");\n }\n await updateObjects({\n commitMessage: `${summary} for ${itemPath}`,\n objectChangeset: updateCRObjectChangeset(\n // TODO: We are sure it’s editable already, but casting should be avoided\n changeRequest as any,\n { [itemPath]: proposal },\n ((proposal && proposal?.type !== 'amendment') && editedItemData && item)\n ? { [itemPath]: { ...item, data: editedItemData } }\n : {},\n ),\n // We need this because updateCRObjectChangeset\n // omits oldValue for item data payloads.\n _dangerouslySkipValidation: true,\n });\n }\n : undefined\n ), [canEdit, changeRequest, updateObjects]);\n\n const ctx: ChangeRequestContextSpec = useMemo((() => ({\n changeRequest,\n canEdit,\n canTransition,\n canDelete,\n deleteCR,\n proposeBlankItem,\n updateItemProposal,\n })), [changeRequest, canEdit, deleteCR, canDelete, proposeBlankItem, updateItemProposal]);\n\n return (\n <ChangeRequestContext.Provider value={ctx}>\n {children}\n </ChangeRequestContext.Provider>\n );\n};\n"]}
|
|
@@ -15,17 +15,15 @@ var _context = require("@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace
|
|
|
15
15
|
|
|
16
16
|
var _SearchResultList = _interopRequireDefault(require("@riboseinc/paneron-extension-kit/widgets/SearchResultList"));
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _types = require("../proposals/types");
|
|
19
19
|
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
var _Proposals = require("./change-request/Proposals");
|
|
20
|
+
var _ProposalType = require("./ProposalType");
|
|
23
21
|
|
|
24
22
|
var _util = require("../views/util");
|
|
25
23
|
|
|
26
|
-
var
|
|
24
|
+
var _queries = require("./queries");
|
|
27
25
|
|
|
28
|
-
var _protocolRegistry = require("
|
|
26
|
+
var _protocolRegistry = require("../views/protocolRegistry");
|
|
29
27
|
|
|
30
28
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
29
|
|
|
@@ -51,8 +49,8 @@ const ProposalHistoryDrawer = function ({
|
|
|
51
49
|
// and have the item in question.
|
|
52
50
|
|
|
53
51
|
const query = `return (
|
|
54
|
-
(${
|
|
55
|
-
&& (obj.state === "${
|
|
52
|
+
(${_queries.DISPOSED_CR_QUERY})
|
|
53
|
+
&& (obj.state === "${_types.State.ACCEPTED}" || obj.state === "${_types.State.ACCEPTED_ON_APPEAL}")
|
|
56
54
|
&& obj.items["${itemPath}"] !== undefined
|
|
57
55
|
)`;
|
|
58
56
|
return (0, _react.jsx)(_core.Drawer, {
|
|
@@ -79,17 +77,17 @@ const ProposalHistoryItem = function ({
|
|
|
79
77
|
objectData,
|
|
80
78
|
extraData
|
|
81
79
|
}) {
|
|
82
|
-
const justification = (0,
|
|
80
|
+
const justification = (0, _types.hasSubmitterInput)(objectData) ? objectData.justification : 'N/A';
|
|
83
81
|
const change_ = (extraData === null || extraData === void 0 ? void 0 : extraData.itemPath) ? objectData.items[extraData === null || extraData === void 0 ? void 0 : extraData.itemPath] : undefined;
|
|
84
|
-
const change = (0,
|
|
82
|
+
const change = (0, _types.isProposal)(change_) ? change_ : null;
|
|
85
83
|
return (0, _react.jsx)("span", {
|
|
86
84
|
title: `Accepted proposal “${justification}” (proposal ID: ${objectData.id})`
|
|
87
|
-
}, change ? (0, _react.jsx)(
|
|
85
|
+
}, change ? (0, _react.jsx)(_ProposalType.ProposalType, {
|
|
88
86
|
proposal: change
|
|
89
|
-
}) : null, (0,
|
|
87
|
+
}) : null, (0, _types.isDisposed)(objectData) ? (0, _react.jsx)(_react2.default.Fragment, null, (0, _react.jsx)(_util.Datestamp, {
|
|
90
88
|
date: objectData.timeDisposed,
|
|
91
89
|
title: "Disposed"
|
|
92
|
-
}), ": ") : (0,
|
|
90
|
+
}), ": ") : (0, _types.hadBeenProposed)(objectData) ? (0, _react.jsx)(_react2.default.Fragment, null, (0, _react.jsx)(_util.Datestamp, {
|
|
93
91
|
date: objectData.timeProposed,
|
|
94
92
|
title: "Proposed"
|
|
95
93
|
}), ": ") : null, justification);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HistoryDrawer.js","sourceRoot":"","sources":["../../src/proposals/HistoryDrawer.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { jsx } from '@emotion/react';\nimport React, { useCallback, useContext, useMemo, useState } from 'react';\nimport { Drawer } from '@blueprintjs/core';\nimport { TabbedWorkspaceContext } from '@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace/context';\nimport makeSearchResultList from '@riboseinc/paneron-extension-kit/widgets/SearchResultList';\nimport type { InternalItemReference } from '../types';\nimport { type SomeCR, State, hasSubmitterInput, isDisposed, hadBeenProposed } from '../proposals/types';\nimport { isProposal } from '../proposals/types';\nimport { ProposalType } from './ProposalType';\nimport { Datestamp } from '../views/util';\nimport { DISPOSED_CR_QUERY } from './queries';\nimport { Protocols } from '../views/protocolRegistry';\n\n\n/** History of changes affecting given item. */\nconst ProposalHistoryDrawer: React.FC<{\n itemPath: string\n isOpen: boolean\n onClose: () => void\n onChooseItem?: (itemRef: InternalItemReference) => void\n}> = function ({\n itemPath,\n isOpen, onClose,\n}) {\n const { spawnTab } = useContext(TabbedWorkspaceContext);\n const [ selectedItemPath, setSelectedItemPath ] = useState<string | null>(null);\n // Return disposed CRs\n // that were either accepted or accepted on appeal\n // and have the item in question.\n const query = `return (\n (${DISPOSED_CR_QUERY})\n && (obj.state === \"${State.ACCEPTED}\" || obj.state === \"${State.ACCEPTED_ON_APPEAL}\")\n && obj.items[\"${itemPath}\"] !== undefined\n )`;\n return (\n <Drawer\n isOpen={isOpen}\n onClose={onClose}\n enforceFocus={false}\n size=\"50vw\"\n style={{ padding: '0', width: 'unset' }}>\n <ProposalList\n\tqueryExpression={query}\n\tselectedItemPath={selectedItemPath}\n\tonSelectItem={setSelectedItemPath}\n\tonOpenItem={useCallback((itemPath =>\n\t spawnTab(`${Protocols.CHANGE_REQUEST}:${itemPath}`)\n\t), [spawnTab])}\n\textraItemViewData={useMemo(() => ({ itemPath }), [itemPath])}\n />\n </Drawer>\n );\n};\n\n\nconst ProposalHistoryItem: React.FC<{\n objectData: SomeCR,\n extraData?: { itemPath: string },\n objectPath: string,\n}> = function ({ objectData, extraData }) {\n const justification = hasSubmitterInput(objectData) ? objectData.justification : 'N/A';\n const change_ = extraData?.itemPath ? objectData.items[extraData?.itemPath] : undefined;\n const change = isProposal(change_) ? change_ : null;\n return <span title={`Accepted proposal “${justification}” (proposal ID: ${objectData.id})`}>\n {change ? <ProposalType proposal={change} /> : null}\n {isDisposed(objectData)\n ? <><Datestamp date={objectData.timeDisposed} title=\"Disposed\" />: </>\n : hadBeenProposed(objectData)\n ? <><Datestamp date={objectData.timeProposed} title=\"Proposed\" />: </>\n : null}\n {justification}\n </span>;\n};\n\n\nconst ProposalList = makeSearchResultList<SomeCR, { itemPath: string }>(ProposalHistoryItem, (objPath) => ({\n name: 'Prp.',\n iconProps: {\n icon: 'lightbulb',\n title: objPath,\n htmlTitle: `icon for proposal at ${objPath}`,\n },\n}));\n\n\nexport default ProposalHistoryDrawer;\n"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
2
|
/** @jsxFrag React.Fragment */
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import type { Register } from '
|
|
5
|
-
import {
|
|
6
|
-
import type
|
|
4
|
+
import type { Register } from '../types/register';
|
|
5
|
+
import type { RegisterStakeholder } from '../types/stakeholder';
|
|
6
|
+
import { type SomeCR } from './types';
|
|
7
|
+
/** Proposal meta properties, must be nested within a DL. */
|
|
7
8
|
declare const Summary: React.FC<{
|
|
8
9
|
cr: SomeCR;
|
|
9
10
|
currentStakeholder?: RegisterStakeholder;
|
|
@@ -13,15 +13,17 @@ var _core = require("@blueprintjs/core");
|
|
|
13
13
|
|
|
14
14
|
var _HelpTooltip = _interopRequireDefault(require("@riboseinc/paneron-extension-kit/widgets/HelpTooltip"));
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _RegisterStakeholder = require("../views/RegisterStakeholder");
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _types = require("./types");
|
|
19
19
|
|
|
20
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
21
|
|
|
22
22
|
/** @jsx jsx */
|
|
23
23
|
|
|
24
24
|
/** @jsxFrag React.Fragment */
|
|
25
|
+
|
|
26
|
+
/** Proposal meta properties, must be nested within a DL. */
|
|
25
27
|
const Summary = function ({
|
|
26
28
|
cr,
|
|
27
29
|
currentStakeholder,
|
|
@@ -32,8 +34,11 @@ const Summary = function ({
|
|
|
32
34
|
const crStakeholder = ((_a = registerMetadata === null || registerMetadata === void 0 ? void 0 : registerMetadata.stakeholders) !== null && _a !== void 0 ? _a : []).find(s => s.gitServerUsername === cr.submittingStakeholderGitServerUsername);
|
|
33
35
|
return (0, _react2.jsx)(_react.default.Fragment, null, crStakeholder ? (0, _react2.jsx)("div", null, (0, _react2.jsx)("dt", null, "Author:"), (0, _react2.jsx)("dd", null, (0, _react2.jsx)(_RegisterStakeholder.RegisterStakeholderListItem, {
|
|
34
36
|
stakeholder: crStakeholder,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
showRole: true,
|
|
38
|
+
isCurrentUser: (currentStakeholder ? (0, _types.isCreatedBy)(currentStakeholder, cr) : false) || undefined
|
|
39
|
+
}))) : null, (0, _react2.jsx)("div", null, (0, _react2.jsx)("dt", null, "Register\u00A0version before\u00A0proposal:"), (0, _react2.jsx)("dd", {
|
|
40
|
+
css: (0, _react2.css)`white-space: nowrap;`
|
|
41
|
+
}, (_b = cr.registerVersion) !== null && _b !== void 0 ? _b : 'N/A', "\u2002", cr.registerVersion === ((_c = registerMetadata === null || registerMetadata === void 0 ? void 0 : registerMetadata.version) === null || _c === void 0 ? void 0 : _c.id) ? (0, _react2.jsx)(_core.Tag, {
|
|
37
42
|
css: (0, _react2.css)`display: inline;`,
|
|
38
43
|
intent: 'success',
|
|
39
44
|
minimal: true,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetaProperties.js","sourceRoot":"","sources":["../../src/proposals/MetaProperties.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAG/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAG3E,OAAO,EAAE,WAAW,EAAe,MAAM,SAAS,CAAC;AAGnD,4DAA4D;AAC5D,MAAM,OAAO,GAIR,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE,gBAAgB,EAAE;;IACzD,MAAM,aAAa,GAAG,CAAC,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,YAAY,mCAAI,EAAE,CAAC;QAC1D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,KAAK,EAAE,CAAC,sCAAsC,CAAC,CAAC;IAE/E,OAAO,CACL;QACG,aAAa;YACZ,CAAC,CAAC;gBACE,0BAAgB;gBAChB;oBACE,IAAC,2BAA2B,IAC1B,WAAW,EAAE,aAAa,EAC1B,QAAQ,QACR,aAAa,EAAE,CAAC,kBAAkB;4BAChC,CAAC,CAAC,WAAW,CAAC,kBAAkB,EAAE,EAAE,CAAC;4BACrC,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,GACvB,CACC,CACD;YACR,CAAC,CAAC,IAAI;QAER;YACE,8DAEK;YACL,YAAI,GAAG,EAAE,GAAG,CAAA,sBAAsB,IAC/B,MAAA,EAAE,CAAC,eAAe,mCAAI,KAAK;;gBAE3B,EAAE,CAAC,eAAe,MAAK,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,OAAO,0CAAE,EAAE,CAAA;oBACnD,CAAC,CAAC,IAAC,GAAG,IAAC,GAAG,EAAE,GAAG,CAAA,kBAAkB,EAAE,MAAM,EAAC,SAAS,EAAC,OAAO,QAAC,KAAK;;wBAE5D,GAAG;wBACJ,IAAC,WAAW,IAAC,MAAM,EAAC,SAAS,EAAC,OAAO,EAAE;;gCAEpC,GAAG;+EAEH,GAAI,CACH;oBACR,CAAC,CAAC,IAAC,GAAG,IAAC,GAAG,EAAE,GAAG,CAAA,kBAAkB,EAAE,MAAM,EAAC,SAAS,EAAC,OAAO,QAAC,KAAK;;wBAE5D,GAAG;wBACJ,IAAC,WAAW,IAAC,MAAM,EAAC,SAAS,EAAC,IAAI,EAAC,cAAc,EAAC,OAAO,EAAE;;gCACxB,oBAAS,MAAA,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,OAAO,0CAAE,EAAE,mCAAI,KAAK,CAAU;;gCACzF,GAAG;;gCAEH,GAAG;;gCAEH,GAAG;0DAEH,GAAI,CACH,CACP,CACD;QAEN;YACE,oCAA0B;YAC1B;gBAAI,cAAM,GAAG,EAAE,GAAG,CAAA,sBAAsB,IAAG,EAAE,CAAC,EAAE,CAAQ,CAAK,CACzD,CACL,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React from 'react';\nimport { jsx, css } from '@emotion/react';\nimport { Tag } from '@blueprintjs/core';\n\nimport HelpTooltip from '@riboseinc/paneron-extension-kit/widgets/HelpTooltip';\n\nimport type { Register } from '../types/register';\nimport { RegisterStakeholderListItem } from '../views/RegisterStakeholder';\nimport type { RegisterStakeholder } from '../types/stakeholder';\n\nimport { isCreatedBy, type SomeCR } from './types';\n\n\n/** Proposal meta properties, must be nested within a DL. */\nconst Summary: React.FC<{\n cr: SomeCR\n currentStakeholder?: RegisterStakeholder\n registerMetadata?: Register\n}> = function ({ cr, currentStakeholder, registerMetadata }) {\n const crStakeholder = (registerMetadata?.stakeholders ?? []).\n find(s => s.gitServerUsername === cr.submittingStakeholderGitServerUsername);\n\n return (\n <>\n {crStakeholder\n ? <div>\n <dt>Author:</dt>\n <dd>\n <RegisterStakeholderListItem\n stakeholder={crStakeholder}\n showRole\n isCurrentUser={(currentStakeholder\n ? isCreatedBy(currentStakeholder, cr)\n : false) || undefined}\n />\n </dd>\n </div>\n : null}\n\n <div>\n <dt>\n Register version before proposal:\n </dt>\n <dd css={css`white-space: nowrap;`}>\n {cr.registerVersion ?? 'N/A'}\n  \n {cr.registerVersion === registerMetadata?.version?.id\n ? <Tag css={css`display: inline;`} intent='success' minimal round>\n current\n {\" \"}\n <HelpTooltip intent='success' content={<>\n Published version of the register\n {\" \"}\n had not changed since this proposal started.\n </>} />\n </Tag>\n : <Tag css={css`display: inline;`} intent='warning' minimal round>\n not current\n {\" \"}\n <HelpTooltip intent='warning' icon='warning-sign' content={<>\n Register is currently at version <strong>{registerMetadata?.version?.id ?? 'N/A'}</strong>,\n {\" \"}\n which is different from version proposal author may have had in mind.\n {\" \"}\n It is recommended that proposed changes are reviewed to avoid unintentionally\n {\" \"}\n undoing a prior change.\n </>} />\n </Tag>}\n </dd>\n </div>\n\n <div>\n <dt>Proposal ID:</dt>\n <dd><code css={css`white-space: nowrap;`}>{cr.id}</code></dd>\n </div>\n </>\n );\n};\n\nexport default Summary;\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
/** @jsxFrag React.Fragment */
|
|
3
|
+
import { jsx } from '@emotion/react';
|
|
4
|
+
import type { Drafted } from './types';
|
|
5
|
+
interface ProposalBrowserProps<CR extends Drafted> {
|
|
6
|
+
proposals: CR['items'];
|
|
7
|
+
selectedItem?: (string & keyof CR['items']) | null;
|
|
8
|
+
onSelectItem: (selectedItem: (string & keyof CR['items']) | null) => void;
|
|
9
|
+
/**
|
|
10
|
+
* If provided, button to delete each proposed change
|
|
11
|
+
* is shown in change card list mode.
|
|
12
|
+
*/
|
|
13
|
+
onDeleteProposalForItemAtPath?: (itemPath: string) => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Shows a list of individual proposed changes as cards by default,
|
|
17
|
+
* allowing to expand a proposal and view item details.
|
|
18
|
+
*
|
|
19
|
+
* If no proposals exist, returns null.
|
|
20
|
+
*/
|
|
21
|
+
export declare function ProposalBrowser<CR extends Drafted>({ proposals, onDeleteProposalForItemAtPath, selectedItem, onSelectItem: selectProposal }: ProposalBrowserProps<CR>): jsx.JSX.Element;
|
|
22
|
+
export default ProposalBrowser;
|