@astroapps/forms-core 1.0.2 → 1.1.1

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) {
@@ -1364,14 +1404,6 @@ function createFormState(schemaInterface, evaluators = defaultEvaluators) {
1364
1404
  const definition = createOverrideProxy(def, definitionOverrides);
1365
1405
  const of = definitionOverrides.fields;
1366
1406
  const df = displayOverrides.fields;
1367
- createScopedEffect(c => {
1368
- const textDisplay = isDisplayControl(def) && isTextDisplay(def.displayData) ? def.displayData : undefined;
1369
- evalExpr(c, textDisplay == null ? void 0 : textDisplay.text, df.text, textDisplay && firstExpr(formNode, DynamicPropertyType.Display), coerceString);
1370
- }, displayOverrides);
1371
- createScopedEffect(c => {
1372
- const htmlDisplay = isDisplayControl(def) && isHtmlDisplay(def.displayData) ? def.displayData : undefined;
1373
- evalExpr(c, htmlDisplay == null ? void 0 : htmlDisplay.html, df.html, htmlDisplay && firstExpr(formNode, DynamicPropertyType.Display), coerceString);
1374
- }, displayOverrides);
1375
1407
  updateComputedValue(of.displayData, () => isDisplayControl(def) ? createOverrideProxy(def.displayData, displayOverrides) : undefined);
1376
1408
  createScopedEffect(c => {
1377
1409
  evalExpr(c, def.hidden, of.hidden, firstExpr(formNode, DynamicPropertyType.Visible), r => !r);
@@ -1400,7 +1432,8 @@ function createFormState(schemaInterface, evaluators = defaultEvaluators) {
1400
1432
  clearHidden: false,
1401
1433
  hidden: false,
1402
1434
  variables: (_controlImpl$fields$v = controlImpl.fields.variables.current.value) != null ? _controlImpl$fields$v : {},
1403
- stateId
1435
+ stateId,
1436
+ meta: newControl({})
1404
1437
  });
1405
1438
  const {
1406
1439
  dataNode,
@@ -1410,11 +1443,13 @@ function createFormState(schemaInterface, evaluators = defaultEvaluators) {
1410
1443
  layoutStyle,
1411
1444
  allowedOptions,
1412
1445
  disabled,
1413
- variables
1446
+ variables,
1447
+ display
1414
1448
  } = control.fields;
1415
1449
  createScopedEffect(c => evalExpr(c, undefined, style, firstExpr(formNode, DynamicPropertyType.Style), coerceStyle), scope);
1416
1450
  createScopedEffect(c => evalExpr(c, undefined, layoutStyle, firstExpr(formNode, DynamicPropertyType.LayoutStyle), coerceStyle), scope);
1417
1451
  createScopedEffect(c => evalExpr(c, undefined, allowedOptions, firstExpr(formNode, DynamicPropertyType.AllowedOptions), x => x), scope);
1452
+ createScopedEffect(c => evalExpr(c, undefined, display, firstExpr(formNode, DynamicPropertyType.Display), coerceString), scope);
1418
1453
  updateComputedValue(dataNode, () => lookupDataNode(definition, parent));
1419
1454
  updateComputedValue(hidden, () => !!cf.hidden.value || definition.hidden || dataNode.value && (!validDataNode(dataNode.value) || hideDisplayOnly(dataNode.value, schemaInterface, definition)));
1420
1455
  updateComputedValue(readonly, () => !!cf.readonly.value || isControlReadonly(definition));
@@ -1429,6 +1464,11 @@ function createFormState(schemaInterface, evaluators = defaultEvaluators) {
1429
1464
  dn.control.disabled = disabled.value;
1430
1465
  }
1431
1466
  }, scope);
1467
+ createSyncEffect(() => {
1468
+ if (isDisplayControl(def)) {
1469
+ if (isTextDisplay(def.displayData)) df.text.value = display.value;else if (isHtmlDisplay(def.displayData)) df.html.value = display.value;
1470
+ }
1471
+ }, displayOverrides);
1432
1472
  setupValidation(controlImpl, definition, dataNode, schemaInterface, parent, formNode, runAsync);
1433
1473
  createSyncEffect(() => {
1434
1474
  var _dataNode$value;
@@ -1522,5 +1562,5 @@ function createOverrideProxy(proxyFor, handlers) {
1522
1562
  });
1523
1563
  }
1524
1564
 
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 };
1565
+ 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
1566
  //# sourceMappingURL=index.js.map