From 73889e574a4325772a37b468c2e48f3fa163edf0 Mon Sep 17 00:00:00 2001 From: Andrew Croce Date: Thu, 30 Aug 2018 14:21:42 -0400 Subject: [PATCH 01/12] popup selector html --- templates/components/selector.html | 63 ++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 templates/components/selector.html diff --git a/templates/components/selector.html b/templates/components/selector.html new file mode 100644 index 00000000..c64bf9a0 --- /dev/null +++ b/templates/components/selector.html @@ -0,0 +1,63 @@ +{% from "components/icon.html" import Icon %} + +{# expects a wtforms SelectField instance #} +{% macro Selector(field, default_label='Select an option') -%} + + + +
+ + + {{ field.label | striptags }} + + {% if field.description %} + {{ field.description | safe }} + {% endif %} + + {{ Icon('alert',classes="icon-validation") }} + + + + + {{ Icon('alert',classes="icon-validation") }} + + + + + +
+
+ +{%- endmacro %} From 5acaf2c7c2a9006b0cc52cf8b84d06b105a2003c Mon Sep 17 00:00:00 2001 From: Andrew Croce Date: Thu, 30 Aug 2018 14:55:32 -0400 Subject: [PATCH 02/12] use selector macro on new member screen --- templates/member_new.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/member_new.html b/templates/member_new.html index ad3723bf..a1819bed 100644 --- a/templates/member_new.html +++ b/templates/member_new.html @@ -3,6 +3,7 @@ {% from "components/icon.html" import Icon %} {% from "components/text_input.html" import TextInput %} {% from "components/options_input.html" import OptionsInput %} +{% from "components/selector.html" import Selector %} {% block content %} @@ -20,7 +21,7 @@ {{ TextInput(form.last_name) }} {{ TextInput(form.email,placeholder='jane@mail.mil', validation='email') }} {{ TextInput(form.dod_id,placeholder='10-digit number on the back of the CAC', validation='dodId') }} - {{ OptionsInput(form.workspace_role) }} + {{ Selector(form.workspace_role) }} From 116ed3c3f630a85fb6a92b21b786db8ee9de1f8b Mon Sep 17 00:00:00 2001 From: Andrew Croce Date: Thu, 30 Aug 2018 14:55:51 -0400 Subject: [PATCH 03/12] workspace role data --- atst/forms/data.py | 8 ++++++++ atst/forms/new_member.py | 13 ++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/atst/forms/data.py b/atst/forms/data.py index fba93d84..d1b1a976 100644 --- a/atst/forms/data.py +++ b/atst/forms/data.py @@ -102,3 +102,11 @@ COMPLETION_DATE_RANGES = [ ("3-6 months", "3-6 months"), ("Above 12 months", "Above 12 months"), ] + +WORKSPACE_ROLES = [ + ("admin", "Admin", "Lorem ipsum dolor sit amet, consectetur adipiscing elit."), + ("billing_auditor", "Billing Auditor", "Nullam sit amet sem volutpat, congue est nec, euismod leo."), + ("developer", "Developer", "Aenean suscipit facilisis eros, vitae malesuada dui egestas in."), + ("owner", "Owner", "Nullam luctus a arcu non placerat."), + ("security_auditor", "Security Auditor", "In ut leo vitae libero convallis finibus nec ac massa. Aliquam bibendum nulla at eros dapibus tristique."), +] diff --git a/atst/forms/new_member.py b/atst/forms/new_member.py index 90bd1b1c..dc016d25 100644 --- a/atst/forms/new_member.py +++ b/atst/forms/new_member.py @@ -6,6 +6,8 @@ from wtforms.validators import Required, Email, Length from atst.forms.validators import IsNumber from atst.forms.fields import SelectField +from .data import (WORKSPACE_ROLES) + class NewMemberForm(Form): @@ -15,14 +17,7 @@ class NewMemberForm(Form): dod_id = StringField("DOD ID", validators=[Required(), Length(min=10), IsNumber()]) workspace_role = SelectField( "Workspace Role", - choices=[ - ("", "Select a Role"), - ("admin", "Admin"), - ("billing_auditor", "Billing Auditor"), - ("ccpo", "CCPO"), - ("developer", "Developer"), - ("owner", "Owner"), - ("security_auditor", "Security Auditor"), - ], + choices=WORKSPACE_ROLES, validators=[Required()], + default='' ) From 323890b9e3b7443516d743e7c174b59167779e63 Mon Sep 17 00:00:00 2001 From: Andrew Croce Date: Thu, 30 Aug 2018 14:56:05 -0400 Subject: [PATCH 04/12] to json filter --- atst/filters.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/atst/filters.py b/atst/filters.py index 6ecd6d1f..78357a72 100644 --- a/atst/filters.py +++ b/atst/filters.py @@ -1,4 +1,5 @@ import re +import json from flask import current_app as app from werkzeug.datastructures import FileStorage @@ -49,6 +50,8 @@ def mixedContentToJson(value): value["task_order"] = value["task_order"].filename return app.jinja_env.filters["tojson"](value) +def toJson(data): + return json.dumps(data) def register_filters(app): app.jinja_env.filters["iconSvg"] = iconSvg @@ -57,3 +60,4 @@ def register_filters(app): app.jinja_env.filters["readableInteger"] = readableInteger app.jinja_env.filters["getOptionLabel"] = getOptionLabel app.jinja_env.filters["mixedContentToJson"] = mixedContentToJson + app.jinja_env.filters["toJson"] = toJson From 44dfbbf9d052193df9581f89f82ad2f06fed97c1 Mon Sep 17 00:00:00 2001 From: Andrew Croce Date: Thu, 30 Aug 2018 14:56:19 -0400 Subject: [PATCH 05/12] selector styles --- styles/atat.scss | 2 ++ styles/components/_selector.scss | 54 +++++++++++++++++++++++++++++++ styles/elements/_block_lists.scss | 2 ++ styles/elements/_inputs.scss | 10 ++++-- styles/elements/_tooltip.scss | 2 +- 5 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 styles/components/_selector.scss diff --git a/styles/atat.scss b/styles/atat.scss index 1b7b65fd..3d70a544 100644 --- a/styles/atat.scss +++ b/styles/atat.scss @@ -33,6 +33,8 @@ @import 'components/progress_menu.scss'; @import 'components/search_bar'; @import 'components/forms'; +@import 'components/selector'; + @import 'sections/login'; @import 'sections/request_approval'; diff --git a/styles/components/_selector.scss b/styles/components/_selector.scss new file mode 100644 index 00000000..7b95b325 --- /dev/null +++ b/styles/components/_selector.scss @@ -0,0 +1,54 @@ +.selector { + max-width: 30em; + + .trigger { + display: block !important; + } + + legend { + @include h4; + padding-bottom: $gap / 2; + } + + .selector__button { + width: 100%; + height: $input-height; + margin: 0; + padding: $input-padding-vertical 0.7em; + line-height: $input-line-height; + color: $color-base; + font-size: $base-font-size; + font-weight: $font-normal; + text-align: left; + border-width: 1px; + border-style: solid; + border-color: $color-gray; + border-radius: 0; + box-sizing: border-box; + background-color: $color-white; + background-image: none, url('#{$image-path}/arrow-both.svg'), url('#{$image-path}/arrow-both.png'); + background-position: right 1.3rem center; + background-repeat: no-repeat; + background-size: 1rem; + } + + .tooltip { + &.popover { + .popover-inner { + padding: 0; + + .block-list { + margin: 0; + + label { + padding: 0; + } + } + } + + .popover-arrow { + background-color: $color-white; + } + } + } +} diff --git a/styles/elements/_block_lists.scss b/styles/elements/_block_lists.scss index 1da1c14d..a0f3071a 100644 --- a/styles/elements/_block_lists.scss +++ b/styles/elements/_block_lists.scss @@ -106,6 +106,8 @@ justify-content: space-between; &::before { flex-shrink: 0; + margin-right: 0; + margin-left: $gap * 2; } &:hover { diff --git a/styles/elements/_inputs.scss b/styles/elements/_inputs.scss index 53fb9d9f..e3f49aac 100644 --- a/styles/elements/_inputs.scss +++ b/styles/elements/_inputs.scss @@ -37,7 +37,8 @@ input, textarea, - select { + select, + .selector__button { border-color: $state-color; border-width: $border-width; } @@ -72,6 +73,10 @@ position: relative; clear: both; + dd { + font-weight: normal; + } + .icon-validation { position: absolute; top: 100%; @@ -105,7 +110,8 @@ input, textarea, - select { + select, + .selector__button { @include line-max; margin: 0; box-sizing: border-box; diff --git a/styles/elements/_tooltip.scss b/styles/elements/_tooltip.scss index 44876171..0c81d50a 100644 --- a/styles/elements/_tooltip.scss +++ b/styles/elements/_tooltip.scss @@ -68,7 +68,7 @@ background: $color; color: black; padding: 24px; - border-radius: 5px; + //border-radius: 5px; box-shadow: 0 5px 30px rgba(black, .1); } From 9d98b98b4ecbc163e9af427b67167d56ccd80173 Mon Sep 17 00:00:00 2001 From: Andrew Croce Date: Thu, 30 Aug 2018 14:56:37 -0400 Subject: [PATCH 06/12] Use hidden input to hold value --- templates/components/selector.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/components/selector.html b/templates/components/selector.html index c64bf9a0..d5a8f832 100644 --- a/templates/components/selector.html +++ b/templates/components/selector.html @@ -26,6 +26,8 @@ {{ Icon('alert',classes="icon-validation") }} + + @@ -37,7 +39,6 @@