@cupra/ui-kit 2.0.0-canary.79 → 2.0.0-canary.80
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/dist/cjs/components/ds-calendar/ds-calendar.cjs +26 -0
- package/dist/cjs/components/ds-calendar/styles/common.styles.cjs +38 -0
- package/dist/cjs/components/ds-calendar-day/ds-calendar-day.cjs +14 -0
- package/dist/cjs/components/ds-calendar-day/styles/common.styles.cjs +23 -0
- package/dist/cjs/components/ds-theme-provider/ds-theme-provider.cjs +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/utils/IconsManager.cjs +1 -1
- package/dist/cjs/utils/PubSub.cjs +1 -1
- package/dist/cjs/utils/StylesRegistry/StylesRegistry.cjs +1 -1
- package/dist/cjs/utils/cssWithTokens.cjs +1 -1
- package/dist/cjs/utils/htmlWithTokens.cjs +1 -1
- package/dist/esm/components/ds-calendar/ds-calendar.js +276 -0
- package/dist/esm/components/ds-calendar/styles/common.styles.js +45 -0
- package/dist/esm/components/ds-calendar-day/ds-calendar-day.js +84 -0
- package/dist/esm/components/ds-calendar-day/styles/common.styles.js +30 -0
- package/dist/esm/components/ds-theme-provider/ds-theme-provider.js +1 -1
- package/dist/esm/index.js +4 -2
- package/dist/esm/utils/IconsManager.js +1 -1
- package/dist/esm/utils/PubSub.js +1 -1
- package/dist/esm/utils/StylesRegistry/StylesRegistry.js +1 -1
- package/dist/esm/utils/cssWithTokens.js +1 -1
- package/dist/esm/utils/htmlWithTokens.js +1 -1
- package/dist/types/components/ds-calendar/ds-calendar.d.ts +42 -0
- package/dist/types/components/ds-calendar/ds-calendar.test.d.ts +8 -0
- package/dist/types/components/ds-calendar/ds-calendar.types.d.ts +35 -0
- package/dist/types/components/ds-calendar/styles/common.styles.d.ts +1 -0
- package/dist/types/components/ds-calendar-day/ds-calendar-day.d.ts +20 -0
- package/dist/types/components/ds-calendar-day/ds-calendar-day.test.d.ts +8 -0
- package/dist/types/components/ds-calendar-day/ds-calendar-day.types.d.ts +10 -0
- package/dist/types/components/ds-calendar-day/styles/common.styles.d.ts +1 -0
- package/dist/types/components/index.d.ts +2 -0
- package/dist-react/cjs/components/ds-calendar/ds-calendar.cjs +26 -0
- package/dist-react/cjs/components/ds-calendar/styles/common.styles.cjs +38 -0
- package/dist-react/cjs/components/ds-calendar-day/ds-calendar-day.cjs +14 -0
- package/dist-react/cjs/components/ds-calendar-day/styles/common.styles.cjs +23 -0
- package/dist-react/cjs/components/ds-theme-provider/ds-theme-provider.cjs +1 -1
- package/dist-react/cjs/index.cjs +1 -1
- package/dist-react/cjs/utils/IconsManager.cjs +1 -1
- package/dist-react/cjs/utils/PubSub.cjs +1 -1
- package/dist-react/cjs/utils/StylesRegistry/StylesRegistry.cjs +1 -1
- package/dist-react/cjs/utils/cssWithTokens.cjs +1 -1
- package/dist-react/cjs/utils/htmlWithTokens.cjs +1 -1
- package/dist-react/esm/components/ds-calendar/ds-calendar.js +276 -0
- package/dist-react/esm/components/ds-calendar/styles/common.styles.js +45 -0
- package/dist-react/esm/components/ds-calendar-day/ds-calendar-day.js +84 -0
- package/dist-react/esm/components/ds-calendar-day/styles/common.styles.js +30 -0
- package/dist-react/esm/components/ds-theme-provider/ds-theme-provider.js +1 -1
- package/dist-react/esm/index.js +4 -2
- package/dist-react/esm/utils/IconsManager.js +1 -1
- package/dist-react/esm/utils/PubSub.js +1 -1
- package/dist-react/esm/utils/StylesRegistry/StylesRegistry.js +1 -1
- package/dist-react/esm/utils/cssWithTokens.js +1 -1
- package/dist-react/esm/utils/htmlWithTokens.js +1 -1
- package/dist-react/types/components/ds-calendar/ds-calendar.d.ts +42 -0
- package/dist-react/types/components/ds-calendar/ds-calendar.test.d.ts +8 -0
- package/dist-react/types/components/ds-calendar/ds-calendar.types.d.ts +35 -0
- package/dist-react/types/components/ds-calendar/styles/common.styles.d.ts +1 -0
- package/dist-react/types/components/ds-calendar-day/ds-calendar-day.d.ts +20 -0
- package/dist-react/types/components/ds-calendar-day/ds-calendar-day.test.d.ts +8 -0
- package/dist-react/types/components/ds-calendar-day/ds-calendar-day.types.d.ts +10 -0
- package/dist-react/types/components/ds-calendar-day/styles/common.styles.d.ts +1 -0
- package/dist-react/types/components/index.d.ts +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("../base/UiKitElement.cjs");require("../ds-calendar-day/ds-calendar-day.cjs");const _=require("../../decorators/customUiKitElement.cjs");require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");const p=require("../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const o=require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.cjs"),m=require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/state.cjs"),C=require("../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.cjs"),M=require("./styles/common.styles.cjs");var S=Object.defineProperty,k=Object.getOwnPropertyDescriptor,n=(f,e,t,s)=>{for(var r=s>1?void 0:s?k(e,t):e,i=f.length-1,a;i>=0;i--)(a=f[i])&&(r=(s?a(e,t,r):a(r))||r);return s&&r&&S(e,t,r),r};exports.DsCalendar=class extends b.UiKitElement{constructor(){super(...arguments),this.variant="plane",this.locale="en-US",this.firstDayOfWeek=1,this.disabledDates=[],this.disabledWeekdays=[],this._viewDate=new Date,this._value=null,this._initialValueApplied=!1}get selectedDate(){if(this.value){const e=this.parseDate(this.value);if(e)return e}return this._value}get viewDate(){return this._viewDate}connectedCallback(){super.connectedCallback(),this.applyInitialValue(),this.initializeViewDate()}updated(e){super.updated(e),(e.has("value")||e.has("viewDateAttr"))&&this.initializeViewDate()}applyInitialValue(){if(!this._initialValueApplied&&(this._initialValueApplied=!0,this.initialValue)){const e=this.parseDate(this.initialValue);e&&(this._value=e)}}initializeViewDate(){if(this.viewDateAttr){const e=this.parseDate(this.viewDateAttr);e&&(this._viewDate=e)}else if(this.value){const e=this.parseDate(this.value);e&&(this._viewDate=new Date(e))}else this._value?this._viewDate=new Date(this._value):this._viewDate=new Date}parseDate(e){const t=e.split("-");if(t.length>=2){const s=Number.parseInt(t[0],10),r=Number.parseInt(t[1],10)-1,i=t.length>=3?Number.parseInt(t[2],10):1,a=new Date(s,r,i);if(!Number.isNaN(a.getTime()))return a}return null}get calendarClasses(){return{calendar:!0,[this.variant]:!0}}get weekdayNames(){const e=new Intl.DateTimeFormat(this.locale,{weekday:"short"}),t=[],s=new Date(2024,0,1);for(;s.getDay()!==this.firstDayOfWeek;)s.setDate(s.getDate()+1);for(let r=0;r<7;r++){const i=new Date(s);i.setDate(s.getDate()+r);const a=e.format(i);t.push(a.slice(0,2))}return t}get monthYearLabel(){return new Intl.DateTimeFormat(this.locale,{month:"long",year:"numeric"}).format(this._viewDate)}getDaysInMonth(e,t){return new Date(e,t+1,0).getDate()}getFirstDayOfMonth(e,t){return new Date(e,t,1).getDay()}get calendarDays(){const e=this._viewDate.getFullYear(),t=this._viewDate.getMonth(),s=new Date;s.setHours(0,0,0,0);const r=this.getDaysInMonth(e,t);let a=this.getFirstDayOfMonth(e,t)-this.firstDayOfWeek;a<0&&(a+=7);const d=[],c=t===0?11:t-1,h=t===0?e-1:e,u=this.getDaysInMonth(h,c);for(let l=a-1;l>=0;l--){const D=u-l,w=new Date(h,c,D);d.push(this.createCalendarDay(w,!1,s))}for(let l=1;l<=r;l++){const D=new Date(e,t,l);d.push(this.createCalendarDay(D,!0,s))}const y=42-d.length,v=t===11?0:t+1,g=t===11?e+1:e;for(let l=1;l<=y;l++){const D=new Date(g,v,l);d.push(this.createCalendarDay(D,!1,s))}return d}createCalendarDay(e,t,s){e.setHours(0,0,0,0);const r=e.getDate(),i=e.getMonth(),a=e.getFullYear(),d=r===s.getDate()&&i===s.getMonth()&&a===s.getFullYear(),c=this.selectedDate,h=c?r===c.getDate()&&i===c.getMonth()&&a===c.getFullYear():!1,u=!t||this.isDateDisabled(e);return{day:r,month:i,year:a,date:e,isCurrentMonth:t,isToday:d,isSelected:h,isDisabled:u}}isDateDisabled(e){if(this.minDate){const t=new Date(this.minDate);if(t.setHours(0,0,0,0),e<t)return!0}if(this.maxDate){const t=new Date(this.maxDate);if(t.setHours(0,0,0,0),e>t)return!0}if(this.disabledWeekdays&&this.disabledWeekdays.length>0){const t=e.getDay();if(this.disabledWeekdays.includes(t))return!0}if(this.disabledDates&&this.disabledDates.length>0){const t=e.toISOString().split("T")[0];if(this.disabledDates.includes(t))return!0}return!1}handlePrevMonth(){const e=new Date(this._viewDate);e.setMonth(e.getMonth()-1),this._viewDate=e}handleNextMonth(){const e=new Date(this._viewDate);e.setMonth(e.getMonth()+1),this._viewDate=e}handleDayChange(e){var y;e.stopPropagation();const t=e.target;if(!t||!t.tagName.toLowerCase().startsWith("ds-calendar-day"))return;const r=Array.from(((y=this.shadowRoot)==null?void 0:y.querySelectorAll("ds-calendar-day"))||[]).indexOf(t);if(r===-1)return;const a=this.calendarDays[r];if(!a||a.isDisabled)return;this._value=a.date,this._viewDate=new Date(a.date);const d=a.date.getFullYear(),c=String(a.date.getMonth()+1).padStart(2,"0"),h=String(a.date.getDate()).padStart(2,"0"),u=`${d}-${c}-${h}`;this.dispatchEvent(new CustomEvent("ds-calendar-change",{bubbles:!0,composed:!0,detail:{value:u,date:a.date}}))}get prevButtonTemplate(){return this.componentFactory.createIconButton({class:"nav-button","icon-name":"arrow-left","data-aria-label":"Previous month","@click":this.handlePrevMonth,variant:"naked",size:"medium",color:"var(--ds-icon-button-icon-color-standard-default, #fafafa)"})}get nextButtonTemplate(){return this.componentFactory.createIconButton({class:"nav-button","icon-name":"arrow-right","data-aria-label":"Next month","@click":this.handleNextMonth,variant:"naked",size:"medium",color:"var(--ds-icon-button-icon-color-standard-default, #fafafa)"})}get weekdaysTemplate(){return p.html`
|
|
2
|
+
<div class="weekdays">
|
|
3
|
+
${this.weekdayNames.map(e=>p.html`<div class="weekday">${e}</div>`)}
|
|
4
|
+
</div>
|
|
5
|
+
`}get daysTemplate(){return p.html`
|
|
6
|
+
<div class="days-grid" @ds-calendar-day-change=${this.handleDayChange}>
|
|
7
|
+
${this.calendarDays.map(e=>p.html`
|
|
8
|
+
<ds-calendar-day
|
|
9
|
+
day=${e.day}
|
|
10
|
+
?disabled=${e.isDisabled}
|
|
11
|
+
?selected=${e.isSelected}
|
|
12
|
+
?today=${e.isToday}
|
|
13
|
+
?outside-month=${!e.isCurrentMonth}
|
|
14
|
+
></ds-calendar-day>
|
|
15
|
+
`)}
|
|
16
|
+
</div>
|
|
17
|
+
`}render(){return p.html`
|
|
18
|
+
<div class=${C.classMap(this.calendarClasses)} role="application" aria-label="Calendar">
|
|
19
|
+
<div class="header">
|
|
20
|
+
${this.prevButtonTemplate}
|
|
21
|
+
<div class="month-year" aria-live="polite">${this.monthYearLabel}</div>
|
|
22
|
+
${this.nextButtonTemplate}
|
|
23
|
+
</div>
|
|
24
|
+
${this.weekdaysTemplate} ${this.daysTemplate}
|
|
25
|
+
</div>
|
|
26
|
+
`}};exports.DsCalendar.styles=[M.commonStyles];n([o.property({type:String,reflect:!0})],exports.DsCalendar.prototype,"value",2);n([o.property({type:String,reflect:!0})],exports.DsCalendar.prototype,"variant",2);n([o.property({type:String,reflect:!0})],exports.DsCalendar.prototype,"locale",2);n([o.property({type:Number,reflect:!0,attribute:"first-day-of-week"})],exports.DsCalendar.prototype,"firstDayOfWeek",2);n([o.property({type:String,reflect:!0,attribute:"min-date"})],exports.DsCalendar.prototype,"minDate",2);n([o.property({type:String,reflect:!0,attribute:"max-date"})],exports.DsCalendar.prototype,"maxDate",2);n([o.property({type:Array,attribute:"disabled-dates"})],exports.DsCalendar.prototype,"disabledDates",2);n([o.property({type:Array,attribute:"disabled-weekdays"})],exports.DsCalendar.prototype,"disabledWeekdays",2);n([o.property({type:String,reflect:!0,attribute:"view-date"})],exports.DsCalendar.prototype,"viewDateAttr",2);n([o.property({type:String,attribute:"initial-value"})],exports.DsCalendar.prototype,"initialValue",2);n([m.state()],exports.DsCalendar.prototype,"_viewDate",2);n([m.state()],exports.DsCalendar.prototype,"_value",2);exports.DsCalendar=n([_.customUiKitElement("ds-calendar")],exports.DsCalendar);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");require("../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const e=require("../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.cjs"),t=e.css`
|
|
2
|
+
:host {
|
|
3
|
+
display: inline-block;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.calendar {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.header {
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
justify-content: space-between;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.month-year {
|
|
19
|
+
flex: 1;
|
|
20
|
+
text-align: center;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.weekdays {
|
|
24
|
+
display: grid;
|
|
25
|
+
grid-template-columns: repeat(7, 1fr);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.weekday {
|
|
29
|
+
display: flex;
|
|
30
|
+
align-items: center;
|
|
31
|
+
justify-content: center;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.days-grid {
|
|
35
|
+
display: grid;
|
|
36
|
+
grid-template-columns: repeat(7, 1fr);
|
|
37
|
+
}
|
|
38
|
+
`;exports.commonStyles=t;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("../base/UiKitElement.cjs"),c=require("../../decorators/customUiKitElement.cjs"),o=require("../../utils/booleanConverter.cjs");require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");const u=require("../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const a=require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.cjs"),p=require("../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.cjs"),h=require("./styles/common.styles.cjs");var b=Object.defineProperty,D=Object.getOwnPropertyDescriptor,r=(l,e,n,s)=>{for(var t=s>1?void 0:s?D(e,n):e,i=l.length-1,d;i>=0;i--)(d=l[i])&&(t=(s?d(e,n,t):d(t))||t);return s&&t&&b(e,n,t),t};exports.DsCalendarDay=class extends y.UiKitElement{constructor(){super(...arguments),this.disabled=!1,this.selected=!1,this.today=!1,this.outsideMonth=!1}get classes(){return{day:!0,disabled:this.disabled,selected:this.selected,today:this.today,"outside-month":this.outsideMonth}}handleClick(e){if(this.disabled){e.preventDefault(),e.stopPropagation();return}this.dispatchEvent(new CustomEvent("ds-calendar-day-change",{bubbles:!0,composed:!0,detail:{day:this.day}}))}handleKeyDown(e){this.disabled||(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.handleClick(e))}render(){return u.html`
|
|
2
|
+
<button
|
|
3
|
+
class=${p.classMap(this.classes)}
|
|
4
|
+
?disabled=${this.disabled}
|
|
5
|
+
aria-label=${this.day?`Day ${this.day}`:""}
|
|
6
|
+
aria-selected=${this.selected}
|
|
7
|
+
aria-current=${this.today?"date":"false"}
|
|
8
|
+
tabindex=${this.disabled?-1:0}
|
|
9
|
+
@click=${this.handleClick}
|
|
10
|
+
@keydown=${this.handleKeyDown}
|
|
11
|
+
>
|
|
12
|
+
${this.day}
|
|
13
|
+
</button>
|
|
14
|
+
`}};exports.DsCalendarDay.styles=[h.commonStyles];r([a.property({type:Number,reflect:!0})],exports.DsCalendarDay.prototype,"day",2);r([a.property({type:Boolean,converter:o.booleanConverter,reflect:!0})],exports.DsCalendarDay.prototype,"disabled",2);r([a.property({type:Boolean,converter:o.booleanConverter,reflect:!0})],exports.DsCalendarDay.prototype,"selected",2);r([a.property({type:Boolean,converter:o.booleanConverter,reflect:!0})],exports.DsCalendarDay.prototype,"today",2);r([a.property({type:Boolean,converter:o.booleanConverter,reflect:!0,attribute:"outside-month"})],exports.DsCalendarDay.prototype,"outsideMonth",2);exports.DsCalendarDay=r([c.customUiKitElement("ds-calendar-day")],exports.DsCalendarDay);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");require("../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const e=require("../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.cjs"),n=e.css`
|
|
2
|
+
:host {
|
|
3
|
+
display: inline-flex;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.day {
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
box-sizing: border-box;
|
|
11
|
+
cursor: pointer;
|
|
12
|
+
user-select: none;
|
|
13
|
+
border: none;
|
|
14
|
+
background: none;
|
|
15
|
+
padding: 0;
|
|
16
|
+
margin: 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.day.disabled {
|
|
20
|
+
cursor: default;
|
|
21
|
+
pointer-events: none;
|
|
22
|
+
}
|
|
23
|
+
`;exports.commonStyles=n;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../core/theme.constants.cjs"),p=require("../../decorators/customUiKitElement.cjs"),f=require("../../node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/lib/decorators/provide.cjs"),y=require("../../utils/PubSub.cjs"),m=require("../../utils/booleanConverter.cjs");require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");const l=require("../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs"),v=require("../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs"),h=require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.cjs"),u=require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/state.cjs"),$=require("../../styles/source/shared/fonts-config.cjs"),T=require("./themeContext.cjs");var b=Object.defineProperty,P=Object.getOwnPropertyDescriptor,d=(a,e,s,o)=>{for(var t=o>1?void 0:o?P(e,s):e,r=a.length-1,n;r>=0;r--)(n=a[r])&&(t=(o?n(e,s,t):n(t))||t);return o&&t&&b(e,s,t),t};exports.DsThemeProvider=class extends v.LitElement{constructor(){super(...arguments),this.loadFonts=!0,this.loadStyles=!0,this.cssLoaded=!1,this.loadedFonts=new Set}updated(e){super.updated(e),e.has("theme")&&(y.pubSub.publish("theme",this.theme),sessionStorage==null||sessionStorage.setItem(c.THEME_STORAGE_KEY,this.theme),typeof FontFace<"u"&&(document!=null&&document.fonts)&&this.loadThemeFonts(),this.loadThemeStyles().then(()=>{this.cssLoaded=!0,this.dispatchEvent(new CustomEvent("ui-kit:ready",{bubbles:!0,composed:!0}))}))}loadThemeFonts(){var e;(e=$.fontsConfig[this.theme])==null||e.fonts.forEach(s=>{this.loadThemeFont(s)})}async loadThemeFont({weight:e,name:s,file:o}){if(!this.loadFonts)return Promise.resolve();const t=`${s}-${e}`;if(this.loadedFonts.has(t))return;const r=new FontFace(s,`url('https://ds-assets.cupra.com/fonts/${this.theme}/${o}.woff2') format('woff2'),
|
|
2
2
|
url('https://ds-assets.cupra.com/fonts/${this.theme}/${o}.woff') format('woff'),
|
|
3
3
|
url('https://ds-assets.cupra.com/fonts/${this.theme}/${o}.ttf') format('truetype'),
|
|
4
|
-
url('https://ds-assets.cupra.com/fonts/${this.theme}/${o}.otf') format('opentype')`,{style:"normal",weight:e,display:"swap"});try{await r.load(),document.fonts.add(r),this.loadedFonts.add(t)}catch(n){console.error(`Error loading "${s}" font with "${e}" weight:`,n)}}loadThemeStyles(){return this.loadStyles?new Promise((e,s)=>{const o="/2.0.0-canary.
|
|
4
|
+
url('https://ds-assets.cupra.com/fonts/${this.theme}/${o}.otf') format('opentype')`,{style:"normal",weight:e,display:"swap"});try{await r.load(),document.fonts.add(r),this.loadedFonts.add(t)}catch(n){console.error(`Error loading "${s}" font with "${e}" weight:`,n)}}loadThemeStyles(){return this.loadStyles?new Promise((e,s)=>{const o="/2.0.0-canary.80",t=`https://ds-assets.cupra.com${o}/styles/${this.theme}/theme.css`;if(document.head.querySelector(`link[href="${t}"]`))e();else{const r=`ui-kit-theme-${o}`,n=document.getElementById(r),i=document.createElement("link");i.id=r,i.rel="stylesheet",i.href=t,i.onload=()=>e(),i.onerror=()=>s(new Error(`Failed to load theme CSS: ${t}`)),document.head.appendChild(i),n==null||n.remove()}}):Promise.resolve()}render(){return this.cssLoaded?l.html`<slot></slot>`:l.nothing}};d([h.property({type:Boolean,converter:m.booleanConverter,attribute:"load-fonts"})],exports.DsThemeProvider.prototype,"loadFonts",2);d([h.property({type:Boolean,converter:m.booleanConverter,attribute:"load-styles"})],exports.DsThemeProvider.prototype,"loadStyles",2);d([f.provide({context:T.themeContext}),h.property({type:String})],exports.DsThemeProvider.prototype,"theme",2);d([u.state()],exports.DsThemeProvider.prototype,"cssLoaded",2);d([u.state()],exports.DsThemeProvider.prototype,"loadedFonts",2);exports.DsThemeProvider=d([p.customUiKitElement("ds-theme-provider")],exports.DsThemeProvider);
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./components/ds-accordion/ds-accordion.cjs");require("./components/ds-avatar/ds-avatar.cjs");require("./components/ds-badge/ds-badge.cjs");require("./components/ds-basic-card/ds-basic-card.cjs");require("./components/ds-basic-card-image/ds-basic-card-image.cjs");require("./components/ds-basic-card-header/ds-basic-card-header.cjs");require("./components/ds-basic-card-section/ds-basic-card-section.cjs");require("./components/ds-breadcrumbs/ds-breadcrumbs.cjs");require("./components/ds-breadcrumbs-item/ds-breadcrumbs-item.cjs");require("./components/ds-bullets/ds-bullets.cjs");require("./components/ds-button/ds-button.cjs");require("./components/ds-carousel-indicator/ds-carousel-indicator.cjs");require("./components/ds-checkbox/ds-checkbox.cjs");require("./components/ds-checkbox-group/ds-checkbox-group.cjs");require("./components/ds-chip/ds-chip.cjs");require("./components/ds-chips/ds-chips.cjs");require("./components/ds-currency/ds-currency.cjs");require("./components/ds-dialog/ds-dialog.cjs");require("./components/ds-dialog-body/ds-dialog-body.cjs");require("./components/ds-dialog-footer/ds-dialog-footer.cjs");require("./components/ds-dialog-fullscreen/ds-dialog-fullscreen.cjs");require("./components/ds-dialog-header/ds-dialog-header.cjs");require("./components/ds-divider/ds-divider.cjs");require("./components/ds-drawer/ds-drawer.cjs");require("./components/ds-hyperlink/ds-hyperlink.cjs");require("./components/ds-icon/ds-icon.cjs");require("./components/ds-icon-button/ds-icon-button.cjs");require("./components/ds-input/ds-input.cjs");require("./components/ds-interactive-card/ds-interactive-card.cjs");require("./components/ds-link-button/ds-link-button.cjs");require("./components/ds-loader-bar/ds-loader-bar.cjs");require("./components/ds-loader-dots/ds-loader-dots.cjs");require("./components/ds-loader-logo/ds-loader-logo.cjs");require("./components/ds-loader-spinner/ds-loader-spinner.cjs");require("./components/ds-logo/ds-logo.cjs");require("./components/ds-main-title/ds-main-title.cjs");require("./components/ds-map-pin/ds-map-pin.cjs");require("./components/ds-modal/ds-modal.cjs");require("./components/ds-password-input/ds-password-input.cjs");require("./components/ds-picker-item/ds-picker-item.cjs");require("./components/ds-portal/ds-portal.cjs");require("./components/ds-progress-bar/ds-progress-bar.cjs");require("./components/ds-radio/ds-radio.cjs");require("./components/ds-radio-button/ds-radio-button.cjs");require("./components/ds-radio-button-group/ds-radio-button-group.cjs");require("./components/ds-radio-group/ds-radio-group.cjs");require("./components/ds-rating/ds-rating.cjs");require("./components/ds-search/ds-search.cjs");require("./components/ds-search-input/ds-search-input.cjs");require("./components/ds-secondary-navigation/ds-secondary-navigation.cjs");require("./components/ds-segmented-control/ds-segmented-control.cjs");require("./components/ds-select/ds-select.cjs");require("./components/ds-selection/ds-selection.cjs");require("./components/ds-skeleton/ds-skeleton.cjs");require("./components/ds-sidebar-navigation/ds-sidebar-navigation.cjs");require("./components/ds-slider/ds-slider.cjs");require("./components/ds-static-box/ds-static-box.cjs");require("./components/ds-stepper/ds-stepper.cjs");require("./components/ds-tabs/ds-tabs.cjs");require("./components/ds-tag/ds-tag.cjs");require("./components/ds-text/ds-text.cjs");require("./components/ds-text-input/ds-text-input.cjs");require("./components/ds-textarea/ds-textarea.cjs");require("./components/ds-theme-provider/ds-theme-provider.cjs");require("./components/ds-toast/ds-toast.cjs");require("./components/ds-toast-message/ds-toast-message.cjs");require("./components/ds-inline-alert/ds-inline-alert.cjs");require("./components/ds-toggle-button/ds-toggle-button.cjs");require("./components/ds-toggle-switch/ds-toggle-switch.cjs");require("./components/ds-tooltip/ds-tooltip.cjs");require("./components/ds-value-unit/ds-value-unit.cjs");require("./components/ds-media-control/ds-media-control.cjs");require("./components/ds-list-item/ds-list-item.cjs");require("./components/ds-list/ds-list.cjs");require("./components/ds-icon-button-group/ds-icon-button-group.cjs");require("./components/ds-navigation-controls/ds-navigation-controls.cjs");require("./components/ds-table/ds-table.cjs");require("./components/ds-table-row/ds-table-row.cjs");require("./components/ds-table-cell/ds-table-cell.cjs");const e=require("./components/ds-icon/iconNames.cjs");exports.iconNames=e.iconNames;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./components/ds-accordion/ds-accordion.cjs");require("./components/ds-avatar/ds-avatar.cjs");require("./components/ds-badge/ds-badge.cjs");require("./components/ds-basic-card/ds-basic-card.cjs");require("./components/ds-basic-card-image/ds-basic-card-image.cjs");require("./components/ds-basic-card-header/ds-basic-card-header.cjs");require("./components/ds-basic-card-section/ds-basic-card-section.cjs");require("./components/ds-breadcrumbs/ds-breadcrumbs.cjs");require("./components/ds-breadcrumbs-item/ds-breadcrumbs-item.cjs");require("./components/ds-bullets/ds-bullets.cjs");require("./components/ds-button/ds-button.cjs");require("./components/ds-calendar/ds-calendar.cjs");require("./components/ds-calendar-day/ds-calendar-day.cjs");require("./components/ds-carousel-indicator/ds-carousel-indicator.cjs");require("./components/ds-checkbox/ds-checkbox.cjs");require("./components/ds-checkbox-group/ds-checkbox-group.cjs");require("./components/ds-chip/ds-chip.cjs");require("./components/ds-chips/ds-chips.cjs");require("./components/ds-currency/ds-currency.cjs");require("./components/ds-dialog/ds-dialog.cjs");require("./components/ds-dialog-body/ds-dialog-body.cjs");require("./components/ds-dialog-footer/ds-dialog-footer.cjs");require("./components/ds-dialog-fullscreen/ds-dialog-fullscreen.cjs");require("./components/ds-dialog-header/ds-dialog-header.cjs");require("./components/ds-divider/ds-divider.cjs");require("./components/ds-drawer/ds-drawer.cjs");require("./components/ds-hyperlink/ds-hyperlink.cjs");require("./components/ds-icon/ds-icon.cjs");require("./components/ds-icon-button/ds-icon-button.cjs");require("./components/ds-input/ds-input.cjs");require("./components/ds-interactive-card/ds-interactive-card.cjs");require("./components/ds-link-button/ds-link-button.cjs");require("./components/ds-loader-bar/ds-loader-bar.cjs");require("./components/ds-loader-dots/ds-loader-dots.cjs");require("./components/ds-loader-logo/ds-loader-logo.cjs");require("./components/ds-loader-spinner/ds-loader-spinner.cjs");require("./components/ds-logo/ds-logo.cjs");require("./components/ds-main-title/ds-main-title.cjs");require("./components/ds-map-pin/ds-map-pin.cjs");require("./components/ds-modal/ds-modal.cjs");require("./components/ds-password-input/ds-password-input.cjs");require("./components/ds-picker-item/ds-picker-item.cjs");require("./components/ds-portal/ds-portal.cjs");require("./components/ds-progress-bar/ds-progress-bar.cjs");require("./components/ds-radio/ds-radio.cjs");require("./components/ds-radio-button/ds-radio-button.cjs");require("./components/ds-radio-button-group/ds-radio-button-group.cjs");require("./components/ds-radio-group/ds-radio-group.cjs");require("./components/ds-rating/ds-rating.cjs");require("./components/ds-search/ds-search.cjs");require("./components/ds-search-input/ds-search-input.cjs");require("./components/ds-secondary-navigation/ds-secondary-navigation.cjs");require("./components/ds-segmented-control/ds-segmented-control.cjs");require("./components/ds-select/ds-select.cjs");require("./components/ds-selection/ds-selection.cjs");require("./components/ds-skeleton/ds-skeleton.cjs");require("./components/ds-sidebar-navigation/ds-sidebar-navigation.cjs");require("./components/ds-slider/ds-slider.cjs");require("./components/ds-static-box/ds-static-box.cjs");require("./components/ds-stepper/ds-stepper.cjs");require("./components/ds-tabs/ds-tabs.cjs");require("./components/ds-tag/ds-tag.cjs");require("./components/ds-text/ds-text.cjs");require("./components/ds-text-input/ds-text-input.cjs");require("./components/ds-textarea/ds-textarea.cjs");require("./components/ds-theme-provider/ds-theme-provider.cjs");require("./components/ds-toast/ds-toast.cjs");require("./components/ds-toast-message/ds-toast-message.cjs");require("./components/ds-inline-alert/ds-inline-alert.cjs");require("./components/ds-toggle-button/ds-toggle-button.cjs");require("./components/ds-toggle-switch/ds-toggle-switch.cjs");require("./components/ds-tooltip/ds-tooltip.cjs");require("./components/ds-value-unit/ds-value-unit.cjs");require("./components/ds-media-control/ds-media-control.cjs");require("./components/ds-list-item/ds-list-item.cjs");require("./components/ds-list/ds-list.cjs");require("./components/ds-icon-button-group/ds-icon-button-group.cjs");require("./components/ds-navigation-controls/ds-navigation-controls.cjs");require("./components/ds-table/ds-table.cjs");require("./components/ds-table-row/ds-table-row.cjs");require("./components/ds-table-cell/ds-table-cell.cjs");const e=require("./components/ds-icon/iconNames.cjs");exports.iconNames=e.iconNames;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../core/theme.constants.cjs"),l=require("./PubSub.cjs");class u{constructor(){this.icons={},this.handleChangeTheme=e=>{if(this.theme===e)return;this.theme=e;const n=Object.keys(this.icons);this.icons={},n.forEach(s=>this.fetchIcon(s))},this.fetchIcon=async(e,n={})=>{const s=typeof sessionStorage<"u"?sessionStorage==null?void 0:sessionStorage.getItem(r.THEME_STORAGE_KEY):null;!this.theme&&s&&(this.theme=s);const t=this.icons[e];if(t)return await t;const i=this.loadIcon(e,n).catch(a=>{throw delete this.icons[e],a});return this.icons[e]=i,i},this.loadIcon=(e,{cache:n="force-cache",...s})=>!this.theme||typeof fetch>"u"?Promise.resolve('<svg class="ds-icon"></svg>'):fetch(`https://ds-assets.cupra.com/icons/${this.theme}/${e}.svg`,{cache:n,...s}).then(t=>t.text()).catch(t=>{if((t==null?void 0:t.name)==="AbortError")throw t;return console.error(`Failed to fetch icon "${e}":`,t),""}),l.pubSub.subscribe("theme",this.handleChangeTheme)}}const o=Symbol.for("@cupra/ui-kit/icons-manager/2.0.0-canary.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../core/theme.constants.cjs"),l=require("./PubSub.cjs");class u{constructor(){this.icons={},this.handleChangeTheme=e=>{if(this.theme===e)return;this.theme=e;const n=Object.keys(this.icons);this.icons={},n.forEach(s=>this.fetchIcon(s))},this.fetchIcon=async(e,n={})=>{const s=typeof sessionStorage<"u"?sessionStorage==null?void 0:sessionStorage.getItem(r.THEME_STORAGE_KEY):null;!this.theme&&s&&(this.theme=s);const t=this.icons[e];if(t)return await t;const i=this.loadIcon(e,n).catch(a=>{throw delete this.icons[e],a});return this.icons[e]=i,i},this.loadIcon=(e,{cache:n="force-cache",...s})=>!this.theme||typeof fetch>"u"?Promise.resolve('<svg class="ds-icon"></svg>'):fetch(`https://ds-assets.cupra.com/icons/${this.theme}/${e}.svg`,{cache:n,...s}).then(t=>t.text()).catch(t=>{if((t==null?void 0:t.name)==="AbortError")throw t;return console.error(`Failed to fetch icon "${e}":`,t),""}),l.pubSub.subscribe("theme",this.handleChangeTheme)}}const o=Symbol.for("@cupra/ui-kit/icons-manager/2.0.0-canary.80"),h=globalThis;let c=h[o];c||(c=new u,Object.defineProperty(h,o,{value:c,writable:!1,configurable:!1,enumerable:!1}));const f=c;exports.iconsManager=f;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class u{constructor(){this.subscribers={},this.lastPublishedData={}}subscribe(s,r){return this.subscribers[s]||(this.subscribers[s]=[]),this.subscribers[s].push(r),this.lastPublishedData[s]}unsubscribe(s,r){this.subscribers[s]&&(this.subscribers[s]=this.subscribers[s].filter(i=>i!==r))}publish(s,r){this.lastPublishedData[s]=r,this.subscribers[s]&&this.subscribers[s].forEach(i=>{try{i(r)}catch(c){console.error(`Error in subscriber for event "${s}":`,c)}})}}const t=Symbol.for("@cupra/ui-kit/pubsub/2.0.0-canary.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class u{constructor(){this.subscribers={},this.lastPublishedData={}}subscribe(s,r){return this.subscribers[s]||(this.subscribers[s]=[]),this.subscribers[s].push(r),this.lastPublishedData[s]}unsubscribe(s,r){this.subscribers[s]&&(this.subscribers[s]=this.subscribers[s].filter(i=>i!==r))}publish(s,r){this.lastPublishedData[s]=r,this.subscribers[s]&&this.subscribers[s].forEach(i=>{try{i(r)}catch(c){console.error(`Error in subscriber for event "${s}":`,c)}})}}const t=Symbol.for("@cupra/ui-kit/pubsub/2.0.0-canary.80"),e=globalThis;let b=e[t];b||(b=new u,Object.defineProperty(e,t,{value:b,writable:!1,configurable:!1,enumerable:!1}));const l=b;exports.PubSub=u;exports.pubSub=l;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../concurrencyLimit.cjs"),a=o.concurrencyLimit(20);class s{constructor(){this.stylePromises=new Map,this.getStyles=async({componentName:e,theme:t})=>{if(!t||!e)return;const c=`https://ds-assets.cupra.com/2.0.0-canary.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../concurrencyLimit.cjs"),a=o.concurrencyLimit(20);class s{constructor(){this.stylePromises=new Map,this.getStyles=async({componentName:e,theme:t})=>{if(!t||!e)return;const c=`https://ds-assets.cupra.com/2.0.0-canary.80/styles/${t}/components/${e}.css`,r=this.getCachedStyleSheetPromise({url:c});if(r)return r;const i=a(()=>this.fetchStyle({url:c})).then(n=>(n||this.stylePromises.delete(c),n));return this.stylePromises.set(c,i),this.stylePromises.get(c)}}async fetchStyle({url:e}){try{if(typeof fetch>"u")return;const t=await fetch(e,{cache:"force-cache"});if(t.ok)return t.text()}catch(t){console.error(`Failed to fetch Style Sheet "${e}":`,t)}}getCachedStyleSheetPromise({url:e}){return this.stylePromises.get(e)}static getInstance(){return s.instance||(s.instance=new s),s.instance}}const h=s.getInstance();exports.stylesRegistry=h;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");require("../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const e=require("../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.cjs");function i(r,...t){const s=String.raw({raw:r},...t).replace(/(--private-[\w-]+)(?=\s*[):,])/g,"$1-v2-0-0-canary-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");require("../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const e=require("../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.cjs");function i(r,...t){const s=String.raw({raw:r},...t).replace(/(--private-[\w-]+)(?=\s*[):,])/g,"$1-v2-0-0-canary-80"),n=e.unsafeCSS(s);return e.css`${n}`}exports.cssWithTokens=i;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");const i=require("../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const o=require("../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/unsafe-html.cjs");function a(e,...t){const r=String.raw({raw:e},...t).replace(/(--private-[\w-]+)(?=\s*[):,])/g,"$1-v2-0-0-canary-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");const i=require("../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const o=require("../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/unsafe-html.cjs");function a(e,...t){const r=String.raw({raw:e},...t).replace(/(--private-[\w-]+)(?=\s*[):,])/g,"$1-v2-0-0-canary-80"),n=o.unsafeHTML(r);return i.html`${n}`}exports.htmlWithTokens=a;
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import { UiKitElement as b } from "../base/UiKitElement.js";
|
|
2
|
+
import "../ds-calendar-day/ds-calendar-day.js";
|
|
3
|
+
import { customUiKitElement as _ } from "../../decorators/customUiKitElement.js";
|
|
4
|
+
import "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.js";
|
|
5
|
+
import { html as y } from "../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.js";
|
|
6
|
+
import "../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.js";
|
|
7
|
+
import { property as h } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.js";
|
|
8
|
+
import { state as m } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/state.js";
|
|
9
|
+
import { classMap as M } from "../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.js";
|
|
10
|
+
import { commonStyles as k } from "./styles/common.styles.js";
|
|
11
|
+
var S = Object.defineProperty, $ = Object.getOwnPropertyDescriptor, l = (t, e, s, i) => {
|
|
12
|
+
for (var r = i > 1 ? void 0 : i ? $(e, s) : e, a = t.length - 1, o; a >= 0; a--)
|
|
13
|
+
(o = t[a]) && (r = (i ? o(e, s, r) : o(r)) || r);
|
|
14
|
+
return i && r && S(e, s, r), r;
|
|
15
|
+
};
|
|
16
|
+
let n = class extends b {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments), this.variant = "plane", this.locale = "en-US", this.firstDayOfWeek = 1, this.disabledDates = [], this.disabledWeekdays = [], this._viewDate = /* @__PURE__ */ new Date(), this._value = null, this._initialValueApplied = !1;
|
|
19
|
+
}
|
|
20
|
+
get selectedDate() {
|
|
21
|
+
if (this.value) {
|
|
22
|
+
const t = this.parseDate(this.value);
|
|
23
|
+
if (t) return t;
|
|
24
|
+
}
|
|
25
|
+
return this._value;
|
|
26
|
+
}
|
|
27
|
+
get viewDate() {
|
|
28
|
+
return this._viewDate;
|
|
29
|
+
}
|
|
30
|
+
connectedCallback() {
|
|
31
|
+
super.connectedCallback(), this.applyInitialValue(), this.initializeViewDate();
|
|
32
|
+
}
|
|
33
|
+
updated(t) {
|
|
34
|
+
super.updated(t), (t.has("value") || t.has("viewDateAttr")) && this.initializeViewDate();
|
|
35
|
+
}
|
|
36
|
+
applyInitialValue() {
|
|
37
|
+
if (!this._initialValueApplied && (this._initialValueApplied = !0, this.initialValue)) {
|
|
38
|
+
const t = this.parseDate(this.initialValue);
|
|
39
|
+
t && (this._value = t);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
initializeViewDate() {
|
|
43
|
+
if (this.viewDateAttr) {
|
|
44
|
+
const t = this.parseDate(this.viewDateAttr);
|
|
45
|
+
t && (this._viewDate = t);
|
|
46
|
+
} else if (this.value) {
|
|
47
|
+
const t = this.parseDate(this.value);
|
|
48
|
+
t && (this._viewDate = new Date(t));
|
|
49
|
+
} else this._value ? this._viewDate = new Date(this._value) : this._viewDate = /* @__PURE__ */ new Date();
|
|
50
|
+
}
|
|
51
|
+
parseDate(t) {
|
|
52
|
+
const e = t.split("-");
|
|
53
|
+
if (e.length >= 2) {
|
|
54
|
+
const s = Number.parseInt(e[0], 10), i = Number.parseInt(e[1], 10) - 1, r = e.length >= 3 ? Number.parseInt(e[2], 10) : 1, a = new Date(s, i, r);
|
|
55
|
+
if (!Number.isNaN(a.getTime()))
|
|
56
|
+
return a;
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
get calendarClasses() {
|
|
61
|
+
return {
|
|
62
|
+
calendar: !0,
|
|
63
|
+
[this.variant]: !0
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
get weekdayNames() {
|
|
67
|
+
const t = new Intl.DateTimeFormat(this.locale, { weekday: "short" }), e = [], s = new Date(2024, 0, 1);
|
|
68
|
+
for (; s.getDay() !== this.firstDayOfWeek; )
|
|
69
|
+
s.setDate(s.getDate() + 1);
|
|
70
|
+
for (let i = 0; i < 7; i++) {
|
|
71
|
+
const r = new Date(s);
|
|
72
|
+
r.setDate(s.getDate() + i);
|
|
73
|
+
const a = t.format(r);
|
|
74
|
+
e.push(a.slice(0, 2));
|
|
75
|
+
}
|
|
76
|
+
return e;
|
|
77
|
+
}
|
|
78
|
+
get monthYearLabel() {
|
|
79
|
+
return new Intl.DateTimeFormat(this.locale, {
|
|
80
|
+
month: "long",
|
|
81
|
+
year: "numeric"
|
|
82
|
+
}).format(this._viewDate);
|
|
83
|
+
}
|
|
84
|
+
getDaysInMonth(t, e) {
|
|
85
|
+
return new Date(t, e + 1, 0).getDate();
|
|
86
|
+
}
|
|
87
|
+
getFirstDayOfMonth(t, e) {
|
|
88
|
+
return new Date(t, e, 1).getDay();
|
|
89
|
+
}
|
|
90
|
+
get calendarDays() {
|
|
91
|
+
const t = this._viewDate.getFullYear(), e = this._viewDate.getMonth(), s = /* @__PURE__ */ new Date();
|
|
92
|
+
s.setHours(0, 0, 0, 0);
|
|
93
|
+
const i = this.getDaysInMonth(t, e);
|
|
94
|
+
let a = this.getFirstDayOfMonth(t, e) - this.firstDayOfWeek;
|
|
95
|
+
a < 0 && (a += 7);
|
|
96
|
+
const o = [], c = e === 0 ? 11 : e - 1, u = e === 0 ? t - 1 : t, p = this.getDaysInMonth(u, c);
|
|
97
|
+
for (let d = a - 1; d >= 0; d--) {
|
|
98
|
+
const D = p - d, w = new Date(u, c, D);
|
|
99
|
+
o.push(this.createCalendarDay(w, !1, s));
|
|
100
|
+
}
|
|
101
|
+
for (let d = 1; d <= i; d++) {
|
|
102
|
+
const D = new Date(t, e, d);
|
|
103
|
+
o.push(this.createCalendarDay(D, !0, s));
|
|
104
|
+
}
|
|
105
|
+
const f = 42 - o.length, v = e === 11 ? 0 : e + 1, g = e === 11 ? t + 1 : t;
|
|
106
|
+
for (let d = 1; d <= f; d++) {
|
|
107
|
+
const D = new Date(g, v, d);
|
|
108
|
+
o.push(this.createCalendarDay(D, !1, s));
|
|
109
|
+
}
|
|
110
|
+
return o;
|
|
111
|
+
}
|
|
112
|
+
createCalendarDay(t, e, s) {
|
|
113
|
+
t.setHours(0, 0, 0, 0);
|
|
114
|
+
const i = t.getDate(), r = t.getMonth(), a = t.getFullYear(), o = i === s.getDate() && r === s.getMonth() && a === s.getFullYear(), c = this.selectedDate, u = c ? i === c.getDate() && r === c.getMonth() && a === c.getFullYear() : !1, p = !e || this.isDateDisabled(t);
|
|
115
|
+
return {
|
|
116
|
+
day: i,
|
|
117
|
+
month: r,
|
|
118
|
+
year: a,
|
|
119
|
+
date: t,
|
|
120
|
+
isCurrentMonth: e,
|
|
121
|
+
isToday: o,
|
|
122
|
+
isSelected: u,
|
|
123
|
+
isDisabled: p
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
isDateDisabled(t) {
|
|
127
|
+
if (this.minDate) {
|
|
128
|
+
const e = new Date(this.minDate);
|
|
129
|
+
if (e.setHours(0, 0, 0, 0), t < e) return !0;
|
|
130
|
+
}
|
|
131
|
+
if (this.maxDate) {
|
|
132
|
+
const e = new Date(this.maxDate);
|
|
133
|
+
if (e.setHours(0, 0, 0, 0), t > e) return !0;
|
|
134
|
+
}
|
|
135
|
+
if (this.disabledWeekdays && this.disabledWeekdays.length > 0) {
|
|
136
|
+
const e = t.getDay();
|
|
137
|
+
if (this.disabledWeekdays.includes(e)) return !0;
|
|
138
|
+
}
|
|
139
|
+
if (this.disabledDates && this.disabledDates.length > 0) {
|
|
140
|
+
const e = t.toISOString().split("T")[0];
|
|
141
|
+
if (this.disabledDates.includes(e)) return !0;
|
|
142
|
+
}
|
|
143
|
+
return !1;
|
|
144
|
+
}
|
|
145
|
+
handlePrevMonth() {
|
|
146
|
+
const t = new Date(this._viewDate);
|
|
147
|
+
t.setMonth(t.getMonth() - 1), this._viewDate = t;
|
|
148
|
+
}
|
|
149
|
+
handleNextMonth() {
|
|
150
|
+
const t = new Date(this._viewDate);
|
|
151
|
+
t.setMonth(t.getMonth() + 1), this._viewDate = t;
|
|
152
|
+
}
|
|
153
|
+
handleDayChange(t) {
|
|
154
|
+
var f;
|
|
155
|
+
t.stopPropagation();
|
|
156
|
+
const e = t.target;
|
|
157
|
+
if (!e || !e.tagName.toLowerCase().startsWith("ds-calendar-day")) return;
|
|
158
|
+
const i = Array.from(((f = this.shadowRoot) == null ? void 0 : f.querySelectorAll("ds-calendar-day")) || []).indexOf(e);
|
|
159
|
+
if (i === -1) return;
|
|
160
|
+
const a = this.calendarDays[i];
|
|
161
|
+
if (!a || a.isDisabled) return;
|
|
162
|
+
this._value = a.date, this._viewDate = new Date(a.date);
|
|
163
|
+
const o = a.date.getFullYear(), c = String(a.date.getMonth() + 1).padStart(2, "0"), u = String(a.date.getDate()).padStart(2, "0"), p = `${o}-${c}-${u}`;
|
|
164
|
+
this.dispatchEvent(
|
|
165
|
+
new CustomEvent("ds-calendar-change", {
|
|
166
|
+
bubbles: !0,
|
|
167
|
+
composed: !0,
|
|
168
|
+
detail: {
|
|
169
|
+
value: p,
|
|
170
|
+
date: a.date
|
|
171
|
+
}
|
|
172
|
+
})
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
get prevButtonTemplate() {
|
|
176
|
+
return this.componentFactory.createIconButton({
|
|
177
|
+
class: "nav-button",
|
|
178
|
+
"icon-name": "arrow-left",
|
|
179
|
+
"data-aria-label": "Previous month",
|
|
180
|
+
"@click": this.handlePrevMonth,
|
|
181
|
+
variant: "naked",
|
|
182
|
+
size: "medium",
|
|
183
|
+
color: "var(--ds-icon-button-icon-color-standard-default, #fafafa)"
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
get nextButtonTemplate() {
|
|
187
|
+
return this.componentFactory.createIconButton({
|
|
188
|
+
class: "nav-button",
|
|
189
|
+
"icon-name": "arrow-right",
|
|
190
|
+
"data-aria-label": "Next month",
|
|
191
|
+
"@click": this.handleNextMonth,
|
|
192
|
+
variant: "naked",
|
|
193
|
+
size: "medium",
|
|
194
|
+
color: "var(--ds-icon-button-icon-color-standard-default, #fafafa)"
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
get weekdaysTemplate() {
|
|
198
|
+
return y`
|
|
199
|
+
<div class="weekdays">
|
|
200
|
+
${this.weekdayNames.map((t) => y`<div class="weekday">${t}</div>`)}
|
|
201
|
+
</div>
|
|
202
|
+
`;
|
|
203
|
+
}
|
|
204
|
+
get daysTemplate() {
|
|
205
|
+
return y`
|
|
206
|
+
<div class="days-grid" @ds-calendar-day-change=${this.handleDayChange}>
|
|
207
|
+
${this.calendarDays.map(
|
|
208
|
+
(t) => y`
|
|
209
|
+
<ds-calendar-day
|
|
210
|
+
day=${t.day}
|
|
211
|
+
?disabled=${t.isDisabled}
|
|
212
|
+
?selected=${t.isSelected}
|
|
213
|
+
?today=${t.isToday}
|
|
214
|
+
?outside-month=${!t.isCurrentMonth}
|
|
215
|
+
></ds-calendar-day>
|
|
216
|
+
`
|
|
217
|
+
)}
|
|
218
|
+
</div>
|
|
219
|
+
`;
|
|
220
|
+
}
|
|
221
|
+
render() {
|
|
222
|
+
return y`
|
|
223
|
+
<div class=${M(this.calendarClasses)} role="application" aria-label="Calendar">
|
|
224
|
+
<div class="header">
|
|
225
|
+
${this.prevButtonTemplate}
|
|
226
|
+
<div class="month-year" aria-live="polite">${this.monthYearLabel}</div>
|
|
227
|
+
${this.nextButtonTemplate}
|
|
228
|
+
</div>
|
|
229
|
+
${this.weekdaysTemplate} ${this.daysTemplate}
|
|
230
|
+
</div>
|
|
231
|
+
`;
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
n.styles = [k];
|
|
235
|
+
l([
|
|
236
|
+
h({ type: String, reflect: !0 })
|
|
237
|
+
], n.prototype, "value", 2);
|
|
238
|
+
l([
|
|
239
|
+
h({ type: String, reflect: !0 })
|
|
240
|
+
], n.prototype, "variant", 2);
|
|
241
|
+
l([
|
|
242
|
+
h({ type: String, reflect: !0 })
|
|
243
|
+
], n.prototype, "locale", 2);
|
|
244
|
+
l([
|
|
245
|
+
h({ type: Number, reflect: !0, attribute: "first-day-of-week" })
|
|
246
|
+
], n.prototype, "firstDayOfWeek", 2);
|
|
247
|
+
l([
|
|
248
|
+
h({ type: String, reflect: !0, attribute: "min-date" })
|
|
249
|
+
], n.prototype, "minDate", 2);
|
|
250
|
+
l([
|
|
251
|
+
h({ type: String, reflect: !0, attribute: "max-date" })
|
|
252
|
+
], n.prototype, "maxDate", 2);
|
|
253
|
+
l([
|
|
254
|
+
h({ type: Array, attribute: "disabled-dates" })
|
|
255
|
+
], n.prototype, "disabledDates", 2);
|
|
256
|
+
l([
|
|
257
|
+
h({ type: Array, attribute: "disabled-weekdays" })
|
|
258
|
+
], n.prototype, "disabledWeekdays", 2);
|
|
259
|
+
l([
|
|
260
|
+
h({ type: String, reflect: !0, attribute: "view-date" })
|
|
261
|
+
], n.prototype, "viewDateAttr", 2);
|
|
262
|
+
l([
|
|
263
|
+
h({ type: String, attribute: "initial-value" })
|
|
264
|
+
], n.prototype, "initialValue", 2);
|
|
265
|
+
l([
|
|
266
|
+
m()
|
|
267
|
+
], n.prototype, "_viewDate", 2);
|
|
268
|
+
l([
|
|
269
|
+
m()
|
|
270
|
+
], n.prototype, "_value", 2);
|
|
271
|
+
n = l([
|
|
272
|
+
_("ds-calendar")
|
|
273
|
+
], n);
|
|
274
|
+
export {
|
|
275
|
+
n as DsCalendar
|
|
276
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import "../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.js";
|
|
2
|
+
import "../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.js";
|
|
3
|
+
import "../../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.js";
|
|
4
|
+
import { css as e } from "../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.js";
|
|
5
|
+
const n = e`
|
|
6
|
+
:host {
|
|
7
|
+
display: inline-block;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.calendar {
|
|
11
|
+
display: flex;
|
|
12
|
+
flex-direction: column;
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.header {
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
justify-content: space-between;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.month-year {
|
|
23
|
+
flex: 1;
|
|
24
|
+
text-align: center;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.weekdays {
|
|
28
|
+
display: grid;
|
|
29
|
+
grid-template-columns: repeat(7, 1fr);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.weekday {
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
justify-content: center;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.days-grid {
|
|
39
|
+
display: grid;
|
|
40
|
+
grid-template-columns: repeat(7, 1fr);
|
|
41
|
+
}
|
|
42
|
+
`;
|
|
43
|
+
export {
|
|
44
|
+
n as commonStyles
|
|
45
|
+
};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { UiKitElement as c } from "../base/UiKitElement.js";
|
|
2
|
+
import { customUiKitElement as h } from "../../decorators/customUiKitElement.js";
|
|
3
|
+
import { booleanConverter as l } from "../../utils/booleanConverter.js";
|
|
4
|
+
import "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.js";
|
|
5
|
+
import { html as y } from "../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.js";
|
|
6
|
+
import "../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.js";
|
|
7
|
+
import { property as o } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.js";
|
|
8
|
+
import { classMap as u } from "../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.js";
|
|
9
|
+
import { commonStyles as m } from "./styles/common.styles.js";
|
|
10
|
+
var f = Object.defineProperty, b = Object.getOwnPropertyDescriptor, s = (e, a, d, i) => {
|
|
11
|
+
for (var r = i > 1 ? void 0 : i ? b(a, d) : a, n = e.length - 1, p; n >= 0; n--)
|
|
12
|
+
(p = e[n]) && (r = (i ? p(a, d, r) : p(r)) || r);
|
|
13
|
+
return i && r && f(a, d, r), r;
|
|
14
|
+
};
|
|
15
|
+
let t = class extends c {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments), this.disabled = !1, this.selected = !1, this.today = !1, this.outsideMonth = !1;
|
|
18
|
+
}
|
|
19
|
+
get classes() {
|
|
20
|
+
return {
|
|
21
|
+
day: !0,
|
|
22
|
+
disabled: this.disabled,
|
|
23
|
+
selected: this.selected,
|
|
24
|
+
today: this.today,
|
|
25
|
+
"outside-month": this.outsideMonth
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
handleClick(e) {
|
|
29
|
+
if (this.disabled) {
|
|
30
|
+
e.preventDefault(), e.stopPropagation();
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.dispatchEvent(
|
|
34
|
+
new CustomEvent("ds-calendar-day-change", {
|
|
35
|
+
bubbles: !0,
|
|
36
|
+
composed: !0,
|
|
37
|
+
detail: {
|
|
38
|
+
day: this.day
|
|
39
|
+
}
|
|
40
|
+
})
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
handleKeyDown(e) {
|
|
44
|
+
this.disabled || (e.key === "Enter" || e.key === " ") && (e.preventDefault(), this.handleClick(e));
|
|
45
|
+
}
|
|
46
|
+
render() {
|
|
47
|
+
return y`
|
|
48
|
+
<button
|
|
49
|
+
class=${u(this.classes)}
|
|
50
|
+
?disabled=${this.disabled}
|
|
51
|
+
aria-label=${this.day ? `Day ${this.day}` : ""}
|
|
52
|
+
aria-selected=${this.selected}
|
|
53
|
+
aria-current=${this.today ? "date" : "false"}
|
|
54
|
+
tabindex=${this.disabled ? -1 : 0}
|
|
55
|
+
@click=${this.handleClick}
|
|
56
|
+
@keydown=${this.handleKeyDown}
|
|
57
|
+
>
|
|
58
|
+
${this.day}
|
|
59
|
+
</button>
|
|
60
|
+
`;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
t.styles = [m];
|
|
64
|
+
s([
|
|
65
|
+
o({ type: Number, reflect: !0 })
|
|
66
|
+
], t.prototype, "day", 2);
|
|
67
|
+
s([
|
|
68
|
+
o({ type: Boolean, converter: l, reflect: !0 })
|
|
69
|
+
], t.prototype, "disabled", 2);
|
|
70
|
+
s([
|
|
71
|
+
o({ type: Boolean, converter: l, reflect: !0 })
|
|
72
|
+
], t.prototype, "selected", 2);
|
|
73
|
+
s([
|
|
74
|
+
o({ type: Boolean, converter: l, reflect: !0 })
|
|
75
|
+
], t.prototype, "today", 2);
|
|
76
|
+
s([
|
|
77
|
+
o({ type: Boolean, converter: l, reflect: !0, attribute: "outside-month" })
|
|
78
|
+
], t.prototype, "outsideMonth", 2);
|
|
79
|
+
t = s([
|
|
80
|
+
h("ds-calendar-day")
|
|
81
|
+
], t);
|
|
82
|
+
export {
|
|
83
|
+
t as DsCalendarDay
|
|
84
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import "../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.js";
|
|
2
|
+
import "../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.js";
|
|
3
|
+
import "../../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.js";
|
|
4
|
+
import { css as e } from "../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.js";
|
|
5
|
+
const t = e`
|
|
6
|
+
:host {
|
|
7
|
+
display: inline-flex;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.day {
|
|
11
|
+
display: flex;
|
|
12
|
+
align-items: center;
|
|
13
|
+
justify-content: center;
|
|
14
|
+
box-sizing: border-box;
|
|
15
|
+
cursor: pointer;
|
|
16
|
+
user-select: none;
|
|
17
|
+
border: none;
|
|
18
|
+
background: none;
|
|
19
|
+
padding: 0;
|
|
20
|
+
margin: 0;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.day.disabled {
|
|
24
|
+
cursor: default;
|
|
25
|
+
pointer-events: none;
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
export {
|
|
29
|
+
t as commonStyles
|
|
30
|
+
};
|