From db71a699eb5adfbc26baae2c6f9880aa4443639f Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Wed, 8 May 2019 21:23:25 +0200 Subject: [PATCH 1/6] fix show hide toggle button for small screens --- static/css/utils/showHide.scss | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/static/css/utils/showHide.scss b/static/css/utils/showHide.scss index 1f85fbf36..04143d0ae 100644 --- a/static/css/utils/showHide.scss +++ b/static/css/utils/showHide.scss @@ -23,6 +23,12 @@ $show-hide-toggle-size: 6px; border-top: 2px solid currentColor; transition: transform .2s ease; transform: translateY(-50%) rotate(-45deg); + + @media (max-width: 768px) { + left: auto; + right: 20px; + color: var(--color-font); + } } .show-hide__toggle--right::before { From f1e95daaec200c2c4f87ac515d4df711432380f1 Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Wed, 8 May 2019 21:31:01 +0200 Subject: [PATCH 2/6] fix navbar being unnecessarily scrollable on small screens --- templates/widgets/navbar/navbar.lucius | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/widgets/navbar/navbar.lucius b/templates/widgets/navbar/navbar.lucius index c80900934..ce25a3588 100644 --- a/templates/widgets/navbar/navbar.lucius +++ b/templates/widgets/navbar/navbar.lucius @@ -136,7 +136,7 @@ .navbar__list { + .navbar__list { margin-left: 0; - padding-right: 80px; + padding-right: 40px; } } } From 7dc414e233557828bbdd282e797da2683b0a9e37 Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Wed, 8 May 2019 22:16:35 +0200 Subject: [PATCH 3/6] keep table filter inputs focused even after response arrived --- static/js/utils/asyncTable.js | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/static/js/utils/asyncTable.js b/static/js/utils/asyncTable.js index a8021817b..13598904b 100644 --- a/static/js/utils/asyncTable.js +++ b/static/js/utils/asyncTable.js @@ -161,7 +161,7 @@ tableFilterInputs.search.forEach(function(input) { var debouncedInput = debounce(function() { if (input.value.length === 0 || input.value.length > 2) { - updateFromTableFilter(); + updateFromTableFilter(tableFilterForm); } }, INPUT_DEBOUNCE); input.addEventListener('input', debouncedInput); @@ -170,7 +170,7 @@ tableFilterInputs.input.forEach(function(input) { var debouncedInput = debounce(function() { if (input.value.length === 0 || input.value.length > 2) { - updateFromTableFilter(); + updateFromTableFilter(tableFilterForm); } }, INPUT_DEBOUNCE); input.addEventListener('input', debouncedInput); @@ -178,37 +178,36 @@ tableFilterInputs.change.forEach(function(input) { input.addEventListener('change', function() { - updateFromTableFilter(); + updateFromTableFilter(tableFilterForm); }); }); tableFilterInputs.select.forEach(function(input) { input.addEventListener('change', function() { - updateFromTableFilter(); + updateFromTableFilter(tableFilterForm); }); }); tableFilterForm.addEventListener('submit', function(event) { event.preventDefault(); - updateFromTableFilter(); + updateFromTableFilter(tableFilterForm); }); } - function updateFromTableFilter() { + function updateFromTableFilter(tableFilterForm) { var url = serializeTableFilterToURL(); var callback = null; - var focusedSearch = tableFilterInputs.search.reduce(function(acc, input) { - return acc || (input.matches(':focus') && input); - }, null); - // focus search input - if (focusedSearch) { - var selectionStart = focusedSearch.selectionStart; + var focusedInput = tableFilterForm.querySelector(':focus, :active'); + // focus previously focused input + if (focusedInput) { + var selectionStart = focusedInput.selectionStart; + var focusId = focusedInput.id; callback = function(wrapper) { - var search = wrapper.querySelector('input[type="search"]'); - if (search) { - search.focus(); - search.selectionStart = selectionStart; + var toBeFocused = wrapper.querySelector('#' + focusId); + if (toBeFocused) { + toBeFocused.focus(); + toBeFocused.selectionStart = selectionStart; } }; } From 043de053d569f0995e82ebad4883ba771ff9f2c2 Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Thu, 9 May 2019 20:35:49 +0200 Subject: [PATCH 4/6] keep left padding in asidenav for tablets as well --- static/css/utils/asidenav.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/css/utils/asidenav.scss b/static/css/utils/asidenav.scss index 8af1074e8..e7ab3b50d 100644 --- a/static/css/utils/asidenav.scss +++ b/static/css/utils/asidenav.scss @@ -217,7 +217,7 @@ } /* small list-item-padding for medium to large screens */ -@media (min-width: 1025px) { +@media (min-width: 769px) { .asidenav__list-item { padding-left: 10px; From 13a19e91fb6afdf4b5ae500f7b7aa2dd210bc46b Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Thu, 9 May 2019 20:36:33 +0200 Subject: [PATCH 5/6] display secondary pageactions list below the elipsis --- templates/widgets/pageaction/pageaction.lucius | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/templates/widgets/pageaction/pageaction.lucius b/templates/widgets/pageaction/pageaction.lucius index ebdd5be78..2ff7297f9 100644 --- a/templates/widgets/pageaction/pageaction.lucius +++ b/templates/widgets/pageaction/pageaction.lucius @@ -45,9 +45,14 @@ box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.6); box-sizing: border-box; text-align: center; + transition: box-shadow 0.2s ease; } &:hover { + &::after { + box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.8); + } + .pagenav-secondary__list { display: block; } @@ -58,7 +63,7 @@ position: absolute; display: none; left: 0; - top: 10px; + top: 50px; width: 250px; background-color: white; box-shadow: 0 0 6px 3px var(--color-grey-light); From f63e7dbb762d18415c4008c45d238eb88c04a0a3 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Thu, 9 May 2019 22:27:55 +0200 Subject: [PATCH 6/6] Remove type="search" --- src/Handler/Admin.hs | 6 +++--- src/Handler/Corrections.hs | 2 +- src/Handler/Course.hs | 8 ++++---- src/Handler/Users.hs | 4 ++-- src/Handler/Utils/Table/Columns.hs | 8 ++++---- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Handler/Admin.hs b/src/Handler/Admin.hs index 3e5306383..4e3845895 100644 --- a/src/Handler/Admin.hs +++ b/src/Handler/Admin.hs @@ -447,9 +447,9 @@ postAdminFeaturesR = do ] dbtFilterUI mPrev = mconcat -- [ prismAForm (singletonFilter "key") mPrev $ aopt intField (fslI MsgStudyTermsKey) -- Typing problem exactFilter suffices here - [ prismAForm (singletonFilter "key") mPrev $ aopt (searchField False) (fslI MsgStudyTermsKey) - , prismAForm (singletonFilter "name") mPrev $ aopt (searchField False) (fslI MsgStudyTermsName) - , prismAForm (singletonFilter "incidence") mPrev $ aopt (searchField False) (fslI MsgStudyCandidateIncidence) + [ prismAForm (singletonFilter "key") mPrev $ aopt textField (fslI MsgStudyTermsKey) + , prismAForm (singletonFilter "name") mPrev $ aopt textField (fslI MsgStudyTermsName) + , prismAForm (singletonFilter "incidence") mPrev $ aopt textField (fslI MsgStudyCandidateIncidence) ] dbtParams = def psValidator = def & defaultSorting [SortAscBy "incidence", SortAscBy "key", SortAscBy "name"] diff --git a/src/Handler/Corrections.hs b/src/Handler/Corrections.hs index 4ef07e77d..59a14a556 100644 --- a/src/Handler/Corrections.hs +++ b/src/Handler/Corrections.hs @@ -514,7 +514,7 @@ postCorrectionsR = do [ prismAForm (singletonFilter "course" ) mPrev $ aopt (lift `hoistField` selectField courseOptions) (fslI MsgCourse) , prismAForm (singletonFilter "term" ) mPrev $ aopt (lift `hoistField` selectField termOptions) (fslI MsgTerm) , prismAForm (singletonFilter "school" ) mPrev $ aopt (lift `hoistField` selectField schoolOptions) (fslI MsgCourseSchool) - , Map.singleton "sheet-search" . maybeToList <$> aopt (lift `hoistField` searchField False) (fslI MsgSheet) (Just <$> listToMaybe =<< ((Map.lookup "sheet-search" =<< mPrev) <|> (Map.lookup "sheet" =<< mPrev))) + , Map.singleton "sheet-search" . maybeToList <$> aopt (lift `hoistField` textField) (fslI MsgSheet) (Just <$> listToMaybe =<< ((Map.lookup "sheet-search" =<< mPrev) <|> (Map.lookup "sheet" =<< mPrev))) , prismAForm (singletonFilter "israted" . maybePrism _PathPiece) mPrev $ aopt boolField (fslI MsgRatingTime) ] courseOptions = runDB $ do diff --git a/src/Handler/Course.hs b/src/Handler/Course.hs index 003fdfcdc..34afeefeb 100644 --- a/src/Handler/Course.hs +++ b/src/Handler/Course.hs @@ -195,7 +195,7 @@ makeCourseTable whereClause colChoices psValidator = do ) ] , dbtFilterUI = \mPrev -> mconcat $ catMaybes - [ Just $ prismAForm (singletonFilter "search") mPrev $ aopt (searchField True) (fslI MsgCourseFilterSearch) + [ Just $ prismAForm (singletonFilter "search") mPrev $ aopt textField (fslI MsgCourseFilterSearch) , muid $> prismAForm (singletonFilter "registered" . maybePrism _PathPiece) mPrev (aopt boolField (fslI MsgCourseFilterRegistered)) ] , dbtStyle = def { dbsFilterLayout = defaultDBSFilterLayout } @@ -1096,9 +1096,9 @@ makeCourseUserTable cid restrict colChoices psValidator = do dbtFilterUI mPrev = mconcat [ fltrUserNameEmailUI mPrev , fltrUserMatriclenrUI mPrev - , prismAForm (singletonFilter "degree") mPrev $ aopt (searchField False) (fslI MsgStudyFeatureDegree) - , prismAForm (singletonFilter "field") mPrev $ aopt (searchField False) (fslI MsgCourseStudyFeature) - , prismAForm (singletonFilter "tutorial") mPrev $ aopt (searchField False) (fslI MsgCourseTutorial) + , prismAForm (singletonFilter "degree") mPrev $ aopt textField (fslI MsgStudyFeatureDegree) + , prismAForm (singletonFilter "field") mPrev $ aopt textField (fslI MsgCourseStudyFeature) + , prismAForm (singletonFilter "tutorial") mPrev $ aopt textField (fslI MsgCourseTutorial) ] dbtParams = DBParamsForm { dbParamsFormMethod = POST diff --git a/src/Handler/Users.hs b/src/Handler/Users.hs index 546e3bf91..8af2f6620 100644 --- a/src/Handler/Users.hs +++ b/src/Handler/Users.hs @@ -131,8 +131,8 @@ getUsersR = do ) ] , dbtFilterUI = \mPrev -> mconcat - [ prismAForm (singletonFilter "user-search") mPrev $ aopt (searchField True) (fslI MsgName) - -- , prismAForm (singletonFilter "matriculation" ) mPrev $ aopt (searchField False) (fslI MsgMatrikelNr) + [ prismAForm (singletonFilter "user-search") mPrev $ aopt textField (fslI MsgName) + -- , prismAForm (singletonFilter "matriculation" ) mPrev $ aopt textField (fslI MsgMatrikelNr) , prismAForm (singletonFilter "matriculation" ) mPrev $ aopt matriculationField (fslI MsgMatrikelNr) , prismAForm (singletonFilter "school" ) mPrev $ aopt (lift `hoistField` selectFieldList schoolOptions) (fslI MsgCourseSchool) diff --git a/src/Handler/Utils/Table/Columns.hs b/src/Handler/Utils/Table/Columns.hs index 390741925..c4e4d7081 100644 --- a/src/Handler/Utils/Table/Columns.hs +++ b/src/Handler/Utils/Table/Columns.hs @@ -167,11 +167,11 @@ fltrUserNameLinkUI = fltrUserNameUI fltrUserNameUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) fltrUserNameUI mPrev = - prismAForm (singletonFilter "user-name") mPrev $ aopt (searchField True) (fslI MsgCourseMembers) + prismAForm (singletonFilter "user-name") mPrev $ aopt textField (fslI MsgCourseMembers) fltrUserNameEmailUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) fltrUserNameEmailUI mPrev = - prismAForm (singletonFilter "user-name-email") mPrev $ aopt (searchField True) (fslI MsgCourseMembers) + prismAForm (singletonFilter "user-name-email") mPrev $ aopt textField (fslI MsgCourseMembers) ------------------- -- Matriclenumber @@ -188,7 +188,7 @@ fltrUserMatriclenr queryUser = ( "user-matriclenumber", FilterColumn $ mkContain fltrUserMatriclenrUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) fltrUserMatriclenrUI mPrev = - prismAForm (singletonFilter "user-matriclenumber") mPrev $ aopt (searchField False) (fslI MsgMatrikelNr) + prismAForm (singletonFilter "user-matriclenumber") mPrev $ aopt textField (fslI MsgMatrikelNr) ---------------- @@ -206,6 +206,6 @@ fltrUserEmail queryUser = ( "user-email", FilterColumn $ mkContainsFilter $ quer fltrUserEmailUI :: Maybe (Map FilterKey [Text]) -> AForm (YesodDB UniWorX) (Map FilterKey [Text]) fltrUserEmailUI mPrev = - prismAForm (singletonFilter "user-email") mPrev $ aopt (searchField False) (fslI MsgEMail) + prismAForm (singletonFilter "user-email") mPrev $ aopt textField (fslI MsgEMail)