Merge pull request #3541 from Simounet/feature/nav-label-replaced-by-buttons

Nav actions updated
This commit is contained in:
Nicolas Lœuillet 2018-01-12 23:10:21 +01:00 committed by GitHub
commit fd637b9a5a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 100 additions and 101 deletions

View File

@ -2,8 +2,7 @@
/* ========================================================================== /* ==========================================================================
Nav Nav
========================================================================== */ ========================================================================== */
nav, nav {
.nav-wrapper {
height: auto; height: auto;
line-height: initial; line-height: initial;
} }
@ -18,25 +17,25 @@ nav {
} }
} }
.nav-wrapper { .nav-panel-item .button-collapse {
margin-left: 0;
margin-right: 0.5rem;
padding: 0 0.5rem;
height: auto;
line-height: 1;
background-color: transparent;
border: none;
}
.nav-panel-item {
display: flex; display: flex;
padding: 0.6rem 0.4rem 0.6rem 0.75rem; padding: 0.6rem 0.4rem 0.6rem 0.75rem;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
.button-collapse {
margin-left: 0;
margin-right: 0.5rem;
padding: 0 0.5rem;
height: auto;
line-height: 1;
background-color: transparent;
border: none;
}
} }
nav .nav-wrapper i { .nav-panel-item .material-icons {
height: 46px; height: 46px;
line-height: 46px; line-height: 46px;
} }
@ -51,8 +50,8 @@ nav .nav-wrapper i {
justify-content: flex-end; justify-content: flex-end;
} }
.nav-panel-add .add, .nav-panel-item .add,
.nav-panel-search .search, .nav-panel-item .search,
.nav-panels .close { .nav-panels .close {
color: #444 !important; color: #444 !important;
} }
@ -68,9 +67,7 @@ nav .nav-wrapper i {
.input-field input { .input-field input {
display: block; display: block;
line-height: inherit; line-height: inherit;
padding-left: 4rem !important; height: 3rem;
width: calc(100% - 8rem);
height: 4.1rem;
} }
.input-field input:focus { .input-field input:focus {
@ -87,36 +84,45 @@ nav .nav-wrapper i {
} }
.input-field { .input-field {
&.nav-panel-add label, &.nav-panel-item label {
&.nav-panel-search label {
left: 1rem; left: 1rem;
} }
&.nav-panel-add .close, &.nav-panel-item .close {
&.nav-panel-search .close {
position: absolute;
top: 0;
right: 1rem;
color: transparent; color: transparent;
cursor: pointer; cursor: pointer;
font-size: 2rem; font-size: 2rem;
transition: 0.3s color; transition: 0.3s color;
} }
&.nav-panel-add, &.nav-panel-item {
&.nav-panel-add form,
&.nav-panel-search,
&.nav-panel-search form {
display: flex; display: flex;
flex: 1; flex: 1;
flex-wrap: nowrap;
align-items: center;
} }
&.nav-panel-add form.disabled, &.nav-panel-add.disabled,
&.nav-panel-add form.disabled input { &.nav-panel-add.disabled input {
background-color: whitesmoke; background-color: whitesmoke;
} }
} }
.nav-form-button {
padding: 0;
background-color: transparent;
border: none;
&:focus {
background-color: inherit;
}
}
.nav-form-button,
.nav-panel-item .close {
margin: 0 1%;
}
#button_filters { #button_filters {
display: none; display: none;
} }

View File

