class-password.php

Source code

<?php
/**
 * Password field.
 *
 * @package HivePress\Fields
 */

namespace HivePress\Fields;

use HivePress\Helpers as hp;

// Exit if accessed directly.
defined( 'ABSPATH' ) || exit;

/**
 * Password.
 */
class Password extends Text {

	/**
	 * Class initializer.
	 *
	 * @param array $meta Class meta values.
	 */
	public static function init( $meta = [] ) {
		$meta = hp\merge_arrays(
			[
				'label'       => null,
				'filterable'  => false,
				'sortable'    => false,
				'prefillable' => false,
			],
			$meta
		);

		parent::init( $meta );
	}

	/**
	 * Class constructor.
	 *
	 * @param array $args Field arguments.
	 */
	public function __construct( $args = [] ) {
		$args = hp\merge_arrays(
			$args,
			[
				'slash'      => true,
				'max_length' => 64,
			]
		);

		parent::__construct( $args );
	}

	/**
	 * Bootstraps field properties.
	 */
	protected function boot() {

		// Set component.
		$this->attributes['data-component'] = 'password';

		parent::boot();
	}

	/**
	 * Sanitizes field value.
	 */
	protected function sanitize() {}

	/**
	 * Renders field HTML.
	 *
	 * @return string
	 */
	public function render() {

		// Render field.
		$output = '<input type="' . esc_attr( $this->display_type ) . '" name="' . esc_attr( $this->name ) . '" ' . hp\html_attributes( $this->attributes ) . '>';

		if ( 'hidden' !== $this->display_type ) {

			// Render button.
			$output .= '<a href="#" title="' . esc_attr__( 'Show', 'hivepress' ) . '" data-component="toggle" data-icon="eye-slash" data-caption="' . esc_attr__( 'Hide', 'hivepress' ) . '" class="hp-field__icon hp-link"><i class="hp-icon fas fa-eye"></i></a>';
		}

		return $output;
	}
}