[TWIG] Form layout is all new, since extending form_div_layout.html.twig was quite limiting
[COMPONENTS][Posting] It is now visible on Actor profiles [COMPONENTS][Search] Overall rework of search results template, there's also additional help text added [CSS] Header no longer translucent, font sizes yet more consistent, replies marker less pronounced, and font hierarchy is now applied in both weight and size
This commit is contained in:
parent
b69f4a46c5
commit
03a475b642
@ -75,7 +75,7 @@ class Posting extends Component
|
||||
*/
|
||||
public function onAddMainRightPanelBlock(Request $request, array &$res): bool
|
||||
{
|
||||
if (\is_null($user = Common::user()) || preg_match('(feed|conversation|group)', $request->get('_route')) === 0) {
|
||||
if (\is_null($user = Common::user()) || preg_match('(feed|conversation|group|view)', $request->get('_route')) === 0) {
|
||||
return Event::next;
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
{{ form_row(form.content) }}
|
||||
{{ form_row(form.attachments) }}
|
||||
|
||||
<details class="section-details-subtitle">
|
||||
<details class="section-details-subtitle frame-section">
|
||||
<summary class="details-summary-subtitle">
|
||||
<strong>
|
||||
{{ "Additional options" | trans }}
|
||||
@ -53,7 +53,7 @@
|
||||
</summary>
|
||||
|
||||
{% for block in extra %}
|
||||
<section class="posting-extra frame-section-padding">
|
||||
<section class="posting-extra">
|
||||
{{ block | raw }}
|
||||
</section>
|
||||
{% endfor %}
|
||||
|
@ -63,13 +63,22 @@ class Search extends Component
|
||||
|
||||
if ($add_subscribe) {
|
||||
$form_definition[] = [
|
||||
'title', TextType::class, ['label' => _m('Title'), 'required' => false, 'attr' => ['title' => _m('Title for this new feed in your left panel')]],
|
||||
'title', TextType::class,
|
||||
[
|
||||
'label' => _m('Subscribe to search query'),
|
||||
'help' => _m('By subscribing to a search query, a new feed link will be added to left panel\'s feed navigation menu'),
|
||||
'required' => false,
|
||||
'attr' => [
|
||||
'title' => _m('Title for this new feed in your left panel'),
|
||||
'placeholder' => _m('Input desired title...'),
|
||||
],
|
||||
],
|
||||
];
|
||||
$form_definition[] = [
|
||||
'subscribe_to_search',
|
||||
SubmitType::class,
|
||||
[
|
||||
'label' => _m('Subscribe to this search'),
|
||||
'label' => _m('Subscribe'),
|
||||
'attr' => [
|
||||
'title' => _m('Add this search as a feed in your feeds section of the left panel'),
|
||||
],
|
||||
|
@ -1,63 +1,45 @@
|
||||
{% extends 'collection/notes.html.twig' %}
|
||||
|
||||
{% block search_query_simple %}
|
||||
<section>
|
||||
<h1 class="section-title">{% trans %}Search{% endtrans %}</h1>
|
||||
|
||||
{% block body %}
|
||||
{% if error is defined %}
|
||||
<label class="alert alert-danger">
|
||||
{{ error.getMessage() }}
|
||||
</label>
|
||||
{% endif %}
|
||||
|
||||
<h1>{% trans %}Search{% endtrans %}</h1>
|
||||
|
||||
<section class="frame-section frame-section-padding">
|
||||
{{ form_start(search_form) }}
|
||||
{{ form_errors(search_form) }}
|
||||
<div class="section-title">
|
||||
{{ form_row(search_form.search_query) }}
|
||||
</div>
|
||||
{{ form_row(search_form.search_query) }}
|
||||
{% if actor is not null %}
|
||||
<details class="frame-section section-details-subtitle">
|
||||
<details class="section-details-subtitle frame-section">
|
||||
<summary class="details-summary-subtitle">
|
||||
<strong>{% trans %}Other options{% endtrans %}</strong>
|
||||
<strong>
|
||||
{% trans %}Extra options{% endtrans %}
|
||||
</strong>
|
||||
</summary>
|
||||
|
||||
<div class="section-form">
|
||||
<details class="section-details-subtitle">
|
||||
<summary class="details-summary-subtitle">
|
||||
<strong>
|
||||
{% trans %}Save query as a feed{% endtrans %}
|
||||
</strong>
|
||||
</summary>
|
||||
<div class="section-form">
|
||||
{{ form_row(search_form.title) }}
|
||||
{{ form_row(search_form.subscribe_to_search) }}
|
||||
</div>
|
||||
<hr>
|
||||
</details>
|
||||
{{ form_row(search_form.title) }}
|
||||
{{ form_row(search_form.subscribe_to_search) }}
|
||||
</div>
|
||||
</details>
|
||||
{% endif %}
|
||||
{{ form_row(search_form.submit_search) }}
|
||||
{{ form_rest(search_form) }}
|
||||
{{ form_end(search_form)}}
|
||||
</section>
|
||||
{% endblock search_query_simple %}
|
||||
|
||||
<hr>
|
||||
{% block search_query_advanced %}
|
||||
{{ form_start(search_builder_form) }}
|
||||
<details class="section-details section-details-title frame-section">
|
||||
<summary class="details-summary-title">
|
||||
<span>{% trans %}Advanced search{% endtrans %}</span>
|
||||
</summary>
|
||||
|
||||
<section class="frame-section">
|
||||
<details class="section-details-subtitle">
|
||||
<summary class="details-summary-subtitle">
|
||||
<strong>{% trans %}Build a search query{% endtrans %}</strong>
|
||||
</summary>
|
||||
|
||||
<div class="section-form">
|
||||
{{ form_start(search_builder_form) }}
|
||||
{# actor options, display if first checked, with checkbox trick #}
|
||||
<details class="section-details-subtitle">
|
||||
<summary class="details-summary-subtitle">
|
||||
<strong>{% trans %}People search options{% endtrans %}</strong>
|
||||
</summary>
|
||||
<div class="section-form">
|
||||
<section class="frame-section-padding">
|
||||
<details class="section-details-subtitle frame-section">
|
||||
<summary class="details-summary-subtitle">
|
||||
<strong>{% trans %}People search options{% endtrans %}</strong>
|
||||
</summary>
|
||||
<div class="section-form">
|
||||
<div class="section-checkbox-flex">
|
||||
{{ form_row(search_builder_form.include_actors) }}
|
||||
{{ form_row(search_builder_form.include_actors_people) }}
|
||||
{{ form_row(search_builder_form.include_actors_groups) }}
|
||||
@ -65,61 +47,84 @@
|
||||
{{ form_row(search_builder_form.include_actors_businesses) }}
|
||||
{{ form_row(search_builder_form.include_actors_organizations) }}
|
||||
{{ form_row(search_builder_form.include_actors_bots) }}
|
||||
{{ form_row(search_builder_form.actor_langs) }}
|
||||
{{ form_row(search_builder_form.actor_tags) }}
|
||||
</div>
|
||||
<hr>
|
||||
</details>
|
||||
{{ form_row(search_builder_form.actor_tags) }}
|
||||
<hr>
|
||||
{{ form_row(search_builder_form.actor_langs) }}
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<details class="section-details-subtitle">
|
||||
<summary class="details-summary-subtitle">
|
||||
<strong>{% trans %}Note search options{% endtrans %}</strong>
|
||||
</summary>
|
||||
<div class="section-form">
|
||||
<details class="section-details-subtitle frame-section">
|
||||
<summary class="details-summary-subtitle">
|
||||
<strong>{% trans %}Note search options{% endtrans %}</strong>
|
||||
</summary>
|
||||
<div class="section-form">
|
||||
<div class="section-checkbox-flex">
|
||||
{{ form_row(search_builder_form.include_notes) }}
|
||||
{{ form_row(search_builder_form.include_notes_text) }}
|
||||
{{ form_row(search_builder_form.include_notes_media) }}
|
||||
{{ form_row(search_builder_form.include_notes_polls) }}
|
||||
{{ form_row(search_builder_form.include_notes_bookmarks) }}
|
||||
{{ form_row(search_builder_form.note_langs) }}
|
||||
{{ form_row(search_builder_form.note_tags) }}
|
||||
{{ form_row(search_builder_form.note_actor_langs) }}
|
||||
{{ form_row(search_builder_form.note_actor_tags) }}
|
||||
</div>
|
||||
<hr>
|
||||
</details>
|
||||
{{ form_rest(search_builder_form) }}
|
||||
{{ form_end(search_builder_form) }}
|
||||
</div>
|
||||
</details>
|
||||
{{ form_row(search_builder_form.note_tags) }}
|
||||
<hr>
|
||||
{{ form_row(search_builder_form.note_langs) }}
|
||||
<hr>
|
||||
{{ form_row(search_builder_form.note_actor_tags) }}
|
||||
<hr>
|
||||
{{ form_row(search_builder_form.note_actor_langs) }}
|
||||
</div>
|
||||
</details>
|
||||
|
||||
{{ form_rest(search_builder_form) }}
|
||||
</section>
|
||||
</details>
|
||||
{{ form_end(search_builder_form) }}
|
||||
{% endblock search_query_advanced %}
|
||||
|
||||
{% block search %}
|
||||
<section class="frame-section frame-section-padding">
|
||||
{% if error is defined %}
|
||||
<label class="alert alert-danger">
|
||||
{{ error.getMessage() }}
|
||||
</label>
|
||||
{% endif %}
|
||||
{{ block('search_query_simple') }}
|
||||
<hr>
|
||||
{{ block('search_query_advanced') }}
|
||||
</section>
|
||||
</section>
|
||||
{% endblock search %}
|
||||
|
||||
<section class="frame-section frame-section-padding">
|
||||
<h2>{% trans %}Results{% endtrans %}</h2>
|
||||
<div class="frame-section frame-section-padding feed-empty">
|
||||
{% if notes is defined and notes is not empty %}
|
||||
{{ parent() }}
|
||||
{% else %}
|
||||
<h3>{% trans %}No notes found{% endtrans %}</h3>
|
||||
<em>{% trans %}No notes were found for the specified query...{% endtrans %}</em>
|
||||
{% endif %}
|
||||
{% block body %}
|
||||
{{ block('search') }}
|
||||
<div class="frame-section frame-section-padding">
|
||||
<h1 class="section-title">{% trans %}Results{% endtrans %}</h1>
|
||||
|
||||
<section>
|
||||
{% if notes is defined and notes is not empty %}
|
||||
{{ parent() }}
|
||||
{% else %}
|
||||
<h3>{% trans %}No notes found{% endtrans %}</h3>
|
||||
<em>{% trans %}No notes were found for the specified query...{% endtrans %}</em>
|
||||
{% endif %}
|
||||
</section>
|
||||
<hr>
|
||||
<section>
|
||||
<h3>{% trans %}Actors found{% endtrans %}</h3>
|
||||
{% if actors is defined and actors is not empty %}
|
||||
{% for actor in actors %}
|
||||
{% include 'cards/blocks/profile.html.twig' with {'actor': actor} %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<em>{% trans %}No Actors were found for the specified query...{% endtrans %}</em>
|
||||
{% endif %}
|
||||
</section>
|
||||
|
||||
<div class="frame-section-button-like">
|
||||
{{ "Page: " ~ page }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="frame-section frame-section-padding feed-empty">
|
||||
<h3>{% trans %}Actors found{% endtrans %}</h3>
|
||||
{% if actors is defined and actors is not empty %}
|
||||
{% for actor in actors %}
|
||||
{% include 'cards/blocks/profile.html.twig' with {'actor': actor} %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<em>{% trans %}No Actors were found for the specified query...{% endtrans %}</em>
|
||||
{% endif %}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="frame-section-button-like">
|
||||
{{ "Page: " ~ page }}
|
||||
</div>
|
||||
{% endblock body %}
|
||||
|
||||
|
@ -1,15 +1,17 @@
|
||||
@import url(root.css);
|
||||
|
||||
@import url(reset.css);
|
||||
|
||||
@import url(widgets/buttons.css);
|
||||
|
||||
@import url(widgets/sections.css);
|
||||
|
||||
html {
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
font-family: 'Open Sans',sans-serif;
|
||||
scroll-margin-top: var(--xxl);
|
||||
}
|
||||
|
||||
html,
|
||||
html > * {
|
||||
html,html>* {
|
||||
background-image: url('images/noise.png');
|
||||
background-blend-mode: overlay;
|
||||
}
|
||||
@ -27,7 +29,7 @@ hr {
|
||||
}
|
||||
|
||||
.active {
|
||||
font: 600 1em Poppins, sans-serif;
|
||||
font: 600 1em Poppins,sans-serif;
|
||||
}
|
||||
|
||||
.anchor-hidden {
|
||||
@ -61,8 +63,9 @@ hr {
|
||||
}
|
||||
|
||||
.page-header {
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
background: var(--gradient) !important;
|
||||
background: var(--background-hard);
|
||||
box-shadow: var(--shadow);
|
||||
display: flex;
|
||||
height: var(--xxl);
|
||||
@ -138,7 +141,7 @@ hr {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.panel-left-icon, .panel-right-icon {
|
||||
.panel-left-icon,.panel-right-icon {
|
||||
display: inherit;
|
||||
}
|
||||
|
||||
@ -148,11 +151,13 @@ hr {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 512px) {
|
||||
html {font-size: 75%;} /*12px*/
|
||||
@media only screen and (max-width:512px) {
|
||||
html {
|
||||
font-size: 85%;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1280px) {
|
||||
@media only screen and (max-width:1280px) {
|
||||
.page-header {
|
||||
width: 100%;
|
||||
}
|
||||
@ -174,11 +179,11 @@ hr {
|
||||
top: -100%;
|
||||
}
|
||||
|
||||
#toggle-panel-left:not(:checked) ~ .section-panel-left, #toggle-panel-right:not(:checked) ~ .section-panel-right {
|
||||
#toggle-panel-left:not(:checked) ~ .section-panel-left,#toggle-panel-right:not(:checked) ~ .section-panel-right {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#toggle-panel-left:checked ~ .section-panel-left, #toggle-panel-right:checked ~ .section-panel-right {
|
||||
#toggle-panel-left:checked ~ .section-panel-left,#toggle-panel-right:checked ~ .section-panel-right {
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
z-index: auto;
|
||||
@ -187,12 +192,12 @@ hr {
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1281px) {
|
||||
@media only screen and (min-width:1281px) {
|
||||
.page-header {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
label[for|="toggle-panel"], input[id|="toggle-panel"] {
|
||||
label[for|="toggle-panel"],input[id|="toggle-panel"] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
@ -204,20 +209,20 @@ hr {
|
||||
width: 66vw;
|
||||
}
|
||||
|
||||
a[id|="anchor"]:target + .accessibility-target {
|
||||
a[id|="anchor"]:target+.accessibility-target {
|
||||
animation-duration: 600ms;
|
||||
animation-name: highlight;
|
||||
animation-timing-function: ease-in-out;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1921px) {
|
||||
@media only screen and (min-width:1921px) {
|
||||
.page-header {
|
||||
align-self: center;
|
||||
width: 66vw;
|
||||
}
|
||||
|
||||
label[for|="toggle-panel"], input[id|="toggle-panel"] {
|
||||
label[for|="toggle-panel"],input[id|="toggle-panel"] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
@ -243,6 +248,7 @@ hr {
|
||||
opacity: 0;
|
||||
transform: translateY(-10px);
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: unset;
|
||||
transform: none;
|
||||
@ -254,6 +260,7 @@ hr {
|
||||
opacity: 0;
|
||||
transform: translateY(-10px);
|
||||
}
|
||||
|
||||
0% {
|
||||
opacity: unset;
|
||||
transform: none;
|
||||
@ -265,27 +272,32 @@ hr {
|
||||
border-radius: var(--s);
|
||||
box-shadow: initial;
|
||||
}
|
||||
|
||||
50% {
|
||||
border-radius: var(--s);
|
||||
box-shadow: inset 0 20px 40px #FFF;
|
||||
transition: box-shadow .3s ease-in-out;
|
||||
z-index: 666;
|
||||
}
|
||||
|
||||
100% {
|
||||
border-radius: var(--s);
|
||||
box-shadow: initial;
|
||||
}
|
||||
|
||||
0% {
|
||||
border-radius: var(--s);
|
||||
box-shadow: initial;
|
||||
}
|
||||
|
||||
50% {
|
||||
border-radius: var(--s);
|
||||
box-shadow: inset 0 20px 40px #000;
|
||||
transition: box-shadow .3s ease-in-out;
|
||||
}
|
||||
|
||||
100% {
|
||||
border-radius: var(--s);
|
||||
box-shadow: initial;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,3 @@
|
||||
|
||||
|
||||
.favourite-button-container {
|
||||
-moz-mask-image: url("../icons/heart.svg");
|
||||
-o-mask-image: url("../icons/heart.svg");
|
||||
@ -56,9 +54,8 @@
|
||||
padding: var(--s);
|
||||
}
|
||||
|
||||
.embed .p-author,
|
||||
.embed .p-name {
|
||||
font-weight: 700;
|
||||
.embed .p-author,.embed .p-name {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.embed .p-summary {
|
||||
@ -87,26 +84,19 @@
|
||||
padding: unset;
|
||||
}
|
||||
|
||||
.feed-header > h1,
|
||||
.feed-header > h2,
|
||||
.feed-header > h3,
|
||||
.feed-header > h4,
|
||||
.feed-header > h5,
|
||||
.feed-header > h6 {
|
||||
.feed-header>h1,.feed-header>h2,.feed-header>h3,.feed-header>h4,.feed-header>h5,.feed-header>h6 {
|
||||
margin-bottom: unset;
|
||||
}
|
||||
|
||||
.feed-actions-details summary,
|
||||
.note-actions-extra-details summary {
|
||||
.feed-actions-details summary,.note-actions-extra-details summary {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.feed-actions-details-dropdown {
|
||||
font-size: 0.937rem;
|
||||
font-size: .937rem;
|
||||
}
|
||||
|
||||
.feed-actions-details[open]>.feed-actions-details-dropdown,
|
||||
.note-actions-extra-details[open]>summary+* {
|
||||
.feed-actions-details[open]>.feed-actions-details-dropdown,.note-actions-extra-details[open]>summary+* {
|
||||
background: var(--background-card);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--s);
|
||||
@ -120,8 +110,7 @@
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.feed-actions-details[open]>summary,
|
||||
.note-actions-extra-details[open]>summary {
|
||||
.feed-actions-details[open]>summary,.note-actions-extra-details[open]>summary {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
@ -170,39 +159,35 @@
|
||||
}
|
||||
|
||||
.note-replies-indicator {
|
||||
font-size: 32px;
|
||||
opacity: 0.66;
|
||||
opacity: .66;
|
||||
margin-right: 8px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.note-replies-indicator::before {
|
||||
content: '\201C';
|
||||
font-size: 1em;
|
||||
opacity: 0.66;
|
||||
margin-right: 0.33em;
|
||||
font-size: 1.5em;
|
||||
opacity: .66;
|
||||
}
|
||||
|
||||
.note-replies-parent {
|
||||
opacity: 0.66;
|
||||
font-size: 0.937rem;
|
||||
opacity: .66;
|
||||
font-size: .937rem;
|
||||
}
|
||||
|
||||
.h-entry a:focus {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.h-entry figure,
|
||||
.note-attachments-unit figure {
|
||||
.h-entry figure,.note-attachments-unit figure {
|
||||
background: var(--gradient);
|
||||
border-radius: var(--s);
|
||||
margin: unset;
|
||||
padding: var(--s);
|
||||
}
|
||||
|
||||
.h-entry img,
|
||||
.note-attachments-unit figure img {
|
||||
background: repeating-conic-gradient(#ffffff66 0deg 90deg, #ffffff33 0deg 180deg) 0 0/40px 40px round;
|
||||
.h-entry img,.note-attachments-unit figure img {
|
||||
background: repeating-conic-gradient(#ffffff66 0 90deg,#ffffff33 0 180deg) 0 0/40px 40px round;
|
||||
}
|
||||
|
||||
.h-entry-language {
|
||||
@ -248,8 +233,7 @@
|
||||
margin-right: var(--s);
|
||||
}
|
||||
|
||||
.note-info,
|
||||
embed header {
|
||||
.note-info,embed header {
|
||||
border-bottom: unset;
|
||||
border-radius: 0 var(--s) 0 0;
|
||||
display: flex;
|
||||
@ -259,28 +243,26 @@ embed header {
|
||||
|
||||
.note-info {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
align-items: center;
|
||||
white-space: nowrap;
|
||||
overflow: auto;
|
||||
touch-action: manipulation;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.note-info .note-conversation-info,
|
||||
.note-info .note-author-uri {
|
||||
.note-info .note-conversation-info,.note-info .note-author-uri {
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.note-info small {
|
||||
opacity: 0.5;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.note-author-url {
|
||||
font-weight: 700;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.note-author-uri,
|
||||
.note-conversation-info {
|
||||
.note-author-uri,.note-conversation-info {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@ -307,11 +289,11 @@ embed header {
|
||||
}
|
||||
|
||||
.note-actions-extra-details summary {
|
||||
opacity: 0.5;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.note-actions-extra-details[open]>summary+*>a {
|
||||
font-size: 0.937rem;
|
||||
font-size: .937rem;
|
||||
line-height: 2;
|
||||
}
|
||||
|
||||
@ -327,19 +309,18 @@ embed header {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
font-size: 0.937rem;
|
||||
font-size: .937rem;
|
||||
background: var(--gradient-backwards);
|
||||
padding: 4px 8px;
|
||||
border-radius: var(--s) 0 var(--s) var(--s);
|
||||
}
|
||||
|
||||
.note-complementary:empty,
|
||||
.note-complementary:-moz-only-whitespace {
|
||||
.note-complementary:empty,.note-complementary:-moz-only-whitespace {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.note-complementary-info a {
|
||||
font-weight: 700;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.note-complementary-info span {
|
||||
@ -350,14 +331,11 @@ embed header {
|
||||
.note-content {
|
||||
border-radius: 0 0 var(--s) var(--s);
|
||||
display: block;
|
||||
padding: 0 0 8px 0;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.note-replies-start {
|
||||
font-size: 0.937rem;
|
||||
font-weight: 700;
|
||||
opacity: 0.5;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.hr-replies-end {
|
||||
@ -365,6 +343,10 @@ embed header {
|
||||
margin-bottom: var(--xl);
|
||||
}
|
||||
|
||||
.hr-replies-end:last-of-type {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.note-sidebar {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@ -387,12 +369,6 @@ embed header {
|
||||
text-decoration: underline !important;
|
||||
}
|
||||
|
||||
.note-text p:not(:last-of-type) {
|
||||
display: block;
|
||||
margin-bottom: var(--s);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.note-text-details-summary:after {
|
||||
content: "\2193";
|
||||
}
|
||||
@ -416,8 +392,9 @@ embed header {
|
||||
}
|
||||
|
||||
.posting-extra .h-entry {
|
||||
padding-left: var(--s);
|
||||
padding-right: var(--s);
|
||||
padding: var(--s);
|
||||
border: unset;
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.posting-extra .note-sidebar {
|
||||
@ -432,22 +409,22 @@ embed header {
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1280px) {
|
||||
@media only screen and (max-width:1280px) {
|
||||
.note-sidebar {
|
||||
max-width: min-content !important;
|
||||
}
|
||||
|
||||
.note-sidebar .avatar {
|
||||
min-width: var(--xl) !important;
|
||||
}
|
||||
|
||||
.note-replies .note-replies {
|
||||
margin-left: 0.33em;
|
||||
margin-left: .33em;
|
||||
}
|
||||
|
||||
.note-replies-indicator::before {
|
||||
content: '\201C';
|
||||
font-size: 1em;
|
||||
opacity: 0.66;
|
||||
margin-right: 0.33em;
|
||||
opacity: .66;
|
||||
}
|
||||
}
|
||||
}
|
@ -3,24 +3,24 @@
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
body, html {
|
||||
body,html {
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
background-attachment: fixed;
|
||||
background-color: var(--background-hard);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-family: "var(--unit) 'Open Sans'", sans-serif;
|
||||
font-family: "var(--unit) 'Open Sans'",sans-serif;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
body, input, select, textarea {
|
||||
body,input,select,textarea {
|
||||
color: var(--foreground);
|
||||
}
|
||||
|
||||
:link, :visited {
|
||||
:link,:visited {
|
||||
color: currentColor;
|
||||
text-decoration: none;
|
||||
}
|
||||
@ -32,13 +32,13 @@ hr {
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
menu, ul {
|
||||
menu,ul {
|
||||
list-style: none;
|
||||
margin: unset;
|
||||
padding: unset;
|
||||
}
|
||||
|
||||
blockquote, body, fieldset, form, html, input, pre, textarea {
|
||||
blockquote,body,fieldset,form,html,input,pre,textarea {
|
||||
border: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
@ -48,7 +48,7 @@ fieldset {
|
||||
all: unset;
|
||||
}
|
||||
|
||||
:link img, :visited img, a img {
|
||||
:link img,:visited img,a img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
@ -68,16 +68,16 @@ details summary {
|
||||
cursor: pointer !important;
|
||||
}
|
||||
|
||||
details summary > * {
|
||||
details summary>* {
|
||||
margin: unset;
|
||||
padding: unset;
|
||||
}
|
||||
|
||||
details > summary {
|
||||
details>summary {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
details > summary::-webkit-details-marker {
|
||||
details>summary::-webkit-details-marker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@ -85,53 +85,67 @@ details > summary::-webkit-details-marker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
html {font-size: 100%;} /*12px*/
|
||||
html {
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
font-family: 'Open Sans',sans-serif;
|
||||
font-weight: 400;
|
||||
line-height: 1.75;
|
||||
}
|
||||
|
||||
p {
|
||||
all: unset;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
margin-bottom: 1rem;
|
||||
margin-top: 4px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
h1:first-child, h2:first-child, h3:first-child, h4:first-child, h5:first-child, legend:first-child {
|
||||
margin-top: initial;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5 {
|
||||
h1,h2,h3,h4,h5 {
|
||||
margin: 3rem 0 1.38rem;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
font-weight: 900;
|
||||
font-family: 'Poppins',sans-serif;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,legend:first-child {
|
||||
margin-top: initial;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-top: 0;
|
||||
font-size: 1.383rem;
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
h2 {font-size: 1.296rem;}
|
||||
|
||||
h3 {font-size: 1.215rem;}
|
||||
|
||||
h4 {font-size: 1.138rem;}
|
||||
|
||||
h5 {font-size: 1.067rem;}
|
||||
|
||||
small, .text_small {font-size: 0.937rem;}
|
||||
|
||||
legend {
|
||||
font-size: 1.25rem;
|
||||
h2 {
|
||||
font-size: 1.296rem;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
input[type=password], input[type=text], textarea {
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
font-weight: 400;
|
||||
h3 {
|
||||
font-size: 1.215rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1.138rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.067rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
small,.text_small {
|
||||
font-size: .937rem;
|
||||
}
|
||||
|
||||
legend,label {
|
||||
font-size: 1.067rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
input[type=password],input[type=text],textarea {
|
||||
padding: 6px 8px;
|
||||
}
|
||||
|
||||
@ -147,7 +161,7 @@ li {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a:focus, a:hover {
|
||||
a:focus,a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,4 @@
|
||||
label {
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
input + label {
|
||||
input+label {
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
@ -11,7 +7,7 @@ input[type=file] {
|
||||
background: var(--gradient) !important;
|
||||
border-radius: var(--s);
|
||||
display: block;
|
||||
font-family: 'Open Sans', sans-serif !important;
|
||||
font-family: 'Open Sans',sans-serif !important;
|
||||
font-weight: 400 !important;
|
||||
padding: unset !important;
|
||||
}
|
||||
@ -22,7 +18,7 @@ input[type=file] {
|
||||
color: var(--foreground);
|
||||
cursor: pointer;
|
||||
fill: var(--foreground);
|
||||
font-family: 'Open Sans', sans-serif !important;
|
||||
font-family: 'Open Sans',sans-serif !important;
|
||||
font-weight: 900 !important;
|
||||
margin: 3px;
|
||||
}
|
||||
@ -31,33 +27,13 @@ input[type=file] {
|
||||
all: unset !important;
|
||||
}
|
||||
|
||||
button {
|
||||
cursor: pointer !important;
|
||||
display: block !important;
|
||||
margin-left: auto !important;
|
||||
margin-top: var(--s);
|
||||
}
|
||||
|
||||
.alert button {
|
||||
border-color: #ff6347 !important;
|
||||
cursor: pointer !important;
|
||||
margin-top: unset !important;
|
||||
}
|
||||
|
||||
button, label {
|
||||
color: currentColor;
|
||||
}
|
||||
button {
|
||||
font-family: 'Poppins', sans-serif;
|
||||
font-weight: 900 !important;
|
||||
}
|
||||
|
||||
select::-ms-expand {
|
||||
display: none;
|
||||
}
|
||||
|
||||
button, input, select, textarea {
|
||||
font-size: inherit;
|
||||
button,input,select,textarea {
|
||||
font-family: 'Open Sans',sans-serif !important;
|
||||
font-size: 1rem;
|
||||
border: 1px solid var(--border) !important;
|
||||
border-radius: var(--s);
|
||||
max-width: border-box;
|
||||
@ -66,16 +42,36 @@ button, input, select, textarea {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
button, select, textarea {
|
||||
button,select,textarea {
|
||||
background: var(--gradient) !important;
|
||||
}
|
||||
|
||||
button, input {
|
||||
button,input {
|
||||
background: var(--gradient) !important;
|
||||
}
|
||||
|
||||
input[type=radio],
|
||||
input[type=checkbox] {
|
||||
button {
|
||||
cursor: pointer !important;
|
||||
display: block !important;
|
||||
margin-left: auto !important;
|
||||
}
|
||||
|
||||
.alert button {
|
||||
border-color: #ff6347 !important;
|
||||
cursor: pointer !important;
|
||||
margin-top: unset !important;
|
||||
}
|
||||
|
||||
button,label {
|
||||
color: currentColor;
|
||||
}
|
||||
|
||||
button {
|
||||
font-family: 'Poppins',sans-serif !important;
|
||||
font-weight: 900 !important;
|
||||
}
|
||||
|
||||
input[type=radio],input[type=checkbox] {
|
||||
background: initial;
|
||||
}
|
||||
|
||||
@ -87,39 +83,37 @@ select {
|
||||
}
|
||||
|
||||
select[multiple] {
|
||||
height: 20rem;
|
||||
height: 8rem;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
button:focus, button:hover, input:focus, input:hover, select:focus, select:hover, textarea:focus, textarea:hover {
|
||||
button:focus,button:hover,input:focus,input:hover,select:focus,select:hover,textarea:focus,textarea:hover {
|
||||
box-shadow: var(--shadow-inset-accent);
|
||||
}
|
||||
|
||||
input[type=color] {
|
||||
appearance: none;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
border: 0;
|
||||
cursor: pointer;
|
||||
height: var(--xxl);
|
||||
width: var(--xxl);
|
||||
}
|
||||
|
||||
input[type=color]::-webkit-color-swatch {
|
||||
border: none;
|
||||
border: 0;
|
||||
border-radius: var(--s);
|
||||
}
|
||||
|
||||
input[type=color]::-moz-color-swatch {
|
||||
border: none;
|
||||
border: 0;
|
||||
border-radius: var(--s);
|
||||
}
|
||||
|
||||
input[type=checkbox]:focus,
|
||||
input[type=checkbox]:hover {
|
||||
input[type=checkbox]:focus,input[type=checkbox]:hover {
|
||||
outline: 2px solid var(--accent);
|
||||
}
|
||||
|
||||
input[type=checkbox]
|
||||
{
|
||||
input[type=checkbox] {
|
||||
accent-color: var(--accent);
|
||||
}
|
@ -5,7 +5,7 @@
|
||||
mask-image: url(../icons/add-actor.svg);
|
||||
}
|
||||
|
||||
.alert, .alert-danger, .form-error, .form-row-widget-error {
|
||||
.alert,.alert-danger,.form-error,.form-row-widget-error {
|
||||
align-items: center;
|
||||
background-color: #FF634733;
|
||||
border: solid 2px #ff6347;
|
||||
@ -39,7 +39,7 @@
|
||||
opacity: .33;
|
||||
}
|
||||
|
||||
.button-container:focus, .button-container:hover {
|
||||
.button-container:focus,.button-container:hover {
|
||||
background-color: var(--accent);
|
||||
border: none !important;
|
||||
mask-repeat: no-repeat !important;
|
||||
@ -58,20 +58,20 @@
|
||||
.container-grid {
|
||||
display: grid;
|
||||
gap: var(--s);
|
||||
grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));
|
||||
grid-template-columns: repeat(auto-fit,minmax(200px,1fr));
|
||||
}
|
||||
|
||||
.details-subtitle-summary + * {
|
||||
.details-subtitle-summary+* {
|
||||
background: var(--gradient);
|
||||
border-radius: var(--s);
|
||||
padding: 2px 8px;
|
||||
}
|
||||
|
||||
.details-subtitle-summary a, .details-title-summary a {
|
||||
.details-subtitle-summary a,.details-title-summary a {
|
||||
line-height: initial;
|
||||
}
|
||||
|
||||
.details-subtitle-summary svg:last-child, .details-title-summary svg:last-child {
|
||||
.details-subtitle-summary svg:last-child,.details-title-summary svg:last-child {
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
@ -110,18 +110,18 @@
|
||||
padding: unset !important;
|
||||
}
|
||||
|
||||
.form-search .form-row {
|
||||
margin-bottom: unset;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.form-search label {
|
||||
.form-search span label {
|
||||
display: block;
|
||||
height: 0;
|
||||
opacity: 0;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
.form-search span .form-row {
|
||||
margin-bottom: unset;
|
||||
flex: 2;
|
||||
}
|
||||
|
||||
.form-search span {
|
||||
display: inline-flex;
|
||||
width: 100%;
|
||||
@ -133,6 +133,7 @@
|
||||
border-top-left-radius: 0;
|
||||
height: 100%;
|
||||
margin: unset;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.form-search span input[type='text'] {
|
||||
@ -149,7 +150,7 @@
|
||||
box-shadow: var(--shadow);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-bottom: var(--m);
|
||||
margin-bottom: var(--s);
|
||||
}
|
||||
|
||||
.frame-section hr {
|
||||
@ -162,7 +163,7 @@
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--s);
|
||||
display: block;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
font-family: 'Poppins',sans-serif;
|
||||
font-weight: 900;
|
||||
padding: 6px 8px;
|
||||
width: max-content;
|
||||
@ -174,7 +175,7 @@
|
||||
|
||||
.frame-section-paging {
|
||||
display: block;
|
||||
font-family: 'Poppins', sans-serif;
|
||||
font-family: 'Poppins',sans-serif;
|
||||
font-weight: 900;
|
||||
margin-left: auto;
|
||||
margin-top: var(--s);
|
||||
@ -189,7 +190,7 @@
|
||||
background: var(--gradient) !important;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--s);
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
font-family: 'Open Sans',sans-serif;
|
||||
margin-bottom: var(--s);
|
||||
padding: var(--unit);
|
||||
}
|
||||
@ -205,12 +206,12 @@
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.profile-bio, .profile-info-url {
|
||||
.profile-bio,.profile-info-url {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.profile-extra-actions {
|
||||
background: var(--gradient), var(--background-hard);
|
||||
background: var(--gradient),var(--background-hard);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--s);
|
||||
display: inline-block;
|
||||
@ -237,7 +238,7 @@
|
||||
display: block;
|
||||
}
|
||||
|
||||
.profile-info-url > * {
|
||||
.profile-info-url>* {
|
||||
display: block;
|
||||
}
|
||||
|
||||
@ -250,7 +251,7 @@
|
||||
opacity: .66;
|
||||
}
|
||||
|
||||
.profile-navigation > * {
|
||||
.profile-navigation>* {
|
||||
display: block;
|
||||
}
|
||||
|
||||
@ -261,11 +262,11 @@
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.profile-stats-subscribers strong, .profile-stats-subscriptions strong {
|
||||
.profile-stats-subscribers strong,.profile-stats-subscriptions strong {
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.profile-stats-subscribers, .profile-stats-subscriptions {
|
||||
.profile-stats-subscribers,.profile-stats-subscriptions {
|
||||
display: block;
|
||||
}
|
||||
|
||||
@ -280,6 +281,10 @@
|
||||
mask-image: url(../icons/remove-actor.svg);
|
||||
}
|
||||
|
||||
section {
|
||||
margin-bottom: var(--s);
|
||||
}
|
||||
|
||||
.section-details-subtitle .section-details-subtitle:not(:last-of-type) {
|
||||
margin-bottom: var(--s);
|
||||
}
|
||||
@ -288,28 +293,24 @@
|
||||
padding: 2px 8px;
|
||||
}
|
||||
|
||||
.section-details-subtitle summary > *, .section-details-title summary > * {
|
||||
.section-details-subtitle summary>*,.section-details-title summary>* {
|
||||
display: inline-flex;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.section-details-subtitle summary > :last-child, .section-details-title summary > :last-child {
|
||||
.section-details-subtitle summary>:last-child,.section-details-title summary>:last-child {
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.section-details-subtitle summary, .section-details-title summary {
|
||||
.section-details-subtitle summary,.section-details-title summary {
|
||||
background: var(--gradient);
|
||||
border-radius: var(--s);
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.section-details-title summary {
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.section-details-subtitle summary {
|
||||
border: 1px solid var(--border);
|
||||
.section-details-subtitle:not(:last-of-type) {
|
||||
margin-bottom: var(--s);
|
||||
}
|
||||
|
||||
.details-summary-title {
|
||||
@ -318,6 +319,7 @@
|
||||
font-weight: 900;
|
||||
padding: 6px 8px;
|
||||
}
|
||||
|
||||
.details-summary-subtitle {
|
||||
font-size: 1em;
|
||||
font-weight: bold;
|
||||
@ -334,6 +336,7 @@
|
||||
position: relative;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.details-summary-subtitle:after {
|
||||
content: "\2191";
|
||||
display: block;
|
||||
@ -341,23 +344,23 @@
|
||||
float: right;
|
||||
}
|
||||
|
||||
.section-details-subtitle:not([open]) > .details-summary-subtitle:after {
|
||||
animation: fadeOut 200ms cubic-bezier(0, 0.55, 0.45, 1);
|
||||
.section-details-subtitle:not([open])>.details-summary-subtitle:after {
|
||||
animation: fadeOut 200ms cubic-bezier(0,0.55,0.45,1);
|
||||
content: "\2193";
|
||||
}
|
||||
|
||||
.section-details-subtitle[open] > .details-summary-subtitle:after {
|
||||
animation: fadeIn 200ms cubic-bezier(0, 0.55, 0.45, 1);
|
||||
.section-details-subtitle[open]>.details-summary-subtitle:after {
|
||||
animation: fadeIn 200ms cubic-bezier(0,0.55,0.45,1);
|
||||
transform: initial;
|
||||
}
|
||||
|
||||
.section-details-title:not([open]) > .details-summary-title:after {
|
||||
animation: fadeIn 200ms cubic-bezier(0, 0.55, 0.45, 1);
|
||||
.section-details-title:not([open])>.details-summary-title:after {
|
||||
animation: fadeIn 200ms cubic-bezier(0,0.55,0.45,1);
|
||||
transform: initial;
|
||||
}
|
||||
|
||||
.section-details-title[open] > .details-summary-title:after {
|
||||
animation: fadeOut 200ms cubic-bezier(0, 0.55, 0.45, 1);
|
||||
.section-details-title[open]>.details-summary-title:after {
|
||||
animation: fadeOut 200ms cubic-bezier(0,0.55,0.45,1);
|
||||
content: "\2191";
|
||||
}
|
||||
|
||||
@ -377,7 +380,17 @@
|
||||
}
|
||||
|
||||
.section-title {
|
||||
margin-bottom: unset;
|
||||
margin: 0 0 1.38rem;
|
||||
}
|
||||
|
||||
.section-checkbox-flex {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.section-checkbox-flex>* {
|
||||
margin-right: var(--m);
|
||||
}
|
||||
|
||||
textarea.form-row-widget {
|
||||
|
475
templates/cards/forms/form_raw_layout.html.twig
Normal file
475
templates/cards/forms/form_raw_layout.html.twig
Normal file
@ -0,0 +1,475 @@
|
||||
{# Widgets #}
|
||||
|
||||
{%- block form_widget -%}
|
||||
{% if compound %}
|
||||
{{- block('form_widget_compound') -}}
|
||||
{% else %}
|
||||
{{- block('form_widget_simple') -}}
|
||||
{% endif %}
|
||||
{%- endblock form_widget -%}
|
||||
|
||||
{%- block form_widget_simple -%}
|
||||
{%- set type = type|default('text') -%}
|
||||
{%- if type == 'range' or type == 'color' -%}
|
||||
{# Attribute "required" is not supported #}
|
||||
{%- set required = false -%}
|
||||
{%- endif -%}
|
||||
<input type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/>
|
||||
{%- endblock form_widget_simple -%}
|
||||
|
||||
{%- block form_widget_compound -%}
|
||||
<div {{ block('widget_container_attributes') }}>
|
||||
{%- if form is rootform -%}
|
||||
{{ form_errors(form) }}
|
||||
{%- endif -%}
|
||||
{{- block('form_rows') -}}
|
||||
{{- form_rest(form) -}}
|
||||
</div>
|
||||
{%- endblock form_widget_compound -%}
|
||||
|
||||
{%- block collection_widget -%}
|
||||
{% if prototype is defined and not prototype.rendered %}
|
||||
{%- set attr = attr|merge({'data-prototype': form_row(prototype) }) -%}
|
||||
{% endif %}
|
||||
{{- block('form_widget') -}}
|
||||
{%- endblock collection_widget -%}
|
||||
|
||||
{%- block textarea_widget -%}
|
||||
<textarea {{ block('widget_attributes') }}>{{ value }}</textarea>
|
||||
{%- endblock textarea_widget -%}
|
||||
|
||||
{%- block choice_widget -%}
|
||||
{% if expanded %}
|
||||
{{- block('choice_widget_expanded') -}}
|
||||
{% else %}
|
||||
{{- block('choice_widget_collapsed') -}}
|
||||
{% endif %}
|
||||
{%- endblock choice_widget -%}
|
||||
|
||||
{%- block choice_widget_expanded -%}
|
||||
<div {{ block('widget_container_attributes') }}>
|
||||
{%- for child in form %}
|
||||
{{- form_widget(child) -}}
|
||||
{{- form_label(child, null, {translation_domain: choice_translation_domain}) -}}
|
||||
{% endfor -%}
|
||||
</div>
|
||||
{%- endblock choice_widget_expanded -%}
|
||||
|
||||
{%- block choice_widget_collapsed -%}
|
||||
{%- if required and placeholder is none and not placeholder_in_choices and not multiple and (attr.size is not defined or attr.size <= 1) -%}
|
||||
{% set required = false %}
|
||||
{%- endif -%}
|
||||
<select {{ block('widget_attributes') }}{% if multiple %} multiple="multiple"{% endif %}>
|
||||
{%- if placeholder is not none -%}
|
||||
<option value=""{% if required and value is empty %} selected="selected"{% endif %}>{{ placeholder != '' ? (translation_domain is same as(false) ? placeholder : placeholder|trans({}, translation_domain)) }}</option>
|
||||
{%- endif -%}
|
||||
{%- if preferred_choices|length > 0 -%}
|
||||
{% set options = preferred_choices %}
|
||||
{% set render_preferred_choices = true %}
|
||||
{{- block('choice_widget_options') -}}
|
||||
{%- if choices|length > 0 and separator is not none -%}
|
||||
<option disabled="disabled">{{ separator }}</option>
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{%- set options = choices -%}
|
||||
{%- set render_preferred_choices = false -%}
|
||||
{{- block('choice_widget_options') -}}
|
||||
</select>
|
||||
{%- endblock choice_widget_collapsed -%}
|
||||
|
||||
{%- block choice_widget_options -%}
|
||||
{% for group_label, choice in options %}
|
||||
{%- if choice is iterable -%}
|
||||
<optgroup label="{{ choice_translation_domain is same as(false) ? group_label : group_label|trans({}, choice_translation_domain) }}">
|
||||
{% set options = choice %}
|
||||
{{- block('choice_widget_options') -}}
|
||||
</optgroup>
|
||||
{%- else -%}
|
||||
<option value="{{ choice.value }}"{% if choice.attr %}{% with { attr: choice.attr } %}{{ block('attributes') }}{% endwith %}{% endif %}{% if not render_preferred_choices|default(false) and choice is selectedchoice(value) %} selected="selected"{% endif %}>{{ choice_translation_domain is same as(false) ? choice.label : choice.label|trans(choice.labelTranslationParameters, choice_translation_domain) }}</option>
|
||||
{%- endif -%}
|
||||
{% endfor %}
|
||||
{%- endblock choice_widget_options -%}
|
||||
|
||||
{%- block checkbox_widget -%}
|
||||
<input type="checkbox" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
|
||||
{%- endblock checkbox_widget -%}
|
||||
|
||||
{%- block radio_widget -%}
|
||||
<input type="radio" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
|
||||
{%- endblock radio_widget -%}
|
||||
|
||||
{%- block datetime_widget -%}
|
||||
{% if widget == 'single_text' %}
|
||||
{{- block('form_widget_simple') -}}
|
||||
{%- else -%}
|
||||
<div {{ block('widget_container_attributes') }}>
|
||||
{{- form_errors(form.date) -}}
|
||||
{{- form_errors(form.time) -}}
|
||||
{{- form_widget(form.date) -}}
|
||||
{{- form_widget(form.time) -}}
|
||||
</div>
|
||||
{%- endif -%}
|
||||
{%- endblock datetime_widget -%}
|
||||
|
||||
{%- block date_widget -%}
|
||||
{%- if widget == 'single_text' -%}
|
||||
{{ block('form_widget_simple') }}
|
||||
{%- else -%}
|
||||
<div {{ block('widget_container_attributes') }}>
|
||||
{{- date_pattern|replace({
|
||||
'{{ year }}': form_widget(form.year),
|
||||
'{{ month }}': form_widget(form.month),
|
||||
'{{ day }}': form_widget(form.day),
|
||||
})|raw -}}
|
||||
</div>
|
||||
{%- endif -%}
|
||||
{%- endblock date_widget -%}
|
||||
|
||||
{%- block time_widget -%}
|
||||
{%- if widget == 'single_text' -%}
|
||||
{{ block('form_widget_simple') }}
|
||||
{%- else -%}
|
||||
{%- set vars = widget == 'text' ? { 'attr': { 'size': 1 }} : {} -%}
|
||||
<div {{ block('widget_container_attributes') }}>
|
||||
{{ form_widget(form.hour, vars) }}{% if with_minutes %}:{{ form_widget(form.minute, vars) }}{% endif %}{% if with_seconds %}:{{ form_widget(form.second, vars) }}{% endif %}
|
||||
</div>
|
||||
{%- endif -%}
|
||||
{%- endblock time_widget -%}
|
||||
|
||||
{%- block dateinterval_widget -%}
|
||||
{%- if widget == 'single_text' -%}
|
||||
{{- block('form_widget_simple') -}}
|
||||
{%- else -%}
|
||||
<div {{ block('widget_container_attributes') }}>
|
||||
{{- form_errors(form) -}}
|
||||
<table class="{{ table_class|default('') }}" role="presentation">
|
||||
<thead>
|
||||
<tr>
|
||||
{%- if with_years %}<th>{{ form_label(form.years) }}</th>{% endif -%}
|
||||
{%- if with_months %}<th>{{ form_label(form.months) }}</th>{% endif -%}
|
||||
{%- if with_weeks %}<th>{{ form_label(form.weeks) }}</th>{% endif -%}
|
||||
{%- if with_days %}<th>{{ form_label(form.days) }}</th>{% endif -%}
|
||||
{%- if with_hours %}<th>{{ form_label(form.hours) }}</th>{% endif -%}
|
||||
{%- if with_minutes %}<th>{{ form_label(form.minutes) }}</th>{% endif -%}
|
||||
{%- if with_seconds %}<th>{{ form_label(form.seconds) }}</th>{% endif -%}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
{%- if with_years %}<td>{{ form_widget(form.years) }}</td>{% endif -%}
|
||||
{%- if with_months %}<td>{{ form_widget(form.months) }}</td>{% endif -%}
|
||||
{%- if with_weeks %}<td>{{ form_widget(form.weeks) }}</td>{% endif -%}
|
||||
{%- if with_days %}<td>{{ form_widget(form.days) }}</td>{% endif -%}
|
||||
{%- if with_hours %}<td>{{ form_widget(form.hours) }}</td>{% endif -%}
|
||||
{%- if with_minutes %}<td>{{ form_widget(form.minutes) }}</td>{% endif -%}
|
||||
{%- if with_seconds %}<td>{{ form_widget(form.seconds) }}</td>{% endif -%}
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
{%- if with_invert %}{{ form_widget(form.invert) }}{% endif -%}
|
||||
</div>
|
||||
{%- endif -%}
|
||||
{%- endblock dateinterval_widget -%}
|
||||
|
||||
{%- block number_widget -%}
|
||||
{# type="number" doesn't work with floats in localized formats #}
|
||||
{%- set type = type|default('text') -%}
|
||||
{{ block('form_widget_simple') }}
|
||||
{%- endblock number_widget -%}
|
||||
|
||||
{%- block integer_widget -%}
|
||||
{%- set type = type|default('number') -%}
|
||||
{{ block('form_widget_simple') }}
|
||||
{%- endblock integer_widget -%}
|
||||
|
||||
{%- block money_widget -%}
|
||||
{{ money_pattern|form_encode_currency(block('form_widget_simple')) }}
|
||||
{%- endblock money_widget -%}
|
||||
|
||||
{%- block url_widget -%}
|
||||
{%- set type = type|default('url') -%}
|
||||
{{ block('form_widget_simple') }}
|
||||
{%- endblock url_widget -%}
|
||||
|
||||
{%- block search_widget -%}
|
||||
{%- set type = type|default('search') -%}
|
||||
{{ block('form_widget_simple') }}
|
||||
{%- endblock search_widget -%}
|
||||
|
||||
{%- block percent_widget -%}
|
||||
{%- set type = type|default('text') -%}
|
||||
{{ block('form_widget_simple') }}{% if symbol %} {{ symbol|default('%') }}{% endif %}
|
||||
{%- endblock percent_widget -%}
|
||||
|
||||
{%- block password_widget -%}
|
||||
{%- set type = type|default('password') -%}
|
||||
{{ block('form_widget_simple') }}
|
||||
{%- endblock password_widget -%}
|
||||
|
||||
{%- block hidden_widget -%}
|
||||
{%- set type = type|default('hidden') -%}
|
||||
{{ block('form_widget_simple') }}
|
||||
{%- endblock hidden_widget -%}
|
||||
|
||||
{%- block email_widget -%}
|
||||
{%- set type = type|default('email') -%}
|
||||
{{ block('form_widget_simple') }}
|
||||
{%- endblock email_widget -%}
|
||||
|
||||
{%- block range_widget -%}
|
||||
{% set type = type|default('range') %}
|
||||
{{- block('form_widget_simple') -}}
|
||||
{%- endblock range_widget %}
|
||||
|
||||
{%- block button_widget -%}
|
||||
{%- if label is empty -%}
|
||||
{%- if label_format is not empty -%}
|
||||
{% set label = label_format|replace({
|
||||
'%name%': name,
|
||||
'%id%': id,
|
||||
}) %}
|
||||
{%- elseif label is not same as(false) -%}
|
||||
{% set label = name|humanize %}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
<button type="{{ type|default('button') }}" {{ block('button_attributes') }}>
|
||||
{%- if translation_domain is same as(false) -%}
|
||||
{%- if label_html is same as(false) -%}
|
||||
{{- label -}}
|
||||
{%- else -%}
|
||||
{{- label|raw -}}
|
||||
{%- endif -%}
|
||||
{%- else -%}
|
||||
{%- if label_html is same as(false) -%}
|
||||
{{- label|trans(label_translation_parameters, translation_domain) -}}
|
||||
{%- else -%}
|
||||
{{- label|trans(label_translation_parameters, translation_domain)|raw -}}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
</button>
|
||||
{%- endblock button_widget -%}
|
||||
|
||||
{%- block submit_widget -%}
|
||||
{%- set type = type|default('submit') -%}
|
||||
{{ block('button_widget') }}
|
||||
{%- endblock submit_widget -%}
|
||||
|
||||
{%- block reset_widget -%}
|
||||
{%- set type = type|default('reset') -%}
|
||||
{{ block('button_widget') }}
|
||||
{%- endblock reset_widget -%}
|
||||
|
||||
{%- block tel_widget -%}
|
||||
{%- set type = type|default('tel') -%}
|
||||
{{ block('form_widget_simple') }}
|
||||
{%- endblock tel_widget -%}
|
||||
|
||||
{%- block color_widget -%}
|
||||
{%- set type = type|default('color') -%}
|
||||
{{ block('form_widget_simple') }}
|
||||
{%- endblock color_widget -%}
|
||||
|
||||
{%- block week_widget -%}
|
||||
{%- if widget == 'single_text' -%}
|
||||
{{ block('form_widget_simple') }}
|
||||
{%- else -%}
|
||||
{%- set vars = widget == 'text' ? { 'attr': { 'size': 1 }} : {} -%}
|
||||
<div {{ block('widget_container_attributes') }}>
|
||||
{{ form_widget(form.year, vars) }}-{{ form_widget(form.week, vars) }}
|
||||
</div>
|
||||
{%- endif -%}
|
||||
{%- endblock week_widget -%}
|
||||
|
||||
{# Labels #}
|
||||
|
||||
{%- block form_label -%}
|
||||
{% if label is not same as(false) -%}
|
||||
{% if not compound -%}
|
||||
{% set label_attr = label_attr|merge({'for': id}) %}
|
||||
{%- endif -%}
|
||||
{% if required -%}
|
||||
{% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %}
|
||||
{%- endif -%}
|
||||
{% if label is empty -%}
|
||||
{%- if label_format is not empty -%}
|
||||
{% set label = label_format|replace({
|
||||
'%name%': name,
|
||||
'%id%': id,
|
||||
}) %}
|
||||
{%- else -%}
|
||||
{% set label = name|humanize %}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
<{{ element|default('label') }}{% if label_attr %}{% with { attr: label_attr } %}{{ block('attributes') }}{% endwith %}{% endif %}>
|
||||
{%- if translation_domain is same as(false) -%}
|
||||
{%- if label_html is same as(false) -%}
|
||||
{{- label -}}
|
||||
{%- else -%}
|
||||
{{- label|raw -}}
|
||||
{%- endif -%}
|
||||
{%- else -%}
|
||||
{%- if label_html is same as(false) -%}
|
||||
{{- label|trans(label_translation_parameters, translation_domain) -}}
|
||||
{%- else -%}
|
||||
{{- label|trans(label_translation_parameters, translation_domain)|raw -}}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
</{{ element|default('label') }}>
|
||||
{%- endif -%}
|
||||
{%- endblock form_label -%}
|
||||
|
||||
{%- block button_label -%}{%- endblock -%}
|
||||
|
||||
{# Help #}
|
||||
|
||||
{% block form_help -%}
|
||||
{%- if help is not empty -%}
|
||||
{%- set help_attr = help_attr|merge({class: (help_attr.class|default('') ~ ' help-text')|trim}) -%}
|
||||
<p id="{{ id }}_help"{% with { attr: help_attr } %}{{ block('attributes') }}{% endwith %}>
|
||||
{%- if translation_domain is same as(false) -%}
|
||||
{%- if help_html is same as(false) -%}
|
||||
{{- help -}}
|
||||
{%- else -%}
|
||||
{{- help|raw -}}
|
||||
{%- endif -%}
|
||||
{%- else -%}
|
||||
{%- if help_html is same as(false) -%}
|
||||
{{- help|trans(help_translation_parameters, translation_domain) -}}
|
||||
{%- else -%}
|
||||
{{- help|trans(help_translation_parameters, translation_domain)|raw -}}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
</p>
|
||||
{%- endif -%}
|
||||
{%- endblock form_help %}
|
||||
|
||||
{# Rows #}
|
||||
|
||||
{%- block repeated_row -%}
|
||||
{#
|
||||
No need to render the errors here, as all errors are mapped
|
||||
to the first child (see RepeatedTypeValidatorExtension).
|
||||
#}
|
||||
{{- block('form_rows') -}}
|
||||
{%- endblock repeated_row -%}
|
||||
|
||||
{%- block form_row -%}
|
||||
{%- set widget_attr = {} -%}
|
||||
{%- if help is not empty -%}
|
||||
{%- set widget_attr = {attr: {'aria-describedby': id ~"_help"}} -%}
|
||||
{%- endif -%}
|
||||
<div{% with {attr: row_attr} %}{{ block('attributes') }}{% endwith %}>
|
||||
{{- form_label(form) -}}
|
||||
{{- form_errors(form) -}}
|
||||
{{- form_widget(form, widget_attr) -}}
|
||||
{{- form_help(form) -}}
|
||||
</div>
|
||||
{%- endblock form_row -%}
|
||||
|
||||
{%- block button_row -%}
|
||||
{%- set widget_attr = {} -%}
|
||||
{{- form_widget(form, {'attr': widget_attr}) -}}
|
||||
{%- endblock button_row -%}
|
||||
|
||||
{%- block hidden_row -%}
|
||||
{{ form_widget(form) }}
|
||||
{%- endblock hidden_row -%}
|
||||
|
||||
{# Misc #}
|
||||
|
||||
{%- block form -%}
|
||||
{{ form_start(form) }}
|
||||
{{- form_widget(form) -}}
|
||||
{{ form_end(form) }}
|
||||
{%- endblock form -%}
|
||||
|
||||
{%- block form_start -%}
|
||||
{%- do form.setMethodRendered() -%}
|
||||
{% set method = method|upper %}
|
||||
{%- if method in ["GET", "POST"] -%}
|
||||
{% set form_method = method %}
|
||||
{%- else -%}
|
||||
{% set form_method = "POST" %}
|
||||
{%- endif -%}
|
||||
<form{% if name != '' %} name="{{ name }}"{% endif %} method="{{ form_method|lower }}"{% if action != '' %} action="{{ action }}"{% endif %}{{ block('attributes') }}{% if multipart %} enctype="multipart/form-data"{% endif %}>
|
||||
{%- if form_method != method -%}
|
||||
<input type="hidden" name="_method" value="{{ method }}" />
|
||||
{%- endif -%}
|
||||
{%- endblock form_start -%}
|
||||
|
||||
{%- block form_end -%}
|
||||
{%- if not render_rest is defined or render_rest -%}
|
||||
{{ form_rest(form) }}
|
||||
{%- endif -%}
|
||||
</form>
|
||||
{%- endblock form_end -%}
|
||||
|
||||
{%- block form_errors -%}
|
||||
{%- if errors|length > 0 -%}
|
||||
<ul>
|
||||
{%- for error in errors -%}
|
||||
<li>{{ error.message }}</li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
{%- endif -%}
|
||||
{%- endblock form_errors -%}
|
||||
|
||||
{%- block form_rest -%}
|
||||
{% for child in form -%}
|
||||
{% if not child.rendered %}
|
||||
{{- form_row(child) -}}
|
||||
{% endif %}
|
||||
{%- endfor -%}
|
||||
|
||||
{% if not form.methodRendered and form is rootform %}
|
||||
{%- do form.setMethodRendered() -%}
|
||||
{% set method = method|upper %}
|
||||
{%- if method in ["GET", "POST"] -%}
|
||||
{% set form_method = method %}
|
||||
{%- else -%}
|
||||
{% set form_method = "POST" %}
|
||||
{%- endif -%}
|
||||
|
||||
{%- if form_method != method -%}
|
||||
<input type="hidden" name="_method" value="{{ method }}" />
|
||||
{%- endif -%}
|
||||
{% endif -%}
|
||||
{% endblock form_rest %}
|
||||
|
||||
{# Support #}
|
||||
|
||||
{%- block form_rows -%}
|
||||
{% for child in form|filter(child => not child.rendered) %}
|
||||
{{- form_row(child) -}}
|
||||
{% endfor %}
|
||||
{%- endblock form_rows -%}
|
||||
|
||||
{%- block widget_attributes -%}
|
||||
id="{{ id }}" name="{{ full_name }}"
|
||||
{%- if disabled %} disabled="disabled"{% endif -%}
|
||||
{%- if required %} required="required"{% endif -%}
|
||||
{{ block('attributes') }}
|
||||
{%- endblock widget_attributes -%}
|
||||
|
||||
{%- block widget_container_attributes -%}
|
||||
{%- if id is not empty %}id="{{ id }}"{% endif -%}
|
||||
{{ block('attributes') }}
|
||||
{%- endblock widget_container_attributes -%}
|
||||
|
||||
{%- block button_attributes -%}
|
||||
id="{{ id }}" name="{{ full_name }}"{% if disabled %} disabled="disabled"{% endif -%}
|
||||
{{ block('attributes') }}
|
||||
{%- endblock button_attributes -%}
|
||||
|
||||
{% block attributes -%}
|
||||
{%- for attrname, attrvalue in attr -%}
|
||||
{{- " " -}}
|
||||
{%- if attrname in ['placeholder', 'title'] -%}
|
||||
{{- attrname }}="{{ translation_domain is same as(false) or attrvalue is null ? attrvalue : attrvalue|trans(attr_translation_parameters, translation_domain) }}"
|
||||
{%- elseif attrvalue is same as(true) -%}
|
||||
{{- attrname }}="{{ attrname }}"
|
||||
{%- elseif attrvalue is not same as(false) -%}
|
||||
{{- attrname }}="{{ attrvalue }}"
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
{%- endblock attributes -%}
|
@ -1,4 +1,4 @@
|
||||
{% use 'form_div_layout.html.twig' %}
|
||||
{% use 'cards/forms/form_raw_layout.html.twig' %}
|
||||
|
||||
{%- block form_row -%}
|
||||
{%- set row_attr = row_attr|merge({ class: row_attr.class|default(row_class|default('form-row')) }) -%}
|
||||
@ -58,6 +58,15 @@
|
||||
</div>
|
||||
{%- endblock checkbox_row -%}
|
||||
|
||||
{%- block button_row -%}
|
||||
{%- set btn_class = 'is-link' -%}
|
||||
{%- for color in [ 'is-primary', 'is-info', 'is-success', 'is-warning', 'is-danger' ] -%}
|
||||
{%- set btn_class = color -%}
|
||||
{%- endfor -%}
|
||||
{%- set attr = attr|merge({class: (attr.class|default('') ~ ' button ' ~ btn_class)|trim}) -%}
|
||||
{{- parent() -}}
|
||||
{%- endblock button_row -%}
|
||||
|
||||
{%- block checkbox_widget -%}
|
||||
{%- set widget_class = widget_class|default('form-row-checkbox-element') -%}
|
||||
{{- parent() -}}
|
||||
|
Loading…
Reference in New Issue
Block a user