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;
 }
Example #3
0
 /**
  * @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]]));
     }
 }