K

Formuláře

TimePicker

Picker jen pro čas. Čas se vybírá ze seznamu slotů v pevném intervalu, ne otáčením stepperů.

Na této stránce

Picker jen pro čas. Čas se vybírá ze seznamu slotů v pevném intervalu, ne otáčením stepperů.

use NyonCode\WireForms\Components\TimePicker;
TimePicker::make('opens_at')

Po otevření pole se ukáže rolovatelný seznam — 00:00, 00:30, 01:00, … — a kliknutí na položku ji uloží a panel zavře.

TimePicker vs. DateTimePicker::asTime()

Obojí ukládá tutéž hodnotu ve stejném formátu. Liší se jen panelem:

Panel
TimePicker::make('x') Seznam časů po minutesStep()
DateTimePicker::make('x')->asTime() Steppery hodin / minut / sekund

TimePicker zvol tam, kde jsou časy sloty — otevírací doba, termíny, rozvrhy. asTime() zvol tam, kde je platná libovolná minuta dne, nebo když se režim musí měnit.

Interval

Rozestup slotů je zděděný minutesStep(), výchozí 30:

TimePicker::make('opens_at') // 00:00, 00:30, 01:00 …
TimePicker::make('opens_at')->minutesStep(15) // 00:00, 00:15, 00:30 …

Samostatný setter interval() neexistuje — je to tentýž pojem pod názvem, který už měl. hoursStep() a secondsStep() jsou zděděné, ale tady nedělají nic: seznam slotů má jeden krok, ne tři.

Interval omezuje seznam, ne hodnotu. Čas jde napsat rovnou do triggeru, takže 08:07 zůstává dosažitelný i při třicetiminutovém kroku — napsaný čas odmítnou jen meze. Viz Psaní z klávesnice.

Meze

minDate() / maxDate() se čtou jako časy a sloty mimo ně zakážou, takže rozsah zůstane vidět, místo aby se seznam tiše zkrátil:

TimePicker::make('opens_at')
->minDate('08:00')
->maxDate('17:00')

Panel se otevře na aktuální hodnotě, nebo na prvním slotu, který meze dovolují — pole od rána do večera se tedy neotevře o půlnoci. Platí to i na mobilu, kde se z panelu stane spodní sheet.

Všechno ostatní je DateTimePicker

Hodnotová strana je celá zděděná, takže tohle se chová přesně podle dokumentace DateTimePicker:

TimePicker::make('opens_at')
->withSeconds() // ukládá H:i:s; sloty pořád padají na :00
->displayFormat('H:i')
->typeable(false) // jen seznam — do triggeru se psát nedá
->native() // nativní <input type="time"> prohlížeče
->placeholder('Vyber čas')

Panel vždycky nese tlačítko Clear, takže volitelné pole jde zase vyprázdnit bez vlastního setteru.

Ukládaná hodnota je H:i, s withSeconds() pak H:i:s.

timezone() je zděděná, ale nedělá tu nic — přesně jako u DateTimePicker::asTime(): holý čas je hodnota nástěnných hodin a převod mezi zónami by ji rozbil. Platí jen pro datetime.

->native() předá celé pole vlastnímu časovému prvku prohlížeče, takže s ním odejde i seznam slotů, interval a zakázané sloty — nativní input si min/max vynucuje po svém.

Režim je zamčený

TimePicker je časový picker natrvalo. Setter režimu — a s ním i zděděné aliasy asDate(), asMonth() a asDateTime(), které přes něj vedou — vyhodí FormConfigurationException:

TimePicker::make('opens_at')->asDate(); // vyhodí výjimku
TimePicker::make('opens_at')->mode('date'); // vyhodí výjimku
TimePicker::make('opens_at')->mode('time'); // v pořádku — už jím je

Není to kosmetika: panel je seznam slotů a nic jiného, takže pole, které by se dostalo do režimu date, by vykreslilo picker bez kalendáře. Pokud se režim musí měnit, je to DateTimePicker.

Metody

Metoda Typ Popis
mode(string) string Zamčeno na time; jakýkoli jiný režim vyhodí FormConfigurationException

Všechny ostatní metody pocházejí z DateTimePicker a ze společného API pole pro label, hint, tooltip a další sdílené metody.