Skip to content

Commit f6767ed

Browse files
committed
fix: add shouldEnlargeDay and enlargeDay (FKA showDay) to store; disable enlargeDay on InlineCalendar
1 parent 2afef36 commit f6767ed

File tree

4 files changed

+42
-15
lines changed

4 files changed

+42
-15
lines changed

Diff for: src/lib/components/Datepicker.svelte

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
export let end = calendarDefaults.end;
1616
export let format = calendarDefaults.format;
1717
export let formatted;
18-
export let store = datepickerStore.get({ selected, start, end });
18+
export let store = datepickerStore.get({ selected, start, end, shouldEnlargeDay: true });
1919
export let theme = {};
2020
export let defaultTheme = undefined;
2121

Diff for: src/lib/components/calendar/DayPicker.svelte

+4-5
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
import scrollable from '$lib/directives/scrollable';
1010
import { scrollStep } from '$lib/config/scroll';
1111
12-
let showDay = false;
13-
1412
const duration = 450;
1513
1614
const legend = Array(7)
@@ -24,7 +22,8 @@
2422
const select = (day) => () => {
2523
if (!store.isSelectable(day)) return;
2624
store.setDay(day || $store.selected);
27-
showDay = true;
25+
if (!$store.shouldEnlargeDay) return store.selectDay();
26+
store.enlargeDay();
2827
setTimeout(() => store.selectDay(), duration + 60);
2928
};
3029
@@ -79,7 +78,7 @@
7978
>
8079
<Grid template="repeat(6, 1fr) / repeat(7, 1fr)">
8180
{#each days as day, i (day)}
82-
{#if !showDay || !dayjs(day.date).isSame($store.selected, 'day')}
81+
{#if !$store.enlargeDay || !dayjs(day.date).isSame($store.selected, 'day')}
8382
<a
8483
href="#pickday"
8584
on:keydown|preventDefault
@@ -98,7 +97,7 @@
9897
</Grid>
9998
</InfiniteGrid>
10099
</div>
101-
{#if showDay}
100+
{#if $store.enlargeDay}
102101
<div class="stage selected-big" in:receive|local={{ key }} out:send|local={{ key }}>
103102
{dayjs($store.selected).date()}
104103
</div>

Diff for: src/lib/stores/datepicker.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { writable, get as getFromStore } from 'svelte/store';
22
import dayjs from 'dayjs';
33

4-
const ONE_DAY = 1000 * 60 * 60 * 24;
54
const PICKER_TYPES = ['days', 'months', 'years'];
65

76
const updateSelected = (value, property) => (state) => {
@@ -13,13 +12,15 @@ const pipe = (...fns) => (val) => fns.reduce((accum, fn) => fn(accum), val);
1312

1413
const zeroDay = (date) => dayjs(date).startOf('day').toDate();
1514

16-
const get = ({ selected, start, end }) => {
15+
const get = ({ selected, start, end, shouldEnlargeDay = false }) => {
1716
const { subscribe, set, update } = writable({
1817
open: false,
1918
hasChosen: false,
20-
selected: selected,
19+
selected,
2120
start: zeroDay(start),
2221
end: zeroDay(end),
22+
shouldEnlargeDay,
23+
enlargeDay: false,
2324
year: selected.getFullYear(),
2425
month: selected.getMonth(),
2526
day: selected.getDate(),
@@ -30,6 +31,9 @@ const get = ({ selected, start, end }) => {
3031
return {
3132
set,
3233
subscribe,
34+
enlargeDay(enlargeDay = true) {
35+
update((state) => ({ ...state, enlargeDay }));
36+
},
3337
getSelectableVector(date) {
3438
const { start, end } = getFromStore({ subscribe });
3539
if (date < start) return -1;
@@ -65,7 +69,6 @@ const get = ({ selected, start, end }) => {
6569
setActiveView(newActiveView) {
6670
const newIndex = PICKER_TYPES.indexOf(newActiveView);
6771
if (newIndex === -1) return;
68-
const activeViewDirection = 1;
6972
update(({ activeView, ...state }) => ({
7073
...state,
7174
activeViewDirection: PICKER_TYPES.indexOf(activeView) > newIndex ? -1 : 1,

Diff for: src/routes/docs/theme-editor/[slug].svelte

+30-5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import { setContext } from 'svelte';
1212
import { writable } from 'svelte/store';
1313
import { base } from '$app/paths';
14+
import ToggleSwitch from '$lib/components/generic/ToggleSwitch.svelte';
15+
import datepicker from '$lib/stores/datepicker';
1416
1517
const focused = writable(false);
1618
@@ -20,6 +22,7 @@
2022
let theme;
2123
let jsonEditor;
2224
let lastSlug;
25+
let datepickerStore;
2326
2427
const deepCopy = (obj) =>
2528
Object.entries(obj).reduce(
@@ -55,10 +58,18 @@
5558
<NavBarItem href="{base}/docs/theme-editor/dark">Dark</NavBarItem>
5659
</NavBar>
5760
</div>
58-
<div class="results-panel">
59-
<div />
60-
<InlineCalendar {theme} />
61-
<div />
61+
<div class="secondary-column">
62+
<div class="settings-panel">
63+
{#if $datepickerStore}
64+
<ToggleSwitch bind:value={$datepickerStore.enlargeDay} />
65+
Enlarge Day
66+
{/if}
67+
</div>
68+
<div class="results-panel">
69+
<div />
70+
<InlineCalendar {theme} bind:store={datepickerStore} />
71+
<div />
72+
</div>
6273
</div>
6374
</CodeExample>
6475
</Theme>
@@ -69,10 +80,24 @@
6980
transition: all 180ms linear;
7081
}
7182
83+
.secondary-column {
84+
display: grid;
85+
grid-template-rows: auto 1fr;
86+
}
87+
88+
.settings-panel {
89+
display: grid;
90+
align-items: center;
91+
grid-template-columns: auto auto 1fr;
92+
column-gap: 10px;
93+
padding: 18px;
94+
border-bottom: 1px solid var(--sc-theme-calendar-colors-border);
95+
}
96+
7297
.results-panel {
7398
display: grid;
7499
height: 100%;
75-
grid-template: auto / 1fr auto 1fr;
100+
grid-template: 1fr / 1fr auto 1fr;
76101
background: var(--sc-theme-calendar-colors-background-primary);
77102
padding: 20px 0;
78103
align-items: center;

0 commit comments

Comments
 (0)