fix: account for htmx issues in mobile safari with select fields

This commit is contained in:
Björn Fromme
2025-12-09 11:42:31 +01:00
parent 6b32b6baa4
commit 9c6860ecc6
4 changed files with 15 additions and 11 deletions
+2
View File
@@ -1,6 +1,8 @@
twig: twig:
file_name_pattern: '*.twig' file_name_pattern: '*.twig'
form_themes: ['forms.html.twig'] form_themes: ['forms.html.twig']
globals:
htmx_change_trigger: 'change delay:100ms'
when@test: when@test:
twig: twig:
@@ -241,7 +241,7 @@
participantIndex, participantIndex,
{ {
'attr': { 'attr': {
'hx-trigger': 'change', 'hx-trigger': htmx_change_trigger,
'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})), 'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})),
'hx-target': '#main-content', 'hx-target': '#main-content',
'hx-swap': 'innerHTML' 'hx-swap': 'innerHTML'
@@ -282,7 +282,7 @@
</h3> </h3>
{{ macros.field_or_static(form, 'assignedRoomId', 'Zimmer', roomLabel, bookingDto, participantIndex, { {{ macros.field_or_static(form, 'assignedRoomId', 'Zimmer', roomLabel, bookingDto, participantIndex, {
'attr': { 'attr': {
'hx-trigger': 'change', 'hx-trigger': htmx_change_trigger,
'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})), 'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})),
'hx-target': '#main-content', 'hx-target': '#main-content',
'hx-swap': 'innerHTML' 'hx-swap': 'innerHTML'
@@ -302,7 +302,7 @@
</h3> </h3>
{{ macros.service_field(form, 'skiPass', 'Skipass', { {{ macros.service_field(form, 'skiPass', 'Skipass', {
'attr': { 'attr': {
'hx-trigger': 'change', 'hx-trigger': htmx_change_trigger,
'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})), 'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})),
'hx-target': '#main-content', 'hx-swap': 'innerHTML' 'hx-target': '#main-content', 'hx-swap': 'innerHTML'
} }
@@ -310,7 +310,7 @@
{{ macros.service_field(form, 'courses', 'Kurse', { {{ macros.service_field(form, 'courses', 'Kurse', {
'attr': { 'attr': {
'hx-trigger': 'change', 'hx-trigger': htmx_change_trigger,
'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})), 'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})),
'hx-target': '#main-content', 'hx-swap': 'innerHTML' 'hx-target': '#main-content', 'hx-swap': 'innerHTML'
} }
@@ -318,7 +318,7 @@
{{ macros.service_field(form, 'additionalServices', 'Zusatzleistungen', { {{ macros.service_field(form, 'additionalServices', 'Zusatzleistungen', {
'attr': { 'attr': {
'hx-trigger': 'change', 'hx-trigger': htmx_change_trigger,
'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})), 'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})),
'hx-target': '#main-content', 'hx-swap': 'innerHTML' 'hx-target': '#main-content', 'hx-swap': 'innerHTML'
} }
@@ -326,14 +326,14 @@
{{ macros.service_field(form, 'board', 'Verpflegung', { {{ macros.service_field(form, 'board', 'Verpflegung', {
'attr': { 'attr': {
'hx-trigger': 'change', 'hx-trigger': htmx_change_trigger,
'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})), 'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})),
'hx-target': '#main-content', 'hx-swap': 'innerHTML' 'hx-target': '#main-content', 'hx-swap': 'innerHTML'
} }
}) }} }) }}
{% set htmxAttr = { {% set htmxAttr = {
'hx-trigger': 'change', 'hx-trigger': htmx_change_trigger,
'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})), 'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})),
'hx-target': '#main-content', 'hx-target': '#main-content',
'hx-swap': 'innerHTML' 'hx-swap': 'innerHTML'
@@ -557,7 +557,7 @@
{% if form.transportationInbound is defined %} {% if form.transportationInbound is defined %}
{{ form_row(form.transportationInbound, { {{ form_row(form.transportationInbound, {
'attr': { 'attr': {
'hx-trigger': 'change', 'hx-trigger': htmx_change_trigger,
'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})), 'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})),
'hx-target': '#main-content', 'hx-swap': 'innerHTML' 'hx-target': '#main-content', 'hx-swap': 'innerHTML'
} }
@@ -566,7 +566,7 @@
{% if form.pickup is defined %} {% if form.pickup is defined %}
{{ form_row(form.pickup, { {{ form_row(form.pickup, {
'attr': { 'attr': {
'hx-trigger': 'change', 'hx-trigger': htmx_change_trigger,
'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})), 'hx-post': path(refreshRouteName, refreshRouteParams|default({index: participantIndex})),
'hx-target': '#main-content', 'hx-swap': 'innerHTML' 'hx-target': '#main-content', 'hx-swap': 'innerHTML'
} }
+3 -1
View File
@@ -1,5 +1,7 @@
{% extends 'layout_booking.html.twig' %} {% extends 'layout_booking.html.twig' %}
{% set htmx_change_trigger = 'change delay:300ms' %}
{% macro stepFormField(form) %} {% macro stepFormField(form) %}
<div class="grid grid-cols-3 pb-2"> <div class="grid grid-cols-3 pb-2">
<div class="col-span-2 pr-2"> <div class="col-span-2 pr-2">
@@ -15,7 +17,7 @@
'attr': { 'attr': {
'hx-post': path('app_booking_create_step_1_refresh'), 'hx-post': path('app_booking_create_step_1_refresh'),
'hx-swap': 'none', 'hx-swap': 'none',
'hx-trigger': 'change delay:300ms', 'hx-trigger': htmx_change_trigger,
} }
}) }} }) }}
</div> </div>
+1 -1
View File
@@ -40,7 +40,7 @@
{# Payment method selection with HTMX #} {# Payment method selection with HTMX #}
<div id="form-payment" <div id="form-payment"
hx-post="{{ path('app_booking_create_step_3_refresh') }}" hx-post="{{ path('app_booking_create_step_3_refresh') }}"
hx-trigger="change" hx-trigger="{{ htmx_change_trigger }}"
hx-target="#form-payment" hx-target="#form-payment"
hx-select="#form-payment" hx-select="#form-payment"
hx-swap="outerHTML"> hx-swap="outerHTML">