✌️
This commit is contained in:
parent
3e62884f72
commit
7d390b4fa5
3 changed files with 94 additions and 18 deletions
|
@ -378,6 +378,12 @@ desktop:
|
||||||
title: "Channel"
|
title: "Channel"
|
||||||
settings: "Widget settings"
|
settings: "Widget settings"
|
||||||
|
|
||||||
|
mk-timemachine-home-widget:
|
||||||
|
title: "{1} / {2}"
|
||||||
|
prev: "Previous month"
|
||||||
|
next: "Next month"
|
||||||
|
go: "Click to travel"
|
||||||
|
|
||||||
mk-repost-form:
|
mk-repost-form:
|
||||||
quote: "Quote..."
|
quote: "Quote..."
|
||||||
cancel: "Cancel"
|
cancel: "Cancel"
|
||||||
|
|
|
@ -378,6 +378,12 @@ desktop:
|
||||||
title: "チャンネル"
|
title: "チャンネル"
|
||||||
settings: "ウィジェットの設定"
|
settings: "ウィジェットの設定"
|
||||||
|
|
||||||
|
mk-timemachine-home-widget:
|
||||||
|
title: "{1}月 {2}日"
|
||||||
|
prev: "先月"
|
||||||
|
next: "来月"
|
||||||
|
go: "クリックして時間遡行"
|
||||||
|
|
||||||
mk-repost-form:
|
mk-repost-form:
|
||||||
quote: "引用する..."
|
quote: "引用する..."
|
||||||
cancel: "キャンセル"
|
cancel: "キャンセル"
|
||||||
|
|
|
@ -1,12 +1,20 @@
|
||||||
<mk-timemachine-home-widget>
|
<mk-timemachine-home-widget>
|
||||||
<button onclick={ prev }><i class="fa fa-chevron-circle-left"></i></button>
|
<button onclick={ prev } title="%i18n:desktop.tags.mk-timemachine-home-widget.prev%"><i class="fa fa-chevron-circle-left"></i></button>
|
||||||
<p class="title">{ year }/{ month }</p>
|
<p class="title">{ '%i18n:desktop.tags.mk-timemachine-home-widget.title%'.replace('{1}', year).replace('{2}', month) }</p>
|
||||||
<button onclick={ next }><i class="fa fa-chevron-circle-right"></i></button>
|
<button onclick={ next } title="%i18n:desktop.tags.mk-timemachine-home-widget.next%"><i class="fa fa-chevron-circle-right"></i></button>
|
||||||
|
|
||||||
<div class="calendar">
|
<div class="calendar">
|
||||||
<div class="weekday" each={ day, i in Array(7).fill(0) }>{ weekdayText[i] }</div>
|
<div class="weekday" each={ day, i in Array(7).fill(0) }
|
||||||
|
data-today={ year == today.getFullYear() && month == today.getMonth() + 1 && today.getDay() == i }
|
||||||
|
data-is-donichi={ i == 0 || i == 6 }>{ weekdayText[i] }</div>
|
||||||
<div each={ day, i in Array(paddingDays).fill(0) }></div>
|
<div each={ day, i in Array(paddingDays).fill(0) }></div>
|
||||||
<div class="day" each={ day, i in Array(days).fill(0) } data-today={ isToday(i + 1) } onclick={ go.bind(null, i + 1) }>{ i + 1 }</div>
|
<div class="day" each={ day, i in Array(days).fill(0) }
|
||||||
|
data-today={ isToday(i + 1) }
|
||||||
|
data-selected={ isSelected(i + 1) }
|
||||||
|
data-is-future={ isFuture(i + 1) }
|
||||||
|
data-is-donichi={ isDonichi(i + 1) }
|
||||||
|
onclick={ go.bind(null, i + 1) }
|
||||||
|
title={ isFuture(i + 1) ? null : '%i18n:desktop.tags.mk-timemachine-home-widget.go%' }><div>{ i + 1 }</div></div>
|
||||||
</div>
|
</div>
|
||||||
<style>
|
<style>
|
||||||
:scope
|
:scope
|
||||||
|
@ -55,6 +63,9 @@
|
||||||
flex-wrap wrap
|
flex-wrap wrap
|
||||||
padding 16px
|
padding 16px
|
||||||
|
|
||||||
|
*
|
||||||
|
user-select none
|
||||||
|
|
||||||
> div
|
> div
|
||||||
width calc(100% * (1/7))
|
width calc(100% * (1/7))
|
||||||
text-align center
|
text-align center
|
||||||
|
@ -64,23 +75,57 @@
|
||||||
&.weekday
|
&.weekday
|
||||||
color #19a2a9
|
color #19a2a9
|
||||||
|
|
||||||
&.day
|
&[data-is-donichi]
|
||||||
cursor pointer
|
color #ef95a0
|
||||||
|
|
||||||
&:hover
|
|
||||||
background rgba(0, 0, 0, 0.025)
|
|
||||||
|
|
||||||
&:active
|
|
||||||
background rgba(0, 0, 0, 0.05)
|
|
||||||
|
|
||||||
&[data-today]
|
&[data-today]
|
||||||
color $theme-color-foreground
|
box-shadow 0 0 0 1px #19a2a9 inset
|
||||||
background $theme-color
|
border-radius 6px
|
||||||
|
|
||||||
&:hover
|
&[data-is-donichi]
|
||||||
|
box-shadow 0 0 0 1px #ef95a0 inset
|
||||||
|
|
||||||
|
&.day
|
||||||
|
cursor pointer
|
||||||
|
color #777
|
||||||
|
|
||||||
|
> div
|
||||||
|
border-radius 6px
|
||||||
|
|
||||||
|
&:hover > div
|
||||||
|
background rgba(0, 0, 0, 0.025)
|
||||||
|
|
||||||
|
&:active > div
|
||||||
|
background rgba(0, 0, 0, 0.05)
|
||||||
|
|
||||||
|
&[data-is-donichi]
|
||||||
|
color #ef95a0
|
||||||
|
|
||||||
|
&[data-is-future]
|
||||||
|
cursor default
|
||||||
|
color rgba(#777, 0.5)
|
||||||
|
|
||||||
|
&[data-is-donichi]
|
||||||
|
color rgba(#ef95a0, 0.5)
|
||||||
|
|
||||||
|
&[data-selected]
|
||||||
|
font-weight bold
|
||||||
|
|
||||||
|
> div
|
||||||
|
background rgba(0, 0, 0, 0.025)
|
||||||
|
|
||||||
|
&:active > div
|
||||||
|
background rgba(0, 0, 0, 0.05)
|
||||||
|
|
||||||
|
&[data-today]
|
||||||
|
> div
|
||||||
|
color $theme-color-foreground
|
||||||
|
background $theme-color
|
||||||
|
|
||||||
|
&:hover > div
|
||||||
background lighten($theme-color, 10%)
|
background lighten($theme-color, 10%)
|
||||||
|
|
||||||
&:active
|
&:active > div
|
||||||
background darken($theme-color, 10%)
|
background darken($theme-color, 10%)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -97,6 +142,7 @@
|
||||||
this.today = new Date();
|
this.today = new Date();
|
||||||
this.year = this.today.getFullYear();
|
this.year = this.today.getFullYear();
|
||||||
this.month = this.today.getMonth() + 1;
|
this.month = this.today.getMonth() + 1;
|
||||||
|
this.selected = this.today;
|
||||||
this.weekdayText = [
|
this.weekdayText = [
|
||||||
'%i18n:common.weekday-short.sunday%',
|
'%i18n:common.weekday-short.sunday%',
|
||||||
'%i18n:common.weekday-short.monday%',
|
'%i18n:common.weekday-short.monday%',
|
||||||
|
@ -115,6 +161,19 @@
|
||||||
return this.year == this.today.getFullYear() && this.month == this.today.getMonth() + 1 && day == this.today.getDate();
|
return this.year == this.today.getFullYear() && this.month == this.today.getMonth() + 1 && day == this.today.getDate();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.isSelected = day => {
|
||||||
|
return this.year == this.selected.getFullYear() && this.month == this.selected.getMonth() + 1 && day == this.selected.getDate();
|
||||||
|
};
|
||||||
|
|
||||||
|
this.isFuture = day => {
|
||||||
|
return (new Date(this.year, this.month - 1, day)).getTime() > this.today.getTime();
|
||||||
|
};
|
||||||
|
|
||||||
|
this.isDonichi = day => {
|
||||||
|
const weekday = (new Date(this.year, this.month - 1, day)).getDay();
|
||||||
|
return weekday == 0 || weekday == 6;
|
||||||
|
};
|
||||||
|
|
||||||
this.calc = () => {
|
this.calc = () => {
|
||||||
let days = eachMonthDays[this.month - 1];
|
let days = eachMonthDays[this.month - 1];
|
||||||
|
|
||||||
|
@ -159,7 +218,12 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
this.go = day => {
|
this.go = day => {
|
||||||
this.opts.tl.warp(new Date(this.year, this.month - 1, day, 23, 59, 59, 999));
|
if (this.isFuture(day)) return;
|
||||||
|
const date = new Date(this.year, this.month - 1, day, 23, 59, 59, 999);
|
||||||
|
this.update({
|
||||||
|
selected: date
|
||||||
|
});
|
||||||
|
this.opts.tl.warp(date);
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
</mk-timemachine-home-widget>
|
</mk-timemachine-home-widget>
|
||||||
|
|
Loading…
Reference in a new issue