Same name and namespace in other branches
- 8.x-2.x src/Plugin/Field/FieldFormatter/ColorFieldFormatterText.php \Drupal\color_field\Plugin\Field\FieldFormatter\ColorFieldFormatterText 1 comment
Plugin implementation of the color_field text formatter.
Plugin annotation
@FieldFormatter(
id = "color_field_formatter_text",
module = "color_field",
label = @Translation("Color text"),
field_types = {
"color_field_type"
}
)
Hierarchy
- class \Drupal\color_field\Plugin\Field\FieldFormatter\ColorFieldFormatterText extends \Drupal\Core\Field\FormatterBase
Expanded class hierarchy of ColorFieldFormatterText
File
-
src/
Plugin/ Field/ FieldFormatter/ ColorFieldFormatterText.php, line 26
Namespace
Drupal\color_field\Plugin\Field\FieldFormatterView source
class ColorFieldFormatterText extends FormatterBase {
/**
* {@inheritdoc}
*/
public function settingsForm(array $form, FormStateInterface $form_state) : array {
$opacity = $this->getFieldSetting('opacity');
$elements = [];
$elements['format'] = [
'#type' => 'select',
'#title' => $this->t('Format'),
'#options' => $this->getColorFormat(),
'#default_value' => $this->getSetting('format'),
];
if ($opacity) {
$elements['opacity'] = [
'#type' => 'checkbox',
'#title' => $this->t('Display opacity'),
'#default_value' => $this->getSetting('opacity'),
];
}
return $elements;
}
/**
* {@inheritdoc}
*/
public function settingsSummary() : array {
$opacity = $this->getFieldSetting('opacity');
$settings = $this->getSettings();
$summary = [];
$summary[] = $this->t('@format', [
'@format' => $this->getColorFormat($settings['format']),
]);
if ($opacity && $settings['opacity']) {
$summary[] = $this->t('Display with opacity.');
}
return $summary;
}
/**
* {@inheritdoc}
*/
public function viewElements(FieldItemListInterface $items, $langcode) : array {
$elements = [];
foreach ($items as $delta => $item) {
$elements[$delta] = [
'#markup' => $this->viewValue($item),
];
}
return $elements;
}
/**
* {@inheritdoc}
*/
public static function defaultSettings() : array {
return [
'format' => 'hex',
'opacity' => TRUE,
] + parent::defaultSettings();
}
/**
* This function is used to get the color format.
*
* @param string|null $format
* Format is of string type.
*
* @return \Drupal\Component\Render\MarkupInterface[]|\Drupal\Component\Render\MarkupInterface
* Returns array or string.
*/
protected function getColorFormat(?string $format = NULL) : array|MarkupInterface {
$formats = [];
$formats['hex'] = $this->t('Hex triplet');
$formats['rgb'] = $this->t('RGB Decimal');
if ($format) {
return $formats[$format];
}
return $formats;
}
/**
* View value as text in hex or rgb format.
*
* @param \Drupal\color_field\Plugin\Field\FieldType\ColorFieldType $item
* The field item.
*
* @return string
* The color in hex or rgb format (per field settings).
*/
protected function viewValue(ColorFieldType $item) : string {
$opacity = $this->getFieldSetting('opacity');
$settings = $this->getSettings();
$color_hex = new ColorHex($item->color, $item->opacity);
switch ($settings['format']) {
case 'hex':
$output = $opacity && $settings['opacity'] ? $color_hex->toString(TRUE) : $color_hex->toString(FALSE);
break;
case 'rgb':
default:
$output = $opacity && $settings['opacity'] ? $color_hex->toRgb()
->toString(TRUE) : $color_hex->toRgb()
->toString(FALSE);
break;
}
return $output;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
ColorFieldFormatterText::defaultSettings | public static | function | |
ColorFieldFormatterText::getColorFormat | protected | function | This function is used to get the color format. |
ColorFieldFormatterText::settingsForm | public | function | |
ColorFieldFormatterText::settingsSummary | public | function | |
ColorFieldFormatterText::viewElements | public | function | |
ColorFieldFormatterText::viewValue | protected | function | View value as text in hex or rgb format. |