sub_nav_max_width) sub_nav_width = sub_nav_max_width;
}
if (is_resizing_info && !is_mobile) {
let delta = resize_start_x - $event.clientX;
info_nav_width = resize_start_width + delta;
if (info_nav_width < info_nav_min_width) info_nav_width = info_nav_min_width;
if (info_nav_width > info_nav_max_width) info_nav_width = info_nav_max_width;
}
"
@mouseup.window="is_resizing_sub = false; is_resizing_info = false"
class="d-flex min-vh-100 w-100"
x-data="{
info_nav_max_width: 600,
info_nav_min_width: 200,
info_nav_width: 400,
is_mobile: false,
is_narrow_viewport: false,
is_resizing_info: false,
is_resizing_sub: false,
resize_start_width: 0,
resize_start_x: 0,
show_info_nav: false,
show_sub_nav: true,
sub_nav_has_been_resized: false,
sub_nav_max_width: 600,
sub_nav_min_width: 300,
sub_nav_width: 300,
is_touch_device() {
return window.matchMedia('(pointer: coarse)').matches || 'ontouchstart' in window;
},
update_viewport_state() {
const was_narrow = this.is_narrow_viewport;
const is_now_narrow = window.innerWidth < 992;
this.is_narrow_viewport = is_now_narrow;
if (!was_narrow && is_now_narrow) {
this.show_sub_nav = false;
this.show_info_nav = false;
}
if (was_narrow && !is_now_narrow) {
this.$nextTick(() => {
this.show_sub_nav = false;
this.show_info_nav = false;
});
}
if (!this.is_narrow_viewport) {
this.show_info_nav = false;
}
},
init() {
this.is_mobile = this.is_touch_device();
this.update_viewport_state();
const urlParams = new URLSearchParams(window.location.search);
if (urlParams.has('show_sub_nav')) {
this.show_sub_nav = urlParams.get('show_sub_nav') === 'true'
} else {
this.show_sub_nav = window.innerWidth >= 992
}
if (window.innerWidth < 992) {
this.show_info_nav = false;
}
window.addEventListener('resize', () => {
this.update_viewport_state();
})
},
start_resize_info(event) {
if (!this.is_mobile) {
this.is_resizing_info = true
this.resize_start_x = event.clientX
this.resize_start_width = this.info_nav_width
}
},
start_resize_sub(event) {
if (!this.is_mobile) {
let current_width = $refs.sub_nav_container.offsetWidth
this.sub_nav_width = current_width
this.sub_nav_has_been_resized = true
this.is_resizing_sub = true
this.resize_start_x = event.clientX
this.resize_start_width = current_width
}
},
close_info() {
this.show_info_nav = false
},
close_sub() {
this.show_sub_nav = false
},
toggle_info() {
this.show_info_nav = !this.show_info_nav
if (this.is_mobile && this.is_narrow_viewport) {
this.show_sub_nav = false
}
},
toggle_sub() {
this.show_sub_nav = !this.show_sub_nav
if (this.is_mobile && this.is_narrow_viewport) {
this.show_info_nav = false
}
}
}"
>
{% block full_page_side_navigation %}
{% include 'django_spire/navigation/side_navigation.html' %}
{% endblock %}
{% block full_page_top_navigation %}
{% include 'django_spire/navigation/top_navigation.html' %}
{% endblock %}
{% include 'django_spire/button/primary_button.html' with button_icon='bi bi-x-lg' %}
{% block full_page_sub_navigation_title %}
{% endblock %}
{% block full_page_sub_navigation_buttons %}
{% endblock %}
{% include 'django_spire/button/primary_button.html' with button_icon='bi bi-x-lg' x_button_click='close_sub()' %}
{ show_sub_nav = false }) }"
class="col"
x-ref="full_page_sub_navigation"
>
{% block full_page_sub_navigation %}
{% endblock %}
{% include 'django_spire/button/primary_button.html' with button_icon='bi bi-chevron-right' x_button_click='toggle_sub()' %}
{% block full_page_content %}
{% endblock %}
{% block full_page_bottom_content %}
{% endblock %}
{% include 'django_spire/button/primary_button.html' with button_icon='bi bi-chevron-left' x_button_click='toggle_info()' %}
{% block full_page_info_navigation_title %}
{% endblock %}
{% block full_page_info_navigation_buttons %}
{% endblock %}
{% include 'django_spire/button/primary_button.html' with button_icon='bi bi-x-lg' x_button_click="close_info()" %}
{% block full_page_info_navigation %}
{% endblock %}
{% endblock %}