'exports' - Specify symbols in notation more like Angular directives ("A", "AE",...
authorTim Otten <totten@civicrm.org>
Sat, 19 Oct 2019 03:46:17 +0000 (20:46 -0700)
committerCiviCRM <info@civicrm.org>
Wed, 16 Sep 2020 02:13:19 +0000 (19:13 -0700)
ext/afform/core/afform.php
ext/afform/core/ang/af.ang.php
ext/afform/core/ang/afBlock.ang.php
ext/afform/core/ang/afField.ang.php
ext/afform/html/ang/afMoncao.ang.php

index 167af68d67031421194737db03c83e92347841da..735b678c197f215da28a525de19df5582eea6a36 100644 (file)
@@ -174,9 +174,7 @@ function afform_civicrm_angularModules(&$angularModules) {
       'requires' => $meta['requires'],
       'basePages' => [],
       'exports' => [
-        // Each afform is an attribute and an element.
-        'el' => [_afform_angular_module_name($name, 'dash')],
-        'attr' => [_afform_angular_module_name($name, 'dash')],
+        _afform_angular_module_name($name, 'dash') => 'AE',
       ],
     ];
 
@@ -268,20 +266,31 @@ function _afform_civicrm_angularModules_autoReq($e) {
  *   'el': array(string $elementName => string $angModuleName)
  */
 function _afform_reverse_deps($angularModules) {
-  $revMap = [];
-  foreach (['attr', 'el'] as $exportType) {
-    $revMap[$exportType] = [];
-    foreach (array_keys($angularModules) as $module) {
-      if (isset($angularModules[$module]['exports'][$exportType])) {
-        foreach ($angularModules[$module]['exports'][$exportType] as $exportItem) {
-          $revMap[$exportType][$exportItem] = $module;
-        }
+  $revMap = ['attr' => [], 'el' => []];
+  foreach (array_keys($angularModules) as $module) {
+    if (!isset($angularModules[$module]['exports'])) {
+      continue;
+    }
+    foreach ($angularModules[$module]['exports'] as $symbolName => $symbolTypes) {
+      if (strpos($symbolTypes, 'A') !== FALSE) {
+        $revMap['attr'][$symbolName] = $module;
+      }
+      if (strpos($symbolTypes, 'E') !== FALSE) {
+        $revMap['el'][$symbolName] = $module;
       }
     }
   }
   return $revMap;
 }
 
+/**
+ * @param string $formName
+ * @param string $html
+ * @param array $revMap
+ *   The reverse-dependencies map from _afform_reverse_deps().
+ * @return array
+ * @see _afform_reverse_deps()
+ */
 function _afform_reverse_deps_find($formName, $html, $revMap) {
   $symbols = \Civi\Afform\Symbols::scan($html);
   $elems = array_intersect_key($revMap['el'], $symbols->elements);
index 68c90678490ff17be0f9f6ab74f155b0fb6f01d7..a97b53814242c7834f93c03208c493f5e2bb12a3 100644 (file)
@@ -15,7 +15,8 @@ return [
   'settings' => [],
   'basePages' => [],
   'exports' => [
-    'el' => ['af-entity', 'af-fieldset', 'af-form'],
-    'attr' => ['af-entity', 'af-fieldset', 'af-form'],
+    'af-entity' => 'AE',
+    'af-fieldset' => 'AE',
+    'af-form' => 'AE',
   ],
 ];
index af988bb72381a19a9bfd1723247f16147ad1bb79..ccf473bb1fb1fe01999dc7d17cd0793d6aafbeae 100644 (file)
@@ -18,7 +18,7 @@ return [
   'settings' => [],
   'basePages' => [],
   'exports' => [
-    'el' => ['af-block-contact-name', 'af-block-contact-email'],
-    'attr' => ['af-block-contact-name', 'af-block-contact-email'],
+    'af-block-contact-name' => 'AE',
+    'af-block-contact-email' => 'AE',
   ],
 ];
index ac52351553e38ec6b75ee579db4310b12d408ecd..a50114e60d8b1b9eeb0d9fa115e96fc99fca3154 100644 (file)
@@ -18,7 +18,6 @@ return [
   'settings' => [],
   'basePages' => [],
   'exports' => [
-    'el' => ['af-field'],
-    'attr' => ['af-field'],
+    'af-field' => 'AE',
   ],
 ];
index d394532c1f7030a36bd37b9015cd40226d4b6b71..81e069f2486d11db9897caee07cc523d5674fea8 100644 (file)
@@ -20,6 +20,6 @@ return array(
   ],
   'basePages' => [],
   'exports' => [
-    'attr' => ['af-monaco'],
+    'af-monaco' => 'A',
   ],
 );