Merge pull request #1287 from dalf/style-center-2nd
Theme: add a preference to center the results (Oscar) (2nd edition)
This commit is contained in:
		
						commit
						189df7db4e
					
				| @ -365,6 +365,16 @@ class Preferences: | ||||
|                 locked=is_locked('simple_style'), | ||||
|                 choices=['', 'auto', 'light', 'dark'] | ||||
|             ), | ||||
|             'center_aligment': MapSetting( | ||||
|                 settings['ui']['center_aligment'], | ||||
|                 locked=is_locked('center_aligment'), | ||||
|                 map={ | ||||
|                     '0': False, | ||||
|                     '1': True, | ||||
|                     'False': False, | ||||
|                     'True': True | ||||
|                 } | ||||
|             ), | ||||
|             'advanced_search': MapSetting( | ||||
|                 settings['ui']['advanced_search'], | ||||
|                 locked=is_locked('advanced_search'), | ||||
|  | ||||
| @ -83,6 +83,8 @@ ui: | ||||
|   query_in_title: false | ||||
|   # ui theme | ||||
|   default_theme: simple | ||||
|   # center the results ? | ||||
|   center_aligment: false | ||||
|   # Default interface locale - leave blank to detect from browser information or | ||||
|   # use codes from the 'locales' config section | ||||
|   default_locale: "" | ||||
|  | ||||
| @ -184,6 +184,7 @@ SCHEMA = { | ||||
|         'theme_args': { | ||||
|             'simple_style': SettingsValue(SIMPLE_STYLE, 'auto'), | ||||
|         }, | ||||
|         'center_aligment': SettingsValue(bool, False), | ||||
|         'results_on_new_tab': SettingsValue(bool, False), | ||||
|         'advanced_search': SettingsValue(bool, False), | ||||
|         'query_in_title': SettingsValue(bool, False), | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								searx/static/themes/simple/css/searxng-rtl.min.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								searx/static/themes/simple/css/searxng-rtl.min.css
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								searx/static/themes/simple/css/searxng.min.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								searx/static/themes/simple/css/searxng.min.css
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -243,6 +243,7 @@ | ||||
| 
 | ||||
| /// General Size | ||||
| @results-width: 45rem; | ||||
| @results-sidebar-width: 25rem; | ||||
| @results-offset: 10rem; | ||||
| @results-tablet-offset: 0.5rem; | ||||
| @results-gap: 5rem; | ||||
|  | ||||
							
								
								
									
										118
									
								
								searx/static/themes/simple/src/less/style-center.less
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								searx/static/themes/simple/src/less/style-center.less
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,118 @@ | ||||
| /* | ||||
| --center-page-width overrides the less variable @results-width when the results are centered | ||||
| see the CSS rules for #results in style.less ( grid-template-columns and gap). | ||||
| 
 | ||||
| In this file, the --center-page-width values comes from the Oscar theme (Bootstrap 3). | ||||
| 
 | ||||
| All rules starts with ".center-aligment-yes #main_results" to be enabled only | ||||
| on the /search URL and when the "center alignment" preference is enabled. | ||||
| */ | ||||
| 
 | ||||
| @media screen and (min-width: @phone) { | ||||
|   .center-aligment-yes #main_results { | ||||
|     --center-page-width: 48rem; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| @media screen and (min-width: 62rem) { | ||||
|   .center-aligment-yes #main_results { | ||||
|     --center-page-width: 60rem; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| @media screen and (min-width: @tablet) { | ||||
|   .center-aligment-yes #main_results { | ||||
|     --center-page-width: 73rem; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| @media screen and (min-width: @phone) and (max-width: @tablet) { | ||||
|   // any change must be reset in @media screen and (min-width: @tablet) { ... } | ||||
|   .center-aligment-yes #main_results { | ||||
|     #results { | ||||
|       grid-template-columns: 60% calc(40% - @results-gap); | ||||
|       margin-left: 0; | ||||
|       margin-right: 0; | ||||
|     } | ||||
| 
 | ||||
|     #urls { | ||||
|       .ltr-margin-left(3rem); | ||||
|     } | ||||
| 
 | ||||
|     #sidebar { | ||||
|       .ltr-margin-right(1rem); | ||||
|     } | ||||
| 
 | ||||
|     #backToTop { | ||||
|       .ltr-left(calc(60% + 1rem)); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| @media screen and (min-width: @tablet) { | ||||
|   .center-aligment-yes #main_results { | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     align-items: center; | ||||
| 
 | ||||
|     #search { | ||||
|       width: 100%; | ||||
|       display: flex; | ||||
|       flex-direction: column; | ||||
|       align-items: center; | ||||
|     } | ||||
| 
 | ||||
|     #search_header { | ||||
|       grid-template-columns: calc(50% - 4.5rem - var(--center-page-width) / 2) 3rem var(--center-page-width); | ||||
|       grid-template-areas: "na logo search" "na spacer categories"; | ||||
|       column-gap: 1.2rem;  // from search.less | ||||
|       width: 100%; | ||||
|       padding-left: 0; | ||||
|       padding-right: 0; | ||||
|     } | ||||
| 
 | ||||
|     .search_filters { | ||||
|       .ltr-margin-left(0.5rem); | ||||
|       width: var(--center-page-width); | ||||
|     } | ||||
| 
 | ||||
|     #results { | ||||
|       // from style.less (when screen width = @tablet, reset layout from tablet) | ||||
|       .ltr-margin-right(2rem); | ||||
|       .ltr-margin-left(@results-offset); | ||||
|       // | ||||
| 
 | ||||
|       &.only_template_images, | ||||
|       &.image-detail-open { | ||||
|         // * grid-template-columns and .ltr-margin-left are set in style.less | ||||
|         // * With .image-detail-open.only_template_images, the width is set in detail.less | ||||
|         // * #results is going to be centered because of the #main_results rules, | ||||
|         //   align-self aligns the results on the left or right according to the language. | ||||
|         align-self: flex-start; | ||||
|       } | ||||
| 
 | ||||
|       &:not(.only_template_images):not(.image-detail-open) { | ||||
|         // the gap is set in style.less | ||||
|         .ltr-margin-left(1.5rem); | ||||
|         grid-template-columns: calc(var(--center-page-width) - @results-gap - @results-sidebar-width) @results-sidebar-width; | ||||
| 
 | ||||
|         #backToTop { | ||||
|           .ltr-left(calc(50% - @results-sidebar-width - @results-gap + 1rem + var(--center-page-width) / 2)); | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|       .result .content { | ||||
|         max-width: inherit; | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     // from style.less (when screen width = @tablet, reset layout from tablet) | ||||
|     #urls { | ||||
|       .ltr-margin-left(0); | ||||
|     } | ||||
| 
 | ||||
|     #sidebar { | ||||
|       .ltr-margin-right(0); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -29,6 +29,9 @@ | ||||
| // Search-Field | ||||
| @import "search.less"; | ||||
| 
 | ||||
| // to center the results | ||||
| @import "style-center.less"; | ||||
| 
 | ||||
| // ion-icon | ||||
| .ion-icon { | ||||
|   display: inline-block; | ||||
| @ -460,7 +463,7 @@ article[data-vim-selected].category-social { | ||||
|   margin-bottom: 0; | ||||
|   .ltr-margin-left(@results-offset); | ||||
|   display: grid; | ||||
|   grid-template-columns: @results-width 25rem; | ||||
|   grid-template-columns: @results-width @results-sidebar-width; | ||||
|   grid-template-rows: min-content min-content 1fr min-content; | ||||
|   gap: 0 @results-gap; | ||||
|   grid-template-areas: | ||||
| @ -698,7 +701,11 @@ article[data-vim-selected].category-social { | ||||
|   opacity: 1; | ||||
| } | ||||
| 
 | ||||
| @media screen and (max-width: @tablet) { | ||||
| /* | ||||
|   tablet layout | ||||
| */ | ||||
| 
 | ||||
| .results-tablet() { | ||||
|   .page_with_header { | ||||
|     margin: 2rem 0.5rem; | ||||
|     width: auto; | ||||
| @ -799,6 +806,17 @@ article[data-vim-selected].category-social { | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| @media screen and (min-width: @phone) and (max-width: @tablet) { | ||||
|   // when .center-aligment-yes, see style-center.less | ||||
|   // the media query includes "min-width: @phone" | ||||
|   // because the phone layout includes the tablet layout unconditionally. | ||||
|   .center-aligment-no { | ||||
|     .results-tablet(); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /* Misc */ | ||||
| 
 | ||||
| #main_results div#results.only_template_images { | ||||
|   margin: 1rem @results-tablet-offset 0 @results-tablet-offset; | ||||
|   display: grid; | ||||
| @ -837,7 +855,14 @@ article[data-vim-selected].category-social { | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /* | ||||
|   phone layout | ||||
| */ | ||||
| 
 | ||||
| @media screen and (max-width: @phone) { | ||||
|   // based on the tablet layout | ||||
|   .results-tablet(); | ||||
| 
 | ||||
|   html { | ||||
|     background-color: var(--color-base-background-mobile); | ||||
|   } | ||||
| @ -888,6 +913,10 @@ article[data-vim-selected].category-social { | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /* | ||||
|   small-phone layout | ||||
| */ | ||||
| 
 | ||||
| @media screen and (max-width: @small-phone) { | ||||
|   .result-videos { | ||||
|     img.thumbnail { | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!DOCTYPE html> | ||||
| <html class="no-js theme-{{ preferences.get_value('simple_style') or 'auto' }}" lang="{{ locale_rfc5646 }}" {% if rtl %} dir="rtl"{% endif %}> | ||||
| <html class="no-js theme-{{ preferences.get_value('simple_style') or 'auto' }} center-aligment-{{ preferences.get_value('center_aligment') and 'yes' or 'no' }}" lang="{{ locale_rfc5646 }}" {% if rtl %} dir="rtl"{% endif %}> | ||||
| <head> | ||||
|   <meta charset="UTF-8" /> | ||||
|   <meta name="description" content="SearXNG — a privacy-respecting, hackable metasearch engine"> | ||||
|  | ||||
| @ -213,6 +213,16 @@ | ||||
|       </p> | ||||
|       <div class="description">{{ _('Choose auto to follow your browser settings') }}</div> | ||||
|     </fieldset> | ||||
|     <fieldset> | ||||
|       <legend id="pref_center_aligment">{{ _('Center Alignment') }}</legend> | ||||
|       <p class="value"> | ||||
|         <select name="center_aligment" aria-labelledby="pref_center_aligment"> | ||||
|             <option value="1" {% if preferences.get_value('center_aligment') %}selected="selected"{% endif %}>{{ _('On') }}</option> | ||||
|             <option value="0" {% if not preferences.get_value('center_aligment') %}selected="selected"{% endif %}>{{ _('Off')}}</option> | ||||
|         </select> | ||||
|       </p> | ||||
|       <div class="description">{{ _('Displays results in the center of the page (Oscar layout).') }}</div> | ||||
|     </fieldset> | ||||
|     {% endif %} | ||||
|     {% if 'results_on_new_tab' not in locked_preferences %} | ||||
|     <fieldset> | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user