UX: make 'save' button and question sticky, make big questions scrollable
This commit is contained in:
parent
f954a93b59
commit
a464877629
5 changed files with 35 additions and 15 deletions
|
@ -19,7 +19,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.oh-timecell {
|
.oh-timecell {
|
||||||
background-color: white;
|
background: white;
|
||||||
position: relative;
|
position: relative;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
@ -27,32 +27,38 @@
|
||||||
.oh-table th {
|
.oh-table th {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: medium;
|
font-size: medium;
|
||||||
background-color: #ddd;
|
background: #ddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.oh-table td {
|
.oh-table td {
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
.oh-timecell:hover {
|
.oh-timecell:hover, .oh-timecell-half:hover {
|
||||||
background-color: var(--catch-detail-color) !important;
|
background: var(--catch-detail-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.oh-timecell-selected {
|
.oh-timecell-selected {
|
||||||
background-color: var(--catch-detail-color);
|
background: var(--catch-detail-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.oh-timecell.oh-timecell-5:not(.oh-timecell-half), .oh-timecell.oh-timecell-6:not(.oh-timecell-half) {
|
||||||
|
background: repeating-linear-gradient(-65deg, var(--background-color) 0 4.8px, var(--subtle-detail-color) 7px)
|
||||||
|
}
|
||||||
|
|
||||||
.oh-timecell-half {
|
.oh-timecell-half {
|
||||||
border-bottom: 1px solid #ddd;
|
border-bottom: 1px solid #ddd;
|
||||||
background-color: var(--subtle-detail-color);
|
background: var(--subtle-detail-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.oh-timecell-half.oh-timecell-selected {
|
.oh-timecell-half.oh-timecell-selected {
|
||||||
background-color: var(--catch-detail-color);
|
background: var(--catch-detail-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.oh-table tr {
|
.oh-table tr {
|
||||||
background: #ddd;
|
background: #ddd;
|
||||||
}
|
}
|
||||||
|
@ -81,7 +87,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.oh-timecol-selected > span {
|
.oh-timecol-selected > span {
|
||||||
background-color: var(--catch-detail-color);
|
background: var(--catch-detail-color);
|
||||||
color: var(--background-color);
|
color: var(--background-color);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: block;
|
display: block;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="absolute top-0 right-0 h-screen w-full overflow-auto drop-shadow-2xl md:w-6/12 lg:w-5/12 xl:w-4/12"
|
class="absolute top-0 right-0 h-screen w-full overflow-y-auto drop-shadow-2xl md:w-6/12 lg:w-5/12 xl:w-4/12"
|
||||||
style="max-width: 100vw; max-height: 100vh"
|
style="max-width: 100vw; max-height: 100vh"
|
||||||
>
|
>
|
||||||
<div class="normal-background m-0 flex flex-col">
|
<div class="normal-background m-0 flex flex-col">
|
||||||
|
|
11
src/UI/InputElement/Helpers/OpeningHoursInput.svelte
Normal file
11
src/UI/InputElement/Helpers/OpeningHoursInput.svelte
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<script lang="ts">/**
|
||||||
|
* Opens the 'Opening hours input' in another top level window
|
||||||
|
*/
|
||||||
|
import { UIEventSource } from "../../../Logic/UIEventSource"
|
||||||
|
import ToSvelte from "../../Base/ToSvelte.svelte"
|
||||||
|
import OpeningHoursInput from "../../OpeningHours/OpeningHoursInput"
|
||||||
|
|
||||||
|
export let value: UIEventSource<string>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<ToSvelte construct={new OpeningHoursInput(value)}></ToSvelte>
|
|
@ -6,13 +6,13 @@ import { MapProperties } from "../../Models/MapProperties"
|
||||||
import DateInput from "./Helpers/DateInput.svelte"
|
import DateInput from "./Helpers/DateInput.svelte"
|
||||||
import ColorInput from "./Helpers/ColorInput.svelte"
|
import ColorInput from "./Helpers/ColorInput.svelte"
|
||||||
import BaseUIElement from "../BaseUIElement"
|
import BaseUIElement from "../BaseUIElement"
|
||||||
import OpeningHoursInput from "../OpeningHours/OpeningHoursInput"
|
|
||||||
import WikidataSearchBox from "../Wikipedia/WikidataSearchBox"
|
import WikidataSearchBox from "../Wikipedia/WikidataSearchBox"
|
||||||
import Wikidata from "../../Logic/Web/Wikidata"
|
import Wikidata from "../../Logic/Web/Wikidata"
|
||||||
import { Utils } from "../../Utils"
|
import { Utils } from "../../Utils"
|
||||||
import Locale from "../i18n/Locale"
|
import Locale from "../i18n/Locale"
|
||||||
import { Feature } from "geojson"
|
import { Feature } from "geojson"
|
||||||
import { GeoOperations } from "../../Logic/GeoOperations"
|
import { GeoOperations } from "../../Logic/GeoOperations"
|
||||||
|
import OpeningHoursInput from "./Helpers/OpeningHoursInput.svelte"
|
||||||
|
|
||||||
export interface InputHelperProperties {
|
export interface InputHelperProperties {
|
||||||
/**
|
/**
|
||||||
|
@ -53,7 +53,7 @@ export default class InputHelpers {
|
||||||
}),
|
}),
|
||||||
date: (value) => new SvelteUIElement(DateInput, { value }),
|
date: (value) => new SvelteUIElement(DateInput, { value }),
|
||||||
color: (value) => new SvelteUIElement(ColorInput, { value }),
|
color: (value) => new SvelteUIElement(ColorInput, { value }),
|
||||||
opening_hours: (value) => new OpeningHoursInput(value),
|
opening_hours: (value) => new SvelteUIElement(OpeningHoursInput, {value}),
|
||||||
wikidata: InputHelpers.constructWikidataHelper,
|
wikidata: InputHelpers.constructWikidataHelper,
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
|
|
|
@ -178,8 +178,10 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if config.question !== undefined}
|
{#if config.question !== undefined}
|
||||||
<div class="interactive border-interactive flex flex-col p-1 px-2">
|
<div class="interactive border-interactive flex flex-col p-1 px-2 relative overflow-y-auto" style="max-height: 85vh">
|
||||||
<div class="flex justify-between">
|
<div class="sticky top-0" style="z-index: 11">
|
||||||
|
|
||||||
|
<div class="flex justify-between sticky top-0 interactive">
|
||||||
<span class="font-bold">
|
<span class="font-bold">
|
||||||
<SpecialTranslation t={config.question} {tags} {state} {layer} feature={selectedElement} />
|
<SpecialTranslation t={config.question} {tags} {state} {layer} feature={selectedElement} />
|
||||||
</span>
|
</span>
|
||||||
|
@ -197,9 +199,10 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
</div>
|
||||||
|
|
||||||
{#if config.mappings?.length >= 8}
|
{#if config.mappings?.length >= 8}
|
||||||
<div class="flex w-full">
|
<div class="flex w-full sticky">
|
||||||
<img src="./assets/svg/search.svg" class="h-6 w-6" />
|
<img src="./assets/svg/search.svg" class="h-6 w-6" />
|
||||||
<input type="text" bind:value={$searchTerm} class="w-full" />
|
<input type="text" bind:value={$searchTerm} class="w-full" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -309,7 +312,7 @@
|
||||||
<Tr t={$feedback} />
|
<Tr t={$feedback} />
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
<div class="flex flex-wrap-reverse items-stretch justify-end sm:flex-nowrap">
|
<div class="flex flex-wrap-reverse items-stretch justify-end sm:flex-nowrap sticky bottom-0 interactive" style="z-index: 11">
|
||||||
<!-- TagRenderingQuestion-buttons -->
|
<!-- TagRenderingQuestion-buttons -->
|
||||||
<slot name="cancel" />
|
<slot name="cancel" />
|
||||||
<slot name="save-button" {selectedTags}>
|
<slot name="save-button" {selectedTags}>
|
||||||
|
|
Loading…
Reference in a new issue