@astroapps/forms-core 1.0.2 → 1.1.0
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/lib/formNode.d.ts +7 -0
- package/lib/formState.d.ts +3 -0
- package/lib/index.cjs +46 -3
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +46 -5
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/src/formNode.ts +45 -0
- package/src/formState.ts +30 -3
package/lib/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ensureMetaValue, newControl, updateComputedValue, addDependent, createSyncEffect, createAsyncEffect, collectChanges, trackedValue, createCleanupScope, createEffect, trackControlChange, ControlChange, createScopedEffect, getControlPath, unsafeRestoreControl
|
|
1
|
+
import { ensureMetaValue, newControl, updateComputedValue, addDependent, createSyncEffect, createAsyncEffect, collectChanges, trackedValue, createCleanupScope, createEffect, trackControlChange, ControlChange, getCurrentFields, getMetaValue, createScopedEffect, getControlPath, unsafeRestoreControl } from '@astroapps/controls';
|
|
2
2
|
import jsonata from 'jsonata';
|
|
3
3
|
import { v4 } from 'uuid';
|
|
4
4
|
|
|
@@ -1074,6 +1074,35 @@ function visitFormDataInContext(parentContext, node, cb) {
|
|
|
1074
1074
|
const dataNode = lookupDataNode(node.definition, parentContext);
|
|
1075
1075
|
return visitFormData(node, dataNode != null ? dataNode : parentContext, cb, !dataNode);
|
|
1076
1076
|
}
|
|
1077
|
+
function visitFormDataNode(node, visitFn) {
|
|
1078
|
+
const dataNode = lookupDataNode(node.formNode.definition, node.parentData);
|
|
1079
|
+
const v = visitFn(node, dataNode);
|
|
1080
|
+
if (v !== undefined) return v;
|
|
1081
|
+
const parentData = dataNode != null ? dataNode : node.parentData;
|
|
1082
|
+
if (parentData.schema.field.collection && parentData.elementIndex == null) {
|
|
1083
|
+
const elemCount = parentData.control.elements.length;
|
|
1084
|
+
for (let i = 0; i < elemCount; i++) {
|
|
1085
|
+
const _v = visitChildren(parentData.getChildElement(i));
|
|
1086
|
+
if (_v !== undefined) return _v;
|
|
1087
|
+
}
|
|
1088
|
+
return undefined;
|
|
1089
|
+
} else {
|
|
1090
|
+
return visitChildren(parentData);
|
|
1091
|
+
}
|
|
1092
|
+
function visitChildren(parentData) {
|
|
1093
|
+
const children = node.formNode.getChildNodes();
|
|
1094
|
+
for (let i = 0; i < children.length; i++) {
|
|
1095
|
+
const child = children[i];
|
|
1096
|
+
const res = visitFormDataNode({
|
|
1097
|
+
formNode: child,
|
|
1098
|
+
parent: node,
|
|
1099
|
+
parentData,
|
|
1100
|
+
childIndex: i
|
|
1101
|
+
}, visitFn);
|
|
1102
|
+
if (res !== undefined) return res;
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
}
|
|
1077
1106
|
|
|
1078
1107
|
/**
|
|
1079
1108
|
* Converts a JSON path array to a string.
|
|
@@ -1319,6 +1348,9 @@ function setupValidation(controlImpl, definition, dataNode, schemaInterface, par
|
|
|
1319
1348
|
}, c => {}, controlImpl);
|
|
1320
1349
|
}
|
|
1321
1350
|
|
|
1351
|
+
function getControlStateId(parent, formNode, stateKey) {
|
|
1352
|
+
return parent.id + "$" + formNode.id + (stateKey != null ? stateKey : "");
|
|
1353
|
+
}
|
|
1322
1354
|
function createFormState(schemaInterface, evaluators = defaultEvaluators) {
|
|
1323
1355
|
// console.log("createFormState");
|
|
1324
1356
|
const controlStates = newControl({});
|
|
@@ -1332,9 +1364,17 @@ function createFormState(schemaInterface, evaluators = defaultEvaluators) {
|
|
|
1332
1364
|
// console.log("Cleanup form state");
|
|
1333
1365
|
controlStates.cleanup();
|
|
1334
1366
|
},
|
|
1367
|
+
getExistingControlState(parent, formNode, stateKey) {
|
|
1368
|
+
const stateId = getControlStateId(parent, formNode, stateKey);
|
|
1369
|
+
const control = getCurrentFields(controlStates)[stateId];
|
|
1370
|
+
if (control) {
|
|
1371
|
+
var _getMetaValue;
|
|
1372
|
+
return (_getMetaValue = getMetaValue(control, "impl")) == null ? void 0 : _getMetaValue.value;
|
|
1373
|
+
}
|
|
1374
|
+
return undefined;
|
|
1375
|
+
},
|
|
1335
1376
|
getControlState(parent, formNode, context, runAsync) {
|
|
1336
|
-
|
|
1337
|
-
const stateId = parent.id + "$" + formNode.id + ((_context$stateKey = context.stateKey) != null ? _context$stateKey : "");
|
|
1377
|
+
const stateId = getControlStateId(parent, formNode, context.stateKey);
|
|
1338
1378
|
const controlImpl = controlStates.fields[stateId];
|
|
1339
1379
|
controlImpl.value = context;
|
|
1340
1380
|
function evalExpr(scope, init, nk, e, coerce) {
|
|
@@ -1400,7 +1440,8 @@ function createFormState(schemaInterface, evaluators = defaultEvaluators) {
|
|
|
1400
1440
|
clearHidden: false,
|
|
1401
1441
|
hidden: false,
|
|
1402
1442
|
variables: (_controlImpl$fields$v = controlImpl.fields.variables.current.value) != null ? _controlImpl$fields$v : {},
|
|
1403
|
-
stateId
|
|
1443
|
+
stateId,
|
|
1444
|
+
meta: newControl({})
|
|
1404
1445
|
});
|
|
1405
1446
|
const {
|
|
1406
1447
|
dataNode,
|
|
@@ -1522,5 +1563,5 @@ function createOverrideProxy(proxyFor, handlers) {
|
|
|
1522
1563
|
});
|
|
1523
1564
|
}
|
|
1524
1565
|
|
|
1525
|
-
export { ActionStyle, AdornmentPlacement, ControlAdornmentType, ControlDefinitionType, DataRenderType, DateComparison, DefaultSchemaInterface, DisplayDataType, DynamicPropertyType, ExpressionType, FieldType, FormNode, FormTree, GroupRenderType, IconLibrary, IconPlacement, SchemaDataNode, SchemaDataTree, SchemaDataTreeImpl, SchemaNode, SchemaTags, SchemaTree, SyncTextType, ValidationMessageType, ValidatorType, addFieldOption, boolField, buildSchema, compoundField, createControlMap, createFormLookup, createFormState, createFormTree, createOverrideProxy, createSchemaDataNode, createSchemaLookup, createSchemaNode, createSchemaTree, createScoped, createScopedComputed, dateField, dateTimeField, defaultCompoundField, defaultScalarField, defaultSchemaInterface, doubleField, fieldPathForDefinition, findField, fontAwesomeIcon, getDisplayOnlyOptions, getGroupRendererOptions, getJsonPath, getMetaFields, getRootDataNode, getSchemaFieldList, getSchemaNodePath, getSchemaNodePathString, getSchemaPath, getTagParam, hideDisplayOnly, intField, isActionControl, isArrayRenderer, isAutoCompleteClasses, isAutocompleteRenderer, isCheckEntryClasses, isCompoundField, isCompoundNode, isControlDisabled, isControlDisplayOnly, isControlReadonly, isDataControl, isDataGroupRenderer, isDateTimeRenderer, isDialogRenderer, isDisplayControl, isDisplayOnlyRenderer, isFlexRenderer, isGridRenderer, isGroupControl, isHtmlDisplay, isInlineRenderer, isScalarField, isSelectChildRenderer, isTabsRenderer, isTextDisplay, isTextfieldRenderer, isWizardRenderer, jsonPathString, legacyFormNode, lookupDataNode, makeCompoundField, makeParamTag, makeScalarField, makeSchemaDataNode, mergeField, mergeFields, missingField, relativePath, relativeSegmentPath, resolveSchemaNode, resolveSchemas, schemaDataForFieldPath, schemaDataForFieldRef, schemaForFieldPath, schemaForFieldRef, stringField, stringOptionsField, timeField, traverseData, traverseParents, traverseSchemaPath, validDataNode, visitControlData, visitControlDataArray, visitControlDefinition, visitFormData, visitFormDataInContext, withScalarOptions };
|
|
1566
|
+
export { ActionStyle, AdornmentPlacement, ControlAdornmentType, ControlDefinitionType, DataRenderType, DateComparison, DefaultSchemaInterface, DisplayDataType, DynamicPropertyType, ExpressionType, FieldType, FormNode, FormTree, GroupRenderType, IconLibrary, IconPlacement, SchemaDataNode, SchemaDataTree, SchemaDataTreeImpl, SchemaNode, SchemaTags, SchemaTree, SyncTextType, ValidationMessageType, ValidatorType, addFieldOption, boolField, buildSchema, compoundField, createControlMap, createFormLookup, createFormState, createFormTree, createOverrideProxy, createSchemaDataNode, createSchemaLookup, createSchemaNode, createSchemaTree, createScoped, createScopedComputed, dateField, dateTimeField, defaultCompoundField, defaultScalarField, defaultSchemaInterface, doubleField, fieldPathForDefinition, findField, fontAwesomeIcon, getControlStateId, getDisplayOnlyOptions, getGroupRendererOptions, getJsonPath, getMetaFields, getRootDataNode, getSchemaFieldList, getSchemaNodePath, getSchemaNodePathString, getSchemaPath, getTagParam, hideDisplayOnly, intField, isActionControl, isArrayRenderer, isAutoCompleteClasses, isAutocompleteRenderer, isCheckEntryClasses, isCompoundField, isCompoundNode, isControlDisabled, isControlDisplayOnly, isControlReadonly, isDataControl, isDataGroupRenderer, isDateTimeRenderer, isDialogRenderer, isDisplayControl, isDisplayOnlyRenderer, isFlexRenderer, isGridRenderer, isGroupControl, isHtmlDisplay, isInlineRenderer, isScalarField, isSelectChildRenderer, isTabsRenderer, isTextDisplay, isTextfieldRenderer, isWizardRenderer, jsonPathString, legacyFormNode, lookupDataNode, makeCompoundField, makeParamTag, makeScalarField, makeSchemaDataNode, mergeField, mergeFields, missingField, relativePath, relativeSegmentPath, resolveSchemaNode, resolveSchemas, schemaDataForFieldPath, schemaDataForFieldRef, schemaForFieldPath, schemaForFieldRef, stringField, stringOptionsField, timeField, traverseData, traverseParents, traverseSchemaPath, validDataNode, visitControlData, visitControlDataArray, visitControlDefinition, visitFormData, visitFormDataInContext, visitFormDataNode, withScalarOptions };
|
|
1526
1567
|
//# sourceMappingURL=index.js.map
|