Files
data-collection-terminal/vendor/filament/tables/resources/views/columns/select-column.blade.php

115 lines
3.0 KiB
PHP

@php
$canSelectPlaceholder = $canSelectPlaceholder();
$isDisabled = $isDisabled();
$state = $getState();
if ($state instanceof \BackedEnum) {
$state = $state->value;
}
$state = strval($state);
@endphp
<div
x-data="{
error: undefined,
isLoading: false,
name: @js($getName()),
recordKey: @js($recordKey),
state: @js($state),
}"
x-init="
() => {
Livewire.hook('commit', ({ component, commit, succeed, fail, respond }) => {
succeed(({ snapshot, effect }) => {
$nextTick(() => {
if (component.id !== @js($this->getId())) {
return
}
if (! $refs.newState) {
return
}
let newState = $refs.newState.value
if (state === newState) {
return
}
state = newState
})
})
})
}
"
{{
$attributes
->merge($getExtraAttributes(), escape: false)
->class([
'fi-ta-select',
'px-3 py-4' => ! $isInline(),
])
}}
>
<input
type="hidden"
value="{{ str($state)->replace('"', '\\"') }}"
x-ref="newState"
/>
<x-filament::input.wrapper
:alpine-disabled="'isLoading || ' . \Illuminate\Support\Js::from($isDisabled)"
alpine-valid="error === undefined"
x-tooltip="
error === undefined
? false
: {
content: error,
theme: $store.theme,
}
"
x-on:click.stop=""
>
<x-filament::input.select
:disabled="$isDisabled"
:x-bind:disabled="$isDisabled ? null : 'isLoading'"
x-model="state"
x-on:change="
isLoading = true
const response = await $wire.updateTableColumnState(
name,
recordKey,
$event.target.value,
)
error = response?.error ?? undefined
if (! error) {
state = response
}
isLoading = false
"
:attributes="\Filament\Support\prepare_inherited_attributes($getExtraInputAttributeBag())"
>
@if ($canSelectPlaceholder)
<option value="">{{ $getPlaceholder() }}</option>
@endif
@foreach ($getOptions() as $value => $label)
<option
@disabled($isOptionDisabled($value, $label))
value="{{ $value }}"
>
{{ $label }}
</option>
@endforeach
</x-filament::input.select>
</x-filament::input.wrapper>
</div>