@ -21,6 +21,7 @@ div.settings div.file-field {
nav .input-field input { nav .input-field input {
margin: 0; margin: 0;
padding-left: 0.5rem;
} }
.tabs { .tabs {

View File

@ -35,6 +35,13 @@ $(document).ready(() => {
initFilters(); initFilters();
initExport(); initExport();
const toggleNav = (toShow, toFocus) => {
$('.nav-panel-actions').hide(100);
$(toShow).show(100);
$('.nav-panels').css('background', 'white');
$(toFocus).focus();
};
$('#nav-btn-add-tag').on('click', () => { $('#nav-btn-add-tag').on('click', () => {
$('.nav-panel-add-tag').toggle(100); $('.nav-panel-add-tag').toggle(100);
$('.nav-panel-menu').addClass('hidden'); $('.nav-panel-menu').addClass('hidden');
@ -42,34 +49,21 @@ $(document).ready(() => {
return false; return false;
}); });
$('#nav-btn-add').on('click', () => { $('#nav-btn-add').on('click', () => {
$('.nav-panel-buttom').hide(100); toggleNav('.nav-panel-add', '#entry_url');
$('.nav-panel-add').show(100);
$('.nav-panels .action').hide(100);
$('.nav-panel-menu').addClass('hidden');
$('.nav-panels').css('background', 'white');
$('#entry_url').focus();
return false; return false;
}); });
const materialAddForm = $('.nav-panel-add form[name=entry]'); const materialAddForm = $('.nav-panel-add');
materialAddForm.on('submit', () => { materialAddForm.on('submit', () => {
materialAddForm.addClass('disabled'); materialAddForm.addClass('disabled');
$('input#entry_url', materialAddForm).prop('readonly', true).trigger('blur'); $('input#entry_url', materialAddForm).prop('readonly', true).trigger('blur');
}); });
$('#nav-btn-search').on('click', () => { $('#nav-btn-search').on('click', () => {
$('.nav-panel-buttom').hide(100); toggleNav('.nav-panel-search', '#search_entry_term');
$('.nav-panel-search').show(100);
$('.nav-panels .action').hide(100);
$('.nav-panel-menu').addClass('hidden');
$('.nav-panels').css('background', 'white');
$('#search_entry_term').focus();
return false; return false;
}); });
$('.close').on('click', () => { $('.close').on('click', (e) => {
$('.nav-panel-add').hide(100); $(e.target).parent('.nav-panel-item').hide(100);
$('.nav-panel-search').hide(100); $('.nav-panel-actions').show(100);
$('.nav-panel-buttom').show(100);
$('.nav-panels .action').show(100);
$('.nav-panel-menu').removeClass('hidden');
$('.nav-panels').css('background', 'transparent'); $('.nav-panels').css('background', 'transparent');
return false; return false;
}); });

View File

@ -9,7 +9,7 @@
<div class="determinate"></div> <div class="determinate"></div>
</div> </div>
<nav class="hide-on-large-only"> <nav class="hide-on-large-only">
<div class="nav-wrapper cyan darken-1"> <div class="nav-panel-item cyan darken-1">
<ul> <ul>
<li> <li>
<a href="#" data-activates="slide-out" class="button-collapse"> <a href="#" data-activates="slide-out" class="button-collapse">

View File

@ -1,13 +1,15 @@
<form name="entry" method="post" action="{{ path('new_entry')}}"> <form class="input-field nav-panel-item nav-panel-add" style="display: none" name="entry" method="post" action="{{ path('new_entry')}}">
{% if form_errors(form) %} {% if form_errors(form) %}
<span class="black-text">{{ form_errors(form) }}</span> <span class="black-text">{{ form_errors(form) }}</span>
{% endif %} {% endif %}
<button type="submit" class="nav-form-button"><i class="material-icons add">add</i></button>
{% if form_errors(form.url) %} {% if form_errors(form.url) %}
<span class="black-text">{{ form_errors(form.url) }}</span> <span class="black-text">{{ form_errors(form.url) }}</span>
{% endif %} {% endif %}
{{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.new.placeholder'} }) }} {{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.new.placeholder'} }) }}
<i class="material-icons close">clear</i>
{{ form_rest(form) }} {{ form_rest(form) }}
</form> </form>

View File

@ -1,7 +1,8 @@
<form name="search" method="GET" action="{{ path('search')}}"> <form class="input-field nav-panel-item nav-panel-search" style="display: none" name="search" method="GET" action="{{ path('search')}}">
{% if form_errors(form) %} {% if form_errors(form) %}
<span class="black-text">{{ form_errors(form) }}</span> <span class="black-text">{{ form_errors(form) }}</span>
{% endif %} {% endif %}
<button type="submit" class="nav-form-button"><i class="material-icons search">search</i></button>
{% if form_errors(form.term) %} {% if form_errors(form.term) %}
<span class="black-text">{{ form_errors(form.term) }}</span> <span class="black-text">{{ form_errors(form.term) }}</span>
@ -10,6 +11,7 @@
<input type="hidden" name="currentRoute" value="{{ currentRoute }}" /> <input type="hidden" name="currentRoute" value="{{ currentRoute }}" />
{{ form_widget(form.term, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.search.placeholder'} }) }} {{ form_widget(form.term, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.search.placeholder'} }) }}
<i class="material-icons close">clear</i>
{{ form_rest(form) }} {{ form_rest(form) }}
</form> </form>

View File

@ -93,46 +93,40 @@
<a class="waves-effect icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a> <a class="waves-effect icon icon-power" href="{{ path('fos_user_security_logout') }}">{{ 'menu.left.logout'|trans }}</a>
</li> </li>
</ul> </ul>
<div class="nav-wrapper nav-panels"> <div class="nav-panels">
<div class="nav-panel-top"> <div class="nav-panel-actions nav-panel-item">
<button data-activates="slide-out" class="nav-panel-menu button-collapse"><i class="material-icons">menu</i></button> <div class="nav-panel-top">
<h1 class="left action"> <button data-activates="slide-out" class="nav-panel-menu button-collapse"><i class="material-icons">menu</i></button>
{% block title %} <h1 class="left action">
{% endblock %} {% block title %}
</h1> {% endblock %}
</div> </h1>
<ul class="input-field nav-panel-buttom"> </div>
<li class="bold"> <ul class="input-field nav-panel-buttom">
<a class="waves-effect tooltipped" data-position="bottom" data-delay="50" data-tooltip="{{ 'menu.top.add_new_entry'|trans }}" href="{{ path('new') }}" id="nav-btn-add"> <li class="bold">
<i class="material-icons">add</i> <a class="waves-effect tooltipped" data-position="bottom" data-delay="50" data-tooltip="{{ 'menu.top.add_new_entry'|trans }}" href="{{ path('new') }}" id="nav-btn-add">
</a> <i class="material-icons">add</i>
</li> </a>
<li> </li>
<a class="waves-effect tooltipped" data-position="bottom" data-delay="50" data-tooltip="{{ 'menu.top.search'|trans }}" href="javascript: void(null);" id="nav-btn-search"> <li>
<i class="material-icons">search</i> <a class="waves-effect tooltipped" data-position="bottom" data-delay="50" data-tooltip="{{ 'menu.top.search'|trans }}" href="javascript: void(null);" id="nav-btn-search">
</a> <i class="material-icons">search</i>
</li> </a>
<li id="button_filters"> </li>
<a class="nav-panel-menu button-collapse-right tooltipped js-filters-action" data-position="bottom" data-delay="50" data-tooltip="{{ 'menu.top.filter_entries'|trans }}" href="#" data-activates="filters"> <li id="button_filters">
<i class="material-icons">filter_list</i> <a class="nav-panel-menu button-collapse-right tooltipped js-filters-action" data-position="bottom" data-delay="50" data-tooltip="{{ 'menu.top.filter_entries'|trans }}" href="#" data-activates="filters">
</a> <i class="material-icons">filter_list</i>
</li> </a>
<li id="button_export"> </li>
<a class="nav-panel-menu button-collapse-right tooltipped js-export-action" data-position="bottom" data-delay="50" data-tooltip="{{ 'menu.top.export'|trans }}" href="#" data-activates="export"> <li id="button_export">
<i class="material-icons">file_download</i> <a class="nav-panel-menu button-collapse-right tooltipped js-export-action" data-position="bottom" data-delay="50" data-tooltip="{{ 'menu.top.export'|trans }}" href="#" data-activates="export">
</a> <i class="material-icons">file_download</i>
</li> </a>
</ul> </li>
<div class="input-field nav-panel-search" style="display: none"> </ul>
{{ render(controller("WallabagCoreBundle:Entry:searchForm", {'currentRoute': app.request.attributes.get('_route')})) }}
<label for="search"><i class="material-icons search">search</i></label>
<i class="material-icons close">clear</i>
</div>
<div class="input-field nav-panel-add" style="display: none">
{{ render(controller("WallabagCoreBundle:Entry:addEntryForm")) }}
<label for="add"><i class="material-icons add">add</i></label>
<i class="material-icons close">clear</i>
</div> </div>
{{ render(controller("WallabagCoreBundle:Entry:searchForm", {'currentRoute': app.request.attributes.get('_route')})) }}
{{ render(controller("WallabagCoreBundle:Entry:addEntryForm")) }}
</div> </div>
</nav> </nav>
{% endblock %} {% endblock %}

View File

@ -17,7 +17,7 @@ class DeveloperControllerTest extends WallabagCoreTestCase
$crawler = $client->request('GET', '/developer/client/create'); $crawler = $client->request('GET', '/developer/client/create');
$this->assertSame(200, $client->getResponse()->getStatusCode()); $this->assertSame(200, $client->getResponse()->getStatusCode());
$form = $crawler->filter('button[type=submit]')->form(); $form = $crawler->filter('button[id=client_save]')->form();
$data = [ $data = [
'client[name]' => 'My app', 'client[name]' => 'My app',

View File

@ -476,7 +476,7 @@ class EntryControllerTest extends WallabagCoreTestCase
$this->assertSame(200, $client->getResponse()->getStatusCode()); $this->assertSame(200, $client->getResponse()->getStatusCode());
$form = $crawler->filter('button[type=submit]')->form(); $form = $crawler->filter('button[id=entry_save]')->form();
$data = [ $data = [
'entry[title]' => 'My updated title hehe :)', 'entry[title]' => 'My updated title hehe :)',
@ -509,7 +509,7 @@ class EntryControllerTest extends WallabagCoreTestCase
$this->assertSame(200, $client->getResponse()->getStatusCode()); $this->assertSame(200, $client->getResponse()->getStatusCode());
$form = $crawler->filter('button[type=submit]')->form(); $form = $crawler->filter('button[id=entry_save]')->form();
$data = [ $data = [
'entry[title]' => 'My updated title hehe :)', 'entry[title]' => 'My updated title hehe :)',

View File

@ -14,7 +14,7 @@ class PocketControllerTest extends WallabagCoreTestCase
$crawler = $client->request('GET', '/import/pocket'); $crawler = $client->request('GET', '/import/pocket');
$this->assertSame(200, $client->getResponse()->getStatusCode()); $this->assertSame(200, $client->getResponse()->getStatusCode());
$this->assertSame(1, $crawler->filter('button[type=submit]')->count()); $this->assertSame(1, $crawler->filter('button[name=action]')->count());
} }
public function testImportPocketWithRabbitEnabled() public function testImportPocketWithRabbitEnabled()
@ -27,7 +27,7 @@ class PocketControllerTest extends WallabagCoreTestCase
$crawler = $client->request('GET', '/import/pocket'); $crawler = $client->request('GET', '/import/pocket');
$this->assertSame(200, $client->getResponse()->getStatusCode()); $this->assertSame(200, $client->getResponse()->getStatusCode());
$this->assertSame(1, $crawler->filter('button[type=submit]')->count()); $this->assertSame(1, $crawler->filter('button[name=action]')->count());
$client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 0); $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 0);
} }
@ -43,7 +43,7 @@ class PocketControllerTest extends WallabagCoreTestCase
$crawler = $client->request('GET', '/import/pocket'); $crawler = $client->request('GET', '/import/pocket');
$this->assertSame(200, $client->getResponse()->getStatusCode()); $this->assertSame(200, $client->getResponse()->getStatusCode());
$this->assertSame(1, $crawler->filter('button[type=submit]')->count()); $this->assertSame(1, $crawler->filter('button[name=action]')->count());
$client->getContainer()->get('craue_config')->set('import_with_redis', 0); $client->getContainer()->get('craue_config')->set('import_with_redis', 0);
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long