@salyra-ui/calendar 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +27 -0
- package/dist/angular/Action.d.ts +13 -0
- package/dist/angular/CalendarNumber.d.ts +10 -0
- package/dist/angular/CalendarView.d.ts +16 -0
- package/dist/angular/Cell.d.ts +15 -0
- package/dist/angular/Continuous.d.ts +13 -0
- package/dist/angular/DateField.d.ts +15 -0
- package/dist/angular/DayTrigger.d.ts +15 -0
- package/dist/angular/Grid.d.ts +7 -0
- package/dist/angular/Heading.d.ts +11 -0
- package/dist/angular/MonthYearSelect.d.ts +11 -0
- package/dist/angular/PickerRoot.d.ts +51 -0
- package/dist/angular/TimeSegmentField.d.ts +16 -0
- package/dist/angular/Week.d.ts +7 -0
- package/dist/angular/Weekday.d.ts +15 -0
- package/dist/angular/index.d.ts +43 -0
- package/dist/angular/index.js +1 -0
- package/dist/astro/Action.astro +7 -0
- package/dist/astro/Calendar.astro +10 -0
- package/dist/astro/Cell.astro +13 -0
- package/dist/astro/Continuous.astro +9 -0
- package/dist/astro/DayTrigger.astro +7 -0
- package/dist/astro/Field.astro +11 -0
- package/dist/astro/Grid.astro +3 -0
- package/dist/astro/Heading.astro +7 -0
- package/dist/astro/MonthSelect.astro +13 -0
- package/dist/astro/Number.astro +7 -0
- package/dist/astro/Period.astro +10 -0
- package/dist/astro/Root.astro +15 -0
- package/dist/astro/Segment.astro +10 -0
- package/dist/astro/Week.astro +3 -0
- package/dist/astro/Weekday.astro +13 -0
- package/dist/astro/YearSelect.astro +13 -0
- package/dist/browser/calendar.js +1535 -0
- package/dist/browser/calendar.min.js +1 -0
- package/dist/core/calendar.d.ts +48 -0
- package/dist/core/day.d.ts +6 -0
- package/dist/core/dom.d.ts +50 -0
- package/dist/core/format.d.ts +10 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.js +1 -0
- package/dist/core/popover.d.ts +6 -0
- package/dist/core/scroller.d.ts +13 -0
- package/dist/core/store.d.ts +107 -0
- package/dist/core/time.d.ts +12 -0
- package/dist/core/timezone.d.ts +3 -0
- package/dist/react/Calendar.d.ts +29 -0
- package/dist/react/Continuous.d.ts +5 -0
- package/dist/react/Fields.d.ts +25 -0
- package/dist/react/Root.d.ts +10 -0
- package/dist/react/context.d.ts +74 -0
- package/dist/react/index.d.ts +40 -0
- package/dist/react/index.js +1 -0
- package/dist/styles.css +115 -0
- package/dist/styles.min.css +1 -0
- package/dist/svelte/Action.svelte +12 -0
- package/dist/svelte/CalendarView.svelte +3 -0
- package/dist/svelte/Cell.svelte +5 -0
- package/dist/svelte/Continuous.svelte +3 -0
- package/dist/svelte/DateRoot.svelte +3 -0
- package/dist/svelte/DateTimeRoot.svelte +3 -0
- package/dist/svelte/DayTrigger.svelte +14 -0
- package/dist/svelte/Field.svelte +11 -0
- package/dist/svelte/Grid.svelte +5 -0
- package/dist/svelte/Heading.svelte +5 -0
- package/dist/svelte/MonthSelect.svelte +19 -0
- package/dist/svelte/Navigation.svelte +14 -0
- package/dist/svelte/Number.svelte +5 -0
- package/dist/svelte/Period.svelte +15 -0
- package/dist/svelte/Root.svelte +3 -0
- package/dist/svelte/Segment.svelte +14 -0
- package/dist/svelte/Time.svelte +12 -0
- package/dist/svelte/TimeRoot.svelte +3 -0
- package/dist/svelte/Week.svelte +5 -0
- package/dist/svelte/Weekday.svelte +10 -0
- package/dist/svelte/YearSelect.svelte +19 -0
- package/dist/svelte/context.ts +1 -0
- package/dist/svelte/index.ts +1 -0
- package/dist/vanilla/index.d.ts +41 -0
- package/dist/vanilla/index.js +1 -0
- package/dist/vue/Calendar.d.ts +106 -0
- package/dist/vue/Continuous.d.ts +9 -0
- package/dist/vue/Fields.d.ts +145 -0
- package/dist/vue/Root.d.ts +112 -0
- package/dist/vue/context.d.ts +40 -0
- package/dist/vue/index.d.ts +208 -0
- package/dist/vue/index.js +1 -0
- package/package.json +101 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";export*from"../core/index.js";import{createContext as K,useContext as Q,useSyncExternalStore as U}from"react";var h=K(null);function u(){let e=Q(h);if(!e)throw new Error("Picker components require Root");return e}function f(){let e=u();return U(e.subscribe,e.getSnapshot,e.getSnapshot)}function ge(e=0){return f(),u().getMonth(e)}import{useEffect as S,useRef as A,useState as X}from"react";import{createPickerStore as Z}from"../core/index.js";import{jsx as L}from"react/jsx-runtime";function g({store:e,children:n,value:t,onValueChange:o,...r}){let[i]=X(()=>e?(e.setOptions(r),t!==void 0&&e.setValue(t),e):Z({...r,value:t})),l=i.getSnapshot().options;if(r.kind&&r.kind!==l.kind||r.selection&&r.selection!==l.selection)throw new RangeError("Remount Root to change kind or selection");let s=A(o);s.current=o,S(()=>i.subscribeValue(p=>s.current?.(p)),[i]),S(()=>{t!==void 0&&i.setValue(t)},[i,t]);let m=A(r);return S(()=>{let p=new Set([...Object.keys(m.current),...Object.keys(r)]),d={};for(let a of p){if(["kind","selection","defaultValue","month"].includes(a))continue;let T=a;Object.is(m.current[T],r[T])||Object.assign(d,{[a]:r[T]})}m.current=r,Object.keys(d).length&&i.setOptions(d)}),L(h.Provider,{value:i,children:n})}var Ee=e=>L(g,{...e,kind:"date"}),xe=e=>L(g,{...e,kind:"time"}),Pe=e=>L(g,{...e,kind:"datetime"});import{forwardRef as M,useEffect as O,useRef as y}from"react";import{bindCalendar as ee,bindDayTrigger as te,calendarMarkup as ne,dayAttributes as re,dayTriggerAttributes as oe,formatMonth as ie,weekdayLabels as le,escapeHTML as ue}from"../core/index.js";import{jsx as b}from"react/jsx-runtime";function D(e,n){typeof e=="function"?e(n):e&&(e.current=n)}var w=M(function({renderCell:n,renderWeekday:t,weekdays:o,onDayClick:r,onSelect:i,...l},s){let m=u(),p=y(null),d=y({renderCell:n,renderWeekday:t,weekdays:o,onDayClick:r,onSelect:i});return d.current={renderCell:n,renderWeekday:t,weekdays:o,onDayClick:r,onSelect:i},O(()=>ee(p.current,m,{weekdays:o,renderCell:(...a)=>d.current.renderCell?.(...a)??`<button type="button" data-day-trigger data-date="${a[0].date}">${a[0].day}</button>`,renderWeekday:(a,T)=>d.current.renderWeekday?.(a,T)??ue(T),onDayClick:(...a)=>d.current.onDayClick?.(...a),onSelect:a=>d.current.onSelect?.(a)}),[m,o,n,t]),b("div",{...l,"data-part":"calendar",dangerouslySetInnerHTML:{__html:ne(m,{renderCell:n,renderWeekday:t,weekdays:o})},ref:a=>{p.current=a,D(s,a)}})}),V=M(function(n,t){return b("div",{...n,role:"grid","data-part":"grid",ref:t})}),I=M(function(n,t){return b("div",{...n,role:"row","data-part":"week",ref:t})}),N=M(function({date:n,outside:t,...o},r){f();let i=u();return b("div",{...o,...re(i,n,t),role:"gridcell","data-part":"cell",ref:r})}),B=M(function({date:n,children:t,...o},r){return b("span",{...o,"data-part":"number",ref:r,children:t??parseInt(n.slice(-2),10)})}),F=M(function({date:n,outside:t,onSelect:o,...r},i){let l=u(),s=f(),m=y(null),p=y(o);return p.current=o,O(()=>te(m.current,l,n,{outside:t,disabled:r.disabled??!1,onSelect:d=>p.current?.(d)}),[l,n,t,r.disabled]),b("button",{...r,...oe(l,n,t),"data-day-trigger":"",disabled:r.disabled||s.options.disabled||l.getDay(n).disabled,tabIndex:n===s.focusedDate&&!t?0:-1,type:r.type??"button",ref:d=>{m.current=d,D(i,d)}})}),Y=M(function({offset:n=0,children:t,...o},r){let i=f(),l=u();return b("h3",{...o,"aria-live":"polite",ref:r,children:t??ie(l.getMonth(n),i.options.locale)})}),_=M(function({day:n,children:t,...o},r){let i=f(),l=le(i.options.locale,i.options.weekStartsOn).find(s=>s.weekday===n)?.label;return b("span",{...o,role:"columnheader","data-part":"weekday","data-weekday":n,"data-weekend":i.options.weekend.includes(n)?"":void 0,ref:r,children:t??l})});function W({direction:e,children:n,...t}){let o=f(),r=u();return b("button",{...t,type:"button",disabled:t.disabled||o.options.disabled,onClick:i=>{if(t.onClick?.(i),!i.defaultPrevented)try{r.navigate(e)}catch(l){if(!(l instanceof RangeError))throw l}},children:n??(e===1?"Next month":"Previous month")})}import{forwardRef as E,useEffect as x,useRef as P}from"react";import{bindDateField as ae,bindTimeSegment as G,pointFor as R,timeSegmentValue as $}from"../core/index.js";import{Fragment as ce,jsx as c,jsxs as H}from"react/jsx-runtime";function v(e,n){typeof e=="function"?e(n):e&&(e.current=n)}var Ye=E(function({endpoint:n="start",...t},o){let r=u(),i=P(null);return x(()=>ae(i.current,r,n),[r,n,t.disabled,t.readOnly]),c("input",{...t,type:"text",defaultValue:t.defaultValue??R(r.getSnapshot().draft,n)?.date??"",placeholder:t.placeholder??"YYYY-MM-DD",ref:l=>{i.current=l,v(o,l)}})}),k=E(function({part:n,endpoint:t="start",...o},r){let i=u(),l=P(null);return x(()=>G(l.current,i,n,t),[i,n,t,o.disabled,o.readOnly]),c("input",{...o,type:"number","data-part":n,defaultValue:o.defaultValue??$(R(i.getSnapshot().draft,t)?.time,n,i.getSnapshot().options.hourCycle),ref:s=>{l.current=s,v(r,s)}})}),se=E(function({endpoint:n="start",children:t,...o},r){let i=u(),l=P(null);return x(()=>G(l.current,i,"period",n),[i,n,o.disabled]),c("select",{...o,defaultValue:o.defaultValue??$(R(i.getSnapshot().draft,n)?.time,"period",i.getSnapshot().options.hourCycle),ref:s=>{l.current=s,v(r,s)},children:t??H(ce,{children:[c("option",{children:"AM"}),c("option",{children:"PM"})]})})});function _e({endpoint:e="start",className:n,labels:t={},...o}){let r=f();return H("div",{...o,className:n??"sp-time",children:[H("label",{children:[t.hour??"Hours",c(k,{part:"hour",endpoint:e})]}),H("label",{children:[t.minute??"Minutes",c(k,{part:"minute",endpoint:e})]}),r.options.seconds&&H("label",{children:[t.second??"Seconds",c(k,{part:"second",endpoint:e})]}),r.options.hourCycle===12&&H("label",{children:[t.period??"Period",c(se,{endpoint:e})]})]})}function j({action:e,children:n,...t}){let o=u(),r=f();return c("button",{...t,type:"button",disabled:t.disabled||r.options.disabled||r.options.readOnly,onClick:i=>{t.onClick?.(i),i.defaultPrevented||o[e]()},children:n??e})}function q(e){let n=u(),t=f();return c("select",{...e,disabled:e.disabled||t.options.disabled,value:t.visibleMonth.month,onChange:o=>{e.onChange?.(o),o.defaultPrevented||n.setVisibleMonth({...t.visibleMonth,month:globalThis.Number(o.target.value)})},children:e.children??Array.from({length:12},(o,r)=>c("option",{value:r+1,children:r+1},r))})}function J({from:e=1900,to:n=2100,...t}){let o=u(),r=f();return c("select",{...t,disabled:t.disabled||r.options.disabled,value:r.visibleMonth.year,onChange:i=>{t.onChange?.(i),i.defaultPrevented||o.setVisibleMonth({...r.visibleMonth,year:globalThis.Number(i.target.value)})},children:t.children??Array.from({length:n-e+1},(i,l)=>c("option",{value:e+l,children:e+l},l))})}function z(e){let n=f();return c("output",{...e,children:e.children??JSON.stringify(n.value)})}import{useRef as de,useEffect as fe,useState as me}from"react";import{bindMonthScroller as pe,monthScrollerMarkup as be}from"../core/index.js";import{jsx as Me}from"react/jsx-runtime";function C({options:e={},...n}){let t=u(),o=de(null),[r]=me(()=>be(t,e));return fe(()=>pe(o.current,t,e),[t,e]),Me("div",{...n,ref:o,dangerouslySetInnerHTML:{__html:r}})}var Te={Continuous:C,Action:j,MonthSelect:q,YearSelect:J,Output:z,Grid:V,Week:I,Cell:N,Number:B,DayTrigger:F,Heading:Y,Weekday:_,Navigation:W},et={Root:g,...Te,View:w};export{j as Action,et as Calendar,w as CalendarView,N as Cell,C as Continuous,Ee as DateRoot,Pe as DateTimeRoot,F as DayTrigger,Ye as Field,V as Grid,Y as Heading,q as MonthSelect,W as Navigation,B as Number,z as Output,se as Period,h as PickerContext,g as Root,k as Segment,_e as Time,xe as TimeRoot,I as Week,_ as Weekday,J as YearSelect,ge as useCalendarMonth,f as usePicker,u as usePickerStore};
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
:where(.sp-calendar) {
|
|
2
|
+
--sp-accent: #e4002b;
|
|
3
|
+
--sp-selected-text: #fff;
|
|
4
|
+
--sp-range: #fce5ea;
|
|
5
|
+
--sp-outside: #737373;
|
|
6
|
+
--sp-border: #dddde2;
|
|
7
|
+
color: #181818;
|
|
8
|
+
font-family:
|
|
9
|
+
"Helvetica Neue",
|
|
10
|
+
Helvetica,
|
|
11
|
+
Arial,
|
|
12
|
+
sans-serif;
|
|
13
|
+
}
|
|
14
|
+
.sp-calendar {
|
|
15
|
+
display: grid;
|
|
16
|
+
grid-template-columns: repeat(var(--sp-months, 1), minmax(0, 1fr));
|
|
17
|
+
gap: 24px;
|
|
18
|
+
}
|
|
19
|
+
.sp-month {
|
|
20
|
+
min-width: 0;
|
|
21
|
+
}
|
|
22
|
+
.sp-month h3 {
|
|
23
|
+
margin: 0 0 20px;
|
|
24
|
+
font-size: 15px;
|
|
25
|
+
font-weight: 600;
|
|
26
|
+
}
|
|
27
|
+
.sp-grid {
|
|
28
|
+
width: 100%;
|
|
29
|
+
table-layout: fixed;
|
|
30
|
+
border-collapse: collapse;
|
|
31
|
+
}
|
|
32
|
+
.sp-grid th {
|
|
33
|
+
height: 32px;
|
|
34
|
+
font-size: 11px;
|
|
35
|
+
font-weight: 500;
|
|
36
|
+
color: #656565;
|
|
37
|
+
text-align: center;
|
|
38
|
+
}
|
|
39
|
+
.sp-grid td {
|
|
40
|
+
padding: 2px 0;
|
|
41
|
+
position: relative;
|
|
42
|
+
height: 40px;
|
|
43
|
+
text-align: center;
|
|
44
|
+
}
|
|
45
|
+
.sp-grid [data-day-trigger] {
|
|
46
|
+
position: relative;
|
|
47
|
+
z-index: 1;
|
|
48
|
+
display: inline-grid;
|
|
49
|
+
place-items: center;
|
|
50
|
+
width: 36px;
|
|
51
|
+
height: 36px;
|
|
52
|
+
border: 1px solid transparent;
|
|
53
|
+
border-radius: var(--sp-day-radius, 4px);
|
|
54
|
+
background: transparent;
|
|
55
|
+
color: inherit;
|
|
56
|
+
font: inherit;
|
|
57
|
+
font-size: 13px;
|
|
58
|
+
font-variant-numeric: tabular-nums;
|
|
59
|
+
cursor: pointer;
|
|
60
|
+
}
|
|
61
|
+
.sp-grid [data-day-trigger]:hover {
|
|
62
|
+
border-color: var(--sp-border);
|
|
63
|
+
}
|
|
64
|
+
.sp-grid [data-part=cell][data-in-range] {
|
|
65
|
+
background: var(--sp-range);
|
|
66
|
+
}
|
|
67
|
+
.sp-grid [data-part=cell][data-selected] [data-day-trigger] {
|
|
68
|
+
background: var(--sp-accent);
|
|
69
|
+
color: var(--sp-selected-text);
|
|
70
|
+
}
|
|
71
|
+
.sp-grid [data-part=cell][data-outside]:not([data-selected]) {
|
|
72
|
+
color: var(--sp-outside);
|
|
73
|
+
}
|
|
74
|
+
.sp-grid [data-part=cell][data-today]:not([data-selected]) [data-part=number] {
|
|
75
|
+
text-decoration: underline;
|
|
76
|
+
text-underline-offset: 4px;
|
|
77
|
+
}
|
|
78
|
+
.sp-grid [data-day-trigger]:focus-visible {
|
|
79
|
+
outline: 2px solid var(--sp-accent);
|
|
80
|
+
outline-offset: 2px;
|
|
81
|
+
}
|
|
82
|
+
.sp-grid [data-day-trigger]:disabled {
|
|
83
|
+
opacity: 0.3;
|
|
84
|
+
cursor: default;
|
|
85
|
+
}
|
|
86
|
+
.sp-time {
|
|
87
|
+
display: flex;
|
|
88
|
+
gap: 12px;
|
|
89
|
+
flex-wrap: wrap;
|
|
90
|
+
}
|
|
91
|
+
.sp-time label {
|
|
92
|
+
display: grid;
|
|
93
|
+
gap: 8px;
|
|
94
|
+
font: inherit;
|
|
95
|
+
font-size: 12px;
|
|
96
|
+
}
|
|
97
|
+
.sp-time input,
|
|
98
|
+
.sp-time select {
|
|
99
|
+
width: 72px;
|
|
100
|
+
min-height: 40px;
|
|
101
|
+
border: 1px solid #dddde2;
|
|
102
|
+
padding: 8px;
|
|
103
|
+
box-sizing: border-box;
|
|
104
|
+
background: transparent;
|
|
105
|
+
color: inherit;
|
|
106
|
+
font: inherit;
|
|
107
|
+
}
|
|
108
|
+
.sp-time [aria-invalid=true] {
|
|
109
|
+
outline: 2px solid #e4002b;
|
|
110
|
+
}
|
|
111
|
+
@media (max-width: 640px) {
|
|
112
|
+
.sp-calendar {
|
|
113
|
+
grid-template-columns: 1fr;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:where(.sp-calendar){--sp-accent: #e4002b;--sp-selected-text: #fff;--sp-range: #fce5ea;--sp-outside: #737373;--sp-border: #dddde2;color:#181818;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.sp-calendar{display:grid;grid-template-columns:repeat(var(--sp-months, 1),minmax(0,1fr));gap:24px}.sp-month{min-width:0}.sp-month h3{margin:0 0 20px;font-size:15px;font-weight:600}.sp-grid{width:100%;table-layout:fixed;border-collapse:collapse}.sp-grid th{height:32px;font-size:11px;font-weight:500;color:#656565;text-align:center}.sp-grid td{padding:2px 0;position:relative;height:40px;text-align:center}.sp-grid [data-day-trigger]{position:relative;z-index:1;display:inline-grid;place-items:center;width:36px;height:36px;border:1px solid transparent;border-radius:var(--sp-day-radius, 4px);background:transparent;color:inherit;font:inherit;font-size:13px;font-variant-numeric:tabular-nums;cursor:pointer}.sp-grid [data-day-trigger]:hover{border-color:var(--sp-border)}.sp-grid [data-part=cell][data-in-range]{background:var(--sp-range)}.sp-grid [data-part=cell][data-selected] [data-day-trigger]{background:var(--sp-accent);color:var(--sp-selected-text)}.sp-grid [data-part=cell][data-outside]:not([data-selected]){color:var(--sp-outside)}.sp-grid [data-part=cell][data-today]:not([data-selected]) [data-part=number]{text-decoration:underline;text-underline-offset:4px}.sp-grid [data-day-trigger]:focus-visible{outline:2px solid var(--sp-accent);outline-offset:2px}.sp-grid [data-day-trigger]:disabled{opacity:.3;cursor:default}.sp-time{display:flex;gap:12px;flex-wrap:wrap}.sp-time label{display:grid;gap:8px;font:inherit;font-size:12px}.sp-time input,.sp-time select{width:72px;min-height:40px;border:1px solid #dddde2;padding:8px;box-sizing:border-box;background:transparent;color:inherit;font:inherit}.sp-time [aria-invalid=true]{outline:2px solid #e4002b}@media(max-width:640px){.sp-calendar{grid-template-columns:1fr}}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<script lang="ts">import type{HTMLButtonAttributes}from"svelte/elements";import type{Snippet}from"svelte";import{usePicker,usePickerStore}from"./context";let{action,children,...attributes}:HTMLButtonAttributes&{action:"apply"|"cancel"|"clear";children?:Snippet}=$props();const store=usePickerStore(),state=usePicker();</script>
|
|
2
|
+
|
|
3
|
+
<button
|
|
4
|
+
{...attributes}
|
|
5
|
+
type="button"
|
|
6
|
+
disabled={attributes.disabled || $state.options.disabled}
|
|
7
|
+
onclick={(event) => {
|
|
8
|
+
attributes.onclick?.(event);
|
|
9
|
+
if (!event.defaultPrevented) store[action]();
|
|
10
|
+
}}
|
|
11
|
+
>{#if children}{@render children()}{:else}{action}{/if}</button
|
|
12
|
+
>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<script lang="ts">import{untrack}from"svelte";import{calendarMarkup,bindCalendar,type CalendarRenderOptions}from"../core/index.js";import{usePickerStore}from"./context";let{options={},...attributes}:CalendarRenderOptions&{options?:CalendarRenderOptions;[key:string]:unknown}=$props();const store=usePickerStore();let element:HTMLDivElement;const html=untrack(()=>calendarMarkup(store,options));$effect(()=>bindCalendar(element,store,options));</script>
|
|
2
|
+
|
|
3
|
+
<div {...attributes} data-part="calendar" bind:this={element}>{@html html}</div>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<script lang="ts">import type{HTMLAttributes}from"svelte/elements";import type{Snippet}from"svelte";import{dayAttributes,type PickerSnapshot}from"../core/index.js";import{usePicker,usePickerStore}from"./context";let{date,outside=false,children,...attributes}:HTMLAttributes<HTMLDivElement>&{date:string;outside?:boolean;children?:Snippet<[PickerSnapshot]>}=$props();const store=usePickerStore(),picker=usePicker();const flags=$derived.by(()=>{$picker;return dayAttributes(store,date,outside)});</script>
|
|
2
|
+
|
|
3
|
+
<div {...attributes} {...flags} role="gridcell" data-part="cell">
|
|
4
|
+
{#if children}{@render children($picker)}{/if}
|
|
5
|
+
</div>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<script lang="ts">import{untrack}from"svelte";import type{HTMLAttributes}from"svelte/elements";import{bindMonthScroller,monthScrollerMarkup,type MonthScrollerOptions}from"../core/index.js";import{usePickerStore}from"./context";let{options={},...attributes}:HTMLAttributes<HTMLDivElement>&{options?:MonthScrollerOptions}=$props();const store=usePickerStore();let element:HTMLDivElement;const html=untrack(()=>monthScrollerMarkup(store,options));$effect(()=>bindMonthScroller(element,store,options));</script>
|
|
2
|
+
|
|
3
|
+
<div {...attributes} bind:this={element}>{@html html}</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script lang="ts">import type{HTMLButtonAttributes}from"svelte/elements";import{onMount,type Snippet}from"svelte";import{bindDayTrigger,dayTriggerAttributes}from"../core/index.js";import{usePickerStore,usePicker}from"./context";let{date,outside=false,onSelect,children,...attributes}:HTMLButtonAttributes&{date:string;outside?:boolean;onSelect?:(date:string)=>void;children?:Snippet}=$props();const store=usePickerStore();const picker=usePicker();let element:HTMLButtonElement;const flags=$derived.by(()=>{$picker;return dayTriggerAttributes(store,date,outside)});$effect(()=>bindDayTrigger(element,store,date,{outside,onSelect,disabled:attributes.disabled??false}));</script>
|
|
2
|
+
|
|
3
|
+
<button
|
|
4
|
+
{...attributes}
|
|
5
|
+
{...flags}
|
|
6
|
+
data-day-trigger
|
|
7
|
+
disabled={attributes.disabled || store.getDay(date).disabled}
|
|
8
|
+
tabindex={$picker.focusedDate === date && !outside ? 0 : -1}
|
|
9
|
+
type="button"
|
|
10
|
+
bind:this={element}
|
|
11
|
+
>{#if children}{@render children()}{:else}{Number(
|
|
12
|
+
date.slice(-2),
|
|
13
|
+
)}{/if}</button
|
|
14
|
+
>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<script lang="ts">import type{HTMLInputAttributes}from"svelte/elements";import{bindDateField,pointFor,type Endpoint}from"../core/index.js";import{usePickerStore}from"./context";let{endpoint="start",...attributes}:HTMLInputAttributes&{endpoint?:Endpoint}=$props();const store=usePickerStore();let element:HTMLInputElement;$effect(()=>{attributes.disabled;attributes.readonly;return bindDateField(element,store,endpoint)});</script>
|
|
2
|
+
|
|
3
|
+
<input
|
|
4
|
+
{...attributes}
|
|
5
|
+
value={attributes.value ??
|
|
6
|
+
pointFor(store.getSnapshot().draft, endpoint)?.date ??
|
|
7
|
+
""}
|
|
8
|
+
type="text"
|
|
9
|
+
placeholder={attributes.placeholder ?? "YYYY-MM-DD"}
|
|
10
|
+
bind:this={element}
|
|
11
|
+
/>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<script lang="ts">import type{HTMLAttributes}from"svelte/elements";import type{Snippet}from"svelte";let{children,...attributes}:HTMLAttributes<HTMLDivElement>&{children?:Snippet}=$props();</script>
|
|
2
|
+
|
|
3
|
+
<div {...attributes} role="grid" data-part="grid">
|
|
4
|
+
{#if children}{@render children()}{/if}
|
|
5
|
+
</div>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<script lang="ts">import type{HTMLAttributes}from"svelte/elements";import type{Snippet}from"svelte";import{formatMonth}from"../core/index.js";import{usePicker,usePickerStore}from"./context";let{offset=0,children,...attributes}:HTMLAttributes<HTMLHeadingElement>&{offset?:number;children?:Snippet}=$props();const store=usePickerStore(),state=usePicker();const label=$derived.by(()=>{$state;return formatMonth(store.getMonth(offset),$state.options.locale)});</script>
|
|
2
|
+
|
|
3
|
+
<h3 {...attributes} aria-live="polite">
|
|
4
|
+
{#if children}{@render children()}{:else}{label}{/if}
|
|
5
|
+
</h3>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script lang="ts">import type{HTMLSelectAttributes}from"svelte/elements";import type{Snippet}from"svelte";import{usePicker,usePickerStore}from"./context";let{children,...attributes}:HTMLSelectAttributes&{children?:Snippet}=$props();const store=usePickerStore(),state=usePicker();</script>
|
|
2
|
+
|
|
3
|
+
<select
|
|
4
|
+
{...attributes}
|
|
5
|
+
disabled={attributes.disabled || $state.options.disabled}
|
|
6
|
+
value={$state.visibleMonth.month}
|
|
7
|
+
onchange={(event) => {
|
|
8
|
+
attributes.onchange?.(event);
|
|
9
|
+
if (!event.defaultPrevented)
|
|
10
|
+
store.setVisibleMonth({
|
|
11
|
+
...$state.visibleMonth,
|
|
12
|
+
month: Number(event.currentTarget.value),
|
|
13
|
+
});
|
|
14
|
+
}}
|
|
15
|
+
>
|
|
16
|
+
{#if children}{@render children()}{:else}{#each Array.from({ length: 12 }, (_, i) => i + 1) as value}<option
|
|
17
|
+
{value}>{value}</option
|
|
18
|
+
>{/each}{/if}
|
|
19
|
+
</select>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script lang="ts">import type{HTMLButtonAttributes}from"svelte/elements";import type{Snippet}from"svelte";import{usePicker,usePickerStore}from"./context";let{direction,children,...attributes}:HTMLButtonAttributes&{direction:-1|1;children?:Snippet}=$props();const store=usePickerStore(),state=usePicker();</script>
|
|
2
|
+
|
|
3
|
+
<button
|
|
4
|
+
{...attributes}
|
|
5
|
+
type="button"
|
|
6
|
+
disabled={attributes.disabled || $state.options.disabled}
|
|
7
|
+
onclick={(event) => {
|
|
8
|
+
attributes.onclick?.(event);
|
|
9
|
+
if (!event.defaultPrevented) store.navigate(direction);
|
|
10
|
+
}}
|
|
11
|
+
>{#if children}{@render children()}{:else}{direction < 0
|
|
12
|
+
? "Previous month"
|
|
13
|
+
: "Next month"}{/if}</button
|
|
14
|
+
>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<script lang="ts">import type{HTMLAttributes}from"svelte/elements";import type{Snippet}from"svelte";let{date,children,...attributes}:HTMLAttributes<HTMLSpanElement>&{date:string;children?:Snippet}=$props();</script>
|
|
2
|
+
|
|
3
|
+
<span {...attributes} data-part="number"
|
|
4
|
+
>{#if children}{@render children()}{:else}{Number(date.slice(-2))}{/if}</span
|
|
5
|
+
>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script lang="ts">import type{HTMLSelectAttributes}from"svelte/elements";import type{Snippet}from"svelte";import{bindTimeSegment,pointFor,timeSegmentValue,type Endpoint}from"../core/index.js";import{usePickerStore}from"./context";let{endpoint="start",children,...attributes}:HTMLSelectAttributes&{endpoint?:Endpoint;children?:Snippet}=$props();const store=usePickerStore();let element:HTMLSelectElement;$effect(()=>{attributes.disabled;return bindTimeSegment(element,store,"period",endpoint)});</script>
|
|
2
|
+
|
|
3
|
+
<select
|
|
4
|
+
{...attributes}
|
|
5
|
+
value={attributes.value ??
|
|
6
|
+
timeSegmentValue(
|
|
7
|
+
pointFor(store.getSnapshot().draft, endpoint)?.time,
|
|
8
|
+
"period",
|
|
9
|
+
store.getSnapshot().options.hourCycle,
|
|
10
|
+
)}
|
|
11
|
+
bind:this={element}
|
|
12
|
+
>{#if children}{@render children()}{:else}<option>AM</option><option
|
|
13
|
+
>PM</option
|
|
14
|
+
>{/if}</select
|
|
15
|
+
>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<script lang="ts">import{onMount,untrack,type Snippet}from"svelte";import{createPickerStore,type PickerStore,type PickerOptions,type PickerValue}from"../core/index.js";import{providePicker}from"./context";let{store:provided,options={},value=$bindable(),onValueChange,children}:{store?:PickerStore;options?:PickerOptions;value?:PickerValue;onValueChange?:(value:PickerValue)=>void;children:Snippet}=$props();const store=providePicker(untrack(()=>{if(!provided)return createPickerStore({...options,value:value===undefined?options.value:value});provided.setOptions(options);if(value!==undefined)provided.setValue(value);return provided}));$effect(()=>{if(value!==undefined)store.setValue(value)});$effect(()=>{store.setOptions(options)});onMount(()=>store.subscribeValue(next=>{value=next;onValueChange?.(next)}));</script>
|
|
2
|
+
|
|
3
|
+
{@render children()}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script lang="ts">import type{HTMLInputAttributes}from"svelte/elements";import{bindTimeSegment,pointFor,timeSegmentValue,type Endpoint,type TimeSegment}from"../core/index.js";import{usePickerStore}from"./context";let{part="hour",endpoint="start",...attributes}:HTMLInputAttributes&{part?:Exclude<TimeSegment,"period">;endpoint?:Endpoint}=$props();const store=usePickerStore();let element:HTMLInputElement;$effect(()=>{attributes.disabled;attributes.readonly;return bindTimeSegment(element,store,part,endpoint)});</script>
|
|
2
|
+
|
|
3
|
+
<input
|
|
4
|
+
{...attributes}
|
|
5
|
+
value={attributes.value ??
|
|
6
|
+
timeSegmentValue(
|
|
7
|
+
pointFor(store.getSnapshot().draft, endpoint)?.time,
|
|
8
|
+
part,
|
|
9
|
+
store.getSnapshot().options.hourCycle,
|
|
10
|
+
)}
|
|
11
|
+
type="number"
|
|
12
|
+
data-part={part}
|
|
13
|
+
bind:this={element}
|
|
14
|
+
/>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<script lang="ts">import Segment from"./Segment.svelte";import Period from"./Period.svelte";import{usePicker}from"./context";import type{Endpoint,TimeSegment}from"../core/index.js";let{endpoint="start",labels={},...attributes}:{endpoint?:Endpoint;labels?:Partial<Record<TimeSegment,string>>;[key:string]:unknown}=$props();const state=usePicker();</script>
|
|
2
|
+
|
|
3
|
+
<div class="sp-time" {...attributes}>
|
|
4
|
+
<label>{labels.hour ?? "Hours"}<Segment part="hour" {endpoint} /></label
|
|
5
|
+
><label
|
|
6
|
+
>{labels.minute ?? "Minutes"}<Segment part="minute" {endpoint} /></label
|
|
7
|
+
>{#if $state.options.seconds}<label
|
|
8
|
+
>{labels.second ?? "Seconds"}<Segment part="second" {endpoint} /></label
|
|
9
|
+
>{/if}{#if $state.options.hourCycle === 12}<label
|
|
10
|
+
>{labels.period ?? "Period"}<Period {endpoint} /></label
|
|
11
|
+
>{/if}
|
|
12
|
+
</div>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<script lang="ts">import type{HTMLAttributes}from"svelte/elements";import type{Snippet}from"svelte";let{children,...attributes}:HTMLAttributes<HTMLDivElement>&{children?:Snippet}=$props();</script>
|
|
2
|
+
|
|
3
|
+
<div {...attributes} role="row" data-part="week">
|
|
4
|
+
{#if children}{@render children()}{/if}
|
|
5
|
+
</div>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<script lang="ts">import type{HTMLAttributes}from"svelte/elements";import type{Snippet}from"svelte";import{weekdayLabels}from"../core/index.js";import{usePicker}from"./context";let{day,children,...attributes}:HTMLAttributes<HTMLSpanElement>&{day:number;children?:Snippet}=$props();const state=usePicker();const label=$derived(weekdayLabels($state.options.locale,$state.options.weekStartsOn).find(d=>d.weekday===day)?.label);</script>
|
|
2
|
+
|
|
3
|
+
<span
|
|
4
|
+
{...attributes}
|
|
5
|
+
role="columnheader"
|
|
6
|
+
data-part="weekday"
|
|
7
|
+
data-weekday={day}
|
|
8
|
+
data-weekend={$state.options.weekend.includes(day) ? "" : undefined}
|
|
9
|
+
>{#if children}{@render children()}{:else}{label}{/if}</span
|
|
10
|
+
>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script lang="ts">import type{HTMLSelectAttributes}from"svelte/elements";import type{Snippet}from"svelte";import{usePicker,usePickerStore}from"./context";let{from=1900,to=2100,children,...attributes}:HTMLSelectAttributes&{from?:number;to?:number;children?:Snippet}=$props();const store=usePickerStore(),state=usePicker();</script>
|
|
2
|
+
|
|
3
|
+
<select
|
|
4
|
+
{...attributes}
|
|
5
|
+
disabled={attributes.disabled || $state.options.disabled}
|
|
6
|
+
value={$state.visibleMonth.year}
|
|
7
|
+
onchange={(event) => {
|
|
8
|
+
attributes.onchange?.(event);
|
|
9
|
+
if (!event.defaultPrevented)
|
|
10
|
+
store.setVisibleMonth({
|
|
11
|
+
...$state.visibleMonth,
|
|
12
|
+
year: Number(event.currentTarget.value),
|
|
13
|
+
});
|
|
14
|
+
}}
|
|
15
|
+
>
|
|
16
|
+
{#if children}{@render children()}{:else}{#each Array.from({ length: to - from + 1 }, (_, i) => from + i) as value}<option
|
|
17
|
+
{value}>{value}</option
|
|
18
|
+
>{/each}{/if}
|
|
19
|
+
</select>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{getContext,setContext}from"svelte";import{readable}from"svelte/store";import type{PickerStore}from"../core/index.js";const key=Symbol("Salyra calendar");export function providePicker(store:PickerStore){setContext(key,store);return store}export function usePickerStore(){const store=getContext<PickerStore>(key);if(!store)throw new Error("Picker components require Root");return store}export function usePicker(){const store=usePickerStore();return readable(store.getSnapshot(),set=>store.subscribe(()=>set(store.getSnapshot())))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from"../core/index.js";export*from"./context";import Root from"./Root.svelte";import View from"./CalendarView.svelte";import Time from"./Time.svelte";import Grid from"./Grid.svelte";import Week from"./Week.svelte";import Cell from"./Cell.svelte";import Number from"./Number.svelte";import DayTrigger from"./DayTrigger.svelte";import Heading from"./Heading.svelte";import Weekday from"./Weekday.svelte";import Navigation from"./Navigation.svelte";import Field from"./Field.svelte";import Segment from"./Segment.svelte";import Period from"./Period.svelte";import MonthSelect from"./MonthSelect.svelte";import YearSelect from"./YearSelect.svelte";import Action from"./Action.svelte";export{Root,View,Time,Grid,Week,Cell,Number,DayTrigger,Heading,Weekday,Navigation,Field,Segment,Period,MonthSelect,YearSelect,Action};const parts={Continuous,Grid,Week,Cell,Number,DayTrigger,Heading,Weekday,Navigation,MonthSelect,YearSelect,Action};export const Calendar={Root,View,...parts};import DateRoot from"./DateRoot.svelte";import TimeRoot from"./TimeRoot.svelte";import DateTimeRoot from"./DateTimeRoot.svelte";import Continuous from"./Continuous.svelte";export{Continuous};export{DateRoot,TimeRoot,DateTimeRoot};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export * from "../core";
|
|
2
|
+
import { type PickerStore, type PickerOptions, type Endpoint } from "../core";
|
|
3
|
+
export declare function mountPicker(root: HTMLElement, options?: PickerOptions | PickerStore): {
|
|
4
|
+
store: {
|
|
5
|
+
getSnapshot: () => import(".").PickerSnapshot;
|
|
6
|
+
subscribe(fn: () => void): () => void;
|
|
7
|
+
subscribeValue(fn: (v: import(".").PickerValue) => void): () => void;
|
|
8
|
+
getMonth(offset?: number): import(".").CalendarMonth;
|
|
9
|
+
getDay(date: string): {
|
|
10
|
+
selected: boolean;
|
|
11
|
+
rangeStart: boolean;
|
|
12
|
+
rangeEnd: boolean;
|
|
13
|
+
inRange: boolean;
|
|
14
|
+
preview: boolean;
|
|
15
|
+
disabled: boolean;
|
|
16
|
+
today: boolean;
|
|
17
|
+
weekend: boolean;
|
|
18
|
+
focused: boolean;
|
|
19
|
+
};
|
|
20
|
+
setVisibleMonth(next: import(".").Month): void;
|
|
21
|
+
navigate(count: number): void;
|
|
22
|
+
focus(date: string): void;
|
|
23
|
+
moveFocus(key: string, shift?: boolean): boolean;
|
|
24
|
+
hover(date: string | null): void;
|
|
25
|
+
selectDate(date: string): boolean;
|
|
26
|
+
setDate(date: string, endpoint?: Endpoint): boolean;
|
|
27
|
+
setTime(time: string, endpoint?: Endpoint): boolean;
|
|
28
|
+
setDayOffset(offset: number, endpoint?: Endpoint): boolean;
|
|
29
|
+
setEndpoint(endpoint: Endpoint): void;
|
|
30
|
+
setValue(value: import(".").PickerValue): void;
|
|
31
|
+
apply(): boolean;
|
|
32
|
+
cancel(): void;
|
|
33
|
+
clear(): void;
|
|
34
|
+
setOpen(open: boolean): void;
|
|
35
|
+
setOptions(patch: Partial<PickerOptions>): void;
|
|
36
|
+
validate: () => string | null;
|
|
37
|
+
destroy(): void;
|
|
38
|
+
readonly cacheSize: number;
|
|
39
|
+
};
|
|
40
|
+
destroy(): void;
|
|
41
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from"../core/index.js";import{bindCalendar as m,bindMonthScroller as b,bindDateField as g,bindTimeSegment as E,bindDayTrigger as v,createPickerStore as y,attribute as h,formatMonth as S,dayAttributes as k}from"../core/index.js";function T(o,c={}){let l="getSnapshot"in c,a=l?c:y(c),r=[],n=t=>[...o.querySelectorAll(t)].filter(e=>!e.parentElement?.closest("[data-picker-root]")||e.parentElement.closest("[data-picker-root]")===o);h(o,"data-picker-root",!0);for(let t of n("[data-continuous]"))r.push(b(t,a,JSON.parse(t.dataset.continuous??"{}")));for(let t of n("[data-calendar]"))r.push(m(t,a,JSON.parse(t.dataset.calendarOptions??"{}")));for(let t of n("[data-day-trigger]"))t.closest("[data-calendar]")||r.push(v(t,a,t.dataset.date));for(let t of n("[data-date-field]"))r.push(g(t,a,t.dataset.endpoint??"start"));for(let t of n("[data-time-segment]"))r.push(E(t,a,t.dataset.timeSegment,t.dataset.endpoint??"start"));let d=t=>{if(t.defaultPrevented)return;let e=t.target.closest("[data-picker-action]");if(!e||!o.contains(e)||e.closest("[data-picker-root]")!==o||a.getSnapshot().options.disabled)return;let s=e.dataset.pickerAction;try{s==="previous"?a.navigate(-1):s==="next"?a.navigate(1):s==="open"?a.setOpen(!0):(s==="cancel"||s==="apply"||s==="clear")&&a[s]()}catch(u){if(!(u instanceof RangeError))throw u}},f=t=>{let e=t.target;if(!(e.closest("[data-picker-root]")!==o||a.getSnapshot().options.disabled))try{e.hasAttribute("data-month-select")&&a.setVisibleMonth({...a.getSnapshot().visibleMonth,month:Number(e.value)}),e.hasAttribute("data-year-select")&&a.setVisibleMonth({...a.getSnapshot().visibleMonth,year:Number(e.value)}),e.hasAttribute("data-day-offset")&&a.setDayOffset(Number(e.value),e.dataset.endpoint??"end")}catch(i){if(!(i instanceof RangeError))throw i}},p=()=>{let t=a.getSnapshot();for(let e of n("[data-calendar-cell]"))for(let[i,s]of Object.entries(k(a,e.dataset.date,e.hasAttribute("data-outside"))))h(e,i,s);for(let e of n("[data-picker-output]"))e.textContent=JSON.stringify(t.value,null,2);for(let e of n("[data-picker-error]"))e.textContent=t.error??"",e.hidden=!t.error;for(let e of n("[data-month-heading]"))e.textContent=S(t.visibleMonth,t.options.locale);for(let e of n("[data-month-select]"))e.value=String(t.visibleMonth.month);for(let e of n("[data-year-select]"))e.value=String(t.visibleMonth.year);for(let e of n("[data-picker-action], [data-month-select], [data-year-select], [data-day-offset]"))e.disabled=!!t.options.disabled};return p(),r.push(a.subscribe(p)),o.addEventListener("click",d),o.addEventListener("change",f),{store:a,destroy(){r.forEach(t=>t()),o.removeEventListener("click",d),o.removeEventListener("change",f),l||a.destroy()}}}export{T as mountPicker};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { type PropType } from "vue";
|
|
2
|
+
import { type CalendarRenderOptions } from "../core";
|
|
3
|
+
export declare const CalendarView: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
|
+
options: PropType<CalendarRenderOptions>;
|
|
5
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
8
|
+
options: PropType<CalendarRenderOptions>;
|
|
9
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
10
|
+
export declare const Grid: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Week: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
15
|
+
export declare const Cell: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
16
|
+
date: {
|
|
17
|
+
type: StringConstructor;
|
|
18
|
+
required: true;
|
|
19
|
+
};
|
|
20
|
+
outside: BooleanConstructor;
|
|
21
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
24
|
+
date: {
|
|
25
|
+
type: StringConstructor;
|
|
26
|
+
required: true;
|
|
27
|
+
};
|
|
28
|
+
outside: BooleanConstructor;
|
|
29
|
+
}>> & Readonly<{}>, {
|
|
30
|
+
outside: boolean;
|
|
31
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
32
|
+
export declare const NumberLabel: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
33
|
+
date: {
|
|
34
|
+
type: StringConstructor;
|
|
35
|
+
required: true;
|
|
36
|
+
};
|
|
37
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
38
|
+
[key: string]: any;
|
|
39
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
40
|
+
date: {
|
|
41
|
+
type: StringConstructor;
|
|
42
|
+
required: true;
|
|
43
|
+
};
|
|
44
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
45
|
+
export declare const DayTrigger: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
46
|
+
date: {
|
|
47
|
+
type: StringConstructor;
|
|
48
|
+
required: true;
|
|
49
|
+
};
|
|
50
|
+
outside: BooleanConstructor;
|
|
51
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
52
|
+
[key: string]: any;
|
|
53
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "select"[], "select", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
54
|
+
date: {
|
|
55
|
+
type: StringConstructor;
|
|
56
|
+
required: true;
|
|
57
|
+
};
|
|
58
|
+
outside: BooleanConstructor;
|
|
59
|
+
}>> & Readonly<{
|
|
60
|
+
onSelect?: ((...args: any[]) => any) | undefined;
|
|
61
|
+
}>, {
|
|
62
|
+
outside: boolean;
|
|
63
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
64
|
+
export declare const Heading: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
65
|
+
offset: {
|
|
66
|
+
type: NumberConstructor;
|
|
67
|
+
default: number;
|
|
68
|
+
};
|
|
69
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
70
|
+
[key: string]: any;
|
|
71
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
72
|
+
offset: {
|
|
73
|
+
type: NumberConstructor;
|
|
74
|
+
default: number;
|
|
75
|
+
};
|
|
76
|
+
}>> & Readonly<{}>, {
|
|
77
|
+
offset: number;
|
|
78
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
79
|
+
export declare const Weekday: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
80
|
+
day: {
|
|
81
|
+
type: NumberConstructor;
|
|
82
|
+
required: true;
|
|
83
|
+
};
|
|
84
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
85
|
+
[key: string]: any;
|
|
86
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
87
|
+
day: {
|
|
88
|
+
type: NumberConstructor;
|
|
89
|
+
required: true;
|
|
90
|
+
};
|
|
91
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
92
|
+
export declare const Navigation: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
93
|
+
direction: {
|
|
94
|
+
type: NumberConstructor;
|
|
95
|
+
default: number;
|
|
96
|
+
};
|
|
97
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
98
|
+
[key: string]: any;
|
|
99
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
100
|
+
direction: {
|
|
101
|
+
type: NumberConstructor;
|
|
102
|
+
default: number;
|
|
103
|
+
};
|
|
104
|
+
}>> & Readonly<{}>, {
|
|
105
|
+
direction: number;
|
|
106
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type PropType } from "vue";
|
|
2
|
+
import { type MonthScrollerOptions } from "../core";
|
|
3
|
+
export declare const Continuous: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
|
+
options: PropType<MonthScrollerOptions>;
|
|
5
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
8
|
+
options: PropType<MonthScrollerOptions>;
|
|
9
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|