public function testApplyEditing() { $this->column->expects($this->once())->method('getConfiguration')->willReturn(['dataType' => 'text', 'visible' => true]); $this->validationRules->expects($this->once())->method('getValidationRules')->with(true, [$this->validationRule])->willReturn(['validate-email' => true, 'required-entry' => true]); $this->column->expects($this->once())->method('setData')->with('config', ['dataType' => 'text', 'visible' => true, 'editor' => ['editorType' => 'text', 'validation' => ['validate-email' => true, 'required-entry' => true]]]); $this->component->applyEditing($this->column, 'text', [$this->validationRule], true); }
/** * @param array $attributeData * @param string $columnName * @param \Magento\Framework\View\Element\UiComponent\ContextInterface $context * @param array $config * @return \Magento\Ui\Component\Listing\Columns\ColumnInterface */ public function create(array $attributeData, $columnName, $context, array $config = []) { $config = array_merge(['label' => __($attributeData[AttributeMetadata::FRONTEND_LABEL]), 'dataType' => $this->getDataType($attributeData[AttributeMetadata::FRONTEND_INPUT]), 'align' => 'left', 'visible' => (bool) $attributeData[AttributeMetadata::IS_VISIBLE_IN_GRID]], $config); if (count($attributeData[AttributeMetadata::OPTIONS]) && !isset($config[AttributeMetadata::OPTIONS])) { $config[AttributeMetadata::OPTIONS] = $attributeData[AttributeMetadata::OPTIONS]; } if ($attributeData[AttributeMetadata::OPTIONS]) { $config['options'] = $attributeData[AttributeMetadata::OPTIONS]; } $arguments = ['data' => ['js_config' => ['component' => $this->getJsComponent($config['dataType'])], 'config' => $config], 'context' => $context]; $column = $this->componentFactory->create($columnName, 'column', $arguments); $this->inlineEditUpdater->applyEditing($column, $attributeData[AttributeMetadata::FRONTEND_INPUT], $attributeData[AttributeMetadata::VALIDATION_RULES], $attributeData[AttributeMetadata::REQUIRED]); return $column; }
/** * @param array $attributeData * @param string $newAttributeCode * @return void */ public function updateColumn(array $attributeData, $newAttributeCode) { $component = $this->components[$attributeData[AttributeMetadata::ATTRIBUTE_CODE]]; $this->addOptions($component, $attributeData); if ($attributeData[AttributeMetadata::BACKEND_TYPE] != 'static') { if ($attributeData[AttributeMetadata::IS_USED_IN_GRID]) { $config = array_merge($component->getData('config'), ['name' => $newAttributeCode, 'dataType' => $attributeData[AttributeMetadata::BACKEND_TYPE], 'visible' => (bool) $attributeData[AttributeMetadata::IS_VISIBLE_IN_GRID]]); $component->setData('config', $config); } } else { if ($attributeData['entity_type_code'] == CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER && !empty($component->getData('config')['editor'])) { $this->inlineEditUpdater->applyEditing($component, $attributeData[AttributeMetadata::FRONTEND_INPUT], $attributeData[AttributeMetadata::VALIDATION_RULES], $attributeData[AttributeMetadata::REQUIRED]); } $component->setData('config', array_merge($component->getData('config'), ['visible' => (bool) $attributeData[AttributeMetadata::IS_VISIBLE_IN_GRID]])); } }