Compare commits

...

5 Commits

Author SHA1 Message Date
Frédéric Péters 5febe9a8b8 translation update
gitea/gadjo/pipeline/head This commit looks good Details
2023-04-14 07:56:40 +02:00
Frédéric Péters 7cf72da19c general: add reveal checkbox to password fields (#74652) 2023-04-14 07:56:39 +02:00
Frédéric Péters 76423b24c2 a11y: add skip to content link (#76470)
gitea/gadjo/pipeline/head This commit looks good Details
2023-04-11 10:17:30 +02:00
Frédéric Péters e2a1d668a5 templates: reorder field elements to have label/hint/control/error (#75808)
gitea/gadjo/pipeline/head This commit looks good Details
2023-04-04 18:02:28 +02:00
Frédéric Péters 22caa7a2d4 misc: do not generate unused png icon variants (#72513)
gitea/gadjo/pipeline/head This commit looks good Details
2023-04-04 17:59:16 +02:00
7 changed files with 104 additions and 48 deletions

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gadjo 0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-21 06:03+0000\n"
"PO-Revision-Date: 2020-08-21 08:03+0200\n"
"POT-Creation-Date: 2023-02-25 18:07+0100\n"
"PO-Revision-Date: 2023-02-25 18:08+0100\n"
"Last-Translator: Frederic Peters <fpeters@entrouvert.com>\n"
"Language: French\n"
"MIME-Version: 1.0\n"
@ -25,36 +25,26 @@ msgstr "Il y a eu un problème à la validation du formulaire."
msgid "(Hidden field %(name)s) %(error)s"
msgstr "(champ caché %(name)s) %(error)s"
#: templates/gadjo/root.html:36
#: templates/gadjo/password-widget.html:8
msgid "Display password"
msgstr "Afficher le mot de passe"
#: templates/gadjo/password-widget.html:9
msgid "Display"
msgstr "Afficher"
#: templates/gadjo/root.html:39
msgid "Logout"
msgstr "Déconnexion"
#: templates/gadjo/root.html:54
msgid ""
"\n"
" <p><strong>Do you know your web browser is obsolete?</strong> We "
"recommend\n"
" you to <a href=\"http://windows.microsoft.com/en-us/internet-explorer/"
"download-ie\">update\n"
" your web browser</a> or to <a href=\"http://browsehappy.com/\">use\n"
" different web browsers</a> as some features may not work.\n"
" "
msgstr ""
"\n"
" <p><strong>Savez-vous que votre navigateur est obsolète ?</strong> Nous "
"vous recommandons de <a href=\"http://windows.microsoft.com/en-us/internet-"
"explorer/download-ie\">mettre à jour votre navigateur</a> ou d'<a href="
"\"http://browsehappy.com/\">utiliser un navigateur différent</a>.\n"
" "
#: templates/gadjo/root.html:70
#: templates/gadjo/root.html:60
msgid "Homepage"
msgstr "Accueil"
#: templates/gadjo/widget.html:11
#: templates/gadjo/widget.html:12
msgid "This field is required."
msgstr "Ce champ est obligatoire."
#: templates/gadjo/widget.html:13
#: templates/gadjo/widget.html:14
msgid "(optional)"
msgstr "(optionnel)"

View File

@ -703,3 +703,23 @@ div.godo--editor {
}
}
}
.gadjo-password-field {
position: relative;
.title label {
padding-right: 6em;
}
}
.password-visibility-checkbox {
display: flex;
position: absolute;
top: 0;
right: 0;
input + label {
margin: 0;
}
input {
margin: 0 0.25em 0 0;
}
}

View File

@ -1093,12 +1093,10 @@ ul#sidepage-menu li a {
border-radius: 2px;
}
$string-color: str-slice($primary-color + '', 2);
$appicons: add, agendas, announces, bankcard, book, calendar, cards, categories, clock, counter, data, facturier, forms, gis, grid, home, identity-management, lingo, mail, management, organizational-units, passerelle, password, phone, portal, portal-agent, porte-doc, roles, security, services, settings, statistics, studio, submission, system, texts, theme, users, workflows;
@each $appicon in $appicons {
ul#sidepage-menu li a.icon-#{$appicon} { background-image: url(icons/#{$appicon}.small.#{$string-color}.png); }
ul#sidepage-menu li a.icon-#{$appicon} { background-image: url(icons/#{$appicon}.small.png); }
ul.apps li.icon-#{$appicon} a { background-image: url(icons/#{$appicon}.large.png); }
ul.apps li.icon-#{$appicon} a:hover { background-image: url(icons/#{$appicon}.large-hover.png); }
}
@ -1377,6 +1375,29 @@ body .leaflet-attribution-flag {
white-space: pre-line;
}
#nav-skip {
position: absolute;
ul, li {
list-style: none;
margin: 0;
padding: 0;
display: flex;
}
a {
position: absolute;
line-height: calc(#{$header-height} - 20px);
height: calc(#{$header-height} - 20px);
top: 4px;
left: calc(#{$sidepage-width} + 60px);
width: 20rem;
z-index: 1000;
@extend %button;
}
a:not(:focus) {
@extend .sr-only;
}
}
@import 'grid';
@import 'fx-grid';
@import 'jqueryui';

View File

@ -0,0 +1,25 @@
{% extends "gadjo/widget.html" %}
{% load i18n %}
{% block widget-css-classes %}{{ block.super }} gadjo-password-field{% endblock %}
{% block widget-bottom %}
<div class="password-visibility-checkbox">
<input id="password-visibility-checkbox-{{ field.id_for_label }}" type="checkbox" aria-label="{% trans "Display password" %}">
<label for="password-visibility-checkbox-{{ field.id_for_label }}">{% trans "Display" %}</label>
</div>
<script>
(function() {
const checkbox = document.getElementById('password-visibility-checkbox-{{ field.id_for_label }}');
const password_input = document.querySelector('#{{field.id_for_label}}_p input[type=password]');
checkbox.addEventListener('change', function(e) {
if (this.checked) {
password_input.type = 'text';
} else {
password_input.type = 'password';
}
});
checkbox.checked = false; // force to be hidden on load
})();
</script>
{% endblock %}

View File

@ -24,6 +24,11 @@
{% endblock %}
</head>
<body data-gadjo="true" {% block bodyargs %}{% endblock %}>
<div id="nav-skip">
<ul>
<li><a href="#main-content">{% trans "Go to content" %}</a></li>
</ul>
</div>
<div id="top">
{% block sidepage %}
{% endblock %}

View File

@ -1,9 +1,9 @@
{% load gadjo i18n %}
<div class="widget
{{ field.css_classes }}
django-{{ field|field_class_name }}
{% if field.errors %}widget-with-error{% endif %}
{% if field.field.required %}widget-required{% else %}widget-optional{% endif %}"
<div class="{% block widget-css-classes %}widget
{{ field.css_classes }}
django-{{ field|field_class_name }}
{% if field.errors %}widget-with-error{% endif %}
{% if field.field.required %}widget-required{% else %}widget-optional{% endif %}{% endblock %}"
{% if field.id_for_label %}id="{{field.id_for_label}}_p"{% endif %}>
{% block widget-title %}
<div class="title" {% if field.id_for_label %}id="{{ field.id_for_label }}_title"{% endif %}>
@ -19,6 +19,14 @@
<div class="content"
{% if field.id_for_label %}aria-labelledby="{{ field.id_for_label }}_title"{% endif %}
{% block widget-attrs %}{% endblock %}>
{% block widget-hint %}
{% if field.help_text %}
<div class="hint">{{ field.help_text|safe }}</div>
{% endif %}
{% endblock %}
{% block widget-control %}
{{ field }}
{% endblock %}
{% block widget-error %}
{% if field.errors %}
<div class="error"><p>
@ -28,14 +36,7 @@
</p></div>
{% endif %}
{% endblock %}
{% block widget-control %}
{{ field }}
{% endblock %}
{% block widget-hint %}
{% if field.help_text %}
<div class="hint">{{ field.help_text|safe }}</div>
{% endif %}
{% endblock %}
{% block widget-bottom %}{% endblock %}
</div>
{% endblock %}
</div>

View File

@ -142,19 +142,13 @@ class build_icons(Command):
if not os.path.exists(destpath):
os.mkdir(destpath)
variants_applications = {
'small': {'colour': 'e7e7e7', 'width': '40'},
'small.white': {'colour': 'ffffff', 'width': '40'},
'small.386ede': {'colour': '386ede', 'width': '40'},
'small.ff375e': {'colour': 'ff375e', 'width': '40'},
'small.6f2b92': {'colour': '6f2b92', 'width': '40'},
'small': {'colour': '386ede', 'width': '40'},
'large': {'colour': 'e7e7e7', 'width': '80'},
'large-hover': {'colour': 'bebebe', 'width': '80'},
}
variants_actions = {
'small': {'colour': '386ede', 'width': '40'},
'small.white': {'colour': 'ffffff', 'width': '40'},
'small.386ede': {'colour': '386ede', 'width': '40'},
'small.ff375e': {'colour': 'ff375e', 'width': '40'},
'small.6f2b92': {'colour': '6f2b92', 'width': '40'},
'hover': {'colour': '2b2b2b', 'width': '40'},
}
for basepath, dirnames, filenames in os.walk('icons'):