diff options
Diffstat (limited to 'design')
-rw-r--r-- | design/sass/_choices.scss | 382 | ||||
-rw-r--r-- | design/sass/_forms.scss | 38 | ||||
-rw-r--r-- | design/sass/_global.scss | 16 | ||||
-rw-r--r-- | design/sass/_header.scss | 13 | ||||
-rw-r--r-- | design/sass/_notes.scss | 125 | ||||
-rw-r--r-- | design/sass/screenv1.scss | 1 | ||||
-rw-r--r-- | design/templates/accounts/change-settings.html | 33 | ||||
-rw-r--r-- | design/templates/accounts/profile.html | 14 | ||||
-rw-r--r-- | design/templates/base.html | 2 | ||||
-rw-r--r-- | design/templates/notes/notebook_detail.html | 18 | ||||
-rw-r--r-- | design/templates/notes/notebook_list.html | 63 | ||||
-rw-r--r-- | design/templates/notes/notes_detail.html | 3 | ||||
-rw-r--r-- | design/templates/notes/notes_list.html | 40 | ||||
-rw-r--r-- | design/templates/notes/partials/list_header.html | 19 | ||||
-rw-r--r-- | design/templates/notes/partials/notebook_form.html | 4 |
15 files changed, 678 insertions, 93 deletions
diff --git a/design/sass/_choices.scss b/design/sass/_choices.scss new file mode 100644 index 0000000..8073d77 --- /dev/null +++ b/design/sass/_choices.scss @@ -0,0 +1,382 @@ +.choices-wrapper { + max-width: inherit; +} +.choices-wrapper-notebooks { + width: 190px; +} +.choices-wrapper-tags { + width: 160px; + margin-left: 2rem; + .choices__list--dropdown { + width: 109%; + padding-right: 1px; + } +} +.choices { + position: relative; + margin-bottom: 24px; + font-size: 16px; + + &:focus { + outline: none; + } + + &:last-child { + margin-bottom: 0; + } + + &.is-disabled { + .choices__inner, .choices__input { + background-color: #eaeaea; + cursor: not-allowed; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } + + .choices__item { + cursor: not-allowed; + } + } + + &[data-type*=select-one] { + cursor: pointer; + + .choices__inner { + padding-bottom: 7.5px; + } + + .choices__input { + display: block; + width: 100%; + padding: 10px; + border-bottom: 1px solid #ddd; + background-color: #fff; + margin: 0; + } + + .choices__button { + background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==); + padding: 0; + background-size: 8px; + position: absolute; + top: 50%; + right: 0; + margin-top: -10px; + margin-right: 25px; + height: 20px; + width: 20px; + border-radius: 10em; + opacity: .5; + + &:focus, &:hover { + opacity: 1; + } + + &:focus { + box-shadow: 0 0 0 2px #00bcd4; + } + } + + &:after { + content: ""; + height: 0; + width: 0; + border-style: solid; + border-color: #333 transparent transparent transparent; + border-width: 5px; + position: absolute; + right: 11.5px; + top: 50%; + margin-top: -2.5px; + pointer-events: none; + } + + &.is-open:after { + border-color: transparent transparent #333 transparent; + margin-top: -7.5px; + } + + &[dir=rtl] { + &:after { + left: 11.5px; + right: auto; + } + + .choices__button { + right: auto; + left: 0; + margin-left: 25px; + margin-right: 0; + } + } + } + + &[data-type*=select-multiple] .choices__inner, &[data-type*=text] .choices__inner { + cursor: text; + } + + &[data-type*=select-multiple] .choices__button, &[data-type*=text] .choices__button { + position: relative; + display: inline-block; + margin: 0 -4px 0 8px; + padding-left: 16px; + border-left: 1px solid #008fa1; + background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==); + background-size: 8px; + width: 8px; + line-height: 1; + opacity: .75; + border-radius: 0; + } + + &[data-type*=select-multiple] .choices__button { + &:focus, &:hover { + opacity: 1; + } + } + + &[data-type*=text] .choices__button { + &:focus, &:hover { + opacity: 1; + } + } +} + +.choices__inner { + display: inline-block; + vertical-align: top; + width: 100%; + background-color: #f9f9f9; + padding: 7.5px 7.5px 3.75px; + border: 1px solid #ddd; + border-radius: 2.5px; + font-size: 14px; + overflow: hidden; +} + +.is-focused .choices__inner { + border-color: #b7b7b7; +} + +.is-open .choices__inner { + border-color: #b7b7b7; + border-radius: 2.5px 2.5px 0 0; +} + +.is-flipped.is-open .choices__inner { + border-radius: 0 0 2.5px 2.5px; +} + +.choices__list { + margin: 0; + padding-left: 0; + min-width: inherit; + list-style: none; +} + +.choices__list--single { + display: inline-block; + padding: 4px 16px 4px 4px; + width: 100%; +} + +[dir=rtl] .choices__list--single { + padding-right: 4px; + padding-left: 16px; +} + +.choices__list--single .choices__item { + width: 100%; +} + +.choices__list--multiple { + display: inline; + + .choices__item { + display: inline-block; + vertical-align: middle; + border-radius: 20px; + padding: 4px 10px; + font-size: 12px; + font-weight: 500; + margin-right: 3.75px; + margin-bottom: 3.75px; + background-color: #00bcd4; + border: 1px solid #00a5bb; + color: #fff; + word-break: break-all; + + &[data-deletable] { + padding-right: 5px; + } + } +} + +[dir=rtl] .choices__list--multiple .choices__item { + margin-right: 0; + margin-left: 3.75px; +} + +.choices__list--multiple .choices__item.is-highlighted { + background-color: #00a5bb; + border: 1px solid #008fa1; +} + +.is-disabled .choices__list--multiple .choices__item { + background-color: #aaa; + border: 1px solid #919191; +} + +.choices__list--dropdown { + display: none; + z-index: 1; + position: absolute; + width: 108%; + background-color: #fff; + border: 1px solid #ddd; + top: 100%; + margin-top: -1px; + border-bottom-left-radius: 2.5px; + border-bottom-right-radius: 2.5px; + overflow: hidden; + word-break: break-all; + //padding-right: 1px; + &.is-active { + display: block; + } +} + +.is-open .choices__list--dropdown { + border-color: #b7b7b7; +} + +.is-flipped .choices__list--dropdown { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: -1px; + border-radius: .25rem .25rem 0 0; +} + +.choices__list--dropdown { + .choices__list { + position: relative; + max-height: 300px; + overflow: auto; + -webkit-overflow-scrolling: touch; + will-change: scroll-position; + } + + .choices__item { + position: relative; + padding: 10px; + font-size: 14px; + } +} + +[dir=rtl] .choices__list--dropdown .choices__item { + text-align: right; +} + +@media (min-width: 640px) { + .choices__list--dropdown .choices__item--selectable { + + } + + [dir=rtl] .choices__list--dropdown .choices__item--selectable { + text-align: right; + padding-left: 100px; + padding-right: 10px; + + &:after { + right: auto; + left: 10px; + } + } +} + +.choices__list--dropdown .choices__item--selectable.is-highlighted { + background-color: #f2f2f2; + + &:after { + opacity: .5; + } +} + +.choices__item { + cursor: default; +} + +.choices__item--selectable { + cursor: pointer; +} + +.choices__item--disabled { + cursor: not-allowed; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + opacity: .5; +} + +.choices__heading { + font-weight: 600; + font-size: 12px; + padding: 10px; + border-bottom: 1px solid #f7f7f7; + color: gray; +} + +.choices__button { + text-indent: -9999px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: 0; + background-color: transparent; + background-repeat: no-repeat; + background-position: center; + cursor: pointer; + + &:focus { + outline: none; + } +} + +.choices__input { + display: inline-block; + vertical-align: baseline; + background-color: #f9f9f9; + font-size: 14px; + margin-bottom: 5px; + border: 0; + border-radius: 0; + max-width: 100%; + padding: 4px 0 4px 2px; + + &:focus { + outline: 0; + } +} + +[dir=rtl] .choices__input { + padding-right: 2px; + padding-left: 0; +} + +.choices__placeholder { + opacity: .5; +} + +.choices { + &[data-type*=select-multiple] .choices__input.is-hidden, &[data-type*=select-one] .choices__input.is-hidden { + display: none; + } +} + +.choices__input.is-hidden { + display: none; +} diff --git a/design/sass/_forms.scss b/design/sass/_forms.scss index 152e0ac..f9b8b21 100644 --- a/design/sass/_forms.scss +++ b/design/sass/_forms.scss @@ -16,18 +16,45 @@ form fieldset label { -o-transform: translate3d(10px, 100%); transform: translate3d(10px, 100%); @include fontsize(14); + @include fancy_sans; color: lighten($body_font_color, 25); line-height: 14px; top: .7rem; left: .75rem; z-index: 1; } -input { +input, .textarea-rounded { border: 1px solid #b3b3b3; border-radius: 4px; padding: 2.2rem 0 .75rem .75rem; width: 99%; @include fontsize(24); + @include fancy_sans; +} +.file-upload-fieldset { + border: 1px solid #b3b3b3; + border-radius: 4px; + padding: 6px 0 0 4px; + label { + position: relative; + display: block; + margin-bottom: 1rem; + } + .file-upload { + position: relative; + overflow: hidden; + margin: 10px; + } + .file-upload input.upload { + position: absolute; + top: 0; + right: 0; + margin: 0; + font-size: 20px; + cursor: pointer; + opacity: 0; + filter: alpha(opacity=0); + } } form .error input { border: 1px solid $link_color; @@ -90,6 +117,15 @@ table { @include fontsize(10); @include smcaps; } +.btn-more { + padding: 5px 7px; + border: none; + outline: $link_color; + background: $body_font_light !important; + &:hover { + border: none; //1px solid; + } +} .btn-subtle { padding: 3px 5px; border: none; //1px solid $body_font_light; diff --git a/design/sass/_global.scss b/design/sass/_global.scss index 41a1682..ff23500 100644 --- a/design/sass/_global.scss +++ b/design/sass/_global.scss @@ -207,12 +207,19 @@ h3 { .vertical li { display: block; } +.strong { + @include fancy_sans_bold; + font-weight: 500; +} .block { display: block; } .inline-block { display: inline-block; } +.inline{ + display: inline; +} .single-col { display: block; @include constrain(66%); @@ -233,6 +240,15 @@ h3 { .float-right { float: right; } +.float-left { + float: left; +} +.row-wrapper { + @extends %clearfix; +} +.space-between { + justify-content: space-between; +} //************** other global classes ************************ .sans { @include generic_sans; diff --git a/design/sass/_header.scss b/design/sass/_header.scss index 8df6667..1214f9a 100644 --- a/design/sass/_header.scss +++ b/design/sass/_header.scss @@ -4,6 +4,8 @@ background: #fff; } header { + display: flex; + justify-content: space-between; @include constrain_wide; .left { float: left; @@ -20,6 +22,17 @@ header { margin-top: -2px; } } +.logo { + display: block; + margin: 3px 0 0 0; + width: 60px; + height: 60px; + background: #fff url('/media/img/logo-sm.svg') no-repeat; + //background: #fff url('/media/img/logo-blk.svg') no-repeat; + //background: #fff url('/media/img/logo-org.svg') no-repeat; + background-size: 60px 60px; + text-align: center; +} nav { letter-spacing: 1px; margin: 0 0 10px; diff --git a/design/sass/_notes.scss b/design/sass/_notes.scss index 59e76ce..df25c3c 100644 --- a/design/sass/_notes.scss +++ b/design/sass/_notes.scss @@ -31,10 +31,10 @@ main { max-width: 320px; .list-note-preview { li { - height: 4.5rem; + height: 4.6rem; } h4 { - @include fontsize(15); + @include fontsize(18); } } .note-preview { @@ -65,11 +65,10 @@ main { list-style-type: none; li { @include fontsize(13); - padding: 8px 0 12px; + padding: 16px 0 16px 16px; min-height: 4.5rem; box-shadow: 0 -1px 0 #e7e2ee inset; margin: 0; - padding: 6px 12px; &:hover { background: #f7f7f7; } @@ -79,7 +78,7 @@ main { } } h4 { - @include fontsize(16); + @include fontsize(18); margin: 0; padding-bottom: 8px; font-weight: normal; @@ -249,7 +248,7 @@ main { height: 20px; border-radius: 4px; border: 1px solid $body_font_light; - #id_color_rgb { + #id_color_rgb, .input-color-rgb { display: block; text-indent: -1000em; padding: 0; @@ -257,6 +256,9 @@ main { background: transparent; cursor: pointer; } + .input-color-rgb { + display: inline; + } } #nb-create-form { .color-picker-fieldset { @@ -269,9 +271,9 @@ main { } } .nb-name { - margin: 1rem 2rem 1rem 0; - width: 90%; -} + margin: 1rem 2rem 1rem 0; + width: 90%; + } } .small-circle { width: 18px; @@ -286,7 +288,19 @@ main { margin: auto 5px; width: 8px; } - +.small-circle.push-top { + margin-top: 24px; +} +.note-container .flex-wrapper .hed-small { + flex-grow: 1; +} +#list-header { + margin-top: 10px; +} +.choices__list .nb-name { + @include fontsize(14); + margin: 0 .25rem; +} .url-field { input { @@ -307,25 +321,100 @@ main { } .nb-list { - display: flex; - flex-wrap: wrap; - align-items: center; - margin-top: 0; } .nb-list-item { + @extend %clearfix; list-style-type: none; - padding: 2rem; - margin: 1rem; - flex-grow: 1; + padding: .5rem 1rem; + margin: 1rem 1rem 1rem 0; border: 1px #e7e2ee solid; border-radius: 4px; - min-width: 160px; + a { + text-decoration: none; + color: $body_font_color; + } + p { + margin: 0; + @include fontsize(13); + @include fancy_sans_bold; + text-transform: uppercase; + + } + ul { + list-style-type: none; + padding: 0; + margin-left: .25rem; + margin-top: .5rem; + position: relative; + overflow-y: hidden; + .more { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + margin: 0 ; + padding: 15px 0 0 0; + /* "transparent" only works here because == rgba(0,0,0,0) */ + background-image: linear-gradient(to bottom, transparent, white); + } + li { + + } + } + .nb-name { + flex-grow: 1; + margin: 0; + a { + line-height: 2.3; + @include fontsize(22); + } + } + .tags { + @include fontsize(13); + @include fancy_sans; + text-transform: uppercase; + margin: 1rem 0 0 .25rem; + ul { + @include fancy_sans; + text-transform: none; + } + + } + .trash { + margin-top: 4px; + color: #333; + } } .color-picker-inner { width: 100%; height: 100%; } +.slideup, .slidedown { + height: 120px; + overflow-y: hidden; + -webkit-transition: height .5s ease-in; + -moz-transition: height .5s ease-in; + -o-transition: height .5s ease-in; + transition: height .5s ease-in; +} +.slidedown { + height: 220px; + max-height: 260px; +} +.newnnbslideup, .newnbslidedown { + height: 0px; + overflow-y: hidden; + -webkit-transition: height .5s ease-in; + -moz-transition: height .5s ease-in; + -o-transition: height .5s ease-in; + transition: height .5s ease-in; +} +.newnbslidedown { + height: 220px; + max-height: 260px; +} + .dropmenu-search { margin: 0; padding: 0; diff --git a/design/sass/screenv1.scss b/design/sass/screenv1.scss index de2593e..b55f9d9 100644 --- a/design/sass/screenv1.scss +++ b/design/sass/screenv1.scss @@ -3,6 +3,7 @@ @import "_queries.scss"; @import "_global.scss"; @import "_icons.scss"; +@import "_choices.scss"; @import "_header.scss"; @import "_footer.scss"; @import "_forms.scss"; diff --git a/design/templates/accounts/change-settings.html b/design/templates/accounts/change-settings.html new file mode 100644 index 0000000..a6e6ea6 --- /dev/null +++ b/design/templates/accounts/change-settings.html @@ -0,0 +1,33 @@ +{% extends 'base.html' %} +{% block content %} +<main class="single-col"> +<h1>Update Your Account Settings</h1> +<form action="" method="POST" enctype="multipart/form-data">{% csrf_token %} + {% for field in form %} + <fieldset {% if field.name == 'photo' %}class="file-upload-fieldset"{%endif%}>{% if field.name == 'photo' %} + {{field.label_tag}} + <div class="flex-wrapper"> + <div id="file-upload-wrapper" class="file-upload btn"> + <span>Upload</span> + <input type="file" name="photo" class="upload" accept="image/*" id="id_photo"> + </div> + <span id="filename"></span> + </div> + {% else %} + {{field.label_tag}} + {{field}} + {%endif%}</fieldset> + {% endfor %} +<p><input class="btn btn-inline note-save" value="Save" type="submit" /></p> +</form> +</main> +<script> +if (typeof(document.getElementById('id_photo')) != 'undefined' && document.getElementById('id_photo') != null) { + var input = document.getElementById('id_photo'); + input.fname = document.getElementById('filename'); + input.addEventListener('change', function(e){ + e.target.fname.innerHTML = e.target.value.split("\\")[2]; + }); +} +</script> +{% endblock %} diff --git a/design/templates/accounts/profile.html b/design/templates/accounts/profile.html index e8ab65e..4e52da1 100644 --- a/design/templates/accounts/profile.html +++ b/design/templates/accounts/profile.html @@ -31,22 +31,12 @@ <tr> <th scope="row">Bio</th> <td colspan="2">{{object.bio}}<td> - <td class="text-right"><a href="/settings/change-bio/" class="btn">Change</a></td> + <td class="text-right"><a href="/settings/change-profile/" class="btn">Change</a></td> </tr> <tr> <th scope="row">Photo</th> <td colspan="2">{{object.photo}}<td> - <td class="text-right"><a href="/settings/change-photo/" class="btn">Change</a></td> - </tr> - <tr> - <th scope="row">Website</th> - <td colspan="2">{{object.website}}<td> - <td class="text-right"><a href="/settings/change-website/" class="btn">Change</a></td> - </tr> - <tr> - <th scope="row">Location</th> - <td colspan="2">{{object.location}}<td> - <td class="text-right"><a href="/settings/change-location/" class="btn">Change</a></td> + <td class="text-right"><a href="/settings/change-profile/" class="btn">Change</a></td> </tr> </tbody> </table> diff --git a/design/templates/base.html b/design/templates/base.html index adcf599..e02719b 100644 --- a/design/templates/base.html +++ b/design/templates/base.html @@ -51,7 +51,7 @@ <li><a href="{% url 'forum:topic-list' %}" title="View the TKNote Forum">Community</a></li> <li><a href="{% url 'pages' slug='tour' %}" title="">Tour</a></li> <li><a href="{% url 'pages' slug='howto' %}" title="">How to</a></li>{% if not request.user.is_anonymous %} - <li><a id="account-menu" href="{% url 'settings' %}" title="">Account</a> + <li><a id="account-menu" href="{% url 'accounts:settings' %}" title="">Account</a> <div id="user-menu" class="dropmenu" tabindex="-1"> <ul id="user-menu-list" class="list-style-none vertical"> <li><a href="/settings/" class="">Account settings</a></li> diff --git a/design/templates/notes/notebook_detail.html b/design/templates/notes/notebook_detail.html index 37c8f8a..49717ca 100644 --- a/design/templates/notes/notebook_detail.html +++ b/design/templates/notes/notebook_detail.html @@ -7,14 +7,15 @@ {% block content %} <main> <article class="note-container single-col"> + {% include "notes/partials/list_header.html" with notebook_list=notebook_list tag_list=tag_list %} <div class="flex-wrapper"> {% if object.name != 'Trash'%} <form id="nb-edit-form" action="{% url 'notebook-api-detail' object.pk %}" method="PATCH">{% csrf_token %} {{ form.non_field_errors }} <div class="flex-wrapper flex-inner"> {% for field in form %}{% if field.name == 'color_rgb' %} - <fieldset class="color-picker-fieldset" id="color-picker" {% if form.instance.color_rgb %}style="background-color: {{form.instance.color_rgb}}; border: none;"{%endif%}> - <input type="text" name="color_rgb" value="{{form.instance.color_rgb}}" maxlength="20" id="id_color_rgb"> + <fieldset class="color-picker-fieldset" id="color-picker" {% if object.color_rgb %}style="background-color: {{object.color_rgb}}; border: none;"{%endif%}> + <input type="text" name="color_rgb" value="{{object.color_rgb}}" maxlength="20" id="id_color_rgb"> {% if field.errors %}{{field.errors}}{% endif %} </fieldset>{% else %} <fieldset class="hide"> @@ -33,19 +34,6 @@ {%endif%} </div> - <form id="new-note-form" action="{% url 'notebook-api-list' %}" method="post" class="hide"> - <label>Create a new notebook</label> - {% csrf_token %} - {{ form.non_field_errors }} - {% for field in form %} - <fieldset class="" id="fs-{{field.name}}" > - {{field.label_tag}} - {{field}} - {% if field.errors %}{{field.errors}}{% endif %} - </fieldset> - {% endfor %} - <p><input id="btn-js-hide" class="btn btn-inline" value="create" type="submit" /></p> - </form> <ul class="list-note-preview">{% for object in object.note_set.all %} {% include "notes/partials/note_list.html" with object=object hidecolor=True hidenotebook=True %} {% endfor %}</ul> diff --git a/design/templates/notes/notebook_list.html b/design/templates/notes/notebook_list.html index 6f25f62..5f1220f 100644 --- a/design/templates/notes/notebook_list.html +++ b/design/templates/notes/notebook_list.html @@ -6,32 +6,69 @@ {% endblock %} {% block content %} <main> - <article class="note-container"> - <h2 class="hed-small top-margin-0">Add a Notebook</h2> - {% include 'notes/partials/notebook_form.html' with form=form %} + <article id="nb-list-home" class="note-container"> + <div class="flex-wrapper"> <h1 class="hed-small">Notebooks</h1> - + <a class="circle plus small-circle modal-open push-top" href="/nb/" id="add_id_notebook" data-modal-hed-class="notebook" data-modal-hed="Add a New Notebook">New</a> + </div> + {% if messages %} + <ul class="messages"> + {% for message in messages %} + <li{% if message.tags %} class="{{ message.tags }}"{% endif %}> + {% if 'safe' in message.tags %}{{ message|safe }}{% else %}{{ message }}{% endif %} + </li> + {% endfor %} + </ul> + {% endif %} + <div id="notebook-wrapper"> + {% include 'notes/partials/notebook_form.html' with form=form url='' %} + </div> <ul class="nb-list">{% for form in notebook_form_list %} <li class="nb-list-item"> - <form action="{% url 'notebook-api-detail' form.instance.id %}" method="PUT">{% for field in form %}{% if field.name == 'color_rgb' %} - <fieldset class="color-picker-fieldset" id="color-picker-{{forloop.parentloop.counter0}}" {% if form.instance.color_rgb %}style="background-color: {{form.instance.color_rgb}}; border: none;"{%endif%}> - <input type="text" name="color_rgb" value="{{form.instance.color_rgb}}" maxlength="20" id="id_color_rgb"> + <form action="{% url 'notebooks:update' form.instance.slug %}" method="POST" name="create" data-method="POST" data-action="">{% csrf_token %} + {% for field in form %}{% if field.name == 'color_rgb' %} + <div class="flex-wrapper"> + <fieldset class="fe-color-picker color-picker-fieldset " id="color-picker-{{forloop.parentloop.counter0}}" {% if form.instance.color_rgb %}style="background-color: {{form.instance.color_rgb}}; border: none;"{%endif%}> + <input type="text" class="input-color-rgb" name="color_rgb" value="{{form.instance.color_rgb}}" maxlength="20" id="id_color_rgb-{{forloop.parentloop.counter0}}"> {% if field.errors %}{{field.errors}}{% endif %} </fieldset> - href="{% url 'notebooks:detail' form.instance.slug %}" - <h2>{{form.instance.name}}</h2> - {% else %} + <h2 class="nb-name"><a href="{% url 'notebooks:detail' form.instance.slug %}">{{form.instance.name}}</a></h2> + <button type="submit" value="trash" class="btn-hollow trash float-right" name="trash">Move to Trash</button> + </div> + {% elif field.name == 'name' %} <fieldset> + <label for="id_name-{{forloop.parentloop.counter0}}">Notebook Name:</label> + <input type="text" name="name" value="{{form.instance.name}}" maxlength="250" required id="id_name-{{forloop.parentloop.counter0}}"> + </fieldset> + {% else %} {% if field.field.widget.input_type != 'hidden' %}{{field.label_tag}}{% endif %} {{field}} {% if field.errors %}{{field.errors}}{% endif %} - </fieldset>{% endif %}{% endfor %} + {% endif %}{% endfor %} <input id="i-{{forloop.counter0}}" type="submit" class="btn sm" value="Save" > + + <div class="row-wrapper"> + <p>{{form.instance.note_count}} notes{% if form.instance.note_count > 5 %}, most recent:{%endif%}</p> + {% if form.instance.note_count > 0 %}<ul id="n-list-{{forloop.counter0}}" class="n-list{% if form.instance.note_count > 5 %} slideup{%endif%}">{% for note in form.instance.note_set.all %} + <li><a href="{{note.get_absolute_url}}">{{note.title}}</a></li> + {%endfor%} + {% if form.instance.note_count > 5 %}<li class="more"><button type="button" class="btn btn-small btn-more button" id="more-button-{{forloop.counter0}}">More</button></li>{%endif%} + </ul>{%endif%} + {% if form.instance.tag_list %}<div class="tags">Common tags: <ul class="inline">{% for tag in form.instance.tag_list %} + <li class="inline"><a href="{% url 'notes:tags' tag.slug %}"> + <span class="tag-wrapper" data-bg-color="#{{tag.color_hex}};" >{{tag|title}}</span> + </a></li> + {%endfor%}</div>{%endif%} + <div class="edit-btn-wrapper"><a class="btn btn-hollow btn-nb-edit float-right" id="edit-toggle-btn-{{forloop.counter0}}">Edit</a></div> + </div> </form> - <div class="edit-btn-wrapper"><a class="btn btn-hollow btn-nb-edit" id="edit-toggle-btn-{{forloop.counter0}}">Edit</a></div> - <div class="edit-btn-wrapper"><a class="btn btn-hollow btn-nb-trash" id="trash-btn-{{forloop.counter0}}">Trash</a></div> </li> {%endfor%}</ul> + + + + + {% comment %} <ul class="nb-list">{% for object in notebook_list %} <li class="nb-list-item"> diff --git a/design/templates/notes/notes_detail.html b/design/templates/notes/notes_detail.html index cce13b7..0099f3d 100644 --- a/design/templates/notes/notes_detail.html +++ b/design/templates/notes/notes_detail.html @@ -69,7 +69,8 @@ </aside>--> </main> <div class="overlay-content hide" id="js-overlay-notebook"> - {% include 'notes/partials/notebook_form.html' with form=notebook_form %} + {% url 'notebook-api-list' as create_url %} + {% include 'notes/partials/notebook_form.html' with form=notebook_form url=create_url %} </div> {% endblock %} diff --git a/design/templates/notes/notes_list.html b/design/templates/notes/notes_list.html index 94e82ec..0799a1c 100644 --- a/design/templates/notes/notes_list.html +++ b/design/templates/notes/notes_list.html @@ -1,42 +1,20 @@ {% extends 'base.html' %} - {% block content %} <main> <div class="note-container"> + {% include "notes/partials/list_header.html" with notebook_list=notebook_list tag_list=tag_list %} <div class="note-hed-wrapper"> <h1 class="note-hed">Notes</h1> {% if messages %} - <ul class="messages"> - {% for message in messages %} - <li{% if message.tags %} class="{{ message.tags }}"{% endif %}> - {% if 'safe' in message.tags %}{{ message|safe }}{% else %}{{ message }}{% endif %} - </li> - {% endfor %} - </ul> + <ul class="messages"> + {% for message in messages %} + <li{% if message.tags %} class="{{ message.tags }}"{% endif %}> + {% if 'safe' in message.tags %}{{ message|safe }}{% else %}{{ message }}{% endif %} + </li> + {% endfor %} + </ul> {% endif %} {% if tags|length >= 1%}<h2 class="note-subhed">Tagged with: {% for tag in tags%}<a href="{{tag.slug}}">{{tag.name}}</a>{%endfor%}</h2>{%endif%} - - <h6 class="bottom-margin-0 inline-block"><button id="notebook-drop-btn" class="btn btn-light btn-drop-menu">Notebooks</button></h6> - <div id="notebook-drop-menu" class="dropmenu dropmenu-search"> - <div class="dropmenu-search-wrapper"> - <input class="search" autocapitalize="off" autocorrect="off" type="text" autocomplete="off" tabindex="-1" spellcheck="false" placeholder="Search..." id="notebook-input" data-list="#notebook-list" > - <!--<svg class="fa d-icon d-icon-search svg-icon filter-icon svg-string" xmlns="http://www.w3.org/2000/svg"><use xlink:href="#search"></use></svg>--> - </div> - <ul class="list dropmenu-list list-style-none notebook-list" id="notebook-list">{% for object in notebook_list %} - <li ><a class="name" href="{{object.get_absolute_url}}">{{object.name}} - {{object.note_count}}</a></li> - {%endfor%}</ul> - </div> - - <h6 class="bottom-margin-0 inline-block"><button id="tags-drop-btn" class="btn btn-light btn-drop-menu">Tags</button></h6> - <div id="tags-drop-menu" class="dropmenu dropmenu-search"> - <div class="dropmenu-search-wrapper"> - <input class="search" autocapitalize="off" autocorrect="off" type="text" autocomplete="off" tabindex="-1" spellcheck="false" placeholder="Search..." id="tags-input" data-list="#tags-list" > - <!--<svg class="fa d-icon d-icon-search svg-icon filter-icon svg-string" xmlns="http://www.w3.org/2000/svg"><use xlink:href="#search"></use></svg>--> - </div> - <ul class="list dropmenu-list list-style-none notebook-list" id="tags-list">{% for object in tag_list %} - <li><a href="{{object.get_absolute_url}}">{{object.name}} - {{object.note_count}}</a></li> - {%endfor%}</ul> - </div> </div> {%comment%} <label for="choices-single-default">Default</label> <select class="form-control" data-trigger name="choices-single-default" id="choices-single-default" placeholder="This is a search placeholder"> @@ -73,3 +51,5 @@ </div>--> </main> {% endblock %} +{% block jsdomready %} +{% endblock %} diff --git a/design/templates/notes/partials/list_header.html b/design/templates/notes/partials/list_header.html new file mode 100644 index 0000000..5d0edc1 --- /dev/null +++ b/design/templates/notes/partials/list_header.html @@ -0,0 +1,19 @@ +{% block jsinclude %} + <script> + window.nbdata = [ {%spaceless%}{% for object in notebook_list %} {value: '{{object.get_absolute_url}}', label: '<span class="color-box" style="background-color: {{object.color_rgb}}"></span><span class="strong nb-name">{{object.name}}</span> x {{object.note_count}}' },{%endfor%} {value: '/nb/', label: '<span class="strong nb-name">All Notebooks</span>', selected: true, },{%endspaceless%} + ] + window.tagdata = [ {% for object in tag_list %} {value: '{{object.get_absolute_url}}', label: '{% if object.color_rgb %}<span class="color-box" style="background-color: {{object.color_rgb}}"></span>{%endif%}<span class="strong nb-name">{{object.name}}</span> x {{object.note_count}}' },{%endfor%} {value: '/t/', label: '<span class="strong nb-name">All Tags</span>', selected: true, }, + ] + </script> +<script src="/media/js/choices.min.js"></script> +{%endblock%} + <div id="list-header"> + <div id="choices-container" class="flex-wrapper"> + <ul class="list dropmenu-list list-style-none notebook-list" id="notebook-list">{% for object in notebook_list %} + <li ><a class="name" href="{{object.get_absolute_url}}"><span class="color-box" style="background-color: {{object.color_rgb}}"></span><span class="strong nb-name">{{object.name}}</span> x {{object.note_count}}</a></li> + {%endfor%}</ul> + <ul class="list dropmenu-list list-style-none notebook-list" id="tags-list">{% for object in tag_list %} + <li><a href="{{object.get_absolute_url}}">{% if object.color_rgb %}<span class="color-box" style="background-color: {{object.color_rgb}}"></span>{%endif%}<span class="strong nb-name">{{object.name}}</span> x {{object.note_count}}</a></li> + {%endfor%}</ul> + </div> + </div> diff --git a/design/templates/notes/partials/notebook_form.html b/design/templates/notes/partials/notebook_form.html index fae6c40..1e51e9c 100644 --- a/design/templates/notes/partials/notebook_form.html +++ b/design/templates/notes/partials/notebook_form.html @@ -1,4 +1,4 @@ -<form id="nb-create-form" action="{% url 'notebook-api-list' %}" method="POST">{% csrf_token %} +<form id="nb-create-form" action="{{url}}" method="POST">{% csrf_token %} <div class="alert" id="non-field-errors">{{ form.non_field_errors }}</div> <div class="flex-wrapper flex-inner"> {% for field in form %}{% if field.name == 'color_rgb' %} @@ -15,5 +15,5 @@ {% endfor %} <h1 class="notebook-title" id="nb-title">{{object.name}}</h1> </div> - <input id="notebook-form-submit" type="submit" class="btn sm" value="Save" > + <input id="notebook-form-submit" name="create" type="submit" class="btn sm" value="Save" > </form> |