Skip to content

Commit ad6ab59

Browse files
author
Nathan Reyes
committed
Add 'pane-width' prop. Bug fixes.
1 parent 23ef833 commit ad6ab59

File tree

13 files changed

+117
-85
lines changed

13 files changed

+117
-85
lines changed

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
# v0.5.4
2+
## Bug Fixes
3+
* Pass missing `page` attribute to `header-title` slot
4+
* Fade input text when dragging date ranges in `v-date-picker`
5+
6+
## Improvements
7+
* Add `pane-width` prop to `v-calendar` for setting pane width manually
8+
* Add `pane-width` as a configurable default setting
9+
* Add `shortMonthLabel` and `shortYearLabel` properties to `page` objects
10+
* Disable pointer events for day cells not in month if `opacity: 0` in `theme-styles.dayCellNotInMonth` style
11+
112
# v0.5.3
213
## Bug Fixes
314
* Detect date range intersections with `disabled-dates`. Closes #12.

docs/components/app/examples/ExStyling-3.vue

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
:select-color='selectColor'
77
:attributes='attributes'
88
:theme-styles='themeStyles'
9-
is-inline>
9+
is-inline
10+
is-expanded
11+
:pane-width='290'>
1012
</v-date-picker>
1113
</template>
1214

@@ -22,6 +24,7 @@ export default {
2224
const startDate = new Date(thisMonthYear, thisMonth, barDate.getDate() - barDate.getDay());
2325
const endDate = new Date(startDate);
2426
endDate.setDate(startDate.getDate() + 6);
27+
const hSpacing = '15px';
2528
return {
2629
selectedDate: {
2730
start: startDate,
@@ -30,15 +33,13 @@ export default {
3033
themeStyles: {
3134
wrapper: {
3235
border: '0',
33-
padding: '10px',
3436
background: 'linear-gradient(to bottom right, #ff5050, #ff66b3)',
35-
width: '300px',
3637
boxShadow: '0 4px 8px 0 rgba(0, 0, 0, 0.14), 0 6px 20px 0 rgba(0, 0, 0, 0.13)',
3738
borderRadius: '5px',
3839
},
3940
header: {
4041
color: '#fafafa',
41-
padding: '10px 5px 20px 5px',
42+
padding: `20px ${hSpacing}`,
4243
},
4344
headerHorizontalDivider: {
4445
borderTop: 'solid rgba(255, 255, 255, 0.2) 1px',
@@ -47,7 +48,10 @@ export default {
4748
weekdays: {
4849
color: '#6eded1',
4950
fontWeight: '600',
50-
padding: '20px 5px 5px 5px',
51+
padding: `20px ${hSpacing} 5px ${hSpacing}`,
52+
},
53+
weeks: {
54+
padding: `0 ${hSpacing} 10px ${hSpacing}`,
5155
},
5256
dayContent: {
5357
color: '#fafafa',

docs/components/home/util/calendarProps.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ export default [
4646
default: '<code>false</code>',
4747
themable: true,
4848
},
49+
{
50+
name: '<code>pane-width: Number</code>',
51+
description: 'Width of a single pane, in pixels.',
52+
default: '<code>256</code>',
53+
},
4954
{
5055
name: '<code>is-expanded: Boolean</code>',
5156
description: 'Expands calendar or calendars to fill the full width of its container.',

index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
</head>
1212
<body>
1313
<div id="app"></div>
14+
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=Promise,Array.prototype.find"></script>
1415
<!-- built files will be auto injected -->
1516
</body>
1617
</html>

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "v-calendar",
3-
"version": "0.5.3",
3+
"version": "0.5.4",
44
"description": "A clean and extendable plugin for building simple attributed calendars in Vue.js.",
55
"keywords": [
66
"vue",

src/components/Calendar.vue

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<div
33
class='c-pane-container'
44
:class='{ "is-double-paned": isDoublePaned_, "is-expanded": isExpanded }'
5-
:style='themeStyles_.wrapper'>
5+
:style='wrapperStyle'>
66
<calendar-pane
77
:position='isDoublePaned_ ? 1 : 0'
88
:page.sync='fromPage_'
@@ -65,6 +65,7 @@ export default {
6565
toPage: Object,
6666
isDoublePaned: Boolean,
6767
isExpanded: Boolean,
68+
paneWidth: { type: Number, default: defaults.paneWidth },
6869
themeStyles: Object,
6970
attributes: Array,
7071
},
@@ -77,7 +78,7 @@ export default {
7778
},
7879
computed: {
7980
isDoublePaned_() {
80-
return this.isDoublePaned && this.windowWidth >= 480;
81+
return this.isDoublePaned && this.windowWidth >= ((2 * this.paneWidth) + 30);
8182
},
8283
paneCentered() {
8384
return this.isDoublePaned && !this.isDoublePaned_;
@@ -91,8 +92,24 @@ export default {
9192
return null;
9293
},
9394
themeStyles_() {
95+
if (!this.themeStyles) return defaults.themeStyles;
9496
// Mix user supplied styles with default styles
95-
return { ...defaults.themeStyles, ...this.themeStyles };
97+
return Object.keys(defaults.themeStyles).reduce((obj, key) => {
98+
if (Object.prototype.hasOwnProperty.call(this.themeStyles, key)) {
99+
obj[key] = {
100+
...defaults.themeStyles[key],
101+
...this.themeStyles[key],
102+
};
103+
}
104+
return obj;
105+
}, { ...defaults.themeStyles });
106+
},
107+
wrapperStyle() {
108+
const minWidth = `${this.isDoublePaned_ ? this.paneWidth * 2 : this.paneWidth}px`;
109+
return {
110+
...this.themeStyles_.wrapper,
111+
minWidth,
112+
};
96113
},
97114
attributes_() {
98115
return AttributeStore(this.attributes);
@@ -180,12 +197,10 @@ export default {
180197
line-height: 1.5
181198
color: $font-color
182199
min-width: $pane-width
183-
width: $pane-width
184200
-webkit-font-smoothing: antialiased
185201
-moz-osx-font-smoothing: grayscale
186202
&.is-double-paned
187203
min-width: $pane-width * 2
188-
width: $pane-width * 2
189204
&.is-expanded
190205
width: 100%
191206

src/components/CalendarDay.vue

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,15 +153,18 @@ export default {
153153
},
154154
dayCellStyle() {
155155
// Merge 'not in month' style if needed
156-
return this.inMonth ? this.styles.dayCell : {
156+
return {
157157
...this.styles.dayCell,
158-
...this.styles.dayCellNotInMonth,
158+
...(!this.inMonth && this.styles.dayCellNotInMonth),
159159
};
160160
},
161161
contentStyle_() {
162-
let style = this.contentStyle;
163-
if (this.isHovered) style = { ...style, ...this.contentHoverStyle };
164-
return style;
162+
const disableEvents = this.dayCellStyle && (parseFloat(this.dayCellStyle.opacity) === 0 || this.dayCellStyle.pointerEvents === 'none');
163+
return {
164+
...this.contentStyle,
165+
...(this.isHovered && this.contentHoverStyle),
166+
...(disableEvents && { pointerEvents: 'none' }),
167+
};
165168
},
166169
attributesList() {
167170
return this.attributes.find(this.dayInfo);

src/components/CalendarPane.vue

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
ref='pane'
44
:class='["c-pane", { "is-single": position === 0 }]'>
55
<!--Header-->
6-
<div class='c-header-wrapper'>
6+
<div class='c-section-wrapper'>
77
<!--Header vertical divider-->
88
<div
9+
class='c-vertical-divider'
910
:style='verticalDividers.header'
1011
v-if='verticalDividers.header'>
1112
</div>
@@ -48,7 +49,8 @@
4849
:key='p.key'
4950
v-if='p === page_'>
5051
<slot
51-
name='header-title'>
52+
name='header-title'
53+
:page='p'>
5254
{{ `${p.monthLabel} ${p.yearLabel}` }}
5355
</slot>
5456
</div>
@@ -76,42 +78,44 @@
7678
</div>
7779
</div>
7880
</slot>
79-
</div>
80-
<!--Header horizontal divider-->
81-
<div
82-
class='c-horizontal-divider'
83-
:style='headerHorizontalDividerStyle_'
84-
v-if='headerHorizontalDividerStyle_'>
81+
<!--Header horizontal divider-->
82+
<div
83+
class='c-horizontal-divider'
84+
:style='headerHorizontalDividerStyle_'
85+
v-if='headerHorizontalDividerStyle_'>
86+
</div>
8587
</div>
8688
<!--Weekdays-->
87-
<div class='c-weekdays-wrapper'>
89+
<div class='c-section-wrapper'>
8890
<!--Weekday vertical divider-->
8991
<div
92+
class='c-vertical-divider'
9093
:style='verticalDividers.weekdays'
9194
v-if='verticalDividers.weekdays'>
9295
</div>
96+
<!--Weekday labels-->
9397
<div
9498
class='c-weekdays'
9599
:style='weekdayStyle_'>
96-
<!--Weekday labels-->
97100
<div
98101
v-for='(weekday, i) in weekdayLabels_'
99102
:key='i + 1'
100103
class='c-weekday'>
101104
{{ weekday }}
102105
</div>
103106
</div>
104-
</div>
105-
<!--Weekday horizontal divider-->
106-
<div
107-
class='c-horizontal-divider'
108-
:style='weekdaysHorizontalDividerStyle_'
109-
v-if='weekdaysHorizontalDividerStyle_'>
107+
<!--Weekday horizontal divider-->
108+
<div
109+
class='c-horizontal-divider'
110+
:style='weekdaysHorizontalDividerStyle_'
111+
v-if='weekdaysHorizontalDividerStyle_'>
112+
</div>
110113
</div>
111114
<!--Weeks-->
112-
<div class='c-weeks-wrapper'>
115+
<div class='c-section-wrapper'>
113116
<!--Weeks vertical divider-->
114117
<div
118+
class='c-vertical-divider'
115119
:style='verticalDividers.weeks'
116120
v-if='verticalDividers.weeks'>
117121
</div>
@@ -382,7 +386,9 @@ export default {
382386
key,
383387
month,
384388
year,
389+
shortMonthLabel: defaults.shortMonthLabels[month - 1],
385390
monthLabel: this.monthLabels[month - 1],
391+
shortYearLabel: year.toString().substring(2),
386392
yearLabel: year.toString(),
387393
monthComps,
388394
prevMonthComps,
@@ -447,9 +453,10 @@ export default {
447453
&.is-single
448454
width: 100%
449455
450-
.c-header-wrapper
456+
.c-section-wrapper
457+
position: relative
451458
display: flex
452-
z-index: 1
459+
flex-direction: column
453460
454461
.c-header
455462
flex: 1
@@ -502,8 +509,12 @@ export default {
502509
.c-horizontal-divider
503510
align-self: center
504511
505-
.c-weekdays-wrapper
512+
.c-vertical-divider
506513
display: flex
514+
align-items: center
515+
position: absolute
516+
left: 0
517+
height: 100%
507518
508519
.c-weekdays
509520
flex-grow: 1
@@ -518,9 +529,6 @@ export default {
518529
flex: 1
519530
cursor: default
520531
521-
.c-weeks-wrapper
522-
display: flex
523-
524532
.c-weeks
525533
flex-grow: 1
526534
padding: $weeks-padding

src/components/DatePicker.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
<input
3232
ref='input'
3333
type='text'
34-
:class='[inputClass, { "c-input-drag": !value && dragValue }]'
34+
:class='[inputClass, { "c-input-drag": dragValue }]'
3535
:style='inputStyle'
3636
:placeholder='inputPlaceholder_'
3737
:value='inputValue'

0 commit comments

Comments
 (0)