@kyndryl-design-system/shidoka-applications 2.71.3 → 2.71.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/reusable/checkbox/checkboxSubgroup.d.ts.map +1 -1
- package/components/reusable/checkbox/checkboxSubgroup.js +3 -3
- package/components/reusable/checkbox/checkboxSubgroup.js.map +1 -1
- package/components/reusable/timepicker/timepicker.d.ts +2 -0
- package/components/reusable/timepicker/timepicker.d.ts.map +1 -1
- package/components/reusable/timepicker/timepicker.js +5 -5
- package/components/reusable/timepicker/timepicker.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkboxSubgroup.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/checkbox/checkboxSubgroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAIlD;;;;GAIG;AACH,qBACa,gBAAiB,SAAQ,UAAU;IAC9C,OAAgB,MAAM,0BAAqB;IAE3C,gBAAgB;IAEhB,QAAQ,CAAC,OAAO,EAAG,GAAG,CAAC;IAEvB,gBAAgB;IAEhB,QAAQ,CAAC,SAAS,EAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAEvB,MAAM;IAWf,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"checkboxSubgroup.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/checkbox/checkboxSubgroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAIlD;;;;GAIG;AACH,qBACa,gBAAiB,SAAQ,UAAU;IAC9C,OAAgB,MAAM,0BAAqB;IAE3C,gBAAgB;IAEhB,QAAQ,CAAC,OAAO,EAAG,GAAG,CAAC;IAEvB,gBAAgB;IAEhB,QAAQ,CAAC,SAAS,EAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAEvB,MAAM;IAWf,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,qBAAqB;IAyCpB,iBAAiB;IASjB,oBAAoB;CAO9B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,uBAAuB,EAAE,gBAAgB,CAAC;KAC3C;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__setFunctionName as e,__esDecorate as t,__runInitializers as n,__classPrivateFieldGet as a,__classPrivateFieldSet as i}from"tslib";import{css as r,LitElement as c,unsafeCSS as l,html as
|
|
1
|
+
import{__setFunctionName as e,__esDecorate as t,__runInitializers as n,__classPrivateFieldGet as a,__classPrivateFieldSet as i}from"tslib";import{css as r,LitElement as c,unsafeCSS as l,html as h}from"lit";import{customElement as s,queryAssignedElements as o}from"lit/decorators.js";var d=r`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -42,12 +42,12 @@ slot[name=parent] {
|
|
|
42
42
|
|
|
43
43
|
.children {
|
|
44
44
|
padding-left: 26px;
|
|
45
|
-
}`;let m=(()=>{var r,m;let p,b,k,
|
|
45
|
+
}`;let m=(()=>{var r,m;let p,b,u,k,g=[s("kyn-checkbox-subgroup")],_=[],v=c,f=[],x=[],y=[],C=[];return b=class extends v{get _parent(){return a(this,r,"f")}set _parent(e){i(this,r,e,"f")}get _children(){return a(this,m,"f")}set _children(e){i(this,m,e,"f")}render(){return h`
|
|
46
46
|
<div class="toggle-button">
|
|
47
47
|
<slot name="parent" @slotchange=${this._handleSlotchange}></slot>
|
|
48
48
|
<div class="children">
|
|
49
49
|
<slot @slotchange=${this._handleSlotchange}></slot>
|
|
50
50
|
</div>
|
|
51
51
|
</div>
|
|
52
|
-
`}_handleSlotchange(){const e=this._children.filter((e=>e.checked)).length;this._syncParent(e)}_syncParent(e){this._parent[0].indeterminate=e<this._children.length&&e>0}_handleCheckboxChange(e){e.stopPropagation();const t=e.composedPath().find((e=>"SLOT"===e.nodeName&&"parent"===e.getAttribute("name")));let n=this._children.filter((e=>e.checked)).length;t
|
|
52
|
+
`}_handleSlotchange(){const e=this._children.filter((e=>e.checked)).length;this._syncParent(e)}_syncParent(e){var t;const n=null===(t=this._parent)||void 0===t?void 0:t[0];n&&(n.checked=this._children.length>0&&e===this._children.length,n.indeterminate=e<this._children.length&&e>0)}_handleCheckboxChange(e){e.stopPropagation();const t=e.composedPath().find((e=>"SLOT"===e.nodeName&&"parent"===e.getAttribute("name")));let n=this._children.filter((e=>e.checked)).length;t&&(n=e.detail.checked?this._children.length:0),this._syncParent(n);const a=this._children.map((e=>e.value)),i=this._children.length>0&&n===this._children.length,r=new CustomEvent("on-checkbox-subgroup-change",{bubbles:!0,composed:!0,detail:{isParent:t,parentChecked:i,parentValue:this._parent[0].value,checked:e.detail.checked,value:e.detail.value,childValues:a}});this.dispatchEvent(r)}connectedCallback(){super.connectedCallback(),this.addEventListener("on-checkbox-change",(e=>this._handleCheckboxChange(e)))}disconnectedCallback(){this.removeEventListener("on-checkbox-change",(e=>this._handleCheckboxChange(e))),super.disconnectedCallback()}constructor(){super(...arguments),r.set(this,n(this,f,void 0)),m.set(this,(n(this,x),n(this,y,void 0))),n(this,C)}},r=new WeakMap,m=new WeakMap,e(b,"CheckboxSubgroup"),(()=>{var e;const n="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=v[Symbol.metadata])&&void 0!==e?e:null):void 0;u=[o({slot:"parent",selector:"kyn-checkbox"})],k=[o({selector:"kyn-checkbox"})],t(b,null,u,{kind:"accessor",name:"_parent",static:!1,private:!1,access:{has:e=>"_parent"in e,get:e=>e._parent,set:(e,t)=>{e._parent=t}},metadata:n},f,x),t(b,null,k,{kind:"accessor",name:"_children",static:!1,private:!1,access:{has:e=>"_children"in e,get:e=>e._children,set:(e,t)=>{e._children=t}},metadata:n},y,C),t(null,p={value:b},g,{kind:"class",name:b.name,metadata:n},null,_),b=p.value,n&&Object.defineProperty(b,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:n})})(),b.styles=l(d),n(b,_),b})();export{m as CheckboxSubgroup};
|
|
53
53
|
//# sourceMappingURL=checkboxSubgroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkboxSubgroup.js","sources":["../../../../src/components/reusable/checkbox/checkboxSubgroup.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, queryAssignedElements } from 'lit/decorators.js';\nimport Styles from './checkboxSubgroup.scss?inline';\n\n/**\n * Checkbox subgroup\n * @slot unnamed - Slot for child kyn-checkboxes.\n * @slot parent - Slot for parent kyn-checkbox.\n */\n@customElement('kyn-checkbox-subgroup')\nexport class CheckboxSubgroup extends LitElement {\n static override styles = unsafeCSS(Styles);\n\n /** @internal */\n @queryAssignedElements({ slot: 'parent', selector: 'kyn-checkbox' })\n accessor _parent!: any;\n\n /** @internal */\n @queryAssignedElements({ selector: 'kyn-checkbox' })\n accessor _children!: Array<any>;\n\n override render() {\n return html`\n <div class=\"toggle-button\">\n <slot name=\"parent\" @slotchange=${this._handleSlotchange}></slot>\n <div class=\"children\">\n <slot @slotchange=${this._handleSlotchange}></slot>\n </div>\n </div>\n `;\n }\n\n private _handleSlotchange() {\n const CheckedBoxesCount = this._children.filter(\n (checkbox) => checkbox.checked\n ).length;\n\n this._syncParent(CheckedBoxesCount);\n }\n\n private _syncParent(count: number) {\n //
|
|
1
|
+
{"version":3,"file":"checkboxSubgroup.js","sources":["../../../../src/components/reusable/checkbox/checkboxSubgroup.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, queryAssignedElements } from 'lit/decorators.js';\nimport Styles from './checkboxSubgroup.scss?inline';\n\n/**\n * Checkbox subgroup\n * @slot unnamed - Slot for child kyn-checkboxes.\n * @slot parent - Slot for parent kyn-checkbox.\n */\n@customElement('kyn-checkbox-subgroup')\nexport class CheckboxSubgroup extends LitElement {\n static override styles = unsafeCSS(Styles);\n\n /** @internal */\n @queryAssignedElements({ slot: 'parent', selector: 'kyn-checkbox' })\n accessor _parent!: any;\n\n /** @internal */\n @queryAssignedElements({ selector: 'kyn-checkbox' })\n accessor _children!: Array<any>;\n\n override render() {\n return html`\n <div class=\"toggle-button\">\n <slot name=\"parent\" @slotchange=${this._handleSlotchange}></slot>\n <div class=\"children\">\n <slot @slotchange=${this._handleSlotchange}></slot>\n </div>\n </div>\n `;\n }\n\n private _handleSlotchange() {\n const CheckedBoxesCount = this._children.filter(\n (checkbox) => checkbox.checked\n ).length;\n\n this._syncParent(CheckedBoxesCount);\n }\n\n private _syncParent(count: number) {\n const parent = this._parent?.[0];\n if (!parent) return;\n\n // checked when all children are checked, otherwise unchecked\n parent.checked =\n this._children.length > 0 && count === this._children.length;\n\n // indeterminate when some (but not all) children are checked\n parent.indeterminate = count < this._children.length && count > 0;\n }\n\n private _handleCheckboxChange(e: any) {\n e.stopPropagation();\n\n const isParent = e\n .composedPath()\n .find(\n (el: HTMLElement) =>\n el.nodeName === 'SLOT' && el.getAttribute('name') === 'parent'\n );\n let checkedBoxesCount = this._children.filter(\n (checkbox) => checkbox.checked\n ).length;\n\n if (isParent) {\n checkedBoxesCount = e.detail.checked ? this._children.length : 0;\n }\n\n this._syncParent(checkedBoxesCount);\n\n const ChildValues = this._children.map((checkbox) => {\n return checkbox.value;\n });\n\n const ParentChecked =\n this._children.length > 0 && checkedBoxesCount === this._children.length;\n\n const event = new CustomEvent('on-checkbox-subgroup-change', {\n bubbles: true,\n composed: true,\n detail: {\n isParent: isParent,\n parentChecked: ParentChecked,\n parentValue: this._parent[0].value,\n checked: e.detail.checked,\n value: e.detail.value,\n childValues: ChildValues,\n },\n });\n this.dispatchEvent(event);\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n // capture child checkboxes change event\n this.addEventListener('on-checkbox-change', (e: any) =>\n this._handleCheckboxChange(e)\n );\n }\n\n override disconnectedCallback() {\n this.removeEventListener('on-checkbox-change', (e: any) =>\n this._handleCheckboxChange(e)\n );\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-checkbox-subgroup': CheckboxSubgroup;\n }\n}\n"],"names":["CheckboxSubgroup","customElement","LitElement","_classThis","_classSuper","_parent","__classPrivateFieldGet","this","_CheckboxSubgroup__parent_accessor_storage","value","__classPrivateFieldSet","_children","_CheckboxSubgroup__children_accessor_storage","render","html","_handleSlotchange","CheckedBoxesCount","filter","checkbox","checked","length","_syncParent","count","parent","_a","indeterminate","_handleCheckboxChange","e","stopPropagation","isParent","composedPath","find","el","nodeName","getAttribute","checkedBoxesCount","detail","ChildValues","map","ParentChecked","event","CustomEvent","bubbles","composed","parentChecked","parentValue","childValues","dispatchEvent","connectedCallback","super","addEventListener","disconnectedCallback","removeEventListener","set","__runInitializers","__parent_initializers","__parent_extraInitializers","__children_initializers","queryAssignedElements","slot","selector","__children_decorators","__esDecorate","__parent_decorators","kind","name","static","private","access","has","obj","get","metadata","_metadata","__children_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","Styles"],"mappings":"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"}
|
|
@@ -144,6 +144,8 @@ export declare class TimePicker extends TimePicker_base {
|
|
|
144
144
|
* @internal
|
|
145
145
|
*/
|
|
146
146
|
private _isDestroyed;
|
|
147
|
+
/** Track visibility polling timeout ID. */
|
|
148
|
+
private _visibilityPollTimeoutId;
|
|
147
149
|
/** Track when legacy/default values are being applied to avoid feedback loops.
|
|
148
150
|
* @internal
|
|
149
151
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timepicker.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/timepicker/timepicker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"timepicker.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/timepicker/timepicker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{__setFunctionName as t,__esDecorate as e,__runInitializers as i,__classPrivateFieldGet as a,__classPrivateFieldSet as s}from"tslib";import{css as n,LitElement as r,unsafeCSS as l,html as o}from"lit";import{customElement as d,property as c,state as h,query as u}from"lit/decorators.js";import{classMap as p}from"lit/directives/class-map.js";import{FormMixin as m}from"../../../common/mixins/form-input.js";import"../button/button.js";import{injectFlatpickrStyles as f,clearFlatpickrInput as
|
|
1
|
+
import{__setFunctionName as t,__esDecorate as e,__runInitializers as i,__classPrivateFieldGet as a,__classPrivateFieldSet as s}from"tslib";import{css as n,LitElement as r,unsafeCSS as l,html as o}from"lit";import{customElement as d,property as c,state as h,query as u}from"lit/decorators.js";import{classMap as p}from"lit/directives/class-map.js";import{FormMixin as m}from"../../../common/mixins/form-input.js";import"../button/button.js";import{injectFlatpickrStyles as f,clearFlatpickrInput as v,emitValue as k,initializeSingleAnchorFlatpickr as g,getModalContainer as b,setCalendarAttributes as y,hideEmptyYear as x,getFlatpickrOptions as w,handleInputClick as _,handleInputFocus as I,loadLocale as S}from"../../../common/helpers/flatpickr.js";import{c as E}from"../../../shidoka-flatpickr-theme-DpNQHCIC.js";import{unsafeSVG as z}from"lit-html/directives/unsafe-svg.js";import{c as T,v as F,r as C}from"../../../vendor/@kyndryl-design-system/shidoka-icons-oqOblwTK.js";import"lit/directives/if-defined.js";import"lit-html/directives/class-map.js";import"../../../common/helpers/helpers.js";import"../button/defs.js";import"flatpickr";import"flatpickr/dist/esm/plugins/rangePlugin";import"flatpickr/dist/esm/l10n/default.js";import"../../../common/flatpickrLangs.js";import"../../../common/helpers/flatpickrOverlayPosition.js";var M=n`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -599,7 +599,7 @@ input {
|
|
|
599
599
|
}
|
|
600
600
|
.time-picker__disabled .input-custom {
|
|
601
601
|
pointer-events: none;
|
|
602
|
-
}`;const $={requiredText:"Required",clearAll:"Clear",pleaseSelectDate:"Please select a date",noTimeSelected:"No time selected",pleaseSelectValidDate:"Please select a valid date",lockedStartDate:"Start date is locked",lockedEndDate:"End date is locked",dateLocked:"Date is locked",dateNotAvailable:"Date is not available",dateInSelectedRange:"Date is in selected range"};let D=(()=>{var n,D,H,L,V,N,W,A,q,O,R,j,
|
|
602
|
+
}`;const $={requiredText:"Required",clearAll:"Clear",pleaseSelectDate:"Please select a date",noTimeSelected:"No time selected",pleaseSelectValidDate:"Please select a valid date",lockedStartDate:"Start date is locked",lockedEndDate:"End date is locked",dateLocked:"Date is locked",dateNotAvailable:"Date is not available",dateInSelectedRange:"Date is in selected range"};let D=(()=>{var n,D,H,L,V,N,W,A,q,O,P,R,j,B,U,Y,K,G,J,Q,X,Z,tt,et,it,at,st,nt,rt;let lt,ot,dt,ct,ht,ut,pt,mt,ft,vt,kt,gt,bt,yt,xt,wt,_t,It,St,Et,zt,Tt,Ft,Ct,Mt,$t,Dt,Ht,Lt,Vt,Nt,Wt=[d("kyn-time-picker")],At=[],qt=m(r),Ot=[],Pt=[],Rt=[],jt=[],Bt=[],Ut=[],Yt=[],Kt=[],Gt=[],Jt=[],Qt=[],Xt=[],Zt=[],te=[],ee=[],ie=[],ae=[],se=[],ne=[],re=[],le=[],oe=[],de=[],ce=[],he=[],ue=[],pe=[],me=[],fe=[],ve=[],ke=[],ge=[],be=[],ye=[],xe=[],we=[],_e=[],Ie=[],Se=[],Ee=[],ze=[],Te=[],Fe=[],Ce=[],Me=[],$e=[],De=[],He=[],Le=[],Ve=[],Ne=[],We=[],Ae=[],qe=[],Oe=[],Pe=[],Re=[],je=[];return ot=class extends qt{constructor(){super(...arguments),n.set(this,i(this,Ot,"")),D.set(this,(i(this,Pt),i(this,Rt,"en"))),H.set(this,(i(this,jt),i(this,Bt,null))),L.set(this,(i(this,Ut),i(this,Yt,null))),V.set(this,(i(this,Kt),i(this,Gt,null))),N.set(this,(i(this,Jt),i(this,Qt,!1))),this.value=(i(this,Xt),null),W.set(this,i(this,Zt,"")),A.set(this,(i(this,te),i(this,ee,""))),q.set(this,(i(this,ie),i(this,ae,""))),O.set(this,(i(this,se),i(this,ne,!1))),P.set(this,(i(this,re),i(this,le,"md"))),R.set(this,(i(this,oe),i(this,de,!1))),j.set(this,(i(this,ce),i(this,he,!1))),B.set(this,(i(this,ue),i(this,pe,null))),U.set(this,(i(this,me),i(this,fe,!1))),Y.set(this,(i(this,ve),i(this,ke,""))),K.set(this,(i(this,ge),i(this,be,""))),G.set(this,(i(this,ye),i(this,xe,""))),J.set(this,(i(this,we),i(this,_e,""))),Q.set(this,(i(this,Ie),i(this,Se,""))),X.set(this,(i(this,Ee),i(this,ze,""))),Z.set(this,(i(this,Te),i(this,Fe,!1))),tt.set(this,(i(this,Ce),i(this,Me,!1))),et.set(this,(i(this,$e),i(this,De,void 0))),it.set(this,(i(this,He),i(this,Le,null))),at.set(this,(i(this,Ve),i(this,Ne,!1))),st.set(this,(i(this,We),i(this,Ae,!1))),nt.set(this,(i(this,qe),i(this,Oe,$))),rt.set(this,(i(this,Pe),i(this,Re,{...$}))),this._shouldFlatpickrOpen=(i(this,je),!0),this._isFromFlatpickr=!1,this._initialized=!1,this._isDestroyed=!1,this._visibilityPollTimeoutId=null,this._applyingDefaults=!1,this._anchorId=null,this._submitListener=null,this.debouncedUpdate=this.debounce((async()=>{if(this.flatpickrInstance&&!this._isDestroyed&&!this.flatpickrInstance.isOpen)try{await this.initializeFlatpickr()}catch(t){console.error("Error in debounced update:",t)}}),100)}get label(){return a(this,n,"f")}set label(t){s(this,n,t,"f")}get locale(){return a(this,D,"f")}set locale(t){s(this,D,t,"f")}get defaultHour(){return a(this,H,"f")}set defaultHour(t){s(this,H,t,"f")}get defaultMinute(){return a(this,L,"f")}set defaultMinute(t){s(this,L,t,"f")}get defaultSeconds(){return a(this,V,"f")}set defaultSeconds(t){s(this,V,t,"f")}get allowManualInput(){return a(this,N,"f")}set allowManualInput(t){s(this,N,t,"f")}get defaultErrorMessage(){return a(this,W,"f")}set defaultErrorMessage(t){s(this,W,t,"f")}get warnText(){return a(this,A,"f")}set warnText(t){s(this,A,t,"f")}get caption(){return a(this,q,"f")}set caption(t){s(this,q,t,"f")}get required(){return a(this,O,"f")}set required(t){s(this,O,t,"f")}get size(){return a(this,P,"f")}set size(t){s(this,P,t,"f")}get timepickerDisabled(){return a(this,R,"f")}set timepickerDisabled(t){s(this,R,t,"f")}get readonly(){return a(this,j,"f")}set readonly(t){s(this,j,t,"f")}get twentyFourHourFormat(){return a(this,B,"f")}set twentyFourHourFormat(t){s(this,B,t,"f")}get enableSeconds(){return a(this,U,"f")}set enableSeconds(t){s(this,U,t,"f")}get minTime(){return a(this,Y,"f")}set minTime(t){s(this,Y,t,"f")}get maxTime(){return a(this,K,"f")}set maxTime(t){s(this,K,t,"f")}get errorAriaLabel(){return a(this,G,"f")}set errorAriaLabel(t){s(this,G,t,"f")}get errorTitle(){return a(this,J,"f")}set errorTitle(t){s(this,J,t,"f")}get warningAriaLabel(){return a(this,Q,"f")}set warningAriaLabel(t){s(this,Q,t,"f")}get warningTitle(){return a(this,X,"f")}set warningTitle(t){s(this,X,t,"f")}get staticPosition(){return a(this,Z,"f")}set staticPosition(t){s(this,Z,t,"f")}get _hasInteracted(){return a(this,tt,"f")}set _hasInteracted(t){s(this,tt,t,"f")}get flatpickrInstance(){return a(this,et,"f")}set flatpickrInstance(t){s(this,et,t,"f")}get _inputEl(){return a(this,it,"f")}set _inputEl(t){s(this,it,t,"f")}get _isClearing(){return a(this,at,"f")}set _isClearing(t){s(this,at,t,"f")}get _userHasCleared(){return a(this,st,"f")}set _userHasCleared(t){s(this,st,t,"f")}get textStrings(){return a(this,nt,"f")}set textStrings(t){s(this,nt,t,"f")}get _textStrings(){return a(this,rt,"f")}set _textStrings(t){s(this,rt,t,"f")}debounce(t,e){let i=null;return(...a)=>{null!==i&&window.clearTimeout(i),i=window.setTimeout((()=>{t(...a),i=null}),e)}}generateRandomId(t){return`${t}-${Math.random().toString(36).slice(2,11)}`}parseTimeString(t){if(t instanceof Date)return t;if("number"==typeof t){const e=new Date(t);return Number.isNaN(e.getTime())?null:e}if("string"==typeof t){const e=t.trim(),i=/^(\d{1,2}):(\d{2})(?::(\d{2}))?\s*([ap]m)?$/i.exec(e);if(!i)return null;let a=Number(i[1]);const s=Number(i[2]),n=void 0!==i[3]?Number(i[3]):0,r=i[4];if(Number.isNaN(a)||Number.isNaN(s)||Number.isNaN(n))return null;if(r){const t=r.toLowerCase();"pm"===t&&a<12&&(a+=12),"am"===t&&12===a&&(a=0)}if(a<0||a>23||s<0||s>59||n<0||n>59)return null;const l=new Date;return l.setHours(a,s,n,0),l}return null}_timesEqual(t,e){return!t&&!e||!(!t||!e)&&(t.getHours()===e.getHours()&&t.getMinutes()===e.getMinutes()&&t.getSeconds()===e.getSeconds())}_incomingValueToDate(t){if(null==t)return null;if(t instanceof Date)return Number.isNaN(t.getTime())?null:t;if("string"==typeof t){const e=t.trim();if(!e)return null;const i=/\d{4}-\d{2}-\d{2}/.test(e)?new Date(e):this.parseTimeString(e);return i&&!Number.isNaN(i.getTime())?i:null}return null}connectedCallback(){super.connectedCallback(),this.addEventListener("change",this._onChange),this.addEventListener("reset",this._handleFormReset),this._internals.form&&(this._submitListener=t=>{this._validate(!0,!0),this.required&&!this.hasValue()&&t.preventDefault()},this._internals.form.addEventListener("submit",this._submitListener))}hasValue(){return Boolean(this.value)||!this._userHasCleared&&(null!==this.defaultHour||null!==this.defaultMinute)}updateFormValue(){this._internals&&this._inputEl&&this._internals.setFormValue(this._inputEl.value)}render(){var t,e,i,a;const s=`${this.name}-error-message`,n=`${this.name}-warning-message`,r=null!==(t=this._anchorId)&&void 0!==t?t:this._anchorId=this.name?this.generateRandomId(this.name):this.generateRandomId("time-picker"),l=null!==(e=this.name)&&void 0!==e?e:"",d=this.enableSeconds?"—— : —— : ——":"—— : ——";return o`
|
|
603
603
|
<div class=${p(this.getTimepickerClasses())}>
|
|
604
604
|
<div
|
|
605
605
|
class="label-text"
|
|
@@ -647,7 +647,7 @@ input {
|
|
|
647
647
|
@click=${this._handleClear}
|
|
648
648
|
>
|
|
649
649
|
<span style="display:flex" slot="icon">
|
|
650
|
-
${z(
|
|
650
|
+
${z(T)}
|
|
651
651
|
</span>
|
|
652
652
|
</kyn-button>
|
|
653
653
|
`:o`<span
|
|
@@ -655,7 +655,7 @@ input {
|
|
|
655
655
|
aria-hidden="true"
|
|
656
656
|
@click=${this.handleInputClickEvent}
|
|
657
657
|
>
|
|
658
|
-
${z(
|
|
658
|
+
${z(F)}
|
|
659
659
|
</span>`}
|
|
660
660
|
</div>
|
|
661
661
|
${this.caption?o`<div
|
|
@@ -695,5 +695,5 @@ input {
|
|
|
695
695
|
@click=${this.onSuppressLabelInteraction}
|
|
696
696
|
>
|
|
697
697
|
${this.warnText}
|
|
698
|
-
</div>`:null}getRawValue(){return this.value}getTimepickerClasses(){return{"time-picker":!0,"time-picker__disabled":this.timepickerDisabled}}_padSecondsForInput(t){const e=null!=t?t:this._inputEl,i=this.enableSeconds||null!==this.defaultSeconds;if(!e||!i)return;const a=(e.value||"").trim();if(!a)return;const s=a.match(/^(.*?)(\d{1,2}):(\d{2})(?::(\d{1,2}))?(\s*[AP]M)?(.*)$/i);if(!s)return;const n=`${s[1]||""}${s[2]}:${s[3]}:${void 0!==s[4]?s[4].padStart(2,"0"):"00"}${s[5]||""}${s[6]||""}`.trim();if(n!==e.value){e.value=n;try{this.updateFormValue()}catch(t){}}}async syncFlatpickrFromHostValue(){var t,e,i,a;if(!this.flatpickrInstance)return;const s=this.getRawValue();try{null===(e=(t=this.flatpickrInstance).redraw)||void 0===e||e.call(t),s&&"string"!=typeof s?(this.flatpickrInstance.setDate(s,!0),this._padSecondsForInput(null!==(i=this.flatpickrInstance.input)&&void 0!==i?i:void 0)):"string"==typeof s&&""!==s.trim()?(this.flatpickrInstance.setDate(s,!0),this._padSecondsForInput(null!==(a=this.flatpickrInstance.input)&&void 0!==a?a:void 0)):null===s&&(this.flatpickrInstance.clear(),this._inputEl&&(this._inputEl.value="",this.updateFormValue()))}catch(t){console.warn("Error syncing flatpickr from host value:",t)}}async firstUpdated(t){if(super.firstUpdated(t),!this._initialized){f(E.toString()),this._initialized=!0,await this.updateComplete;let t=this.isElementVisible();t&&await this.setupAnchor();const e=async()=>{if(this._isDestroyed)return;const i=this.isElementVisible();!t&&i&&(this.flatpickrInstance?await this.syncFlatpickrFromHostValue():await this.setupAnchor()),t=i,i||setTimeout(e,250)};t||setTimeout(e,250)}}isElementVisible(){try{if(!this.isConnected)return!1;const t=this,e=t.getClientRects();if(!e||0===e.length)return!1;const i=window.getComputedStyle(t);return"none"!==i.display&&"hidden"!==i.visibility&&"0"!==i.opacity}catch(t){return!1}}updated(t){var e,i,a;if(super.updated(t),!this._applyingDefaults){if(t.has("textStrings")&&(this._textStrings={...$,...this.textStrings}),(t.has("defaultHour")||t.has("defaultMinute")||t.has("defaultSeconds")||t.has("invalidText")||t.has("minTime")||t.has("maxTime")||t.has("twentyFourHourFormat")||t.has("enableSeconds"))&&this.flatpickrInstance&&!this._isClearing&&this.debouncedUpdate(),t.has("value")&&!this._isClearing&&!this._isFromFlatpickr){const t=this.value;if(!this.flatpickrInstance)return;const a=this._incomingValueToDate(t),s=null!==(i=null===(e=this.flatpickrInstance.selectedDates)||void 0===e?void 0:e[0])&&void 0!==i?i:null;if(a&&s&&this._timesEqual(a,s))return void(this._inputEl&&this.flatpickrInstance.input&&(this._inputEl.value=this.flatpickrInstance.input.value,this._padSecondsForInput(this._inputEl),this.updateFormValue()));const n=(this.renderRoot instanceof ShadowRoot?this.renderRoot.activeElement:document.activeElement)===this._inputEl;this._isFromFlatpickr=!0;try{if(null==t||"string"==typeof t&&""===t.trim()){this._isClearing=!0;try{this.flatpickrInstance.clear(),this._inputEl&&(this._inputEl.value="")}finally{this._isClearing=!1}}else if(t instanceof Date)this.flatpickrInstance.setDate(t,!0);else if("string"==typeof t){const e=t.trim(),i=/\d{4}-\d{2}-\d{2}/.test(e)?new Date(e):this.parseTimeString(e);i&&!Number.isNaN(i.getTime())&&this.flatpickrInstance.setDate(i,!0)}this._inputEl&&this.flatpickrInstance.input&&(this._inputEl.value=this.flatpickrInstance.input.value),this._inputEl&&(this._padSecondsForInput(this._inputEl),this.updateFormValue())}finally{this._isFromFlatpickr=!1}n&&queueMicrotask((()=>{var t;return null===(t=this._inputEl)||void 0===t?void 0:t.focus({preventScroll:!0})}))}(t.has("timepickerDisabled")&&this.timepickerDisabled||t.has("readonly")&&this.readonly)&&(null===(a=this.flatpickrInstance)||void 0===a||a.close())}}async _handleClear(t){var e;t.preventDefault(),t.stopPropagation(),this._isClearing=!0,this._userHasCleared=!0;try{this.value=null,await k(this.flatpickrInstance,null!==(e=this._inputEl)&&void 0!==e?e:void 0,(()=>{this._inputEl&&(this._inputEl.setAttribute("aria-label",this._textStrings.noTimeSelected),this.updateFormValue())})),v(this,"on-change",{time:null,date:null,source:"clear"}),this._validate(!0,!1),queueMicrotask((()=>{var t;(null===(t=this.flatpickrInstance)||void 0===t?void 0:t.isOpen)||this.initializeFlatpickr()}))}finally{this._isClearing=!1}}async setupAnchor(){if(this._inputEl)try{await this.initializeFlatpickr()}catch(t){console.error("Error setting up flatpickr:",t)}}removeCalendarElement(t){try{const e=null!=t?t:this._anchorId;if(e){const t=document.querySelector(`[data-kyn-timepicker-id="${e}"]`);t&&t.parentNode&&t.parentNode.removeChild(t)}}catch(t){}}async initializeFlatpickr(){if(this._isDestroyed)return;if(!this._inputEl||!this._inputEl.isConnected)return void console.warn("Cannot initialize Flatpickr: input element not available or not connected to DOM");const t=this._inputEl;try{if(this.flatpickrInstance){const t=this.flatpickrInstance.__anchorClickHandlers;Array.isArray(t)&&t.forEach((t=>{try{t.el.removeEventListener("click",t.fn)}catch(t){}})),this.flatpickrInstance.destroy();try{this.removeCalendarElement()}catch(t){}this.flatpickrInstance=void 0,await new Promise((t=>setTimeout(t,0)))}if(this._isDestroyed||!t.isConnected)return;if(await new Promise((t=>requestAnimationFrame(t))),this._isDestroyed||!t.isConnected)return;if(this.flatpickrInstance=await g({inputEl:t,getFlatpickrOptions:async()=>{const t=await this.getComponentFlatpickrOptions();return!1===t.noCalendar&&(t.noCalendar=!0),t},setCalendarAttributes:t=>{var e;try{const i=b(this)!==document.body;if(y(t,i),t.calendarContainer){const i=null!==(e=this._anchorId)&&void 0!==e?e:this._anchorId=this.generateRandomId("time-picker");try{t.calendarContainer.dataset.kynTimepickerId=i}catch(t){}t.calendarContainer.setAttribute("aria-label","Time picker")}}catch(t){console.error("Error setting calendar attributes:",t)}},setInitialDates:this.setInitialDates.bind(this)}),!this.flatpickrInstance)throw new Error("Failed to initialize Flatpickr instance");x(),this._validate(!1,!1)}catch(t){console.error("Error initializing Flatpickr:",t),t instanceof Error&&console.error("Error details:",t.message)}}async updateFlatpickrOptions(){this.flatpickrInstance?await this.debouncedUpdate():console.warn("Cannot update options: Flatpickr instance not available")}async getComponentFlatpickrOptions(){var t;if(!this._inputEl)return{};const e=b(this);let i,a="";const s=this.getRawValue();if(s&&"string"!=typeof s)i=new Date(s.getTime());else if("string"==typeof s&&""!==s.trim()){const t=this.parseTimeString(s);t&&(i=t)}const n=this.enableSeconds||null!=i&&0!==i.getSeconds();return a=this.twentyFourHourFormat?n?"H:i:S":"H:i":n?"h:i:S K":"h:i K",w({locale:this.locale,enableTime:!0,twentyFourHourFormat:null!==(t=this.twentyFourHourFormat)&&void 0!==t?t:void 0,inputEl:this._inputEl,allowInput:!0,dateFormat:a,minTime:this.minTime,maxTime:this.maxTime,loadLocale:S,mode:"time",noCalendar:!0,onChange:this.handleTimeChange.bind(this),onClose:this.handleClose.bind(this),onOpen:this.handleOpen.bind(this),appendTo:e,static:this.staticPosition,defaultDate:i})}setInitialDates(t){var e,i;try{const a=this.getRawValue();if(a&&"string"!=typeof a)t.setDate(a,!1);else if("string"==typeof a&&""!==a.trim())t.setDate(a,!1);else if(!this._userHasCleared&&(null!==this.defaultHour||null!==this.defaultMinute)&&null==a){const i=new Date;null!==this.defaultHour&&i.setHours(this.defaultHour),null!==this.defaultMinute&&i.setMinutes(this.defaultMinute);const a=(this.enableSeconds||null!==this.defaultSeconds)&&null!==(e=this.defaultSeconds)&&void 0!==e?e:0;i.setSeconds(a),i.setMilliseconds(0),t.setDate(i,!1)}this._padSecondsForInput(null!==(i=t.input)&&void 0!==i?i:void 0)}catch(t){console.error("Error setting initial time:",t)}}handleOpen(){var t,e;this.readonly?null===(t=this.flatpickrInstance)||void 0===t||t.close():this._shouldFlatpickrOpen||(null===(e=this.flatpickrInstance)||void 0===e||e.close(),this._shouldFlatpickrOpen=!0)}getValue(){var t;if(null===(t=this.flatpickrInstance)||void 0===t?void 0:t.selectedDates[0])return this.flatpickrInstance.selectedDates[0];const e=this.getRawValue();return e&&"string"!=typeof e?e:"string"==typeof e&&""!==e.trim()?this.parseTimeString(e):null}async handleClose(){this._hasInteracted=!0,this._validate(!0,!1),await this.updateComplete}async handleTimeChange(t,e){if(this._isClearing)return;this._hasInteracted=!0;const i=(this.renderRoot instanceof ShadowRoot?this.renderRoot.activeElement:document.activeElement)===this._inputEl;this._isFromFlatpickr=!0;try{if(t.length>0){this._userHasCleared=!1;const i=t[0],a=new Date;a.setHours(i.getHours()),a.setMinutes(i.getMinutes()),a.setSeconds(i.getSeconds()),a.setMilliseconds(0),this.value=a,v(this,"on-change",{time:e||null,date:a})}else this._userHasCleared=!0,this.value=null,v(this,"on-change",{time:null,date:null,source:"clear"})}finally{await this.updateComplete,this._isFromFlatpickr=!1}this._validate(!0,!1),this._inputEl&&(this.updateFormValue(),this._padSecondsForInput(this._inputEl)),i&&requestAnimationFrame((()=>{var t;null===(t=this._inputEl)||void 0===t||t.focus({preventScroll:!0})}))}_validate(t,e){if(!(this._inputEl&&this._inputEl instanceof HTMLInputElement))return;if(this.timepickerDisabled)return this._internals.setValidity({},"",this._inputEl),this._isInvalid=!1,void(this._internalValidationMsg="");t&&(this._hasInteracted=!0);const i=!this._userHasCleared&&(null!==this.defaultHour||null!==this.defaultMinute),a=!this._inputEl.value.trim()&&!i,s=this.required;let n=this._inputEl.validity,r=this._inputEl.validationMessage;s&&a&&(n={...n,valueMissing:!0},r=this.defaultErrorMessage||this._textStrings.pleaseSelectDate),this.invalidText&&(n={...n,customError:!0},r=this.invalidText);const l=!n.valueMissing&&!n.customError;l||r||(r=this._textStrings.pleaseSelectValidDate),this._internals.setValidity(n,r,this._inputEl),this._isInvalid=!l&&(this._hasInteracted||""!==this.invalidText),this._internalValidationMsg=r,e&&this._internals.reportValidity()}_onChange(){this._validate(!0,!1)}_handleFormReset(){this.value=null,this._userHasCleared=!1,this.flatpickrInstance&&this.flatpickrInstance.clear(),this._hasInteracted=!1,this._validate(!1,!1)}setShouldFlatpickrOpen(t){this._shouldFlatpickrOpen=t}closeFlatpickr(){var t;null===(t=this.flatpickrInstance)||void 0===t||t.close()}onSuppressLabelInteraction(t){t.stopPropagation(),this.setShouldFlatpickrOpen(!1)}handleInputClickEvent(){_(this.setShouldFlatpickrOpen.bind(this))}handleInputFocusEvent(){I(this._shouldFlatpickrOpen,this.closeFlatpickr.bind(this),this.setShouldFlatpickrOpen.bind(this))}disconnectedCallback(){if(this._isDestroyed=!0,super.disconnectedCallback(),this.removeEventListener("change",this._onChange),this.removeEventListener("reset",this._handleFormReset),this._internals.form&&this._submitListener&&(this._internals.form.removeEventListener("submit",this._submitListener),this._submitListener=null),this.flatpickrInstance){const t=this.flatpickrInstance.__anchorClickHandlers;Array.isArray(t)&&t.forEach((t=>{try{t.el.removeEventListener("click",t.fn)}catch(t){}})),this.flatpickrInstance.destroy();try{this.removeCalendarElement()}catch(t){}this.flatpickrInstance=void 0}}setValue(t){var e,i;this._isClearing=null===t;try{if(this.flatpickrInstance){t?this.flatpickrInstance.setDate(t,!0):this.flatpickrInstance.clear();const a=null!==(i=null===(e=this.flatpickrInstance.input)||void 0===e?void 0:e.value)&&void 0!==i?i:"";this.value=a||null,this._inputEl&&(this._inputEl.value=a)}else this.value=t;this._inputEl&&(this.flatpickrInstance||(this._inputEl.value="string"==typeof this.value?this.value:""),this.updateFormValue())}finally{this._isClearing=!1}}},n=new WeakMap,D=new WeakMap,H=new WeakMap,L=new WeakMap,V=new WeakMap,N=new WeakMap,W=new WeakMap,A=new WeakMap,q=new WeakMap,O=new WeakMap,R=new WeakMap,j=new WeakMap,P=new WeakMap,B=new WeakMap,U=new WeakMap,Y=new WeakMap,K=new WeakMap,G=new WeakMap,J=new WeakMap,Q=new WeakMap,X=new WeakMap,Z=new WeakMap,tt=new WeakMap,et=new WeakMap,it=new WeakMap,at=new WeakMap,st=new WeakMap,nt=new WeakMap,rt=new WeakMap,t(ot,"TimePicker"),(()=>{var t;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(t=qt[Symbol.metadata])&&void 0!==t?t:null):void 0;dt=[c({type:String})],ct=[c({type:String})],ht=[c({type:Number,reflect:!0})],ut=[c({type:Number,reflect:!0})],pt=[c({type:Number,reflect:!0})],mt=[c({type:Boolean})],ft=[c({type:String})],kt=[c({type:String})],vt=[c({type:String})],gt=[c({type:Boolean})],bt=[c({type:String})],yt=[c({type:Boolean})],xt=[c({type:Boolean})],wt=[c({type:Boolean})],_t=[c({type:Boolean})],It=[c({type:String})],St=[c({type:String})],Et=[c({type:String})],zt=[c({type:String})],Ft=[c({type:String})],Tt=[c({type:String})],Ct=[c({type:Boolean})],Mt=[h()],$t=[h()],Dt=[u("input.input-custom")],Ht=[h()],Lt=[h()],Vt=[c({type:Object})],Nt=[h()],e(ot,null,dt,{kind:"accessor",name:"label",static:!1,private:!1,access:{has:t=>"label"in t,get:t=>t.label,set:(t,e)=>{t.label=e}},metadata:i},Ot,Rt),e(ot,null,ct,{kind:"accessor",name:"locale",static:!1,private:!1,access:{has:t=>"locale"in t,get:t=>t.locale,set:(t,e)=>{t.locale=e}},metadata:i},jt,Pt),e(ot,null,ht,{kind:"accessor",name:"defaultHour",static:!1,private:!1,access:{has:t=>"defaultHour"in t,get:t=>t.defaultHour,set:(t,e)=>{t.defaultHour=e}},metadata:i},Bt,Ut),e(ot,null,ut,{kind:"accessor",name:"defaultMinute",static:!1,private:!1,access:{has:t=>"defaultMinute"in t,get:t=>t.defaultMinute,set:(t,e)=>{t.defaultMinute=e}},metadata:i},Yt,Kt),e(ot,null,pt,{kind:"accessor",name:"defaultSeconds",static:!1,private:!1,access:{has:t=>"defaultSeconds"in t,get:t=>t.defaultSeconds,set:(t,e)=>{t.defaultSeconds=e}},metadata:i},Gt,Jt),e(ot,null,mt,{kind:"accessor",name:"allowManualInput",static:!1,private:!1,access:{has:t=>"allowManualInput"in t,get:t=>t.allowManualInput,set:(t,e)=>{t.allowManualInput=e}},metadata:i},Qt,Xt),e(ot,null,ft,{kind:"accessor",name:"defaultErrorMessage",static:!1,private:!1,access:{has:t=>"defaultErrorMessage"in t,get:t=>t.defaultErrorMessage,set:(t,e)=>{t.defaultErrorMessage=e}},metadata:i},Zt,te),e(ot,null,kt,{kind:"accessor",name:"warnText",static:!1,private:!1,access:{has:t=>"warnText"in t,get:t=>t.warnText,set:(t,e)=>{t.warnText=e}},metadata:i},ee,ie),e(ot,null,vt,{kind:"accessor",name:"caption",static:!1,private:!1,access:{has:t=>"caption"in t,get:t=>t.caption,set:(t,e)=>{t.caption=e}},metadata:i},ae,se),e(ot,null,gt,{kind:"accessor",name:"required",static:!1,private:!1,access:{has:t=>"required"in t,get:t=>t.required,set:(t,e)=>{t.required=e}},metadata:i},ne,re),e(ot,null,bt,{kind:"accessor",name:"size",static:!1,private:!1,access:{has:t=>"size"in t,get:t=>t.size,set:(t,e)=>{t.size=e}},metadata:i},le,oe),e(ot,null,yt,{kind:"accessor",name:"timepickerDisabled",static:!1,private:!1,access:{has:t=>"timepickerDisabled"in t,get:t=>t.timepickerDisabled,set:(t,e)=>{t.timepickerDisabled=e}},metadata:i},de,ce),e(ot,null,xt,{kind:"accessor",name:"readonly",static:!1,private:!1,access:{has:t=>"readonly"in t,get:t=>t.readonly,set:(t,e)=>{t.readonly=e}},metadata:i},he,ue),e(ot,null,wt,{kind:"accessor",name:"twentyFourHourFormat",static:!1,private:!1,access:{has:t=>"twentyFourHourFormat"in t,get:t=>t.twentyFourHourFormat,set:(t,e)=>{t.twentyFourHourFormat=e}},metadata:i},pe,me),e(ot,null,_t,{kind:"accessor",name:"enableSeconds",static:!1,private:!1,access:{has:t=>"enableSeconds"in t,get:t=>t.enableSeconds,set:(t,e)=>{t.enableSeconds=e}},metadata:i},fe,ke),e(ot,null,It,{kind:"accessor",name:"minTime",static:!1,private:!1,access:{has:t=>"minTime"in t,get:t=>t.minTime,set:(t,e)=>{t.minTime=e}},metadata:i},ve,ge),e(ot,null,St,{kind:"accessor",name:"maxTime",static:!1,private:!1,access:{has:t=>"maxTime"in t,get:t=>t.maxTime,set:(t,e)=>{t.maxTime=e}},metadata:i},be,ye),e(ot,null,Et,{kind:"accessor",name:"errorAriaLabel",static:!1,private:!1,access:{has:t=>"errorAriaLabel"in t,get:t=>t.errorAriaLabel,set:(t,e)=>{t.errorAriaLabel=e}},metadata:i},xe,we),e(ot,null,zt,{kind:"accessor",name:"errorTitle",static:!1,private:!1,access:{has:t=>"errorTitle"in t,get:t=>t.errorTitle,set:(t,e)=>{t.errorTitle=e}},metadata:i},_e,Ie),e(ot,null,Ft,{kind:"accessor",name:"warningAriaLabel",static:!1,private:!1,access:{has:t=>"warningAriaLabel"in t,get:t=>t.warningAriaLabel,set:(t,e)=>{t.warningAriaLabel=e}},metadata:i},Se,Ee),e(ot,null,Tt,{kind:"accessor",name:"warningTitle",static:!1,private:!1,access:{has:t=>"warningTitle"in t,get:t=>t.warningTitle,set:(t,e)=>{t.warningTitle=e}},metadata:i},ze,Fe),e(ot,null,Ct,{kind:"accessor",name:"staticPosition",static:!1,private:!1,access:{has:t=>"staticPosition"in t,get:t=>t.staticPosition,set:(t,e)=>{t.staticPosition=e}},metadata:i},Te,Ce),e(ot,null,Mt,{kind:"accessor",name:"_hasInteracted",static:!1,private:!1,access:{has:t=>"_hasInteracted"in t,get:t=>t._hasInteracted,set:(t,e)=>{t._hasInteracted=e}},metadata:i},Me,$e),e(ot,null,$t,{kind:"accessor",name:"flatpickrInstance",static:!1,private:!1,access:{has:t=>"flatpickrInstance"in t,get:t=>t.flatpickrInstance,set:(t,e)=>{t.flatpickrInstance=e}},metadata:i},De,He),e(ot,null,Dt,{kind:"accessor",name:"_inputEl",static:!1,private:!1,access:{has:t=>"_inputEl"in t,get:t=>t._inputEl,set:(t,e)=>{t._inputEl=e}},metadata:i},Le,Ve),e(ot,null,Ht,{kind:"accessor",name:"_isClearing",static:!1,private:!1,access:{has:t=>"_isClearing"in t,get:t=>t._isClearing,set:(t,e)=>{t._isClearing=e}},metadata:i},Ne,We),e(ot,null,Lt,{kind:"accessor",name:"_userHasCleared",static:!1,private:!1,access:{has:t=>"_userHasCleared"in t,get:t=>t._userHasCleared,set:(t,e)=>{t._userHasCleared=e}},metadata:i},Ae,qe),e(ot,null,Vt,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:t=>"textStrings"in t,get:t=>t.textStrings,set:(t,e)=>{t.textStrings=e}},metadata:i},Oe,Re),e(ot,null,Nt,{kind:"accessor",name:"_textStrings",static:!1,private:!1,access:{has:t=>"_textStrings"in t,get:t=>t._textStrings,set:(t,e)=>{t._textStrings=e}},metadata:i},je,Pe),e(null,lt={value:ot},Wt,{kind:"class",name:ot.name,metadata:i},null,At),ot=lt.value,i&&Object.defineProperty(ot,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),ot.styles=[l(M),l(E)],i(ot,At),ot})();export{D as TimePicker};
|
|
698
|
+
</div>`:null}getRawValue(){return this.value}getTimepickerClasses(){return{"time-picker":!0,"time-picker__disabled":this.timepickerDisabled}}_padSecondsForInput(t){const e=null!=t?t:this._inputEl,i=this.enableSeconds||null!==this.defaultSeconds;if(!e||!i)return;const a=(e.value||"").trim();if(!a)return;const s=a.match(/^(.*?)(\d{1,2}):(\d{2})(?::(\d{1,2}))?(\s*[AP]M)?(.*)$/i);if(!s)return;const n=`${s[1]||""}${s[2]}:${s[3]}:${void 0!==s[4]?s[4].padStart(2,"0"):"00"}${s[5]||""}${s[6]||""}`.trim();if(n!==e.value){e.value=n;try{this.updateFormValue()}catch(t){}}}async syncFlatpickrFromHostValue(){var t,e,i,a;if(!this.flatpickrInstance)return;const s=this.getRawValue();try{null===(e=(t=this.flatpickrInstance).redraw)||void 0===e||e.call(t),s&&"string"!=typeof s?(this.flatpickrInstance.setDate(s,!0),this._padSecondsForInput(null!==(i=this.flatpickrInstance.input)&&void 0!==i?i:void 0)):"string"==typeof s&&""!==s.trim()?(this.flatpickrInstance.setDate(s,!0),this._padSecondsForInput(null!==(a=this.flatpickrInstance.input)&&void 0!==a?a:void 0)):null===s&&(this.flatpickrInstance.clear(),this._inputEl&&(this._inputEl.value="",this.updateFormValue()))}catch(t){console.warn("Error syncing flatpickr from host value:",t)}}async firstUpdated(t){if(super.firstUpdated(t),!this._initialized){f(E.toString()),this._initialized=!0,await this.updateComplete;let t=this.isElementVisible();t&&await this.setupAnchor();const e=async()=>{if(this._isDestroyed)return;const i=this.isElementVisible();!t&&i&&(this.flatpickrInstance?await this.syncFlatpickrFromHostValue():await this.setupAnchor()),t=i,i||(this._visibilityPollTimeoutId=window.setTimeout(e,250))};t||(this._visibilityPollTimeoutId=window.setTimeout(e,250))}}isElementVisible(){try{if(!this.isConnected)return!1;const t=this,e=t.getClientRects();if(!e||0===e.length)return!1;const i=window.getComputedStyle(t);return"none"!==i.display&&"hidden"!==i.visibility&&"0"!==i.opacity}catch(t){return!1}}updated(t){var e,i,a,s;if(super.updated(t),!this._applyingDefaults){if(t.has("textStrings")&&(this._textStrings={...$,...this.textStrings}),(t.has("defaultHour")||t.has("defaultMinute")||t.has("defaultSeconds")||t.has("invalidText")||t.has("minTime")||t.has("maxTime")||t.has("twentyFourHourFormat")||t.has("enableSeconds"))&&this.flatpickrInstance&&!this._isClearing&&this.debouncedUpdate(),t.has("value")&&!this._isClearing&&!this._isFromFlatpickr){const t=this.value;if(!this.flatpickrInstance)return;const s=this._incomingValueToDate(t),n=null!==(i=null===(e=this.flatpickrInstance.selectedDates)||void 0===e?void 0:e[0])&&void 0!==i?i:null;if(s&&n&&this._timesEqual(s,n))return void(this._inputEl&&this.flatpickrInstance.input&&(this._inputEl.value=this.flatpickrInstance.input.value,this._padSecondsForInput(this._inputEl),this.updateFormValue()));const r=(this.renderRoot instanceof ShadowRoot?this.renderRoot.activeElement:document.activeElement)===this._inputEl;this._isFromFlatpickr=!0;try{if(null==t||"string"==typeof t&&""===t.trim()){this._isClearing=!0;try{this.flatpickrInstance.clear(),this._inputEl&&(this._inputEl.value="")}finally{this._isClearing=!1}}else if(t instanceof Date)this.flatpickrInstance.setDate(t,!0);else if("string"==typeof t){const e=t.trim(),i=/\d{4}-\d{2}-\d{2}/.test(e)?new Date(e):this.parseTimeString(e);i&&!Number.isNaN(i.getTime())&&this.flatpickrInstance.setDate(i,!0)}this._inputEl&&this.flatpickrInstance.input&&(this._inputEl.value=this.flatpickrInstance.input.value),this._inputEl&&(this._padSecondsForInput(this._inputEl),this.updateFormValue())}finally{this._isFromFlatpickr=!1}r&&(null===(a=this.flatpickrInstance)||void 0===a?void 0:a.isOpen)&&queueMicrotask((()=>{var t;return null===(t=this._inputEl)||void 0===t?void 0:t.focus({preventScroll:!0})}))}(t.has("timepickerDisabled")&&this.timepickerDisabled||t.has("readonly")&&this.readonly)&&(null===(s=this.flatpickrInstance)||void 0===s||s.close())}}async _handleClear(t){var e;t.preventDefault(),t.stopPropagation(),this._isClearing=!0,this._userHasCleared=!0;try{this.value=null,await v(this.flatpickrInstance,null!==(e=this._inputEl)&&void 0!==e?e:void 0,(()=>{this._inputEl&&(this._inputEl.setAttribute("aria-label",this._textStrings.noTimeSelected),this.updateFormValue())})),k(this,"on-change",{time:null,date:null,source:"clear"}),this._validate(!0,!1),queueMicrotask((()=>{var t;(null===(t=this.flatpickrInstance)||void 0===t?void 0:t.isOpen)||this.initializeFlatpickr()}))}finally{this._isClearing=!1}}async setupAnchor(){if(this._inputEl)try{await this.initializeFlatpickr()}catch(t){console.error("Error setting up flatpickr:",t)}}removeCalendarElement(t){try{const e=null!=t?t:this._anchorId;if(e){const t=document.querySelector(`[data-kyn-timepicker-id="${e}"]`);t&&t.parentNode&&t.parentNode.removeChild(t)}}catch(t){}}async initializeFlatpickr(){if(this._isDestroyed)return;if(!this._inputEl||!this._inputEl.isConnected)return void console.warn("Cannot initialize Flatpickr: input element not available or not connected to DOM");const t=this._inputEl;try{if(this.flatpickrInstance){const t=this.flatpickrInstance.__anchorClickHandlers;Array.isArray(t)&&t.forEach((t=>{try{t.el.removeEventListener("click",t.fn)}catch(t){}})),this.flatpickrInstance.destroy();try{this.removeCalendarElement()}catch(t){}this.flatpickrInstance=void 0,await new Promise((t=>setTimeout(t,0)))}if(this._isDestroyed||!t.isConnected)return;if(await new Promise((t=>requestAnimationFrame(t))),this._isDestroyed||!t.isConnected)return;if(this.flatpickrInstance=await g({inputEl:t,getFlatpickrOptions:async()=>{const t=await this.getComponentFlatpickrOptions();return!1===t.noCalendar&&(t.noCalendar=!0),t},setCalendarAttributes:t=>{var e;try{const i=b(this)!==document.body;if(y(t,i),t.calendarContainer){const i=null!==(e=this._anchorId)&&void 0!==e?e:this._anchorId=this.generateRandomId("time-picker");try{t.calendarContainer.dataset.kynTimepickerId=i}catch(t){}t.calendarContainer.setAttribute("aria-label","Time picker")}}catch(t){console.error("Error setting calendar attributes:",t)}},setInitialDates:this.setInitialDates.bind(this)}),!this.flatpickrInstance)throw new Error("Failed to initialize Flatpickr instance");x(),this._validate(!1,!1)}catch(t){console.error("Error initializing Flatpickr:",t),t instanceof Error&&console.error("Error details:",t.message)}}async updateFlatpickrOptions(){this.flatpickrInstance?await this.debouncedUpdate():console.warn("Cannot update options: Flatpickr instance not available")}async getComponentFlatpickrOptions(){var t;if(!this._inputEl)return{};const e=b(this);let i,a="";const s=this.getRawValue();if(s&&"string"!=typeof s)i=new Date(s.getTime());else if("string"==typeof s&&""!==s.trim()){const t=this.parseTimeString(s);t&&(i=t)}const n=this.enableSeconds||null!=i&&0!==i.getSeconds();return a=this.twentyFourHourFormat?n?"H:i:S":"H:i":n?"h:i:S K":"h:i K",w({locale:this.locale,enableTime:!0,twentyFourHourFormat:null!==(t=this.twentyFourHourFormat)&&void 0!==t?t:void 0,inputEl:this._inputEl,allowInput:!0,dateFormat:a,minTime:this.minTime,maxTime:this.maxTime,loadLocale:S,mode:"time",noCalendar:!0,onChange:this.handleTimeChange.bind(this),onClose:this.handleClose.bind(this),onOpen:this.handleOpen.bind(this),appendTo:e,static:this.staticPosition,defaultDate:i})}setInitialDates(t){var e,i;try{const a=this.getRawValue();if(a&&"string"!=typeof a)t.setDate(a,!1);else if("string"==typeof a&&""!==a.trim())t.setDate(a,!1);else if(!this._userHasCleared&&(null!==this.defaultHour||null!==this.defaultMinute)&&null==a){const i=new Date;null!==this.defaultHour&&i.setHours(this.defaultHour),null!==this.defaultMinute&&i.setMinutes(this.defaultMinute);const a=(this.enableSeconds||null!==this.defaultSeconds)&&null!==(e=this.defaultSeconds)&&void 0!==e?e:0;i.setSeconds(a),i.setMilliseconds(0),t.setDate(i,!1)}this._padSecondsForInput(null!==(i=t.input)&&void 0!==i?i:void 0)}catch(t){console.error("Error setting initial time:",t)}}handleOpen(){var t,e;this.readonly?null===(t=this.flatpickrInstance)||void 0===t||t.close():this._shouldFlatpickrOpen||(null===(e=this.flatpickrInstance)||void 0===e||e.close(),this._shouldFlatpickrOpen=!0)}getValue(){var t;if(null===(t=this.flatpickrInstance)||void 0===t?void 0:t.selectedDates[0])return this.flatpickrInstance.selectedDates[0];const e=this.getRawValue();return e&&"string"!=typeof e?e:"string"==typeof e&&""!==e.trim()?this.parseTimeString(e):null}async handleClose(){this._hasInteracted=!0,this._validate(!0,!1),await this.updateComplete}async handleTimeChange(t,e){var i;if(this._isClearing)return;this._hasInteracted=!0;const a=(this.renderRoot instanceof ShadowRoot?this.renderRoot.activeElement:document.activeElement)===this._inputEl;this._isFromFlatpickr=!0;try{if(t.length>0){this._userHasCleared=!1;const i=t[0],a=new Date;a.setHours(i.getHours()),a.setMinutes(i.getMinutes()),a.setSeconds(i.getSeconds()),a.setMilliseconds(0),this.value=a,k(this,"on-change",{time:e||null,date:a})}else this._userHasCleared=!0,this.value=null,k(this,"on-change",{time:null,date:null,source:"clear"})}finally{await this.updateComplete,this._isFromFlatpickr=!1}this._validate(!0,!1),this._inputEl&&(this.updateFormValue(),this._padSecondsForInput(this._inputEl)),a&&(null===(i=this.flatpickrInstance)||void 0===i?void 0:i.isOpen)&&requestAnimationFrame((()=>{var t;null===(t=this._inputEl)||void 0===t||t.focus({preventScroll:!0})}))}_validate(t,e){if(!(this._inputEl&&this._inputEl instanceof HTMLInputElement))return;if(this.timepickerDisabled)return this._internals.setValidity({},"",this._inputEl),this._isInvalid=!1,void(this._internalValidationMsg="");t&&(this._hasInteracted=!0);const i=!this._userHasCleared&&(null!==this.defaultHour||null!==this.defaultMinute),a=!this._inputEl.value.trim()&&!i,s=this.required;let n=this._inputEl.validity,r=this._inputEl.validationMessage;s&&a&&(n={...n,valueMissing:!0},r=this.defaultErrorMessage||this._textStrings.pleaseSelectDate),this.invalidText&&(n={...n,customError:!0},r=this.invalidText);const l=!n.valueMissing&&!n.customError;l||r||(r=this._textStrings.pleaseSelectValidDate),this._internals.setValidity(n,r,this._inputEl),this._isInvalid=!l&&(this._hasInteracted||""!==this.invalidText),this._internalValidationMsg=r,e&&this._internals.reportValidity()}_onChange(){this._validate(!0,!1)}_handleFormReset(){this.value=null,this._userHasCleared=!1,this.flatpickrInstance&&this.flatpickrInstance.clear(),this._hasInteracted=!1,this._validate(!1,!1)}setShouldFlatpickrOpen(t){this._shouldFlatpickrOpen=t}closeFlatpickr(){var t;null===(t=this.flatpickrInstance)||void 0===t||t.close()}onSuppressLabelInteraction(t){t.stopPropagation(),this.setShouldFlatpickrOpen(!1)}handleInputClickEvent(){_(this.setShouldFlatpickrOpen.bind(this))}handleInputFocusEvent(){I(this._shouldFlatpickrOpen,this.closeFlatpickr.bind(this),this.setShouldFlatpickrOpen.bind(this))}disconnectedCallback(){if(this._isDestroyed=!0,null!==this._visibilityPollTimeoutId&&(window.clearTimeout(this._visibilityPollTimeoutId),this._visibilityPollTimeoutId=null),super.disconnectedCallback(),this.removeEventListener("change",this._onChange),this.removeEventListener("reset",this._handleFormReset),this._internals.form&&this._submitListener&&(this._internals.form.removeEventListener("submit",this._submitListener),this._submitListener=null),this.flatpickrInstance){const t=this.flatpickrInstance.__anchorClickHandlers;Array.isArray(t)&&t.forEach((t=>{try{t.el.removeEventListener("click",t.fn)}catch(t){}})),this.flatpickrInstance.destroy();try{this.removeCalendarElement()}catch(t){}this.flatpickrInstance=void 0}}setValue(t){var e,i;this._isClearing=null===t;try{if(this.flatpickrInstance){t?this.flatpickrInstance.setDate(t,!0):this.flatpickrInstance.clear();const a=null!==(i=null===(e=this.flatpickrInstance.input)||void 0===e?void 0:e.value)&&void 0!==i?i:"";this.value=a||null,this._inputEl&&(this._inputEl.value=a)}else this.value=t;this._inputEl&&(this.flatpickrInstance||(this._inputEl.value="string"==typeof this.value?this.value:""),this.updateFormValue())}finally{this._isClearing=!1}}},n=new WeakMap,D=new WeakMap,H=new WeakMap,L=new WeakMap,V=new WeakMap,N=new WeakMap,W=new WeakMap,A=new WeakMap,q=new WeakMap,O=new WeakMap,P=new WeakMap,R=new WeakMap,j=new WeakMap,B=new WeakMap,U=new WeakMap,Y=new WeakMap,K=new WeakMap,G=new WeakMap,J=new WeakMap,Q=new WeakMap,X=new WeakMap,Z=new WeakMap,tt=new WeakMap,et=new WeakMap,it=new WeakMap,at=new WeakMap,st=new WeakMap,nt=new WeakMap,rt=new WeakMap,t(ot,"TimePicker"),(()=>{var t;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(t=qt[Symbol.metadata])&&void 0!==t?t:null):void 0;dt=[c({type:String})],ct=[c({type:String})],ht=[c({type:Number,reflect:!0})],ut=[c({type:Number,reflect:!0})],pt=[c({type:Number,reflect:!0})],mt=[c({type:Boolean})],ft=[c({type:String})],vt=[c({type:String})],kt=[c({type:String})],gt=[c({type:Boolean})],bt=[c({type:String})],yt=[c({type:Boolean})],xt=[c({type:Boolean})],wt=[c({type:Boolean})],_t=[c({type:Boolean})],It=[c({type:String})],St=[c({type:String})],Et=[c({type:String})],zt=[c({type:String})],Tt=[c({type:String})],Ft=[c({type:String})],Ct=[c({type:Boolean})],Mt=[h()],$t=[h()],Dt=[u("input.input-custom")],Ht=[h()],Lt=[h()],Vt=[c({type:Object})],Nt=[h()],e(ot,null,dt,{kind:"accessor",name:"label",static:!1,private:!1,access:{has:t=>"label"in t,get:t=>t.label,set:(t,e)=>{t.label=e}},metadata:i},Ot,Pt),e(ot,null,ct,{kind:"accessor",name:"locale",static:!1,private:!1,access:{has:t=>"locale"in t,get:t=>t.locale,set:(t,e)=>{t.locale=e}},metadata:i},Rt,jt),e(ot,null,ht,{kind:"accessor",name:"defaultHour",static:!1,private:!1,access:{has:t=>"defaultHour"in t,get:t=>t.defaultHour,set:(t,e)=>{t.defaultHour=e}},metadata:i},Bt,Ut),e(ot,null,ut,{kind:"accessor",name:"defaultMinute",static:!1,private:!1,access:{has:t=>"defaultMinute"in t,get:t=>t.defaultMinute,set:(t,e)=>{t.defaultMinute=e}},metadata:i},Yt,Kt),e(ot,null,pt,{kind:"accessor",name:"defaultSeconds",static:!1,private:!1,access:{has:t=>"defaultSeconds"in t,get:t=>t.defaultSeconds,set:(t,e)=>{t.defaultSeconds=e}},metadata:i},Gt,Jt),e(ot,null,mt,{kind:"accessor",name:"allowManualInput",static:!1,private:!1,access:{has:t=>"allowManualInput"in t,get:t=>t.allowManualInput,set:(t,e)=>{t.allowManualInput=e}},metadata:i},Qt,Xt),e(ot,null,ft,{kind:"accessor",name:"defaultErrorMessage",static:!1,private:!1,access:{has:t=>"defaultErrorMessage"in t,get:t=>t.defaultErrorMessage,set:(t,e)=>{t.defaultErrorMessage=e}},metadata:i},Zt,te),e(ot,null,vt,{kind:"accessor",name:"warnText",static:!1,private:!1,access:{has:t=>"warnText"in t,get:t=>t.warnText,set:(t,e)=>{t.warnText=e}},metadata:i},ee,ie),e(ot,null,kt,{kind:"accessor",name:"caption",static:!1,private:!1,access:{has:t=>"caption"in t,get:t=>t.caption,set:(t,e)=>{t.caption=e}},metadata:i},ae,se),e(ot,null,gt,{kind:"accessor",name:"required",static:!1,private:!1,access:{has:t=>"required"in t,get:t=>t.required,set:(t,e)=>{t.required=e}},metadata:i},ne,re),e(ot,null,bt,{kind:"accessor",name:"size",static:!1,private:!1,access:{has:t=>"size"in t,get:t=>t.size,set:(t,e)=>{t.size=e}},metadata:i},le,oe),e(ot,null,yt,{kind:"accessor",name:"timepickerDisabled",static:!1,private:!1,access:{has:t=>"timepickerDisabled"in t,get:t=>t.timepickerDisabled,set:(t,e)=>{t.timepickerDisabled=e}},metadata:i},de,ce),e(ot,null,xt,{kind:"accessor",name:"readonly",static:!1,private:!1,access:{has:t=>"readonly"in t,get:t=>t.readonly,set:(t,e)=>{t.readonly=e}},metadata:i},he,ue),e(ot,null,wt,{kind:"accessor",name:"twentyFourHourFormat",static:!1,private:!1,access:{has:t=>"twentyFourHourFormat"in t,get:t=>t.twentyFourHourFormat,set:(t,e)=>{t.twentyFourHourFormat=e}},metadata:i},pe,me),e(ot,null,_t,{kind:"accessor",name:"enableSeconds",static:!1,private:!1,access:{has:t=>"enableSeconds"in t,get:t=>t.enableSeconds,set:(t,e)=>{t.enableSeconds=e}},metadata:i},fe,ve),e(ot,null,It,{kind:"accessor",name:"minTime",static:!1,private:!1,access:{has:t=>"minTime"in t,get:t=>t.minTime,set:(t,e)=>{t.minTime=e}},metadata:i},ke,ge),e(ot,null,St,{kind:"accessor",name:"maxTime",static:!1,private:!1,access:{has:t=>"maxTime"in t,get:t=>t.maxTime,set:(t,e)=>{t.maxTime=e}},metadata:i},be,ye),e(ot,null,Et,{kind:"accessor",name:"errorAriaLabel",static:!1,private:!1,access:{has:t=>"errorAriaLabel"in t,get:t=>t.errorAriaLabel,set:(t,e)=>{t.errorAriaLabel=e}},metadata:i},xe,we),e(ot,null,zt,{kind:"accessor",name:"errorTitle",static:!1,private:!1,access:{has:t=>"errorTitle"in t,get:t=>t.errorTitle,set:(t,e)=>{t.errorTitle=e}},metadata:i},_e,Ie),e(ot,null,Tt,{kind:"accessor",name:"warningAriaLabel",static:!1,private:!1,access:{has:t=>"warningAriaLabel"in t,get:t=>t.warningAriaLabel,set:(t,e)=>{t.warningAriaLabel=e}},metadata:i},Se,Ee),e(ot,null,Ft,{kind:"accessor",name:"warningTitle",static:!1,private:!1,access:{has:t=>"warningTitle"in t,get:t=>t.warningTitle,set:(t,e)=>{t.warningTitle=e}},metadata:i},ze,Te),e(ot,null,Ct,{kind:"accessor",name:"staticPosition",static:!1,private:!1,access:{has:t=>"staticPosition"in t,get:t=>t.staticPosition,set:(t,e)=>{t.staticPosition=e}},metadata:i},Fe,Ce),e(ot,null,Mt,{kind:"accessor",name:"_hasInteracted",static:!1,private:!1,access:{has:t=>"_hasInteracted"in t,get:t=>t._hasInteracted,set:(t,e)=>{t._hasInteracted=e}},metadata:i},Me,$e),e(ot,null,$t,{kind:"accessor",name:"flatpickrInstance",static:!1,private:!1,access:{has:t=>"flatpickrInstance"in t,get:t=>t.flatpickrInstance,set:(t,e)=>{t.flatpickrInstance=e}},metadata:i},De,He),e(ot,null,Dt,{kind:"accessor",name:"_inputEl",static:!1,private:!1,access:{has:t=>"_inputEl"in t,get:t=>t._inputEl,set:(t,e)=>{t._inputEl=e}},metadata:i},Le,Ve),e(ot,null,Ht,{kind:"accessor",name:"_isClearing",static:!1,private:!1,access:{has:t=>"_isClearing"in t,get:t=>t._isClearing,set:(t,e)=>{t._isClearing=e}},metadata:i},Ne,We),e(ot,null,Lt,{kind:"accessor",name:"_userHasCleared",static:!1,private:!1,access:{has:t=>"_userHasCleared"in t,get:t=>t._userHasCleared,set:(t,e)=>{t._userHasCleared=e}},metadata:i},Ae,qe),e(ot,null,Vt,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:t=>"textStrings"in t,get:t=>t.textStrings,set:(t,e)=>{t.textStrings=e}},metadata:i},Oe,Pe),e(ot,null,Nt,{kind:"accessor",name:"_textStrings",static:!1,private:!1,access:{has:t=>"_textStrings"in t,get:t=>t._textStrings,set:(t,e)=>{t._textStrings=e}},metadata:i},Re,je),e(null,lt={value:ot},Wt,{kind:"class",name:ot.name,metadata:i},null,At),ot=lt.value,i&&Object.defineProperty(ot,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),ot.styles=[l(M),l(E)],i(ot,At),ot})();export{D as TimePicker};
|
|
699
699
|
//# sourceMappingURL=timepicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timepicker.js","sources":["../../../../src/components/reusable/timepicker/timepicker.ts"],"sourcesContent":["import { LitElement, html, PropertyValues, unsafeCSS } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { FormMixin } from '../../../common/mixins/form-input';\nimport { langsArray } from '../../../common/flatpickrLangs';\n\nimport '../../reusable/button';\n\nimport {\n injectFlatpickrStyles,\n initializeSingleAnchorFlatpickr,\n getFlatpickrOptions,\n handleInputClick,\n handleInputFocus,\n setCalendarAttributes,\n loadLocale,\n emitValue,\n hideEmptyYear,\n getModalContainer,\n clearFlatpickrInput,\n} from '../../../common/helpers/flatpickr';\n\nimport flatpickr from 'flatpickr';\nimport { BaseOptions } from 'flatpickr/dist/types/options';\n\nimport TimepickerStyles from './timepicker.scss?inline';\nimport ShidokaFlatpickrTheme from '../../../common/scss/shidoka-flatpickr-theme.scss?inline';\n\nimport { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\n\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-filled.svg';\nimport clockIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/24/time.svg';\nimport clearIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-simple.svg';\n\ntype SupportedLocale = (typeof langsArray)[number];\n\ntype TimePickerValue = string | Date | null;\n\nconst _defaultTextStrings = {\n requiredText: 'Required',\n clearAll: 'Clear',\n pleaseSelectDate: 'Please select a date',\n noTimeSelected: 'No time selected',\n pleaseSelectValidDate: 'Please select a valid date',\n\n lockedStartDate: 'Start date is locked',\n lockedEndDate: 'End date is locked',\n dateLocked: 'Date is locked',\n dateNotAvailable: 'Date is not available',\n dateInSelectedRange: 'Date is in selected range',\n};\n\n/**\n * Timepicker: uses Flatpickr library,time picker implementation -- `https://flatpickr.js.org/examples/#time-picker`\n * @fires on-change - Emitted when the selected time changes. Event.detail has the shape:\n * { time: string | null, source?: string }\n * - time: formatted time string when a time is selected, or null when cleared.\n * - source: 'clear' when the value was cleared; otherwise undefined.\n * @slot tooltip - Slot for tooltip.\n * @attr {string} [name=''] - The name of the input, used for form submission.\n * @attr {string} [value=''] - The value of the input.\n * @attr {string} [invalidText=''] - The custom validation message when the input is invalid.\n */\n@customElement('kyn-time-picker')\nexport class TimePicker extends FormMixin(LitElement) {\n static override styles = [\n unsafeCSS(TimepickerStyles),\n unsafeCSS(ShidokaFlatpickrTheme),\n ];\n\n /** Label text. */\n @property({ type: String })\n accessor label = '';\n\n /** Sets desired locale and, if supported, dynamically loads language lib */\n @property({ type: String })\n accessor locale: SupportedLocale | string = 'en';\n\n /**\n * @deprecated Use `value` (Date or time string) to prefill the time instead.\n * Legacy: initial hour when `value` is unset.\n */\n @property({ type: Number, reflect: true })\n accessor defaultHour: number | null = null;\n\n /**\n * @deprecated Use `value` (Date or time string) to prefill the time instead.\n * Legacy: initial minute when `value` is unset.\n */\n @property({ type: Number, reflect: true })\n accessor defaultMinute: number | null = null;\n\n /**\n * @deprecated Use `value` (Date or time string) to prefill the time instead.\n * Legacy: initial seconds when `value` is unset.\n */\n @property({ type: Number, reflect: true })\n accessor defaultSeconds: number | null = null;\n\n /** Allows manual input of time string (when true, user can type a time) */\n @property({ type: Boolean })\n accessor allowManualInput = false;\n\n /**\n * Current time value for the component.\n *\n * - Uncontrolled: populated from `defaultHour` / `defaultMinute` / `defaultSeconds` and user selections.\n * - Controlled: can be set from the host (e.g. Vue `:value`) as a `Date` or time string.\n */\n override value: string | Date | null = null;\n\n /** Sets default error message. */\n @property({ type: String })\n accessor defaultErrorMessage = '';\n\n /** Sets validation warning messaging. */\n @property({ type: String })\n accessor warnText = '';\n\n /** Sets caption to be displayed under primary time picker elements. */\n @property({ type: String })\n accessor caption = '';\n\n /** Sets timepicker form input value to required. */\n @property({ type: Boolean })\n accessor required = false;\n\n /** Input size. \"sm\", \"md\", or \"lg\". */\n @property({ type: String })\n accessor size = 'md';\n\n /** Sets entire timepicker form element to enabled/disabled. */\n @property({ type: Boolean })\n accessor timepickerDisabled = false;\n\n /** Sets entire timepicker form element to readonly. */\n @property({ type: Boolean })\n accessor readonly = false;\n\n /** Sets 24-hour formatting true/false. */\n @property({ type: Boolean })\n accessor twentyFourHourFormat: boolean | null = null;\n\n /** Enable seconds in the timepicker UI. */\n @property({ type: Boolean })\n accessor enableSeconds = false;\n\n /** Sets lower boundary of time selection. */\n @property({ type: String })\n accessor minTime: string | number | Date = '';\n\n /** Sets upper boundary of time selection. */\n @property({ type: String })\n accessor maxTime: string | number | Date = '';\n\n /** Sets aria label attribute for error message. */\n @property({ type: String })\n accessor errorAriaLabel = '';\n\n /** Sets title attribute for error message. */\n @property({ type: String })\n accessor errorTitle = '';\n\n /** Sets aria label attribute for warning message. */\n @property({ type: String })\n accessor warningAriaLabel = '';\n\n /** Sets title attribute for warning message. */\n @property({ type: String })\n accessor warningTitle = '';\n\n /** Sets whether the Flatpickr calendar UI should use static positioning. */\n @property({ type: Boolean })\n accessor staticPosition = false;\n\n /**\n * Sets whether user has interacted with timepicker for error handling.\n * @internal\n */\n @state()\n private accessor _hasInteracted = false;\n\n /** Flatpickr instantiation.\n * @internal\n */\n @state()\n private accessor flatpickrInstance: flatpickr.Instance | undefined;\n\n /**\n * Queries the anchor DOM element.\n * @ignore\n */\n @query('input.input-custom')\n private accessor _inputEl: HTMLInputElement | null = null;\n\n /** Tracks if we're in a clear operation to prevent duplicate events\n * @internal\n */\n @state()\n private accessor _isClearing = false;\n\n /** Tracks if user has explicitly cleared the input despite having defaults\n * @internal\n */\n @state()\n private accessor _userHasCleared = false;\n\n /** Customizable text strings. */\n @property({ type: Object })\n accessor textStrings = _defaultTextStrings;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n accessor _textStrings = { ..._defaultTextStrings };\n\n /** Control flag to determine if Flatpickr should open\n * @internal\n */\n private _shouldFlatpickrOpen = true;\n\n /** Track whether change originated from Flatpickr to avoid feedback loops.\n * @internal\n */\n private _isFromFlatpickr = false;\n\n /** Track whether Flatpickr styles and instance have been initialized.\n * @internal\n */\n private _initialized = false;\n\n /** Track destroyed state so we don't re-initialize after disconnect.\n * @internal\n */\n private _isDestroyed = false;\n\n /** Track when legacy/default values are being applied to avoid feedback loops.\n * @internal\n */\n private _applyingDefaults = false;\n\n /** Internal ID used to associate the input with its calendar container.\n * @internal\n */\n private _anchorId: string | null = null;\n\n /** Store submit event listener reference for cleanup\n * @internal\n */\n private _submitListener: ((e: SubmitEvent) => void) | null = null;\n\n private debounce<T extends (...args: unknown[]) => unknown>(\n func: T,\n wait: number\n ): (...args: Parameters<T>) => void {\n let timeout: number | null = null;\n\n return (...args: Parameters<T>) => {\n if (timeout !== null) {\n window.clearTimeout(timeout);\n }\n\n timeout = window.setTimeout(() => {\n void func(...args);\n timeout = null;\n }, wait);\n };\n }\n\n /** Debounced re-initialization helper used when configuration changes.\n * @internal\n */\n private debouncedUpdate = this.debounce(async () => {\n if (!this.flatpickrInstance || this._isDestroyed) return;\n\n if ((this.flatpickrInstance as any).isOpen) return;\n\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error in debounced update:', error);\n }\n }, 100);\n\n private generateRandomId(prefix: string): string {\n return `${prefix}-${Math.random().toString(36).slice(2, 11)}`;\n }\n\n /**\n * Parses a time string (e.g. \"14:30\" or \"14:30:45\") or Date/number into a Date object\n * anchored to today, or returns null if invalid.\n */\n private parseTimeString(time: string | number | Date): Date | null {\n if (time instanceof Date) return time;\n if (typeof time === 'number') {\n const d = new Date(time);\n return Number.isNaN(d.getTime()) ? null : d;\n }\n if (typeof time === 'string') {\n const str = time.trim();\n\n // Accept formats like '14:30', '2:30 PM', '02:30:45', etc.\n const ampmMatch = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*([ap]m)?$/i.exec(\n str\n );\n if (!ampmMatch) return null;\n\n let hours = Number(ampmMatch[1]);\n const minutes = Number(ampmMatch[2]);\n const seconds = ampmMatch[3] !== undefined ? Number(ampmMatch[3]) : 0;\n const ampm = ampmMatch[4];\n\n if (\n Number.isNaN(hours) ||\n Number.isNaN(minutes) ||\n Number.isNaN(seconds)\n ) {\n return null;\n }\n\n if (ampm) {\n const a = ampm.toLowerCase();\n if (a === 'pm' && hours < 12) hours += 12;\n if (a === 'am' && hours === 12) hours = 0;\n }\n\n if (\n hours < 0 ||\n hours > 23 ||\n minutes < 0 ||\n minutes > 59 ||\n seconds < 0 ||\n seconds > 59\n ) {\n return null;\n }\n\n const d = new Date();\n d.setHours(hours, minutes, seconds, 0);\n return d;\n }\n return null;\n }\n\n private _timesEqual(a: Date | null | undefined, b: Date | null | undefined) {\n if (!a || !b) return false;\n return (\n a.getHours() === b.getHours() &&\n a.getMinutes() === b.getMinutes() &&\n a.getSeconds() === b.getSeconds()\n );\n }\n\n private _incomingValueToDate(value: TimePickerValue): Date | null {\n if (value == null) return null;\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? null : value;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (!trimmed) return null;\n const parsed = /\\d{4}-\\d{2}-\\d{2}/.test(trimmed)\n ? new Date(trimmed)\n : this.parseTimeString(trimmed);\n return parsed && !Number.isNaN(parsed.getTime()) ? parsed : null;\n }\n return null;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('change', this._onChange);\n this.addEventListener('reset', this._handleFormReset);\n\n if (this._internals.form) {\n this._submitListener = (e: SubmitEvent) => {\n this._validate(true, true);\n\n if (this.required && !this.hasValue()) {\n e.preventDefault();\n }\n };\n this._internals.form.addEventListener('submit', this._submitListener);\n }\n }\n\n private hasValue(): boolean {\n return (\n Boolean(this.value) ||\n (!this._userHasCleared &&\n (this.defaultHour !== null || this.defaultMinute !== null))\n );\n }\n\n private updateFormValue() {\n if (this._internals && this._inputEl) {\n this._internals.setFormValue(this._inputEl.value);\n }\n }\n\n override render() {\n const errorId = `${this.name}-error-message`;\n const warningId = `${this.name}-warning-message`;\n const anchorId =\n this._anchorId ??\n (this._anchorId = this.name\n ? this.generateRandomId(this.name)\n : this.generateRandomId('time-picker'));\n const descriptionId = this.name ?? '';\n const placeholder = this.enableSeconds ? '—— : —— : ——' : '—— : ——';\n\n return html`\n <div class=${classMap(this.getTimepickerClasses())}>\n <div\n class=\"label-text\"\n @mousedown=${this.onSuppressLabelInteraction}\n @click=${this.onSuppressLabelInteraction}\n ?disabled=${this.timepickerDisabled}\n ?readonly=${this.readonly}\n id=${`label-${anchorId}`}\n >\n ${this.required\n ? html`<abbr\n class=\"required\"\n title=${this._textStrings?.requiredText}\n role=\"img\"\n aria-label=${this._textStrings?.requiredText}\n >\n *\n </abbr>`\n : null}\n ${this.label}\n <slot name=\"tooltip\"></slot>\n </div>\n <div class=\"input-wrapper\">\n <input\n class=\"${classMap({\n [`size--${this.size}`]: true,\n 'input-custom': true,\n 'is-readonly': this.readonly,\n })}\"\n type=\"text\"\n id=${anchorId}\n name=${this.name}\n placeholder=${placeholder}\n ?disabled=${this.timepickerDisabled}\n ?readonly=${!this.timepickerDisabled && this.readonly}\n ?required=${this.required}\n ?invalid=${this._isInvalid}\n aria-invalid=${this._isInvalid ? 'true' : 'false'}\n aria-labelledby=${`label-${anchorId}`}\n autocomplete=\"off\"\n @click=${this.handleInputClickEvent}\n @focus=${this.handleInputFocusEvent}\n />\n ${this.hasValue() && !this.readonly\n ? html`\n <kyn-button\n ?disabled=${this.timepickerDisabled}\n class=\"clear-button\"\n kind=\"ghost\"\n size=\"small\"\n description=${this._textStrings.clearAll}\n @click=${this._handleClear}\n >\n <span style=\"display:flex\" slot=\"icon\">\n ${unsafeSVG(clearIcon)}\n </span>\n </kyn-button>\n `\n : html`<span\n class=\"input-icon ${this.timepickerDisabled\n ? 'is-disabled'\n : ''}\"\n aria-hidden=\"true\"\n @click=${this.handleInputClickEvent}\n >\n ${unsafeSVG(clockIcon)}\n </span>`}\n </div>\n ${this.caption\n ? html`<div\n id=${descriptionId}\n class=\"caption\"\n aria-disabled=${this.timepickerDisabled}\n @mousedown=${this.onSuppressLabelInteraction}\n @click=${this.onSuppressLabelInteraction}\n >\n ${this.caption}\n </div>`\n : ''}\n ${this.renderValidationMessage(errorId, warningId)}\n </div>\n `;\n }\n\n private renderValidationMessage(errorId: string, warningId: string) {\n if (this.timepickerDisabled) return null;\n\n if (this.invalidText || (this._isInvalid && this._hasInteracted)) {\n return html`<div\n id=${errorId}\n class=\"error error-text\"\n role=\"alert\"\n title=${this.errorTitle || 'Error'}\n @mousedown=${this.onSuppressLabelInteraction}\n @click=${this.onSuppressLabelInteraction}\n >\n <span\n class=\"error-icon\"\n role=\"img\"\n aria-label=${this.errorAriaLabel || 'Error message icon'}\n >\n ${unsafeSVG(errorIcon)}\n </span>\n ${this.invalidText ||\n this._internalValidationMsg ||\n this.defaultErrorMessage}\n </div>`;\n }\n\n if (this.warnText) {\n return html`<div\n id=${warningId}\n class=\"warn warn-text\"\n role=\"alert\"\n aria-label=${this.warningAriaLabel || 'Warning message'}\n title=${this.warningTitle || 'Warning'}\n @mousedown=${this.onSuppressLabelInteraction}\n @click=${this.onSuppressLabelInteraction}\n >\n ${this.warnText}\n </div>`;\n }\n\n return null;\n }\n\n private getRawValue(): TimePickerValue {\n return this.value as TimePickerValue;\n }\n\n getTimepickerClasses() {\n return {\n 'time-picker': true,\n 'time-picker__disabled': this.timepickerDisabled,\n };\n }\n\n private _padSecondsForInput(el?: HTMLInputElement | null) {\n const input = el ?? this._inputEl;\n const showSeconds = this.enableSeconds || this.defaultSeconds !== null;\n if (!input || !showSeconds) return;\n\n const val = (input.value || '').trim();\n if (!val) return;\n\n // match time with optional seconds and optional AM/PM\n const m = val.match(\n /^(.*?)(\\d{1,2}):(\\d{2})(?::(\\d{1,2}))?(\\s*[AP]M)?(.*)$/i\n );\n if (!m) return;\n\n const pre = m[1] || '';\n const hour = m[2];\n const min = m[3];\n const sec = m[4] !== undefined ? m[4].padStart(2, '0') : '00';\n const ampm = m[5] || '';\n const post = m[6] || '';\n\n const newVal = `${pre}${hour}:${min}:${sec}${ampm}${post}`.trim();\n if (newVal !== input.value) {\n input.value = newVal;\n try {\n this.updateFormValue();\n } catch (e) {\n // ignore\n }\n }\n }\n\n private async syncFlatpickrFromHostValue() {\n if (!this.flatpickrInstance) return;\n\n const raw = this.getRawValue();\n\n try {\n this.flatpickrInstance.redraw?.();\n\n if (raw && typeof raw !== 'string') {\n // treat as Date\n this.flatpickrInstance.setDate(raw, true);\n this._padSecondsForInput(this.flatpickrInstance.input ?? undefined);\n } else if (typeof raw === 'string' && raw.trim() !== '') {\n this.flatpickrInstance.setDate(raw, true);\n this._padSecondsForInput(this.flatpickrInstance.input ?? undefined);\n } else if (raw === null) {\n this.flatpickrInstance.clear();\n if (this._inputEl) {\n this._inputEl.value = '';\n this.updateFormValue();\n }\n }\n } catch (err) {\n console.warn('Error syncing flatpickr from host value:', err);\n }\n }\n\n override async firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n\n if (!this._initialized) {\n injectFlatpickrStyles(ShidokaFlatpickrTheme.toString());\n this._initialized = true;\n await this.updateComplete;\n\n let wasVisible = this.isElementVisible();\n\n if (wasVisible) {\n await this.setupAnchor();\n }\n\n const pollVisibility = async () => {\n if (this._isDestroyed) return;\n\n const nowVisible = this.isElementVisible();\n\n if (!wasVisible && nowVisible) {\n if (!this.flatpickrInstance) {\n await this.setupAnchor();\n } else {\n await this.syncFlatpickrFromHostValue();\n }\n }\n\n wasVisible = nowVisible;\n\n if (!nowVisible) {\n setTimeout(pollVisibility, 250);\n }\n };\n\n if (!wasVisible) {\n setTimeout(pollVisibility, 250);\n }\n }\n }\n\n private isElementVisible(): boolean {\n try {\n if (!this.isConnected) return false;\n const el = this as HTMLElement;\n const rects = el.getClientRects();\n if (!rects || rects.length === 0) return false;\n const style = window.getComputedStyle(el);\n if (\n style.display === 'none' ||\n style.visibility === 'hidden' ||\n style.opacity === '0'\n )\n return false;\n return true;\n } catch (e) {\n return false;\n }\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n\n if (this._applyingDefaults) return;\n\n if (changedProperties.has('textStrings')) {\n this._textStrings = { ..._defaultTextStrings, ...this.textStrings };\n }\n\n if (\n (changedProperties.has('defaultHour') ||\n changedProperties.has('defaultMinute') ||\n changedProperties.has('defaultSeconds') ||\n changedProperties.has('invalidText') ||\n changedProperties.has('minTime') ||\n changedProperties.has('maxTime') ||\n changedProperties.has('twentyFourHourFormat') ||\n changedProperties.has('enableSeconds')) &&\n this.flatpickrInstance &&\n !this._isClearing\n ) {\n this.debouncedUpdate();\n }\n\n if (\n changedProperties.has('value') &&\n !this._isClearing &&\n !this._isFromFlatpickr\n ) {\n const incoming = this.value;\n\n if (!this.flatpickrInstance) {\n return;\n }\n\n // Controlled-mode guard: if the host writes back the same time we already\n // have selected in Flatpickr, skip setDate() to avoid feedback-loop churn.\n const incomingDate = this._incomingValueToDate(incoming);\n const currentSelected = this.flatpickrInstance.selectedDates?.[0] ?? null;\n if (\n incomingDate &&\n currentSelected &&\n this._timesEqual(incomingDate, currentSelected)\n ) {\n // Still keep the visible input/form value in sync.\n if (this._inputEl && this.flatpickrInstance.input) {\n this._inputEl.value = this.flatpickrInstance.input.value;\n this._padSecondsForInput(this._inputEl);\n this.updateFormValue();\n }\n return;\n }\n\n const hadFocus =\n (this.renderRoot instanceof ShadowRoot\n ? this.renderRoot.activeElement\n : document.activeElement) === this._inputEl;\n\n this._isFromFlatpickr = true;\n try {\n if (\n incoming == null ||\n (typeof incoming === 'string' && incoming.trim() === '')\n ) {\n this._isClearing = true;\n try {\n this.flatpickrInstance.clear();\n if (this._inputEl) this._inputEl.value = '';\n } finally {\n this._isClearing = false;\n }\n } else if (incoming instanceof Date) {\n this.flatpickrInstance.setDate(incoming, true);\n } else if (typeof incoming === 'string') {\n const strValue = incoming.trim();\n const parsed = /\\d{4}-\\d{2}-\\d{2}/.test(strValue)\n ? new Date(strValue)\n : this.parseTimeString(strValue);\n if (parsed && !Number.isNaN(parsed.getTime())) {\n this.flatpickrInstance.setDate(parsed, true);\n }\n }\n\n if (this._inputEl && this.flatpickrInstance.input) {\n this._inputEl.value = this.flatpickrInstance.input.value;\n }\n\n if (this._inputEl) {\n this._padSecondsForInput(this._inputEl);\n this.updateFormValue();\n }\n } finally {\n this._isFromFlatpickr = false;\n }\n\n if (hadFocus) {\n queueMicrotask(() => this._inputEl?.focus({ preventScroll: true }));\n }\n }\n\n if (\n (changedProperties.has('timepickerDisabled') &&\n this.timepickerDisabled) ||\n (changedProperties.has('readonly') && this.readonly)\n ) {\n this.flatpickrInstance?.close();\n }\n }\n\n private async _handleClear(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this._isClearing = true;\n this._userHasCleared = true;\n\n try {\n this.value = null;\n\n await clearFlatpickrInput(\n this.flatpickrInstance,\n this._inputEl ?? undefined,\n () => {\n if (this._inputEl) {\n this._inputEl.setAttribute(\n 'aria-label',\n this._textStrings.noTimeSelected\n );\n this.updateFormValue();\n }\n }\n );\n\n emitValue(this, 'on-change', {\n time: null,\n date: null,\n source: 'clear',\n });\n this._validate(true, false);\n\n queueMicrotask(() => {\n if (!(this.flatpickrInstance as any)?.isOpen) {\n void this.initializeFlatpickr();\n }\n });\n } finally {\n this._isClearing = false;\n }\n }\n\n private async setupAnchor() {\n if (!this._inputEl) {\n return;\n }\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error setting up flatpickr:', error);\n }\n }\n\n private removeCalendarElement(id?: string) {\n try {\n const calId = id ?? this._anchorId;\n if (calId) {\n const node = document.querySelector(\n `[data-kyn-timepicker-id=\"${calId}\"]`\n ) as HTMLElement | null;\n if (node && node.parentNode) node.parentNode.removeChild(node);\n }\n } catch (e) {\n // ignore\n }\n }\n\n async initializeFlatpickr() {\n if (this._isDestroyed) {\n return;\n }\n if (!this._inputEl || !this._inputEl.isConnected) {\n console.warn(\n 'Cannot initialize Flatpickr: input element not available or not connected to DOM'\n );\n return;\n }\n const inputEl = this._inputEl;\n try {\n if (this.flatpickrInstance) {\n const __handlers = (this.flatpickrInstance as any)\n .__anchorClickHandlers;\n if (Array.isArray(__handlers)) {\n __handlers.forEach((h: { el: HTMLElement; fn: EventListener }) => {\n try {\n h.el.removeEventListener('click', h.fn as EventListener);\n } catch (e) {\n // ignore cleanup errors\n }\n });\n }\n\n this.flatpickrInstance.destroy();\n\n try {\n this.removeCalendarElement();\n } catch (e) {\n // ignore\n }\n\n this.flatpickrInstance = undefined;\n await new Promise((resolve) => setTimeout(resolve, 0));\n }\n if (this._isDestroyed || !inputEl.isConnected) {\n return;\n }\n await new Promise((resolve) => requestAnimationFrame(resolve));\n if (this._isDestroyed || !inputEl.isConnected) {\n return;\n }\n this.flatpickrInstance = await initializeSingleAnchorFlatpickr({\n inputEl,\n getFlatpickrOptions: async () => {\n const options = await this.getComponentFlatpickrOptions();\n if (options.noCalendar === false) {\n options.noCalendar = true;\n }\n return options;\n },\n setCalendarAttributes: (instance) => {\n try {\n const container = getModalContainer(this);\n const modalDetected = container !== document.body;\n setCalendarAttributes(instance, modalDetected);\n if (instance.calendarContainer) {\n const id =\n this._anchorId ??\n (this._anchorId = this.generateRandomId('time-picker'));\n try {\n (\n instance.calendarContainer as HTMLElement\n ).dataset.kynTimepickerId = id;\n } catch (e) {\n // ignore\n }\n\n instance.calendarContainer.setAttribute(\n 'aria-label',\n 'Time picker'\n );\n }\n } catch (error) {\n console.error('Error setting calendar attributes:', error);\n }\n },\n setInitialDates: this.setInitialDates.bind(this),\n });\n if (!this.flatpickrInstance) {\n throw new Error('Failed to initialize Flatpickr instance');\n }\n hideEmptyYear();\n this._validate(false, false);\n } catch (error) {\n console.error('Error initializing Flatpickr:', error);\n if (error instanceof Error) {\n console.error('Error details:', error.message);\n }\n }\n }\n\n async updateFlatpickrOptions() {\n if (!this.flatpickrInstance) {\n console.warn('Cannot update options: Flatpickr instance not available');\n return;\n }\n await this.debouncedUpdate();\n }\n\n async getComponentFlatpickrOptions(): Promise<Partial<BaseOptions>> {\n if (!this._inputEl) {\n return {};\n }\n\n const container = getModalContainer(this);\n let effectiveDateFormat = '';\n\n let timeDefaultDate: Date | undefined;\n const raw = this.getRawValue();\n\n if (raw && typeof raw !== 'string') {\n timeDefaultDate = new Date(raw.getTime());\n } else if (typeof raw === 'string' && raw.trim() !== '') {\n const parsed = this.parseTimeString(raw);\n if (parsed) {\n timeDefaultDate = parsed;\n }\n }\n\n const showSeconds =\n this.enableSeconds ||\n (timeDefaultDate != null && timeDefaultDate.getSeconds() !== 0);\n\n effectiveDateFormat = this.twentyFourHourFormat\n ? showSeconds\n ? 'H:i:S'\n : 'H:i'\n : showSeconds\n ? 'h:i:S K'\n : 'h:i K';\n\n return getFlatpickrOptions({\n locale: this.locale,\n enableTime: true,\n twentyFourHourFormat: this.twentyFourHourFormat ?? undefined,\n inputEl: this._inputEl,\n allowInput: true,\n dateFormat: effectiveDateFormat,\n minTime: this.minTime,\n maxTime: this.maxTime,\n loadLocale,\n mode: 'time',\n noCalendar: true,\n onChange: this.handleTimeChange.bind(this),\n onClose: this.handleClose.bind(this),\n onOpen: this.handleOpen.bind(this),\n onReady: (selectedDates, dateStr, instance) => {\n void selectedDates;\n void dateStr;\n\n setTimeout(\n () => this._padSecondsForInput(instance.input ?? undefined),\n 0\n );\n },\n appendTo: container,\n static: this.staticPosition,\n defaultDate: timeDefaultDate,\n });\n }\n\n setInitialDates(instance: flatpickr.Instance) {\n try {\n const raw = this.getRawValue();\n\n if (raw && typeof raw !== 'string') {\n instance.setDate(raw, false);\n } else if (typeof raw === 'string' && raw.trim() !== '') {\n instance.setDate(raw, false);\n } else if (\n !this._userHasCleared &&\n (this.defaultHour !== null || this.defaultMinute !== null) &&\n (raw === null || raw === undefined)\n ) {\n const date = new Date();\n if (this.defaultHour !== null) date.setHours(this.defaultHour);\n if (this.defaultMinute !== null) date.setMinutes(this.defaultMinute);\n const showSeconds = this.enableSeconds || this.defaultSeconds !== null;\n const secondsToSet = showSeconds ? this.defaultSeconds ?? 0 : 0;\n date.setSeconds(secondsToSet);\n date.setMilliseconds(0);\n\n instance.setDate(date, false);\n }\n\n this._padSecondsForInput(instance.input ?? undefined);\n } catch (error) {\n console.error('Error setting initial time:', error);\n }\n }\n\n handleOpen() {\n if (this.readonly) {\n this.flatpickrInstance?.close();\n return;\n }\n if (!this._shouldFlatpickrOpen) {\n this.flatpickrInstance?.close();\n this._shouldFlatpickrOpen = true;\n }\n }\n\n /**\n * Returns the selected time as a Date (anchored to today) or null.\n */\n public getValue(): Date | null {\n if (this.flatpickrInstance?.selectedDates[0]) {\n return this.flatpickrInstance.selectedDates[0];\n }\n\n const raw = this.getRawValue();\n\n if (raw && typeof raw !== 'string') {\n return raw;\n }\n\n if (typeof raw === 'string' && raw.trim() !== '') {\n return this.parseTimeString(raw);\n }\n\n return null;\n }\n\n async handleClose() {\n this._hasInteracted = true;\n this._validate(true, false);\n await this.updateComplete;\n }\n\n async handleTimeChange(selectedDates: Date[], dateStr: string) {\n if (this._isClearing) return;\n\n this._hasInteracted = true;\n\n const hadFocus =\n (this.renderRoot instanceof ShadowRoot\n ? this.renderRoot.activeElement\n : document.activeElement) === this._inputEl;\n\n this._isFromFlatpickr = true;\n\n try {\n if (selectedDates.length > 0) {\n this._userHasCleared = false;\n\n const selectedTime = selectedDates[0];\n const newDate = new Date();\n newDate.setHours(selectedTime.getHours());\n newDate.setMinutes(selectedTime.getMinutes());\n newDate.setSeconds(selectedTime.getSeconds());\n newDate.setMilliseconds(0);\n\n this.value = newDate;\n\n emitValue(this, 'on-change', {\n time: dateStr || null,\n date: newDate,\n });\n } else {\n this._userHasCleared = true;\n this.value = null;\n\n emitValue(this, 'on-change', {\n time: null,\n date: null,\n source: 'clear',\n });\n }\n } finally {\n await this.updateComplete;\n this._isFromFlatpickr = false;\n }\n\n this._validate(true, false);\n\n if (this._inputEl) {\n this.updateFormValue();\n this._padSecondsForInput(this._inputEl);\n }\n\n if (hadFocus) {\n requestAnimationFrame(() => {\n this._inputEl?.focus({ preventScroll: true });\n });\n }\n }\n\n private _validate(interacted: boolean, report: boolean) {\n if (!this._inputEl || !(this._inputEl instanceof HTMLInputElement)) {\n return;\n }\n\n if (this.timepickerDisabled) {\n this._internals.setValidity({}, '', this._inputEl);\n this._isInvalid = false;\n this._internalValidationMsg = '';\n return;\n }\n\n if (interacted) {\n this._hasInteracted = true;\n }\n\n const hasDefaultValue =\n !this._userHasCleared &&\n (this.defaultHour !== null || this.defaultMinute !== null);\n\n const isEmpty = !this._inputEl.value.trim() && !hasDefaultValue;\n const isRequired = this.required;\n\n let validity = this._inputEl.validity;\n let validationMessage = this._inputEl.validationMessage;\n\n if (isRequired && isEmpty) {\n validity = { ...validity, valueMissing: true };\n validationMessage =\n this.defaultErrorMessage || this._textStrings.pleaseSelectDate;\n }\n\n if (this.invalidText) {\n validity = { ...validity, customError: true };\n validationMessage = this.invalidText;\n }\n\n const isValid = !validity.valueMissing && !validity.customError;\n\n if (!isValid && !validationMessage) {\n validationMessage = this._textStrings.pleaseSelectValidDate;\n }\n\n this._internals.setValidity(validity, validationMessage, this._inputEl);\n\n this._isInvalid =\n !isValid && (this._hasInteracted || this.invalidText !== '');\n this._internalValidationMsg = validationMessage;\n\n if (report) {\n this._internals.reportValidity();\n }\n }\n\n private _onChange() {\n this._validate(true, false);\n }\n\n private _handleFormReset() {\n this.value = null;\n this._userHasCleared = false;\n if (this.flatpickrInstance) {\n this.flatpickrInstance.clear();\n }\n this._hasInteracted = false;\n this._validate(false, false);\n }\n\n private setShouldFlatpickrOpen(value: boolean) {\n this._shouldFlatpickrOpen = value;\n }\n\n private closeFlatpickr() {\n this.flatpickrInstance?.close();\n }\n\n private onSuppressLabelInteraction(event: Event) {\n event.stopPropagation();\n this.setShouldFlatpickrOpen(false);\n }\n\n private handleInputClickEvent() {\n handleInputClick(this.setShouldFlatpickrOpen.bind(this));\n }\n\n private handleInputFocusEvent() {\n handleInputFocus(\n this._shouldFlatpickrOpen,\n this.closeFlatpickr.bind(this),\n this.setShouldFlatpickrOpen.bind(this)\n );\n }\n\n override disconnectedCallback() {\n this._isDestroyed = true;\n super.disconnectedCallback();\n this.removeEventListener('change', this._onChange);\n this.removeEventListener('reset', this._handleFormReset);\n\n if (this._internals.form && this._submitListener) {\n this._internals.form.removeEventListener('submit', this._submitListener);\n this._submitListener = null;\n }\n\n if (this.flatpickrInstance) {\n const __handlers = (this.flatpickrInstance as any).__anchorClickHandlers;\n if (Array.isArray(__handlers)) {\n __handlers.forEach((h: { el: HTMLElement; fn: EventListener }) => {\n try {\n h.el.removeEventListener('click', h.fn as EventListener);\n } catch (e) {\n // ignore cleanup errors\n }\n });\n }\n\n this.flatpickrInstance.destroy();\n\n try {\n this.removeCalendarElement();\n } catch (e) {\n // ignore\n }\n\n this.flatpickrInstance = undefined;\n }\n }\n\n public setValue(newValue: Date | null): void {\n this._isClearing = newValue === null;\n\n try {\n if (this.flatpickrInstance) {\n if (newValue) {\n this.flatpickrInstance.setDate(newValue, true);\n } else {\n this.flatpickrInstance.clear();\n }\n\n const fpVal = this.flatpickrInstance.input?.value ?? '';\n this.value = fpVal || null;\n\n if (this._inputEl) {\n this._inputEl.value = fpVal;\n }\n } else {\n this.value = newValue;\n }\n\n if (this._inputEl) {\n if (!this.flatpickrInstance) {\n this._inputEl.value =\n typeof this.value === 'string' ? this.value : '';\n }\n this.updateFormValue();\n }\n } finally {\n this._isClearing = false;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-time-picker': TimePicker;\n }\n}\n"],"names":["_defaultTextStrings","requiredText","clearAll","pleaseSelectDate","noTimeSelected","pleaseSelectValidDate","lockedStartDate","lockedEndDate","dateLocked","dateNotAvailable","dateInSelectedRange","TimePicker","customElement","FormMixin","LitElement","_classThis","_classSuper","_TimePicker_label_accessor_storage","set","this","__runInitializers","_label_initializers","_TimePicker_locale_accessor_storage","_label_extraInitializers","_locale_initializers","_TimePicker_defaultHour_accessor_storage","_locale_extraInitializers","_defaultHour_initializers","_TimePicker_defaultMinute_accessor_storage","_defaultHour_extraInitializers","_defaultMinute_initializers","_TimePicker_defaultSeconds_accessor_storage","_defaultMinute_extraInitializers","_defaultSeconds_initializers","_TimePicker_allowManualInput_accessor_storage","_defaultSeconds_extraInitializers","_allowManualInput_initializers","value","_allowManualInput_extraInitializers","_TimePicker_defaultErrorMessage_accessor_storage","_defaultErrorMessage_initializers","_TimePicker_warnText_accessor_storage","_defaultErrorMessage_extraInitializers","_warnText_initializers","_TimePicker_caption_accessor_storage","_warnText_extraInitializers","_caption_initializers","_TimePicker_required_accessor_storage","_caption_extraInitializers","_required_initializers","_TimePicker_size_accessor_storage","_required_extraInitializers","_size_initializers","_TimePicker_timepickerDisabled_accessor_storage","_size_extraInitializers","_timepickerDisabled_initializers","_TimePicker_readonly_accessor_storage","_timepickerDisabled_extraInitializers","_readonly_initializers","_TimePicker_twentyFourHourFormat_accessor_storage","_readonly_extraInitializers","_twentyFourHourFormat_initializers","_TimePicker_enableSeconds_accessor_storage","_twentyFourHourFormat_extraInitializers","_enableSeconds_initializers","_TimePicker_minTime_accessor_storage","_enableSeconds_extraInitializers","_minTime_initializers","_TimePicker_maxTime_accessor_storage","_minTime_extraInitializers","_maxTime_initializers","_TimePicker_errorAriaLabel_accessor_storage","_maxTime_extraInitializers","_errorAriaLabel_initializers","_TimePicker_errorTitle_accessor_storage","_errorAriaLabel_extraInitializers","_errorTitle_initializers","_TimePicker_warningAriaLabel_accessor_storage","_errorTitle_extraInitializers","_warningAriaLabel_initializers","_TimePicker_warningTitle_accessor_storage","_warningAriaLabel_extraInitializers","_warningTitle_initializers","_TimePicker_staticPosition_accessor_storage","_warningTitle_extraInitializers","_staticPosition_initializers","_TimePicker__hasInteracted_accessor_storage","_staticPosition_extraInitializers","__hasInteracted_initializers","_TimePicker_flatpickrInstance_accessor_storage","__hasInteracted_extraInitializers","_flatpickrInstance_initializers","_TimePicker__inputEl_accessor_storage","_flatpickrInstance_extraInitializers","__inputEl_initializers","_TimePicker__isClearing_accessor_storage","__inputEl_extraInitializers","__isClearing_initializers","_TimePicker__userHasCleared_accessor_storage","__isClearing_extraInitializers","__userHasCleared_initializers","_TimePicker_textStrings_accessor_storage","__userHasCleared_extraInitializers","_textStrings_initializers","_TimePicker__textStrings_accessor_storage","_textStrings_extraInitializers","__textStrings_initializers","_shouldFlatpickrOpen","__textStrings_extraInitializers","_isFromFlatpickr","_initialized","_isDestroyed","_applyingDefaults","_anchorId","_submitListener","debouncedUpdate","debounce","async","flatpickrInstance","isOpen","initializeFlatpickr","error","console","label","__classPrivateFieldGet","__classPrivateFieldSet","locale","defaultHour","defaultMinute","defaultSeconds","allowManualInput","defaultErrorMessage","warnText","caption","required","size","timepickerDisabled","readonly","twentyFourHourFormat","enableSeconds","minTime","maxTime","errorAriaLabel","errorTitle","warningAriaLabel","warningTitle","staticPosition","_hasInteracted","_inputEl","_isClearing","_userHasCleared","textStrings","_textStrings","func","wait","timeout","args","window","clearTimeout","setTimeout","generateRandomId","prefix","Math","random","toString","slice","parseTimeString","time","Date","d","Number","isNaN","getTime","str","trim","ampmMatch","exec","hours","minutes","seconds","undefined","ampm","a","toLowerCase","setHours","_timesEqual","b","getHours","getMinutes","getSeconds","_incomingValueToDate","trimmed","parsed","test","connectedCallback","super","addEventListener","_onChange","_handleFormReset","_internals","form","e","_validate","hasValue","preventDefault","Boolean","updateFormValue","setFormValue","render","errorId","name","warningId","anchorId","_a","descriptionId","_b","placeholder","html","classMap","getTimepickerClasses","onSuppressLabelInteraction","_c","_d","_isInvalid","handleInputClickEvent","handleInputFocusEvent","_handleClear","unsafeSVG","clearIcon","clockIcon","renderValidationMessage","invalidText","errorIcon","_internalValidationMsg","getRawValue","_padSecondsForInput","el","input","showSeconds","val","m","match","newVal","padStart","syncFlatpickrFromHostValue","raw","redraw","setDate","clear","err","warn","firstUpdated","changedProperties","injectFlatpickrStyles","ShidokaFlatpickrTheme","updateComplete","wasVisible","isElementVisible","setupAnchor","pollVisibility","nowVisible","isConnected","rects","getClientRects","length","style","getComputedStyle","display","visibility","opacity","updated","has","incoming","incomingDate","currentSelected","selectedDates","hadFocus","renderRoot","ShadowRoot","activeElement","document","strValue","queueMicrotask","focus","preventScroll","close","event","stopPropagation","clearFlatpickrInput","setAttribute","emitValue","date","source","removeCalendarElement","id","calId","node","querySelector","parentNode","removeChild","inputEl","__handlers","__anchorClickHandlers","Array","isArray","forEach","h","removeEventListener","fn","destroy","Promise","resolve","requestAnimationFrame","initializeSingleAnchorFlatpickr","getFlatpickrOptions","options","getComponentFlatpickrOptions","noCalendar","setCalendarAttributes","instance","modalDetected","getModalContainer","body","calendarContainer","dataset","kynTimepickerId","setInitialDates","bind","Error","hideEmptyYear","message","updateFlatpickrOptions","container","timeDefaultDate","effectiveDateFormat","enableTime","allowInput","dateFormat","loadLocale","mode","onChange","handleTimeChange","onClose","handleClose","onOpen","handleOpen","appendTo","static","defaultDate","setMinutes","secondsToSet","setSeconds","setMilliseconds","getValue","dateStr","selectedTime","newDate","interacted","report","HTMLInputElement","setValidity","hasDefaultValue","isEmpty","isRequired","validity","validationMessage","valueMissing","customError","isValid","reportValidity","setShouldFlatpickrOpen","closeFlatpickr","handleInputClick","handleInputFocus","disconnectedCallback","setValue","newValue","fpVal","_label_decorators","property","type","String","_locale_decorators","reflect","_allowManualInput_decorators","_defaultErrorMessage_decorators","_warnText_decorators","_caption_decorators","_required_decorators","_size_decorators","_timepickerDisabled_decorators","_readonly_decorators","_twentyFourHourFormat_decorators","_enableSeconds_decorators","_minTime_decorators","_maxTime_decorators","_errorAriaLabel_decorators","_errorTitle_decorators","_warningAriaLabel_decorators","_warningTitle_decorators","_staticPosition_decorators","__hasInteracted_decorators","state","_flatpickrInstance_decorators","query","__isClearing_decorators","__userHasCleared_decorators","_textStrings_decorators","Object","__textStrings_decorators","__esDecorate","kind","private","access","obj","get","metadata","_metadata","_defaultHour_decorators","_defaultMinute_decorators","_defaultSeconds_decorators","__inputEl_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","TimepickerStyles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"timepicker.js","sources":["../../../../src/components/reusable/timepicker/timepicker.ts"],"sourcesContent":["import { LitElement, html, PropertyValues, unsafeCSS } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { FormMixin } from '../../../common/mixins/form-input';\nimport { langsArray } from '../../../common/flatpickrLangs';\n\nimport '../../reusable/button';\n\nimport {\n injectFlatpickrStyles,\n initializeSingleAnchorFlatpickr,\n getFlatpickrOptions,\n handleInputClick,\n handleInputFocus,\n setCalendarAttributes,\n loadLocale,\n emitValue,\n hideEmptyYear,\n getModalContainer,\n clearFlatpickrInput,\n} from '../../../common/helpers/flatpickr';\n\nimport flatpickr from 'flatpickr';\nimport { BaseOptions } from 'flatpickr/dist/types/options';\n\nimport TimepickerStyles from './timepicker.scss?inline';\nimport ShidokaFlatpickrTheme from '../../../common/scss/shidoka-flatpickr-theme.scss?inline';\n\nimport { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\n\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-filled.svg';\nimport clockIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/24/time.svg';\nimport clearIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-simple.svg';\n\ntype SupportedLocale = (typeof langsArray)[number];\n\ntype TimePickerValue = string | Date | null;\n\nconst _defaultTextStrings = {\n requiredText: 'Required',\n clearAll: 'Clear',\n pleaseSelectDate: 'Please select a date',\n noTimeSelected: 'No time selected',\n pleaseSelectValidDate: 'Please select a valid date',\n\n lockedStartDate: 'Start date is locked',\n lockedEndDate: 'End date is locked',\n dateLocked: 'Date is locked',\n dateNotAvailable: 'Date is not available',\n dateInSelectedRange: 'Date is in selected range',\n};\n\n/**\n * Timepicker: uses Flatpickr library,time picker implementation -- `https://flatpickr.js.org/examples/#time-picker`\n * @fires on-change - Emitted when the selected time changes. Event.detail has the shape:\n * { time: string | null, source?: string }\n * - time: formatted time string when a time is selected, or null when cleared.\n * - source: 'clear' when the value was cleared; otherwise undefined.\n * @slot tooltip - Slot for tooltip.\n * @attr {string} [name=''] - The name of the input, used for form submission.\n * @attr {string} [value=''] - The value of the input.\n * @attr {string} [invalidText=''] - The custom validation message when the input is invalid.\n */\n@customElement('kyn-time-picker')\nexport class TimePicker extends FormMixin(LitElement) {\n static override styles = [\n unsafeCSS(TimepickerStyles),\n unsafeCSS(ShidokaFlatpickrTheme),\n ];\n\n /** Label text. */\n @property({ type: String })\n accessor label = '';\n\n /** Sets desired locale and, if supported, dynamically loads language lib */\n @property({ type: String })\n accessor locale: SupportedLocale | string = 'en';\n\n /**\n * @deprecated Use `value` (Date or time string) to prefill the time instead.\n * Legacy: initial hour when `value` is unset.\n */\n @property({ type: Number, reflect: true })\n accessor defaultHour: number | null = null;\n\n /**\n * @deprecated Use `value` (Date or time string) to prefill the time instead.\n * Legacy: initial minute when `value` is unset.\n */\n @property({ type: Number, reflect: true })\n accessor defaultMinute: number | null = null;\n\n /**\n * @deprecated Use `value` (Date or time string) to prefill the time instead.\n * Legacy: initial seconds when `value` is unset.\n */\n @property({ type: Number, reflect: true })\n accessor defaultSeconds: number | null = null;\n\n /** Allows manual input of time string (when true, user can type a time) */\n @property({ type: Boolean })\n accessor allowManualInput = false;\n\n /**\n * Current time value for the component.\n *\n * - Uncontrolled: populated from `defaultHour` / `defaultMinute` / `defaultSeconds` and user selections.\n * - Controlled: can be set from the host (e.g. Vue `:value`) as a `Date` or time string.\n */\n override value: string | Date | null = null;\n\n /** Sets default error message. */\n @property({ type: String })\n accessor defaultErrorMessage = '';\n\n /** Sets validation warning messaging. */\n @property({ type: String })\n accessor warnText = '';\n\n /** Sets caption to be displayed under primary time picker elements. */\n @property({ type: String })\n accessor caption = '';\n\n /** Sets timepicker form input value to required. */\n @property({ type: Boolean })\n accessor required = false;\n\n /** Input size. \"sm\", \"md\", or \"lg\". */\n @property({ type: String })\n accessor size = 'md';\n\n /** Sets entire timepicker form element to enabled/disabled. */\n @property({ type: Boolean })\n accessor timepickerDisabled = false;\n\n /** Sets entire timepicker form element to readonly. */\n @property({ type: Boolean })\n accessor readonly = false;\n\n /** Sets 24-hour formatting true/false. */\n @property({ type: Boolean })\n accessor twentyFourHourFormat: boolean | null = null;\n\n /** Enable seconds in the timepicker UI. */\n @property({ type: Boolean })\n accessor enableSeconds = false;\n\n /** Sets lower boundary of time selection. */\n @property({ type: String })\n accessor minTime: string | number | Date = '';\n\n /** Sets upper boundary of time selection. */\n @property({ type: String })\n accessor maxTime: string | number | Date = '';\n\n /** Sets aria label attribute for error message. */\n @property({ type: String })\n accessor errorAriaLabel = '';\n\n /** Sets title attribute for error message. */\n @property({ type: String })\n accessor errorTitle = '';\n\n /** Sets aria label attribute for warning message. */\n @property({ type: String })\n accessor warningAriaLabel = '';\n\n /** Sets title attribute for warning message. */\n @property({ type: String })\n accessor warningTitle = '';\n\n /** Sets whether the Flatpickr calendar UI should use static positioning. */\n @property({ type: Boolean })\n accessor staticPosition = false;\n\n /**\n * Sets whether user has interacted with timepicker for error handling.\n * @internal\n */\n @state()\n private accessor _hasInteracted = false;\n\n /** Flatpickr instantiation.\n * @internal\n */\n @state()\n private accessor flatpickrInstance: flatpickr.Instance | undefined;\n\n /**\n * Queries the anchor DOM element.\n * @ignore\n */\n @query('input.input-custom')\n private accessor _inputEl: HTMLInputElement | null = null;\n\n /** Tracks if we're in a clear operation to prevent duplicate events\n * @internal\n */\n @state()\n private accessor _isClearing = false;\n\n /** Tracks if user has explicitly cleared the input despite having defaults\n * @internal\n */\n @state()\n private accessor _userHasCleared = false;\n\n /** Customizable text strings. */\n @property({ type: Object })\n accessor textStrings = _defaultTextStrings;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n accessor _textStrings = { ..._defaultTextStrings };\n\n /** Control flag to determine if Flatpickr should open\n * @internal\n */\n private _shouldFlatpickrOpen = true;\n\n /** Track whether change originated from Flatpickr to avoid feedback loops.\n * @internal\n */\n private _isFromFlatpickr = false;\n\n /** Track whether Flatpickr styles and instance have been initialized.\n * @internal\n */\n private _initialized = false;\n\n /** Track destroyed state so we don't re-initialize after disconnect.\n * @internal\n */\n private _isDestroyed = false;\n\n /** Track visibility polling timeout ID. */\n private _visibilityPollTimeoutId: number | null = null;\n\n /** Track when legacy/default values are being applied to avoid feedback loops.\n * @internal\n */\n private _applyingDefaults = false;\n\n /** Internal ID used to associate the input with its calendar container.\n * @internal\n */\n private _anchorId: string | null = null;\n\n /** Store submit event listener reference for cleanup\n * @internal\n */\n private _submitListener: ((e: SubmitEvent) => void) | null = null;\n\n private debounce<T extends (...args: unknown[]) => unknown>(\n func: T,\n wait: number\n ): (...args: Parameters<T>) => void {\n let timeout: number | null = null;\n\n return (...args: Parameters<T>) => {\n if (timeout !== null) {\n window.clearTimeout(timeout);\n }\n\n timeout = window.setTimeout(() => {\n void func(...args);\n timeout = null;\n }, wait);\n };\n }\n\n /** Debounced re-initialization helper used when configuration changes.\n * @internal\n */\n private debouncedUpdate = this.debounce(async () => {\n if (!this.flatpickrInstance || this._isDestroyed) return;\n\n if ((this.flatpickrInstance as any).isOpen) return;\n\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error in debounced update:', error);\n }\n }, 100);\n\n private generateRandomId(prefix: string): string {\n return `${prefix}-${Math.random().toString(36).slice(2, 11)}`;\n }\n\n /**\n * Parses a time string (e.g. \"14:30\" or \"14:30:45\") or Date/number into a Date object\n * anchored to today, or returns null if invalid.\n */\n private parseTimeString(time: string | number | Date): Date | null {\n if (time instanceof Date) return time;\n if (typeof time === 'number') {\n const d = new Date(time);\n return Number.isNaN(d.getTime()) ? null : d;\n }\n if (typeof time === 'string') {\n const str = time.trim();\n\n // Accept formats like '14:30', '2:30 PM', '02:30:45', etc.\n const ampmMatch = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*([ap]m)?$/i.exec(\n str\n );\n if (!ampmMatch) return null;\n\n let hours = Number(ampmMatch[1]);\n const minutes = Number(ampmMatch[2]);\n const seconds = ampmMatch[3] !== undefined ? Number(ampmMatch[3]) : 0;\n const ampm = ampmMatch[4];\n\n if (\n Number.isNaN(hours) ||\n Number.isNaN(minutes) ||\n Number.isNaN(seconds)\n ) {\n return null;\n }\n\n if (ampm) {\n const a = ampm.toLowerCase();\n if (a === 'pm' && hours < 12) hours += 12;\n if (a === 'am' && hours === 12) hours = 0;\n }\n\n if (\n hours < 0 ||\n hours > 23 ||\n minutes < 0 ||\n minutes > 59 ||\n seconds < 0 ||\n seconds > 59\n ) {\n return null;\n }\n\n const d = new Date();\n d.setHours(hours, minutes, seconds, 0);\n return d;\n }\n return null;\n }\n\n private _timesEqual(a: Date | null | undefined, b: Date | null | undefined) {\n if (!a && !b) return true;\n if (!a || !b) return false;\n return (\n a.getHours() === b.getHours() &&\n a.getMinutes() === b.getMinutes() &&\n a.getSeconds() === b.getSeconds()\n );\n }\n\n private _incomingValueToDate(value: TimePickerValue): Date | null {\n if (value == null) return null;\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? null : value;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (!trimmed) return null;\n const parsed = /\\d{4}-\\d{2}-\\d{2}/.test(trimmed)\n ? new Date(trimmed)\n : this.parseTimeString(trimmed);\n return parsed && !Number.isNaN(parsed.getTime()) ? parsed : null;\n }\n return null;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('change', this._onChange);\n this.addEventListener('reset', this._handleFormReset);\n\n if (this._internals.form) {\n this._submitListener = (e: SubmitEvent) => {\n this._validate(true, true);\n\n if (this.required && !this.hasValue()) {\n e.preventDefault();\n }\n };\n this._internals.form.addEventListener('submit', this._submitListener);\n }\n }\n\n private hasValue(): boolean {\n return (\n Boolean(this.value) ||\n (!this._userHasCleared &&\n (this.defaultHour !== null || this.defaultMinute !== null))\n );\n }\n\n private updateFormValue() {\n if (this._internals && this._inputEl) {\n this._internals.setFormValue(this._inputEl.value);\n }\n }\n\n override render() {\n const errorId = `${this.name}-error-message`;\n const warningId = `${this.name}-warning-message`;\n const anchorId =\n this._anchorId ??\n (this._anchorId = this.name\n ? this.generateRandomId(this.name)\n : this.generateRandomId('time-picker'));\n const descriptionId = this.name ?? '';\n const placeholder = this.enableSeconds ? '—— : —— : ——' : '—— : ——';\n\n return html`\n <div class=${classMap(this.getTimepickerClasses())}>\n <div\n class=\"label-text\"\n @mousedown=${this.onSuppressLabelInteraction}\n @click=${this.onSuppressLabelInteraction}\n ?disabled=${this.timepickerDisabled}\n ?readonly=${this.readonly}\n id=${`label-${anchorId}`}\n >\n ${this.required\n ? html`<abbr\n class=\"required\"\n title=${this._textStrings?.requiredText}\n role=\"img\"\n aria-label=${this._textStrings?.requiredText}\n >\n *\n </abbr>`\n : null}\n ${this.label}\n <slot name=\"tooltip\"></slot>\n </div>\n <div class=\"input-wrapper\">\n <input\n class=\"${classMap({\n [`size--${this.size}`]: true,\n 'input-custom': true,\n 'is-readonly': this.readonly,\n })}\"\n type=\"text\"\n id=${anchorId}\n name=${this.name}\n placeholder=${placeholder}\n ?disabled=${this.timepickerDisabled}\n ?readonly=${!this.timepickerDisabled && this.readonly}\n ?required=${this.required}\n ?invalid=${this._isInvalid}\n aria-invalid=${this._isInvalid ? 'true' : 'false'}\n aria-labelledby=${`label-${anchorId}`}\n autocomplete=\"off\"\n @click=${this.handleInputClickEvent}\n @focus=${this.handleInputFocusEvent}\n />\n ${this.hasValue() && !this.readonly\n ? html`\n <kyn-button\n ?disabled=${this.timepickerDisabled}\n class=\"clear-button\"\n kind=\"ghost\"\n size=\"small\"\n description=${this._textStrings.clearAll}\n @click=${this._handleClear}\n >\n <span style=\"display:flex\" slot=\"icon\">\n ${unsafeSVG(clearIcon)}\n </span>\n </kyn-button>\n `\n : html`<span\n class=\"input-icon ${this.timepickerDisabled\n ? 'is-disabled'\n : ''}\"\n aria-hidden=\"true\"\n @click=${this.handleInputClickEvent}\n >\n ${unsafeSVG(clockIcon)}\n </span>`}\n </div>\n ${this.caption\n ? html`<div\n id=${descriptionId}\n class=\"caption\"\n aria-disabled=${this.timepickerDisabled}\n @mousedown=${this.onSuppressLabelInteraction}\n @click=${this.onSuppressLabelInteraction}\n >\n ${this.caption}\n </div>`\n : ''}\n ${this.renderValidationMessage(errorId, warningId)}\n </div>\n `;\n }\n\n private renderValidationMessage(errorId: string, warningId: string) {\n if (this.timepickerDisabled) return null;\n\n if (this.invalidText || (this._isInvalid && this._hasInteracted)) {\n return html`<div\n id=${errorId}\n class=\"error error-text\"\n role=\"alert\"\n title=${this.errorTitle || 'Error'}\n @mousedown=${this.onSuppressLabelInteraction}\n @click=${this.onSuppressLabelInteraction}\n >\n <span\n class=\"error-icon\"\n role=\"img\"\n aria-label=${this.errorAriaLabel || 'Error message icon'}\n >\n ${unsafeSVG(errorIcon)}\n </span>\n ${this.invalidText ||\n this._internalValidationMsg ||\n this.defaultErrorMessage}\n </div>`;\n }\n\n if (this.warnText) {\n return html`<div\n id=${warningId}\n class=\"warn warn-text\"\n role=\"alert\"\n aria-label=${this.warningAriaLabel || 'Warning message'}\n title=${this.warningTitle || 'Warning'}\n @mousedown=${this.onSuppressLabelInteraction}\n @click=${this.onSuppressLabelInteraction}\n >\n ${this.warnText}\n </div>`;\n }\n\n return null;\n }\n\n private getRawValue(): TimePickerValue {\n return this.value as TimePickerValue;\n }\n\n getTimepickerClasses() {\n return {\n 'time-picker': true,\n 'time-picker__disabled': this.timepickerDisabled,\n };\n }\n\n private _padSecondsForInput(el?: HTMLInputElement | null) {\n const input = el ?? this._inputEl;\n const showSeconds = this.enableSeconds || this.defaultSeconds !== null;\n if (!input || !showSeconds) return;\n\n const val = (input.value || '').trim();\n if (!val) return;\n\n // match time with optional seconds and optional AM/PM\n const m = val.match(\n /^(.*?)(\\d{1,2}):(\\d{2})(?::(\\d{1,2}))?(\\s*[AP]M)?(.*)$/i\n );\n if (!m) return;\n\n const pre = m[1] || '';\n const hour = m[2];\n const min = m[3];\n const sec = m[4] !== undefined ? m[4].padStart(2, '0') : '00';\n const ampm = m[5] || '';\n const post = m[6] || '';\n\n const newVal = `${pre}${hour}:${min}:${sec}${ampm}${post}`.trim();\n if (newVal !== input.value) {\n input.value = newVal;\n try {\n this.updateFormValue();\n } catch (e) {\n // ignore\n }\n }\n }\n\n private async syncFlatpickrFromHostValue() {\n if (!this.flatpickrInstance) return;\n\n const raw = this.getRawValue();\n\n try {\n this.flatpickrInstance.redraw?.();\n\n if (raw && typeof raw !== 'string') {\n // treat as Date\n this.flatpickrInstance.setDate(raw, true);\n this._padSecondsForInput(this.flatpickrInstance.input ?? undefined);\n } else if (typeof raw === 'string' && raw.trim() !== '') {\n this.flatpickrInstance.setDate(raw, true);\n this._padSecondsForInput(this.flatpickrInstance.input ?? undefined);\n } else if (raw === null) {\n this.flatpickrInstance.clear();\n if (this._inputEl) {\n this._inputEl.value = '';\n this.updateFormValue();\n }\n }\n } catch (err) {\n console.warn('Error syncing flatpickr from host value:', err);\n }\n }\n\n override async firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n\n if (!this._initialized) {\n injectFlatpickrStyles(ShidokaFlatpickrTheme.toString());\n this._initialized = true;\n await this.updateComplete;\n\n let wasVisible = this.isElementVisible();\n\n if (wasVisible) {\n await this.setupAnchor();\n }\n\n const pollVisibility = async () => {\n if (this._isDestroyed) return;\n\n const nowVisible = this.isElementVisible();\n\n if (!wasVisible && nowVisible) {\n if (!this.flatpickrInstance) {\n await this.setupAnchor();\n } else {\n await this.syncFlatpickrFromHostValue();\n }\n }\n\n wasVisible = nowVisible;\n\n if (!nowVisible) {\n this._visibilityPollTimeoutId = window.setTimeout(\n pollVisibility,\n 250\n );\n }\n };\n\n if (!wasVisible) {\n this._visibilityPollTimeoutId = window.setTimeout(pollVisibility, 250);\n }\n }\n }\n\n private isElementVisible(): boolean {\n try {\n if (!this.isConnected) return false;\n const el = this as HTMLElement;\n const rects = el.getClientRects();\n if (!rects || rects.length === 0) return false;\n const style = window.getComputedStyle(el);\n if (\n style.display === 'none' ||\n style.visibility === 'hidden' ||\n style.opacity === '0'\n )\n return false;\n return true;\n } catch (e) {\n return false;\n }\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n\n if (this._applyingDefaults) return;\n\n if (changedProperties.has('textStrings')) {\n this._textStrings = { ..._defaultTextStrings, ...this.textStrings };\n }\n\n if (\n (changedProperties.has('defaultHour') ||\n changedProperties.has('defaultMinute') ||\n changedProperties.has('defaultSeconds') ||\n changedProperties.has('invalidText') ||\n changedProperties.has('minTime') ||\n changedProperties.has('maxTime') ||\n changedProperties.has('twentyFourHourFormat') ||\n changedProperties.has('enableSeconds')) &&\n this.flatpickrInstance &&\n !this._isClearing\n ) {\n this.debouncedUpdate();\n }\n\n if (\n changedProperties.has('value') &&\n !this._isClearing &&\n !this._isFromFlatpickr\n ) {\n const incoming = this.value;\n\n if (!this.flatpickrInstance) {\n return;\n }\n\n // Controlled-mode guard: if the host writes back the same time we already\n // have selected in Flatpickr, skip setDate() to avoid feedback-loop churn.\n const incomingDate = this._incomingValueToDate(incoming);\n const currentSelected = this.flatpickrInstance.selectedDates?.[0] ?? null;\n if (\n incomingDate &&\n currentSelected &&\n this._timesEqual(incomingDate, currentSelected)\n ) {\n // Still keep the visible input/form value in sync.\n if (this._inputEl && this.flatpickrInstance.input) {\n this._inputEl.value = this.flatpickrInstance.input.value;\n this._padSecondsForInput(this._inputEl);\n this.updateFormValue();\n }\n return;\n }\n\n const hadFocus =\n (this.renderRoot instanceof ShadowRoot\n ? this.renderRoot.activeElement\n : document.activeElement) === this._inputEl;\n\n this._isFromFlatpickr = true;\n try {\n if (\n incoming == null ||\n (typeof incoming === 'string' && incoming.trim() === '')\n ) {\n this._isClearing = true;\n try {\n this.flatpickrInstance.clear();\n if (this._inputEl) this._inputEl.value = '';\n } finally {\n this._isClearing = false;\n }\n } else if (incoming instanceof Date) {\n this.flatpickrInstance.setDate(incoming, true);\n } else if (typeof incoming === 'string') {\n const strValue = incoming.trim();\n const parsed = /\\d{4}-\\d{2}-\\d{2}/.test(strValue)\n ? new Date(strValue)\n : this.parseTimeString(strValue);\n if (parsed && !Number.isNaN(parsed.getTime())) {\n this.flatpickrInstance.setDate(parsed, true);\n }\n }\n\n if (this._inputEl && this.flatpickrInstance.input) {\n this._inputEl.value = this.flatpickrInstance.input.value;\n }\n\n if (this._inputEl) {\n this._padSecondsForInput(this._inputEl);\n this.updateFormValue();\n }\n } finally {\n this._isFromFlatpickr = false;\n }\n\n if (hadFocus && (this.flatpickrInstance as any)?.isOpen) {\n queueMicrotask(() => this._inputEl?.focus({ preventScroll: true }));\n }\n }\n\n if (\n (changedProperties.has('timepickerDisabled') &&\n this.timepickerDisabled) ||\n (changedProperties.has('readonly') && this.readonly)\n ) {\n this.flatpickrInstance?.close();\n }\n }\n\n private async _handleClear(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this._isClearing = true;\n this._userHasCleared = true;\n\n try {\n this.value = null;\n\n await clearFlatpickrInput(\n this.flatpickrInstance,\n this._inputEl ?? undefined,\n () => {\n if (this._inputEl) {\n this._inputEl.setAttribute(\n 'aria-label',\n this._textStrings.noTimeSelected\n );\n this.updateFormValue();\n }\n }\n );\n\n emitValue(this, 'on-change', {\n time: null,\n date: null,\n source: 'clear',\n });\n this._validate(true, false);\n\n queueMicrotask(() => {\n if (!(this.flatpickrInstance as any)?.isOpen) {\n void this.initializeFlatpickr();\n }\n });\n } finally {\n this._isClearing = false;\n }\n }\n\n private async setupAnchor() {\n if (!this._inputEl) {\n return;\n }\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error setting up flatpickr:', error);\n }\n }\n\n private removeCalendarElement(id?: string) {\n try {\n const calId = id ?? this._anchorId;\n if (calId) {\n const node = document.querySelector(\n `[data-kyn-timepicker-id=\"${calId}\"]`\n ) as HTMLElement | null;\n if (node && node.parentNode) node.parentNode.removeChild(node);\n }\n } catch (e) {\n // ignore\n }\n }\n\n async initializeFlatpickr() {\n if (this._isDestroyed) {\n return;\n }\n if (!this._inputEl || !this._inputEl.isConnected) {\n console.warn(\n 'Cannot initialize Flatpickr: input element not available or not connected to DOM'\n );\n return;\n }\n const inputEl = this._inputEl;\n try {\n if (this.flatpickrInstance) {\n const __handlers = (this.flatpickrInstance as any)\n .__anchorClickHandlers;\n if (Array.isArray(__handlers)) {\n __handlers.forEach((h: { el: HTMLElement; fn: EventListener }) => {\n try {\n h.el.removeEventListener('click', h.fn as EventListener);\n } catch (e) {\n // ignore cleanup errors\n }\n });\n }\n\n this.flatpickrInstance.destroy();\n\n try {\n this.removeCalendarElement();\n } catch (e) {\n // ignore\n }\n\n this.flatpickrInstance = undefined;\n await new Promise((resolve) => setTimeout(resolve, 0));\n }\n if (this._isDestroyed || !inputEl.isConnected) {\n return;\n }\n await new Promise((resolve) => requestAnimationFrame(resolve));\n if (this._isDestroyed || !inputEl.isConnected) {\n return;\n }\n this.flatpickrInstance = await initializeSingleAnchorFlatpickr({\n inputEl,\n getFlatpickrOptions: async () => {\n const options = await this.getComponentFlatpickrOptions();\n if (options.noCalendar === false) {\n options.noCalendar = true;\n }\n return options;\n },\n setCalendarAttributes: (instance) => {\n try {\n const container = getModalContainer(this);\n const modalDetected = container !== document.body;\n setCalendarAttributes(instance, modalDetected);\n if (instance.calendarContainer) {\n const id =\n this._anchorId ??\n (this._anchorId = this.generateRandomId('time-picker'));\n try {\n (\n instance.calendarContainer as HTMLElement\n ).dataset.kynTimepickerId = id;\n } catch (e) {\n // ignore\n }\n\n instance.calendarContainer.setAttribute(\n 'aria-label',\n 'Time picker'\n );\n }\n } catch (error) {\n console.error('Error setting calendar attributes:', error);\n }\n },\n setInitialDates: this.setInitialDates.bind(this),\n });\n if (!this.flatpickrInstance) {\n throw new Error('Failed to initialize Flatpickr instance');\n }\n hideEmptyYear();\n this._validate(false, false);\n } catch (error) {\n console.error('Error initializing Flatpickr:', error);\n if (error instanceof Error) {\n console.error('Error details:', error.message);\n }\n }\n }\n\n async updateFlatpickrOptions() {\n if (!this.flatpickrInstance) {\n console.warn('Cannot update options: Flatpickr instance not available');\n return;\n }\n await this.debouncedUpdate();\n }\n\n async getComponentFlatpickrOptions(): Promise<Partial<BaseOptions>> {\n if (!this._inputEl) {\n return {};\n }\n\n const container = getModalContainer(this);\n let effectiveDateFormat = '';\n\n let timeDefaultDate: Date | undefined;\n const raw = this.getRawValue();\n\n if (raw && typeof raw !== 'string') {\n timeDefaultDate = new Date(raw.getTime());\n } else if (typeof raw === 'string' && raw.trim() !== '') {\n const parsed = this.parseTimeString(raw);\n if (parsed) {\n timeDefaultDate = parsed;\n }\n }\n\n const showSeconds =\n this.enableSeconds ||\n (timeDefaultDate != null && timeDefaultDate.getSeconds() !== 0);\n\n effectiveDateFormat = this.twentyFourHourFormat\n ? showSeconds\n ? 'H:i:S'\n : 'H:i'\n : showSeconds\n ? 'h:i:S K'\n : 'h:i K';\n\n return getFlatpickrOptions({\n locale: this.locale,\n enableTime: true,\n twentyFourHourFormat: this.twentyFourHourFormat ?? undefined,\n inputEl: this._inputEl,\n allowInput: true,\n dateFormat: effectiveDateFormat,\n minTime: this.minTime,\n maxTime: this.maxTime,\n loadLocale,\n mode: 'time',\n noCalendar: true,\n onChange: this.handleTimeChange.bind(this),\n onClose: this.handleClose.bind(this),\n onOpen: this.handleOpen.bind(this),\n onReady: (selectedDates, dateStr, instance) => {\n void selectedDates;\n void dateStr;\n\n setTimeout(\n () => this._padSecondsForInput(instance.input ?? undefined),\n 0\n );\n },\n appendTo: container,\n static: this.staticPosition,\n defaultDate: timeDefaultDate,\n });\n }\n\n setInitialDates(instance: flatpickr.Instance) {\n try {\n const raw = this.getRawValue();\n\n if (raw && typeof raw !== 'string') {\n instance.setDate(raw, false);\n } else if (typeof raw === 'string' && raw.trim() !== '') {\n instance.setDate(raw, false);\n } else if (\n !this._userHasCleared &&\n (this.defaultHour !== null || this.defaultMinute !== null) &&\n (raw === null || raw === undefined)\n ) {\n const date = new Date();\n if (this.defaultHour !== null) date.setHours(this.defaultHour);\n if (this.defaultMinute !== null) date.setMinutes(this.defaultMinute);\n const showSeconds = this.enableSeconds || this.defaultSeconds !== null;\n const secondsToSet = showSeconds ? this.defaultSeconds ?? 0 : 0;\n date.setSeconds(secondsToSet);\n date.setMilliseconds(0);\n\n instance.setDate(date, false);\n }\n\n this._padSecondsForInput(instance.input ?? undefined);\n } catch (error) {\n console.error('Error setting initial time:', error);\n }\n }\n\n handleOpen() {\n if (this.readonly) {\n this.flatpickrInstance?.close();\n return;\n }\n if (!this._shouldFlatpickrOpen) {\n this.flatpickrInstance?.close();\n this._shouldFlatpickrOpen = true;\n }\n }\n\n /**\n * Returns the selected time as a Date (anchored to today) or null.\n */\n public getValue(): Date | null {\n if (this.flatpickrInstance?.selectedDates[0]) {\n return this.flatpickrInstance.selectedDates[0];\n }\n\n const raw = this.getRawValue();\n\n if (raw && typeof raw !== 'string') {\n return raw;\n }\n\n if (typeof raw === 'string' && raw.trim() !== '') {\n return this.parseTimeString(raw);\n }\n\n return null;\n }\n\n async handleClose() {\n this._hasInteracted = true;\n this._validate(true, false);\n await this.updateComplete;\n }\n\n async handleTimeChange(selectedDates: Date[], dateStr: string) {\n if (this._isClearing) return;\n\n this._hasInteracted = true;\n\n const hadFocus =\n (this.renderRoot instanceof ShadowRoot\n ? this.renderRoot.activeElement\n : document.activeElement) === this._inputEl;\n\n this._isFromFlatpickr = true;\n\n try {\n if (selectedDates.length > 0) {\n this._userHasCleared = false;\n\n const selectedTime = selectedDates[0];\n const newDate = new Date();\n newDate.setHours(selectedTime.getHours());\n newDate.setMinutes(selectedTime.getMinutes());\n newDate.setSeconds(selectedTime.getSeconds());\n newDate.setMilliseconds(0);\n\n this.value = newDate;\n\n emitValue(this, 'on-change', {\n time: dateStr || null,\n date: newDate,\n });\n } else {\n this._userHasCleared = true;\n this.value = null;\n\n emitValue(this, 'on-change', {\n time: null,\n date: null,\n source: 'clear',\n });\n }\n } finally {\n await this.updateComplete;\n this._isFromFlatpickr = false;\n }\n\n this._validate(true, false);\n\n if (this._inputEl) {\n this.updateFormValue();\n this._padSecondsForInput(this._inputEl);\n }\n\n if (hadFocus && (this.flatpickrInstance as any)?.isOpen) {\n requestAnimationFrame(() => {\n this._inputEl?.focus({ preventScroll: true });\n });\n }\n }\n\n private _validate(interacted: boolean, report: boolean) {\n if (!this._inputEl || !(this._inputEl instanceof HTMLInputElement)) {\n return;\n }\n\n if (this.timepickerDisabled) {\n this._internals.setValidity({}, '', this._inputEl);\n this._isInvalid = false;\n this._internalValidationMsg = '';\n return;\n }\n\n if (interacted) {\n this._hasInteracted = true;\n }\n\n const hasDefaultValue =\n !this._userHasCleared &&\n (this.defaultHour !== null || this.defaultMinute !== null);\n\n const isEmpty = !this._inputEl.value.trim() && !hasDefaultValue;\n const isRequired = this.required;\n\n let validity = this._inputEl.validity;\n let validationMessage = this._inputEl.validationMessage;\n\n if (isRequired && isEmpty) {\n validity = { ...validity, valueMissing: true };\n validationMessage =\n this.defaultErrorMessage || this._textStrings.pleaseSelectDate;\n }\n\n if (this.invalidText) {\n validity = { ...validity, customError: true };\n validationMessage = this.invalidText;\n }\n\n const isValid = !validity.valueMissing && !validity.customError;\n\n if (!isValid && !validationMessage) {\n validationMessage = this._textStrings.pleaseSelectValidDate;\n }\n\n this._internals.setValidity(validity, validationMessage, this._inputEl);\n\n this._isInvalid =\n !isValid && (this._hasInteracted || this.invalidText !== '');\n this._internalValidationMsg = validationMessage;\n\n if (report) {\n this._internals.reportValidity();\n }\n }\n\n private _onChange() {\n this._validate(true, false);\n }\n\n private _handleFormReset() {\n this.value = null;\n this._userHasCleared = false;\n if (this.flatpickrInstance) {\n this.flatpickrInstance.clear();\n }\n this._hasInteracted = false;\n this._validate(false, false);\n }\n\n private setShouldFlatpickrOpen(value: boolean) {\n this._shouldFlatpickrOpen = value;\n }\n\n private closeFlatpickr() {\n this.flatpickrInstance?.close();\n }\n\n private onSuppressLabelInteraction(event: Event) {\n event.stopPropagation();\n this.setShouldFlatpickrOpen(false);\n }\n\n private handleInputClickEvent() {\n handleInputClick(this.setShouldFlatpickrOpen.bind(this));\n }\n\n private handleInputFocusEvent() {\n handleInputFocus(\n this._shouldFlatpickrOpen,\n this.closeFlatpickr.bind(this),\n this.setShouldFlatpickrOpen.bind(this)\n );\n }\n\n override disconnectedCallback() {\n this._isDestroyed = true;\n\n if (this._visibilityPollTimeoutId !== null) {\n window.clearTimeout(this._visibilityPollTimeoutId);\n this._visibilityPollTimeoutId = null;\n }\n\n super.disconnectedCallback();\n this.removeEventListener('change', this._onChange);\n this.removeEventListener('reset', this._handleFormReset);\n\n if (this._internals.form && this._submitListener) {\n this._internals.form.removeEventListener('submit', this._submitListener);\n this._submitListener = null;\n }\n\n if (this.flatpickrInstance) {\n const __handlers = (this.flatpickrInstance as any).__anchorClickHandlers;\n if (Array.isArray(__handlers)) {\n __handlers.forEach((h: { el: HTMLElement; fn: EventListener }) => {\n try {\n h.el.removeEventListener('click', h.fn as EventListener);\n } catch (e) {\n // ignore cleanup errors\n }\n });\n }\n\n this.flatpickrInstance.destroy();\n\n try {\n this.removeCalendarElement();\n } catch (e) {\n // ignore\n }\n\n this.flatpickrInstance = undefined;\n }\n }\n\n public setValue(newValue: Date | null): void {\n this._isClearing = newValue === null;\n\n try {\n if (this.flatpickrInstance) {\n if (newValue) {\n this.flatpickrInstance.setDate(newValue, true);\n } else {\n this.flatpickrInstance.clear();\n }\n\n const fpVal = this.flatpickrInstance.input?.value ?? '';\n this.value = fpVal || null;\n\n if (this._inputEl) {\n this._inputEl.value = fpVal;\n }\n } else {\n this.value = newValue;\n }\n\n if (this._inputEl) {\n if (!this.flatpickrInstance) {\n this._inputEl.value =\n typeof this.value === 'string' ? this.value : '';\n }\n this.updateFormValue();\n }\n } finally {\n this._isClearing = false;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-time-picker': TimePicker;\n }\n}\n"],"names":["_defaultTextStrings","requiredText","clearAll","pleaseSelectDate","noTimeSelected","pleaseSelectValidDate","lockedStartDate","lockedEndDate","dateLocked","dateNotAvailable","dateInSelectedRange","TimePicker","customElement","FormMixin","LitElement","_classThis","_classSuper","_TimePicker_label_accessor_storage","set","this","__runInitializers","_label_initializers","_TimePicker_locale_accessor_storage","_label_extraInitializers","_locale_initializers","_TimePicker_defaultHour_accessor_storage","_locale_extraInitializers","_defaultHour_initializers","_TimePicker_defaultMinute_accessor_storage","_defaultHour_extraInitializers","_defaultMinute_initializers","_TimePicker_defaultSeconds_accessor_storage","_defaultMinute_extraInitializers","_defaultSeconds_initializers","_TimePicker_allowManualInput_accessor_storage","_defaultSeconds_extraInitializers","_allowManualInput_initializers","value","_allowManualInput_extraInitializers","_TimePicker_defaultErrorMessage_accessor_storage","_defaultErrorMessage_initializers","_TimePicker_warnText_accessor_storage","_defaultErrorMessage_extraInitializers","_warnText_initializers","_TimePicker_caption_accessor_storage","_warnText_extraInitializers","_caption_initializers","_TimePicker_required_accessor_storage","_caption_extraInitializers","_required_initializers","_TimePicker_size_accessor_storage","_required_extraInitializers","_size_initializers","_TimePicker_timepickerDisabled_accessor_storage","_size_extraInitializers","_timepickerDisabled_initializers","_TimePicker_readonly_accessor_storage","_timepickerDisabled_extraInitializers","_readonly_initializers","_TimePicker_twentyFourHourFormat_accessor_storage","_readonly_extraInitializers","_twentyFourHourFormat_initializers","_TimePicker_enableSeconds_accessor_storage","_twentyFourHourFormat_extraInitializers","_enableSeconds_initializers","_TimePicker_minTime_accessor_storage","_enableSeconds_extraInitializers","_minTime_initializers","_TimePicker_maxTime_accessor_storage","_minTime_extraInitializers","_maxTime_initializers","_TimePicker_errorAriaLabel_accessor_storage","_maxTime_extraInitializers","_errorAriaLabel_initializers","_TimePicker_errorTitle_accessor_storage","_errorAriaLabel_extraInitializers","_errorTitle_initializers","_TimePicker_warningAriaLabel_accessor_storage","_errorTitle_extraInitializers","_warningAriaLabel_initializers","_TimePicker_warningTitle_accessor_storage","_warningAriaLabel_extraInitializers","_warningTitle_initializers","_TimePicker_staticPosition_accessor_storage","_warningTitle_extraInitializers","_staticPosition_initializers","_TimePicker__hasInteracted_accessor_storage","_staticPosition_extraInitializers","__hasInteracted_initializers","_TimePicker_flatpickrInstance_accessor_storage","__hasInteracted_extraInitializers","_flatpickrInstance_initializers","_TimePicker__inputEl_accessor_storage","_flatpickrInstance_extraInitializers","__inputEl_initializers","_TimePicker__isClearing_accessor_storage","__inputEl_extraInitializers","__isClearing_initializers","_TimePicker__userHasCleared_accessor_storage","__isClearing_extraInitializers","__userHasCleared_initializers","_TimePicker_textStrings_accessor_storage","__userHasCleared_extraInitializers","_textStrings_initializers","_TimePicker__textStrings_accessor_storage","_textStrings_extraInitializers","__textStrings_initializers","_shouldFlatpickrOpen","__textStrings_extraInitializers","_isFromFlatpickr","_initialized","_isDestroyed","_visibilityPollTimeoutId","_applyingDefaults","_anchorId","_submitListener","debouncedUpdate","debounce","async","flatpickrInstance","isOpen","initializeFlatpickr","error","console","label","__classPrivateFieldGet","__classPrivateFieldSet","locale","defaultHour","defaultMinute","defaultSeconds","allowManualInput","defaultErrorMessage","warnText","caption","required","size","timepickerDisabled","readonly","twentyFourHourFormat","enableSeconds","minTime","maxTime","errorAriaLabel","errorTitle","warningAriaLabel","warningTitle","staticPosition","_hasInteracted","_inputEl","_isClearing","_userHasCleared","textStrings","_textStrings","func","wait","timeout","args","window","clearTimeout","setTimeout","generateRandomId","prefix","Math","random","toString","slice","parseTimeString","time","Date","d","Number","isNaN","getTime","str","trim","ampmMatch","exec","hours","minutes","seconds","undefined","ampm","a","toLowerCase","setHours","_timesEqual","b","getHours","getMinutes","getSeconds","_incomingValueToDate","trimmed","parsed","test","connectedCallback","super","addEventListener","_onChange","_handleFormReset","_internals","form","e","_validate","hasValue","preventDefault","Boolean","updateFormValue","setFormValue","render","errorId","name","warningId","anchorId","_a","descriptionId","_b","placeholder","html","classMap","getTimepickerClasses","onSuppressLabelInteraction","_c","_d","_isInvalid","handleInputClickEvent","handleInputFocusEvent","_handleClear","unsafeSVG","clearIcon","clockIcon","renderValidationMessage","invalidText","errorIcon","_internalValidationMsg","getRawValue","_padSecondsForInput","el","input","showSeconds","val","m","match","newVal","padStart","syncFlatpickrFromHostValue","raw","redraw","setDate","clear","err","warn","firstUpdated","changedProperties","injectFlatpickrStyles","ShidokaFlatpickrTheme","updateComplete","wasVisible","isElementVisible","setupAnchor","pollVisibility","nowVisible","isConnected","rects","getClientRects","length","style","getComputedStyle","display","visibility","opacity","updated","has","incoming","incomingDate","currentSelected","selectedDates","hadFocus","renderRoot","ShadowRoot","activeElement","document","strValue","queueMicrotask","focus","preventScroll","close","event","stopPropagation","clearFlatpickrInput","setAttribute","emitValue","date","source","removeCalendarElement","id","calId","node","querySelector","parentNode","removeChild","inputEl","__handlers","__anchorClickHandlers","Array","isArray","forEach","h","removeEventListener","fn","destroy","Promise","resolve","requestAnimationFrame","initializeSingleAnchorFlatpickr","getFlatpickrOptions","options","getComponentFlatpickrOptions","noCalendar","setCalendarAttributes","instance","modalDetected","getModalContainer","body","calendarContainer","dataset","kynTimepickerId","setInitialDates","bind","Error","hideEmptyYear","message","updateFlatpickrOptions","container","timeDefaultDate","effectiveDateFormat","enableTime","allowInput","dateFormat","loadLocale","mode","onChange","handleTimeChange","onClose","handleClose","onOpen","handleOpen","appendTo","static","defaultDate","setMinutes","secondsToSet","setSeconds","setMilliseconds","getValue","dateStr","selectedTime","newDate","interacted","report","HTMLInputElement","setValidity","hasDefaultValue","isEmpty","isRequired","validity","validationMessage","valueMissing","customError","isValid","reportValidity","setShouldFlatpickrOpen","closeFlatpickr","handleInputClick","handleInputFocus","disconnectedCallback","setValue","newValue","fpVal","_label_decorators","property","type","String","_locale_decorators","reflect","_allowManualInput_decorators","_defaultErrorMessage_decorators","_warnText_decorators","_caption_decorators","_required_decorators","_size_decorators","_timepickerDisabled_decorators","_readonly_decorators","_twentyFourHourFormat_decorators","_enableSeconds_decorators","_minTime_decorators","_maxTime_decorators","_errorAriaLabel_decorators","_errorTitle_decorators","_warningAriaLabel_decorators","_warningTitle_decorators","_staticPosition_decorators","__hasInteracted_decorators","state","_flatpickrInstance_decorators","query","__isClearing_decorators","__userHasCleared_decorators","_textStrings_decorators","Object","__textStrings_decorators","__esDecorate","kind","private","access","obj","get","metadata","_metadata","_defaultHour_decorators","_defaultMinute_decorators","_defaultSeconds_decorators","__inputEl_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","TimepickerStyles"],"mappings":"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"}
|