@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/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { ensureMetaValue, newControl, updateComputedValue, addDependent, createSyncEffect, createAsyncEffect, collectChanges, trackedValue, createCleanupScope, createEffect, trackControlChange, ControlChange, createScopedEffect, getControlPath, unsafeRestoreControl, getCurrentFields } from '@astroapps/controls';
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
- var _context$stateKey;
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