/** * Get JS config * * @return array */ public function getJsConfig() { if (isset($this->wrappedComponent)) { return array_replace_recursive((array) $this->wrappedComponent->getData('config'), (array) $this->getData('config')); } return (array) $this->getData('config'); }
/** * Prepare component configuration * * @return void */ public function prepare() { $dataType = $this->getData('config/dataType'); if ($dataType) { $this->wrappedComponent = $this->uiComponentFactory->create($this->getName(), $dataType, array_merge(['context' => $this->getContext()], (array) $this->getData())); $this->wrappedComponent->prepare(); $wrappedComponentConfig = $this->getJsConfig($this->wrappedComponent); // Merge JS configuration with wrapped component configuration $jsConfig = array_replace_recursive($wrappedComponentConfig, $this->getJsConfig($this)); $this->setData('js_config', $jsConfig); $this->setData('config', array_replace_recursive((array) $this->wrappedComponent->getData('config'), (array) $this->getData('config'))); } $this->applySorting(); parent::prepare(); }
/** * Prepare component configuration * * @return void * @throws \Magento\Framework\Exception\LocalizedException */ public function prepare() { $formElement = $this->getData('config/formElement'); if (null === $formElement) { throw new LocalizedException(__('The configuration parameter "formElement" is a required for "' . $this->getName() . '" field.')); } // Create of wrapped component $this->wrappedComponent = $this->uiComponentFactory->create($this->getName(), $formElement, array_merge(['context' => $this->getContext()], (array) $this->getData())); $this->wrappedComponent->prepare(); // Merge JS configuration with wrapped component configuration $wrappedComponentConfig = $this->getJsConfig($this->wrappedComponent); $jsConfig = array_replace_recursive($wrappedComponentConfig, $this->getJsConfig($this)); $jsConfig['extends'] = $this->wrappedComponent->getComponentName(); $this->setData('js_config', $jsConfig); $this->setData('config', array_replace_recursive((array) $this->wrappedComponent->getData('config'), (array) $this->getData('config'))); parent::prepare(); }
/** * Build component structure and retrieve * * @param UiComponentInterface $component * @return array */ public function generate(UiComponentInterface $component) { /** @var LayoutInterface $layout */ if (!($layoutDefinition = $component->getData('layout'))) { $layoutDefinition = ['type' => 'generic']; } $layout = $this->layoutPool->create($layoutDefinition['type'], $layoutDefinition); return $layout->build($component); }
/** * @inheritDoc */ public function update(UiComponentInterface $component) { if ($component instanceof ColumnInterface) { $filterType = $component->getData('config/filter'); if (is_array($filterType)) { $filterType = $filterType['filterType']; } if (!$filterType) { return; } if (isset($this->filterMap[$filterType])) { $filterComponent = $this->uiComponentFactory->create($component->getName(), $this->filterMap[$filterType], ['context' => $this->getContext()]); $filterComponent->setData('config', $component->getConfiguration()); $filterComponent->prepare(); $this->addComponent($component->getName(), $filterComponent); } } }
/** * Update component data * * @param array $componentData * @param UiComponentInterface $component * @return $this */ protected function updateComponent(array $componentData, UiComponentInterface $component) { $config = $component->getData('config'); // XML data configuration override configuration coming from the DB $config = array_replace_recursive($componentData, $config); $component->setData('config', $config); return $this; }
/** * Update field data * * @param array $fieldData * @param UiComponentInterface $component * @return void */ protected function updateField(array $fieldData, UiComponentInterface $component) { $config = $component->getData('config'); // XML data configuration override configuration coming from the DB $config = array_replace_recursive($fieldData, $config); $config = $this->updateDataScope($config, $component->getName()); $component->setData('config', $config); }
/** * Get configuration of related JavaScript Component * (force extending the root component if component does not extend other component) * * @param UiComponentInterface $component * @return array */ public function getJsConfig(UiComponentInterface $component) { $jsConfig = (array) $component->getData('js_config'); if (!isset($jsConfig['extends'])) { $jsConfig['extends'] = $component->getContext()->getNamespace(); } return $jsConfig; }
/** * Get JS configuration * * @param UiComponentInterface $component * @param null|string $extends * @return array */ protected function getConfiguration(UiComponentInterface $component, $extends = null) { $jsConfig = (array) $component->getData('js_config'); if (isset($jsConfig['extends'])) { return $jsConfig; } else { if (null !== $extends) { $jsConfig['extends'] = $extends; } else { $jsConfig['extends'] = $component->getContext()->getNamespace(); } } return $jsConfig; }
/** * Prepare initial structure for sections * * @return void */ protected function initSections() { $this->structure[static::SECTIONS_KEY] = ['type' => 'nav', 'config' => ['label' => $this->component->getData('label')], 'children' => []]; }
/** * Add options to component * * @param UiComponentInterface $component * @param array $attributeData * @return void */ public function addOptions(UiComponentInterface $component, array $attributeData) { $config = $component->getData('config'); if (count($attributeData[AttributeMetadata::OPTIONS]) && !isset($config[AttributeMetadata::OPTIONS])) { $component->setData('config', array_merge($config, [AttributeMetadata::OPTIONS => $attributeData[AttributeMetadata::OPTIONS]])); } }
/** * Execute directive * * @param array $directive * @param UiComponentInterface $component * @return string */ public function execute($directive, UiComponentInterface $component) { return $component->getData($directive[1]); }