💄 (interval) better interval look
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="dev-session">
|
<div class="dev-session">
|
||||||
<h2>dev {{ position }}</h2>
|
<h1>dev {{ position }}</h1>
|
||||||
<h4 v-show="isTurn">{{ session }}</h4>
|
<h2 v-show="isTurn">{{ session }}</h2>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.dev-session {
|
.dev-session {
|
||||||
h4 {
|
h2 {
|
||||||
font-size: 24pt;
|
font-size: 24pt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,40 +1,24 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="interval-input">
|
<div class="interval-input">
|
||||||
<button v-show="editable" @click="minus">-</button>
|
<button v-show="editable" @click="minus">-</button>
|
||||||
<h3>{{ interval }} {{ label }}</h3>
|
<h2>{{ label }}</h2>
|
||||||
<button v-show="editable" @click="plus">+</button>
|
<button v-show="editable" @click="plus">+</button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent, computed } from '@vue/composition-api'
|
import { defineComponent } from '@vue/composition-api'
|
||||||
import { useInterval } from '../hooks/useInterval'
|
import { useInterval } from '../hooks/useInterval'
|
||||||
|
|
||||||
const MIN_INTERVAL = 1
|
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'IntervalInput',
|
name: 'IntervalInput',
|
||||||
props: {
|
props: {
|
||||||
editable: { type: Boolean, required: true }
|
editable: { type: Boolean, required: true }
|
||||||
},
|
},
|
||||||
setup() {
|
setup() {
|
||||||
const { interval, setInterval } = useInterval()
|
const { minus, plus, label } = useInterval()
|
||||||
|
|
||||||
const minus = () => {
|
|
||||||
if (interval.value > MIN_INTERVAL) {
|
|
||||||
setInterval(interval.value - 1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const plus = () => {
|
|
||||||
setInterval(interval.value + 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
const label = computed(() =>
|
|
||||||
interval.value > MIN_INTERVAL ? 'minutes' : 'minute'
|
|
||||||
)
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
interval,
|
|
||||||
minus,
|
minus,
|
||||||
plus,
|
plus,
|
||||||
label
|
label
|
||||||
@@ -48,7 +32,6 @@ $button-size: 50px;
|
|||||||
|
|
||||||
.interval-input {
|
.interval-input {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
max-width: 50vh;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div class="zone-music">
|
<div class="zone-music">
|
||||||
<div class="pm-field">
|
<div class="pm-field">
|
||||||
<label for="use-music" data-pm-holder>
|
<label for="use-music" data-pm-holder>
|
||||||
<span :class="{ disabled: withMusic }">Focus</span>
|
<span :class="{ disabled: withMusic }">focus</span>
|
||||||
<input
|
<input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="use-music"
|
name="use-music"
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
@change="setWithMusic(!withMusic)"
|
@change="setWithMusic(!withMusic)"
|
||||||
data-pm-checkbox-toggle
|
data-pm-checkbox-toggle
|
||||||
/>
|
/>
|
||||||
<span :class="{ disabled: !withMusic }">Chill</span>
|
<span :class="{ disabled: !withMusic }">chill</span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<ChilledMusic v-if="withMusic" :play="play" @play="play" @pause="pause" />
|
<ChilledMusic v-if="withMusic" :play="play" @play="play" @pause="pause" />
|
||||||
@@ -63,6 +63,6 @@ label[data-pm-holder] {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.disabled {
|
.disabled {
|
||||||
color: darken($color, 60);
|
color: desaturate($color, 70%);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,13 +1,40 @@
|
|||||||
import { useGetters, useActions } from 'vuex-composition-helpers'
|
import { useGetters, useActions } from 'vuex-composition-helpers'
|
||||||
import { GetterTree } from 'vuex'
|
import { GetterTree } from 'vuex'
|
||||||
import { State, RootActions } from '@/store'
|
import { State, RootActions } from '@/store'
|
||||||
|
import { computed } from '@vue/composition-api'
|
||||||
|
|
||||||
|
const MIN_INTERVAL = 0.5
|
||||||
|
|
||||||
export const useInterval = () => {
|
export const useInterval = () => {
|
||||||
const { interval } = useGetters<GetterTree<State, State>>(['interval'])
|
const { interval } = useGetters<GetterTree<State, State>>(['interval'])
|
||||||
const { setInterval } = useActions<RootActions>(['setInterval'])
|
const { setInterval } = useActions<RootActions>(['setInterval'])
|
||||||
|
|
||||||
|
const minus = () => {
|
||||||
|
if (interval.value > MIN_INTERVAL) {
|
||||||
|
setInterval(Math.max(interval.value - 1, MIN_INTERVAL))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const plus = () => {
|
||||||
|
setInterval(Math.floor(interval.value + 1))
|
||||||
|
}
|
||||||
|
|
||||||
|
const label = computed(() => {
|
||||||
|
if (interval.value > 1) {
|
||||||
|
return `${interval.value} minutes`
|
||||||
|
}
|
||||||
|
|
||||||
|
if (interval.value === MIN_INTERVAL) {
|
||||||
|
return '30 seconds'
|
||||||
|
}
|
||||||
|
|
||||||
|
return `${interval.value} minute`
|
||||||
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
interval,
|
interval,
|
||||||
setInterval
|
minus,
|
||||||
|
plus,
|
||||||
|
label
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
@import url('https://fonts.googleapis.com/css2?family=Fira+Mono&display=swap');
|
@import url('https://fonts.googleapis.com/css2?family=DM+Mono&display=swap');
|
||||||
|
|
||||||
@import './variables';
|
@import './variables';
|
||||||
@import './plume';
|
@import './plume';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
$color: #f8efba;
|
$color: #f8efba;
|
||||||
$bgcolor: #2c3a47;
|
$bgcolor: #2c3a47;
|
||||||
$font-family: 'Fira Mono', monospace;
|
$font-family: 'DM Mono', monospace;
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--pm-app-surface-color: #{#2c3a47};
|
--pm-app-surface-color: #{#2c3a47};
|
||||||
|
|||||||
Reference in New Issue
Block a user