[UPDT] HORILLA_THEME: Updated login and forgot password page
@@ -1 +1 @@
|
||||
<svg height="512" viewBox="0 0 32 32" width="512" xmlns="http://www.w3.org/2000/svg"><g id="a9148db4-8702-4948-b3d7-c33f0782daf4" data-name="Download"><path d="m28 24v-4a1 1 0 0 0 -2 0v4a1 1 0 0 1 -1 1h-18a1 1 0 0 1 -1-1v-4a1 1 0 0 0 -2 0v4a3 3 0 0 0 3 3h18a3 3 0 0 0 3-3zm-6.38-5.22-5 4a1 1 0 0 1 -1.24 0l-5-4a1 1 0 0 1 1.24-1.56l3.38 2.7v-13.92a1 1 0 0 1 2 0v13.92l3.38-2.7a1 1 0 1 1 1.24 1.56z"/></g></svg>
|
||||
<svg height="512" viewBox="0 0 32 32" width="512" xmlns="http://www.w3.org/2000/svg"><g id="a9148db4-8702-4948-b3d7-c33f0782daf4" data-name="Download"><path d="m28 24v-4a1 1 0 0 0 -2 0v4a1 1 0 0 1 -1 1h-18a1 1 0 0 1 -1-1v-4a1 1 0 0 0 -2 0v4a3 3 0 0 0 3 3h18a3 3 0 0 0 3-3zm-6.38-5.22-5 4a1 1 0 0 1 -1.24 0l-5-4a1 1 0 0 1 1.24-1.56l3.38 2.7v-13.92a1 1 0 0 1 2 0v13.92l3.38-2.7a1 1 0 1 1 1.24 1.56z"/></g></svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 409 B After Width: | Height: | Size: 410 B |
@@ -1 +1 @@
|
||||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g id="Icon"><path d="m22.099 6.429c-2.126 2.126-7.116 7.115-8.333 8.328-.263.262-.576.469-.912.604-.976.405-3.357 1.339-4.057 1.386-.417.028-.826-.126-1.122-.422s-.45-.705-.422-1.122c.047-.7.981-3.079 1.379-4.051.139-.345.346-.658.609-.92l8.33-8.331c.403-.403.951-.63 1.521-.63s1.118.227 1.521.63l1.486 1.486c.403.403.63.951.63 1.521s-.227 1.118-.63 1.521zm-13.343 8.815c.684-.086 2.683-.92 3.523-1.269.003-.001.006-.002.008-.003.157-.063.299-.157.418-.276l.001-.001c1.219-1.213 6.207-6.201 8.332-8.327.122-.122.191-.287.191-.46s-.069-.338-.191-.46l-1.486-1.486c-.122-.122-.287-.191-.46-.191s-.338.069-.46.191l-8.331 8.331c-.12.119-.214.262-.277.419l-.002.004c-.345.842-1.18 2.843-1.266 3.528z"/><path d="m20.118 7.349c.292.293.292.768 0 1.061-.293.293-.768.293-1.061 0l-3.467-3.467c-.293-.293-.293-.768 0-1.061.293-.292.768-.292 1.061 0z"/><path d="m13.997 13.47c.293.292.293.768 0 1.06-.292.293-.768.293-1.06 0l-3.467-3.467c-.293-.292-.293-.768 0-1.06.292-.293.768-.293 1.06 0z"/><path d="m8.5 3.25c.414 0 .75.336.75.75s-.336.75-.75.75h-3.5c-1.243 0-2.25 1.007-2.25 2.25v12c0 .597.237 1.169.659 1.591s.994.659 1.591.659h13c.597 0 1.169-.237 1.591-.659s.659-.994.659-1.591v-3.5c0-.414.336-.75.75-.75s.75.336.75.75v3.5c0 .995-.395 1.948-1.098 2.652-.704.703-1.657 1.098-2.652 1.098h-13c-.995 0-1.948-.395-2.652-1.098-.703-.704-1.098-1.657-1.098-2.652v-12c0-2.071 1.679-3.75 3.75-3.75z"/></g></svg>
|
||||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g id="Icon"><path d="m22.099 6.429c-2.126 2.126-7.116 7.115-8.333 8.328-.263.262-.576.469-.912.604-.976.405-3.357 1.339-4.057 1.386-.417.028-.826-.126-1.122-.422s-.45-.705-.422-1.122c.047-.7.981-3.079 1.379-4.051.139-.345.346-.658.609-.92l8.33-8.331c.403-.403.951-.63 1.521-.63s1.118.227 1.521.63l1.486 1.486c.403.403.63.951.63 1.521s-.227 1.118-.63 1.521zm-13.343 8.815c.684-.086 2.683-.92 3.523-1.269.003-.001.006-.002.008-.003.157-.063.299-.157.418-.276l.001-.001c1.219-1.213 6.207-6.201 8.332-8.327.122-.122.191-.287.191-.46s-.069-.338-.191-.46l-1.486-1.486c-.122-.122-.287-.191-.46-.191s-.338.069-.46.191l-8.331 8.331c-.12.119-.214.262-.277.419l-.002.004c-.345.842-1.18 2.843-1.266 3.528z"/><path d="m20.118 7.349c.292.293.292.768 0 1.061-.293.293-.768.293-1.061 0l-3.467-3.467c-.293-.293-.293-.768 0-1.061.293-.292.768-.292 1.061 0z"/><path d="m13.997 13.47c.293.292.293.768 0 1.06-.292.293-.768.293-1.06 0l-3.467-3.467c-.293-.292-.293-.768 0-1.06.292-.293.768-.293 1.06 0z"/><path d="m8.5 3.25c.414 0 .75.336.75.75s-.336.75-.75.75h-3.5c-1.243 0-2.25 1.007-2.25 2.25v12c0 .597.237 1.169.659 1.591s.994.659 1.591.659h13c.597 0 1.169-.237 1.591-.659s.659-.994.659-1.591v-3.5c0-.414.336-.75.75-.75s.75.336.75.75v3.5c0 .995-.395 1.948-1.098 2.652-.704.703-1.657 1.098-2.652 1.098h-13c-.995 0-1.948-.395-2.652-1.098-.703-.704-1.098-1.657-1.098-2.652v-12c0-2.071 1.679-3.75 3.75-3.75z"/></g></svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
@@ -1 +1 @@
|
||||
<svg height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m440.08 341.31c-1.66-2-3.29-4-4.89-5.93-22-26.61-35.31-42.67-35.31-118 0-39-9.33-71-27.72-95-13.56-17.73-31.89-31.18-56.05-41.12a3 3 0 0 1 -.82-.67c-8.69-29.1-32.47-48.59-59.29-48.59s-50.59 19.49-59.28 48.56a3.13 3.13 0 0 1 -.81.65c-56.38 23.21-83.78 67.74-83.78 136.14 0 75.36-13.29 91.42-35.31 118-1.6 1.93-3.23 3.89-4.89 5.93a35.16 35.16 0 0 0 -4.65 37.62c6.17 13 19.32 21.07 34.33 21.07h308.89c14.94 0 28-8.06 34.19-21a35.17 35.17 0 0 0 -4.61-37.66z"/><path d="m256 480a80.06 80.06 0 0 0 70.44-42.13 4 4 0 0 0 -3.54-5.87h-133.78a4 4 0 0 0 -3.55 5.87 80.06 80.06 0 0 0 70.43 42.13z"/></svg>
|
||||
<svg height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m440.08 341.31c-1.66-2-3.29-4-4.89-5.93-22-26.61-35.31-42.67-35.31-118 0-39-9.33-71-27.72-95-13.56-17.73-31.89-31.18-56.05-41.12a3 3 0 0 1 -.82-.67c-8.69-29.1-32.47-48.59-59.29-48.59s-50.59 19.49-59.28 48.56a3.13 3.13 0 0 1 -.81.65c-56.38 23.21-83.78 67.74-83.78 136.14 0 75.36-13.29 91.42-35.31 118-1.6 1.93-3.23 3.89-4.89 5.93a35.16 35.16 0 0 0 -4.65 37.62c6.17 13 19.32 21.07 34.33 21.07h308.89c14.94 0 28-8.06 34.19-21a35.17 35.17 0 0 0 -4.61-37.66z"/><path d="m256 480a80.06 80.06 0 0 0 70.44-42.13 4 4 0 0 0 -3.54-5.87h-133.78a4 4 0 0 0 -3.55 5.87 80.06 80.06 0 0 0 70.43 42.13z"/></svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 689 B After Width: | Height: | Size: 690 B |
@@ -1 +1 @@
|
||||
<svg height="512" viewBox="0 0 32 32" width="512" xmlns="http://www.w3.org/2000/svg"><g id="delete" fill="rgb(0,0,0)"><path d="m29 9a3 3 0 0 0 -3-3h-4v-1a3 3 0 0 0 -3-3h-6a3 3 0 0 0 -3 3v1h-4a3 3 0 0 0 -.91 5.84l1.73 15.57a3 3 0 0 0 2.98 2.59h12.4a3 3 0 0 0 3-2.59l1.73-15.57a3 3 0 0 0 2.07-2.84zm-17-4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v1h-8zm11.19 22.19a1 1 0 0 1 -1 .81h-12.39a1 1 0 0 1 -1-.81l-1.68-15.19h17.76zm2.81-17.19h-20a1 1 0 0 1 0-2h20a1 1 0 0 1 0 2z"/><path d="m13 25a1 1 0 0 0 1-1v-9a1 1 0 0 0 -2 0v9a1 1 0 0 0 1 1z"/><path d="m19 25a1 1 0 0 0 1-1v-9a1 1 0 0 0 -2 0v9a1 1 0 0 0 1 1z"/></g></svg>
|
||||
<svg height="512" viewBox="0 0 32 32" width="512" xmlns="http://www.w3.org/2000/svg"><g id="delete" fill="rgb(0,0,0)"><path d="m29 9a3 3 0 0 0 -3-3h-4v-1a3 3 0 0 0 -3-3h-6a3 3 0 0 0 -3 3v1h-4a3 3 0 0 0 -.91 5.84l1.73 15.57a3 3 0 0 0 2.98 2.59h12.4a3 3 0 0 0 3-2.59l1.73-15.57a3 3 0 0 0 2.07-2.84zm-17-4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v1h-8zm11.19 22.19a1 1 0 0 1 -1 .81h-12.39a1 1 0 0 1 -1-.81l-1.68-15.19h17.76zm2.81-17.19h-20a1 1 0 0 1 0-2h20a1 1 0 0 1 0 2z"/><path d="m13 25a1 1 0 0 0 1-1v-9a1 1 0 0 0 -2 0v9a1 1 0 0 0 1 1z"/><path d="m19 25a1 1 0 0 0 1-1v-9a1 1 0 0 0 -2 0v9a1 1 0 0 0 1 1z"/></g></svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 604 B After Width: | Height: | Size: 605 B |
@@ -608,3 +608,22 @@ $(document).on('htmx:afterSettle', function (event) {
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
$('.oh-password-input--toggle').on('click', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
const $toggle = $(this);
|
||||
const $passwordInput = $toggle.siblings('.oh-input--password');
|
||||
const $showIcon = $toggle.find('.oh-password-input__show-icon');
|
||||
const $hideIcon = $toggle.find('.oh-password-input__hide-icon');
|
||||
|
||||
if ($passwordInput.attr('type') === 'password') {
|
||||
$passwordInput.attr('type', 'text');
|
||||
$showIcon.addClass('hidden');
|
||||
$hideIcon.removeClass('hidden');
|
||||
} else {
|
||||
$passwordInput.attr('type', 'password');
|
||||
$showIcon.removeClass('hidden');
|
||||
$hideIcon.addClass('hidden');
|
||||
}
|
||||
});
|
||||
|
||||
152
horilla_theme/templates/base/auth/password_change_form.html
Normal file
@@ -0,0 +1,152 @@
|
||||
{% load static i18n %}
|
||||
<div class="oh-alert-container">
|
||||
{% for message in messages %}
|
||||
<div class="oh-alert oh-alert--animated {{ message.tags }}">
|
||||
{{ message }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="h-screen w-full flex items-center justify-center">
|
||||
<div
|
||||
class="bg-[white] p-[50px] rounded-md [box-shadow:0px_0px_20px_#ebebeb] w-[450px]"
|
||||
>
|
||||
<img
|
||||
src="{% if white_label_company.icon %}{{white_label_company.icon.url}}{% else %}{% static 'horilla_theme/assets/img/logo.svg' %}{% endif %}"
|
||||
alt=""
|
||||
class="m-auto mb-4"
|
||||
width="80"
|
||||
/>
|
||||
<h1 class="text-3xl font-bold my-3 text-center">
|
||||
{% trans "Change Password" %}
|
||||
</h1>
|
||||
<div class="my-3">
|
||||
<form method="post"
|
||||
class="oh-form-group"
|
||||
hx-post="{% url 'change-password' %}"
|
||||
hx-target="#form-container"
|
||||
>
|
||||
{% csrf_token %}
|
||||
<div class="my-3">
|
||||
<label for="id_old_password" class="font-bold inline-block text-sm text-color-600 my-2"
|
||||
>{% trans "Old password" %}</label
|
||||
>
|
||||
|
||||
<div class="relative">
|
||||
<input
|
||||
type="password"
|
||||
id="id_old_password"
|
||||
name="old_password"
|
||||
autocomplete="false"
|
||||
placeholder="Enter Old Password"
|
||||
class="oh-input--password text-color-600 w-full border border-dark-50 rounded-md p-3 mt-1 focus-visible:outline-0 placeholder:text-[#00000041] placeholder:font-medium text-xs [transition:.3s] focus:border-primary-600"
|
||||
/>
|
||||
<span
|
||||
type="button"
|
||||
class="oh-btn oh-btn--transparent oh-password-input--toggle"
|
||||
>
|
||||
<ion-icon
|
||||
class="oh-password-input__show-icon"
|
||||
title="{% trans 'Show Password' %}"
|
||||
name="eye-outline"
|
||||
></ion-icon>
|
||||
<ion-icon
|
||||
class="oh-password-input__hide-icon hidden"
|
||||
title="{% trans 'Hide Password' %}"
|
||||
name="eye-off-outline"
|
||||
></ion-icon>
|
||||
</span>
|
||||
</div>
|
||||
{{form.old_password.errors}}
|
||||
</div>
|
||||
|
||||
<div class="my-3">
|
||||
<label for="id_new_password" class="font-bold inline-block text-sm text-color-600 my-2"
|
||||
>{% trans "New Password" %}</label
|
||||
>
|
||||
|
||||
<div class="relative">
|
||||
<input
|
||||
type="password"
|
||||
id="id_new_password"
|
||||
name="new_password"
|
||||
autocomplete="false"
|
||||
placeholder="Enter New Password"
|
||||
class="oh-input--password text-color-600 w-full border border-dark-50 rounded-md p-3 mt-1 focus-visible:outline-0 placeholder:text-[#00000041] placeholder:font-medium text-xs [transition:.3s] focus:border-primary-600"
|
||||
/>
|
||||
<span
|
||||
type="button"
|
||||
class="oh-btn oh-btn--transparent oh-password-input--toggle"
|
||||
>
|
||||
<ion-icon
|
||||
class="oh-password-input__show-icon"
|
||||
title="{% trans 'Show Password' %}"
|
||||
name="eye-outline"
|
||||
></ion-icon>
|
||||
<ion-icon
|
||||
class="oh-password-input__hide-icon hidden"
|
||||
title="{% trans 'Hide Password' %}"
|
||||
name="eye-off-outline"
|
||||
></ion-icon>
|
||||
</span>
|
||||
</div>
|
||||
{{form.new_password.errors}}
|
||||
</div>
|
||||
|
||||
<div class="my-3">
|
||||
<label for="id_confirm_password" class="font-bold inline-block text-sm text-color-600 my-2"
|
||||
>{% trans "Confirm Password" %}</label
|
||||
>
|
||||
<div class="relative">
|
||||
<input
|
||||
type="password"
|
||||
id="id_confirm_password"
|
||||
name="confirm_password"
|
||||
autocomplete="false"
|
||||
placeholder="Re-Enter Password"
|
||||
class="oh-input--password text-color-600 w-full border border-dark-50 rounded-md p-3 mt-1 focus-visible:outline-0 placeholder:text-[#00000041] placeholder:font-medium text-xs [transition:.3s] focus:border-primary-600"
|
||||
/>
|
||||
<span
|
||||
type="button"
|
||||
class="oh-btn oh-btn--transparent oh-password-input--toggle"
|
||||
>
|
||||
<ion-icon
|
||||
class="oh-password-input__show-icon"
|
||||
title="{% trans 'Show Password' %}"
|
||||
name="eye-outline"
|
||||
></ion-icon>
|
||||
<ion-icon
|
||||
class="oh-password-input__hide-icon hidden"
|
||||
title="{% trans 'Hide Password' %}"
|
||||
name="eye-off-outline"
|
||||
></ion-icon>
|
||||
</span>
|
||||
</div>
|
||||
{{form.confirm_password.errors}}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="flex justify-end">
|
||||
<a
|
||||
href="{% url 'forgot-password' %}"
|
||||
class="text-sm text-right font-medium text-[red] mb-3 mt-2 cursor-pointer"
|
||||
>
|
||||
{% trans "Forgot Password ?" %}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="my-3">
|
||||
<button
|
||||
type="submit"
|
||||
class="p-3 bg-primary-600 hover:bg-secondary-600 w-full flex gap-3 justify-center rounded-md text-[white] [transition:.3s]"
|
||||
>
|
||||
<ion-icon
|
||||
class="oh-password-input__hide-icon"
|
||||
name="lock-closed-outline"
|
||||
></ion-icon>
|
||||
{% trans "Save Password" %}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -79,9 +79,9 @@
|
||||
type="submit"
|
||||
class="p-3 bg-primary-600 hover:bg-secondary-600 w-full flex gap-3 justify-center rounded-md text-[white] [transition:.3s]"
|
||||
>
|
||||
<img src="{% static "horilla_theme/assets/icons/sign.svg" %}"
|
||||
alt=""
|
||||
/>
|
||||
<img src="{% static "horilla_theme/assets/icons/sign.svg" %}"
|
||||
alt=""
|
||||
/>
|
||||
{% trans "Send reset link" %}
|
||||
</button>
|
||||
</form>
|
||||
|
||||
@@ -14,12 +14,12 @@
|
||||
hx-swap="outerHTML"
|
||||
hx-on:click="htmxLoadIndicator(this);"
|
||||
></button>
|
||||
{% if show_filter_tags %}
|
||||
{% include "generic/filter_tags.html" %}
|
||||
{% endif %}
|
||||
{% if queryset|length %}
|
||||
{% if bulk_select_option %}
|
||||
{% include "generic/quick_actions.html" %}
|
||||
{% if show_filter_tags %}
|
||||
{% include "generic/filter_tags.html" %}
|
||||
{% endif %}
|
||||
{% if queryset|length %}
|
||||
{% if bulk_select_option %}
|
||||
{% include "generic/quick_actions.html" %}
|
||||
{% endif %}
|
||||
<div class="bg-white rounded-md shadow-card ">
|
||||
<div class="h-[calc(100vh_-_210px)] overflow-hidden overflow-y-auto overflow-x-auto ">
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
{% if show_filter_tags %}
|
||||
{% include "generic/filter_tags.html" %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
<div class="bg-white p-3 rounded-md shadow-card">
|
||||
<div class="flex flex-wrap gap-2 justify-between mb-3">
|
||||
<div class="flex gap-1 flex-wrap">
|
||||
{% for tab in tabs %}
|
||||
<div class="relative inline-block dropdown-wrapper" x-data="{ open: false }">
|
||||
<button
|
||||
:class="{
|
||||
:class="{
|
||||
'oh-tabs__tab--active': activeIndex === {{ forloop.counter0 }},
|
||||
'bg-primary-300 text-primary-600 border border-primary-600': activeIndex === {{ forloop.counter0 }},
|
||||
'border border-dark-50 text-gray-800': activeIndex !== {{ forloop.counter0 }}
|
||||
@@ -23,7 +23,7 @@
|
||||
hx-swap="innerHTML"
|
||||
@click="setActive({{ forloop.counter0 }})"
|
||||
>
|
||||
|
||||
|
||||
<span class="w-6 h-6 bg-primary-600 rounded-full text-white flex items-center justify-center"
|
||||
id="badge-{{view_id}}{{forloop.counter}}"
|
||||
{% if tab.badge_label %}
|
||||
@@ -36,14 +36,14 @@
|
||||
0
|
||||
</span>
|
||||
{{ tab.title }}
|
||||
|
||||
|
||||
{% if tab.actions %}
|
||||
<span class="ps-3 cursor-pointer" onclick=actionClick(event)>
|
||||
<i class="fa-solid fa-ellipsis-vertical text-black" title="Actions"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
</button>
|
||||
|
||||
|
||||
{% if tab.actions %}
|
||||
<div
|
||||
class="dropdown-menu absolute right-0 min-w-[100px] bg-white rounded-lg shadow-card py-2 z-50 transition-all duration-200"
|
||||
@@ -75,7 +75,7 @@
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="oh-tabs__contents">
|
||||
{% for tab in tabs %}
|
||||
<div
|
||||
@@ -91,7 +91,7 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
function toggleHighlight(checkbox) {
|
||||
const row = checkbox.closest("tr");
|
||||
@@ -109,22 +109,22 @@
|
||||
if (window.Alpine && Alpine.initTree) {
|
||||
Alpine.initTree(target);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
function tabsComponent(viewId) {
|
||||
return {
|
||||
activeIndex: 0,
|
||||
|
||||
|
||||
init() {
|
||||
const savedIndex = localStorage.getItem(`${viewId}_activeIndex`);
|
||||
this.activeIndex = savedIndex !== null ? Number(savedIndex) : 0;
|
||||
|
||||
|
||||
const tabBtn = document.querySelector(`[data-tab-index="${this.activeIndex}"]`);
|
||||
const targetId = tabBtn?.getAttribute("hx-target")?.replace("#", "");
|
||||
const url = tabBtn?.getAttribute("hx-get");
|
||||
|
||||
|
||||
if (url && targetId) {
|
||||
const target = document.getElementById(targetId);
|
||||
if (target) {
|
||||
@@ -133,7 +133,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
setActive(index) {
|
||||
this.activeIndex = index;
|
||||
localStorage.setItem(`${viewId}_activeIndex`, index);
|
||||
@@ -144,12 +144,12 @@
|
||||
event.stopPropagation(); // Prevents closing when clicking inside
|
||||
const icon = event.currentTarget;
|
||||
const dropdownMenu = $(icon).closest('.dropdown-wrapper').find('.dropdown-menu');
|
||||
|
||||
|
||||
const isOpen = dropdownMenu.is(":visible");
|
||||
|
||||
|
||||
// Close all other dropdowns
|
||||
$(".dropdown-menu").not(dropdownMenu).hide();
|
||||
|
||||
|
||||
if (isOpen) {
|
||||
dropdownMenu.hide();
|
||||
} else {
|
||||
@@ -159,7 +159,7 @@
|
||||
|
||||
document.addEventListener("click", function (e) {
|
||||
const $clickedWrapper = $(e.target).closest(".dropdown-wrapper");
|
||||
|
||||
|
||||
$(".dropdown-wrapper").each(function () {
|
||||
const $wrapper = $(this);
|
||||
if (!$wrapper.is($clickedWrapper)) {
|
||||
@@ -169,4 +169,3 @@
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
title="{% trans 'Hide Password' %}"
|
||||
name="eye-off-outline"
|
||||
></ion-icon>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
{% if not initialize_database %}
|
||||
<div class="flex justify-end">
|
||||
@@ -184,4 +184,4 @@
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||