Slider.php 806 Bytes
<?php

namespace ACA\MetaBox\Editing\ServiceFactory;

use ACA\MetaBox\Column;
use ACA\MetaBox\Editing\StorageFactory;
use ACP\Editing\Service;
use ACP\Editing\Service\Basic;
use ACP\Editing\View;

final class Slider {

	public function create( Column $column ): Service {
		return new Basic(
			$this->create_view( $column ),
			( new StorageFactory() )->create( $column )
		);
	}

	private function create_view( Column $column ): View {
		if ( $column->is_clonable() ) {
			return ( new View\MultiInput() )->set_sub_type( 'number' )->set_clear_button( true );
		}

		$view = new View\Number();

		$options = $column->get_field_setting( 'js-options' );

		$view->set_min( $options['min'] ?? 0 );
		$view->set_max( $options['max'] ?? 100 );
		$view->set_step( $options['step'] ?? 1 );

		return $view;
	}

}