diff --git a/src/Handler/Admin.hs b/src/Handler/Admin.hs index b727e912e..7a7cc36f8 100644 --- a/src/Handler/Admin.hs +++ b/src/Handler/Admin.hs @@ -445,9 +445,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 520f21c6d..c294b0b07 100644 --- a/src/Handler/Corrections.hs +++ b/src/Handler/Corrections.hs @@ -517,7 +517,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 dabc8c9d3..e75e27698 100644 --- a/src/Handler/Course.hs +++ b/src/Handler/Course.hs @@ -200,7 +200,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 } @@ -1107,9 +1107,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) 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; 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 { 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; } }; } 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; } } } 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);