<?php
declare(strict_types=1);

namespace AuxCF\Entities\Field\Enum;

use AuxCF\Entities\Settings\Traits\SettingEnumTraits;

enum FieldTypeEnum: string
{
  use SettingEnumTraits;

  /* Basic */
  case Text = 'text';
  case Textarea = 'textarea';
  case Number = 'number';
  case Range = 'range';
  case Email = 'email';
  case URL = 'url';
  case Password = 'password';

  /* Content */
  case Image = 'image';
  case File = 'file';
  case WYSIWYG = 'wysiwyg';
  case oEmbed = 'oembed';
  case Gallery = 'gallery';

  /* Choice */
  case Select = 'select';
  case Checkbox = 'checkbox';
  case Radio = 'radio';
  case ButtonGroup = 'button_group';
  case TrueFalse = 'true_false';

  /* Relational */
  case Link = 'link';
  case Post = 'post_object';
  case PageLink = 'page_link';
  case Relationship = 'relationship';
  case Taxonomy = 'taxonomy';
  case User = 'user';

  /* Advanced */
  case GoogleMap = 'google_map';
  case DatePicker = 'date_picker';
  case DateTimePicker = 'date_time_picker';
  case TimePicker = 'time_picker';
  case ColorPicker = 'color_picker';
  case IconPicker = 'icon_picker';

  /* Layout */
  case Message = 'message';
  case Accordion = 'accordion';
  case Tab = 'tab';
  case Group = 'group';
  case Repeater = 'repeater';
  case FlexibleContent = 'flexible_content';
  case Clone = 'clone';

  public const SETTING_KEY = 'field type';
  public const SETTING_LABEL = 'field return format placement';

  public const DEFAULT = self::Text;
}
