Skip to content

Commit 8087bcd

Browse files
committed
Make LoopControls responsive (wrt. Web Design)
1 parent 5d6833a commit 8087bcd

File tree

2 files changed

+21
-21
lines changed

2 files changed

+21
-21
lines changed

src/lib/LoopControls.svelte

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,36 +21,34 @@
2121
let last = $derived(loop[0] === loop[1])
2222
</script>
2323

24-
<div class="join w-full">
25-
<div class="join-item flex flex-col">
26-
<button
27-
aria-label={last ? 'Repeat' : 'Do not repeat'}
28-
class="btn join-item"
29-
onclick={() => (loop[1] = last ? Infinity : loop[0])}
30-
>
31-
<div class={['swap', last && 'swap-active']}>
32-
<Loop class="swap-off" />
33-
<NoLoop class="swap-on" />
34-
</div>
35-
</button>
36-
</div>
37-
<div class="join-item flex flex-row shadow-md">
38-
<div class="bg-base-100 ps-4 muted relative flex place-items-center">Loop</div>
24+
<div class="join grid grid-cols-[auto_1fr] md:grid-cols-[auto_auto_1fr_auto] grid-flow-col-dense">
25+
<button
26+
aria-label={last ? 'Repeat' : 'Do not repeat'}
27+
class="btn join-item max-md:rounded-bl-none"
28+
onclick={() => (loop[1] = last ? Infinity : loop[0])}
29+
>
30+
<div class={['swap', last && 'swap-active']}>
31+
<Loop class="swap-off" />
32+
<NoLoop class="swap-on" />
33+
</div>
34+
</button>
35+
<div class="bg-base-100 flex flex-row shadow-md justify-center items-center max-md:rounded-tr-sm">
36+
<div class="ps-4 muted">Loop</div>
3937
<EditableNumber
4038
min={1}
41-
class="bg-base-100 px-3"
39+
class="px-3"
4240
bind:value={() => loop[0], v => ((loop[0] = v), (loop[1] = Math.max(loop[0], loop[1])))}
4341
></EditableNumber>
44-
<div class="bg-base-100 muted relative flex place-items-center">of</div>
42+
<div class="muted">of</div>
4543
<EditableNumber
46-
class="bg-base-100 ps-3 pe-4"
44+
class="ps-3 pe-4"
4745
bind:value={() => loop[1], v => ((loop[1] = v), (loop[0] = Math.min(loop[0], loop[1])))}
4846
></EditableNumber>
4947
</div>
50-
<StartStop bind:time bind:loop bind:running {beeping} />
48+
<StartStop bind:time bind:loop bind:running {beeping} class="max-md:rounded-br-sm" />
5149
<button
5250
aria-label="Rewind"
53-
class="btn join-item"
51+
class="btn join-item max-md:col-start-1 max-md:row-start-2 max-md:rounded-none max-md:rounded-bl-sm"
5452
disabled={loop[0] === 1 && time[0] === 0}
5553
onclick={() => ((loop[0] = 1), (time[0] = 0))}
5654
>

src/lib/StartStop.svelte

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@
99
loop = $bindable([1, Infinity]),
1010
running = $bindable(false),
1111
beeping,
12+
class: cls,
1213
}: {
1314
time: [current: number, goal: number]
1415
loop: [current: number, goal: number]
1516
running: boolean
1617
beeping: boolean
18+
class?: string
1719
} = $props()
1820
1921
let beep: HTMLAudioElement
@@ -52,7 +54,7 @@
5254
})
5355
</script>
5456

55-
<button type="button" class="btn grow" disabled={!runnable} onclick={click}>
57+
<button type="button" class={[cls, 'btn grow']} disabled={!runnable} onclick={click}>
5658
{#if action === 'Start'}
5759
<Play />
5860
{:else if action === 'Resume'}

0 commit comments

Comments
 (0)