@descope/web-components-ui 1.128.0 → 1.130.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.
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[9257],{6424:(e,t,i)=>{i.d(t,{A:()=>C});const{host:r,label:n,placeholder:o,requiredIndicator:s,inputField:a,input:l,inputMask:p,helperText:d,errorMessage:h,disabledPlaceholder:c,inputDisabled:u,inputIcon:g,externalInput:y,externalInputDisabled:m,externalPlaceholder:b,externalDisabledPlaceholder:v}={host:{selector:()=>":host"},label:{selector:"::part(label)"},requiredIndicator:{selector:"[required]::part(required-indicator)::after"},placeholder:[{selector:"> input:placeholder-shown"},{selector:()=>":host::slotted(input:placeholder-shown)"}],disabledPlaceholder:{selector:"> input:disabled::placeholder"},inputField:{selector:"::part(input-field)"},input:{selector:"input"},inputMask:{selector:"::part(input-field)::before"},inputDisabled:{selector:"input:disabled"},helperText:{selector:"::part(helper-text)"},errorMessage:{selector:"::part(error-message)"},inputIcon:{selector:"vaadin-icon"},externalInput:{selector:()=>"::slotted(input)"},externalInputDisabled:{selector:()=>"::slotted(input:disabled)"},externalPlaceholder:{selector:()=>"::slotted(input:placeholder-shown)"},externalDisabledPlaceholder:{selector:()=>"::slotted(input:disabled::placeholder)"}},C={fontSize:[{},r],fontFamily:[n,a,d,h],labelFontSize:{...n,property:"font-size"},labelFontWeight:{...n,property:"font-weight"},labelTextColor:[{...n,property:"color"},{...s,property:"color"},{...n,property:"-webkit-text-fill-color"},{...s,property:"-webkit-text-fill-color"}],hostWidth:{...r,property:"width"},hostMinWidth:{...r,property:"min-width"},hostDirection:{...r,property:"direction"},inputDirection:{...l,property:"direction"},inputBackgroundColor:[{...a,property:"background-color"},{...p,property:"background-color"}],errorMessageTextColor:{...h,property:"color"},errorMessageIcon:{...h,property:"background-image"},errorMessageIconSize:{...h,property:"background-size"},errorMessageIconPadding:{...h,property:"padding-inline-start"},errorMessageIconRepeat:{...h,property:"background-repeat"},errorMessageIconPosition:{...h,property:"background-position"},errorMessageFontSize:{...h,property:"font-size"},helperTextColor:{...d,property:"-webkit-text-fill-color"},inputValueTextColor:[{...a,property:"color"},{...u,property:"-webkit-text-fill-color"},{...m,property:"-webkit-text-fill-color"}],inputCaretTextColor:[{...l,property:"caret-color"},{...y,property:"caret-color"}],labelRequiredIndicator:{...s,property:"content"},inputBorderColor:{...a,property:"border-color"},inputBorderWidth:{...a,property:"border-width"},inputBorderStyle:{...a,property:"border-style"},inputBorderRadius:{...a,property:"border-radius"},inputHeight:{...a,property:"height"},inputHorizontalPadding:[{...l,property:"padding-left"},{...l,property:"padding-right"},{...y,property:"padding-left"},{...y,property:"padding-right"}],inputOutlineColor:{...a,property:"outline-color"},inputOutlineStyle:{...a,property:"outline-style"},inputOutlineWidth:{...a,property:"outline-width"},inputOutlineOffset:{...a,property:"outline-offset"},textAlign:{},inputTextAlign:[{...l,property:"text-align"},{...y,property:"text-align"}],inputPlaceholderColor:[{selector:()=>":host input:placeholder-shown",property:"color"},{...b,property:"color"},{...o,property:"color"},{...c,property:"-webkit-text-fill-color"},{...v,property:"-webkit-text-fill-color"}],labelPosition:{...n,property:"position"},labelTopPosition:{...n,property:"top"},labelHorizontalPosition:[{...n,property:"left"},{...n,property:"right"}],inputTransformY:{...n,property:"transform"},inputTransition:{...n,property:"transition"},marginInlineStart:{...n,property:"margin-inline-start"},placeholderOpacity:[{selector:"> input:placeholder-shown",property:"opacity"},{...b,property:"opacity"}],inputVerticalAlignment:[{...a,property:"align-items"},{...y,property:"align-items"}],valueInputHeight:[{...l,property:"height"},{...y,property:"height"}],valueInputMarginBottom:[{...l,property:"margin-bottom"},{...y,property:"margin-bottom"}],inputIconOffset:[{...g,property:"margin-right"},{...g,property:"margin-left"}],inputIconSize:{...g,property:"font-size"},inputIconColor:{...g,property:"color"}}},21374:(e,t,i)=>{i.r(t),i.d(t,{TextFieldClass:()=>r.w,componentName:()=>r.T}),i(11284),i(37182),i(95260);var r=i(79275);customElements.define(r.T,r.w)},79275:(e,t,i)=>{i.d(t,{T:()=>l,w:()=>d});var r=i(79365),n=i(6424),o=i(9696),s=i(97810),a=i(73551);const l=(0,s.xE)("text-field"),p=["type","label-type","copy-to-clipboard"],d=(0,o.Zz)((0,r.RF)({mappings:n.A}),r.VO,(0,r.OZ)({proxyProps:["value","selectionStart"],useProxyTargets:!0}),r.tQ,(e=>class extends e{static get observedAttributes(){return p.concat(e.observedAttributes||[])}icon;init(){super.init?.()}renderCopyToClipboard(e){if(!e)return void this.icon?.remove();const t={icon:"vaadin:copy-o",title:"Copy",style:"cursor: pointer"},i={icon:"vaadin:check-circle-o",title:"Copied",style:"cursor: initial"};this.icon=Object.assign(document.createElement("vaadin-icon"),{slot:"suffix",...t}),this.baseElement.appendChild(this.icon),this.icon.addEventListener("click",(()=>{navigator.clipboard.writeText(this.value),Object.assign(this.icon,i),setTimeout((()=>{Object.assign(this.icon,t)}),5e3)}))}onLabelClick(){this.focus()}attributeChangedCallback(e,t,i){super.attributeChangeCallback?.(e,t,i),"type"===e&&this.baseElement._setType(i),t!==i&&("label-type"===e?"floating"===i?this.addEventListener("click",this.onLabelClick):this.removeEventListener("click",this.onLabelClick):"copy-to-clipboard"===e&&this.renderCopyToClipboard("true"===i))}}))((0,r.tz)({slots:["prefix","suffix"],wrappedEleName:"vaadin-text-field",style:()=>`\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${d.cssVarList.inputOutlineWidth}) + var(${d.cssVarList.inputOutlineOffset}));\n box-sizing: border-box;\n\t\t\t}\n :host(:is([readonly], [disabled])) ::slotted(:is(input, textarea):placeholder-shown) {\n opacity: 1;\n }\n\n vaadin-text-field[label-type="floating"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-text-field[label-type="floating"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n ${(0,a.$J)("vaadin-text-field")}\n\t\t\t${(0,a.cy)(d.cssVarList)}\n\t\t\t${(0,a.LJ)("vaadin-text-field",d.cssVarList)}\n ${(0,a.Kl)()}\n\n vaadin-text-field vaadin-icon {\n align-self: center;\n }\n\t\t`,excludeAttrsSync:["tabindex","style"],componentName:l}))},79981:(e,t,i)=>{i.r(t),i.d(t,{DateFieldClass:()=>k,componentName:()=>g}),i(45992),i(88350),i(21374);var r=i(3393),n=i(79365),o=i(97810),s=i(9696),a=i(49224),l=i(77421),p=i(80071),d=i(64101);class h{#e=Object.freeze([]);constructor({id:e,min:t,max:i,placeholder:r},n){this.id=e,this.min=t,this.max=i,this.placeholder=r,this.onChange=n}get data(){return this.#e}set data(e){this.#e=Object.freeze(e),this.onChange?.()}get#t(){return this.data.length?this.numberValue:0}get numberValue(){return Number(this.stringValue)}get stringValue(){return(this.data.join("")||this.placeholder).padStart(this.length,"0")}get isFull(){return 10*this.numberValue>this.max||this.data.length===this.length}get isEmpty(){return this.stringValue===this.placeholder}get length(){return this.max.toString().length}set(e){this.data=e.toString().split("")}add(e){let t=this.data;return t=[...t,e],Number(t.join(""))>this.max?t=[e]:this.length<t.length&&(t=t.slice(1,t.length)),this.data=t,e}del(){this.data.filter((e=>"0"!==e)).filter(Boolean).length?this.data=this.data.slice(0,this.data.length-1):this.data=[]}clear(){this.data=[]}inc(e){this.replaceValue(this.#t<this.max?Math.max(this.#t+(e||1),this.min):this.min)}dec(e){this.replaceValue(this.#t>this.min?Math.min(this.#t-(e||1),this.max):this.max)}isInRange(e){return e>=this.min&&e<=this.max}replaceValue(e){this.isInRange(e)&&(this.data=e.toString().padStart(this.length,0).split(""))}setMin(e){this.min=Number(e)}setMax(e){this.max=Number(e)}}var c=i(79275),u=i(25964);const g=(0,o.xE)("date-field"),y=(0,r.y)({componentName:g,baseSelector:"vaadin-popover"}),m=["format","opened","initial-value","readonly","disable-calendar","utc-time"],b=["years-range","calendar-months","calendar-weekdays"],v=[...m,...b],C=c.w.cssVarList,{host:f,input:x,inputEleRTL:E,toggleButton:w,overlay:I,backdrop:T,errorMessage:S}={host:{selector:()=>":host"},input:{selector:()=>"descope-text-field"},inputEleRTL:{selector:()=>':host([st-host-direction="rtl"]) descope-text-field'},toggleButton:{selector:()=>".toggle-calendar"},overlay:{selector:"vaadin-popover-overlay::part(overlay)"},backdrop:{selector:"vaadin-popover-overlay::part(backdrop)"}},k=(0,s.Zz)((0,n.RF)({componentNameOverride:(0,o.xE)("input-wrapper")}),(0,n.RF)({mappings:{iconMargin:{...w,property:"margin-inline-end"},hostWidth:{...f,property:"width"},hostDirection:{...f,property:"direction"},textAlign:{...x,property:"text-align"},rtlInputDirection:{...E,property:C.inputDirection},rtlInputAlignment:{...E,property:C.inputTextAlign},overlayGap:{property:()=>k.cssVarList.overlayGap},overlayBackgroundColor:{property:()=>k.cssVarList.overlayBackgroundColor},overlayPadding:{property:()=>k.cssVarList.overlayPadding},overlayBoxShadow:{property:()=>k.overlayBoxShadow},overlayOutlineWidth:{property:()=>k.cssVarList.overlayOutlineWidth},overlayOutlineColor:{property:()=>k.cssVarList.overlayOutlineColor},overlayOutlineStyle:{property:()=>k.cssVarList.overlayOutlineStyle},errorMessageIcon:{selector:c.w.componentName,property:c.w.cssVarList.errorMessageIcon},errorMessageIconSize:{selector:c.w.componentName,property:c.w.cssVarList.errorMessageIconSize},errorMessageIconPadding:{selector:c.w.componentName,property:c.w.cssVarList.errorMessageIconPadding},errorMessageIconRepeat:{selector:c.w.componentName,property:c.w.cssVarList.errorMessageIconRepeat},errorMessageIconPosition:{selector:c.w.componentName,property:c.w.cssVarList.errorMessageIconPosition},errorMessageFontSize:{selector:c.w.componentName,property:c.w.cssVarList.errorMessageFontSize}}}),(0,n.mA)({name:"overlay",selector:"",mappings:{marginTop:{...I,property:"margin-top"},backgroundColor:{...I},backdropBackgroundColor:{...T,property:"background-color"},backdropPointerEvents:{...T,property:"pointer-events"},padding:{...I},boxShadow:{...I},outlineWidth:{...I},outlineColor:{...I},outlineStyle:{...I}}}),n.VO,n.tQ)(class extends y{epoch="";format=d.ui;selectedCounterIdx=0;updateCountersDisplay(){this.inputElement.value=this.countersValue}updateValue(){if(this.isCountersOutOfRange)this.updateEpoch("");else{const e=l.F[this.format].getDate(this.inputElement.value);this.updateEpoch((0,a.xq)(e,this.isUtcTime))}}onDateCounterChange=()=>{this.updateCountersDisplay(),this.updateValue(),this.#i()};updateEpoch(e){Number.isNaN(e)||!e.toString()?.length?this.epoch="":this.epoch=(0,a.xq)((0,a.Nq)(e,this.isUtcTime),this.isUtcTime)}dateCounters=[new h(d.rR.MONTH,this.onDateCounterChange.bind(this)),new h(d.rR.DAY,this.onDateCounterChange.bind(this)),new h(d.rR.YEAR,this.onDateCounterChange.bind(this))];static get observedAttributes(){return[].concat(y.observedAttributes||[],v)}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML=`\n <div>\n <descope-text-field inputmode="numeric">\n <span slot="suffix" class="toggle-calendar">\n ${p.ki}\n </span>\n </descope-text-field>\n <vaadin-popover></vaadin-popover>\n </div>\n `,(0,u.fz)('\n :host {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n max-width: 100%;\n }\n\n :host ::slotted {\n padding: 0;\n }\n\n .toggle-calendar {\n cursor: pointer;\n display: flex;\n align-self: center;\n z-index: 1;\n height: 100%;\n align-items: center;\n }\n\n :host([readonly="true"]) .toggle-calendar {\n pointer-events: none;\n }\n\n .hidden {\n display: none;\n }\n ',this),this.inputElement=this.shadowRoot.querySelector("descope-text-field"),this.popoverToggleButton=this.inputElement.querySelector(".toggle-calendar")}get validationTarget(){return this.inputElement}get opened(){return"true"===this.getAttribute("opened")}get displayValueEpoch(){const e=l.F[this.format].getDate(this.inputElement.value);return(0,a.mZ)(e?.getTime())?e.getTime():null}get sortedCounters(){return this.format.split(d.eT).map((e=>this.dateCounters.find((t=>t.placeholder===e))))}get activeCounter(){return this.sortedCounters[this.selectedCounterIdx]}get countersValue(){return this.sortedCounters.map((e=>e.stringValue)).join(d.eT)}get overlay(){return this.baseElement.shadowRoot?.querySelector("vaadin-popover-overlay")}get backdrop(){return this.overlay.shadowRoot?.querySelector("#backdrop")}get calendar(){return this.overlay?.querySelector("descope-calendar")}get isRTL(){const e=getComputedStyle(this.baseElement).getPropertyValue("direction");return e?"rtl"===e:"rtl"===this.getAttribute("st-host-direction")}get value(){return this.isInvalidDate()?"":this.epoch}set value(e){let t=parseInt(e,10);Number.isNaN(t)?this.updateEpoch(""):(this.updateEpoch(t),this.updateDateCounters((0,a.Nq)(t)))}get isCountersEmpty(){return this.dateCounters.every((e=>e.isEmpty))}get isCountersOutOfRange(){return this.dateCounters.some((e=>!e.isInRange(e.numberValue)))}get disableCalendar(){return"true"===this.getAttribute("disable-calendar")}get isUtcTime(){return"true"===this.getAttribute("utc-time")}get isSelectAll(){const e=this.inputElement.baseElement.inputElement;return e.value.length===e.selectionStart+e.selectionEnd}reportValidity(){this.inputElement.reportValidity()}#i(){this.inputElement.baseElement.dispatchEvent(new Event("input",{bubbles:!0}))}updateInputDisplay(){this.inputElement.value=(0,a.jO)((0,a.Nq)(this.countersValue).getTime(),this.format)}init(){super.init?.(),this.updateFormatPattern(),this.initPopover(),this.onDateCounterChange(),this.initInputElement(),setTimeout((()=>{this.#r()}),0)}initInputElement(){this.inputElement.getValidity=this.getValidity.bind(this),this.inputElement.baseElement.checkValidity=this.checkValidity.bind(this),this.popoverToggleButton.addEventListener("click",this.onPopoverToggle.bind(this)),this.inputElement.addEventListener("focus",this.onFocus.bind(this)),this.inputElement.addEventListener("blur",this.onBlur.bind(this)),this.inputElement.addEventListener("click",this.handleMouseCaretPositionChange.bind(this)),this.inputElement.addEventListener("keydown",this.handleKeyboard.bind(this)),this.inputElement.addEventListener("beforeinput",this.handleInput.bind(this)),this.inputElement.addEventListener("pointerdown",this.onPointerDown.bind(this)),this.inputElement.addEventListener("paste",this.onPaste.bind(this)),(0,o.EA)(this,this.inputElement,{includeAttrs:["label","label-type","placeholder","disabled","readonly","bordered","required","full-width","st-host-direction","pattern","bordered","data-errormessage-value-missing","data-errormessage-pattern-mismatch","data-errormessage-range-underflow","data-errormessage-range-overflow","st-error-message-icon","st-error-message-icon-size","st-error-message-icon-padding"]})}handleInput(e){e.preventDefault(),this.handleSelectAll(),e.data&&(0,a.Et)(e.data)?(this.parseDigits(e.data),this.updateCountersDisplay()):e.inputType&&this.handleNavKeys(e)}initPopover(){this.baseElement.trigger=["click"],this.baseElement.withBackdrop=!0,this.baseElement.renderer=this.#n.bind(this),this.baseElement.addEventListener("click",(e=>{e.preventDefault(),e.stopPropagation()}))}handleSelectAll(){this.isSelectAll&&this.selectFirstCounter()}#o;#n(e){e.firstChild||(this.overlay.positionTarget=this.shadowRoot.querySelector(".toggle-calendar"),e.appendChild(this.#s()),(0,a.Xs)(this.baseElement),this.backdrop.addEventListener("click",this.closePopover.bind(this))),e.style.setProperty("visibility","hidden"),setTimeout((()=>{this.#a(e),e.style.setProperty("visibility","visible"),this.updateCalendarView(e)}),100)}#a(){const e=this.shadowRoot.querySelector("vaadin-popover").shadowRoot;this.#o?.remove();const t=document.body.getBoundingClientRect(),i=this.getBoundingClientRect(),r=this.calendar.getBoundingClientRect(),n=this.isRTL?"right":"left",o=i[n]-r[n],s=r.left,a=t.width-r.right;let l;l=o>0?Math.min(o,a):-1*Math.min(Math.abs(o),s),(0,u.fz)(`\n vaadin-popover-overlay::part(overlay) {\n transform: translateX(${l}px);\n }\n `,e)}#s(){const e=document.createElement("span");e.innerHTML="<descope-calendar></descope-calendar>";const t=e.querySelector("descope-calendar");return t.addEventListener("date-submit",this.onCalendarSubmit.bind(this)),t.addEventListener("cancel",this.closePopover.bind(this)),e}#r(){this.overlay._attachOverlay=()=>this.overlay.bringToFront(),this.overlay._detachOverlay=()=>{},this.overlay._enterModalState=()=>{}}onPopoverToggle(){this.opened?this.closePopover():this.openPopover()}openPopover(){this.disableCalendar||this.setAttribute("opened","true")}closePopover(){this.removeAttribute("opened"),this.inputElement.focus()}getCounterById(e){return this.dateCounters.find((t=>t.id===e))}onCalendarSubmit(){if(!this.isReadOnly){if(!this.calendar.value)return;const e=(0,a.Nq)(this.calendar.value);this.value=(0,a.xq)(e,this.isUtcTime),this.getCounterById("year").replaceValue(e.getFullYear()),this.getCounterById("month").replaceValue(e.getMonth()+1),this.getCounterById("day").replaceValue(e.getDate()),this.#i()}this.closePopover()}updateCalendarView(){const e=(0,a.mZ)((0,a.Nq)(this.inputElement.value||"").getTime())&&l.F[this.format].validate(this.inputElement.value);this.displayValueEpoch||e?this.calendar.setAttribute("initial-value",(0,a.jO)(this.displayValueEpoch||this.epoch,d.wJ)):(this.calendar.clearValue(),this.calendar.setAttribute("preview",(0,a.jO)((0,a.Ln)(),d.wJ))),(0,o.EA)(this,this.calendar,{includeAttrs:["st-host-direction","readonly","initial-month","initial-year","years-range","calendar-label-submit","calendar-label-cancel","calendar-months","calendar-weekdays","calendar-weekdays-short"]})}onPointerDown(e){setTimeout((()=>this.handleMouseCaretPositionChange(e)),d.SZ)}onFocus(){this.isReadOnly||setTimeout((()=>this.resetDisplay()))}resetDisplay(){this.inputElement.value||(this.inputElement.value=this.format),this.selectFirstCounter(),this.inputElement.setSelectionRange(0,this.sortedCounters[0].length)}onBlur(){this.opened||this.inputElement.value===this.format&&(this.inputElement.value="")}onFormatUpdate(e){Object.keys(l.F).includes(e)&&(this.format=e,this.updateFormatPattern())}updateFormatPattern(){const e=this.getAttribute("format")||this.format||d.ui;this.setAttribute("type","date"),this.setAttribute("pattern",l.F[e].pattern)}parseDigits(e){this.activeCounter.add(e),this.activeCounter.isFull&&this.selectNextCounter(),this.setInputSelectionRange()}getCounterIdx(e){const[t,i]=this.sortedCounters.map((e=>e.length));return[e<=t,e>=t&&e<=t+i+1,e>=t+i+2].indexOf(!0)}setSelectedCounterByCaretPosition(e){this.selectedCounterIdx=this.getCounterIdx(e.target?.selectionStart||this.inputElement.selectionStart)}selectFirstCounter(){this.selectedCounterIdx=0}selectNextCounter(){this.selectedCounterIdx<this.dateCounters.length&&(this.selectedCounterIdx=Math.min(this.selectedCounterIdx+1,2))}selectPrevCounter(){this.selectedCounterIdx>0&&(this.selectedCounterIdx=Math.min(this.selectedCounterIdx-1,1))}setInputSelectionRange(){this.selectedCounterIdx<0||setTimeout((()=>{const e=this.sortedCounters.slice(0,this.selectedCounterIdx).reduce(((e,t)=>e+t.length),this.selectedCounterIdx);this.inputElement.setSelectionRange(e,e+this.sortedCounters[this.selectedCounterIdx].length)}))}resetDateCounters(){this.dateCounters.forEach((e=>e.clear()))}updateDateCounters(e){this.dateCounters.forEach((t=>{switch(t.id){case d.rR.MONTH.id:t.set(this.isUtcTime?e.getUTCMonth()+1:e.getMonth()+1);break;case d.rR.YEAR.id:t.set(this.isUtcTime?e.getUTCFullYear():e.getFullYear());break;case d.rR.DAY.id:t.set(this.isUtcTime?e.getUTCDate():e.getDate())}}))}handleKeyboard(e){e.metaKey||e.ctrlKey?"x"===e.key.toLowerCase()&&this.onCut(e):(this.handleSelectAll(),"ArrowUp"===e.key?this.activeCounter.inc():"ArrowDown"===e.key?this.activeCounter.dec():"ArrowRight"===e.key?this.selectNextCounter():"ArrowLeft"===e.key&&this.selectPrevCounter(),this.setInputSelectionRange())}handleNavKeys(e){this.isReadOnly||(this.opened&&this.closePopover(),this.activeCounter&&("deleteContentBackward"===e.inputType&&this.handleBackspace(),this.setInputSelectionRange()))}handleBackspace(){if(this.isSelectAll)return void this.resetToInitialState();const e=this.activeCounter;e.isEmpty?(this.selectPrevCounter(),this.setInputSelectionRange()):e.set(""),setTimeout((()=>{this.updateCountersDisplay(),this.setInputSelectionRange()}))}handleMouseCaretPositionChange(e){this.opened||(e.preventDefault(),this.setSelectedCounterByCaretPosition(e),this.setInputSelectionRange())}onInitialValueChange(e){this.value||setTimeout((()=>{Number.isNaN(parseInt(e,10))||(this.value=Number(e))}))}togglePopoverAccess(e){e?this.popoverToggleButton.classList.remove("hidden"):this.popoverToggleButton.classList.add("hidden")}attributeChangedCallback(e,t,i){super.attributeChangedCallback?.(e,t,i),t!==i&&("disable-calendar"===e&&this.togglePopoverAccess("true"!==i),m.includes(e)?(i&&"format"===e&&this.onFormatUpdate(i),"initial-value"===e&&this.onInitialValueChange(i)):b.includes(e)&&(i?this.calendar?.setAttribute(e,i):this.calendar?.removeAttribute(e)))}isInvalidDate(){const e=this.getCounterById("year"),t=e.numberValue>d.nr.year.max||e.numberValue<d.nr.year.min,i=Object.entries(this.getDateVals()).some((([e,t])=>{const i=this.getCounterById(e);return!t||i.numberValue!==t}));return t||i}getValidity(){return this.isRequired&&this.isCountersEmpty?{valueMissing:!0}:this.isCountersOutOfRange||this.isInvalidDate()?{patternMismatch:!0}:{}}getDateVals(){const e={day:"",month:"",year:""};if(Number.isNaN(this.epoch))return e;try{const t=this.isUtcTime?new Date(this.epoch):(0,a.Nq)(this.epoch);this.isUtcTime?(e.month=t.getUTCMonth()+1,e.day=t.getUTCDate(),e.year=t.getUTCFullYear()):(e.month=t.getMonth()+1,e.day=t.getDate(),e.year=t.getFullYear())}catch(e){}return e}resetToInitialState(){this.resetDateCounters(),this.selectFirstCounter(),this.resetDisplay()}onCut(e){e.preventDefault(),this.isSelectAll?(this.#l(this.countersValue),this.resetToInitialState()):(this.#l(this.activeCounter.stringValue),this.activeCounter.set("")),this.setInputSelectionRange()}#l(e){try{navigator.clipboard.writeText(e)}catch(e){console.error("Failed to copy date value:",e)}}onPaste(e){e.preventDefault();const t=(e.clipboardData||window.clipboardData).getData("Text"),i=(0,a.Rm)(t,this.format);if(i)this.value=(0,a.xq)(i,this.isUtcTime),this.onDateCounterChange(),setTimeout((()=>this.inputElement.setSelectionRange(0,this.inputElement.value.length)));else{const e=Number(t);e&&this.activeCounter.min<=e&&this.activeCounter.max>=e&&(this.activeCounter.set(String(e)),setTimeout((()=>this.setInputSelectionRange())))}}});customElements.define(g,k)}}]);
1
+ "use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[9257],{6424:(e,t,i)=>{i.d(t,{A:()=>C});const{host:r,label:n,placeholder:o,requiredIndicator:s,inputField:a,input:l,inputMask:p,helperText:d,errorMessage:h,disabledPlaceholder:c,inputDisabled:u,inputIcon:g,externalInput:y,externalInputDisabled:m,externalPlaceholder:b,externalDisabledPlaceholder:v}={host:{selector:()=>":host"},label:{selector:"::part(label)"},requiredIndicator:{selector:"[required]::part(required-indicator)::after"},placeholder:[{selector:"> input:placeholder-shown"},{selector:()=>":host::slotted(input:placeholder-shown)"}],disabledPlaceholder:{selector:"> input:disabled::placeholder"},inputField:{selector:"::part(input-field)"},input:{selector:"input"},inputMask:{selector:"::part(input-field)::before"},inputDisabled:{selector:"input:disabled"},helperText:{selector:"::part(helper-text)"},errorMessage:{selector:"::part(error-message)"},inputIcon:{selector:"vaadin-icon"},externalInput:{selector:()=>"::slotted(input)"},externalInputDisabled:{selector:()=>"::slotted(input:disabled)"},externalPlaceholder:{selector:()=>"::slotted(input:placeholder-shown)"},externalDisabledPlaceholder:{selector:()=>"::slotted(input:disabled::placeholder)"}},C={fontSize:[{},r],fontFamily:[n,a,d,h],labelFontSize:{...n,property:"font-size"},labelFontWeight:{...n,property:"font-weight"},labelTextColor:[{...n,property:"color"},{...s,property:"color"},{...n,property:"-webkit-text-fill-color"},{...s,property:"-webkit-text-fill-color"}],hostWidth:{...r,property:"width"},hostMinWidth:{...r,property:"min-width"},hostDirection:{...r,property:"direction"},inputDirection:{...l,property:"direction"},inputBackgroundColor:[{...a,property:"background-color"},{...p,property:"background-color"}],errorMessageTextColor:{...h,property:"color"},errorMessageIcon:{...h,property:"background-image"},errorMessageIconSize:{...h,property:"background-size"},errorMessageIconPadding:{...h,property:"padding-inline-start"},errorMessageIconRepeat:{...h,property:"background-repeat"},errorMessageIconPosition:{...h,property:"background-position"},errorMessageFontSize:{...h,property:"font-size"},helperTextColor:{...d,property:"-webkit-text-fill-color"},inputValueTextColor:[{...a,property:"color"},{...u,property:"-webkit-text-fill-color"},{...m,property:"-webkit-text-fill-color"}],inputCaretTextColor:[{...l,property:"caret-color"},{...y,property:"caret-color"}],labelRequiredIndicator:{...s,property:"content"},inputBorderColor:{...a,property:"border-color"},inputBorderWidth:{...a,property:"border-width"},inputBorderStyle:{...a,property:"border-style"},inputBorderRadius:{...a,property:"border-radius"},inputHeight:{...a,property:"height"},inputHorizontalPadding:[{...l,property:"padding-left"},{...l,property:"padding-right"},{...y,property:"padding-left"},{...y,property:"padding-right"}],inputOutlineColor:{...a,property:"outline-color"},inputOutlineStyle:{...a,property:"outline-style"},inputOutlineWidth:{...a,property:"outline-width"},inputOutlineOffset:{...a,property:"outline-offset"},textAlign:{},inputTextAlign:[{...l,property:"text-align"},{...y,property:"text-align"}],inputPlaceholderColor:[{selector:()=>":host input:placeholder-shown",property:"color"},{...b,property:"color"},{...o,property:"color"},{...c,property:"-webkit-text-fill-color"},{...v,property:"-webkit-text-fill-color"}],labelPosition:{...n,property:"position"},labelTopPosition:{...n,property:"top"},labelHorizontalPosition:[{...n,property:"left"},{...n,property:"right"}],inputTransformY:{...n,property:"transform"},inputTransition:{...n,property:"transition"},marginInlineStart:{...n,property:"margin-inline-start"},placeholderOpacity:[{selector:"> input:placeholder-shown",property:"opacity"},{...b,property:"opacity"}],inputVerticalAlignment:[{...a,property:"align-items"},{...y,property:"align-items"}],valueInputHeight:[{...l,property:"height"},{...y,property:"height"}],valueInputMarginBottom:[{...l,property:"margin-bottom"},{...y,property:"margin-bottom"}],inputIconOffset:[{...g,property:"margin-right"},{...g,property:"margin-left"}],inputIconSize:{...g,property:"font-size"},inputIconColor:{...g,property:"color"}}},21374:(e,t,i)=>{i.r(t),i.d(t,{TextFieldClass:()=>r.w,componentName:()=>r.T}),i(11284),i(37182),i(95260);var r=i(79275);customElements.define(r.T,r.w)},79275:(e,t,i)=>{i.d(t,{T:()=>l,w:()=>d});var r=i(79365),n=i(6424),o=i(9696),s=i(97810),a=i(73551);const l=(0,s.xE)("text-field"),p=["type","label-type","copy-to-clipboard"],d=(0,o.Zz)((0,r.RF)({mappings:n.A}),r.VO,(0,r.OZ)({proxyProps:["value","selectionStart"],useProxyTargets:!0}),r.tQ,(e=>class extends e{static get observedAttributes(){return p.concat(e.observedAttributes||[])}icon;init(){super.init?.()}renderCopyToClipboard(e){if(!e)return void this.icon?.remove();const t={icon:"vaadin:copy-o",title:"Copy",style:"cursor: pointer"},i={icon:"vaadin:check-circle-o",title:"Copied",style:"cursor: initial"};this.icon=Object.assign(document.createElement("vaadin-icon"),{slot:"suffix",...t}),this.baseElement.appendChild(this.icon),this.icon.addEventListener("click",(()=>{navigator.clipboard.writeText(this.value),Object.assign(this.icon,i),setTimeout((()=>{Object.assign(this.icon,t)}),5e3)}))}onLabelClick(){this.focus()}attributeChangedCallback(e,t,i){super.attributeChangeCallback?.(e,t,i),"type"===e&&this.baseElement._setType(i),t!==i&&("label-type"===e?"floating"===i?this.addEventListener("click",this.onLabelClick):this.removeEventListener("click",this.onLabelClick):"copy-to-clipboard"===e&&this.renderCopyToClipboard("true"===i))}}))((0,r.tz)({slots:["prefix","suffix"],wrappedEleName:"vaadin-text-field",style:()=>`\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${d.cssVarList.inputOutlineWidth}) + var(${d.cssVarList.inputOutlineOffset}));\n box-sizing: border-box;\n\t\t\t}\n :host(:is([readonly], [disabled])) ::slotted(:is(input, textarea):placeholder-shown) {\n opacity: 1;\n }\n\n vaadin-text-field[label-type="floating"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-text-field[label-type="floating"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n ${(0,a.$J)("vaadin-text-field")}\n\t\t\t${(0,a.cy)(d.cssVarList)}\n\t\t\t${(0,a.LJ)("vaadin-text-field",d.cssVarList)}\n ${(0,a.Kl)()}\n\n vaadin-text-field vaadin-icon {\n align-self: center;\n }\n\t\t`,excludeAttrsSync:["tabindex","style"],componentName:l}))},79981:(e,t,i)=>{i.r(t),i.d(t,{DateFieldClass:()=>k,componentName:()=>g}),i(45992),i(88350),i(21374);var r=i(3393),n=i(79365),o=i(97810),s=i(9696),a=i(49224),l=i(77421),p=i(80071),d=i(64101);class h{#e=Object.freeze([]);constructor({id:e,min:t,max:i,placeholder:r},n){this.id=e,this.min=t,this.max=i,this.placeholder=r,this.onChange=n}get data(){return this.#e}set data(e){this.#e=Object.freeze(e),this.onChange?.()}get#t(){return this.data.length?this.numberValue:0}get numberValue(){return Number(this.stringValue)}get stringValue(){return(this.data.join("")||this.placeholder).padStart(this.length,"0")}get isFull(){return 10*this.numberValue>this.max||this.data.length===this.length}get isEmpty(){return this.stringValue===this.placeholder}get length(){return this.max.toString().length}set(e){this.data=e.toString().split("")}add(e){let t=this.data;return t=[...t,e],Number(t.join(""))>this.max?t=[e]:this.length<t.length&&(t=t.slice(1,t.length)),this.data=t,e}del(){this.data.filter((e=>"0"!==e)).filter(Boolean).length?this.data=this.data.slice(0,this.data.length-1):this.data=[]}clear(){this.data=[]}inc(e){this.replaceValue(this.#t<this.max?Math.max(this.#t+(e||1),this.min):this.min)}dec(e){this.replaceValue(this.#t>this.min?Math.min(this.#t-(e||1),this.max):this.max)}isInRange(e){return e>=this.min&&e<=this.max}replaceValue(e){this.isInRange(e)&&(this.data=e.toString().padStart(this.length,0).split(""))}setMin(e){this.min=Number(e)}setMax(e){this.max=Number(e)}}var c=i(79275),u=i(25964);const g=(0,o.xE)("date-field"),y=(0,r.y)({componentName:g,baseSelector:"vaadin-popover"}),m=["format","opened","initial-value","readonly","disable-calendar","utc-time"],b=["years-range","calendar-months","calendar-weekdays"],v=[...m,...b],C=c.w.cssVarList,{host:f,input:x,inputEleRTL:E,toggleButton:w,overlay:I,backdrop:T,errorMessage:S}={host:{selector:()=>":host"},input:{selector:()=>"descope-text-field"},inputEleRTL:{selector:()=>':host([st-host-direction="rtl"]) descope-text-field'},toggleButton:{selector:()=>".toggle-calendar"},overlay:{selector:"vaadin-popover-overlay::part(overlay)"},backdrop:{selector:"vaadin-popover-overlay::part(backdrop)"}},k=(0,s.Zz)((0,n.RF)({componentNameOverride:(0,o.xE)("input-wrapper")}),(0,n.RF)({mappings:{iconMargin:{...w,property:"margin-inline-end"},hostWidth:{...f,property:"width"},hostDirection:{...f,property:"direction"},textAlign:{...x,property:"text-align"},rtlInputDirection:{...E,property:C.inputDirection},rtlInputAlignment:{...E,property:C.inputTextAlign},overlayGap:{property:()=>k.cssVarList.overlayGap},overlayBackgroundColor:{property:()=>k.cssVarList.overlayBackgroundColor},overlayPadding:{property:()=>k.cssVarList.overlayPadding},overlayBoxShadow:{property:()=>k.overlayBoxShadow},overlayOutlineWidth:{property:()=>k.cssVarList.overlayOutlineWidth},overlayOutlineColor:{property:()=>k.cssVarList.overlayOutlineColor},overlayOutlineStyle:{property:()=>k.cssVarList.overlayOutlineStyle},errorMessageIcon:{selector:c.w.componentName,property:c.w.cssVarList.errorMessageIcon},errorMessageIconSize:{selector:c.w.componentName,property:c.w.cssVarList.errorMessageIconSize},errorMessageIconPadding:{selector:c.w.componentName,property:c.w.cssVarList.errorMessageIconPadding},errorMessageIconRepeat:{selector:c.w.componentName,property:c.w.cssVarList.errorMessageIconRepeat},errorMessageIconPosition:{selector:c.w.componentName,property:c.w.cssVarList.errorMessageIconPosition},errorMessageFontSize:{selector:c.w.componentName,property:c.w.cssVarList.errorMessageFontSize}}}),(0,n.mA)({name:"overlay",selector:"",mappings:{marginTop:{...I,property:"margin-top"},backgroundColor:{...I},backdropBackgroundColor:{...T,property:"background-color"},backdropPointerEvents:{...T,property:"pointer-events"},padding:{...I},boxShadow:{...I},outlineWidth:{...I},outlineColor:{...I},outlineStyle:{...I}}}),n.VO,n.tQ)(class extends y{epoch="";format=d.ui;selectedCounterIdx=0;updateCountersDisplay(){this.inputElement.value=this.countersValue}updateValue(){if(this.isCountersOutOfRange)this.updateEpoch("");else{const e=l.F[this.format].getDate(this.inputElement.value);this.updateEpoch((0,a.xq)(e,this.isUtcTime))}}onDateCounterChange=()=>{this.updateCountersDisplay(),this.updateValue(),this.#i()};updateEpoch(e){Number.isNaN(e)||!e.toString()?.length?this.epoch="":this.epoch=(0,a.xq)((0,a.Nq)(e,this.isUtcTime),this.isUtcTime)}dateCounters=[new h(d.rR.MONTH,this.onDateCounterChange.bind(this)),new h(d.rR.DAY,this.onDateCounterChange.bind(this)),new h(d.rR.YEAR,this.onDateCounterChange.bind(this))];static get observedAttributes(){return[].concat(y.observedAttributes||[],v)}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML=`\n <div>\n <descope-text-field inputmode="numeric">\n <span slot="suffix" class="toggle-calendar">\n ${p.ki}\n </span>\n </descope-text-field>\n <vaadin-popover></vaadin-popover>\n </div>\n `,(0,u.fz)('\n :host {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n max-width: 100%;\n }\n\n :host ::slotted {\n padding: 0;\n }\n\n .toggle-calendar {\n cursor: pointer;\n display: flex;\n align-self: center;\n z-index: 1;\n height: 100%;\n align-items: center;\n }\n\n :host([readonly="true"]) .toggle-calendar {\n pointer-events: none;\n }\n\n .hidden {\n display: none;\n }\n ',this),this.inputElement=this.shadowRoot.querySelector("descope-text-field"),this.popoverToggleButton=this.inputElement.querySelector(".toggle-calendar")}get validationTarget(){return this.inputElement}get opened(){return"true"===this.getAttribute("opened")}get displayValueEpoch(){const e=l.F[this.format].getDate(this.inputElement.value);return(0,a.mZ)(e?.getTime())?e.getTime():null}get sortedCounters(){return this.format.split(d.eT).map((e=>this.dateCounters.find((t=>t.placeholder===e))))}get activeCounter(){return this.sortedCounters[this.selectedCounterIdx]}get countersValue(){return this.sortedCounters.map((e=>e.stringValue)).join(d.eT)}get overlay(){return this.baseElement.shadowRoot?.querySelector("vaadin-popover-overlay")}get backdrop(){return this.overlay.shadowRoot?.querySelector("#backdrop")}get calendar(){return this.overlay?.querySelector("descope-calendar")}get isRTL(){const e=getComputedStyle(this.baseElement).getPropertyValue("direction");return e?"rtl"===e:"rtl"===this.getAttribute("st-host-direction")}get value(){return this.isInvalidDate()?"":this.epoch}set value(e){let t=parseInt(e,10);Number.isNaN(t)?(this.updateEpoch(""),this.resetDateCounters(),this.clearInputEle()):(this.updateEpoch(t),this.updateDateCounters((0,a.Nq)(t)))}get isCountersEmpty(){return this.dateCounters.every((e=>e.isEmpty))}get isCountersOutOfRange(){return this.dateCounters.some((e=>!e.isInRange(e.numberValue)))}get disableCalendar(){return"true"===this.getAttribute("disable-calendar")}get isUtcTime(){return"true"===this.getAttribute("utc-time")}get isSelectAll(){const e=this.inputElement.baseElement.inputElement;return e.value.length===e.selectionStart+e.selectionEnd}reportValidity(){this.inputElement.reportValidity()}#i(){this.inputElement.baseElement.dispatchEvent(new Event("input",{bubbles:!0}))}updateInputDisplay(){this.inputElement.value=(0,a.jO)((0,a.Nq)(this.countersValue).getTime(),this.format)}init(){super.init?.(),this.updateFormatPattern(),this.initPopover(),this.onDateCounterChange(),this.initInputElement(),setTimeout((()=>{this.#r()}),0)}initInputElement(){this.inputElement.getValidity=this.getValidity.bind(this),this.inputElement.baseElement.checkValidity=this.checkValidity.bind(this),this.popoverToggleButton.addEventListener("click",this.onPopoverToggle.bind(this)),this.inputElement.addEventListener("focus",this.onFocus.bind(this)),this.inputElement.addEventListener("blur",this.onBlur.bind(this)),this.inputElement.addEventListener("click",this.handleMouseCaretPositionChange.bind(this)),this.inputElement.addEventListener("keydown",this.handleKeyboard.bind(this)),this.inputElement.addEventListener("beforeinput",this.handleInput.bind(this)),this.inputElement.addEventListener("pointerdown",this.onPointerDown.bind(this)),this.inputElement.addEventListener("paste",this.onPaste.bind(this)),(0,o.EA)(this,this.inputElement,{includeAttrs:["label","label-type","placeholder","disabled","readonly","bordered","required","full-width","st-host-direction","pattern","bordered","data-errormessage-value-missing","data-errormessage-pattern-mismatch","data-errormessage-range-underflow","data-errormessage-range-overflow","st-error-message-icon","st-error-message-icon-size","st-error-message-icon-padding"]})}handleInput(e){e.preventDefault(),this.handleSelectAll(),e.data&&(0,a.Et)(e.data)?(this.parseDigits(e.data),this.updateCountersDisplay()):e.inputType&&this.handleNavKeys(e)}initPopover(){this.baseElement.trigger=["click"],this.baseElement.withBackdrop=!0,this.baseElement.renderer=this.#n.bind(this),this.baseElement.addEventListener("click",(e=>{e.preventDefault(),e.stopPropagation()}))}handleSelectAll(){this.isSelectAll&&this.selectFirstCounter()}#o;#n(e){e.firstChild||(this.overlay.positionTarget=this.shadowRoot.querySelector(".toggle-calendar"),e.appendChild(this.#s()),(0,a.Xs)(this.baseElement),this.backdrop.addEventListener("click",this.closePopover.bind(this))),e.style.setProperty("visibility","hidden"),setTimeout((()=>{this.#a(e),e.style.setProperty("visibility","visible"),this.updateCalendarView(e)}),100)}#a(){const e=this.shadowRoot.querySelector("vaadin-popover").shadowRoot;this.#o?.remove();const t=document.body.getBoundingClientRect(),i=this.getBoundingClientRect(),r=this.calendar.getBoundingClientRect(),n=this.isRTL?"right":"left",o=i[n]-r[n],s=r.left,a=t.width-r.right;let l;l=o>0?Math.min(o,a):-1*Math.min(Math.abs(o),s),(0,u.fz)(`\n vaadin-popover-overlay::part(overlay) {\n transform: translateX(${l}px);\n }\n `,e)}#s(){const e=document.createElement("span");e.innerHTML="<descope-calendar></descope-calendar>";const t=e.querySelector("descope-calendar");return t.addEventListener("date-submit",this.onCalendarSubmit.bind(this)),t.addEventListener("cancel",this.closePopover.bind(this)),e}#r(){this.overlay._attachOverlay=()=>this.overlay.bringToFront(),this.overlay._detachOverlay=()=>{},this.overlay._enterModalState=()=>{}}onPopoverToggle(){this.opened?this.closePopover():this.openPopover()}openPopover(){this.disableCalendar||this.setAttribute("opened","true")}closePopover(){this.removeAttribute("opened"),this.inputElement.focus()}getCounterById(e){return this.dateCounters.find((t=>t.id===e))}onCalendarSubmit(){if(!this.isReadOnly){if(!this.calendar.value)return;const e=(0,a.Nq)(this.calendar.value);this.value=(0,a.xq)(e,this.isUtcTime),this.getCounterById("year").replaceValue(e.getFullYear()),this.getCounterById("month").replaceValue(e.getMonth()+1),this.getCounterById("day").replaceValue(e.getDate()),this.#i()}this.closePopover()}updateCalendarView(){const e=(0,a.mZ)((0,a.Nq)(this.inputElement.value||"").getTime())&&l.F[this.format].validate(this.inputElement.value);this.displayValueEpoch||e?this.calendar.setAttribute("initial-value",(0,a.jO)(this.displayValueEpoch||this.epoch,d.wJ)):(this.calendar.clearValue(),this.calendar.setAttribute("preview",(0,a.jO)((0,a.Ln)(),d.wJ))),(0,o.EA)(this,this.calendar,{includeAttrs:["st-host-direction","readonly","initial-month","initial-year","years-range","calendar-label-submit","calendar-label-cancel","calendar-months","calendar-weekdays","calendar-weekdays-short"]})}onPointerDown(e){setTimeout((()=>this.handleMouseCaretPositionChange(e)),d.SZ)}onFocus(){this.isReadOnly||setTimeout((()=>this.resetDisplay()))}resetDisplay(){this.inputElement.value||(this.inputElement.value=this.format),this.selectFirstCounter(),this.inputElement.setSelectionRange(0,this.sortedCounters[0].length)}onBlur(){this.opened||this.inputElement.value===this.format&&this.clearInputEle()}clearInputEle(){this.inputElement.value=""}onFormatUpdate(e){Object.keys(l.F).includes(e)&&(this.format=e,this.updateFormatPattern())}updateFormatPattern(){const e=this.getAttribute("format")||this.format||d.ui;this.setAttribute("type","date"),this.setAttribute("pattern",l.F[e].pattern)}parseDigits(e){this.activeCounter.add(e),this.activeCounter.isFull&&this.selectNextCounter(),this.setInputSelectionRange()}getCounterIdx(e){const[t,i]=this.sortedCounters.map((e=>e.length));return[e<=t,e>=t&&e<=t+i+1,e>=t+i+2].indexOf(!0)}setSelectedCounterByCaretPosition(e){this.selectedCounterIdx=this.getCounterIdx(e.target?.selectionStart||this.inputElement.selectionStart)}selectFirstCounter(){this.selectedCounterIdx=0}selectNextCounter(){this.selectedCounterIdx<this.dateCounters.length&&(this.selectedCounterIdx=Math.min(this.selectedCounterIdx+1,2))}selectPrevCounter(){this.selectedCounterIdx>0&&(this.selectedCounterIdx=Math.min(this.selectedCounterIdx-1,1))}setInputSelectionRange(){this.selectedCounterIdx<0||setTimeout((()=>{const e=this.sortedCounters.slice(0,this.selectedCounterIdx).reduce(((e,t)=>e+t.length),this.selectedCounterIdx);this.inputElement.setSelectionRange(e,e+this.sortedCounters[this.selectedCounterIdx].length)}))}resetDateCounters(){this.dateCounters.forEach((e=>e.clear()))}updateDateCounters(e){this.dateCounters.forEach((t=>{switch(t.id){case d.rR.MONTH.id:t.set(this.isUtcTime?e.getUTCMonth()+1:e.getMonth()+1);break;case d.rR.YEAR.id:t.set(this.isUtcTime?e.getUTCFullYear():e.getFullYear());break;case d.rR.DAY.id:t.set(this.isUtcTime?e.getUTCDate():e.getDate())}}))}handleKeyboard(e){e.metaKey||e.ctrlKey?"x"===e.key.toLowerCase()&&this.onCut(e):(this.handleSelectAll(),"ArrowUp"===e.key?this.activeCounter.inc():"ArrowDown"===e.key?this.activeCounter.dec():"ArrowRight"===e.key?this.selectNextCounter():"ArrowLeft"===e.key&&this.selectPrevCounter(),this.setInputSelectionRange())}handleNavKeys(e){this.isReadOnly||(this.opened&&this.closePopover(),this.activeCounter&&("deleteContentBackward"===e.inputType&&this.handleBackspace(),this.setInputSelectionRange()))}handleBackspace(){if(this.isSelectAll)return void this.resetToInitialState();const e=this.activeCounter;e.isEmpty?(this.selectPrevCounter(),this.setInputSelectionRange()):e.set(""),setTimeout((()=>{this.updateCountersDisplay(),this.setInputSelectionRange()}))}handleMouseCaretPositionChange(e){this.opened||(e.preventDefault(),this.setSelectedCounterByCaretPosition(e),this.setInputSelectionRange())}onInitialValueChange(e){this.value||setTimeout((()=>{Number.isNaN(parseInt(e,10))||(this.value=Number(e))}))}togglePopoverAccess(e){e?this.popoverToggleButton.classList.remove("hidden"):this.popoverToggleButton.classList.add("hidden")}attributeChangedCallback(e,t,i){super.attributeChangedCallback?.(e,t,i),t!==i&&("disable-calendar"===e&&this.togglePopoverAccess("true"!==i),m.includes(e)?(i&&"format"===e&&this.onFormatUpdate(i),"initial-value"===e&&this.onInitialValueChange(i)):b.includes(e)&&(i?this.calendar?.setAttribute(e,i):this.calendar?.removeAttribute(e)))}isInvalidDate(){const e=this.getCounterById("year"),t=e.numberValue>d.nr.year.max||e.numberValue<d.nr.year.min,i=Object.entries(this.getDateVals()).some((([e,t])=>{const i=this.getCounterById(e);return!t||i.numberValue!==t}));return t||i}getValidity(){return this.isRequired&&this.isCountersEmpty?{valueMissing:!0}:this.isCountersOutOfRange||this.isInvalidDate()?{patternMismatch:!0}:{}}getDateVals(){const e={day:"",month:"",year:""};if(Number.isNaN(this.epoch))return e;try{const t=this.isUtcTime?new Date(this.epoch):(0,a.Nq)(this.epoch);this.isUtcTime?(e.month=t.getUTCMonth()+1,e.day=t.getUTCDate(),e.year=t.getUTCFullYear()):(e.month=t.getMonth()+1,e.day=t.getDate(),e.year=t.getFullYear())}catch(e){}return e}resetToInitialState(){this.resetDateCounters(),this.selectFirstCounter(),this.resetDisplay()}onCut(e){e.preventDefault(),this.isSelectAll?(this.#l(this.countersValue),this.resetToInitialState()):(this.#l(this.activeCounter.stringValue),this.activeCounter.set("")),this.setInputSelectionRange()}#l(e){try{navigator.clipboard.writeText(e)}catch(e){console.error("Failed to copy date value:",e)}}onPaste(e){e.preventDefault();const t=(e.clipboardData||window.clipboardData).getData("Text"),i=(0,a.Rm)(t,this.format);if(i)this.value=(0,a.xq)(i,this.isUtcTime),this.onDateCounterChange(),setTimeout((()=>this.inputElement.setSelectionRange(0,this.inputElement.value.length)));else{const e=Number(t);e&&this.activeCounter.min<=e&&this.activeCounter.max>=e&&(this.activeCounter.set(String(e)),setTimeout((()=>this.setInputSelectionRange())))}}});customElements.define(g,k)}}]);
2
2
  //# sourceMappingURL=descope-date-field-index-js.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"descope-date-field-index-js.js","mappings":"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","sources":["webpack://@descope/web-components-ui/./src/components/descope-text-field/textFieldMappings.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/index.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/TextFieldClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/DateCounterClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/DateFieldClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/index.js"],"sourcesContent":["const {\n host,\n label,\n placeholder,\n requiredIndicator,\n inputField,\n input,\n inputMask,\n helperText,\n errorMessage,\n disabledPlaceholder,\n inputDisabled,\n inputIcon,\n externalInput,\n externalInputDisabled,\n externalPlaceholder,\n externalDisabledPlaceholder,\n} = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n placeholder: [\n { selector: '> input:placeholder-shown' },\n { selector: () => ':host::slotted(input:placeholder-shown)' },\n ],\n disabledPlaceholder: { selector: '> input:disabled::placeholder' },\n inputField: { selector: '::part(input-field)' },\n input: { selector: 'input' },\n inputMask: { selector: '::part(input-field)::before' },\n inputDisabled: { selector: 'input:disabled' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n inputIcon: { selector: 'vaadin-icon' },\n externalInput: { selector: () => '::slotted(input)' },\n externalInputDisabled: { selector: () => '::slotted(input:disabled)' },\n externalPlaceholder: { selector: () => '::slotted(input:placeholder-shown)' },\n externalDisabledPlaceholder: { selector: () => '::slotted(input:disabled::placeholder)' },\n};\n\nexport default {\n // we apply font-size also on the host so we can set its width with em\n fontSize: [{}, host],\n fontFamily: [label, inputField, helperText, errorMessage],\n\n labelFontSize: { ...label, property: 'font-size' },\n labelFontWeight: { ...label, property: 'font-weight' },\n\n labelTextColor: [\n { ...label, property: 'color' },\n { ...requiredIndicator, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: '-webkit-text-fill-color' },\n ],\n\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostDirection: { ...host, property: 'direction' },\n inputDirection: { ...input, property: 'direction' },\n\n inputBackgroundColor: [\n { ...inputField, property: 'background-color' },\n { ...inputMask, property: 'background-color' },\n ],\n\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n helperTextColor: { ...helperText, property: '-webkit-text-fill-color' },\n\n inputValueTextColor: [\n { ...inputField, property: 'color' },\n { ...inputDisabled, property: '-webkit-text-fill-color' },\n { ...externalInputDisabled, property: '-webkit-text-fill-color' },\n ],\n inputCaretTextColor: [\n { ...input, property: 'caret-color' },\n { ...externalInput, property: 'caret-color' },\n ],\n\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n\n inputBorderColor: { ...inputField, property: 'border-color' },\n inputBorderWidth: { ...inputField, property: 'border-width' },\n inputBorderStyle: { ...inputField, property: 'border-style' },\n inputBorderRadius: { ...inputField, property: 'border-radius' },\n\n inputHeight: { ...inputField, property: 'height' },\n inputHorizontalPadding: [\n { ...input, property: 'padding-left' },\n { ...input, property: 'padding-right' },\n { ...externalInput, property: 'padding-left' },\n { ...externalInput, property: 'padding-right' },\n ],\n\n inputOutlineColor: { ...inputField, property: 'outline-color' },\n inputOutlineStyle: { ...inputField, property: 'outline-style' },\n inputOutlineWidth: { ...inputField, property: 'outline-width' },\n inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n\n textAlign: {},\n\n inputTextAlign: [\n { ...input, property: 'text-align' },\n { ...externalInput, property: 'text-align' },\n ],\n\n inputPlaceholderColor: [\n { selector: () => ':host input:placeholder-shown', property: 'color' },\n { ...externalPlaceholder, property: 'color' },\n { ...placeholder, property: 'color' },\n { ...disabledPlaceholder, property: '-webkit-text-fill-color' },\n { ...externalDisabledPlaceholder, property: '-webkit-text-fill-color' },\n ],\n\n labelPosition: { ...label, property: 'position' },\n labelTopPosition: { ...label, property: 'top' },\n labelHorizontalPosition: [\n { ...label, property: 'left' },\n { ...label, property: 'right' },\n ],\n inputTransformY: { ...label, property: 'transform' },\n inputTransition: { ...label, property: 'transition' },\n marginInlineStart: { ...label, property: 'margin-inline-start' },\n placeholderOpacity: [\n { selector: '> input:placeholder-shown', property: 'opacity' },\n { ...externalPlaceholder, property: 'opacity' },\n ],\n inputVerticalAlignment: [\n { ...inputField, property: 'align-items' },\n { ...externalInput, property: 'align-items' },\n ],\n valueInputHeight: [\n { ...input, property: 'height' },\n { ...externalInput, property: 'height' },\n ],\n valueInputMarginBottom: [\n { ...input, property: 'margin-bottom' },\n { ...externalInput, property: 'margin-bottom' },\n ],\n\n inputIconOffset: [\n { ...inputIcon, property: 'margin-right' },\n { ...inputIcon, property: 'margin-left' },\n ],\n inputIconSize: { ...inputIcon, property: 'font-size' },\n inputIconColor: { ...inputIcon, property: 'color' },\n};\n","import '@vaadin/text-field';\nimport '@vaadin/icons';\nimport '@vaadin/icon';\n\nimport { componentName, TextFieldClass } from './TextFieldClass';\n\ncustomElements.define(componentName, TextFieldClass);\n\nexport { TextFieldClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../mixins';\nimport textFieldMappings from './textFieldMappings';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n inputFloatingLabelStyle,\n resetInputLabelPosition,\n resetInputOverrides,\n useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('text-field');\n\nconst observedAttrs = ['type', 'label-type', 'copy-to-clipboard'];\n\nconst customMixin = (superclass) =>\n class TextFieldClass extends superclass {\n static get observedAttributes() {\n return observedAttrs.concat(superclass.observedAttributes || []);\n }\n\n icon;\n\n init() {\n super.init?.();\n }\n\n renderCopyToClipboard(shouldRender) {\n if (!shouldRender) {\n this.icon?.remove();\n return;\n }\n\n const iconInitConfig = {\n icon: 'vaadin:copy-o',\n title: 'Copy',\n style: 'cursor: pointer',\n };\n\n const iconCopiedConfig = {\n icon: 'vaadin:check-circle-o',\n title: 'Copied',\n style: 'cursor: initial',\n };\n\n this.icon = Object.assign(document.createElement('vaadin-icon'), {\n slot: 'suffix',\n ...iconInitConfig,\n });\n\n this.baseElement.appendChild(this.icon);\n this.icon.addEventListener('click', () => {\n navigator.clipboard.writeText(this.value);\n Object.assign(this.icon, iconCopiedConfig);\n\n // we want the icon to go back to the initial state after 5 seconds\n setTimeout(() => {\n Object.assign(this.icon, iconInitConfig);\n }, 5000);\n });\n }\n\n onLabelClick() {\n this.focus();\n }\n\n attributeChangedCallback(attrName, oldVal, newVal) {\n super.attributeChangeCallback?.(attrName, oldVal, newVal);\n\n // Vaadin doesn't allow to change the input type attribute.\n // We need the ability to do that, so we're overriding their\n // behavior with their private API.\n // When receiving a `type` attribute, we use their private API\n // to set it on the input.\n if (attrName === 'type') {\n this.baseElement._setType(newVal);\n }\n\n if (oldVal !== newVal) {\n if (attrName === 'label-type') {\n if (newVal === 'floating') {\n this.addEventListener('click', this.onLabelClick);\n } else {\n this.removeEventListener('click', this.onLabelClick);\n }\n } else if (attrName === 'copy-to-clipboard') {\n this.renderCopyToClipboard(newVal === 'true');\n }\n }\n }\n };\n\nexport const TextFieldClass = compose(\n createStyleMixin({\n mappings: textFieldMappings,\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: ['prefix', 'suffix'],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${TextFieldClass.cssVarList.inputOutlineWidth}) + var(${\n TextFieldClass.cssVarList.inputOutlineOffset\n }));\n box-sizing: border-box;\n\t\t\t}\n :host(:is([readonly], [disabled])) ::slotted(:is(input, textarea):placeholder-shown) {\n opacity: 1;\n }\n\n vaadin-text-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-text-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n ${resetInputLabelPosition('vaadin-text-field')}\n\t\t\t${useHostExternalPadding(TextFieldClass.cssVarList)}\n\t\t\t${resetInputOverrides('vaadin-text-field', TextFieldClass.cssVarList)}\n ${inputFloatingLabelStyle()}\n\n vaadin-text-field vaadin-icon {\n align-self: center;\n }\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","// DateCounterClass allows us to add several counters to the input, and use them seperately.\n// For examele, we have a DayCounter, MonthCounter and YearCounter, which can each separately navigate\n// between different ranges.\nexport class DateCounter {\n #data = Object.freeze([]);\n\n constructor({ id, min, max, placeholder }, onChange) {\n this.id = id;\n this.min = min;\n this.max = max;\n this.placeholder = placeholder;\n this.onChange = onChange;\n }\n\n get data() {\n return this.#data;\n }\n\n set data(val) {\n this.#data = Object.freeze(val);\n this.onChange?.();\n }\n\n get #initialNumValue() {\n return this.data.length ? this.numberValue : 0;\n }\n\n get numberValue() {\n return Number(this.stringValue);\n }\n\n get stringValue() {\n return (this.data.join('') || this.placeholder).padStart(this.length, '0');\n }\n\n get isFull() {\n return this.numberValue * 10 > this.max || this.data.length === this.length;\n }\n\n get isEmpty() {\n return this.stringValue === this.placeholder;\n }\n\n get length() {\n return this.max.toString().length;\n }\n\n set(val) {\n this.data = val.toString().split('');\n }\n\n add(num) {\n // use local var to avoid triggering onChange\n let data = this.data;\n\n data = [...data, num];\n\n // we need to re-evaluate the number value\n const numVal = Number(data.join(''));\n\n if (numVal > this.max) {\n data = [num];\n } else if (this.length < data.length) {\n data = data.slice(1, data.length);\n }\n\n this.data = data;\n\n return num;\n }\n\n del() {\n if (!this.data.filter((d) => d !== '0').filter(Boolean).length) {\n this.data = [];\n } else {\n this.data = this.data.slice(0, this.data.length - 1);\n }\n }\n\n clear() {\n this.data = [];\n }\n\n inc(gap) {\n this.replaceValue(\n this.#initialNumValue < this.max\n ? Math.max(this.#initialNumValue + (gap || 1), this.min)\n : this.min\n );\n }\n\n dec(gap) {\n this.replaceValue(\n this.#initialNumValue > this.min\n ? Math.min(this.#initialNumValue - (gap || 1), this.max)\n : this.max\n );\n }\n\n isInRange(val) {\n return val >= this.min && val <= this.max;\n }\n\n replaceValue(val) {\n if (this.isInRange(val)) {\n this.data = val.toString().padStart(this.length, 0).split('');\n }\n }\n\n setMin(val) {\n this.min = Number(val);\n }\n\n setMax(val) {\n this.max = Number(val);\n }\n}\n","import { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n portalMixin,\n} from '../../mixins';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { compose } from '../../helpers';\nimport {\n newDate,\n isValidEpoch,\n formatEpoch,\n isNumber,\n getCurrentTime,\n overrideConstructedStylesheet,\n dateToEpoch,\n} from './helpers';\nimport { formats } from './formats';\nimport { calendarIcon } from './icons';\nimport {\n counterConfig,\n DEFAULT_FORMAT,\n DIVIDER,\n MOBILE_DEVICE_INTERACTION_TIMEOUT_MS,\n NATIVE_FORMAT,\n valRange,\n} from './consts';\nimport { DateCounter } from './DateCounterClass';\nimport { TextFieldClass } from '../descope-text-field/TextFieldClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { parseDateString } from './helpers';\n\nexport const componentName = getComponentName('date-field');\n\n// we set baseSelector to `vaadin-popover` as a temporary hack, so our portalMixin will\n// be able to process this component's overlay. The whole process needs refactoring as soon as possible.\nconst BASE_SELECTOR = 'vaadin-popover';\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: BASE_SELECTOR });\n\nconst dateFieldAttrs = [\n 'format',\n 'opened',\n 'initial-value',\n 'readonly',\n 'disable-calendar',\n 'utc-time',\n];\nconst calendarAttrs = ['years-range', 'calendar-months', 'calendar-weekdays'];\nconst observedAttrs = [...dateFieldAttrs, ...calendarAttrs];\n\nclass RawDateFieldClass extends BaseInputClass {\n epoch = '';\n\n format = DEFAULT_FORMAT;\n\n selectedCounterIdx = 0;\n\n updateCountersDisplay() {\n this.inputElement.value = this.countersValue;\n }\n\n updateValue() {\n if (this.isCountersOutOfRange) {\n this.updateEpoch('');\n } else {\n const date = formats[this.format].getDate(this.inputElement.value);\n this.updateEpoch(dateToEpoch(date, this.isUtcTime));\n }\n }\n\n onDateCounterChange = () => {\n this.updateCountersDisplay();\n this.updateValue();\n // update validity\n this.#dispatchInput();\n };\n\n updateEpoch(epochOrDate) {\n if (Number.isNaN(epochOrDate) || !epochOrDate.toString()?.length) {\n this.epoch = '';\n } else {\n this.epoch = dateToEpoch(newDate(epochOrDate, this.isUtcTime), this.isUtcTime);\n }\n }\n\n dateCounters = [\n new DateCounter(counterConfig.MONTH, this.onDateCounterChange.bind(this)),\n new DateCounter(counterConfig.DAY, this.onDateCounterChange.bind(this)),\n new DateCounter(counterConfig.YEAR, this.onDateCounterChange.bind(this)),\n ];\n\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div>\n <descope-text-field inputmode=\"numeric\">\n <span slot=\"suffix\" class=\"toggle-calendar\">\n ${calendarIcon}\n </span>\n </descope-text-field>\n <vaadin-popover></vaadin-popover>\n </div>\n `;\n\n injectStyle(\n `\n :host {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n max-width: 100%;\n }\n\n :host ::slotted {\n padding: 0;\n }\n\n .toggle-calendar {\n cursor: pointer;\n display: flex;\n align-self: center;\n z-index: 1;\n height: 100%;\n align-items: center;\n }\n\n :host([readonly=\"true\"]) .toggle-calendar {\n pointer-events: none;\n }\n\n .hidden {\n display: none;\n }\n `,\n this\n );\n\n this.inputElement = this.shadowRoot.querySelector('descope-text-field');\n this.popoverToggleButton = this.inputElement.querySelector('.toggle-calendar');\n }\n\n get validationTarget() {\n return this.inputElement;\n }\n\n get opened() {\n return this.getAttribute('opened') === 'true';\n }\n\n // returns the input's value as a epoch\n get displayValueEpoch() {\n const date = formats[this.format].getDate(this.inputElement.value);\n\n if (!isValidEpoch(date?.getTime())) {\n return null;\n }\n\n return date.getTime();\n }\n\n get sortedCounters() {\n return this.format\n .split(DIVIDER)\n .map((placeholder) => this.dateCounters.find((dc) => dc.placeholder === placeholder));\n }\n\n get activeCounter() {\n return this.sortedCounters[this.selectedCounterIdx];\n }\n\n get countersValue() {\n return this.sortedCounters.map((dc) => dc.stringValue).join(DIVIDER);\n }\n\n get overlay() {\n return this.baseElement.shadowRoot?.querySelector('vaadin-popover-overlay');\n }\n\n get backdrop() {\n return this.overlay.shadowRoot?.querySelector('#backdrop');\n }\n\n get calendar() {\n return this.overlay?.querySelector('descope-calendar');\n }\n\n get isRTL() {\n const computedStyleDirection = getComputedStyle(this.baseElement).getPropertyValue('direction');\n\n if (computedStyleDirection) {\n return computedStyleDirection === 'rtl';\n }\n\n // Fallback: If for some reason computed style was not calculated in time, fallback to check on attribute\n return this.getAttribute('st-host-direction') === 'rtl';\n }\n\n get value() {\n if (this.isInvalidDate()) {\n return '';\n }\n return this.epoch;\n }\n\n set value(val) {\n let value = parseInt(val, 10);\n if (!Number.isNaN(value)) {\n this.updateEpoch(value);\n this.updateDateCounters(newDate(value));\n } else {\n this.updateEpoch('');\n }\n }\n\n get isCountersEmpty() {\n return this.dateCounters.every((dc) => dc.isEmpty);\n }\n\n get isCountersOutOfRange() {\n return this.dateCounters.some((dc) => !dc.isInRange(dc.numberValue));\n }\n\n get disableCalendar() {\n return this.getAttribute('disable-calendar') === 'true';\n }\n\n get isUtcTime() {\n return this.getAttribute('utc-time') === 'true';\n }\n\n get isSelectAll() {\n const inputEle = this.inputElement.baseElement.inputElement;\n return inputEle.value.length === inputEle.selectionStart + inputEle.selectionEnd;\n }\n\n reportValidity() {\n this.inputElement.reportValidity();\n }\n\n #dispatchInput() {\n this.inputElement.baseElement.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n updateInputDisplay() {\n this.inputElement.value = formatEpoch(newDate(this.countersValue).getTime(), this.format);\n }\n\n init() {\n super.init?.();\n\n this.updateFormatPattern();\n this.initPopover();\n this.onDateCounterChange();\n this.initInputElement();\n\n setTimeout(() => {\n this.#overrideOverlaySettings();\n }, 0);\n }\n\n initInputElement() {\n this.inputElement.getValidity = this.getValidity.bind(this);\n this.inputElement.baseElement.checkValidity = this.checkValidity.bind(this);\n\n this.popoverToggleButton.addEventListener('click', this.onPopoverToggle.bind(this));\n\n this.inputElement.addEventListener('focus', this.onFocus.bind(this));\n this.inputElement.addEventListener('blur', this.onBlur.bind(this));\n this.inputElement.addEventListener('click', this.handleMouseCaretPositionChange.bind(this));\n this.inputElement.addEventListener('keydown', this.handleKeyboard.bind(this));\n this.inputElement.addEventListener('beforeinput', this.handleInput.bind(this));\n this.inputElement.addEventListener('pointerdown', this.onPointerDown.bind(this));\n this.inputElement.addEventListener('paste', this.onPaste.bind(this));\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'bordered',\n 'required',\n 'full-width',\n 'st-host-direction',\n 'pattern',\n 'bordered',\n 'data-errormessage-value-missing',\n 'data-errormessage-pattern-mismatch',\n 'data-errormessage-range-underflow',\n 'data-errormessage-range-overflow',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n }\n\n handleInput(e) {\n e.preventDefault();\n\n this.handleSelectAll();\n\n if (e.data && isNumber(e.data)) {\n this.parseDigits(e.data);\n this.updateCountersDisplay();\n } else if (e.inputType) {\n this.handleNavKeys(e);\n }\n }\n\n initPopover() {\n this.baseElement.trigger = ['click'];\n this.baseElement.withBackdrop = true;\n this.baseElement.renderer = this.#popoverRenderer.bind(this);\n\n // block popover events from focusing/blurring the text-field\n this.baseElement.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n }\n\n handleSelectAll() {\n if (this.isSelectAll) {\n this.selectFirstCounter();\n }\n }\n\n #popoverPosStylesheet;\n\n #popoverRenderer(root) {\n // popoverRenderer should run only once, when the popover is first rendering.\n if (!root.firstChild) {\n this.overlay.positionTarget = this.shadowRoot.querySelector('.toggle-calendar');\n\n root.appendChild(this.#getPopoverContent());\n\n // override vaadin's constructed stylesheet which hides the host element\n overrideConstructedStylesheet(this.baseElement);\n\n this.backdrop.addEventListener('click', this.closePopover.bind(this));\n }\n\n // Hide overlay before adjusting position to prevent flickering\n root.style.setProperty('visibility', 'hidden');\n\n // Wait until overlay is ready\n setTimeout(() => {\n this.#adjustPopoverPosition(root);\n\n // Show adjusted overlay\n root.style.setProperty('visibility', 'visible');\n this.updateCalendarView(root);\n }, 100);\n }\n\n #adjustPopoverPosition() {\n const popover = this.shadowRoot.querySelector('vaadin-popover').shadowRoot;\n\n // Remove previously added stylesheets\n this.#popoverPosStylesheet?.remove();\n\n const windowRect = document.body.getBoundingClientRect();\n const inputRect = this.getBoundingClientRect();\n const calendarRect = this.calendar.getBoundingClientRect();\n\n const side = this.isRTL ? 'right' : 'left';\n const offset = inputRect[side] - calendarRect[side];\n const availableLeft = calendarRect.left;\n const availableRight = windowRect.width - calendarRect.right;\n\n let newOffset;\n if (offset > 0) {\n newOffset = Math.min(offset, availableRight);\n } else {\n newOffset = Math.min(Math.abs(offset), availableLeft) * -1;\n }\n\n injectStyle(\n `\n vaadin-popover-overlay::part(overlay) {\n transform: translateX(${newOffset}px);\n }\n `,\n popover\n );\n }\n\n #getPopoverContent() {\n const ele = document.createElement('span');\n\n ele.innerHTML = `<descope-calendar></descope-calendar>`;\n\n const calendar = ele.querySelector('descope-calendar');\n\n calendar.addEventListener('date-submit', this.onCalendarSubmit.bind(this));\n calendar.addEventListener('cancel', this.closePopover.bind(this));\n\n return ele;\n }\n\n // the default vaadin behavior is to attach the overlay to the body when opened\n // we do not want that because it's difficult to style the overlay in this way\n // so we override it to open inside the shadow DOM\n #overrideOverlaySettings() {\n this.overlay._attachOverlay = () => this.overlay.bringToFront();\n this.overlay._detachOverlay = () => {};\n this.overlay._enterModalState = () => {};\n }\n\n onPopoverToggle() {\n this.opened ? this.closePopover() : this.openPopover();\n }\n\n openPopover() {\n if (this.disableCalendar) return;\n this.setAttribute('opened', 'true');\n }\n\n closePopover() {\n this.removeAttribute('opened');\n this.inputElement.focus();\n }\n\n getCounterById(id) {\n return this.dateCounters.find((dc) => dc.id === id);\n }\n\n onCalendarSubmit() {\n if (!this.isReadOnly) {\n if (!this.calendar.value) return;\n\n const calendarDate = newDate(this.calendar.value);\n\n this.value = dateToEpoch(calendarDate, this.isUtcTime);\n\n this.getCounterById('year').replaceValue(calendarDate.getFullYear());\n this.getCounterById('month').replaceValue(calendarDate.getMonth() + 1);\n this.getCounterById('day').replaceValue(calendarDate.getDate());\n\n this.#dispatchInput();\n }\n\n this.closePopover();\n }\n\n updateCalendarView() {\n const validInputVal =\n isValidEpoch(newDate(this.inputElement.value || '').getTime()) &&\n formats[this.format].validate(this.inputElement.value);\n\n if (this.displayValueEpoch || validInputVal) {\n this.calendar.setAttribute(\n 'initial-value',\n formatEpoch(this.displayValueEpoch || this.epoch, NATIVE_FORMAT)\n );\n } else {\n this.calendar.clearValue();\n this.calendar.setAttribute('preview', formatEpoch(getCurrentTime(), NATIVE_FORMAT));\n }\n\n forwardAttrs(this, this.calendar, {\n includeAttrs: [\n 'st-host-direction',\n 'readonly',\n 'initial-month',\n 'initial-year',\n 'years-range',\n 'calendar-label-submit',\n 'calendar-label-cancel',\n 'calendar-months',\n 'calendar-weekdays',\n 'calendar-weekdays-short',\n ],\n });\n }\n\n // In mobile devices, there are cases were `pointerdown` is triggered\n // instead of `click`.\n onPointerDown(e) {\n setTimeout(() => this.handleMouseCaretPositionChange(e), MOBILE_DEVICE_INTERACTION_TIMEOUT_MS);\n }\n\n onFocus() {\n if (this.isReadOnly) {\n return;\n }\n\n // We need to wait for focus to end before we set selection\n setTimeout(() => this.resetDisplay());\n }\n\n resetDisplay() {\n if (!this.inputElement.value) {\n this.inputElement.value = this.format;\n }\n\n // On focus select the first counter\n this.selectFirstCounter();\n // set selection on first counter\n this.inputElement.setSelectionRange(0, this.sortedCounters[0].length);\n }\n\n onBlur() {\n if (this.opened) {\n return;\n }\n\n if (this.inputElement.value === this.format) {\n this.inputElement.value = '';\n }\n }\n\n onFormatUpdate(format) {\n if (Object.keys(formats).includes(format)) {\n this.format = format;\n this.updateFormatPattern();\n }\n }\n\n updateFormatPattern() {\n const format = this.getAttribute('format') || this.format || DEFAULT_FORMAT;\n this.setAttribute('type', 'date');\n this.setAttribute('pattern', formats[format].pattern);\n }\n\n parseDigits(value) {\n this.activeCounter.add(value);\n\n if (this.activeCounter.isFull) {\n this.selectNextCounter();\n }\n\n // We wait for the digit to be parsed, and only then set the selection.\n // Failing to do so results in unexpected \"jump\" of the screen in mobile devices.\n this.setInputSelectionRange();\n }\n\n getCounterIdx(caretPos) {\n const [counter1ln, counter2ln] = this.sortedCounters.map((dc) => dc.length);\n\n const c1 = caretPos <= counter1ln;\n const c2 = caretPos >= counter1ln && caretPos <= counter1ln + counter2ln + 1;\n const c3 = caretPos >= counter1ln + counter2ln + 2;\n\n return [c1, c2, c3].indexOf(true);\n }\n\n setSelectedCounterByCaretPosition(e) {\n this.selectedCounterIdx = this.getCounterIdx(\n // if triggered by touch event, target might not include `selectionStart`\n // in that case we fall back to the inputElement's `selectionStart` value.\n // Therefore, it is recommended to run this function with setTimeout,\n // at least for mobile events.\n e.target?.selectionStart || this.inputElement.selectionStart\n );\n }\n\n selectFirstCounter() {\n this.selectedCounterIdx = 0;\n }\n\n selectNextCounter() {\n if (this.selectedCounterIdx < this.dateCounters.length) {\n this.selectedCounterIdx = Math.min(this.selectedCounterIdx + 1, 2);\n }\n }\n\n selectPrevCounter() {\n if (this.selectedCounterIdx > 0) {\n this.selectedCounterIdx = Math.min(this.selectedCounterIdx - 1, 1);\n }\n }\n\n // Sets the text selection range in the input element based on the selected counter.\n // The function calculates the starting position of the selection by summing the lengths\n // of all counters before the currently selected counter (`selectedCounterIdx`).\n // It then selects the entire length of the current counter in the input element.\n setInputSelectionRange() {\n // For preview/readonly state we don't have a caret or a caretIdx, so we skip setting input selection range\n if (this.selectedCounterIdx < 0) {\n return;\n }\n\n // We wait for before setting the selection, otherwise there's an\n // unexpected \"jump\" of the screen in mobile devices.\n setTimeout(() => {\n const caretStart = this.sortedCounters\n .slice(0, this.selectedCounterIdx)\n .reduce((acc, counter) => acc + counter.length, this.selectedCounterIdx);\n\n this.inputElement.setSelectionRange(\n caretStart,\n caretStart + this.sortedCounters[this.selectedCounterIdx].length\n );\n });\n }\n\n resetDateCounters() {\n this.dateCounters.forEach((dc) => dc.clear());\n }\n\n // in case value is set from external source we need to update date counters\n updateDateCounters(date) {\n this.dateCounters.forEach((dc) => {\n switch (dc.id) {\n case counterConfig.MONTH.id:\n dc.set(this.isUtcTime ? date.getUTCMonth() + 1 : date.getMonth() + 1);\n break;\n case counterConfig.YEAR.id:\n dc.set(this.isUtcTime ? date.getUTCFullYear() : date.getFullYear());\n break;\n case counterConfig.DAY.id:\n dc.set(this.isUtcTime ? date.getUTCDate() : date.getDate());\n break;\n default:\n break;\n }\n });\n }\n\n handleKeyboard(e) {\n if (e.metaKey || e.ctrlKey) {\n if (e.key.toLowerCase() === 'x') {\n this.onCut(e);\n }\n\n return;\n }\n\n this.handleSelectAll();\n\n if (e.key === 'ArrowUp') {\n this.activeCounter.inc();\n } else if (e.key === 'ArrowDown') {\n this.activeCounter.dec();\n } else if (e.key === 'ArrowRight') {\n this.selectNextCounter();\n } else if (e.key === 'ArrowLeft') {\n this.selectPrevCounter();\n }\n\n this.setInputSelectionRange();\n }\n\n handleNavKeys(e) {\n if (this.isReadOnly) {\n return;\n }\n\n if (this.opened) {\n this.closePopover();\n }\n\n if (!this.activeCounter) return;\n\n if (e.inputType === 'deleteContentBackward') {\n this.handleBackspace();\n }\n\n this.setInputSelectionRange();\n }\n\n handleBackspace() {\n if (this.isSelectAll) {\n this.resetToInitialState();\n return;\n }\n\n const counter = this.activeCounter;\n\n if (counter.isEmpty) {\n this.selectPrevCounter();\n this.setInputSelectionRange();\n } else {\n counter.set('');\n }\n\n // To support keyboards like SwiftKey, we need to re-render the counters display and selection,\n // otherwise we get an unexpected behavior, where the format is deleted.\n setTimeout(() => {\n this.updateCountersDisplay();\n this.setInputSelectionRange();\n });\n }\n\n handleMouseCaretPositionChange(e) {\n if (this.opened) {\n return;\n }\n\n e.preventDefault();\n\n this.setSelectedCounterByCaretPosition(e);\n this.setInputSelectionRange();\n }\n\n onInitialValueChange(val) {\n // if component already has a value don't re-set value\n if (this.value) return;\n\n // we need to wait for the text-field to init\n setTimeout(() => {\n if (Number.isNaN(parseInt(val, 10))) {\n return;\n }\n this.value = Number(val);\n });\n }\n\n togglePopoverAccess(visibility) {\n if (visibility) {\n this.popoverToggleButton.classList.remove('hidden');\n } else {\n this.popoverToggleButton.classList.add('hidden');\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (attrName === 'disable-calendar') {\n this.togglePopoverAccess(newValue !== 'true');\n }\n if (dateFieldAttrs.includes(attrName)) {\n if (newValue && attrName === 'format') {\n this.onFormatUpdate(newValue);\n }\n if (attrName === 'initial-value') {\n this.onInitialValueChange(newValue);\n }\n } else if (calendarAttrs.includes(attrName)) {\n if (newValue) {\n this.calendar?.setAttribute(attrName, newValue);\n } else {\n this.calendar?.removeAttribute(attrName);\n }\n }\n }\n }\n\n // we want to validate the date supplied actually exists. For example: Feb 31 is not an actual date,\n // but in JS when create a `new Date('1999-02-31') we get March 2nd 1999.\n // To prevent this error from being submitted, we evaluate the\n // date parts against their generated Date value.\n isInvalidDate() {\n const yearCounter = this.getCounterById('year');\n const isYearOutOfRange =\n yearCounter.numberValue > valRange['year'].max ||\n yearCounter.numberValue < valRange['year'].min;\n\n const isDateDisplayMismatch = Object.entries(this.getDateVals()).some(([key, val]) => {\n const counter = this.getCounterById(key);\n return !val || counter.numberValue !== val;\n });\n\n return isYearOutOfRange || isDateDisplayMismatch;\n }\n\n getValidity() {\n if (this.isRequired && this.isCountersEmpty) {\n return { valueMissing: true };\n }\n\n if (this.isCountersOutOfRange || this.isInvalidDate()) {\n return { patternMismatch: true };\n }\n\n return {};\n }\n\n getDateVals() {\n const ret = {\n day: '',\n month: '',\n year: '',\n };\n\n if (Number.isNaN(this.epoch)) {\n return ret;\n }\n\n try {\n const date = this.isUtcTime ? new Date(this.epoch) : newDate(this.epoch);\n\n if (this.isUtcTime) {\n ret.month = date.getUTCMonth() + 1;\n ret.day = date.getUTCDate();\n ret.year = date.getUTCFullYear();\n } else {\n ret.month = date.getMonth() + 1;\n ret.day = date.getDate();\n ret.year = date.getFullYear();\n }\n } catch (e) {}\n\n return ret;\n }\n\n resetToInitialState() {\n this.resetDateCounters();\n this.selectFirstCounter();\n this.resetDisplay();\n }\n\n onCut(e) {\n e.preventDefault();\n\n if (this.isSelectAll) {\n this.#copyToClipboard(this.countersValue);\n this.resetToInitialState();\n } else {\n this.#copyToClipboard(this.activeCounter.stringValue);\n this.activeCounter.set('');\n }\n\n this.setInputSelectionRange();\n }\n\n #copyToClipboard(value) {\n try {\n navigator.clipboard.writeText(value);\n } catch (err) {\n console.error('Failed to copy date value:', err);\n }\n }\n\n onPaste(e) {\n e.preventDefault();\n\n const clipboardData = e.clipboardData || window.clipboardData;\n const pastedData = clipboardData.getData('Text');\n\n // try paste entire date if valid\n const validDate = parseDateString(pastedData, this.format);\n\n if (validDate) {\n this.value = dateToEpoch(validDate, this.isUtcTime);\n this.onDateCounterChange();\n\n // select all\n setTimeout(() => this.inputElement.setSelectionRange(0, this.inputElement.value.length));\n } else {\n const value = Number(pastedData);\n\n // try paste in counter if possible\n if (value && this.activeCounter.min <= value && this.activeCounter.max >= value) {\n // use String to get rid of any zero padding\n this.activeCounter.set(String(value));\n\n setTimeout(() => this.setInputSelectionRange());\n }\n }\n }\n}\n\nconst textVars = TextFieldClass.cssVarList;\nconst { host, input, inputEleRTL, toggleButton, overlay, backdrop, errorMessage } = {\n host: { selector: () => ':host' },\n input: { selector: () => 'descope-text-field' },\n inputEleRTL: { selector: () => ':host([st-host-direction=\"rtl\"]) descope-text-field' },\n toggleButton: { selector: () => '.toggle-calendar' },\n overlay: { selector: 'vaadin-popover-overlay::part(overlay)' },\n backdrop: { selector: 'vaadin-popover-overlay::part(backdrop)' },\n};\n\nexport const DateFieldClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n iconMargin: { ...toggleButton, property: 'margin-inline-end' },\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n textAlign: { ...input, property: 'text-align' },\n rtlInputDirection: { ...inputEleRTL, property: textVars.inputDirection },\n rtlInputAlignment: { ...inputEleRTL, property: textVars.inputTextAlign },\n overlayGap: {\n property: () => DateFieldClass.cssVarList.overlayGap,\n },\n overlayBackgroundColor: {\n property: () => DateFieldClass.cssVarList.overlayBackgroundColor,\n },\n overlayPadding: {\n property: () => DateFieldClass.cssVarList.overlayPadding,\n },\n overlayBoxShadow: { property: () => DateFieldClass.overlayBoxShadow },\n overlayOutlineWidth: {\n property: () => DateFieldClass.cssVarList.overlayOutlineWidth,\n },\n overlayOutlineColor: {\n property: () => DateFieldClass.cssVarList.overlayOutlineColor,\n },\n overlayOutlineStyle: {\n property: () => DateFieldClass.cssVarList.overlayOutlineStyle,\n },\n errorMessageIcon: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIcon,\n },\n errorMessageIconSize: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconSize,\n },\n errorMessageIconPadding: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconPadding,\n },\n errorMessageIconRepeat: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconRepeat,\n },\n errorMessageIconPosition: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconPosition,\n },\n errorMessageFontSize: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageFontSize,\n },\n },\n }),\n portalMixin({\n name: 'overlay',\n selector: '',\n mappings: {\n marginTop: { ...overlay, property: 'margin-top' },\n backgroundColor: { ...overlay },\n backdropBackgroundColor: { ...backdrop, property: 'background-color' },\n backdropPointerEvents: { ...backdrop, property: 'pointer-events' },\n padding: { ...overlay },\n boxShadow: { ...overlay },\n outlineWidth: { ...overlay },\n outlineColor: { ...overlay },\n outlineStyle: { ...overlay },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawDateFieldClass);\n","import '@vaadin/popover/src/vaadin-popover';\nimport './descope-calendar';\nimport '../descope-text-field';\n\nimport { componentName, DateFieldClass } from './DateFieldClass';\n\ncustomElements.define(componentName, DateFieldClass);\n\nexport { DateFieldClass, componentName };\n"],"names":["host","label","placeholder","requiredIndicator","inputField","input","inputMask","helperText","errorMessage","disabledPlaceholder","inputDisabled","inputIcon","externalInput","externalInputDisabled","externalPlaceholder","externalDisabledPlaceholder","selector","fontSize","fontFamily","labelFontSize","property","labelFontWeight","labelTextColor","hostWidth","hostMinWidth","hostDirection","inputDirection","inputBackgroundColor","errorMessageTextColor","errorMessageIcon","errorMessageIconSize","errorMessageIconPadding","errorMessageIconRepeat","errorMessageIconPosition","errorMessageFontSize","helperTextColor","inputValueTextColor","inputCaretTextColor","labelRequiredIndicator","inputBorderColor","inputBorderWidth","inputBorderStyle","inputBorderRadius","inputHeight","inputHorizontalPadding","inputOutlineColor","inputOutlineStyle","inputOutlineWidth","inputOutlineOffset","textAlign","inputTextAlign","inputPlaceholderColor","labelPosition","labelTopPosition","labelHorizontalPosition","inputTransformY","inputTransition","marginInlineStart","placeholderOpacity","inputVerticalAlignment","valueInputHeight","valueInputMarginBottom","inputIconOffset","inputIconSize","inputIconColor","customElements","define","componentName","observedAttrs","TextFieldClass","mappings","proxyProps","useProxyTargets","superclass","observedAttributes","concat","icon","init","super","renderCopyToClipboard","shouldRender","this","remove","iconInitConfig","title","style","iconCopiedConfig","Object","assign","document","createElement","slot","baseElement","appendChild","addEventListener","navigator","clipboard","writeText","value","setTimeout","onLabelClick","focus","attributeChangedCallback","attrName","oldVal","newVal","attributeChangeCallback","_setType","removeEventListener","slots","wrappedEleName","cssVarList","excludeAttrsSync","DateCounter","freeze","constructor","id","min","max","onChange","data","val","length","numberValue","Number","stringValue","join","padStart","isFull","isEmpty","toString","set","split","add","num","slice","del","filter","d","Boolean","clear","inc","gap","replaceValue","Math","dec","isInRange","setMin","setMax","BaseInputClass","createBaseInputClass","baseSelector","dateFieldAttrs","calendarAttrs","textVars","inputEleRTL","toggleButton","overlay","backdrop","DateFieldClass","componentNameOverride","iconMargin","rtlInputDirection","rtlInputAlignment","overlayGap","overlayBackgroundColor","overlayPadding","overlayBoxShadow","overlayOutlineWidth","overlayOutlineColor","overlayOutlineStyle","name","marginTop","backgroundColor","backdropBackgroundColor","backdropPointerEvents","padding","boxShadow","outlineWidth","outlineColor","outlineStyle","epoch","format","selectedCounterIdx","updateCountersDisplay","inputElement","countersValue","updateValue","isCountersOutOfRange","updateEpoch","date","formats","getDate","isUtcTime","onDateCounterChange","epochOrDate","isNaN","dateCounters","MONTH","bind","DAY","YEAR","attachShadow","mode","innerHTML","shadowRoot","querySelector","popoverToggleButton","validationTarget","opened","getAttribute","displayValueEpoch","getTime","sortedCounters","map","find","dc","activeCounter","calendar","isRTL","computedStyleDirection","getComputedStyle","getPropertyValue","isInvalidDate","parseInt","updateDateCounters","isCountersEmpty","every","some","disableCalendar","isSelectAll","inputEle","selectionStart","selectionEnd","reportValidity","dispatchEvent","Event","bubbles","updateInputDisplay","updateFormatPattern","initPopover","initInputElement","getValidity","checkValidity","onPopoverToggle","onFocus","onBlur","handleMouseCaretPositionChange","handleKeyboard","handleInput","onPointerDown","onPaste","includeAttrs","e","preventDefault","handleSelectAll","parseDigits","inputType","handleNavKeys","trigger","withBackdrop","renderer","stopPropagation","selectFirstCounter","root","firstChild","positionTarget","closePopover","setProperty","updateCalendarView","popover","windowRect","body","getBoundingClientRect","inputRect","calendarRect","side","offset","availableLeft","left","availableRight","width","right","newOffset","abs","ele","onCalendarSubmit","_attachOverlay","bringToFront","_detachOverlay","_enterModalState","openPopover","setAttribute","removeAttribute","getCounterById","isReadOnly","calendarDate","getFullYear","getMonth","validInputVal","validate","clearValue","resetDisplay","setSelectionRange","onFormatUpdate","keys","includes","pattern","selectNextCounter","setInputSelectionRange","getCounterIdx","caretPos","counter1ln","counter2ln","indexOf","setSelectedCounterByCaretPosition","target","selectPrevCounter","caretStart","reduce","acc","counter","resetDateCounters","forEach","getUTCMonth","getUTCFullYear","getUTCDate","metaKey","ctrlKey","key","toLowerCase","onCut","handleBackspace","resetToInitialState","onInitialValueChange","togglePopoverAccess","visibility","classList","oldValue","newValue","yearCounter","isYearOutOfRange","isDateDisplayMismatch","entries","getDateVals","isRequired","valueMissing","patternMismatch","ret","day","month","year","Date","err","console","error","pastedData","clipboardData","window","getData","validDate","String"],"sourceRoot":""}
1
+ {"version":3,"file":"descope-date-field-index-js.js","mappings":"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","sources":["webpack://@descope/web-components-ui/./src/components/descope-text-field/textFieldMappings.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/index.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/TextFieldClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/DateCounterClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/DateFieldClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/index.js"],"sourcesContent":["const {\n host,\n label,\n placeholder,\n requiredIndicator,\n inputField,\n input,\n inputMask,\n helperText,\n errorMessage,\n disabledPlaceholder,\n inputDisabled,\n inputIcon,\n externalInput,\n externalInputDisabled,\n externalPlaceholder,\n externalDisabledPlaceholder,\n} = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n placeholder: [\n { selector: '> input:placeholder-shown' },\n { selector: () => ':host::slotted(input:placeholder-shown)' },\n ],\n disabledPlaceholder: { selector: '> input:disabled::placeholder' },\n inputField: { selector: '::part(input-field)' },\n input: { selector: 'input' },\n inputMask: { selector: '::part(input-field)::before' },\n inputDisabled: { selector: 'input:disabled' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n inputIcon: { selector: 'vaadin-icon' },\n externalInput: { selector: () => '::slotted(input)' },\n externalInputDisabled: { selector: () => '::slotted(input:disabled)' },\n externalPlaceholder: { selector: () => '::slotted(input:placeholder-shown)' },\n externalDisabledPlaceholder: { selector: () => '::slotted(input:disabled::placeholder)' },\n};\n\nexport default {\n // we apply font-size also on the host so we can set its width with em\n fontSize: [{}, host],\n fontFamily: [label, inputField, helperText, errorMessage],\n\n labelFontSize: { ...label, property: 'font-size' },\n labelFontWeight: { ...label, property: 'font-weight' },\n\n labelTextColor: [\n { ...label, property: 'color' },\n { ...requiredIndicator, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: '-webkit-text-fill-color' },\n ],\n\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostDirection: { ...host, property: 'direction' },\n inputDirection: { ...input, property: 'direction' },\n\n inputBackgroundColor: [\n { ...inputField, property: 'background-color' },\n { ...inputMask, property: 'background-color' },\n ],\n\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n helperTextColor: { ...helperText, property: '-webkit-text-fill-color' },\n\n inputValueTextColor: [\n { ...inputField, property: 'color' },\n { ...inputDisabled, property: '-webkit-text-fill-color' },\n { ...externalInputDisabled, property: '-webkit-text-fill-color' },\n ],\n inputCaretTextColor: [\n { ...input, property: 'caret-color' },\n { ...externalInput, property: 'caret-color' },\n ],\n\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n\n inputBorderColor: { ...inputField, property: 'border-color' },\n inputBorderWidth: { ...inputField, property: 'border-width' },\n inputBorderStyle: { ...inputField, property: 'border-style' },\n inputBorderRadius: { ...inputField, property: 'border-radius' },\n\n inputHeight: { ...inputField, property: 'height' },\n inputHorizontalPadding: [\n { ...input, property: 'padding-left' },\n { ...input, property: 'padding-right' },\n { ...externalInput, property: 'padding-left' },\n { ...externalInput, property: 'padding-right' },\n ],\n\n inputOutlineColor: { ...inputField, property: 'outline-color' },\n inputOutlineStyle: { ...inputField, property: 'outline-style' },\n inputOutlineWidth: { ...inputField, property: 'outline-width' },\n inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n\n textAlign: {},\n\n inputTextAlign: [\n { ...input, property: 'text-align' },\n { ...externalInput, property: 'text-align' },\n ],\n\n inputPlaceholderColor: [\n { selector: () => ':host input:placeholder-shown', property: 'color' },\n { ...externalPlaceholder, property: 'color' },\n { ...placeholder, property: 'color' },\n { ...disabledPlaceholder, property: '-webkit-text-fill-color' },\n { ...externalDisabledPlaceholder, property: '-webkit-text-fill-color' },\n ],\n\n labelPosition: { ...label, property: 'position' },\n labelTopPosition: { ...label, property: 'top' },\n labelHorizontalPosition: [\n { ...label, property: 'left' },\n { ...label, property: 'right' },\n ],\n inputTransformY: { ...label, property: 'transform' },\n inputTransition: { ...label, property: 'transition' },\n marginInlineStart: { ...label, property: 'margin-inline-start' },\n placeholderOpacity: [\n { selector: '> input:placeholder-shown', property: 'opacity' },\n { ...externalPlaceholder, property: 'opacity' },\n ],\n inputVerticalAlignment: [\n { ...inputField, property: 'align-items' },\n { ...externalInput, property: 'align-items' },\n ],\n valueInputHeight: [\n { ...input, property: 'height' },\n { ...externalInput, property: 'height' },\n ],\n valueInputMarginBottom: [\n { ...input, property: 'margin-bottom' },\n { ...externalInput, property: 'margin-bottom' },\n ],\n\n inputIconOffset: [\n { ...inputIcon, property: 'margin-right' },\n { ...inputIcon, property: 'margin-left' },\n ],\n inputIconSize: { ...inputIcon, property: 'font-size' },\n inputIconColor: { ...inputIcon, property: 'color' },\n};\n","import '@vaadin/text-field';\nimport '@vaadin/icons';\nimport '@vaadin/icon';\n\nimport { componentName, TextFieldClass } from './TextFieldClass';\n\ncustomElements.define(componentName, TextFieldClass);\n\nexport { TextFieldClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../mixins';\nimport textFieldMappings from './textFieldMappings';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n inputFloatingLabelStyle,\n resetInputLabelPosition,\n resetInputOverrides,\n useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('text-field');\n\nconst observedAttrs = ['type', 'label-type', 'copy-to-clipboard'];\n\nconst customMixin = (superclass) =>\n class TextFieldClass extends superclass {\n static get observedAttributes() {\n return observedAttrs.concat(superclass.observedAttributes || []);\n }\n\n icon;\n\n init() {\n super.init?.();\n }\n\n renderCopyToClipboard(shouldRender) {\n if (!shouldRender) {\n this.icon?.remove();\n return;\n }\n\n const iconInitConfig = {\n icon: 'vaadin:copy-o',\n title: 'Copy',\n style: 'cursor: pointer',\n };\n\n const iconCopiedConfig = {\n icon: 'vaadin:check-circle-o',\n title: 'Copied',\n style: 'cursor: initial',\n };\n\n this.icon = Object.assign(document.createElement('vaadin-icon'), {\n slot: 'suffix',\n ...iconInitConfig,\n });\n\n this.baseElement.appendChild(this.icon);\n this.icon.addEventListener('click', () => {\n navigator.clipboard.writeText(this.value);\n Object.assign(this.icon, iconCopiedConfig);\n\n // we want the icon to go back to the initial state after 5 seconds\n setTimeout(() => {\n Object.assign(this.icon, iconInitConfig);\n }, 5000);\n });\n }\n\n onLabelClick() {\n this.focus();\n }\n\n attributeChangedCallback(attrName, oldVal, newVal) {\n super.attributeChangeCallback?.(attrName, oldVal, newVal);\n\n // Vaadin doesn't allow to change the input type attribute.\n // We need the ability to do that, so we're overriding their\n // behavior with their private API.\n // When receiving a `type` attribute, we use their private API\n // to set it on the input.\n if (attrName === 'type') {\n this.baseElement._setType(newVal);\n }\n\n if (oldVal !== newVal) {\n if (attrName === 'label-type') {\n if (newVal === 'floating') {\n this.addEventListener('click', this.onLabelClick);\n } else {\n this.removeEventListener('click', this.onLabelClick);\n }\n } else if (attrName === 'copy-to-clipboard') {\n this.renderCopyToClipboard(newVal === 'true');\n }\n }\n }\n };\n\nexport const TextFieldClass = compose(\n createStyleMixin({\n mappings: textFieldMappings,\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: ['prefix', 'suffix'],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${TextFieldClass.cssVarList.inputOutlineWidth}) + var(${\n TextFieldClass.cssVarList.inputOutlineOffset\n }));\n box-sizing: border-box;\n\t\t\t}\n :host(:is([readonly], [disabled])) ::slotted(:is(input, textarea):placeholder-shown) {\n opacity: 1;\n }\n\n vaadin-text-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-text-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n ${resetInputLabelPosition('vaadin-text-field')}\n\t\t\t${useHostExternalPadding(TextFieldClass.cssVarList)}\n\t\t\t${resetInputOverrides('vaadin-text-field', TextFieldClass.cssVarList)}\n ${inputFloatingLabelStyle()}\n\n vaadin-text-field vaadin-icon {\n align-self: center;\n }\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","// DateCounterClass allows us to add several counters to the input, and use them seperately.\n// For examele, we have a DayCounter, MonthCounter and YearCounter, which can each separately navigate\n// between different ranges.\nexport class DateCounter {\n #data = Object.freeze([]);\n\n constructor({ id, min, max, placeholder }, onChange) {\n this.id = id;\n this.min = min;\n this.max = max;\n this.placeholder = placeholder;\n this.onChange = onChange;\n }\n\n get data() {\n return this.#data;\n }\n\n set data(val) {\n this.#data = Object.freeze(val);\n this.onChange?.();\n }\n\n get #initialNumValue() {\n return this.data.length ? this.numberValue : 0;\n }\n\n get numberValue() {\n return Number(this.stringValue);\n }\n\n get stringValue() {\n return (this.data.join('') || this.placeholder).padStart(this.length, '0');\n }\n\n get isFull() {\n return this.numberValue * 10 > this.max || this.data.length === this.length;\n }\n\n get isEmpty() {\n return this.stringValue === this.placeholder;\n }\n\n get length() {\n return this.max.toString().length;\n }\n\n set(val) {\n this.data = val.toString().split('');\n }\n\n add(num) {\n // use local var to avoid triggering onChange\n let data = this.data;\n\n data = [...data, num];\n\n // we need to re-evaluate the number value\n const numVal = Number(data.join(''));\n\n if (numVal > this.max) {\n data = [num];\n } else if (this.length < data.length) {\n data = data.slice(1, data.length);\n }\n\n this.data = data;\n\n return num;\n }\n\n del() {\n if (!this.data.filter((d) => d !== '0').filter(Boolean).length) {\n this.data = [];\n } else {\n this.data = this.data.slice(0, this.data.length - 1);\n }\n }\n\n clear() {\n this.data = [];\n }\n\n inc(gap) {\n this.replaceValue(\n this.#initialNumValue < this.max\n ? Math.max(this.#initialNumValue + (gap || 1), this.min)\n : this.min\n );\n }\n\n dec(gap) {\n this.replaceValue(\n this.#initialNumValue > this.min\n ? Math.min(this.#initialNumValue - (gap || 1), this.max)\n : this.max\n );\n }\n\n isInRange(val) {\n return val >= this.min && val <= this.max;\n }\n\n replaceValue(val) {\n if (this.isInRange(val)) {\n this.data = val.toString().padStart(this.length, 0).split('');\n }\n }\n\n setMin(val) {\n this.min = Number(val);\n }\n\n setMax(val) {\n this.max = Number(val);\n }\n}\n","import { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n portalMixin,\n} from '../../mixins';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { compose } from '../../helpers';\nimport {\n newDate,\n isValidEpoch,\n formatEpoch,\n isNumber,\n getCurrentTime,\n overrideConstructedStylesheet,\n dateToEpoch,\n} from './helpers';\nimport { formats } from './formats';\nimport { calendarIcon } from './icons';\nimport {\n counterConfig,\n DEFAULT_FORMAT,\n DIVIDER,\n MOBILE_DEVICE_INTERACTION_TIMEOUT_MS,\n NATIVE_FORMAT,\n valRange,\n} from './consts';\nimport { DateCounter } from './DateCounterClass';\nimport { TextFieldClass } from '../descope-text-field/TextFieldClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { parseDateString } from './helpers';\n\nexport const componentName = getComponentName('date-field');\n\n// we set baseSelector to `vaadin-popover` as a temporary hack, so our portalMixin will\n// be able to process this component's overlay. The whole process needs refactoring as soon as possible.\nconst BASE_SELECTOR = 'vaadin-popover';\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: BASE_SELECTOR });\n\nconst dateFieldAttrs = [\n 'format',\n 'opened',\n 'initial-value',\n 'readonly',\n 'disable-calendar',\n 'utc-time',\n];\nconst calendarAttrs = ['years-range', 'calendar-months', 'calendar-weekdays'];\nconst observedAttrs = [...dateFieldAttrs, ...calendarAttrs];\n\nclass RawDateFieldClass extends BaseInputClass {\n epoch = '';\n\n format = DEFAULT_FORMAT;\n\n selectedCounterIdx = 0;\n\n updateCountersDisplay() {\n this.inputElement.value = this.countersValue;\n }\n\n updateValue() {\n if (this.isCountersOutOfRange) {\n this.updateEpoch('');\n } else {\n const date = formats[this.format].getDate(this.inputElement.value);\n this.updateEpoch(dateToEpoch(date, this.isUtcTime));\n }\n }\n\n onDateCounterChange = () => {\n this.updateCountersDisplay();\n this.updateValue();\n // update validity\n this.#dispatchInput();\n };\n\n updateEpoch(epochOrDate) {\n if (Number.isNaN(epochOrDate) || !epochOrDate.toString()?.length) {\n this.epoch = '';\n } else {\n this.epoch = dateToEpoch(newDate(epochOrDate, this.isUtcTime), this.isUtcTime);\n }\n }\n\n dateCounters = [\n new DateCounter(counterConfig.MONTH, this.onDateCounterChange.bind(this)),\n new DateCounter(counterConfig.DAY, this.onDateCounterChange.bind(this)),\n new DateCounter(counterConfig.YEAR, this.onDateCounterChange.bind(this)),\n ];\n\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div>\n <descope-text-field inputmode=\"numeric\">\n <span slot=\"suffix\" class=\"toggle-calendar\">\n ${calendarIcon}\n </span>\n </descope-text-field>\n <vaadin-popover></vaadin-popover>\n </div>\n `;\n\n injectStyle(\n `\n :host {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n max-width: 100%;\n }\n\n :host ::slotted {\n padding: 0;\n }\n\n .toggle-calendar {\n cursor: pointer;\n display: flex;\n align-self: center;\n z-index: 1;\n height: 100%;\n align-items: center;\n }\n\n :host([readonly=\"true\"]) .toggle-calendar {\n pointer-events: none;\n }\n\n .hidden {\n display: none;\n }\n `,\n this\n );\n\n this.inputElement = this.shadowRoot.querySelector('descope-text-field');\n this.popoverToggleButton = this.inputElement.querySelector('.toggle-calendar');\n }\n\n get validationTarget() {\n return this.inputElement;\n }\n\n get opened() {\n return this.getAttribute('opened') === 'true';\n }\n\n // returns the input's value as a epoch\n get displayValueEpoch() {\n const date = formats[this.format].getDate(this.inputElement.value);\n\n if (!isValidEpoch(date?.getTime())) {\n return null;\n }\n\n return date.getTime();\n }\n\n get sortedCounters() {\n return this.format\n .split(DIVIDER)\n .map((placeholder) => this.dateCounters.find((dc) => dc.placeholder === placeholder));\n }\n\n get activeCounter() {\n return this.sortedCounters[this.selectedCounterIdx];\n }\n\n get countersValue() {\n return this.sortedCounters.map((dc) => dc.stringValue).join(DIVIDER);\n }\n\n get overlay() {\n return this.baseElement.shadowRoot?.querySelector('vaadin-popover-overlay');\n }\n\n get backdrop() {\n return this.overlay.shadowRoot?.querySelector('#backdrop');\n }\n\n get calendar() {\n return this.overlay?.querySelector('descope-calendar');\n }\n\n get isRTL() {\n const computedStyleDirection = getComputedStyle(this.baseElement).getPropertyValue('direction');\n\n if (computedStyleDirection) {\n return computedStyleDirection === 'rtl';\n }\n\n // Fallback: If for some reason computed style was not calculated in time, fallback to check on attribute\n return this.getAttribute('st-host-direction') === 'rtl';\n }\n\n get value() {\n if (this.isInvalidDate()) {\n return '';\n }\n return this.epoch;\n }\n\n set value(val) {\n let value = parseInt(val, 10);\n if (!Number.isNaN(value)) {\n this.updateEpoch(value);\n this.updateDateCounters(newDate(value));\n } else {\n this.updateEpoch('');\n this.resetDateCounters();\n this.clearInputEle();\n }\n }\n\n get isCountersEmpty() {\n return this.dateCounters.every((dc) => dc.isEmpty);\n }\n\n get isCountersOutOfRange() {\n return this.dateCounters.some((dc) => !dc.isInRange(dc.numberValue));\n }\n\n get disableCalendar() {\n return this.getAttribute('disable-calendar') === 'true';\n }\n\n get isUtcTime() {\n return this.getAttribute('utc-time') === 'true';\n }\n\n get isSelectAll() {\n const inputEle = this.inputElement.baseElement.inputElement;\n return inputEle.value.length === inputEle.selectionStart + inputEle.selectionEnd;\n }\n\n reportValidity() {\n this.inputElement.reportValidity();\n }\n\n #dispatchInput() {\n this.inputElement.baseElement.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n updateInputDisplay() {\n this.inputElement.value = formatEpoch(newDate(this.countersValue).getTime(), this.format);\n }\n\n init() {\n super.init?.();\n\n this.updateFormatPattern();\n this.initPopover();\n this.onDateCounterChange();\n this.initInputElement();\n\n setTimeout(() => {\n this.#overrideOverlaySettings();\n }, 0);\n }\n\n initInputElement() {\n this.inputElement.getValidity = this.getValidity.bind(this);\n this.inputElement.baseElement.checkValidity = this.checkValidity.bind(this);\n\n this.popoverToggleButton.addEventListener('click', this.onPopoverToggle.bind(this));\n\n this.inputElement.addEventListener('focus', this.onFocus.bind(this));\n this.inputElement.addEventListener('blur', this.onBlur.bind(this));\n this.inputElement.addEventListener('click', this.handleMouseCaretPositionChange.bind(this));\n this.inputElement.addEventListener('keydown', this.handleKeyboard.bind(this));\n this.inputElement.addEventListener('beforeinput', this.handleInput.bind(this));\n this.inputElement.addEventListener('pointerdown', this.onPointerDown.bind(this));\n this.inputElement.addEventListener('paste', this.onPaste.bind(this));\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'bordered',\n 'required',\n 'full-width',\n 'st-host-direction',\n 'pattern',\n 'bordered',\n 'data-errormessage-value-missing',\n 'data-errormessage-pattern-mismatch',\n 'data-errormessage-range-underflow',\n 'data-errormessage-range-overflow',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n }\n\n handleInput(e) {\n e.preventDefault();\n\n this.handleSelectAll();\n\n if (e.data && isNumber(e.data)) {\n this.parseDigits(e.data);\n this.updateCountersDisplay();\n } else if (e.inputType) {\n this.handleNavKeys(e);\n }\n }\n\n initPopover() {\n this.baseElement.trigger = ['click'];\n this.baseElement.withBackdrop = true;\n this.baseElement.renderer = this.#popoverRenderer.bind(this);\n\n // block popover events from focusing/blurring the text-field\n this.baseElement.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n }\n\n handleSelectAll() {\n if (this.isSelectAll) {\n this.selectFirstCounter();\n }\n }\n\n #popoverPosStylesheet;\n\n #popoverRenderer(root) {\n // popoverRenderer should run only once, when the popover is first rendering.\n if (!root.firstChild) {\n this.overlay.positionTarget = this.shadowRoot.querySelector('.toggle-calendar');\n\n root.appendChild(this.#getPopoverContent());\n\n // override vaadin's constructed stylesheet which hides the host element\n overrideConstructedStylesheet(this.baseElement);\n\n this.backdrop.addEventListener('click', this.closePopover.bind(this));\n }\n\n // Hide overlay before adjusting position to prevent flickering\n root.style.setProperty('visibility', 'hidden');\n\n // Wait until overlay is ready\n setTimeout(() => {\n this.#adjustPopoverPosition(root);\n\n // Show adjusted overlay\n root.style.setProperty('visibility', 'visible');\n this.updateCalendarView(root);\n }, 100);\n }\n\n #adjustPopoverPosition() {\n const popover = this.shadowRoot.querySelector('vaadin-popover').shadowRoot;\n\n // Remove previously added stylesheets\n this.#popoverPosStylesheet?.remove();\n\n const windowRect = document.body.getBoundingClientRect();\n const inputRect = this.getBoundingClientRect();\n const calendarRect = this.calendar.getBoundingClientRect();\n\n const side = this.isRTL ? 'right' : 'left';\n const offset = inputRect[side] - calendarRect[side];\n const availableLeft = calendarRect.left;\n const availableRight = windowRect.width - calendarRect.right;\n\n let newOffset;\n if (offset > 0) {\n newOffset = Math.min(offset, availableRight);\n } else {\n newOffset = Math.min(Math.abs(offset), availableLeft) * -1;\n }\n\n injectStyle(\n `\n vaadin-popover-overlay::part(overlay) {\n transform: translateX(${newOffset}px);\n }\n `,\n popover\n );\n }\n\n #getPopoverContent() {\n const ele = document.createElement('span');\n\n ele.innerHTML = `<descope-calendar></descope-calendar>`;\n\n const calendar = ele.querySelector('descope-calendar');\n\n calendar.addEventListener('date-submit', this.onCalendarSubmit.bind(this));\n calendar.addEventListener('cancel', this.closePopover.bind(this));\n\n return ele;\n }\n\n // the default vaadin behavior is to attach the overlay to the body when opened\n // we do not want that because it's difficult to style the overlay in this way\n // so we override it to open inside the shadow DOM\n #overrideOverlaySettings() {\n this.overlay._attachOverlay = () => this.overlay.bringToFront();\n this.overlay._detachOverlay = () => {};\n this.overlay._enterModalState = () => {};\n }\n\n onPopoverToggle() {\n this.opened ? this.closePopover() : this.openPopover();\n }\n\n openPopover() {\n if (this.disableCalendar) return;\n this.setAttribute('opened', 'true');\n }\n\n closePopover() {\n this.removeAttribute('opened');\n this.inputElement.focus();\n }\n\n getCounterById(id) {\n return this.dateCounters.find((dc) => dc.id === id);\n }\n\n onCalendarSubmit() {\n if (!this.isReadOnly) {\n if (!this.calendar.value) return;\n\n const calendarDate = newDate(this.calendar.value);\n\n this.value = dateToEpoch(calendarDate, this.isUtcTime);\n\n this.getCounterById('year').replaceValue(calendarDate.getFullYear());\n this.getCounterById('month').replaceValue(calendarDate.getMonth() + 1);\n this.getCounterById('day').replaceValue(calendarDate.getDate());\n\n this.#dispatchInput();\n }\n\n this.closePopover();\n }\n\n updateCalendarView() {\n const validInputVal =\n isValidEpoch(newDate(this.inputElement.value || '').getTime()) &&\n formats[this.format].validate(this.inputElement.value);\n\n if (this.displayValueEpoch || validInputVal) {\n this.calendar.setAttribute(\n 'initial-value',\n formatEpoch(this.displayValueEpoch || this.epoch, NATIVE_FORMAT)\n );\n } else {\n this.calendar.clearValue();\n this.calendar.setAttribute('preview', formatEpoch(getCurrentTime(), NATIVE_FORMAT));\n }\n\n forwardAttrs(this, this.calendar, {\n includeAttrs: [\n 'st-host-direction',\n 'readonly',\n 'initial-month',\n 'initial-year',\n 'years-range',\n 'calendar-label-submit',\n 'calendar-label-cancel',\n 'calendar-months',\n 'calendar-weekdays',\n 'calendar-weekdays-short',\n ],\n });\n }\n\n // In mobile devices, there are cases were `pointerdown` is triggered\n // instead of `click`.\n onPointerDown(e) {\n setTimeout(() => this.handleMouseCaretPositionChange(e), MOBILE_DEVICE_INTERACTION_TIMEOUT_MS);\n }\n\n onFocus() {\n if (this.isReadOnly) {\n return;\n }\n\n // We need to wait for focus to end before we set selection\n setTimeout(() => this.resetDisplay());\n }\n\n resetDisplay() {\n if (!this.inputElement.value) {\n this.inputElement.value = this.format;\n }\n\n // On focus select the first counter\n this.selectFirstCounter();\n // set selection on first counter\n this.inputElement.setSelectionRange(0, this.sortedCounters[0].length);\n }\n\n onBlur() {\n if (this.opened) {\n return;\n }\n\n if (this.inputElement.value === this.format) {\n this.clearInputEle();\n }\n }\n\n clearInputEle() {\n this.inputElement.value = '';\n }\n\n onFormatUpdate(format) {\n if (Object.keys(formats).includes(format)) {\n this.format = format;\n this.updateFormatPattern();\n }\n }\n\n updateFormatPattern() {\n const format = this.getAttribute('format') || this.format || DEFAULT_FORMAT;\n this.setAttribute('type', 'date');\n this.setAttribute('pattern', formats[format].pattern);\n }\n\n parseDigits(value) {\n this.activeCounter.add(value);\n\n if (this.activeCounter.isFull) {\n this.selectNextCounter();\n }\n\n // We wait for the digit to be parsed, and only then set the selection.\n // Failing to do so results in unexpected \"jump\" of the screen in mobile devices.\n this.setInputSelectionRange();\n }\n\n getCounterIdx(caretPos) {\n const [counter1ln, counter2ln] = this.sortedCounters.map((dc) => dc.length);\n\n const c1 = caretPos <= counter1ln;\n const c2 = caretPos >= counter1ln && caretPos <= counter1ln + counter2ln + 1;\n const c3 = caretPos >= counter1ln + counter2ln + 2;\n\n return [c1, c2, c3].indexOf(true);\n }\n\n setSelectedCounterByCaretPosition(e) {\n this.selectedCounterIdx = this.getCounterIdx(\n // if triggered by touch event, target might not include `selectionStart`\n // in that case we fall back to the inputElement's `selectionStart` value.\n // Therefore, it is recommended to run this function with setTimeout,\n // at least for mobile events.\n e.target?.selectionStart || this.inputElement.selectionStart\n );\n }\n\n selectFirstCounter() {\n this.selectedCounterIdx = 0;\n }\n\n selectNextCounter() {\n if (this.selectedCounterIdx < this.dateCounters.length) {\n this.selectedCounterIdx = Math.min(this.selectedCounterIdx + 1, 2);\n }\n }\n\n selectPrevCounter() {\n if (this.selectedCounterIdx > 0) {\n this.selectedCounterIdx = Math.min(this.selectedCounterIdx - 1, 1);\n }\n }\n\n // Sets the text selection range in the input element based on the selected counter.\n // The function calculates the starting position of the selection by summing the lengths\n // of all counters before the currently selected counter (`selectedCounterIdx`).\n // It then selects the entire length of the current counter in the input element.\n setInputSelectionRange() {\n // For preview/readonly state we don't have a caret or a caretIdx, so we skip setting input selection range\n if (this.selectedCounterIdx < 0) {\n return;\n }\n\n // We wait for before setting the selection, otherwise there's an\n // unexpected \"jump\" of the screen in mobile devices.\n setTimeout(() => {\n const caretStart = this.sortedCounters\n .slice(0, this.selectedCounterIdx)\n .reduce((acc, counter) => acc + counter.length, this.selectedCounterIdx);\n\n this.inputElement.setSelectionRange(\n caretStart,\n caretStart + this.sortedCounters[this.selectedCounterIdx].length\n );\n });\n }\n\n resetDateCounters() {\n this.dateCounters.forEach((dc) => dc.clear());\n }\n\n // in case value is set from external source we need to update date counters\n updateDateCounters(date) {\n this.dateCounters.forEach((dc) => {\n switch (dc.id) {\n case counterConfig.MONTH.id:\n dc.set(this.isUtcTime ? date.getUTCMonth() + 1 : date.getMonth() + 1);\n break;\n case counterConfig.YEAR.id:\n dc.set(this.isUtcTime ? date.getUTCFullYear() : date.getFullYear());\n break;\n case counterConfig.DAY.id:\n dc.set(this.isUtcTime ? date.getUTCDate() : date.getDate());\n break;\n default:\n break;\n }\n });\n }\n\n handleKeyboard(e) {\n if (e.metaKey || e.ctrlKey) {\n if (e.key.toLowerCase() === 'x') {\n this.onCut(e);\n }\n\n return;\n }\n\n this.handleSelectAll();\n\n if (e.key === 'ArrowUp') {\n this.activeCounter.inc();\n } else if (e.key === 'ArrowDown') {\n this.activeCounter.dec();\n } else if (e.key === 'ArrowRight') {\n this.selectNextCounter();\n } else if (e.key === 'ArrowLeft') {\n this.selectPrevCounter();\n }\n\n this.setInputSelectionRange();\n }\n\n handleNavKeys(e) {\n if (this.isReadOnly) {\n return;\n }\n\n if (this.opened) {\n this.closePopover();\n }\n\n if (!this.activeCounter) return;\n\n if (e.inputType === 'deleteContentBackward') {\n this.handleBackspace();\n }\n\n this.setInputSelectionRange();\n }\n\n handleBackspace() {\n if (this.isSelectAll) {\n this.resetToInitialState();\n return;\n }\n\n const counter = this.activeCounter;\n\n if (counter.isEmpty) {\n this.selectPrevCounter();\n this.setInputSelectionRange();\n } else {\n counter.set('');\n }\n\n // To support keyboards like SwiftKey, we need to re-render the counters display and selection,\n // otherwise we get an unexpected behavior, where the format is deleted.\n setTimeout(() => {\n this.updateCountersDisplay();\n this.setInputSelectionRange();\n });\n }\n\n handleMouseCaretPositionChange(e) {\n if (this.opened) {\n return;\n }\n\n e.preventDefault();\n\n this.setSelectedCounterByCaretPosition(e);\n this.setInputSelectionRange();\n }\n\n onInitialValueChange(val) {\n // if component already has a value don't re-set value\n if (this.value) return;\n\n // we need to wait for the text-field to init\n setTimeout(() => {\n if (Number.isNaN(parseInt(val, 10))) {\n return;\n }\n this.value = Number(val);\n });\n }\n\n togglePopoverAccess(visibility) {\n if (visibility) {\n this.popoverToggleButton.classList.remove('hidden');\n } else {\n this.popoverToggleButton.classList.add('hidden');\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (attrName === 'disable-calendar') {\n this.togglePopoverAccess(newValue !== 'true');\n }\n if (dateFieldAttrs.includes(attrName)) {\n if (newValue && attrName === 'format') {\n this.onFormatUpdate(newValue);\n }\n if (attrName === 'initial-value') {\n this.onInitialValueChange(newValue);\n }\n } else if (calendarAttrs.includes(attrName)) {\n if (newValue) {\n this.calendar?.setAttribute(attrName, newValue);\n } else {\n this.calendar?.removeAttribute(attrName);\n }\n }\n }\n }\n\n // we want to validate the date supplied actually exists. For example: Feb 31 is not an actual date,\n // but in JS when create a `new Date('1999-02-31') we get March 2nd 1999.\n // To prevent this error from being submitted, we evaluate the\n // date parts against their generated Date value.\n isInvalidDate() {\n const yearCounter = this.getCounterById('year');\n const isYearOutOfRange =\n yearCounter.numberValue > valRange['year'].max ||\n yearCounter.numberValue < valRange['year'].min;\n\n const isDateDisplayMismatch = Object.entries(this.getDateVals()).some(([key, val]) => {\n const counter = this.getCounterById(key);\n return !val || counter.numberValue !== val;\n });\n\n return isYearOutOfRange || isDateDisplayMismatch;\n }\n\n getValidity() {\n if (this.isRequired && this.isCountersEmpty) {\n return { valueMissing: true };\n }\n\n if (this.isCountersOutOfRange || this.isInvalidDate()) {\n return { patternMismatch: true };\n }\n\n return {};\n }\n\n getDateVals() {\n const ret = {\n day: '',\n month: '',\n year: '',\n };\n\n if (Number.isNaN(this.epoch)) {\n return ret;\n }\n\n try {\n const date = this.isUtcTime ? new Date(this.epoch) : newDate(this.epoch);\n\n if (this.isUtcTime) {\n ret.month = date.getUTCMonth() + 1;\n ret.day = date.getUTCDate();\n ret.year = date.getUTCFullYear();\n } else {\n ret.month = date.getMonth() + 1;\n ret.day = date.getDate();\n ret.year = date.getFullYear();\n }\n } catch (e) {}\n\n return ret;\n }\n\n resetToInitialState() {\n this.resetDateCounters();\n this.selectFirstCounter();\n this.resetDisplay();\n }\n\n onCut(e) {\n e.preventDefault();\n\n if (this.isSelectAll) {\n this.#copyToClipboard(this.countersValue);\n this.resetToInitialState();\n } else {\n this.#copyToClipboard(this.activeCounter.stringValue);\n this.activeCounter.set('');\n }\n\n this.setInputSelectionRange();\n }\n\n #copyToClipboard(value) {\n try {\n navigator.clipboard.writeText(value);\n } catch (err) {\n console.error('Failed to copy date value:', err);\n }\n }\n\n onPaste(e) {\n e.preventDefault();\n\n const clipboardData = e.clipboardData || window.clipboardData;\n const pastedData = clipboardData.getData('Text');\n\n // try paste entire date if valid\n const validDate = parseDateString(pastedData, this.format);\n\n if (validDate) {\n this.value = dateToEpoch(validDate, this.isUtcTime);\n this.onDateCounterChange();\n\n // select all\n setTimeout(() => this.inputElement.setSelectionRange(0, this.inputElement.value.length));\n } else {\n const value = Number(pastedData);\n\n // try paste in counter if possible\n if (value && this.activeCounter.min <= value && this.activeCounter.max >= value) {\n // use String to get rid of any zero padding\n this.activeCounter.set(String(value));\n\n setTimeout(() => this.setInputSelectionRange());\n }\n }\n }\n}\n\nconst textVars = TextFieldClass.cssVarList;\nconst { host, input, inputEleRTL, toggleButton, overlay, backdrop, errorMessage } = {\n host: { selector: () => ':host' },\n input: { selector: () => 'descope-text-field' },\n inputEleRTL: { selector: () => ':host([st-host-direction=\"rtl\"]) descope-text-field' },\n toggleButton: { selector: () => '.toggle-calendar' },\n overlay: { selector: 'vaadin-popover-overlay::part(overlay)' },\n backdrop: { selector: 'vaadin-popover-overlay::part(backdrop)' },\n};\n\nexport const DateFieldClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n iconMargin: { ...toggleButton, property: 'margin-inline-end' },\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n textAlign: { ...input, property: 'text-align' },\n rtlInputDirection: { ...inputEleRTL, property: textVars.inputDirection },\n rtlInputAlignment: { ...inputEleRTL, property: textVars.inputTextAlign },\n overlayGap: {\n property: () => DateFieldClass.cssVarList.overlayGap,\n },\n overlayBackgroundColor: {\n property: () => DateFieldClass.cssVarList.overlayBackgroundColor,\n },\n overlayPadding: {\n property: () => DateFieldClass.cssVarList.overlayPadding,\n },\n overlayBoxShadow: { property: () => DateFieldClass.overlayBoxShadow },\n overlayOutlineWidth: {\n property: () => DateFieldClass.cssVarList.overlayOutlineWidth,\n },\n overlayOutlineColor: {\n property: () => DateFieldClass.cssVarList.overlayOutlineColor,\n },\n overlayOutlineStyle: {\n property: () => DateFieldClass.cssVarList.overlayOutlineStyle,\n },\n errorMessageIcon: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIcon,\n },\n errorMessageIconSize: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconSize,\n },\n errorMessageIconPadding: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconPadding,\n },\n errorMessageIconRepeat: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconRepeat,\n },\n errorMessageIconPosition: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconPosition,\n },\n errorMessageFontSize: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageFontSize,\n },\n },\n }),\n portalMixin({\n name: 'overlay',\n selector: '',\n mappings: {\n marginTop: { ...overlay, property: 'margin-top' },\n backgroundColor: { ...overlay },\n backdropBackgroundColor: { ...backdrop, property: 'background-color' },\n backdropPointerEvents: { ...backdrop, property: 'pointer-events' },\n padding: { ...overlay },\n boxShadow: { ...overlay },\n outlineWidth: { ...overlay },\n outlineColor: { ...overlay },\n outlineStyle: { ...overlay },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawDateFieldClass);\n","import '@vaadin/popover/src/vaadin-popover';\nimport './descope-calendar';\nimport '../descope-text-field';\n\nimport { componentName, DateFieldClass } from './DateFieldClass';\n\ncustomElements.define(componentName, DateFieldClass);\n\nexport { DateFieldClass, componentName };\n"],"names":["host","label","placeholder","requiredIndicator","inputField","input","inputMask","helperText","errorMessage","disabledPlaceholder","inputDisabled","inputIcon","externalInput","externalInputDisabled","externalPlaceholder","externalDisabledPlaceholder","selector","fontSize","fontFamily","labelFontSize","property","labelFontWeight","labelTextColor","hostWidth","hostMinWidth","hostDirection","inputDirection","inputBackgroundColor","errorMessageTextColor","errorMessageIcon","errorMessageIconSize","errorMessageIconPadding","errorMessageIconRepeat","errorMessageIconPosition","errorMessageFontSize","helperTextColor","inputValueTextColor","inputCaretTextColor","labelRequiredIndicator","inputBorderColor","inputBorderWidth","inputBorderStyle","inputBorderRadius","inputHeight","inputHorizontalPadding","inputOutlineColor","inputOutlineStyle","inputOutlineWidth","inputOutlineOffset","textAlign","inputTextAlign","inputPlaceholderColor","labelPosition","labelTopPosition","labelHorizontalPosition","inputTransformY","inputTransition","marginInlineStart","placeholderOpacity","inputVerticalAlignment","valueInputHeight","valueInputMarginBottom","inputIconOffset","inputIconSize","inputIconColor","customElements","define","componentName","observedAttrs","TextFieldClass","mappings","proxyProps","useProxyTargets","superclass","observedAttributes","concat","icon","init","super","renderCopyToClipboard","shouldRender","this","remove","iconInitConfig","title","style","iconCopiedConfig","Object","assign","document","createElement","slot","baseElement","appendChild","addEventListener","navigator","clipboard","writeText","value","setTimeout","onLabelClick","focus","attributeChangedCallback","attrName","oldVal","newVal","attributeChangeCallback","_setType","removeEventListener","slots","wrappedEleName","cssVarList","excludeAttrsSync","DateCounter","freeze","constructor","id","min","max","onChange","data","val","length","numberValue","Number","stringValue","join","padStart","isFull","isEmpty","toString","set","split","add","num","slice","del","filter","d","Boolean","clear","inc","gap","replaceValue","Math","dec","isInRange","setMin","setMax","BaseInputClass","createBaseInputClass","baseSelector","dateFieldAttrs","calendarAttrs","textVars","inputEleRTL","toggleButton","overlay","backdrop","DateFieldClass","componentNameOverride","iconMargin","rtlInputDirection","rtlInputAlignment","overlayGap","overlayBackgroundColor","overlayPadding","overlayBoxShadow","overlayOutlineWidth","overlayOutlineColor","overlayOutlineStyle","name","marginTop","backgroundColor","backdropBackgroundColor","backdropPointerEvents","padding","boxShadow","outlineWidth","outlineColor","outlineStyle","epoch","format","selectedCounterIdx","updateCountersDisplay","inputElement","countersValue","updateValue","isCountersOutOfRange","updateEpoch","date","formats","getDate","isUtcTime","onDateCounterChange","epochOrDate","isNaN","dateCounters","MONTH","bind","DAY","YEAR","attachShadow","mode","innerHTML","shadowRoot","querySelector","popoverToggleButton","validationTarget","opened","getAttribute","displayValueEpoch","getTime","sortedCounters","map","find","dc","activeCounter","calendar","isRTL","computedStyleDirection","getComputedStyle","getPropertyValue","isInvalidDate","parseInt","resetDateCounters","clearInputEle","updateDateCounters","isCountersEmpty","every","some","disableCalendar","isSelectAll","inputEle","selectionStart","selectionEnd","reportValidity","dispatchEvent","Event","bubbles","updateInputDisplay","updateFormatPattern","initPopover","initInputElement","getValidity","checkValidity","onPopoverToggle","onFocus","onBlur","handleMouseCaretPositionChange","handleKeyboard","handleInput","onPointerDown","onPaste","includeAttrs","e","preventDefault","handleSelectAll","parseDigits","inputType","handleNavKeys","trigger","withBackdrop","renderer","stopPropagation","selectFirstCounter","root","firstChild","positionTarget","closePopover","setProperty","updateCalendarView","popover","windowRect","body","getBoundingClientRect","inputRect","calendarRect","side","offset","availableLeft","left","availableRight","width","right","newOffset","abs","ele","onCalendarSubmit","_attachOverlay","bringToFront","_detachOverlay","_enterModalState","openPopover","setAttribute","removeAttribute","getCounterById","isReadOnly","calendarDate","getFullYear","getMonth","validInputVal","validate","clearValue","resetDisplay","setSelectionRange","onFormatUpdate","keys","includes","pattern","selectNextCounter","setInputSelectionRange","getCounterIdx","caretPos","counter1ln","counter2ln","indexOf","setSelectedCounterByCaretPosition","target","selectPrevCounter","caretStart","reduce","acc","counter","forEach","getUTCMonth","getUTCFullYear","getUTCDate","metaKey","ctrlKey","key","toLowerCase","onCut","handleBackspace","resetToInitialState","onInitialValueChange","togglePopoverAccess","visibility","classList","oldValue","newValue","yearCounter","isYearOutOfRange","isDateDisplayMismatch","entries","getDateVals","isRequired","valueMissing","patternMismatch","ret","day","month","year","Date","err","console","error","pastedData","clipboardData","window","getData","validDate","String"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@descope/web-components-ui",
3
- "version": "1.128.0",
3
+ "version": "1.130.0",
4
4
  "description": "",
5
5
  "main": "dist/cjs/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -77,8 +77,8 @@
77
77
  "lodash.merge": "4.6.2",
78
78
  "@descope-ui/common": "0.0.18",
79
79
  "@descope-ui/descope-button": "0.0.19",
80
- "@descope-ui/descope-image": "0.0.10",
81
80
  "@descope-ui/descope-outbound-app-button": "0.0.4",
81
+ "@descope-ui/descope-image": "0.0.10",
82
82
  "@descope-ui/descope-icon": "0.0.17",
83
83
  "@descope-ui/descope-text": "0.0.19",
84
84
  "@descope-ui/descope-avatar": "0.0.19",
@@ -215,6 +215,8 @@ class RawDateFieldClass extends BaseInputClass {
215
215
  this.updateDateCounters(newDate(value));
216
216
  } else {
217
217
  this.updateEpoch('');
218
+ this.resetDateCounters();
219
+ this.clearInputEle();
218
220
  }
219
221
  }
220
222
 
@@ -514,10 +516,14 @@ class RawDateFieldClass extends BaseInputClass {
514
516
  }
515
517
 
516
518
  if (this.inputElement.value === this.format) {
517
- this.inputElement.value = '';
519
+ this.clearInputEle();
518
520
  }
519
521
  }
520
522
 
523
+ clearInputEle() {
524
+ this.inputElement.value = '';
525
+ }
526
+
521
527
  onFormatUpdate(format) {
522
528
  if (Object.keys(formats).includes(format)) {
523
529
  this.format = format;