xmlui 0.9.14 → 0.9.16
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/dist/{apiInterceptorWorker-B9XuRkxC.mjs → apiInterceptorWorker-E5ylKYVg.mjs} +1 -1
- package/dist/{index-D82p1y9A.mjs → index-BjVxVHb3.mjs} +141 -77
- package/dist/index.css +33 -31
- package/dist/scripts/bin/build-lib.js +1 -1
- package/dist/scripts/src/components/List/List.js +10 -3
- package/dist/scripts/src/components/List/ListNative.js +8 -5
- package/dist/scripts/src/components/Select/Select.js +5 -2
- package/dist/scripts/src/components/Select/SelectNative.js +3 -3
- package/dist/scripts/src/components/Tabs/Tabs.js +6 -5
- package/dist/scripts/src/components/Tabs/TabsNative.js +6 -3
- package/dist/scripts/src/components-core/InspectorContext.js +4 -2
- package/dist/scripts/src/components-core/loader/ApiLoader.js +2 -2
- package/dist/scripts/src/components-core/loader/DataLoader.js +5 -4
- package/dist/scripts/src/components-core/loader/ExternalDataLoader.js +2 -2
- package/dist/scripts/src/components-core/loader/Loader.js +3 -8
- package/dist/scripts/src/components-core/loader/MockLoaderRenderer.js +3 -3
- package/dist/scripts/src/components-core/loader/PageableLoader.js +3 -7
- package/dist/scripts/src/components-core/rendering/renderChild.js +2 -1
- package/dist/scripts/src/components-core/theming/layout-resolver.js +4 -4
- package/dist/scripts/src/components-core/theming/themes/root.js +4 -1
- package/dist/scripts/src/components-core/theming/transformThemeVars.js +8 -0
- package/dist/scripts/src/components-core/utils/extractParam.js +7 -0
- package/dist/style.css +33 -23
- package/dist/xmlui-metadata.mjs +31 -16
- package/dist/xmlui-metadata.umd.js +31 -16
- package/dist/xmlui-standalone.umd.js +172 -106
- package/dist/xmlui.d.ts +25 -0
- package/dist/xmlui.mjs +6 -4
- package/package.json +1 -1
package/dist/index.css
CHANGED
|
@@ -78,23 +78,15 @@
|
|
|
78
78
|
}
|
|
79
79
|
button {
|
|
80
80
|
-webkit-appearance: button;
|
|
81
|
-
background-color: transparent;
|
|
82
|
-
background-image: none;
|
|
83
81
|
}
|
|
84
82
|
[type=button] {
|
|
85
83
|
-webkit-appearance: button;
|
|
86
|
-
background-color: transparent;
|
|
87
|
-
background-image: none;
|
|
88
84
|
}
|
|
89
85
|
[type=reset] {
|
|
90
86
|
-webkit-appearance: button;
|
|
91
|
-
background-color: transparent;
|
|
92
|
-
background-image: none;
|
|
93
87
|
}
|
|
94
88
|
[type=submit] {
|
|
95
89
|
-webkit-appearance: button;
|
|
96
|
-
background-color: transparent;
|
|
97
|
-
background-image: none;
|
|
98
90
|
}
|
|
99
91
|
:-moz-focusring {
|
|
100
92
|
outline: auto;
|
|
@@ -7132,76 +7124,86 @@ li .htmlOl {
|
|
|
7132
7124
|
* This function allows other CSS modules to get the value of the CSS variable specified in $componentVariable.
|
|
7133
7125
|
Optionally, you can provide a $fallbackValue to set the variable's value if that is not defined.
|
|
7134
7126
|
*/
|
|
7135
|
-
.
|
|
7127
|
+
._tabs_1ggvi_13 {
|
|
7136
7128
|
display: flex;
|
|
7137
|
-
flex: 1 1 auto;
|
|
7138
7129
|
width: 100%;
|
|
7139
7130
|
background-color: var(--xmlui-backgroundColor-Tabs);
|
|
7140
7131
|
overflow: hidden;
|
|
7141
7132
|
}
|
|
7142
|
-
.
|
|
7133
|
+
._tabs_1ggvi_13[data-orientation=vertical] {
|
|
7143
7134
|
flex-direction: row;
|
|
7144
7135
|
}
|
|
7145
|
-
.
|
|
7136
|
+
._tabs_1ggvi_13[data-orientation=horizontal] {
|
|
7146
7137
|
flex-direction: column;
|
|
7147
7138
|
}
|
|
7148
7139
|
|
|
7149
|
-
.
|
|
7140
|
+
._filler_1ggvi_26 {
|
|
7150
7141
|
flex: 1 1 auto;
|
|
7151
7142
|
}
|
|
7152
|
-
.
|
|
7143
|
+
._filler_1ggvi_26[data-orientation=vertical] {
|
|
7153
7144
|
border-right-width: var(--xmlui-borderWidth-Tabs);
|
|
7154
7145
|
border-right-style: solid;
|
|
7155
7146
|
border-right-color: var(--xmlui-borderColor-Tabs);
|
|
7156
7147
|
}
|
|
7157
|
-
.
|
|
7148
|
+
._filler_1ggvi_26[data-orientation=horizontal] {
|
|
7158
7149
|
border-bottom-width: var(--xmlui-borderWidth-Tabs);
|
|
7159
7150
|
border-bottom-style: solid;
|
|
7160
7151
|
border-bottom-color: var(--xmlui-borderColor-Tabs);
|
|
7161
7152
|
}
|
|
7162
7153
|
|
|
7163
|
-
.
|
|
7164
|
-
|
|
7154
|
+
._tabTrigger_1ggvi_40 {
|
|
7155
|
+
padding: var(--xmlui-padding-trigger-Tabs);
|
|
7156
|
+
padding-left: var(--xmlui-paddingLeft-trigger-Tabs, var(--xmlui-paddingHorizontal-trigger-Tabs, var(--xmlui-padding-trigger-Tabs)));
|
|
7157
|
+
padding-right: var(--xmlui-paddingRight-trigger-Tabs, var(--xmlui-paddingHorizontal-trigger-Tabs, var(--xmlui-padding-trigger-Tabs)));
|
|
7158
|
+
padding-top: var(--xmlui-paddingTop-trigger-Tabs, var(--xmlui-paddingVertical-trigger-Tabs, var(--xmlui-padding-trigger-Tabs)));
|
|
7159
|
+
padding-bottom: var(--xmlui-paddingBottom-trigger-Tabs, var(--xmlui-paddingVertical-trigger-Tabs, var(--xmlui-padding-trigger-Tabs)));
|
|
7165
7160
|
color: var(--xmlui-textColor-trigger-Tabs);
|
|
7166
7161
|
background-color: var(--xmlui-backgroundColor-trigger-Tabs);
|
|
7167
|
-
|
|
7162
|
+
border-radius: var(--xmlui-borderRadius-trigger-Tabs);
|
|
7168
7163
|
display: flex;
|
|
7169
7164
|
align-items: center;
|
|
7170
7165
|
justify-content: center;
|
|
7171
|
-
font-size:
|
|
7166
|
+
font-size: var(--xmlui-fontSize-normal);
|
|
7172
7167
|
line-height: 1;
|
|
7173
7168
|
user-select: none;
|
|
7174
|
-
border
|
|
7169
|
+
border: var(--xmlui-border-trigger-Tabs);
|
|
7170
|
+
}
|
|
7171
|
+
._tabTrigger_1ggvi_40._distributeEvenly_1ggvi_57 {
|
|
7172
|
+
flex: 1 1 auto;
|
|
7175
7173
|
}
|
|
7176
|
-
.
|
|
7174
|
+
._tabTrigger_1ggvi_40:hover {
|
|
7177
7175
|
background-color: var(--xmlui-backgroundColor-trigger-Tabs--hover);
|
|
7178
7176
|
}
|
|
7179
|
-
.
|
|
7177
|
+
._tabTrigger_1ggvi_40[data-orientation=vertical] {
|
|
7180
7178
|
border-right-width: var(--xmlui-borderWidth-Tabs);
|
|
7181
7179
|
border-right-style: solid;
|
|
7182
7180
|
border-right-color: var(--xmlui-borderColor-Tabs);
|
|
7183
7181
|
}
|
|
7184
|
-
.
|
|
7182
|
+
._tabTrigger_1ggvi_40[data-orientation=vertical][data-state=active] {
|
|
7185
7183
|
border-right-width: var(--xmlui-borderWidth-Tabs);
|
|
7186
7184
|
border-right-style: solid;
|
|
7187
7185
|
border-right-color: var(--xmlui-borderColor-active-Tabs);
|
|
7186
|
+
background-color: var(--xmlui-backgroundColor-trigger-Tabs--active);
|
|
7188
7187
|
}
|
|
7189
|
-
.
|
|
7188
|
+
._tabTrigger_1ggvi_40[data-orientation=horizontal] {
|
|
7190
7189
|
border-bottom-width: var(--xmlui-borderWidth-Tabs);
|
|
7191
7190
|
border-bottom-style: solid;
|
|
7192
7191
|
border-bottom-color: var(--xmlui-borderColor-Tabs);
|
|
7193
7192
|
}
|
|
7194
|
-
.
|
|
7193
|
+
._tabTrigger_1ggvi_40[data-orientation=horizontal][data-state=active] {
|
|
7195
7194
|
border-bottom-width: var(--xmlui-borderWidth-Tabs);
|
|
7196
7195
|
border-bottom-style: solid;
|
|
7197
7196
|
border-bottom-color: var(--xmlui-borderColor-active-Tabs);
|
|
7197
|
+
background-color: var(--xmlui-backgroundColor-trigger-Tabs--active);
|
|
7198
7198
|
}
|
|
7199
|
-
.
|
|
7199
|
+
._tabTrigger_1ggvi_40:hover {
|
|
7200
7200
|
cursor: pointer;
|
|
7201
7201
|
}
|
|
7202
7202
|
|
|
7203
|
-
.
|
|
7203
|
+
._tabsList_1ggvi_89 {
|
|
7204
7204
|
background-color: var(--xmlui-backgroundColor-list-Tabs);
|
|
7205
|
+
border-radius: var(--xmlui-borderRadius-list-Tabs);
|
|
7206
|
+
border: var(--xmlui-border-list-Tabs);
|
|
7205
7207
|
position: relative;
|
|
7206
7208
|
z-index: 99;
|
|
7207
7209
|
overflow: hidden;
|
|
@@ -7209,18 +7211,18 @@ li .htmlOl {
|
|
|
7209
7211
|
flex-shrink: 0;
|
|
7210
7212
|
scrollbar-width: thin;
|
|
7211
7213
|
}
|
|
7212
|
-
.
|
|
7214
|
+
._tabsList_1ggvi_89[data-orientation=vertical] {
|
|
7213
7215
|
flex-direction: column;
|
|
7214
7216
|
}
|
|
7215
|
-
.
|
|
7217
|
+
._tabsList_1ggvi_89[data-orientation=horizontal] {
|
|
7216
7218
|
flex-direction: row;
|
|
7217
7219
|
}
|
|
7218
7220
|
|
|
7219
|
-
.
|
|
7221
|
+
._tabsList_1ggvi_89:hover {
|
|
7220
7222
|
overflow: auto;
|
|
7221
7223
|
}
|
|
7222
7224
|
|
|
7223
|
-
.
|
|
7225
|
+
._tabsContent_1ggvi_111 {
|
|
7224
7226
|
flex-grow: 1;
|
|
7225
7227
|
outline: none;
|
|
7226
7228
|
}/*
|
|
@@ -99,7 +99,7 @@ const buildLib = (_a) => __awaiter(void 0, [_a], void 0, function* ({ watchMode,
|
|
|
99
99
|
output: {
|
|
100
100
|
footer: (chunk) => {
|
|
101
101
|
if (chunk.name === "index" && chunk.fileName === umdFileName) {
|
|
102
|
-
return `if(typeof window.xmlui !== "undefined"){window.xmlui.standalone.registerExtension(window['${env.npm_package_name}']);}`;
|
|
102
|
+
return `if(typeof window.xmlui !== "undefined"){window.xmlui.standalone.registerExtension(window['${env.npm_package_name}'].default || window['${env.npm_package_name}']);}`;
|
|
103
103
|
}
|
|
104
104
|
return "";
|
|
105
105
|
},
|
|
@@ -71,7 +71,7 @@ exports.ListMd = (0, ComponentDefs_1.createMetadata)({
|
|
|
71
71
|
defaultValue: true,
|
|
72
72
|
},
|
|
73
73
|
},
|
|
74
|
-
childrenAsTemplate:
|
|
74
|
+
childrenAsTemplate: "itemTemplate",
|
|
75
75
|
apis: {
|
|
76
76
|
scrollToTop: (0, ComponentDefs_1.d)("This method scrolls the list to the top."),
|
|
77
77
|
scrollToBottom: (0, ComponentDefs_1.d)("This method scrolls the list to the bottom."),
|
|
@@ -80,6 +80,9 @@ exports.ListMd = (0, ComponentDefs_1.createMetadata)({
|
|
|
80
80
|
},
|
|
81
81
|
contextVars: {
|
|
82
82
|
$item: (0, ComponentDefs_1.d)(`This property represents the value of an item in the data list.`),
|
|
83
|
+
$itemIndex: (0, metadata_helpers_1.dComponent)("This integer value represents the current row index (zero-based) while rendering children."),
|
|
84
|
+
$isFirst: (0, metadata_helpers_1.dComponent)("This boolean value indicates if the component renders its first item."),
|
|
85
|
+
$isLast: (0, metadata_helpers_1.dComponent)("This boolean value indicates if the component renders its last item."),
|
|
83
86
|
},
|
|
84
87
|
themeVars: (0, themeVars_1.parseScssVar)(List_module_scss_1.default.themeVars),
|
|
85
88
|
});
|
|
@@ -87,8 +90,12 @@ exports.dynamicHeightListComponentRenderer = (0, renderers_1.createComponentRend
|
|
|
87
90
|
const itemTemplate = node.props.itemTemplate;
|
|
88
91
|
const hideEmptyGroups = extractValue.asOptionalBoolean(node.props.hideEmptyGroups, true);
|
|
89
92
|
return ((0, jsx_runtime_1.jsx)(ListNative_1.ListNative, { registerComponentApi: registerComponentApi, style: layoutCss, loading: extractValue.asOptionalBoolean(node.props.loading), items: extractValue(node.props.items) || extractValue(node.props.data), limit: extractValue(node.props.limit), groupBy: extractValue(node.props.groupBy), orderBy: extractValue(node.props.orderBy), availableGroups: extractValue(node.props.availableGroups), scrollAnchor: node.props.scrollAnchor, pageInfo: extractValue(node.props.pageInfo), idKey: extractValue(node.props.idKey), requestFetchPrevPage: lookupEventHandler("requestFetchPrevPage"), requestFetchNextPage: lookupEventHandler("requestFetchNextPage"), emptyListPlaceholder: renderChild(node.props.emptyListTemplate), groupsInitiallyExpanded: extractValue.asOptionalBoolean(node.props.groupsInitiallyExpanded), defaultGroups: extractValue(node.props.defaultGroups), borderCollapse: extractValue.asOptionalBoolean(node.props.borderCollapse, true), itemRenderer: itemTemplate &&
|
|
90
|
-
((item, key) => {
|
|
91
|
-
return ((0, jsx_runtime_1.jsx)(container_helpers_1.MemoizedItem, { node: itemTemplate, item: item, renderChild: renderChild, layoutContext: layoutContext
|
|
93
|
+
((item, key, rowIndex, count) => {
|
|
94
|
+
return ((0, jsx_runtime_1.jsx)(container_helpers_1.MemoizedItem, { node: itemTemplate, item: item, renderChild: renderChild, layoutContext: layoutContext, contextVars: {
|
|
95
|
+
$itemIndex: rowIndex,
|
|
96
|
+
$isFirst: rowIndex === 0,
|
|
97
|
+
$isLast: rowIndex === count - 1,
|
|
98
|
+
} }, key));
|
|
92
99
|
}), sectionRenderer: node.props.groupBy
|
|
93
100
|
? (item, key) => {
|
|
94
101
|
var _a, _b, _c;
|
|
@@ -334,7 +334,7 @@ exports.ListNative = (0, react_1.forwardRef)(function DynamicHeightList({ items
|
|
|
334
334
|
if (rows.length) {
|
|
335
335
|
(_a = virtualizerRef.current) === null || _a === void 0 ? void 0 : _a.scrollToIndex(rows.length + 1, {
|
|
336
336
|
align: "end",
|
|
337
|
-
offset: scrollPaddingTop
|
|
337
|
+
offset: scrollPaddingTop,
|
|
338
338
|
});
|
|
339
339
|
}
|
|
340
340
|
});
|
|
@@ -367,6 +367,7 @@ exports.ListNative = (0, react_1.forwardRef)(function DynamicHeightList({ items
|
|
|
367
367
|
});
|
|
368
368
|
}, [registerComponentApi, scrollToBottom, scrollToId, scrollToIndex, scrollToTop]);
|
|
369
369
|
const rowTypeContextValue = (0, react_1.useCallback)((index) => rows[index]._row_type, [rows]);
|
|
370
|
+
const rowCount = (_a = rows === null || rows === void 0 ? void 0 : rows.length) !== null && _a !== void 0 ? _a : 0;
|
|
370
371
|
return ((0, jsx_runtime_1.jsx)(ListItemTypeContext.Provider, { value: rowTypeContextValue, children: (0, jsx_runtime_1.jsx)(exports.ListContext.Provider, { value: expandContextValue, children: (0, jsx_runtime_1.jsxs)("div", { ref: rootRef, style: style, className: (0, classnames_1.default)(List_module_scss_1.default.outerWrapper, {
|
|
371
372
|
[List_module_scss_1.default.hasOutsideScroll]: hasOutsideScroll,
|
|
372
373
|
}), children: [loading && rows.length === 0 && ((0, jsx_runtime_1.jsx)("div", { className: List_module_scss_1.default.loadingWrapper, children: (0, jsx_runtime_1.jsx)(SpinnerNative_1.Spinner, {}) })), !loading &&
|
|
@@ -375,7 +376,9 @@ exports.ListNative = (0, react_1.forwardRef)(function DynamicHeightList({ items
|
|
|
375
376
|
[List_module_scss_1.default.reverse]: scrollAnchor === "bottom",
|
|
376
377
|
[List_module_scss_1.default.borderCollapse]: borderCollapse,
|
|
377
378
|
[List_module_scss_1.default.sectioned]: groupBy !== undefined,
|
|
378
|
-
}), "data-list-container": true, children: (0, jsx_runtime_1.jsx)(virtua_1.Virtualizer, { ref: virtualizerRef, scrollRef: scrollElementRef, shift: shift, onScroll: onScroll, startMargin: hasOutsideScroll
|
|
379
|
+
}), "data-list-container": true, children: (0, jsx_runtime_1.jsx)(virtua_1.Virtualizer, { ref: virtualizerRef, scrollRef: scrollElementRef, shift: shift, onScroll: onScroll, startMargin: hasOutsideScroll
|
|
380
|
+
? ((_b = parentRef.current) === null || _b === void 0 ? void 0 : _b.offsetTop) - ((_c = scrollRef.current) === null || _c === void 0 ? void 0 : _c.offsetTop) || 0
|
|
381
|
+
: 0, item: Item, count: rowCount, children: (rowIndex) => {
|
|
379
382
|
const row = rows[rowIndex];
|
|
380
383
|
const key = row[idKey];
|
|
381
384
|
switch (row._row_type) {
|
|
@@ -384,12 +387,12 @@ exports.ListNative = (0, react_1.forwardRef)(function DynamicHeightList({ items
|
|
|
384
387
|
case RowType.SECTION_FOOTER:
|
|
385
388
|
return ((0, jsx_runtime_1.jsx)(react_1.Fragment, { children: (sectionFooterRenderer === null || sectionFooterRenderer === void 0 ? void 0 : sectionFooterRenderer(row, key)) || (0, jsx_runtime_1.jsx)("div", {}) }, key));
|
|
386
389
|
default:
|
|
387
|
-
return (0, jsx_runtime_1.jsx)(react_1.Fragment, { children: itemRenderer(row, key) || (0, jsx_runtime_1.jsx)("div", {}) }, key);
|
|
390
|
+
return ((0, jsx_runtime_1.jsx)(react_1.Fragment, { children: itemRenderer(row, key, rowIndex, rowCount) || (0, jsx_runtime_1.jsx)("div", {}) }, key));
|
|
388
391
|
}
|
|
389
392
|
} }) }))] }) }) }));
|
|
390
393
|
});
|
|
391
394
|
// --- Helper function for List item rendering
|
|
392
|
-
function MemoizedSection({ node, renderChild, item, }) {
|
|
395
|
+
function MemoizedSection({ node, renderChild, item, contextVars = constants_1.EMPTY_OBJECT, }) {
|
|
393
396
|
const { isExpanded, toggleExpanded } = (0, react_1.useContext)(exports.ListContext);
|
|
394
397
|
const id = item.id;
|
|
395
398
|
const expanded = isExpanded(id);
|
|
@@ -401,5 +404,5 @@ function MemoizedSection({ node, renderChild, item, }) {
|
|
|
401
404
|
},
|
|
402
405
|
};
|
|
403
406
|
}, [expanded, id, toggleExpanded]);
|
|
404
|
-
return ((0, jsx_runtime_1.jsx)(container_helpers_1.MemoizedItem, { node: node, renderChild: renderChild, item: item, context: sectionContext, itemKey: "$group", contextKey: "$group" }));
|
|
407
|
+
return ((0, jsx_runtime_1.jsx)(container_helpers_1.MemoizedItem, { node: node, renderChild: renderChild, item: item, context: sectionContext, itemKey: "$group", contextKey: "$group", contextVars: Object.assign(Object.assign({}, contextVars), { $isFirst: item.index === 0, $isLast: item.index === item.count - 1 }) }));
|
|
405
408
|
}
|
|
@@ -88,8 +88,11 @@ exports.selectComponentRenderer = (0, renderers_1.createComponentRenderer)(COMP,
|
|
|
88
88
|
return ((0, jsx_runtime_1.jsx)(container_helpers_1.MemoizedItem, { node: node.props.optionLabelTemplate, item: item, renderChild: renderChild }));
|
|
89
89
|
}
|
|
90
90
|
: undefined, optionRenderer: node.props.optionTemplate
|
|
91
|
-
? (item) => {
|
|
92
|
-
return ((0, jsx_runtime_1.jsx)(container_helpers_1.MemoizedItem, { node: node.props.optionTemplate, item: item,
|
|
91
|
+
? (item, val, inTrigger) => {
|
|
92
|
+
return ((0, jsx_runtime_1.jsx)(container_helpers_1.MemoizedItem, { node: node.props.optionTemplate, item: item, contextVars: {
|
|
93
|
+
$selectedValue: val,
|
|
94
|
+
$inTrigger: inTrigger
|
|
95
|
+
}, renderChild: (...args) => ((0, jsx_runtime_1.jsx)(react_select_1.SelectItemText, { children: renderChild(...args) })) }));
|
|
93
96
|
}
|
|
94
97
|
: undefined, valueRenderer: node.props.valueTemplate
|
|
95
98
|
? (item, removeItem) => {
|
|
@@ -200,7 +200,7 @@ exports.ComboboxOption = (0, react_1.forwardRef)(function Combobox(option, forwa
|
|
|
200
200
|
}, [selectedValue, value, multiSelect]);
|
|
201
201
|
return ((0, jsx_runtime_1.jsx)(cmdk_1.CommandItem, { id: id, ref: forwardedRef, disabled: !enabled, value: `${value}`, className: Select_module_scss_1.default.multiComboboxOption, onSelect: () => {
|
|
202
202
|
onChange(value);
|
|
203
|
-
}, "data-state": selected ? "checked" : undefined, keywords: keywords, children: (0, jsx_runtime_1.jsx)("div", { className: Select_module_scss_1.default.multiComboboxOptionContent, children: optionRenderer ? (optionRenderer({ label, value, enabled, keywords })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [optionLabelRenderer ? optionLabelRenderer({ label, value }) : label, selected && (0, jsx_runtime_1.jsx)(IconNative_1.default, { name: "checkmark" })] })) }) }, id));
|
|
203
|
+
}, "data-state": selected ? "checked" : undefined, keywords: keywords, children: (0, jsx_runtime_1.jsx)("div", { className: Select_module_scss_1.default.multiComboboxOptionContent, children: optionRenderer ? (optionRenderer({ label, value, enabled, keywords }, selectedValue, false)) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [optionLabelRenderer ? optionLabelRenderer({ label, value }) : label, selected && (0, jsx_runtime_1.jsx)(IconNative_1.default, { name: "checkmark" })] })) }) }, id));
|
|
204
204
|
});
|
|
205
205
|
function HiddenOption(option) {
|
|
206
206
|
const { onOptionRemove, onOptionAdd } = (0, OptionContext_1.useOption)();
|
|
@@ -218,7 +218,7 @@ function HiddenOption(option) {
|
|
|
218
218
|
const SelectOption = react_1.default.forwardRef((option, ref) => {
|
|
219
219
|
const { value, label, enabled = true } = option;
|
|
220
220
|
const { onOptionRemove, onOptionAdd } = (0, OptionContext_1.useOption)();
|
|
221
|
-
const { optionLabelRenderer, optionRenderer } = (0, SelectContext_1.useSelect)();
|
|
221
|
+
const { optionLabelRenderer, optionRenderer, value: selectedValue, multiSelect } = (0, SelectContext_1.useSelect)();
|
|
222
222
|
(0, react_1.useLayoutEffect)(() => {
|
|
223
223
|
onOptionAdd(option);
|
|
224
224
|
return () => onOptionRemove(option);
|
|
@@ -227,6 +227,6 @@ const SelectOption = react_1.default.forwardRef((option, ref) => {
|
|
|
227
227
|
label,
|
|
228
228
|
value,
|
|
229
229
|
enabled,
|
|
230
|
-
})) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_select_1.ItemText, { className: Select_module_scss_1.default.selectItemContent, children: optionLabelRenderer ? optionLabelRenderer({ value, label }) : label }), (0, jsx_runtime_1.jsx)("span", { className: Select_module_scss_1.default.selectItemIndicator, children: (0, jsx_runtime_1.jsx)(react_select_1.ItemIndicator, { children: (0, jsx_runtime_1.jsx)(IconNative_1.default, { name: "checkmark" }) }) })] })) }) }));
|
|
230
|
+
}, selectedValue, false)) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_select_1.ItemText, { className: Select_module_scss_1.default.selectItemContent, children: optionLabelRenderer ? optionLabelRenderer({ value, label }) : label }), (0, jsx_runtime_1.jsx)("span", { className: Select_module_scss_1.default.selectItemIndicator, children: (0, jsx_runtime_1.jsx)(react_select_1.ItemIndicator, { children: (0, jsx_runtime_1.jsx)(IconNative_1.default, { name: "checkmark" }) }) })] })) }) }));
|
|
231
231
|
});
|
|
232
232
|
SelectOption.displayName = "SelectOption";
|
|
@@ -34,15 +34,16 @@ exports.TabsMd = (0, ComponentDefs_1.createMetadata)({
|
|
|
34
34
|
},
|
|
35
35
|
themeVars: (0, themeVars_1.parseScssVar)(Tabs_module_scss_1.default.themeVars),
|
|
36
36
|
defaultThemeVars: {
|
|
37
|
-
[`backgroundColor-${COMP}`]: "
|
|
37
|
+
// [`backgroundColor-${COMP}`]: "transparent",
|
|
38
38
|
[`borderStyle-${COMP}`]: "solid",
|
|
39
39
|
[`borderColor-${COMP}`]: "$borderColor",
|
|
40
40
|
[`borderColor-active-${COMP}`]: "$color-primary",
|
|
41
41
|
[`borderWidth-${COMP}`]: "2px",
|
|
42
|
-
[`backgroundColor-trigger-${COMP}`]: "
|
|
43
|
-
[`backgroundColor-trigger-${COMP}--hover`]: "$color-
|
|
44
|
-
[`
|
|
45
|
-
[`
|
|
42
|
+
// [`backgroundColor-trigger-${COMP}`]: "transparent",
|
|
43
|
+
[`backgroundColor-trigger-${COMP}--hover`]: "$color-surface-100",
|
|
44
|
+
[`padding-trigger-${COMP}`]: "$space-4",
|
|
45
|
+
// [`backgroundColor-list-${COMP}`]: "$color-primary-50",
|
|
46
|
+
// [`textColor-trigger-${COMP}`]: "$color-primary-100",
|
|
46
47
|
},
|
|
47
48
|
});
|
|
48
49
|
exports.tabsComponentRenderer = (0, renderers_1.createComponentRenderer)(COMP, exports.TabsMd, ({ extractValue, node, renderChild, layoutCss, registerComponentApi }) => {
|
|
@@ -43,7 +43,8 @@ const RTabs = __importStar(require("@radix-ui/react-tabs"));
|
|
|
43
43
|
const Tabs_module_scss_1 = __importDefault(require("./Tabs.module.scss"));
|
|
44
44
|
const misc_1 = require("../../components-core/utils/misc");
|
|
45
45
|
const TabContext_1 = require("../Tabs/TabContext");
|
|
46
|
-
|
|
46
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
47
|
+
exports.Tabs = (0, react_1.forwardRef)(function Tabs({ activeTab = 0, orientation = "horizontal", tabRenderer, style, children, registerComponentApi, className, distributeEvenly = false, }, forwardedRef) {
|
|
47
48
|
const { tabItems, tabContextValue } = (0, TabContext_1.useTabContextValue)();
|
|
48
49
|
const [activeIndex, setActiveIndex] = (0, react_1.useState)(activeTab);
|
|
49
50
|
const currentTab = (0, react_1.useMemo)(() => {
|
|
@@ -73,11 +74,13 @@ exports.Tabs = (0, react_1.forwardRef)(function Tabs({ activeTab = 0, orientatio
|
|
|
73
74
|
next,
|
|
74
75
|
});
|
|
75
76
|
}, [next, registerComponentApi]);
|
|
76
|
-
return ((0, jsx_runtime_1.jsx)(TabContext_1.TabContext.Provider, { value: tabContextValue, children: (0, jsx_runtime_1.jsxs)(RTabs.Root, { ref: forwardedRef, className: Tabs_module_scss_1.default.tabs, value: `${currentTab}`, onValueChange: (tab) => {
|
|
77
|
+
return ((0, jsx_runtime_1.jsx)(TabContext_1.TabContext.Provider, { value: tabContextValue, children: (0, jsx_runtime_1.jsxs)(RTabs.Root, { ref: forwardedRef, className: (0, classnames_1.default)(Tabs_module_scss_1.default.tabs, className), value: `${currentTab}`, onValueChange: (tab) => {
|
|
77
78
|
const newIndex = tabItems.findIndex((item) => item.id === tab);
|
|
78
79
|
if (newIndex !== activeIndex) {
|
|
79
80
|
tabContextValue.setActiveTabId(tab);
|
|
80
81
|
setActiveIndex(newIndex);
|
|
81
82
|
}
|
|
82
|
-
}, orientation: orientation, style: style, children: [(0, jsx_runtime_1.jsxs)(RTabs.List, { className: Tabs_module_scss_1.default.tabsList, children: [tabItems.map((tab) => tabRenderer ? ((0, jsx_runtime_1.jsx)(RTabs.Trigger, { value: tab.id, children: tabRenderer({ label: tab.label, isActive: tab.id === currentTab }) }, tab.id)) : ((0, jsx_runtime_1.jsx)(RTabs.Trigger, { className:
|
|
83
|
+
}, orientation: orientation, style: style, children: [(0, jsx_runtime_1.jsxs)(RTabs.List, { className: Tabs_module_scss_1.default.tabsList, children: [tabItems.map((tab) => tabRenderer ? ((0, jsx_runtime_1.jsx)(RTabs.Trigger, { value: tab.id, asChild: true, children: tabRenderer({ label: tab.label, isActive: tab.id === currentTab }) }, tab.id)) : ((0, jsx_runtime_1.jsx)(RTabs.Trigger, { className: (0, classnames_1.default)(Tabs_module_scss_1.default.tabTrigger, {
|
|
84
|
+
[Tabs_module_scss_1.default.distributeEvenly]: distributeEvenly
|
|
85
|
+
}), value: tab.id, children: tab.label }, tab.id))), (!distributeEvenly && !tabRenderer) && (0, jsx_runtime_1.jsx)("div", { className: Tabs_module_scss_1.default.filler, "data-orientation": orientation })] }), children] }) }));
|
|
83
86
|
});
|
|
@@ -19,7 +19,7 @@ const InspectorButton_module_scss_1 = __importDefault(require("./InspectorButton
|
|
|
19
19
|
const ComponentRegistryContext_1 = require("../components/ComponentRegistryContext");
|
|
20
20
|
// --- The context object that is used to store the inspector information.
|
|
21
21
|
exports.InspectorContext = (0, react_1.createContext)(null);
|
|
22
|
-
function InspectorProvider({ children, sources, }) {
|
|
22
|
+
function InspectorProvider({ children, sources, projectCompilation, }) {
|
|
23
23
|
const { root } = (0, ThemeContext_1.useTheme)();
|
|
24
24
|
const [inspectable, setInspectable] = (0, react_1.useState)({});
|
|
25
25
|
const [inspectedNode, setInspectedNode] = (0, react_1.useState)(null);
|
|
@@ -60,8 +60,9 @@ function InspectorProvider({ children, sources, }) {
|
|
|
60
60
|
devToolsSide,
|
|
61
61
|
setDevToolsSide,
|
|
62
62
|
devToolsEnabled: showCode,
|
|
63
|
+
projectCompilation: projectCompilation,
|
|
63
64
|
};
|
|
64
|
-
}, [devToolsSide, devToolsSize, sources, inspectedNode, showCode]);
|
|
65
|
+
}, [devToolsSide, devToolsSize, sources, inspectedNode, showCode, projectCompilation]);
|
|
65
66
|
return ((0, jsx_runtime_1.jsxs)(exports.InspectorContext.Provider, { value: contextValue, children: [children, process.env.VITE_USER_COMPONENTS_Inspect !== "false" &&
|
|
66
67
|
showCode &&
|
|
67
68
|
inspectedNode !== null &&
|
|
@@ -145,6 +146,7 @@ function InspectButton({ inspectId, node, setInspectedNode, setShowCode, }) {
|
|
|
145
146
|
function useDevTools() {
|
|
146
147
|
const context = (0, react_1.useContext)(exports.InspectorContext);
|
|
147
148
|
return {
|
|
149
|
+
projectCompilation: context === null || context === void 0 ? void 0 : context.projectCompilation,
|
|
148
150
|
inspectedNode: context === null || context === void 0 ? void 0 : context.inspectedNode,
|
|
149
151
|
sources: context === null || context === void 0 ? void 0 : context.sources,
|
|
150
152
|
setIsOpen: context === null || context === void 0 ? void 0 : context.setIsOpen,
|
|
@@ -21,7 +21,7 @@ const Loader_1 = require("./Loader");
|
|
|
21
21
|
/**
|
|
22
22
|
* Represents a non-displayed React component, which handles the specified API loader
|
|
23
23
|
*/
|
|
24
|
-
function ApiLoader({ loader, loaderInProgressChanged, loaderIsRefetchingChanged, loaderLoaded, loaderError, state, doNotRemoveNulls, }) {
|
|
24
|
+
function ApiLoader({ loader, loaderInProgressChanged, loaderIsRefetchingChanged, loaderLoaded, loaderError, state, doNotRemoveNulls, structuralSharing = true, }) {
|
|
25
25
|
const appContext = (0, AppContext_1.useAppContext)();
|
|
26
26
|
const url = (0, extractParam_1.extractParam)(state, loader.props.url, appContext);
|
|
27
27
|
const loadable = !!url;
|
|
@@ -39,7 +39,7 @@ function ApiLoader({ loader, loaderInProgressChanged, loaderIsRefetchingChanged,
|
|
|
39
39
|
}
|
|
40
40
|
return responseObj;
|
|
41
41
|
}), [doNotRemoveNulls, loadable, loader.props.raw, url]);
|
|
42
|
-
return ((0, jsx_runtime_1.jsx)(Loader_1.Loader, { state: state, loader: loader, loaderInProgressChanged: loaderInProgressChanged, loaderIsRefetchingChanged: loaderIsRefetchingChanged, loaderLoaded: loaderLoaded, loaderError: loaderError, loaderFn: doLoad }));
|
|
42
|
+
return ((0, jsx_runtime_1.jsx)(Loader_1.Loader, { state: state, loader: loader, loaderInProgressChanged: loaderInProgressChanged, loaderIsRefetchingChanged: loaderIsRefetchingChanged, loaderLoaded: loaderLoaded, loaderError: loaderError, loaderFn: doLoad, structuralSharing: structuralSharing }));
|
|
43
43
|
}
|
|
44
44
|
const ApiLoaderMd = (0, ComponentDefs_1.createMetadata)({
|
|
45
45
|
description: `Represents a loader that calls an API through an HTTP/HTTPS GET request`,
|
|
@@ -26,7 +26,7 @@ const PageableLoader_1 = require("../loader/PageableLoader");
|
|
|
26
26
|
const Loader_1 = require("../loader/Loader");
|
|
27
27
|
const AppContext_1 = require("../AppContext");
|
|
28
28
|
const hooks_1 = require("../utils/hooks");
|
|
29
|
-
function DataLoader({ loader, state, registerComponentApi, onLoaded, onError, loaderInProgressChanged, loaderIsRefetchingChanged, loaderLoaded, loaderError, transformResult, }) {
|
|
29
|
+
function DataLoader({ loader, state, registerComponentApi, onLoaded, onError, loaderInProgressChanged, loaderIsRefetchingChanged, loaderLoaded, loaderError, transformResult, structuralSharing = true, }) {
|
|
30
30
|
const appContext = (0, AppContext_1.useAppContext)();
|
|
31
31
|
const url = (0, extractParam_1.extractParam)(state, loader.props.url, appContext);
|
|
32
32
|
const queryParamsInner = (0, react_1.useMemo)(() => {
|
|
@@ -290,7 +290,7 @@ function DataLoader({ loader, state, registerComponentApi, onLoaded, onError, lo
|
|
|
290
290
|
}
|
|
291
291
|
}), [appContext, loader.props.errorNotificationMessage, loaderError, onError]);
|
|
292
292
|
const pollIntervalInSeconds = (0, extractParam_1.extractParam)(state, loader.props.pollIntervalInSeconds, appContext);
|
|
293
|
-
return hasPaging ? ((0, jsx_runtime_1.jsx)(PageableLoader_1.PageableLoader, { queryId: queryId, state: state, loader: loader, loaderInProgressChanged: inProgress, loaderIsRefetchingChanged: loaderIsRefetchingChanged, loaderLoaded: loaded, loaderError: error, loaderFn: doLoad, registerComponentApi: registerComponentApi, pollIntervalInSeconds: pollIntervalInSeconds, onLoaded: onLoaded, transformResult: transformResult }, queryId === null || queryId === void 0 ? void 0 : queryId.join(""))) : ((0, jsx_runtime_1.jsx)(Loader_1.Loader, { queryId: queryId, state: state, loader: loader, loaderInProgressChanged: inProgress, loaderIsRefetchingChanged: loaderIsRefetchingChanged, loaderLoaded: loaded, loaderError: error, loaderFn: doLoad, pollIntervalInSeconds: pollIntervalInSeconds, registerComponentApi: registerComponentApi, onLoaded: onLoaded, transformResult: transformResult }, queryId === null || queryId === void 0 ? void 0 : queryId.join("")));
|
|
293
|
+
return hasPaging ? ((0, jsx_runtime_1.jsx)(PageableLoader_1.PageableLoader, { queryId: queryId, state: state, loader: loader, loaderInProgressChanged: inProgress, loaderIsRefetchingChanged: loaderIsRefetchingChanged, loaderLoaded: loaded, loaderError: error, loaderFn: doLoad, registerComponentApi: registerComponentApi, pollIntervalInSeconds: pollIntervalInSeconds, onLoaded: onLoaded, transformResult: transformResult, structuralSharing: structuralSharing }, queryId === null || queryId === void 0 ? void 0 : queryId.join(""))) : ((0, jsx_runtime_1.jsx)(Loader_1.Loader, { queryId: queryId, state: state, loader: loader, loaderInProgressChanged: inProgress, loaderIsRefetchingChanged: loaderIsRefetchingChanged, loaderLoaded: loaded, loaderError: error, loaderFn: doLoad, pollIntervalInSeconds: pollIntervalInSeconds, registerComponentApi: registerComponentApi, onLoaded: onLoaded, transformResult: transformResult, structuralSharing: structuralSharing }, queryId === null || queryId === void 0 ? void 0 : queryId.join("")));
|
|
294
294
|
}
|
|
295
295
|
exports.DataLoaderMd = (0, ComponentDefs_1.createMetadata)({
|
|
296
296
|
description: "This component manages data fetching from a web API",
|
|
@@ -310,17 +310,18 @@ exports.DataLoaderMd = (0, ComponentDefs_1.createMetadata)({
|
|
|
310
310
|
errorNotificationMessage: (0, ComponentDefs_1.d)("The message to show when an error occurs"),
|
|
311
311
|
transformResult: (0, ComponentDefs_1.d)("Function for transforming the datasource result"),
|
|
312
312
|
dataType: (0, ComponentDefs_1.d)("Type of data to fetch (default: json, or csv, or sql)"),
|
|
313
|
+
structuralSharing: (0, ComponentDefs_1.d)("Whether to use structural sharing for the data"),
|
|
313
314
|
},
|
|
314
315
|
events: {
|
|
315
316
|
loaded: (0, ComponentDefs_1.d)("Event to trigger when the data is loaded"),
|
|
316
317
|
error: (0, ComponentDefs_1.d)("This event fires when an error occurs while fetching data"),
|
|
317
318
|
},
|
|
318
319
|
});
|
|
319
|
-
exports.dataLoaderRenderer = (0, renderers_1.createLoaderRenderer)("DataLoader", ({ loader, state, loaderLoaded, loaderInProgressChanged, loaderIsRefetchingChanged, loaderError, registerComponentApi, lookupAction, lookupSyncCallback, }) => {
|
|
320
|
+
exports.dataLoaderRenderer = (0, renderers_1.createLoaderRenderer)("DataLoader", ({ loader, state, loaderLoaded, loaderInProgressChanged, loaderIsRefetchingChanged, loaderError, registerComponentApi, lookupAction, lookupSyncCallback, extractValue }) => {
|
|
320
321
|
var _a, _b, _c;
|
|
321
322
|
// --- Check for required properties
|
|
322
323
|
if (!((_a = loader.props) === null || _a === void 0 ? void 0 : _a.url) || !loader.props.url.trim()) {
|
|
323
324
|
throw new Error("You must specify a non-empty (not whitespace-only) 'url' property for DataSource");
|
|
324
325
|
}
|
|
325
|
-
return ((0, jsx_runtime_1.jsx)(DataLoader, { loader: loader, state: state, loaderInProgressChanged: loaderInProgressChanged, loaderIsRefetchingChanged: loaderIsRefetchingChanged, loaderLoaded: loaderLoaded, loaderError: loaderError, registerComponentApi: registerComponentApi, transformResult: lookupSyncCallback(loader.props.transformResult), onLoaded: lookupAction((_b = loader.events) === null || _b === void 0 ? void 0 : _b.loaded, { eventName: "loaded" }), onError: lookupAction((_c = loader.events) === null || _c === void 0 ? void 0 : _c.error, { eventName: "error" }) }));
|
|
326
|
+
return ((0, jsx_runtime_1.jsx)(DataLoader, { loader: loader, state: state, loaderInProgressChanged: loaderInProgressChanged, loaderIsRefetchingChanged: loaderIsRefetchingChanged, loaderLoaded: loaderLoaded, loaderError: loaderError, registerComponentApi: registerComponentApi, transformResult: lookupSyncCallback(loader.props.transformResult), onLoaded: lookupAction((_b = loader.events) === null || _b === void 0 ? void 0 : _b.loaded, { eventName: "loaded" }), onError: lookupAction((_c = loader.events) === null || _c === void 0 ? void 0 : _c.error, { eventName: "error" }), structuralSharing: extractValue.asOptionalBoolean(loader.props.structuralSharing) }));
|
|
326
327
|
}, exports.DataLoaderMd);
|
|
@@ -21,7 +21,7 @@ const Loader_1 = require("./Loader");
|
|
|
21
21
|
/**
|
|
22
22
|
* Represents a non-displayed React component, which handles the specified API loader
|
|
23
23
|
*/
|
|
24
|
-
function ExternalDataLoader({ loader, loaderInProgressChanged, loaderIsRefetchingChanged, loaderError, loaderLoaded, state, doNotRemoveNulls, }) {
|
|
24
|
+
function ExternalDataLoader({ loader, loaderInProgressChanged, loaderIsRefetchingChanged, loaderError, loaderLoaded, state, doNotRemoveNulls, structuralSharing = true, }) {
|
|
25
25
|
const appContext = (0, AppContext_1.useAppContext)();
|
|
26
26
|
const method = (0, extractParam_1.extractParam)(state, loader.props.method, appContext);
|
|
27
27
|
const headers = (0, extractParam_1.extractParam)(state, loader.props.headers, appContext);
|
|
@@ -43,7 +43,7 @@ function ExternalDataLoader({ loader, loaderInProgressChanged, loaderIsRefetchin
|
|
|
43
43
|
}
|
|
44
44
|
return responseObj;
|
|
45
45
|
}), [urlLoadable, headers, data, url, method, doNotRemoveNulls]);
|
|
46
|
-
return ((0, jsx_runtime_1.jsx)(Loader_1.Loader, { state: state, loader: loader, loaderInProgressChanged: loaderInProgressChanged, loaderIsRefetchingChanged: loaderIsRefetchingChanged, loaderLoaded: loaderLoaded, loaderError: loaderError, loaderFn: doLoad }));
|
|
46
|
+
return ((0, jsx_runtime_1.jsx)(Loader_1.Loader, { state: state, loader: loader, loaderInProgressChanged: loaderInProgressChanged, loaderIsRefetchingChanged: loaderIsRefetchingChanged, loaderLoaded: loaderLoaded, loaderError: loaderError, loaderFn: doLoad, structuralSharing: structuralSharing }));
|
|
47
47
|
}
|
|
48
48
|
exports.ExternalDataLoaderMd = (0, ComponentDefs_1.createMetadata)({
|
|
49
49
|
description: `Represents a loader that calls an API through an HTTP/HTTPS GET request`,
|
|
@@ -16,19 +16,18 @@ const immer_1 = require("immer");
|
|
|
16
16
|
const extractParam_1 = require("../utils/extractParam");
|
|
17
17
|
const AppContext_1 = require("../AppContext");
|
|
18
18
|
const hooks_1 = require("../utils/hooks");
|
|
19
|
-
function Loader({ state, loader, loaderFn, queryId, pollIntervalInSeconds, registerComponentApi, onLoaded, loaderLoaded, loaderInProgressChanged, loaderIsRefetchingChanged, loaderError, transformResult, }) {
|
|
19
|
+
function Loader({ state, loader, loaderFn, queryId, pollIntervalInSeconds, registerComponentApi, onLoaded, loaderLoaded, loaderInProgressChanged, loaderIsRefetchingChanged, loaderError, transformResult, structuralSharing = true }) {
|
|
20
20
|
const { uid } = loader;
|
|
21
21
|
const appContext = (0, AppContext_1.useAppContext)();
|
|
22
|
-
const [isRefetching, setIsRefetching] = (0, react_1.useState)(false);
|
|
23
22
|
// --- Rely on react-query to decide when data fetching should use the cache or when is should fetch the data from
|
|
24
23
|
// --- its data source.
|
|
25
24
|
// --- data: The data obtained by the query
|
|
26
25
|
// --- status: Query execution status
|
|
27
26
|
// --- error: Error information about the current query error (in "error" state)
|
|
28
27
|
// --- refetch: The function that can be used to re-fetch the data (because of data/state changes)
|
|
29
|
-
const { data, status, isFetching, error, refetch } = (0, react_query_1.useQuery)({
|
|
28
|
+
const { data, status, isFetching, error, refetch, isRefetching } = (0, react_query_1.useQuery)({
|
|
30
29
|
queryKey: (0, react_1.useMemo)(() => (queryId ? queryId : [uid, (0, extractParam_1.extractParam)(state, loader.props, appContext)]), [appContext, loader.props, queryId, state, uid]),
|
|
31
|
-
structuralSharing
|
|
30
|
+
structuralSharing,
|
|
32
31
|
queryFn: (0, react_1.useCallback)((_a) => __awaiter(this, [_a], void 0, function* ({ signal }) {
|
|
33
32
|
// console.log("[Loader queryFn] Starting to fetch data...");
|
|
34
33
|
try {
|
|
@@ -66,7 +65,6 @@ function Loader({ state, loader, loaderFn, queryId, pollIntervalInSeconds, regis
|
|
|
66
65
|
let intervalId;
|
|
67
66
|
if (pollIntervalInSeconds) {
|
|
68
67
|
intervalId = setInterval(() => {
|
|
69
|
-
setIsRefetching(true);
|
|
70
68
|
refetch();
|
|
71
69
|
}, pollIntervalInSeconds * 1000);
|
|
72
70
|
}
|
|
@@ -100,13 +98,11 @@ function Loader({ state, loader, loaderFn, queryId, pollIntervalInSeconds, regis
|
|
|
100
98
|
// console.log("[Loader] Calling onLoaded with data:", data);
|
|
101
99
|
// console.log("[Loader] onLoaded function exists:", !!onLoaded);
|
|
102
100
|
onLoaded === null || onLoaded === void 0 ? void 0 : onLoaded(data, isRefetching);
|
|
103
|
-
setIsRefetching(false);
|
|
104
101
|
}, 0);
|
|
105
102
|
}
|
|
106
103
|
else if (status === "error" && error !== prevError) {
|
|
107
104
|
// console.log("[Loader] Calling loaderError with error:", error);
|
|
108
105
|
loaderError(error);
|
|
109
|
-
setIsRefetching(false);
|
|
110
106
|
}
|
|
111
107
|
}, [data, error, loaderError, loaderLoaded, onLoaded, prevData, prevError, status, isRefetching]);
|
|
112
108
|
(0, react_1.useLayoutEffect)(() => {
|
|
@@ -117,7 +113,6 @@ function Loader({ state, loader, loaderFn, queryId, pollIntervalInSeconds, regis
|
|
|
117
113
|
(0, react_1.useEffect)(() => {
|
|
118
114
|
registerComponentApi === null || registerComponentApi === void 0 ? void 0 : registerComponentApi({
|
|
119
115
|
refetch: (options) => __awaiter(this, void 0, void 0, function* () {
|
|
120
|
-
setIsRefetching(true);
|
|
121
116
|
refetch(options);
|
|
122
117
|
}),
|
|
123
118
|
update: (updater) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -18,7 +18,7 @@ const extractParam_1 = require("../utils/extractParam");
|
|
|
18
18
|
const renderers_1 = require("../renderers");
|
|
19
19
|
const AppContext_1 = require("../AppContext");
|
|
20
20
|
const Loader_1 = require("./Loader");
|
|
21
|
-
function
|
|
21
|
+
function MockLoader({ loader, loaderInProgressChanged, loaderIsRefetchingChanged, loaderError, loaderLoaded, state, structuralSharing }) {
|
|
22
22
|
const appContext = (0, AppContext_1.useAppContext)();
|
|
23
23
|
const waitTime = (0, extractParam_1.extractParam)(state, loader.props.waitTime, appContext);
|
|
24
24
|
const responseObj = (0, extractParam_1.extractParam)(state, loader.props.data, appContext);
|
|
@@ -26,7 +26,7 @@ function ApiLoader({ loader, loaderInProgressChanged, loaderIsRefetchingChanged,
|
|
|
26
26
|
waitTime && (yield (0, misc_1.asyncWait)(waitTime));
|
|
27
27
|
return responseObj;
|
|
28
28
|
}), [responseObj, waitTime]);
|
|
29
|
-
return ((0, jsx_runtime_1.jsx)(Loader_1.Loader, { state: state, loader: loader, loaderInProgressChanged: loaderInProgressChanged, loaderIsRefetchingChanged: loaderIsRefetchingChanged, loaderLoaded: loaderLoaded, loaderError: loaderError, loaderFn: doLoad }));
|
|
29
|
+
return ((0, jsx_runtime_1.jsx)(Loader_1.Loader, { state: state, loader: loader, loaderInProgressChanged: loaderInProgressChanged, loaderIsRefetchingChanged: loaderIsRefetchingChanged, loaderLoaded: loaderLoaded, loaderError: loaderError, loaderFn: doLoad, structuralSharing: structuralSharing }));
|
|
30
30
|
}
|
|
31
31
|
exports.MockLoaderMd = (0, ComponentDefs_1.createMetadata)({
|
|
32
32
|
description: "A loader that simulates a delay and returns a predefined response",
|
|
@@ -36,5 +36,5 @@ exports.MockLoaderMd = (0, ComponentDefs_1.createMetadata)({
|
|
|
36
36
|
},
|
|
37
37
|
});
|
|
38
38
|
exports.mockLoaderRenderer = (0, renderers_1.createLoaderRenderer)("MockLoader", ({ loader, state, loaderInProgressChanged, loaderLoaded, loaderError }) => {
|
|
39
|
-
return ((0, jsx_runtime_1.jsx)(
|
|
39
|
+
return ((0, jsx_runtime_1.jsx)(MockLoader, { loader: loader, state: state, loaderInProgressChanged: loaderInProgressChanged, loaderIsRefetchingChanged: loaderInProgressChanged, loaderLoaded: loaderLoaded, loaderError: loaderError }));
|
|
40
40
|
}, exports.MockLoaderMd);
|
|
@@ -49,12 +49,11 @@ const immer_1 = __importStar(require("immer"));
|
|
|
49
49
|
const extractParam_1 = require("../utils/extractParam");
|
|
50
50
|
const AppContext_1 = require("../AppContext");
|
|
51
51
|
const hooks_1 = require("../utils/hooks");
|
|
52
|
-
function PageableLoader({ state, loader, loaderFn, queryId, registerComponentApi, pollIntervalInSeconds, onLoaded, loaderInProgressChanged, loaderIsRefetchingChanged, loaderLoaded, loaderError, transformResult, }) {
|
|
52
|
+
function PageableLoader({ state, loader, loaderFn, queryId, registerComponentApi, pollIntervalInSeconds, onLoaded, loaderInProgressChanged, loaderIsRefetchingChanged, loaderLoaded, loaderError, transformResult, structuralSharing = true, }) {
|
|
53
53
|
const { uid } = loader;
|
|
54
54
|
const appContext = (0, AppContext_1.useAppContext)();
|
|
55
55
|
const queryKey = (0, react_1.useMemo)(() => (queryId ? queryId : [uid, (0, extractParam_1.extractParam)(state, loader.props, appContext)]), [appContext, loader.props, queryId, state, uid]);
|
|
56
56
|
const thizRef = (0, react_1.useRef)(queryKey);
|
|
57
|
-
const [isRefetching, setIsRefetching] = (0, react_1.useState)(false);
|
|
58
57
|
const getPreviousPageParam = (0, react_1.useCallback)((firstPage) => {
|
|
59
58
|
let prevPageParam = undefined;
|
|
60
59
|
const prevPageSelector = loader.props.prevPageSelector;
|
|
@@ -84,11 +83,12 @@ function PageableLoader({ state, loader, loaderFn, queryId, registerComponentApi
|
|
|
84
83
|
// useEffect(()=>{
|
|
85
84
|
// console.log("TRANSFORM RESULT CHANGED", transformResult);
|
|
86
85
|
// }, [transformResult]);
|
|
87
|
-
const { data, status, error, hasNextPage, isFetchingNextPage, hasPreviousPage, isFetchingPreviousPage, isFetching, refetch, fetchPreviousPage, fetchNextPage, } = (0, react_query_1.useInfiniteQuery)({
|
|
86
|
+
const { data, status, error, hasNextPage, isFetchingNextPage, hasPreviousPage, isFetchingPreviousPage, isFetching, refetch, fetchPreviousPage, fetchNextPage, isRefetching, } = (0, react_query_1.useInfiniteQuery)({
|
|
88
87
|
queryKey,
|
|
89
88
|
queryFn: (0, react_1.useCallback)((_a) => __awaiter(this, [_a], void 0, function* ({ signal, pageParam }) {
|
|
90
89
|
return yield loaderFn(signal, pageParam);
|
|
91
90
|
}), [loaderFn]),
|
|
91
|
+
structuralSharing,
|
|
92
92
|
select: (0, react_1.useCallback)((data) => {
|
|
93
93
|
let result = [];
|
|
94
94
|
if (data) {
|
|
@@ -156,12 +156,10 @@ function PageableLoader({ state, loader, loaderFn, queryId, registerComponentApi
|
|
|
156
156
|
// access to the latest loader value
|
|
157
157
|
setTimeout(() => {
|
|
158
158
|
onLoaded === null || onLoaded === void 0 ? void 0 : onLoaded(data, isRefetching);
|
|
159
|
-
setIsRefetching(false);
|
|
160
159
|
}, 0);
|
|
161
160
|
}
|
|
162
161
|
else if (status === "error" && prevError !== error) {
|
|
163
162
|
loaderError(error);
|
|
164
|
-
setIsRefetching(false);
|
|
165
163
|
}
|
|
166
164
|
}, [
|
|
167
165
|
data,
|
|
@@ -179,7 +177,6 @@ function PageableLoader({ state, loader, loaderFn, queryId, registerComponentApi
|
|
|
179
177
|
let intervalId;
|
|
180
178
|
if (pollIntervalInSeconds) {
|
|
181
179
|
intervalId = setInterval(() => {
|
|
182
|
-
setIsRefetching(true);
|
|
183
180
|
refetch();
|
|
184
181
|
}, pollIntervalInSeconds * 1000);
|
|
185
182
|
}
|
|
@@ -200,7 +197,6 @@ function PageableLoader({ state, loader, loaderFn, queryId, registerComponentApi
|
|
|
200
197
|
fetchPrevPage,
|
|
201
198
|
fetchNextPage: stableFetchNextPage,
|
|
202
199
|
refetch: (options) => __awaiter(this, void 0, void 0, function* () {
|
|
203
|
-
setIsRefetching(true);
|
|
204
200
|
refetch(options);
|
|
205
201
|
}),
|
|
206
202
|
update: (updater) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -32,7 +32,8 @@ function renderChild({ node, state, dispatch, appContext, lookupAction, lookupSy
|
|
|
32
32
|
}
|
|
33
33
|
// --- A TextNode value may contain nexted expressions, so we extract it.
|
|
34
34
|
if (node.type === "TextNode") {
|
|
35
|
-
|
|
35
|
+
const extractedValue = (0, extractParam_1.extractParam)(state, nodeValue, appContext, true);
|
|
36
|
+
return typeof extractedValue === "boolean" ? extractedValue.toString() : extractedValue;
|
|
36
37
|
}
|
|
37
38
|
// --- Rendering a Slot requires some preparations, as TextNode and
|
|
38
39
|
// --- TextNodeCData are virtual nodes. Also, slots may have default templates
|