mirror of
https://github.com/ae-utbm/sith.git
synced 2026-08-31 09:39:15 +00:00
Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ebfac638de | ||
|
|
839536661b | ||
|
|
b1b3639dc9 | ||
|
|
56c832ba06
|
||
|
|
884019d803 | ||
|
|
dfc714ff3d
|
@@ -7,7 +7,7 @@
|
||||
|
||||
<form
|
||||
hx-post="{{ url('club:club_new_members', club_id=club.id) }}"
|
||||
hx-disabled-elt="find input[type='submit']"
|
||||
hx-disable="find input[type='submit']"
|
||||
hx-swap="outerHTML"
|
||||
hx-target="#member-fragment-container"
|
||||
id="add_club_members_form"
|
||||
|
||||
@@ -6,10 +6,15 @@
|
||||
* for more efficient tree-shaking and gzip compression.
|
||||
*/
|
||||
|
||||
// Must be loaded before Apline
|
||||
import htmx from "htmx.org";
|
||||
import "htmx.org/dist/ext/hx-alpine-compat.js";
|
||||
import "htmx.org/dist/ext/hx-prompt.js";
|
||||
import "htmx.org/dist/ext/hx-download.js";
|
||||
|
||||
import sort from "@alpinejs/sort";
|
||||
import Alpine from "alpinejs";
|
||||
import { polyfillCountryFlagEmojis } from "country-flag-emoji-polyfill";
|
||||
import htmx from "htmx.org";
|
||||
import { limitedChoices } from "#core:alpine/limited-choices";
|
||||
import { expireOldStorage } from "#core:core/localstorage";
|
||||
import { default as navbar } from "#core:core/navbar";
|
||||
@@ -44,16 +49,16 @@ polyfillCountryFlagEmojis();
|
||||
* HTMX
|
||||
*/
|
||||
document.body.addEventListener(
|
||||
"htmx:beforeRequest" as keyof HTMLElementEventMap,
|
||||
"htmx:before:request" as keyof HTMLElementEventMap,
|
||||
(event) => {
|
||||
(event as CustomEvent).detail.target.ariaBusy = true;
|
||||
(event as CustomEvent).detail.ctx.target.ariaBusy = true;
|
||||
},
|
||||
);
|
||||
|
||||
document.body.addEventListener(
|
||||
"htmx:beforeSwap" as keyof HTMLElementEventMap,
|
||||
"htmx:before:swap" as keyof HTMLElementEventMap,
|
||||
(event) => {
|
||||
(event as CustomEvent).detail.target.ariaBusy = null;
|
||||
(event as CustomEvent).detail.ctx.target.ariaBusy = null;
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<form
|
||||
hx-post="{{ url("core:user_visibility_fragment", user_id=form.instance.id) }}"
|
||||
hx-disabled-elt="find input[type='submit']"
|
||||
hx-disable="find input[type='submit']"
|
||||
hx-swap="outerHTML" x-data="{ isViewable: {{ form.is_viewable.value()|tojson }} }"
|
||||
>
|
||||
{% for message in messages %}
|
||||
|
||||
@@ -28,18 +28,23 @@ export class ProductAjaxSelect extends AjaxSelect {
|
||||
return [];
|
||||
}
|
||||
|
||||
private getName(item: SimpleProductSchema, sanitize: typeof escape_html): string {
|
||||
// In the context in which this method is called, `this` might be shadowed
|
||||
// We need to call it explicitly from the class itself
|
||||
private static getName(
|
||||
item: SimpleProductSchema,
|
||||
sanitize: typeof escape_html,
|
||||
): string {
|
||||
return item.code ? `${sanitize(item.code)} - ${sanitize(item.name)}` : item.name;
|
||||
}
|
||||
|
||||
protected renderOption(item: SimpleProductSchema, sanitize: typeof escape_html) {
|
||||
return `<div class="select-item">
|
||||
<span class="select-item-text">${this.getName(item, sanitize)}</span>
|
||||
<span class="select-item-text">${ProductAjaxSelect.getName(item, sanitize)}</span>
|
||||
</div>`;
|
||||
}
|
||||
|
||||
protected renderItem(item: SimpleProductSchema, sanitize: typeof escape_html) {
|
||||
return `<span>${this.getName(item, sanitize)}</span>`;
|
||||
return `<span>${ProductAjaxSelect.getName(item, sanitize)}</span>`;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
<div id="student_card_form">
|
||||
<form hx-post="{{ action }}" hx-swap="outerHTML" hx-target="#student_card_form">
|
||||
<form
|
||||
hx-post="{{ action }}"
|
||||
hx-swap="outerHTML"
|
||||
hx-target="#student_card_form"
|
||||
hx-disable="input[type='submit']"
|
||||
>
|
||||
{% csrf_token %}
|
||||
<p>{% trans obj=object %}Are you sure you want to delete "{{ obj }}"?{% endtrans %}</p>
|
||||
<input type="submit" value="{% trans %}Confirm{% endtrans %}" />
|
||||
|
||||
@@ -217,7 +217,7 @@ C'est une technologie simple et puissante qui se veut comme le jQuery du web mod
|
||||
|
||||
### Htmx
|
||||
|
||||
[Site officiel](https://htmx.org/)
|
||||
[Site officiel](https://four.htmx.org/)
|
||||
|
||||
En plus de AlpineJS, l’interactivité sur le site est augmentée via Htmx.
|
||||
C'est une librairie js qui s'utilise également au moyen d'attributs HTML à
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
hx-post="{{ url("election:apply_result", election_id=form.election.id) }}"
|
||||
hx-swap="outerHTML"
|
||||
hx-target="#apply-election-result-fragment"
|
||||
hx-disabled-elt="find input[type='submit']"
|
||||
hx-disable="find input[type='submit']"
|
||||
>
|
||||
{% csrf_token %}
|
||||
{{ form }}
|
||||
|
||||
Generated
+11
-5
@@ -30,7 +30,7 @@
|
||||
"easymde": "^2.21.0",
|
||||
"glob": "^13.0.6",
|
||||
"html2canvas": "^1.4.1",
|
||||
"htmx.org": "^2.0.10",
|
||||
"htmx.org": "^4.0.0",
|
||||
"js-cookie": "^3.0.8",
|
||||
"lit-html": "^3.3.3",
|
||||
"native-file-system-adapter": "^3.0.1",
|
||||
@@ -3801,10 +3801,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/htmx.org": {
|
||||
"version": "2.0.10",
|
||||
"resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-2.0.10.tgz",
|
||||
"integrity": "sha512-kdeJe7ZVwaS6QMz/ebBIVtZdpwen6L0OQ5GOhPV9MKBb196TCZeZu4yA7ZIQsaLKv7EpXz+So7KSXNuHXhj7Cw==",
|
||||
"license": "0BSD"
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-4.0.0.tgz",
|
||||
"integrity": "sha512-T/171FUY93Kdfp8t+DnHdk45QvKRiBhVhhrwSzrXgUi4pHKvhp77dUA/qg8FAjsFWPIHNbmUuIdCrcVHuiZWng==",
|
||||
"license": "BSD-0-Clause",
|
||||
"workspaces": [
|
||||
"ext/*"
|
||||
],
|
||||
"bin": {
|
||||
"upgrade-check": "dist/scripts/upgrade-check.js"
|
||||
}
|
||||
},
|
||||
"node_modules/ical.js": {
|
||||
"version": "1.5.0",
|
||||
|
||||
+2
-2
@@ -34,8 +34,8 @@
|
||||
"@types/cytoscape-klay": "^3.1.5",
|
||||
"@types/js-cookie": "^3.0.6",
|
||||
"@types/node": "^26.2.0",
|
||||
"rollup-plugin-visualizer": "^7.1.1",
|
||||
"@typescript/native": "npm:typescript@^7.0.2",
|
||||
"rollup-plugin-visualizer": "^7.1.1",
|
||||
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
||||
"vite": "^8.2.2"
|
||||
},
|
||||
@@ -61,7 +61,7 @@
|
||||
"easymde": "^2.21.0",
|
||||
"glob": "^13.0.6",
|
||||
"html2canvas": "^1.4.1",
|
||||
"htmx.org": "^2.0.10",
|
||||
"htmx.org": "^4.0.0",
|
||||
"js-cookie": "^3.0.8",
|
||||
"lit-html": "^3.3.3",
|
||||
"native-file-system-adapter": "^3.0.1",
|
||||
|
||||
@@ -44,10 +44,6 @@
|
||||
x-model.debounce.500ms="search"
|
||||
/>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<input type="checkbox" class="switch" name="hide_closed_ues" id="hide-closed-ues">
|
||||
<label for="hide-closed-ues">{% trans %}Show closed UEs{% endtrans %}</label>
|
||||
</fieldset>
|
||||
<div class="row gap-3x margin-bottom radio-guide">
|
||||
<fieldset>
|
||||
{% set departments = [
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<form
|
||||
hx-post="{{ url("subscription:fragment-existing-user") }}"
|
||||
hx-target="this"
|
||||
hx-disabled-elt="find input[type='submit']"
|
||||
hx-disable="find input[type='submit']"
|
||||
hx-swap="outerHTML"
|
||||
>
|
||||
{% csrf_token %}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<form
|
||||
hx-post="{{ url("subscription:fragment-new-user") }}"
|
||||
hx-target="this"
|
||||
hx-disabled-elt="find input[type='submit']"
|
||||
hx-disable="find input[type='submit']"
|
||||
hx-swap="outerHTML"
|
||||
>
|
||||
{% csrf_token %}
|
||||
|
||||
Reference in New Issue
Block a user