@configura/debug-react 2.0.0-alpha.2 → 2.0.0-alpha.20
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/.eslintrc.json +18 -0
- package/dist/TextualConfigurationView.js +20 -3
- package/dist/css/debug.css +1 -1
- package/dist/css/debug.css.map +1 -1
- package/dist/exerciser/Exerciser.d.ts +7 -7
- package/dist/exerciser/Exerciser.js +2 -2
- package/dist/exerciser/ExerciserRun.d.ts +2 -2
- package/dist/exerciser/ExerciserSetup.d.ts +4 -3
- package/dist/exerciser/ExerciserSetup.js +2 -2
- package/dist/productConfiguration/DebugRowsFactory.js +2 -1
- package/package.json +6 -6
package/.eslintrc.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"parser": "@typescript-eslint/parser",
|
|
3
|
+
"plugins": ["@typescript-eslint"],
|
|
4
|
+
"extends": [
|
|
5
|
+
"eslint:recommended",
|
|
6
|
+
"plugin:@typescript-eslint/recommended",
|
|
7
|
+
"prettier"
|
|
8
|
+
|
|
9
|
+
// TODO: Type-checking rules require a proper tsconfig-file to work,
|
|
10
|
+
// pointed at by the parserOption.project setting.
|
|
11
|
+
//
|
|
12
|
+
//"plugin:@typescript-eslint/recommended-requiring-type-checking"
|
|
13
|
+
]
|
|
14
|
+
//"rules": { "@typescript-eslint/no-floating-promises": "error" }
|
|
15
|
+
//"parserOptions": {
|
|
16
|
+
// "project": "./tsconfig.json"
|
|
17
|
+
//}
|
|
18
|
+
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ErrorIcon } from "@configura/web-ui";
|
|
2
|
+
import React, { useCallback, useEffect, useState } from "react";
|
|
2
3
|
export const TextualConfigurationView = (props) => {
|
|
3
4
|
const { active, observableStateManager } = props;
|
|
4
5
|
const [editActive, setEditActive] = useState(false);
|
|
6
|
+
const [warnings, setWarnings] = useState([]);
|
|
5
7
|
const [textualConfiguration, setTextualConfiguration] = useState(observableStateManager.stateAsString);
|
|
6
8
|
useEffect(() => {
|
|
7
9
|
const textualConfigurationListener = (v) => {
|
|
@@ -15,6 +17,10 @@ export const TextualConfigurationView = (props) => {
|
|
|
15
17
|
observableStateManager.stopListenForStateChange(textualConfigurationListener);
|
|
16
18
|
};
|
|
17
19
|
}, [editActive, observableStateManager]);
|
|
20
|
+
const refreshWarnings = useCallback(() => {
|
|
21
|
+
const ws = observableStateManager.getWarnings();
|
|
22
|
+
setWarnings(ws);
|
|
23
|
+
}, [observableStateManager]);
|
|
18
24
|
return active ? (React.createElement("div", { className: `cfgTextualConfiguration ${props.className || ""}`, style: props.style },
|
|
19
25
|
props.children,
|
|
20
26
|
editActive && React.createElement("p", null, "Editing like this is experimental"),
|
|
@@ -22,20 +28,31 @@ export const TextualConfigurationView = (props) => {
|
|
|
22
28
|
if (!editActive) {
|
|
23
29
|
return;
|
|
24
30
|
}
|
|
31
|
+
refreshWarnings();
|
|
25
32
|
setTextualConfiguration(event.target.value);
|
|
26
33
|
} }),
|
|
27
34
|
React.createElement("div", { className: "cfgButtonRow" },
|
|
28
35
|
React.createElement("button", { className: "cfgButtonRow__button cfgButton", onClick: () => {
|
|
36
|
+
refreshWarnings();
|
|
29
37
|
navigator.clipboard.writeText(textualConfiguration);
|
|
30
38
|
} }, "Copy to clipboard"),
|
|
31
|
-
!editActive && (React.createElement("button", { className: "cfgButtonRow__button cfgButton", onClick: () =>
|
|
39
|
+
!editActive && (React.createElement("button", { className: "cfgButtonRow__button cfgButton", onClick: () => {
|
|
40
|
+
refreshWarnings();
|
|
41
|
+
setEditActive(true);
|
|
42
|
+
} }, "Edit")),
|
|
32
43
|
editActive && (React.createElement(React.Fragment, null,
|
|
33
44
|
React.createElement("button", { className: "cfgButtonRow__button cfgButton", onClick: () => {
|
|
45
|
+
refreshWarnings();
|
|
34
46
|
setTextualConfiguration(observableStateManager.stateAsString);
|
|
35
47
|
setEditActive(false);
|
|
36
48
|
} }, "Cancel Edit"),
|
|
37
49
|
React.createElement("button", { className: "cfgButtonRow__button cfgButton", disabled: observableStateManager.stateAsString === textualConfiguration, onClick: () => {
|
|
50
|
+
refreshWarnings();
|
|
38
51
|
setEditActive(false);
|
|
39
52
|
observableStateManager.stateAsString = textualConfiguration;
|
|
40
|
-
} }, "Apply Edit"))))
|
|
53
|
+
} }, "Apply Edit")))),
|
|
54
|
+
warnings.map((w) => (React.createElement("div", { className: "cfgTextualConfiguration__error", key: w },
|
|
55
|
+
React.createElement(ErrorIcon, null),
|
|
56
|
+
" ",
|
|
57
|
+
w))))) : null;
|
|
41
58
|
};
|
package/dist/css/debug.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--cfgExerciserImageWidth:200px;--cfgExerciserLink:#2667cf}.cfgExerciser{overflow-wrap:anywhere}.cfgExerciserColumn{display:flex;flex-direction:column;flex:1 1 auto}.cfgExerciserRow{display:flex;flex-direction:row;flex-wrap:wrap}.cfgExerciserLink{color:var(--cfgExerciserLink);text-decoration:none;word-break:break-all}.cfgExerciserView{margin:0 1em}.cfgExerciserButton{font-size:1em}.cfgExerciserControl{margin:.5em 0}.cfgExerciserControl__label{display:block;text-transform:capitalize;font-weight:500}.cfgExerciserControl__select--operator{margin-right:.5em}.cfgExerciserControl__selectWrapper{display:flex;flex-direction:row;flex-wrap:wrap}.cfgExerciserControl__select--full{flex:1 0 auto}.cfgExerciserControl__error{color:#dc143c}.cfgCanvasWrapper{width:100%}.cfgExerciserReportItem{border-top:1px solid #000;display:flex;flex-wrap:wrap}.cfgExerciserReportItem .cfgDebugLog{font-size:1em}.cfgExerciserReportItem .cfgDebugLog__item{padding:1px;margin:.5em 0}@media screen and (min-width:62.5em){.cfgExerciserReportItem{flex-wrap:nowrap}}.cfgExerciserReportItem__info{flex:1 1 auto}.cfgExerciserReportItem__image{width:var(--cfgExerciserImageWidth);height:var(--cfgExerciserImageWidth)}.cfgExerciserReportItem__image img{width:100%}.cfgExerciserFilter__logMessage{display:block;padding:1px 0}.cfgExerciserSetup{display:flex;flex-direction:row;flex-wrap:wrap}.cfgExerciserSetup__select{max-width:50rem}.cfgExerciserSetup__preview,.cfgExerciserSetup__select{flex:1 1 auto}.cfgExerciserSetup__select+.cfgExerciserSetup__preview{flex:1 1 50%}.cfgFontSize10{font-size:10px}.cfgDebugLog{font-size:1.5em;margin:1em 0}.cfgDebugLog__list{list-style:none;padding-left:0}.cfgDebugLog__item{padding:1em}.cfgDebugLog__item--severityInfo,.cfgDebugLog__item--severityLog{background-color:#33f;color:#fff}.cfgDebugLog__item--severityWarn{background-color:#fd0}.cfgDebugLog__item--severityError{background-color:#c00;color:#fff}ul.debug-wrapper{-webkit-padding-start:0;padding-inline-start:0;list-style:none}.debug-component__heading{font-weight:700}.debug-component__table{color:#00f;border-top:1px solid #00f;border-left:1px solid #00f;margin-left:1px;padding-left:5px;padding-top:5px;margin-top:10px}.debug-component__table--mark-hidden{color:#88f}.debug-component__table tr td:nth-child(2){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.debug-component__group{list-style:none;-webkit-padding-start:10px;padding-inline-start:10px}.cfgTextualConfiguration__input{width:100%;min-height:15em}
|
|
1
|
+
:root{--cfgExerciserImageWidth:200px;--cfgExerciserLink:#2667cf}.cfgExerciser{overflow-wrap:anywhere}.cfgExerciserColumn{display:flex;flex-direction:column;flex:1 1 auto}.cfgExerciserRow{display:flex;flex-direction:row;flex-wrap:wrap}.cfgExerciserLink{color:var(--cfgExerciserLink);text-decoration:none;word-break:break-all}.cfgExerciserView{margin:0 1em}.cfgExerciserButton{font-size:1em}.cfgExerciserControl{margin:.5em 0}.cfgExerciserControl__label{display:block;text-transform:capitalize;font-weight:500}.cfgExerciserControl__select--operator{margin-right:.5em}.cfgExerciserControl__selectWrapper{display:flex;flex-direction:row;flex-wrap:wrap}.cfgExerciserControl__select--full{flex:1 0 auto}.cfgExerciserControl__error{color:#dc143c}.cfgCanvasWrapper{width:100%}.cfgExerciserReportItem{border-top:1px solid #000;display:flex;flex-wrap:wrap}.cfgExerciserReportItem .cfgDebugLog{font-size:1em}.cfgExerciserReportItem .cfgDebugLog__item{padding:1px;margin:.5em 0}@media screen and (min-width:62.5em){.cfgExerciserReportItem{flex-wrap:nowrap}}.cfgExerciserReportItem__info{flex:1 1 auto}.cfgExerciserReportItem__image{width:var(--cfgExerciserImageWidth);height:var(--cfgExerciserImageWidth)}.cfgExerciserReportItem__image img{width:100%}.cfgExerciserFilter__logMessage{display:block;padding:1px 0}.cfgExerciserSetup{display:flex;flex-direction:row;flex-wrap:wrap}.cfgExerciserSetup__select{max-width:50rem}.cfgExerciserSetup__preview,.cfgExerciserSetup__select{flex:1 1 auto}.cfgExerciserSetup__select+.cfgExerciserSetup__preview{flex:1 1 50%}.cfgFontSize10{font-size:10px}.cfgDebugLog{font-size:1.5em;margin:1em 0}.cfgDebugLog__list{list-style:none;padding-left:0}.cfgDebugLog__item{padding:1em}.cfgDebugLog__item--severityInfo,.cfgDebugLog__item--severityLog{background-color:#33f;color:#fff}.cfgDebugLog__item--severityWarn{background-color:#fd0}.cfgDebugLog__item--severityError{background-color:#c00;color:#fff}ul.debug-wrapper{-webkit-padding-start:0;padding-inline-start:0;list-style:none}.debug-component__heading{font-weight:700}.debug-component__table{color:#00f;border-top:1px solid #00f;border-left:1px solid #00f;margin-left:1px;padding-left:5px;padding-top:5px;margin-top:10px}.debug-component__table--mark-hidden{color:#88f}.debug-component__table tr td:nth-child(2){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.debug-component__group{list-style:none;-webkit-padding-start:10px;padding-inline-start:10px}.cfgTextualConfiguration__input{width:100%;min-height:15em}.cfgTextualConfiguration__error{margin-top:1em;font-size:1.2em}.cfgTextualConfiguration__error .cfgErrorIcon{margin-right:.75em;width:1.25em;height:1em}
|
package/dist/css/debug.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/scss/_exerciser.scss","../../src/scss/debug.scss","../../src/scss/debug.scss%23sass"],"names":[],"mappings":"AAAA,MACC,8BAAA,CCCD,0BACA,CDEA,cCCA,sBACA,CDEA,oBCCC,YAAA,CDCA,qBAAA,CACA,aCCD,CDEA,iBACC,YAAA,CACA,kBAAA,CACA,cCCD,CDEA,kBACC,6BAAA,CACA,oBAAA,CACA,oBCCD,CDEA,kBACC,YCCD,CDEA,oBACC,aCCD,CDEA,qBCCA,aACA,CDEA,4BACC,aAAA,CCCA,yBAAA,CDCA,eCCD,CDCA,uCACC,iBCED,CDCA,oCACC,YAAA,CACA,kBAAA,CACA,cCED,CDCA,mCACC,aCED,CDCA,4BACC,aCED,CDCA,kBACC,UCED,CDCA,wBCEC,yBAAA,CACD,YAAA,CDAC,cCED,CDAC,qCACC,aCEF,CDCC,
|
|
1
|
+
{"version":3,"sources":["../../src/scss/_exerciser.scss","../../src/scss/debug.scss","../../src/scss/debug.scss%23sass"],"names":[],"mappings":"AAAA,MACC,8BAAA,CCCD,0BACA,CDEA,cCCA,sBACA,CDEA,oBCCC,YAAA,CDCA,qBAAA,CACA,aCCD,CDEA,iBACC,YAAA,CACA,kBAAA,CACA,cCCD,CDEA,kBACC,6BAAA,CACA,oBAAA,CACA,oBCCD,CDEA,kBACC,YCCD,CDEA,oBACC,aCCD,CDEA,qBCCA,aACA,CDEA,4BACC,aAAA,CCCA,yBAAA,CDCA,eCCD,CDCA,uCACC,iBCED,CDCA,oCACC,YAAA,CACA,kBAAA,CACA,cCED,CDCA,mCACC,aCED,CDCA,4BACC,aCED,CDCA,kBACC,UCED,CDCA,wBCEC,yBAAA,CACD,YAAA,CDAC,cCED,CDAC,qCACC,aCEF,CDCC,2CACC,WAAA,CCCD,aACD,CDGA,qCACC,wBCAE,gBACD,CACF,CDGA,8BCDC,aACD,CDIA,+BACC,mCAAA,CACA,oCCDD,CDIA,mCACC,UCDD,CDIA,gCACC,aAAA,CACA,aCDD,CDIA,mBACC,YAAA,CACA,kBAAA,CACA,cCDD,CDIA,2BACC,eCDD,CDIA,uDAEC,aCDD,CDIA,uDACC,YCDD,CCtHA,eACC,cDyHD,CCtHA,aACC,eAAA,CACA,YDyHD,CCvHC,mBACC,eAAA,CACA,cDyHF,CCtHC,mBACC,WDwHF,CCtHE,iEAEC,qBAAA,CACA,UDuHH,CCrHE,iCACC,qBDuHH,CCrHE,kCACC,qBAAA,CACA,UDuHH,CClHA,iBACC,uBAAA,CAAA,sBAAA,CACA,eDqHD,CCjHC,0BACC,eDoHF,CCjHC,wBACC,UAAA,CACA,yBAAA,CACA,0BAAA,CACA,eAAA,CACA,gBAAA,CACA,eAAA,CACA,eDmHF,CCjHE,qCACC,UDmHH,CC/GG,2CACC,kBAAA,CACA,eAAA,CACA,sBDiHJ,CC5GC,wBACC,eAAA,CACA,0BAAA,CAAA,yBD8GF,CCzGC,gCACC,UAAA,CACA,eD4GF,CCzGC,gCACC,cAAA,CACA,eD2GF,CCzGE,8CACC,kBAAA,CACA,YAAA,CACA,UD2GH","file":"debug.css","sourcesContent":[":root {\n\t--cfgExerciserImageWidth: 200px;\n\t--cfgExerciserLink: hsl(217, 69%, 48%);\n}\n\n.cfgExerciser {\n\toverflow-wrap: anywhere;\n}\n\n.cfgExerciserColumn {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1 1 auto;\n}\n\n.cfgExerciserRow {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n}\n\n.cfgExerciserLink {\n\tcolor: var(--cfgExerciserLink);\n\ttext-decoration: none;\n\tword-break: break-all;\n}\n\n.cfgExerciserView {\n\tmargin: 0 1em;\n}\n\n.cfgExerciserButton {\n\tfont-size: 1em;\n}\n\n.cfgExerciserControl {\n\tmargin: 0.5em 0;\n}\n\n.cfgExerciserControl__label {\n\tdisplay: block;\n\ttext-transform: capitalize;\n\tfont-weight: 500;\n}\n.cfgExerciserControl__select--operator {\n\tmargin-right: 0.5em;\n}\n\n.cfgExerciserControl__selectWrapper {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n}\n\n.cfgExerciserControl__select--full {\n\tflex: 1 0 auto;\n}\n\n.cfgExerciserControl__error {\n\tcolor: crimson;\n}\n\n.cfgCanvasWrapper {\n\twidth: 100%;\n}\n\n.cfgExerciserReportItem {\n\tborder-top: 1px solid black;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t& .cfgDebugLog {\n\t\tfont-size: 1em;\n\t}\n\n\t& .cfgDebugLog__item {\n\t\tpadding: 1px;\n\t\tmargin: 0.5em 0;\n\t}\n}\n\n@media screen and (min-width: 62.5em) {\n\t.cfgExerciserReportItem {\n\t\tflex-wrap: nowrap;\n\t}\n}\n\n.cfgExerciserReportItem__info {\n\tflex: 1 1 auto;\n}\n\n.cfgExerciserReportItem__image {\n\twidth: var(--cfgExerciserImageWidth);\n\theight: var(--cfgExerciserImageWidth);\n}\n\n.cfgExerciserReportItem__image img {\n\twidth: 100%;\n}\n\n.cfgExerciserFilter__logMessage {\n\tdisplay: block;\n\tpadding: 1px 0;\n}\n\n.cfgExerciserSetup {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n}\n\n.cfgExerciserSetup__select {\n\tmax-width: 50rem;\n}\n\n.cfgExerciserSetup__select,\n.cfgExerciserSetup__preview {\n\tflex: 1 1 auto;\n}\n\n.cfgExerciserSetup__select + .cfgExerciserSetup__preview {\n\tflex: 1 1 50%;\n}\n","@import \"exerciser\";\n\n.cfgFontSize10 {\n\tfont-size: 10px;\n}\n\n.cfgDebugLog {\n\tfont-size: 1.5em;\n\tmargin: 1em 0;\n\n\t&__list {\n\t\tlist-style: none;\n\t\tpadding-left: 0;\n\t}\n\n\t&__item {\n\t\tpadding: 1em;\n\n\t\t&--severityLog,\n\t\t&--severityInfo {\n\t\t\tbackground-color: #3333ff;\n\t\t\tcolor: #fff;\n\t\t}\n\t\t&--severityWarn {\n\t\t\tbackground-color: #ffdd00;\n\t\t}\n\t\t&--severityError {\n\t\t\tbackground-color: #cc0000;\n\t\t\tcolor: #fff;\n\t\t}\n\t}\n}\n\nul.debug-wrapper {\n\tpadding-inline-start: 0;\n\tlist-style: none;\n}\n\n.debug-component {\n\t&__heading {\n\t\tfont-weight: 700;\n\t}\n\n\t&__table {\n\t\tcolor: blue;\n\t\tborder-top: 1px blue solid;\n\t\tborder-left: 1px blue solid;\n\t\tmargin-left: 1px;\n\t\tpadding-left: 5px;\n\t\tpadding-top: 5px;\n\t\tmargin-top: 10px;\n\n\t\t&--mark-hidden {\n\t\t\tcolor: #8888ff;\n\t\t}\n\n\t\ttr {\n\t\t\ttd:nth-child(2) {\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__group {\n\t\tlist-style: none;\n\t\tpadding-inline-start: 10px;\n\t}\n}\n\n.cfgTextualConfiguration {\n\t&__input {\n\t\twidth: 100%;\n\t\tmin-height: 15em;\n\t}\n\n\t&__error {\n\t\tmargin-top: 1em;\n\t\tfont-size: 1.2em;\n\n\t\t.cfgErrorIcon {\n\t\t\tmargin-right: 0.75em;\n\t\t\twidth: 1.25em;\n\t\t\theight: 1em;\n\t\t}\n\t}\n}\n","@import \"exerciser\";\n\n.cfgFontSize10 {\n\tfont-size: 10px;\n}\n\n.cfgDebugLog {\n\tfont-size: 1.5em;\n\tmargin: 1em 0;\n\n\t&__list {\n\t\tlist-style: none;\n\t\tpadding-left: 0;\n\t}\n\n\t&__item {\n\t\tpadding: 1em;\n\n\t\t&--severityLog,\n\t\t&--severityInfo {\n\t\t\tbackground-color: #3333ff;\n\t\t\tcolor: #fff;\n\t\t}\n\t\t&--severityWarn {\n\t\t\tbackground-color: #ffdd00;\n\t\t}\n\t\t&--severityError {\n\t\t\tbackground-color: #cc0000;\n\t\t\tcolor: #fff;\n\t\t}\n\t}\n}\n\nul.debug-wrapper {\n\tpadding-inline-start: 0;\n\tlist-style: none;\n}\n\n.debug-component {\n\t&__heading {\n\t\tfont-weight: 700;\n\t}\n\n\t&__table {\n\t\tcolor: blue;\n\t\tborder-top: 1px blue solid;\n\t\tborder-left: 1px blue solid;\n\t\tmargin-left: 1px;\n\t\tpadding-left: 5px;\n\t\tpadding-top: 5px;\n\t\tmargin-top: 10px;\n\n\t\t&--mark-hidden {\n\t\t\tcolor: #8888ff;\n\t\t}\n\n\t\ttr {\n\t\t\ttd:nth-child(2) {\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__group {\n\t\tlist-style: none;\n\t\tpadding-inline-start: 10px;\n\t}\n}\n\n.cfgTextualConfiguration {\n\t&__input {\n\t\twidth: 100%;\n\t\tmin-height: 15em;\n\t}\n\n\t&__error {\n\t\tmargin-top: 1em;\n\t\tfont-size: 1.2em;\n\n\t\t.cfgErrorIcon {\n\t\t\tmargin-right: 0.75em;\n\t\t\twidth: 1.25em;\n\t\t\theight: 1em;\n\t\t}\n\t}\n}\n"]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { CatalogueAPI, DtoCatalogueParams,
|
|
1
|
+
import { CatalogueAPI, DtoCatalogueParams, DtoCatalogueParamsWithCid, DtoCataloguePermission, DtoProductParamsWithCid, DtoTOCResponse, GeneratedProductConfiguration, ProductRefParams } from "@configura/web-api";
|
|
2
2
|
import { AggregatedLoadingObservable, Filter, Filters, LogLevel } from "@configura/web-utilities";
|
|
3
3
|
import React from "react";
|
|
4
4
|
export declare type ExerciserAction = "setup" | "run";
|
|
5
5
|
export declare function validateAction(action: string): ExerciserAction;
|
|
6
|
-
export declare function flattenCataloguePermissions(permissions: DtoCataloguePermission[]):
|
|
6
|
+
export declare function flattenCataloguePermissions(permissions: DtoCataloguePermission[]): DtoCatalogueParamsWithCid[];
|
|
7
7
|
export declare function filtersKey(...filters: Filter[]): string;
|
|
8
|
-
export declare function catalogueFiltersKey(filters: Filters<
|
|
9
|
-
export declare function useCatalogueFilters(props: ExerciserState): Filters<
|
|
8
|
+
export declare function catalogueFiltersKey(filters: Filters<DtoCatalogueParams>): string;
|
|
9
|
+
export declare function useCatalogueFilters(props: ExerciserState): Filters<DtoCatalogueParams>;
|
|
10
10
|
export declare function productFiltersKey(filters: Filters<ProductRefParams>): string;
|
|
11
11
|
export declare function useProductFilters(props: ExerciserState): Filters<ProductRefParams>;
|
|
12
|
-
export declare function useProductConfigurationIterator(api: CatalogueAPI, lang: string, result:
|
|
13
|
-
export declare function useToc(api: CatalogueAPI, params:
|
|
12
|
+
export declare function useProductConfigurationIterator(api: CatalogueAPI, lang: string, result: DtoCatalogueParamsWithCid[], productConditions: Filters<ProductRefParams>): AsyncIterableIterator<GeneratedProductConfiguration | Error>;
|
|
13
|
+
export declare function useToc(api: CatalogueAPI, params: DtoCatalogueParams | undefined, lang: string, setError: (err: unknown) => void, loadingObservable: AggregatedLoadingObservable): DtoTOCResponse | undefined;
|
|
14
14
|
export interface LogMessageCount {
|
|
15
15
|
message: string;
|
|
16
16
|
level: LogLevel;
|
|
@@ -29,7 +29,7 @@ export interface ExerciserState {
|
|
|
29
29
|
interface Props {
|
|
30
30
|
api: CatalogueAPI;
|
|
31
31
|
exerciserState: ExerciserState;
|
|
32
|
-
generateExerciserUrl: (action: ExerciserAction, lang: string, params: Partial<
|
|
32
|
+
generateExerciserUrl: (action: ExerciserAction, lang: string, params: Partial<DtoProductParamsWithCid>) => string;
|
|
33
33
|
setError: (err: unknown) => void;
|
|
34
34
|
setExerciserState: (next: ExerciserState) => void;
|
|
35
35
|
}
|
|
@@ -67,14 +67,14 @@ export function useProductConfigurationIterator(api, lang, result, productCondit
|
|
|
67
67
|
}), [api, lang, productConditions, result]);
|
|
68
68
|
}
|
|
69
69
|
export function useToc(api, params, lang, setError, loadingObservable) {
|
|
70
|
-
|
|
70
|
+
const [response, setResponse] = useState();
|
|
71
71
|
useEffect(() => {
|
|
72
72
|
if (!params) {
|
|
73
73
|
setResponse(undefined);
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
76
|
let canceled = false;
|
|
77
|
-
|
|
77
|
+
const token = loadingObservable.startChildLoading();
|
|
78
78
|
api.getTocFlat(Object.assign(Object.assign({}, params), { lang }))
|
|
79
79
|
.then((res) => !canceled && setResponse(res))
|
|
80
80
|
.catch((err) => !canceled && setError(err))
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DtoProductParamsWithCid, GeneratedProductConfiguration } from "@configura/web-api";
|
|
2
2
|
import { AggregatedLoadingObservable, LogLevel } from "@configura/web-utilities";
|
|
3
3
|
import { ExerciserAction } from "./Exerciser.js";
|
|
4
4
|
import { ExerciserReportItem } from "./ExerciserReportItem.js";
|
|
@@ -13,7 +13,7 @@ interface Props {
|
|
|
13
13
|
addReportItem: (item: ExerciserReportItem) => void;
|
|
14
14
|
loadingObservable: AggregatedLoadingObservable;
|
|
15
15
|
productIterator: AsyncIterableIterator<GeneratedProductConfiguration | Error>;
|
|
16
|
-
generateExerciserUrl: (action: ExerciserAction, lang: string, params: Partial<
|
|
16
|
+
generateExerciserUrl: (action: ExerciserAction, lang: string, params: Partial<DtoProductParamsWithCid>) => string;
|
|
17
17
|
}
|
|
18
18
|
export declare function ExerciserRunner(props: Props): JSX.Element | null;
|
|
19
19
|
export {};
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { CatalogueAPI,
|
|
1
|
+
import { CatalogueAPI, DtoProductParamsWithCid, GeneratedProductConfiguration } from "@configura/web-api";
|
|
2
2
|
import { AggregatedLoadingObservable } from "@configura/web-utilities";
|
|
3
|
+
import React from "react";
|
|
3
4
|
import { ExerciserAction, ExerciserState } from "./Exerciser.js";
|
|
4
5
|
interface Props {
|
|
5
6
|
api: CatalogueAPI;
|
|
6
7
|
exerciserState: ExerciserState;
|
|
7
|
-
generateExerciserUrl: (action: ExerciserAction, lang: string, params: Partial<
|
|
8
|
+
generateExerciserUrl: (action: ExerciserAction, lang: string, params: Partial<DtoProductParamsWithCid>) => string;
|
|
8
9
|
loadingObservable: AggregatedLoadingObservable;
|
|
9
10
|
setError: (err: unknown) => void;
|
|
10
11
|
setExerciserState: (next: ExerciserState) => void;
|
|
11
12
|
setProductIterator: (next: AsyncIterableIterator<GeneratedProductConfiguration | Error>) => void;
|
|
12
13
|
}
|
|
13
|
-
export declare
|
|
14
|
+
export declare const ExerciserSetup: React.FC<Props>;
|
|
14
15
|
export {};
|
|
15
16
|
//# sourceMappingURL=ExerciserSetup.d.ts.map
|
|
@@ -5,7 +5,7 @@ import { Link } from "react-router-dom";
|
|
|
5
5
|
import { useMemoized, useMemoized2 } from "../hooks.js";
|
|
6
6
|
import { flattenCataloguePermissions, useCatalogueFilters, useProductConfigurationIterator, useProductFilters, useToc, } from "./Exerciser.js";
|
|
7
7
|
import { FilterSelect } from "./FilterSelect.js";
|
|
8
|
-
export
|
|
8
|
+
export const ExerciserSetup = (props) => {
|
|
9
9
|
var _a;
|
|
10
10
|
const { loadingObservable, exerciserState, setProductIterator, api, setError } = props;
|
|
11
11
|
const { action, lang } = exerciserState;
|
|
@@ -51,4 +51,4 @@ export function ExerciserSetup(props) {
|
|
|
51
51
|
p.priceList))))),
|
|
52
52
|
React.createElement("h2", { className: "cfgExerciserHeader" }, "Products Preview"),
|
|
53
53
|
toc !== undefined ? (React.createElement("ol", null, filteredProducts.map((p) => (React.createElement("li", { key: p.partNr }, p.partNr))))) : filteredCatalogues.length === 1 ? (React.createElement(Loading, { small: true })) : (React.createElement("p", null, "Product preview is only available if a single catalogue is selected"))))));
|
|
54
|
-
}
|
|
54
|
+
};
|
|
@@ -7,12 +7,13 @@ const Formatted = (props) => {
|
|
|
7
7
|
return React.createElement(React.Fragment, null, "-");
|
|
8
8
|
case "boolean":
|
|
9
9
|
return React.createElement(React.Fragment, null, trueFalseToText(value));
|
|
10
|
-
default:
|
|
10
|
+
default: {
|
|
11
11
|
const asString = `${value}`;
|
|
12
12
|
if (asString.indexOf("http") === 0) {
|
|
13
13
|
return React.createElement("a", { href: asString }, asString);
|
|
14
14
|
}
|
|
15
15
|
return React.createElement(React.Fragment, null, asString);
|
|
16
|
+
}
|
|
16
17
|
}
|
|
17
18
|
};
|
|
18
19
|
export const DebugRow = (props) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@configura/debug-react",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.20",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
"test": "echo \"Error: run tests from root\" && exit 1"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@configura/babylon-view": "2.0.0-alpha.
|
|
23
|
-
"@configura/babylon-view-react": "2.0.0-alpha.
|
|
24
|
-
"@configura/web-ui": "2.0.0-alpha.
|
|
25
|
-
"@configura/web-utilities": "2.0.0-alpha.
|
|
22
|
+
"@configura/babylon-view": "2.0.0-alpha.20",
|
|
23
|
+
"@configura/babylon-view-react": "2.0.0-alpha.20",
|
|
24
|
+
"@configura/web-ui": "2.0.0-alpha.20",
|
|
25
|
+
"@configura/web-utilities": "2.0.0-alpha.20",
|
|
26
26
|
"react": "17.x || ^16.12.0",
|
|
27
27
|
"react-dom": "17.x || ^16.12.0",
|
|
28
28
|
"react-router-dom": "^5.2.0"
|
|
@@ -44,5 +44,5 @@
|
|
|
44
44
|
"publishConfig": {
|
|
45
45
|
"access": "public"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "74b8fd6c45f392b9133843b409f7662dbf93c47e"
|
|
48
48
|
}
|