Replace free-text visit purpose with configurable dropdown options.
Deploy Ladill Frontdesk / deploy (push) Successful in 24s
Deploy Ladill Frontdesk / deploy (push) Successful in 24s
Add visit_purposes config and shared select on kiosk, reception check-in, and scheduling forms. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -22,6 +22,17 @@ return [
|
||||
'delivery' => 'Delivery Personnel',
|
||||
],
|
||||
|
||||
'visit_purposes' => [
|
||||
'meeting' => 'Business meeting',
|
||||
'interview' => 'Job interview',
|
||||
'delivery' => 'Delivery or pickup',
|
||||
'maintenance' => 'Maintenance or repairs',
|
||||
'sales' => 'Sales or vendor visit',
|
||||
'training' => 'Training or workshop',
|
||||
'personal' => 'Personal visit',
|
||||
'other' => 'Other',
|
||||
],
|
||||
|
||||
'visit_statuses' => [
|
||||
'scheduled' => 'Scheduled',
|
||||
'expected' => 'Expected',
|
||||
|
||||
@@ -35,7 +35,8 @@
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Purpose</label>
|
||||
<input type="text" name="purpose" value="{{ old('purpose') }}" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
<label class="block text-sm font-medium text-slate-700">Purpose</label>
|
||||
@include('frontdesk.partials.purpose-select', ['value' => old('purpose'), 'class' => 'mt-1 w-full rounded-lg border-slate-300 text-sm'])
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium">Scheduled date & time</label>
|
||||
|
||||
@@ -155,7 +155,12 @@
|
||||
<option value="{{ $host->id }}">{{ $host->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<input type="text" x-model="form.purpose" placeholder="Purpose of visit" class="w-full rounded-xl border-slate-200 px-4 py-4 text-lg">
|
||||
<select x-model="form.purpose" class="w-full rounded-xl border-slate-200 px-4 py-4 text-lg">
|
||||
<option value="">Purpose of visit</option>
|
||||
@foreach (config('frontdesk.visit_purposes') as $label)
|
||||
<option value="{{ $label }}">{{ $label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
@props([
|
||||
'name' => 'purpose',
|
||||
'id' => 'purpose',
|
||||
'value' => null,
|
||||
'class' => 'mt-1 w-full rounded-lg border-slate-300 text-sm',
|
||||
'placeholder' => 'Select purpose of visit',
|
||||
'required' => false,
|
||||
])
|
||||
|
||||
@php
|
||||
$purposes = config('frontdesk.visit_purposes', []);
|
||||
$selected = old($name, $value);
|
||||
@endphp
|
||||
|
||||
<select name="{{ $name }}" id="{{ $id }}" @if($required) required @endif {{ $attributes->merge(['class' => $class]) }}>
|
||||
<option value="">{{ $placeholder }}</option>
|
||||
@foreach ($purposes as $key => $label)
|
||||
<option value="{{ $label }}" @selected($selected === $label || $selected === $key)>{{ $label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
<div>
|
||||
<label for="purpose" class="block text-sm font-medium text-slate-700">Purpose</label>
|
||||
<input type="text" name="purpose" id="purpose" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
@include('frontdesk.partials.purpose-select', ['id' => 'purpose'])
|
||||
</div>
|
||||
|
||||
<label class="flex items-start gap-2 text-sm text-slate-600">
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
<div>
|
||||
<label for="purpose" class="block text-sm font-medium text-slate-700">Purpose of visit</label>
|
||||
<input type="text" name="purpose" id="purpose" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
@include('frontdesk.partials.purpose-select', ['id' => 'purpose'])
|
||||
</div>
|
||||
|
||||
<label class="flex items-start gap-2 text-sm text-slate-600">
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
<div>
|
||||
<label for="purpose" class="block text-sm font-medium text-slate-700">Purpose of visit</label>
|
||||
<input type="text" name="purpose" id="purpose" class="mt-1 w-full rounded-lg border-slate-300 text-sm">
|
||||
@include('frontdesk.partials.purpose-select', ['id' => 'purpose'])
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
Reference in New Issue
Block a user