|
4 | 4 | import {getMonthName} from './DatePickerInputSvelteHelpers.js'; |
5 | 5 | import {moment} from 'obsidian'; |
6 | 6 | import type {Moment} from 'moment'; |
7 | | - import Icon from './Icon.svelte'; |
8 | 7 |
|
9 | 8 | const dispatch = createEventDispatcher(); |
10 | 9 |
|
11 | 10 | export let selectedDate: Moment = moment(); |
12 | | - export let dateFormat: string = 'dddd, MMMM Do YYYY'; |
13 | 11 | export let dateChangeCallback: (date: Moment) => void; |
14 | 12 |
|
15 | | - export let alignRight: boolean; |
16 | | -
|
17 | 13 | let date: number; |
18 | 14 | let month: number; |
19 | 15 | let year: number; |
20 | | - let showDatePicker: boolean; |
| 16 | + let isDatePickerVisible: boolean; |
21 | 17 |
|
22 | 18 | // so that these change with props |
23 | 19 | $: { |
|
54 | 50 | } |
55 | 51 |
|
56 | 52 | function onDateChange(d: { detail: Moment }): void { |
57 | | - showDatePicker = false; |
| 53 | + isDatePickerVisible = false; |
58 | 54 | selectedDate = d.detail; |
59 | 55 | dateChangeCallback(d.detail); |
60 | 56 | } |
61 | 57 | </script> |
62 | 58 |
|
63 | 59 | <style> |
64 | | - .date-picker-input { |
65 | | - position: relative; |
66 | | - color: var(--text-normal); |
67 | | - display: inline-block; |
68 | | - } |
69 | 60 |
|
70 | 61 | .date-picker { |
71 | | - position: absolute; |
72 | | - top: 35px; |
73 | | - display: inline-block; |
74 | | - background: var(--background-secondary); |
75 | | - border-radius: var(--meta-bind-plugin-border-radius); |
76 | | - border: var(--meta-bind-plugin-border-width) solid var(--background-modifier-border); |
77 | | - padding: 10px; |
78 | | - z-index: 1000000; |
79 | | - } |
80 | | -
|
81 | | - .date-picker-text { |
82 | | - background: var(--background-secondary); |
83 | | - border-radius: var(--meta-bind-plugin-border-radius); |
84 | | - border: var(--meta-bind-plugin-border-width) solid var(--background-modifier-border); |
85 | | - padding: 5px 5px 5px 7px; |
86 | | - cursor: pointer; |
87 | | - width: fit-content; |
88 | | - display: inline-block; |
89 | | - } |
90 | | -
|
91 | | - .date-picker-close-layer { |
92 | | - position: fixed; |
93 | | - top: 0; |
94 | | - left: 0; |
95 | | - width: 100vw; |
96 | | - height: 100vh; |
97 | | - z-index: 900000; /* so it overlays everything except the date picker*/ |
| 62 | + display: block; |
| 63 | + padding: var(--size-4-4); |
98 | 64 | } |
99 | 65 |
|
100 | 66 | .date-picker-header { |
101 | 67 | display: flex; |
102 | | - gap: 5px; |
| 68 | + gap: var(--size-4-2); |
103 | 69 | align-items: center; |
104 | 70 | justify-content: space-around; |
105 | 71 | } |
|
108 | 74 | flex: 1; |
109 | 75 | text-align: center; |
110 | 76 | display: flex; |
111 | | - gap: 5px; |
| 77 | + gap: var(--size-4-2); |
112 | 78 | align-items: center; |
113 | 79 | justify-content: center; |
114 | 80 | width: min-content; |
115 | 81 | } |
116 | 82 |
|
117 | 83 | .date-picker-header-text-year { |
118 | 84 | width: 60px; |
119 | | - padding: 5px; |
| 85 | + padding: var(--size-4-2); |
120 | 86 | } |
121 | 87 |
|
122 | 88 | .date-picker-header-text-month { |
|
128 | 94 | } |
129 | 95 | </style> |
130 | 96 |
|
131 | | -<div class="date-picker-input"> |
132 | | - <div class="date-picker-text" on:click={() => showDatePicker = true}> |
133 | | - {selectedDate.format(dateFormat)} |
134 | | - <Icon iconName="calendar"/> |
135 | | - </div> |
136 | | - {#if showDatePicker} |
137 | | - <div class="date-picker-close-layer" on:click={() => showDatePicker = false}></div> |
138 | | - <div class="date-picker" style="{alignRight ? 'left: auto; right: 0;' : 'right: auto; left: 0;'}"> |
139 | | - <div class="date-picker-header"> |
140 | | - <button class="month-switch-button" on:click={prevMonth}>Prev</button> |
141 | | - <div class="date-picker-header-text"> |
142 | | - <span class="date-picker-header-text-month">{getMonthName(month)}</span> |
143 | | - <input class="date-picker-header-text-year" type="number" value="{year.toString()}" |
144 | | - on:input="{changeYear}"> |
145 | | - </div> |
146 | | - <button class="month-switch-button" on:click={nextMonth}>Next</button> |
147 | | - </div> |
148 | | - <Calender |
149 | | - on:dateChange={onDateChange} |
150 | | - month={month} |
151 | | - year={year} |
152 | | - selectedDate={selectedDate}> |
153 | | - </Calender> |
| 97 | +<div class="date-picker"> |
| 98 | + <div class="date-picker-header"> |
| 99 | + <button class="month-switch-button" on:click={prevMonth}>Prev</button> |
| 100 | + <div class="date-picker-header-text"> |
| 101 | + <span class="date-picker-header-text-month">{getMonthName(month)}</span> |
| 102 | + <input class="date-picker-header-text-year" type="number" value="{year.toString()}" |
| 103 | + on:input="{changeYear}"> |
154 | 104 | </div> |
155 | | - {/if} |
| 105 | + <button class="month-switch-button" on:click={nextMonth}>Next</button> |
| 106 | + </div> |
| 107 | + <Calender |
| 108 | + on:dateChange={onDateChange} |
| 109 | + month={month} |
| 110 | + year={year} |
| 111 | + selectedDate={selectedDate}> |
| 112 | + </Calender> |
156 | 113 | </div> |
0 commit comments