@kyndryl-design-system/shidoka-applications 2.71.2 → 2.71.3
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/common/helpers/flatpickr.d.ts.map +1 -1
- package/common/helpers/flatpickr.js +1 -1
- package/common/helpers/flatpickr.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 +9 -9
- package/components/reusable/timepicker/timepicker.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatpickr.d.ts","sourceRoot":"","sources":["../../../src/common/helpers/flatpickr.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"flatpickr.d.ts","sourceRoot":"","sources":["../../../src/common/helpers/flatpickr.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"flatpickr";import t from"flatpickr/dist/esm/plugins/rangePlugin";import n from"flatpickr/dist/esm/l10n/default.js";import{loadLocale as a}from"../flatpickrLangs.js";import{fixedOverlayPositionPlugin as i}from"./flatpickrOverlayPosition.js";let r=!1;const l={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 o={...l};function s(e={}){o={...l,...e}}function d(e={}){return{...o,...e}}const c={"Y-m-d":"yyyy-mm-dd","m-d-Y":"mm-dd-yyyy","d-m-Y":"dd-mm-yyyy","Y-m-d H:i":"yyyy-mm-dd —— : ——","Y-m-d h:i K":"yyyy-mm-dd —— : ——","m-d-Y H:i":"mm-dd-yyyy —— : ——","m-d-Y h:i K":"mm-dd-yyyy —— : ——","d-m-Y H:i":"dd-mm-yyyy —— : ——","d-m-Y h:i K":"dd-mm-yyyy —— : ——","Y-m-d H:i:s":"yyyy-mm-dd —— : —— ——","Y-m-d H:i:S":"yyyy-mm-dd —— : —— ——","m-d-Y H:i:s":"mm-dd-yyyy —— : —— ——","m-d-Y H:i:S":"mm-dd-yyyy —— : —— ——","d-m-Y H:i:s":"dd-mm-yyyy —— : —— ——","d-m-Y H:i:S":"dd-mm-yyyy —— : —— ——"};function u(e,t){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),t(!1)}function m(e){e(!0)}function p(e,t,n){e||(t(),n(!0))}function f(e){var t;(null===(t=e.weekdays)||void 0===t?void 0:t.shorthand)&&(e.weekdays.shorthand=e.weekdays.shorthand.map((e=>e.charAt(0))))}function y(e){if(!r){const t=document.createElement("style");t.id="flatpickr-custom-styles",t.textContent=e,document.head.appendChild(t),r=!0}}async function b(n){const{inputEl:a,endinputEl:i,getFlatpickrOptions:r,setCalendarAttributes:l,setInitialDates:o}=n;if(a)try{const n=await r(),s=e=>{if(e instanceof HTMLInputElement)return e;try{let t=e.querySelector("input");if(!t){if(t=document.createElement("input"),t.type="text",t.style.display="none",!e.isConnected)throw new Error("Element is not connected to the DOM");e.appendChild(t)}return t}catch(e){throw console.error("Error creating or appending input element:",e),e}},d=s(a);if(i){const e=s(i);n.plugins=[...n.plugins||[],t({input:e})]}const c=e(d,n);if(c){setTimeout((()=>{l&&l(c)}),0),o&&o(c);const e=[];if(!(a instanceof HTMLInputElement)){const t=()=>{c.open()};a.addEventListener("click",t),e.push({el:a,fn:t})}if(i&&!(i instanceof HTMLInputElement)){const t=()=>{c.open()};i.addEventListener("click",t),e.push({el:i,fn:t})}return c.__anchorClickHandlers=e,c}return void console.error("Failed to initialize Flatpickr")}catch(e){return void console.error("Error initializing Flatpickr:",e)}else console.error("Cannot initialize Flatpickr: inputEl is undefined")}async function k(t){const{inputEl:n,getFlatpickrOptions:a,setCalendarAttributes:i,setInitialDates:r,appendTo:l}=t;if(n)try{const t=await a(),o=t.dateFormat||("time"===t.mode?"H:i":"Y-m-d");let s;if(t.dateFormat=o,n instanceof HTMLInputElement)s=n,t.clickOpens=!0;else try{s=document.createElement("input"),s.type="text",s.style.display="none";const e=l||n;if(!e)throw new Error("No valid element to append input to");e.appendChild(s),t.clickOpens=!1,t.positionElement=n}catch(e){throw console.error("Error creating input element:",e),e}const d=e(s,t);if(d){if(setTimeout((()=>{i&&i(d)}),0),r&&r(d),!(n instanceof HTMLInputElement)){const e=()=>d.open();n.addEventListener("click",e),d.__anchorClickHandlers=[{el:n,fn:e}]}return d}return void console.error("Failed to initialize Flatpickr")}catch(e){return void console.error("Error initializing Flatpickr:",e)}else console.error("Cannot initialize Flatpickr: inputEl is undefined")}function g(e){return e in c}function A(e,t){if(!e)return t?"yyyy-mm-dd to yyyy-mm-dd":"yyyy-mm-dd";if(g(e)){return t?`${c[e]} to ${c[e]}`:c[e]}return"Select date"}function w(e){return a(e)}function v(e){let t=e;for(;t;)if(t instanceof ShadowRoot)t=t.host;else{if(!(t instanceof Element))break;{const e=t.tagName.toLowerCase();if("kyn-modal"===e||"kyn-side-drawer"===e)return t;t=t.parentNode}}return document.body}async function h(t){var a;if(!t)return console.error("Context is required for getFlatpickrOptions"),{};const{locale:r,dateFormat:l,enableTime:o,twentyFourHourFormat:s,inputEl:d,allowInput:c,minDate:u,maxDate:m,minTime:p,maxTime:y,defaultDate:b,defaultHour:k,defaultMinute:g,enable:A,disable:w,mode:h="single",closeOnSelect:D,wrap:E=!1,noCalendar:T=!1,appendTo:L,onChange:N,onClose:S,onOpen:C,loadLocale:x}=t;let Y;r||console.warn("Locale not provided. Falling back to default."),l||console.warn("Date format not provided. Using default format.");try{Y=await x(r),f(Y)}catch(e){console.warn("Error loading locale, falling back to default:",e),Y=n}const H=r.split("-")[0].toLowerCase(),F=["en","es"].includes(H),I="undefined"!=typeof window&&window.innerWidth>=767,M=l||("time"===h?s?"H:i":"h:i K":"Y-m-d"),O=v(t.inputEl),q=O!==document.body,R={dateFormat:M,mode:"time"===h?"single":h,enableTime:"time"===h||o,noCalendar:"time"===h||T,defaultDate:b,enableSeconds:M.toLowerCase().includes(":s"),allowInput:c||!1,clickOpens:!0,time_24hr:"boolean"==typeof s?s:!F,weekNumbers:!1,static:null!==(a=t.static)&&void 0!==a&&a,wrap:E,showMonths:"range"===h&&I?2:1,monthSelectorType:"static",locale:Y,closeOnSelect:null!=D?D:!("multiple"===h||o),onChange:(e,t,n)=>{N&&N(e,t,n)},onClose:(e,t,n)=>{if("range"===h&&n.calendarContainer){const t=n.calendarContainer.querySelector(".flatpickr-time");0===e.length&&(null==t||t.classList.add("default-time-select"),null==t||t.classList.remove("start-date","end-date"))}S&&S(e,t,n)},onOpen:(e,t,n)=>{C&&C(e,t,n)}};if(q&&(R.appendTo=O,R.static=!1,(R.plugins||(R.plugins=[])).push(i({offset:6,minViewportMargin:8,preferTop:!1}))),"range"===h&&(R.onReady=(e,t,n)=>{if(n.calendarContainer){const e=n.calendarContainer.querySelector(".flatpickr-time");null==e||e.classList.add("default-time-select")}}),d instanceof HTMLInputElement||(R.positionElement=d),u&&(R.minDate=u),m&&(R.maxDate=m),p&&(R.minTime=p),y&&(R.maxTime=y),b)if(!Array.isArray(b)||"range"!==h&&"multiple"!==h){if(!Array.isArray(b)&&"string"==typeof b){let e=null;switch(M){case"Y-m-d":{const[t,n,a]=b.split("-").map(Number);e=isNaN(t)||isNaN(n)||isNaN(a)?null:new Date(t,n-1,a,12);break}case"d-m-Y":{const[t,n,a]=b.split("-").map(Number);e=isNaN(t)||isNaN(n)||isNaN(a)?null:new Date(a,n-1,t,12);break}case"m-d-Y":{const[t,n,a]=b.split("-").map(Number);e=isNaN(t)||isNaN(n)||isNaN(a)?null:new Date(a,t-1,n,12);break}default:e=new Date(b)}R.defaultDate=e||b}}else R.defaultDate=b;return null!=k&&(R.defaultHour=k),null!=g&&(R.defaultMinute=g),A&&A.length>0&&(R.enable=A),w&&w.length>0&&(R.disable=w.map((t=>{if(t instanceof Date)return t;if("number"==typeof t)return new Date(t);if("string"==typeof t){return e.parseDate(t,M)||t}return t}))),L&&(R.appendTo=L),R}function D(e){const t=e||"";return t.includes("H:")||t.includes("h:")||t.toLowerCase().includes(":s")}function E(e,t=!1){if(!e||!e.config)return;const n=e.calendarContainer;if(!n)return;const{minDate:a,maxDate:i}=e.config;if(a&&i){new Date(a).getFullYear()===new Date(i).getFullYear()?n.classList.add("single-year"):n.classList.remove("single-year")}requestAnimationFrame((()=>{if(!e||!e.config)return;const a=e.config.mode;n.setAttribute("role","application"),n.setAttribute("aria-label","Calendar"),n.classList.remove("container-modal","container-body","container-default"),n.classList.add(t?"container-modal":"container-default");const i=n.querySelector(".flatpickr-months");null==i||i.setAttribute("tabindex","0"),null==i||i.setAttribute("role","group"),null==i||i.setAttribute("aria-label","Month and year navigation");const r=n.querySelector(".flatpickr-prev-month");null==r||r.setAttribute("tabindex","0"),null==r||r.setAttribute("role","button"),null==r||r.setAttribute("aria-label","Previous month"),null==r||r.addEventListener("keydown",(t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e.changeMonth(-1))}));const l=n.querySelector(".flatpickr-next-month");null==l||l.setAttribute("tabindex","0"),null==l||l.setAttribute("role","button"),null==l||l.setAttribute("aria-label","Next month"),null==l||l.addEventListener("keydown",(t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e.changeMonth(1))}));const o=n.querySelector(".flatpickr-month"),s=null==o?void 0:o.querySelector("input.numInput.cur-year");if(s){s.tabIndex=0,s.setAttribute("role","spinbutton"),s.setAttribute("aria-label","Year"),e.config.minDate&&s.setAttribute("aria-valuemin",String(new Date(e.config.minDate).getFullYear())),e.config.maxDate&&s.setAttribute("aria-valuemax",String(new Date(e.config.maxDate).getFullYear()));const t=()=>s.setAttribute("aria-valuenow",s.value);s.addEventListener("keydown",(n=>{"ArrowUp"===n.key&&(n.preventDefault(),e.changeYear(1),setTimeout(t,0)),"ArrowDown"===n.key&&(n.preventDefault(),e.changeYear(-1),setTimeout(t,0))})),setTimeout(t,0)}const d=n.querySelector(".flatpickr-days");null==d||d.removeAttribute("tabindex"),null==d||d.setAttribute("role","grid"),null==d||d.setAttribute("aria-multiselectable","multiple"===a?"true":"false");const c=Array.from(n.querySelectorAll(".flatpickr-day:not(.flatpickr-disabled)"));c.forEach((e=>{e.tabIndex=0,e.setAttribute("role","range"===a?"gridcell":"button")}));const u=n._keyboardNav;u&&n.removeEventListener("keydown",u);const m=e=>{const t=e.target.closest(".flatpickr-day:not(.flatpickr-disabled)");if(t)switch(e.key){case"Enter":case" ":return e.preventDefault(),void t.click();case"ArrowRight":case"ArrowLeft":case"ArrowDown":case"ArrowUp":{e.preventDefault();const n=c.indexOf(t);let a;switch(e.key){case"ArrowRight":a=n+1;break;case"ArrowLeft":a=n-1;break;case"ArrowDown":a=n+7;break;case"ArrowUp":a=n-7;break;default:return}const i=c[a];return void(i&&i.focus())}}};n.addEventListener("keydown",m),n._keyboardNav=m;const p=n.querySelector("input.flatpickr-hour");p&&(p.tabIndex=0,p.setAttribute("role","spinbutton"),p.setAttribute("aria-label","Hour"),p.setAttribute("aria-valuemin",p.min),p.setAttribute("aria-valuemax",p.max),p.setAttribute("aria-valuenow",p.value),p.addEventListener("keydown",(e=>{"ArrowUp"===e.key&&(e.preventDefault(),p.stepUp()),"ArrowDown"===e.key&&(e.preventDefault(),p.stepDown()),setTimeout((()=>p.setAttribute("aria-valuenow",p.value)),0)})));const f=n.querySelector("input.flatpickr-minute");f&&(f.tabIndex=0,f.setAttribute("role","spinbutton"),f.setAttribute("aria-label","Minute"),f.setAttribute("aria-valuemin",f.min),f.setAttribute("aria-valuemax",f.max),f.setAttribute("aria-valuenow",f.value),f.addEventListener("keydown",(e=>{"ArrowUp"===e.key&&(e.preventDefault(),f.stepUp()),"ArrowDown"===e.key&&(e.preventDefault(),f.stepDown()),setTimeout((()=>f.setAttribute("aria-valuenow",f.value)),0)})));const y=n.querySelector(".flatpickr-am-pm");y&&(y.tabIndex=0,y.setAttribute("role","button"),y.setAttribute("aria-label","Toggle AM/PM"),y.addEventListener("keydown",(e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),y.click())})))}))}function T(){document.querySelectorAll(".numInputWrapper").forEach((e=>{const t=e.querySelector(".numInput.cur-year");t&&(e.style.display="",t.style.display="",t.disabled=!1,t.hasAttribute("tabindex")||(t.tabIndex=0))}))}function L(e,t,n,a,i,r){if(!e)return console.warn("Input element is undefined..."),{isValid:!0,validationMessage:""};const l=!e.value.trim(),o=t;let s=e.validity,d=e.validationMessage;o&&l&&(s={...s,valueMissing:!0},d=a),n&&(s={...s,customError:!0},d=n),r.setValidity(s,d,e);return{isValid:!n&&(!i||!l||l&&!o),validationMessage:d}}function N(e,t,n){e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0}))}async function S(e,t,n){e&&e.clear(),t&&(t.value=""),n&&await n()}var C;function x(e,t){return(n,a,i,r)=>{const l=r.dateObj;e===C.END&&null!==t[0]?l.getTime()<=t[0].getTime()&&(l.getTime()===t[0].getTime()?(r.classList.add("flatpickr-locked-date"),r.setAttribute("title",d().dateNotAvailable),r.setAttribute("locked","start"),r.setAttribute("aria-disabled","true")):(r.classList.add("flatpickr-locked-date","flatpickr-disabled"),r.setAttribute("title",d().lockedStartDate))):e===C.START&&null!==t[1]?l.getTime()>=t[1].getTime()&&(l.getTime()===t[1].getTime()?(r.classList.add("flatpickr-locked-date"),r.setAttribute("title",d().lockedEndDate),r.setAttribute("locked","end"),r.setAttribute("aria-disabled","true")):(r.classList.add("flatpickr-locked-date","flatpickr-disabled"),r.setAttribute("title",d().dateNotAvailable))):e===C.NONE&&null!==t[0]&&null!==t[1]&&(l.getTime()===t[0].getTime()?(r.classList.add("flatpickr-locked-date"),r.setAttribute("title",d().dateLocked),r.setAttribute("locked","start"),r.setAttribute("aria-disabled","true")):l.getTime()===t[1].getTime()?(r.classList.add("flatpickr-locked-date"),r.setAttribute("title",d().dateLocked),r.setAttribute("locked","end"),r.setAttribute("aria-disabled","true")):l.getTime()>t[0].getTime()&&l.getTime()<t[1].getTime()?(r.classList.add("flatpickr-locked-date"),r.setAttribute("title",d().dateInSelectedRange)):(r.classList.add("flatpickr-locked-date","flatpickr-disabled"),r.setAttribute("title",d().dateNotAvailable))),r.classList.contains("flatpickr-disabled")&&!r.classList.contains("flatpickr-locked-date")&&r.classList.add("flatpickr-locked-date")}}function Y(e,t,n){return(a,i,r)=>{let l=null,o=null;if(e===C.END&&null!==t[0]&&(l=t[0]),e===C.START&&null!==t[1]&&(o=t[1]),e!==C.NONE||null===t[0]||null===t[1])if(null!==t[0]||null!==t[1]){if(e===C.END&&null!==l){let e=!1;const t=[...a];if(2===a.length&&a[0].getTime()!==l.getTime()?(t[0]=l,e=!0):1===a.length&&(t.splice(0,0,l),e=!0),e)return r.setDate(t,!1),void H(n,t,r.input.value,r)}if(e===C.START&&null!==o){let e=!1;const t=[...a];if(2===a.length&&a[1].getTime()!==o.getTime()?(t[1]=o,e=!0):1===a.length&&(t.push(o),e=!0),e)return r.setDate(t,!1),void H(n,t,r.input.value,r)}H(n,a,i,r)}else H(n,a,i,r);else r.setDate([t[0],t[1]],!1)}}function H(e,t,n,a){try{"function"==typeof e?e(t,n,a):Array.isArray(e)&&e.forEach((e=>{if("function"==typeof e)try{e(t,n,a)}catch(e){console.warn("Error in onChange hook:",e)}}))}catch(e){console.warn("Error calling original onChange handler:",e)}}function F(e,t,n,a){a&&s(a);const i={...e};if(t===C.BOTH)return i;const r=i.onChange;i.clickOpens=!0;try{i.onDayCreate=x(t,n),i.onChange=Y(t,n,r||(()=>{}))}catch(e){console.warn("Error setting up date range editing restrictions:",e)}return i}!function(e){e.BOTH="both",e.START="start",e.END="end",e.NONE="none"}(C||(C={}));export{C as DateRangeEditableMode,l as _defaultCalendarTooltipStrings,F as applyDateRangeEditingRestrictions,S as clearFlatpickrInput,Y as createDateRangeChangeLockHandler,x as createDateRangeDayLockHandler,N as emitValue,h as getFlatpickrOptions,v as getModalContainer,A as getPlaceholder,d as getTextStrings,m as handleInputClick,p as handleInputFocus,T as hideEmptyYear,b as initializeMultiAnchorFlatpickr,k as initializeSingleAnchorFlatpickr,y as injectFlatpickrStyles,g as isValidDateFormat,w as loadLocale,f as modifyWeekdayShorthands,u as preventFlatpickrOpen,E as setCalendarAttributes,s as setTooltipStrings,D as updateEnableTime,L as validate};
|
|
1
|
+
import e from"flatpickr";import t from"flatpickr/dist/esm/plugins/rangePlugin";import n from"flatpickr/dist/esm/l10n/default.js";import{loadLocale as a}from"../flatpickrLangs.js";import{fixedOverlayPositionPlugin as i}from"./flatpickrOverlayPosition.js";let r=!1;const o={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 l={...o};function s(e={}){l={...o,...e}}function d(e={}){return{...l,...e}}const c={"Y-m-d":"yyyy-mm-dd","m-d-Y":"mm-dd-yyyy","d-m-Y":"dd-mm-yyyy","Y-m-d H:i":"yyyy-mm-dd —— : ——","Y-m-d h:i K":"yyyy-mm-dd —— : ——","m-d-Y H:i":"mm-dd-yyyy —— : ——","m-d-Y h:i K":"mm-dd-yyyy —— : ——","d-m-Y H:i":"dd-mm-yyyy —— : ——","d-m-Y h:i K":"dd-mm-yyyy —— : ——","Y-m-d H:i:s":"yyyy-mm-dd —— : —— ——","Y-m-d H:i:S":"yyyy-mm-dd —— : —— ——","m-d-Y H:i:s":"mm-dd-yyyy —— : —— ——","m-d-Y H:i:S":"mm-dd-yyyy —— : —— ——","d-m-Y H:i:s":"dd-mm-yyyy —— : —— ——","d-m-Y H:i:S":"dd-mm-yyyy —— : —— ——"};function u(e,t){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),t(!1)}function m(e){e(!0)}function y(e,t,n){e||(t(),n(!0))}function p(e){var t;(null===(t=e.weekdays)||void 0===t?void 0:t.shorthand)&&(e.weekdays.shorthand=e.weekdays.shorthand.map((e=>e.charAt(0))))}function f(e){if(!r){const t=document.createElement("style");t.id="flatpickr-custom-styles",t.textContent=e,document.head.appendChild(t),r=!0}}async function k(n){const{inputEl:a,endinputEl:i,getFlatpickrOptions:r,setCalendarAttributes:o,setInitialDates:l}=n;if(a)try{const n=await r(),s=e=>{if(e instanceof HTMLInputElement)return e;try{let t=e.querySelector("input");if(!t){if(t=document.createElement("input"),t.type="text",t.style.display="none",!e.isConnected)throw new Error("Element is not connected to the DOM");e.appendChild(t)}return t}catch(e){throw console.error("Error creating or appending input element:",e),e}},d=s(a);if(i){const e=s(i);n.plugins=[...n.plugins||[],t({input:e})]}const c=e(d,n);if(c){setTimeout((()=>{o&&o(c)}),0),l&&l(c);const e=[];if(!(a instanceof HTMLInputElement)){const t=()=>{c.open()};a.addEventListener("click",t),e.push({el:a,fn:t})}if(i&&!(i instanceof HTMLInputElement)){const t=()=>{c.open()};i.addEventListener("click",t),e.push({el:i,fn:t})}return c.__anchorClickHandlers=e,c}return void console.error("Failed to initialize Flatpickr")}catch(e){return void console.error("Error initializing Flatpickr:",e)}else console.error("Cannot initialize Flatpickr: inputEl is undefined")}async function b(t){const{inputEl:n,getFlatpickrOptions:a,setCalendarAttributes:i,setInitialDates:r,appendTo:o}=t;if(n)try{const t=await a(),l=t.dateFormat||("time"===t.mode?"H:i":"Y-m-d");let s;if(t.dateFormat=l,n instanceof HTMLInputElement)s=n,t.clickOpens=!0;else try{s=document.createElement("input"),s.type="text",s.style.display="none";const e=o||n;if(!e)throw new Error("No valid element to append input to");e.appendChild(s),t.clickOpens=!1,t.positionElement=n}catch(e){throw console.error("Error creating input element:",e),e}const d=e(s,t);if(d){if(setTimeout((()=>{i&&i(d)}),0),r&&r(d),!(n instanceof HTMLInputElement)){const e=()=>d.open();n.addEventListener("click",e),d.__anchorClickHandlers=[{el:n,fn:e}]}return d}return void console.error("Failed to initialize Flatpickr")}catch(e){return void console.error("Error initializing Flatpickr:",e)}else console.error("Cannot initialize Flatpickr: inputEl is undefined")}function w(e){return e in c}function g(e,t){if(!e)return t?"yyyy-mm-dd to yyyy-mm-dd":"yyyy-mm-dd";if(w(e)){return t?`${c[e]} to ${c[e]}`:c[e]}return"Select date"}function v(e){return a(e)}function A(e){let t=e;for(;t;)if(t instanceof ShadowRoot)t=t.host;else{if(!(t instanceof Element))break;{const e=t.tagName.toLowerCase();if("kyn-modal"===e||"kyn-side-drawer"===e)return t;t=t.parentNode}}return document.body}async function h(t){var a;if(!t)return console.error("Context is required for getFlatpickrOptions"),{};const{locale:r,dateFormat:o,enableTime:l,twentyFourHourFormat:s,inputEl:d,allowInput:c,minDate:u,maxDate:m,minTime:y,maxTime:f,defaultDate:k,defaultHour:b,defaultMinute:w,enable:g,disable:v,mode:h="single",closeOnSelect:E,wrap:D=!1,noCalendar:T=!1,appendTo:L,onChange:N,onClose:S,onOpen:C,loadLocale:x}=t;let Y;r||console.warn("Locale not provided. Falling back to default."),o||console.warn("Date format not provided. Using default format.");try{Y=await x(r),p(Y)}catch(e){console.warn("Error loading locale, falling back to default:",e),Y=n}const H=r.split("-")[0].toLowerCase(),_=["en","es"].includes(H),F="undefined"!=typeof window&&window.innerWidth>=767,I=o||("time"===h?s?"H:i":"h:i K":"Y-m-d"),K=A(t.inputEl),M=K!==document.body,O={dateFormat:I,mode:"time"===h?"single":h,enableTime:"time"===h||l,noCalendar:"time"===h||T,defaultDate:k,enableSeconds:I.toLowerCase().includes(":s"),allowInput:c||!1,clickOpens:!0,time_24hr:"boolean"==typeof s?s:!_,weekNumbers:!1,static:null!==(a=t.static)&&void 0!==a&&a,wrap:D,showMonths:"range"===h&&F?2:1,monthSelectorType:"static",locale:Y,closeOnSelect:null!=E?E:!("multiple"===h||l),onChange:(e,t,n)=>{N&&N(e,t,n)},onClose:(e,t,n)=>{if("range"===h&&n.calendarContainer){const t=n.calendarContainer.querySelector(".flatpickr-time");0===e.length&&(null==t||t.classList.add("default-time-select"),null==t||t.classList.remove("start-date","end-date"))}S&&S(e,t,n)},onOpen:(e,t,n)=>{C&&C(e,t,n)}};if(M&&(O.appendTo=K,O.static=!1,(O.plugins||(O.plugins=[])).push(i({offset:6,minViewportMargin:8,preferTop:!1}))),"range"===h&&(O.onReady=(e,t,n)=>{if(n.calendarContainer){const e=n.calendarContainer.querySelector(".flatpickr-time");null==e||e.classList.add("default-time-select")}}),d instanceof HTMLInputElement||(O.positionElement=d),u&&(O.minDate=u),m&&(O.maxDate=m),y&&(O.minTime=y),f&&(O.maxTime=f),k)if(!Array.isArray(k)||"range"!==h&&"multiple"!==h){if(!Array.isArray(k)&&"string"==typeof k){let e=null;switch(I){case"Y-m-d":{const[t,n,a]=k.split("-").map(Number);e=isNaN(t)||isNaN(n)||isNaN(a)?null:new Date(t,n-1,a,12);break}case"d-m-Y":{const[t,n,a]=k.split("-").map(Number);e=isNaN(t)||isNaN(n)||isNaN(a)?null:new Date(a,n-1,t,12);break}case"m-d-Y":{const[t,n,a]=k.split("-").map(Number);e=isNaN(t)||isNaN(n)||isNaN(a)?null:new Date(a,t-1,n,12);break}default:e=new Date(k)}O.defaultDate=e||k}}else O.defaultDate=k;return null!=b&&(O.defaultHour=b),null!=w&&(O.defaultMinute=w),g&&g.length>0&&(O.enable=g),v&&v.length>0&&(O.disable=v.map((t=>{if(t instanceof Date)return t;if("number"==typeof t)return new Date(t);if("string"==typeof t){return e.parseDate(t,I)||t}return t}))),L&&(O.appendTo=L),O}function E(e){const t=e||"";return t.includes("H:")||t.includes("h:")||t.toLowerCase().includes(":s")}function D(e,t=!1){if(!e||!e.config)return;const n=e.calendarContainer;if(!n)return;const{minDate:a,maxDate:i}=e.config;if(a&&i){new Date(a).getFullYear()===new Date(i).getFullYear()?n.classList.add("single-year"):n.classList.remove("single-year")}requestAnimationFrame((()=>{if(!e||!e.config)return;const a=e.config.mode;n.setAttribute("role","application"),n.setAttribute("aria-label","Calendar"),n.classList.remove("container-modal","container-body","container-default"),n.classList.add(t?"container-modal":"container-default");const i=n.querySelector(".flatpickr-months");null==i||i.setAttribute("tabindex","0"),null==i||i.setAttribute("role","group"),null==i||i.setAttribute("aria-label","Month and year navigation");const r=n.querySelector(".flatpickr-prev-month");if(null==r||r.setAttribute("tabindex","0"),null==r||r.setAttribute("role","button"),null==r||r.setAttribute("aria-label","Previous month"),r){const t=r;t._kynKeydown&&r.removeEventListener("keydown",t._kynKeydown);const n=t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e.changeMonth(-1))};r.addEventListener("keydown",n),t._kynKeydown=n}const o=n.querySelector(".flatpickr-next-month");if(null==o||o.setAttribute("tabindex","0"),null==o||o.setAttribute("role","button"),null==o||o.setAttribute("aria-label","Next month"),o){const t=o;t._kynKeydown&&o.removeEventListener("keydown",t._kynKeydown);const n=t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e.changeMonth(1))};o.addEventListener("keydown",n),t._kynKeydown=n}const l=n.querySelector(".flatpickr-month"),s=null==l?void 0:l.querySelector("input.numInput.cur-year");if(s){s.tabIndex=0,s.setAttribute("role","spinbutton"),s.setAttribute("aria-label","Year"),e.config.minDate&&s.setAttribute("aria-valuemin",String(new Date(e.config.minDate).getFullYear())),e.config.maxDate&&s.setAttribute("aria-valuemax",String(new Date(e.config.maxDate).getFullYear()));const t=()=>s.setAttribute("aria-valuenow",s.value),n=s;n._kynKeydown&&s.removeEventListener("keydown",n._kynKeydown);const a=n=>{"ArrowUp"===n.key&&(n.preventDefault(),e.changeYear(1),setTimeout(t,0)),"ArrowDown"===n.key&&(n.preventDefault(),e.changeYear(-1),setTimeout(t,0))};s.addEventListener("keydown",a),n._kynKeydown=a,setTimeout(t,0)}const d=n.querySelector(".flatpickr-days");null==d||d.removeAttribute("tabindex"),null==d||d.setAttribute("role","grid"),null==d||d.setAttribute("aria-multiselectable","multiple"===a?"true":"false");const c=Array.from(n.querySelectorAll(".flatpickr-day:not(.flatpickr-disabled)"));c.forEach((e=>{e.tabIndex=0,e.setAttribute("role","range"===a?"gridcell":"button")}));const u=n._keyboardNav;u&&n.removeEventListener("keydown",u);const m=e=>{const t=e.target.closest(".flatpickr-day:not(.flatpickr-disabled)");if(t)switch(e.key){case"Enter":case" ":return e.preventDefault(),void t.click();case"ArrowRight":case"ArrowLeft":case"ArrowDown":case"ArrowUp":{e.preventDefault();const n=c.indexOf(t);let a;switch(e.key){case"ArrowRight":a=n+1;break;case"ArrowLeft":a=n-1;break;case"ArrowDown":a=n+7;break;case"ArrowUp":a=n-7;break;default:return}const i=c[a];return void(i&&i.focus())}}};n.addEventListener("keydown",m),n._keyboardNav=m;const y=n.querySelector("input.flatpickr-hour");if(y){y.tabIndex=0,y.setAttribute("role","spinbutton"),y.setAttribute("aria-label","Hour"),y.setAttribute("aria-valuemin",y.min),y.setAttribute("aria-valuemax",y.max),y.setAttribute("aria-valuenow",y.value);const e=y;e._kynKeydown&&y.removeEventListener("keydown",e._kynKeydown);const t=e=>{"ArrowUp"===e.key&&(e.preventDefault(),y.stepUp()),"ArrowDown"===e.key&&(e.preventDefault(),y.stepDown()),setTimeout((()=>y.setAttribute("aria-valuenow",y.value)),0)};y.addEventListener("keydown",t),e._kynKeydown=t}const p=n.querySelector("input.flatpickr-minute");if(p){p.tabIndex=0,p.setAttribute("role","spinbutton"),p.setAttribute("aria-label","Minute"),p.setAttribute("aria-valuemin",p.min),p.setAttribute("aria-valuemax",p.max),p.setAttribute("aria-valuenow",p.value);const e=p;e._kynKeydown&&p.removeEventListener("keydown",e._kynKeydown);const t=e=>{"ArrowUp"===e.key&&(e.preventDefault(),p.stepUp()),"ArrowDown"===e.key&&(e.preventDefault(),p.stepDown()),setTimeout((()=>p.setAttribute("aria-valuenow",p.value)),0)};p.addEventListener("keydown",t),e._kynKeydown=t}const f=n.querySelector(".flatpickr-am-pm");if(f){f.tabIndex=0,f.setAttribute("role","button"),f.setAttribute("aria-label","Toggle AM/PM");const e=f;e._kynKeydown&&f.removeEventListener("keydown",e._kynKeydown);const t=e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),f.click())};f.addEventListener("keydown",t),e._kynKeydown=t}}))}function T(){document.querySelectorAll(".numInputWrapper").forEach((e=>{const t=e.querySelector(".numInput.cur-year");t&&(e.style.display="",t.style.display="",t.disabled=!1,t.hasAttribute("tabindex")||(t.tabIndex=0))}))}function L(e,t,n,a,i,r){if(!e)return console.warn("Input element is undefined..."),{isValid:!0,validationMessage:""};const o=!e.value.trim(),l=t;let s=e.validity,d=e.validationMessage;l&&o&&(s={...s,valueMissing:!0},d=a),n&&(s={...s,customError:!0},d=n),r.setValidity(s,d,e);return{isValid:!n&&(!i||!o||o&&!l),validationMessage:d}}function N(e,t,n){e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0}))}async function S(e,t,n){e&&e.clear(),t&&(t.value=""),n&&await n()}var C;function x(e,t){return(n,a,i,r)=>{const o=r.dateObj;e===C.END&&null!==t[0]?o.getTime()<=t[0].getTime()&&(o.getTime()===t[0].getTime()?(r.classList.add("flatpickr-locked-date"),r.setAttribute("title",d().dateNotAvailable),r.setAttribute("locked","start"),r.setAttribute("aria-disabled","true")):(r.classList.add("flatpickr-locked-date","flatpickr-disabled"),r.setAttribute("title",d().lockedStartDate))):e===C.START&&null!==t[1]?o.getTime()>=t[1].getTime()&&(o.getTime()===t[1].getTime()?(r.classList.add("flatpickr-locked-date"),r.setAttribute("title",d().lockedEndDate),r.setAttribute("locked","end"),r.setAttribute("aria-disabled","true")):(r.classList.add("flatpickr-locked-date","flatpickr-disabled"),r.setAttribute("title",d().dateNotAvailable))):e===C.NONE&&null!==t[0]&&null!==t[1]&&(o.getTime()===t[0].getTime()?(r.classList.add("flatpickr-locked-date"),r.setAttribute("title",d().dateLocked),r.setAttribute("locked","start"),r.setAttribute("aria-disabled","true")):o.getTime()===t[1].getTime()?(r.classList.add("flatpickr-locked-date"),r.setAttribute("title",d().dateLocked),r.setAttribute("locked","end"),r.setAttribute("aria-disabled","true")):o.getTime()>t[0].getTime()&&o.getTime()<t[1].getTime()?(r.classList.add("flatpickr-locked-date"),r.setAttribute("title",d().dateInSelectedRange)):(r.classList.add("flatpickr-locked-date","flatpickr-disabled"),r.setAttribute("title",d().dateNotAvailable))),r.classList.contains("flatpickr-disabled")&&!r.classList.contains("flatpickr-locked-date")&&r.classList.add("flatpickr-locked-date")}}function Y(e,t,n){return(a,i,r)=>{let o=null,l=null;if(e===C.END&&null!==t[0]&&(o=t[0]),e===C.START&&null!==t[1]&&(l=t[1]),e!==C.NONE||null===t[0]||null===t[1])if(null!==t[0]||null!==t[1]){if(e===C.END&&null!==o){let e=!1;const t=[...a];if(2===a.length&&a[0].getTime()!==o.getTime()?(t[0]=o,e=!0):1===a.length&&(t.splice(0,0,o),e=!0),e)return r.setDate(t,!1),void H(n,t,r.input.value,r)}if(e===C.START&&null!==l){let e=!1;const t=[...a];if(2===a.length&&a[1].getTime()!==l.getTime()?(t[1]=l,e=!0):1===a.length&&(t.push(l),e=!0),e)return r.setDate(t,!1),void H(n,t,r.input.value,r)}H(n,a,i,r)}else H(n,a,i,r);else r.setDate([t[0],t[1]],!1)}}function H(e,t,n,a){try{"function"==typeof e?e(t,n,a):Array.isArray(e)&&e.forEach((e=>{if("function"==typeof e)try{e(t,n,a)}catch(e){console.warn("Error in onChange hook:",e)}}))}catch(e){console.warn("Error calling original onChange handler:",e)}}function _(e,t,n,a){a&&s(a);const i={...e};if(t===C.BOTH)return i;const r=i.onChange;i.clickOpens=!0;try{i.onDayCreate=x(t,n),i.onChange=Y(t,n,r||(()=>{}))}catch(e){console.warn("Error setting up date range editing restrictions:",e)}return i}!function(e){e.BOTH="both",e.START="start",e.END="end",e.NONE="none"}(C||(C={}));export{C as DateRangeEditableMode,o as _defaultCalendarTooltipStrings,_ as applyDateRangeEditingRestrictions,S as clearFlatpickrInput,Y as createDateRangeChangeLockHandler,x as createDateRangeDayLockHandler,N as emitValue,h as getFlatpickrOptions,A as getModalContainer,g as getPlaceholder,d as getTextStrings,m as handleInputClick,y as handleInputFocus,T as hideEmptyYear,k as initializeMultiAnchorFlatpickr,b as initializeSingleAnchorFlatpickr,f as injectFlatpickrStyles,w as isValidDateFormat,v as loadLocale,p as modifyWeekdayShorthands,u as preventFlatpickrOpen,D as setCalendarAttributes,s as setTooltipStrings,E as updateEnableTime,L as validate};
|
|
2
2
|
//# sourceMappingURL=flatpickr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatpickr.js","sources":["../../../src/common/helpers/flatpickr.ts"],"sourcesContent":["import flatpickr from 'flatpickr';\nimport rangePlugin from 'flatpickr/dist/esm/plugins/rangePlugin';\nimport { Instance } from 'flatpickr/dist/types/instance';\nimport { BaseOptions, Hook } from 'flatpickr/dist/types/options';\nimport { Locale } from 'flatpickr/dist/types/locale';\nimport { default as English } from 'flatpickr/dist/esm/l10n/default.js';\nimport { loadLocale as loadLocaleFromLangs } from '../flatpickrLangs';\n\nimport { fixedOverlayPositionPlugin } from '../helpers/flatpickrOverlayPosition';\n\nlet flatpickrStylesInjected = false;\n\nexport const _defaultCalendarTooltipStrings = {\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\nexport type FlatpickrTextStrings = Partial<\n typeof _defaultCalendarTooltipStrings\n>;\n\nlet currentTooltipStrings = { ..._defaultCalendarTooltipStrings };\n\nexport function setTooltipStrings(\n customTextStrings: FlatpickrTextStrings = {}\n): void {\n currentTooltipStrings = {\n ..._defaultCalendarTooltipStrings,\n ...customTextStrings,\n };\n}\n\nexport function getTextStrings(\n customTextStrings: FlatpickrTextStrings = {}\n): typeof _defaultCalendarTooltipStrings {\n return { ...currentTooltipStrings, ...customTextStrings };\n}\n\ninterface BaseFlatpickrContext {\n getFlatpickrOptions: () => Promise<Partial<BaseOptions>>;\n setCalendarAttributes: (instance: Instance) => void;\n setInitialDates?: (instance: Instance) => void;\n}\n\ninterface SingleFlatpickrContext extends BaseFlatpickrContext {\n inputEl: HTMLElement;\n}\n\ninterface RangeFlatpickrContext extends BaseFlatpickrContext {\n inputEl: HTMLElement;\n endinputEl?: HTMLElement;\n}\n\nconst DATE_FORMAT_OPTIONS = {\n 'Y-m-d': 'yyyy-mm-dd',\n 'm-d-Y': 'mm-dd-yyyy',\n 'd-m-Y': 'dd-mm-yyyy',\n 'Y-m-d H:i': 'yyyy-mm-dd —— : ——',\n 'Y-m-d h:i K': 'yyyy-mm-dd —— : ——',\n 'm-d-Y H:i': 'mm-dd-yyyy —— : ——',\n 'm-d-Y h:i K': 'mm-dd-yyyy —— : ——',\n 'd-m-Y H:i': 'dd-mm-yyyy —— : ——',\n 'd-m-Y h:i K': 'dd-mm-yyyy —— : ——',\n 'Y-m-d H:i:s': 'yyyy-mm-dd —— : —— ——',\n 'Y-m-d H:i:S': 'yyyy-mm-dd —— : —— ——',\n 'm-d-Y H:i:s': 'mm-dd-yyyy —— : —— ——',\n 'm-d-Y H:i:S': 'mm-dd-yyyy —— : —— ——',\n 'd-m-Y H:i:s': 'dd-mm-yyyy —— : —— ——',\n 'd-m-Y H:i:S': 'dd-mm-yyyy —— : —— ——',\n} as const;\n\ntype DateFormatOption = keyof typeof DATE_FORMAT_OPTIONS;\n\ninterface FlatpickrOptionsContext {\n locale: string;\n dateFormat?: string;\n /** @deprecated Prefer passing pre-normalized `value` and using setInitialDates in the component. */\n defaultDate?: string | Date | string[] | Date[];\n defaultHour?: number;\n defaultMinute?: number;\n enableTime: boolean;\n twentyFourHourFormat?: boolean;\n endinputEl?: HTMLElement;\n inputEl: HTMLElement;\n allowInput?: boolean;\n minDate?: string | number | Date;\n maxDate?: string | number | Date;\n minTime?: string | number | Date;\n maxTime?: string | number | Date;\n enable?: (string | number | Date)[];\n disable?: (string | number | Date)[];\n onChange?: Hook;\n onClose?: Hook;\n onOpen?: Hook;\n onReady?: Hook;\n loadLocale: (locale: string) => Promise<Partial<Locale>>;\n mode?: 'single' | 'multiple' | 'range' | 'time';\n closeOnSelect?: boolean;\n wrap?: boolean;\n noCalendar?: boolean;\n appendTo?: HTMLElement;\n static?: boolean;\n}\n\nexport function preventFlatpickrOpen(\n event: Event,\n setShouldFlatpickrOpen: (value: boolean) => void\n): void {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n setShouldFlatpickrOpen(false);\n}\n\nexport function handleInputClick(\n setShouldFlatpickrOpen: (value: boolean) => void\n): void {\n setShouldFlatpickrOpen(true);\n}\n\nexport function handleInputFocus(\n shouldFlatpickrOpen: boolean,\n closeFlatpickr: () => void,\n setShouldFlatpickrOpen: (value: boolean) => void\n): void {\n if (!shouldFlatpickrOpen) {\n closeFlatpickr();\n setShouldFlatpickrOpen(true);\n }\n}\n\nexport function modifyWeekdayShorthands(localeOptions: Partial<Locale>): void {\n if (localeOptions.weekdays?.shorthand) {\n localeOptions.weekdays.shorthand = localeOptions.weekdays.shorthand.map(\n (day) => day.charAt(0)\n ) as [string, string, string, string, string, string, string];\n }\n}\n\nexport function injectFlatpickrStyles(customStyle: string): void {\n if (!flatpickrStylesInjected) {\n const styleElement = document.createElement('style');\n styleElement.id = 'flatpickr-custom-styles';\n styleElement.textContent = customStyle;\n document.head.appendChild(styleElement);\n flatpickrStylesInjected = true;\n }\n}\n\nexport async function initializeMultiAnchorFlatpickr(\n context: RangeFlatpickrContext\n): Promise<Instance | undefined> {\n const {\n inputEl,\n endinputEl,\n getFlatpickrOptions,\n setCalendarAttributes,\n setInitialDates,\n } = context;\n\n if (!inputEl) {\n console.error('Cannot initialize Flatpickr: inputEl is undefined');\n return undefined;\n }\n\n try {\n const options = await getFlatpickrOptions();\n\n const getInputElement = (el: HTMLElement): HTMLInputElement => {\n if (el instanceof HTMLInputElement) {\n return el;\n } else {\n try {\n let input = el.querySelector('input') as HTMLInputElement | null;\n if (!input) {\n input = document.createElement('input');\n input.type = 'text';\n input.style.display = 'none';\n if (!el.isConnected) {\n throw new Error('Element is not connected to the DOM');\n }\n el.appendChild(input);\n }\n return input;\n } catch (error) {\n console.error('Error creating or appending input element:', error);\n throw error;\n }\n }\n };\n\n const inputElement = getInputElement(inputEl);\n if (endinputEl) {\n const endInputElement = getInputElement(endinputEl);\n options.plugins = [\n ...(options.plugins || []),\n rangePlugin({ input: endInputElement }),\n ];\n }\n\n const flatpickrInstance = flatpickr(inputElement, options) as Instance;\n\n if (flatpickrInstance) {\n setTimeout(() => {\n if (setCalendarAttributes) {\n setCalendarAttributes(flatpickrInstance);\n }\n }, 0);\n\n if (setInitialDates) {\n setInitialDates(flatpickrInstance);\n }\n\n const __anchorClickHandlers: { el: HTMLElement; fn: EventListener }[] =\n [];\n\n if (!(inputEl instanceof HTMLInputElement)) {\n const handler = () => {\n flatpickrInstance.open();\n };\n inputEl.addEventListener('click', handler);\n __anchorClickHandlers.push({ el: inputEl, fn: handler });\n }\n\n if (endinputEl && !(endinputEl instanceof HTMLInputElement)) {\n const handler = () => {\n flatpickrInstance.open();\n };\n endinputEl.addEventListener('click', handler);\n __anchorClickHandlers.push({ el: endinputEl, fn: handler });\n }\n\n (flatpickrInstance as any).__anchorClickHandlers = __anchorClickHandlers;\n\n return flatpickrInstance;\n } else {\n console.error('Failed to initialize Flatpickr');\n return undefined;\n }\n } catch (error) {\n console.error('Error initializing Flatpickr:', error);\n return undefined;\n }\n}\n\nexport async function initializeSingleAnchorFlatpickr(\n context: SingleFlatpickrContext & { appendTo?: HTMLElement }\n): Promise<Instance | undefined> {\n const {\n inputEl,\n getFlatpickrOptions,\n setCalendarAttributes,\n setInitialDates,\n appendTo,\n } = context;\n if (!inputEl) {\n console.error('Cannot initialize Flatpickr: inputEl is undefined');\n return undefined;\n }\n try {\n const options = await getFlatpickrOptions();\n const effectiveDateFormat =\n options.dateFormat || (options.mode === 'time' ? 'H:i' : 'Y-m-d');\n options.dateFormat = effectiveDateFormat;\n\n let inputElement: HTMLInputElement;\n if (inputEl instanceof HTMLInputElement) {\n inputElement = inputEl;\n options.clickOpens = true;\n } else {\n try {\n inputElement = document.createElement('input');\n inputElement.type = 'text';\n inputElement.style.display = 'none';\n\n const targetElement = appendTo || inputEl;\n if (!targetElement) {\n throw new Error('No valid element to append input to');\n }\n\n targetElement.appendChild(inputElement);\n options.clickOpens = false;\n options.positionElement = inputEl;\n } catch (error) {\n console.error('Error creating input element:', error);\n throw error;\n }\n }\n const flatpickrInstance = flatpickr(inputElement, options) as Instance;\n if (flatpickrInstance) {\n setTimeout(() => {\n if (setCalendarAttributes) {\n setCalendarAttributes(flatpickrInstance);\n }\n }, 0);\n if (setInitialDates) {\n setInitialDates(flatpickrInstance);\n }\n\n if (!(inputEl instanceof HTMLInputElement)) {\n const handler = () => flatpickrInstance.open();\n inputEl.addEventListener('click', handler);\n (flatpickrInstance as any).__anchorClickHandlers = [\n { el: inputEl, fn: handler },\n ];\n }\n\n return flatpickrInstance;\n } else {\n console.error('Failed to initialize Flatpickr');\n return undefined;\n }\n } catch (error) {\n console.error('Error initializing Flatpickr:', error);\n return undefined;\n }\n}\n\nexport function isValidDateFormat(format: string): format is DateFormatOption {\n return format in DATE_FORMAT_OPTIONS;\n}\n\nexport function getPlaceholder(\n dateFormat: string,\n isDateRange?: boolean\n): string {\n if (!dateFormat) {\n return isDateRange ? 'yyyy-mm-dd to yyyy-mm-dd' : 'yyyy-mm-dd';\n }\n\n if (isValidDateFormat(dateFormat)) {\n const placeholder = isDateRange\n ? `${DATE_FORMAT_OPTIONS[dateFormat]} to ${DATE_FORMAT_OPTIONS[dateFormat]}`\n : DATE_FORMAT_OPTIONS[dateFormat];\n return placeholder;\n }\n return 'Select date';\n}\n\nexport function loadLocale(locale: string): Promise<Partial<Locale>> {\n return loadLocaleFromLangs(locale);\n}\n\nexport function getModalContainer(element: HTMLElement): HTMLElement {\n let node: Node | null = element;\n\n while (node) {\n if (node instanceof ShadowRoot) {\n node = node.host;\n continue;\n }\n\n if (node instanceof Element) {\n const tag = node.tagName.toLowerCase();\n if (tag === 'kyn-modal' || tag === 'kyn-side-drawer') {\n return node as HTMLElement;\n }\n node = node.parentNode;\n continue;\n }\n\n break;\n }\n\n return document.body;\n}\n\nexport async function getFlatpickrOptions(\n context: FlatpickrOptionsContext\n): Promise<Partial<BaseOptions>> {\n if (!context) {\n console.error('Context is required for getFlatpickrOptions');\n return {};\n }\n\n const {\n locale,\n dateFormat,\n enableTime,\n twentyFourHourFormat,\n inputEl,\n allowInput,\n minDate,\n maxDate,\n minTime,\n maxTime,\n defaultDate,\n defaultHour,\n defaultMinute,\n enable,\n disable,\n mode = 'single',\n closeOnSelect,\n wrap = false,\n noCalendar = false,\n appendTo,\n onChange,\n onClose,\n onOpen,\n loadLocale,\n } = context;\n\n if (!locale) {\n console.warn('Locale not provided. Falling back to default.');\n }\n\n if (!dateFormat) {\n console.warn('Date format not provided. Using default format.');\n }\n\n let localeOptions;\n try {\n localeOptions = await loadLocale(locale);\n modifyWeekdayShorthands(localeOptions);\n } catch (error) {\n console.warn('Error loading locale, falling back to default:', error);\n localeOptions = English;\n }\n\n const baseLocale = locale.split('-')[0].toLowerCase();\n const isEnglishOr12HourLocale = ['en', 'es'].includes(baseLocale);\n\n const isWideScreen =\n typeof window !== 'undefined' && window.innerWidth >= 767;\n\n const effectiveDateFormat =\n dateFormat ||\n (mode === 'time' ? (twentyFourHourFormat ? 'H:i' : 'h:i K') : 'Y-m-d');\n\n const modalContainer = getModalContainer(context.inputEl);\n const inOverlay = modalContainer !== document.body;\n\n const options: Partial<BaseOptions> = {\n dateFormat: effectiveDateFormat,\n mode: mode === 'time' ? 'single' : mode,\n enableTime: mode === 'time' ? true : enableTime,\n noCalendar: mode === 'time' ? true : noCalendar,\n defaultDate: defaultDate,\n enableSeconds: effectiveDateFormat.toLowerCase().includes(':s'),\n allowInput: allowInput || false,\n clickOpens: true,\n time_24hr:\n typeof twentyFourHourFormat === 'boolean'\n ? twentyFourHourFormat\n : !isEnglishOr12HourLocale,\n weekNumbers: false,\n static: context.static ?? false,\n wrap,\n showMonths: mode === 'range' && isWideScreen ? 2 : 1,\n monthSelectorType: 'static',\n locale: localeOptions,\n closeOnSelect: closeOnSelect ?? !(mode === 'multiple' || enableTime),\n onChange: (selectedDates, dateStr, instance) => {\n onChange && onChange(selectedDates, dateStr, instance);\n },\n onClose: (selectedDates, dateStr, instance) => {\n if (mode === 'range' && instance.calendarContainer) {\n const timeContainer =\n instance.calendarContainer.querySelector('.flatpickr-time');\n if (selectedDates.length === 0) {\n timeContainer?.classList.add('default-time-select');\n timeContainer?.classList.remove('start-date', 'end-date');\n }\n }\n onClose && onClose(selectedDates, dateStr, instance);\n },\n onOpen: (selectedDates, dateStr, instance) => {\n onOpen && onOpen(selectedDates, dateStr, instance);\n },\n };\n\n if (inOverlay) {\n options.appendTo = modalContainer;\n options.static = false;\n (options.plugins ||= []).push(\n fixedOverlayPositionPlugin({\n offset: 6,\n minViewportMargin: 8,\n preferTop: false,\n }) as any\n );\n }\n\n if (mode === 'range') {\n options.onReady = (_, __, instance) => {\n if (instance.calendarContainer) {\n const timeContainer =\n instance.calendarContainer.querySelector('.flatpickr-time');\n timeContainer?.classList.add('default-time-select');\n }\n };\n }\n\n if (!(inputEl instanceof HTMLInputElement)) {\n options.positionElement = inputEl;\n }\n\n if (minDate) options.minDate = minDate;\n if (maxDate) options.maxDate = maxDate;\n if (minTime) options.minTime = minTime;\n if (maxTime) options.maxTime = maxTime;\n\n if (defaultDate) {\n if (\n Array.isArray(defaultDate) &&\n (mode === 'range' || mode === 'multiple')\n ) {\n options.defaultDate = defaultDate;\n } else if (!Array.isArray(defaultDate)) {\n if (typeof defaultDate === 'string') {\n let parsedDate: Date | null = null;\n switch (effectiveDateFormat) {\n case 'Y-m-d': {\n const [year, month, day] = defaultDate.split('-').map(Number);\n parsedDate =\n !isNaN(year) && !isNaN(month) && !isNaN(day)\n ? new Date(year, month - 1, day, 12)\n : null;\n break;\n }\n case 'd-m-Y': {\n const [day, month, year] = defaultDate.split('-').map(Number);\n parsedDate =\n !isNaN(day) && !isNaN(month) && !isNaN(year)\n ? new Date(year, month - 1, day, 12)\n : null;\n break;\n }\n case 'm-d-Y': {\n const [month, day, year] = defaultDate.split('-').map(Number);\n parsedDate =\n !isNaN(month) && !isNaN(day) && !isNaN(year)\n ? new Date(year, month - 1, day, 12)\n : null;\n break;\n }\n default:\n parsedDate = new Date(defaultDate);\n break;\n }\n options.defaultDate = parsedDate || defaultDate;\n }\n }\n }\n if (defaultHour !== undefined && defaultHour !== null)\n options.defaultHour = defaultHour;\n if (defaultMinute !== undefined && defaultMinute !== null)\n options.defaultMinute = defaultMinute;\n if (enable && enable.length > 0) options.enable = enable;\n if (disable && disable.length > 0) {\n options.disable = disable.map((date) => {\n if (date instanceof Date) return date;\n if (typeof date === 'number') return new Date(date);\n if (typeof date === 'string') {\n const parsed = flatpickr.parseDate(date, effectiveDateFormat);\n return parsed || date;\n }\n return date;\n });\n }\n if (appendTo) options.appendTo = appendTo;\n\n return options;\n}\n\nexport function updateEnableTime(dateFormat: string): boolean {\n const df = dateFormat || '';\n return (\n df.includes('H:') || df.includes('h:') || df.toLowerCase().includes(':s')\n );\n}\n\nexport function setCalendarAttributes(\n instance: Instance,\n modalDetected = false\n): void {\n if (!instance || !instance.config) {\n return;\n }\n\n const container = instance.calendarContainer;\n if (!container) return;\n\n const { minDate, maxDate } = instance.config;\n if (minDate && maxDate) {\n const minY = new Date(minDate).getFullYear();\n const maxY = new Date(maxDate).getFullYear();\n if (minY === maxY) {\n container.classList.add('single-year');\n } else {\n container.classList.remove('single-year');\n }\n }\n\n requestAnimationFrame(() => {\n if (!instance || !instance.config) {\n return;\n }\n\n const mode = instance.config.mode as\n | 'single'\n | 'multiple'\n | 'range'\n | 'time';\n\n container.setAttribute('role', 'application');\n container.setAttribute('aria-label', 'Calendar');\n container.classList.remove(\n 'container-modal',\n 'container-body',\n 'container-default'\n );\n container.classList.add(\n modalDetected ? 'container-modal' : 'container-default'\n );\n\n const monthsEl = container.querySelector<HTMLElement>('.flatpickr-months');\n monthsEl?.setAttribute('tabindex', '0');\n monthsEl?.setAttribute('role', 'group');\n monthsEl?.setAttribute('aria-label', 'Month and year navigation');\n\n const prevBtn = container.querySelector<HTMLElement>(\n '.flatpickr-prev-month'\n );\n prevBtn?.setAttribute('tabindex', '0');\n prevBtn?.setAttribute('role', 'button');\n prevBtn?.setAttribute('aria-label', 'Previous month');\n prevBtn?.addEventListener('keydown', (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n instance.changeMonth(-1);\n }\n });\n\n const nextBtn = container.querySelector<HTMLElement>(\n '.flatpickr-next-month'\n );\n nextBtn?.setAttribute('tabindex', '0');\n nextBtn?.setAttribute('role', 'button');\n nextBtn?.setAttribute('aria-label', 'Next month');\n nextBtn?.addEventListener('keydown', (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n instance.changeMonth(1);\n }\n });\n\n const firstMonth = container.querySelector<HTMLElement>('.flatpickr-month');\n const yearInput = firstMonth?.querySelector<HTMLInputElement>(\n 'input.numInput.cur-year'\n );\n if (yearInput) {\n yearInput.tabIndex = 0;\n yearInput.setAttribute('role', 'spinbutton');\n yearInput.setAttribute('aria-label', 'Year');\n if (instance.config.minDate) {\n yearInput.setAttribute(\n 'aria-valuemin',\n String(new Date(instance.config.minDate!).getFullYear())\n );\n }\n if (instance.config.maxDate) {\n yearInput.setAttribute(\n 'aria-valuemax',\n String(new Date(instance.config.maxDate!).getFullYear())\n );\n }\n const updateNow = () =>\n yearInput.setAttribute('aria-valuenow', yearInput.value);\n yearInput.addEventListener('keydown', (e) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n instance.changeYear(1);\n setTimeout(updateNow, 0);\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n instance.changeYear(-1);\n setTimeout(updateNow, 0);\n }\n });\n setTimeout(updateNow, 0);\n }\n\n const daysGrid = container.querySelector<HTMLElement>('.flatpickr-days');\n daysGrid?.removeAttribute('tabindex');\n daysGrid?.setAttribute('role', 'grid');\n daysGrid?.setAttribute(\n 'aria-multiselectable',\n mode === 'multiple' ? 'true' : 'false'\n );\n\n const enabledDays = Array.from(\n container.querySelectorAll<HTMLElement>(\n '.flatpickr-day:not(.flatpickr-disabled)'\n )\n );\n enabledDays.forEach((day) => {\n day.tabIndex = 0;\n day.setAttribute('role', mode === 'range' ? 'gridcell' : 'button');\n });\n\n const oldNav = (container as any)._keyboardNav as EventListener | undefined;\n if (oldNav) container.removeEventListener('keydown', oldNav);\n\n const keyboardNav = (e: KeyboardEvent) => {\n const targetDay = (e.target as HTMLElement).closest<HTMLElement>(\n '.flatpickr-day:not(.flatpickr-disabled)'\n );\n if (!targetDay) return;\n\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n targetDay.click();\n return;\n case 'ArrowRight':\n case 'ArrowLeft':\n case 'ArrowDown':\n case 'ArrowUp': {\n e.preventDefault();\n const idx = enabledDays.indexOf(targetDay);\n let nextIdx: number;\n switch (e.key) {\n case 'ArrowRight':\n nextIdx = idx + 1;\n break;\n case 'ArrowLeft':\n nextIdx = idx - 1;\n break;\n case 'ArrowDown':\n nextIdx = idx + 7;\n break;\n case 'ArrowUp':\n nextIdx = idx - 7;\n break;\n default:\n return;\n }\n const next = enabledDays[nextIdx];\n if (next) next.focus();\n return;\n }\n }\n };\n container.addEventListener('keydown', keyboardNav);\n (container as any)._keyboardNav = keyboardNav;\n\n const hourInput = container.querySelector<HTMLInputElement>(\n 'input.flatpickr-hour'\n );\n if (hourInput) {\n hourInput.tabIndex = 0;\n hourInput.setAttribute('role', 'spinbutton');\n hourInput.setAttribute('aria-label', 'Hour');\n hourInput.setAttribute('aria-valuemin', hourInput.min);\n hourInput.setAttribute('aria-valuemax', hourInput.max);\n hourInput.setAttribute('aria-valuenow', hourInput.value);\n hourInput.addEventListener('keydown', (e) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n hourInput.stepUp();\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n hourInput.stepDown();\n }\n setTimeout(\n () => hourInput.setAttribute('aria-valuenow', hourInput.value),\n 0\n );\n });\n }\n\n const minuteInput = container.querySelector<HTMLInputElement>(\n 'input.flatpickr-minute'\n );\n if (minuteInput) {\n minuteInput.tabIndex = 0;\n minuteInput.setAttribute('role', 'spinbutton');\n minuteInput.setAttribute('aria-label', 'Minute');\n minuteInput.setAttribute('aria-valuemin', minuteInput.min);\n minuteInput.setAttribute('aria-valuemax', minuteInput.max);\n minuteInput.setAttribute('aria-valuenow', minuteInput.value);\n minuteInput.addEventListener('keydown', (e) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n minuteInput.stepUp();\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n minuteInput.stepDown();\n }\n setTimeout(\n () => minuteInput.setAttribute('aria-valuenow', minuteInput.value),\n 0\n );\n });\n }\n\n const ampmToggle = container.querySelector<HTMLElement>('.flatpickr-am-pm');\n if (ampmToggle) {\n ampmToggle.tabIndex = 0;\n ampmToggle.setAttribute('role', 'button');\n ampmToggle.setAttribute('aria-label', 'Toggle AM/PM');\n ampmToggle.addEventListener('keydown', (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n ampmToggle.click();\n }\n });\n }\n });\n}\n\nexport function hideEmptyYear(): void {\n // force year input to always be visible - don't hide it even when min === max\n document.querySelectorAll('.numInputWrapper').forEach((wrapper) => {\n const yearInput = wrapper.querySelector(\n '.numInput.cur-year'\n ) as HTMLInputElement;\n if (yearInput) {\n (wrapper as HTMLElement).style.display = '';\n\n yearInput.style.display = '';\n yearInput.disabled = false;\n\n if (!yearInput.hasAttribute('tabindex')) {\n yearInput.tabIndex = 0;\n }\n }\n });\n}\n\nexport function validate(\n inputEl: HTMLInputElement,\n required: boolean,\n invalidText: string,\n defaultErrorMessage: string,\n hasInteracted: boolean,\n internals: ElementInternals\n): { isValid: boolean; validationMessage: string } {\n if (!inputEl) {\n console.warn('Input element is undefined...');\n return { isValid: true, validationMessage: '' };\n }\n\n const isEmpty = !inputEl.value.trim();\n const isRequired = required;\n\n let validity = inputEl.validity;\n let validationMessage = inputEl.validationMessage;\n\n if (isRequired && isEmpty) {\n validity = { ...validity, valueMissing: true };\n validationMessage = defaultErrorMessage;\n }\n\n if (invalidText) {\n validity = { ...validity, customError: true };\n validationMessage = invalidText;\n }\n\n internals.setValidity(validity, validationMessage, inputEl);\n\n const isValid =\n !invalidText && (!hasInteracted || !isEmpty || (isEmpty && !isRequired));\n\n return { isValid, validationMessage };\n}\n\nexport function emitValue(\n element: HTMLElement,\n eventName: string,\n detail: any\n): void {\n element.dispatchEvent(\n new CustomEvent(eventName, {\n detail,\n bubbles: true,\n composed: true,\n })\n );\n}\n\nexport async function clearFlatpickrInput(\n flatpickrInstance: Instance | undefined,\n inputEl: HTMLInputElement | undefined,\n updateCallback?: () => void\n): Promise<void> {\n if (flatpickrInstance) {\n flatpickrInstance.clear();\n }\n\n if (inputEl) {\n inputEl.value = '';\n }\n\n if (updateCallback) {\n await updateCallback();\n }\n}\n\nexport enum DateRangeEditableMode {\n BOTH = 'both',\n START = 'start',\n END = 'end',\n NONE = 'none',\n}\n\nexport function createDateRangeDayLockHandler(\n editableMode: DateRangeEditableMode,\n currentValue: [Date | null, Date | null]\n): (\n dObj: Date,\n dStr: string,\n fp: Instance,\n dayElem: HTMLElement & { dateObj: Date }\n) => void {\n return (_dObj, _dStr, _fp, dayElem: HTMLElement & { dateObj: Date }) => {\n const currentDate = dayElem.dateObj;\n\n if (\n editableMode === DateRangeEditableMode.END &&\n currentValue[0] !== null\n ) {\n if (currentDate.getTime() <= currentValue[0].getTime()) {\n if (currentDate.getTime() === currentValue[0].getTime()) {\n dayElem.classList.add('flatpickr-locked-date');\n dayElem.setAttribute('title', getTextStrings().dateNotAvailable);\n dayElem.setAttribute('locked', 'start');\n dayElem.setAttribute('aria-disabled', 'true');\n } else {\n dayElem.classList.add('flatpickr-locked-date', 'flatpickr-disabled');\n dayElem.setAttribute('title', getTextStrings().lockedStartDate);\n }\n }\n } else if (\n editableMode === DateRangeEditableMode.START &&\n currentValue[1] !== null\n ) {\n if (currentDate.getTime() >= currentValue[1].getTime()) {\n if (currentDate.getTime() === currentValue[1].getTime()) {\n dayElem.classList.add('flatpickr-locked-date');\n dayElem.setAttribute('title', getTextStrings().lockedEndDate);\n dayElem.setAttribute('locked', 'end');\n dayElem.setAttribute('aria-disabled', 'true');\n } else {\n dayElem.classList.add('flatpickr-locked-date', 'flatpickr-disabled');\n dayElem.setAttribute('title', getTextStrings().dateNotAvailable);\n }\n }\n } else if (\n editableMode === DateRangeEditableMode.NONE &&\n currentValue[0] !== null &&\n currentValue[1] !== null\n ) {\n if (currentDate.getTime() === currentValue[0].getTime()) {\n dayElem.classList.add('flatpickr-locked-date');\n dayElem.setAttribute('title', getTextStrings().dateLocked);\n dayElem.setAttribute('locked', 'start');\n dayElem.setAttribute('aria-disabled', 'true');\n } else if (currentDate.getTime() === currentValue[1].getTime()) {\n dayElem.classList.add('flatpickr-locked-date');\n dayElem.setAttribute('title', getTextStrings().dateLocked);\n dayElem.setAttribute('locked', 'end');\n dayElem.setAttribute('aria-disabled', 'true');\n } else if (\n currentDate.getTime() > currentValue[0].getTime() &&\n currentDate.getTime() < currentValue[1].getTime()\n ) {\n dayElem.classList.add('flatpickr-locked-date');\n dayElem.setAttribute('title', getTextStrings().dateInSelectedRange);\n } else {\n dayElem.classList.add('flatpickr-locked-date', 'flatpickr-disabled');\n dayElem.setAttribute('title', getTextStrings().dateNotAvailable);\n }\n }\n\n if (\n dayElem.classList.contains('flatpickr-disabled') &&\n !dayElem.classList.contains('flatpickr-locked-date')\n ) {\n dayElem.classList.add('flatpickr-locked-date');\n }\n };\n}\n\nexport function createDateRangeChangeLockHandler(\n editableMode: DateRangeEditableMode,\n currentValue: [Date | null, Date | null],\n originalOnChange: Hook | Hook[]\n): (selectedDates: Date[], dateStr: string, instance: Instance) => void {\n return (selectedDates, dateStr, instance) => {\n let lockedStartDate: Date | null = null;\n let lockedEndDate: Date | null = null;\n\n if (\n editableMode === DateRangeEditableMode.END &&\n currentValue[0] !== null\n ) {\n lockedStartDate = currentValue[0];\n }\n if (\n editableMode === DateRangeEditableMode.START &&\n currentValue[1] !== null\n ) {\n lockedEndDate = currentValue[1];\n }\n\n if (editableMode === DateRangeEditableMode.NONE) {\n if (currentValue[0] !== null && currentValue[1] !== null) {\n instance.setDate([currentValue[0], currentValue[1]], false);\n return;\n }\n }\n\n if (currentValue[0] === null && currentValue[1] === null) {\n callOriginalOnChange(originalOnChange, selectedDates, dateStr, instance);\n return;\n }\n\n if (\n editableMode === DateRangeEditableMode.END &&\n lockedStartDate !== null\n ) {\n let modified = false;\n const newDates = [...selectedDates];\n\n if (\n selectedDates.length === 2 &&\n selectedDates[0].getTime() !== lockedStartDate.getTime()\n ) {\n newDates[0] = lockedStartDate;\n modified = true;\n } else if (selectedDates.length === 1) {\n newDates.splice(0, 0, lockedStartDate);\n modified = true;\n }\n\n if (modified) {\n instance.setDate(newDates, false);\n callOriginalOnChange(\n originalOnChange,\n newDates,\n instance.input.value,\n instance\n );\n return;\n }\n }\n\n if (\n editableMode === DateRangeEditableMode.START &&\n lockedEndDate !== null\n ) {\n let modified = false;\n const newDates = [...selectedDates];\n\n if (\n selectedDates.length === 2 &&\n selectedDates[1].getTime() !== lockedEndDate.getTime()\n ) {\n newDates[1] = lockedEndDate;\n modified = true;\n } else if (selectedDates.length === 1) {\n newDates.push(lockedEndDate);\n modified = true;\n }\n\n if (modified) {\n instance.setDate(newDates, false);\n callOriginalOnChange(\n originalOnChange,\n newDates,\n instance.input.value,\n instance\n );\n return;\n }\n }\n\n callOriginalOnChange(originalOnChange, selectedDates, dateStr, instance);\n };\n}\n\nfunction callOriginalOnChange(\n originalOnChange: Hook | Hook[],\n selectedDates: Date[],\n dateStr: string,\n instance: Instance\n): void {\n try {\n if (typeof originalOnChange === 'function') {\n originalOnChange(selectedDates, dateStr, instance);\n } else if (Array.isArray(originalOnChange)) {\n originalOnChange.forEach((hook) => {\n if (typeof hook === 'function') {\n try {\n hook(selectedDates, dateStr, instance);\n } catch (e) {\n console.warn('Error in onChange hook:', e);\n }\n }\n });\n }\n } catch (e) {\n console.warn('Error calling original onChange handler:', e);\n }\n}\n\nexport function applyDateRangeEditingRestrictions(\n options: Partial<BaseOptions>,\n editableMode: DateRangeEditableMode,\n currentValue: [Date | null, Date | null],\n tooltipStrings?: FlatpickrTextStrings\n): Partial<BaseOptions> {\n if (tooltipStrings) {\n setTooltipStrings(tooltipStrings);\n }\n const newOptions = { ...options };\n\n if (editableMode === DateRangeEditableMode.BOTH) {\n return newOptions;\n }\n\n const originalOnChange = newOptions.onChange;\n\n newOptions.clickOpens = true;\n\n try {\n newOptions.onDayCreate = createDateRangeDayLockHandler(\n editableMode,\n currentValue\n ) as any;\n\n newOptions.onChange = createDateRangeChangeLockHandler(\n editableMode,\n currentValue,\n originalOnChange || (() => {})\n );\n } catch (e) {\n console.warn('Error setting up date range editing restrictions:', e);\n }\n\n return newOptions;\n}\n"],"names":["flatpickrStylesInjected","_defaultCalendarTooltipStrings","lockedStartDate","lockedEndDate","dateLocked","dateNotAvailable","dateInSelectedRange","currentTooltipStrings","setTooltipStrings","customTextStrings","getTextStrings","DATE_FORMAT_OPTIONS","preventFlatpickrOpen","event","setShouldFlatpickrOpen","preventDefault","stopPropagation","stopImmediatePropagation","handleInputClick","handleInputFocus","shouldFlatpickrOpen","closeFlatpickr","modifyWeekdayShorthands","localeOptions","weekdays","_a","shorthand","map","day","charAt","injectFlatpickrStyles","customStyle","styleElement","document","createElement","id","textContent","head","appendChild","async","initializeMultiAnchorFlatpickr","context","inputEl","endinputEl","getFlatpickrOptions","setCalendarAttributes","setInitialDates","options","getInputElement","el","HTMLInputElement","input","querySelector","type","style","display","isConnected","Error","error","console","inputElement","endInputElement","plugins","rangePlugin","flatpickrInstance","flatpickr","setTimeout","__anchorClickHandlers","handler","open","addEventListener","push","fn","initializeSingleAnchorFlatpickr","appendTo","effectiveDateFormat","dateFormat","mode","clickOpens","targetElement","positionElement","isValidDateFormat","format","getPlaceholder","isDateRange","loadLocale","locale","loadLocaleFromLangs","getModalContainer","element","node","ShadowRoot","host","Element","tag","tagName","toLowerCase","parentNode","body","enableTime","twentyFourHourFormat","allowInput","minDate","maxDate","minTime","maxTime","defaultDate","defaultHour","defaultMinute","enable","disable","closeOnSelect","wrap","noCalendar","onChange","onClose","onOpen","warn","English","baseLocale","split","isEnglishOr12HourLocale","includes","isWideScreen","window","innerWidth","modalContainer","inOverlay","enableSeconds","time_24hr","weekNumbers","static","showMonths","monthSelectorType","selectedDates","dateStr","instance","calendarContainer","timeContainer","length","classList","add","remove","fixedOverlayPositionPlugin","offset","minViewportMargin","preferTop","onReady","_","__","Array","isArray","parsedDate","year","month","Number","isNaN","Date","date","parseDate","updateEnableTime","df","modalDetected","config","container","getFullYear","requestAnimationFrame","setAttribute","monthsEl","prevBtn","e","key","changeMonth","nextBtn","firstMonth","yearInput","tabIndex","String","updateNow","value","changeYear","daysGrid","removeAttribute","enabledDays","from","querySelectorAll","forEach","oldNav","_keyboardNav","removeEventListener","keyboardNav","targetDay","target","closest","click","idx","indexOf","nextIdx","next","focus","hourInput","min","max","stepUp","stepDown","minuteInput","ampmToggle","hideEmptyYear","wrapper","disabled","hasAttribute","validate","required","invalidText","defaultErrorMessage","hasInteracted","internals","isValid","validationMessage","isEmpty","trim","isRequired","validity","valueMissing","customError","setValidity","emitValue","eventName","detail","dispatchEvent","CustomEvent","bubbles","composed","clearFlatpickrInput","updateCallback","clear","DateRangeEditableMode","createDateRangeDayLockHandler","editableMode","currentValue","_dObj","_dStr","_fp","dayElem","currentDate","dateObj","END","getTime","START","NONE","contains","createDateRangeChangeLockHandler","originalOnChange","modified","newDates","splice","setDate","callOriginalOnChange","hook","applyDateRangeEditingRestrictions","tooltipStrings","newOptions","BOTH","onDayCreate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"flatpickr.js","sources":["../../../src/common/helpers/flatpickr.ts"],"sourcesContent":["import flatpickr from 'flatpickr';\nimport rangePlugin from 'flatpickr/dist/esm/plugins/rangePlugin';\nimport { Instance } from 'flatpickr/dist/types/instance';\nimport { BaseOptions, Hook } from 'flatpickr/dist/types/options';\nimport { Locale } from 'flatpickr/dist/types/locale';\nimport { default as English } from 'flatpickr/dist/esm/l10n/default.js';\nimport { loadLocale as loadLocaleFromLangs } from '../flatpickrLangs';\n\nimport { fixedOverlayPositionPlugin } from '../helpers/flatpickrOverlayPosition';\n\nlet flatpickrStylesInjected = false;\n\nexport const _defaultCalendarTooltipStrings = {\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\nexport type FlatpickrTextStrings = Partial<\n typeof _defaultCalendarTooltipStrings\n>;\n\nlet currentTooltipStrings = { ..._defaultCalendarTooltipStrings };\n\nexport function setTooltipStrings(\n customTextStrings: FlatpickrTextStrings = {}\n): void {\n currentTooltipStrings = {\n ..._defaultCalendarTooltipStrings,\n ...customTextStrings,\n };\n}\n\nexport function getTextStrings(\n customTextStrings: FlatpickrTextStrings = {}\n): typeof _defaultCalendarTooltipStrings {\n return { ...currentTooltipStrings, ...customTextStrings };\n}\n\ninterface BaseFlatpickrContext {\n getFlatpickrOptions: () => Promise<Partial<BaseOptions>>;\n setCalendarAttributes: (instance: Instance) => void;\n setInitialDates?: (instance: Instance) => void;\n}\n\ninterface SingleFlatpickrContext extends BaseFlatpickrContext {\n inputEl: HTMLElement;\n}\n\ninterface RangeFlatpickrContext extends BaseFlatpickrContext {\n inputEl: HTMLElement;\n endinputEl?: HTMLElement;\n}\n\nconst DATE_FORMAT_OPTIONS = {\n 'Y-m-d': 'yyyy-mm-dd',\n 'm-d-Y': 'mm-dd-yyyy',\n 'd-m-Y': 'dd-mm-yyyy',\n 'Y-m-d H:i': 'yyyy-mm-dd —— : ——',\n 'Y-m-d h:i K': 'yyyy-mm-dd —— : ——',\n 'm-d-Y H:i': 'mm-dd-yyyy —— : ——',\n 'm-d-Y h:i K': 'mm-dd-yyyy —— : ——',\n 'd-m-Y H:i': 'dd-mm-yyyy —— : ——',\n 'd-m-Y h:i K': 'dd-mm-yyyy —— : ——',\n 'Y-m-d H:i:s': 'yyyy-mm-dd —— : —— ——',\n 'Y-m-d H:i:S': 'yyyy-mm-dd —— : —— ——',\n 'm-d-Y H:i:s': 'mm-dd-yyyy —— : —— ——',\n 'm-d-Y H:i:S': 'mm-dd-yyyy —— : —— ——',\n 'd-m-Y H:i:s': 'dd-mm-yyyy —— : —— ——',\n 'd-m-Y H:i:S': 'dd-mm-yyyy —— : —— ——',\n} as const;\n\ntype DateFormatOption = keyof typeof DATE_FORMAT_OPTIONS;\n\ninterface FlatpickrOptionsContext {\n locale: string;\n dateFormat?: string;\n /** @deprecated Prefer passing pre-normalized `value` and using setInitialDates in the component. */\n defaultDate?: string | Date | string[] | Date[];\n defaultHour?: number;\n defaultMinute?: number;\n enableTime: boolean;\n twentyFourHourFormat?: boolean;\n endinputEl?: HTMLElement;\n inputEl: HTMLElement;\n allowInput?: boolean;\n minDate?: string | number | Date;\n maxDate?: string | number | Date;\n minTime?: string | number | Date;\n maxTime?: string | number | Date;\n enable?: (string | number | Date)[];\n disable?: (string | number | Date)[];\n onChange?: Hook;\n onClose?: Hook;\n onOpen?: Hook;\n onReady?: Hook;\n loadLocale: (locale: string) => Promise<Partial<Locale>>;\n mode?: 'single' | 'multiple' | 'range' | 'time';\n closeOnSelect?: boolean;\n wrap?: boolean;\n noCalendar?: boolean;\n appendTo?: HTMLElement;\n static?: boolean;\n}\n\nexport function preventFlatpickrOpen(\n event: Event,\n setShouldFlatpickrOpen: (value: boolean) => void\n): void {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n setShouldFlatpickrOpen(false);\n}\n\nexport function handleInputClick(\n setShouldFlatpickrOpen: (value: boolean) => void\n): void {\n setShouldFlatpickrOpen(true);\n}\n\nexport function handleInputFocus(\n shouldFlatpickrOpen: boolean,\n closeFlatpickr: () => void,\n setShouldFlatpickrOpen: (value: boolean) => void\n): void {\n if (!shouldFlatpickrOpen) {\n closeFlatpickr();\n setShouldFlatpickrOpen(true);\n }\n}\n\nexport function modifyWeekdayShorthands(localeOptions: Partial<Locale>): void {\n if (localeOptions.weekdays?.shorthand) {\n localeOptions.weekdays.shorthand = localeOptions.weekdays.shorthand.map(\n (day) => day.charAt(0)\n ) as [string, string, string, string, string, string, string];\n }\n}\n\nexport function injectFlatpickrStyles(customStyle: string): void {\n if (!flatpickrStylesInjected) {\n const styleElement = document.createElement('style');\n styleElement.id = 'flatpickr-custom-styles';\n styleElement.textContent = customStyle;\n document.head.appendChild(styleElement);\n flatpickrStylesInjected = true;\n }\n}\n\nexport async function initializeMultiAnchorFlatpickr(\n context: RangeFlatpickrContext\n): Promise<Instance | undefined> {\n const {\n inputEl,\n endinputEl,\n getFlatpickrOptions,\n setCalendarAttributes,\n setInitialDates,\n } = context;\n\n if (!inputEl) {\n console.error('Cannot initialize Flatpickr: inputEl is undefined');\n return undefined;\n }\n\n try {\n const options = await getFlatpickrOptions();\n\n const getInputElement = (el: HTMLElement): HTMLInputElement => {\n if (el instanceof HTMLInputElement) {\n return el;\n } else {\n try {\n let input = el.querySelector('input') as HTMLInputElement | null;\n if (!input) {\n input = document.createElement('input');\n input.type = 'text';\n input.style.display = 'none';\n if (!el.isConnected) {\n throw new Error('Element is not connected to the DOM');\n }\n el.appendChild(input);\n }\n return input;\n } catch (error) {\n console.error('Error creating or appending input element:', error);\n throw error;\n }\n }\n };\n\n const inputElement = getInputElement(inputEl);\n if (endinputEl) {\n const endInputElement = getInputElement(endinputEl);\n options.plugins = [\n ...(options.plugins || []),\n rangePlugin({ input: endInputElement }),\n ];\n }\n\n const flatpickrInstance = flatpickr(inputElement, options) as Instance;\n\n if (flatpickrInstance) {\n setTimeout(() => {\n if (setCalendarAttributes) {\n setCalendarAttributes(flatpickrInstance);\n }\n }, 0);\n\n if (setInitialDates) {\n setInitialDates(flatpickrInstance);\n }\n\n const __anchorClickHandlers: { el: HTMLElement; fn: EventListener }[] =\n [];\n\n if (!(inputEl instanceof HTMLInputElement)) {\n const handler = () => {\n flatpickrInstance.open();\n };\n inputEl.addEventListener('click', handler);\n __anchorClickHandlers.push({ el: inputEl, fn: handler });\n }\n\n if (endinputEl && !(endinputEl instanceof HTMLInputElement)) {\n const handler = () => {\n flatpickrInstance.open();\n };\n endinputEl.addEventListener('click', handler);\n __anchorClickHandlers.push({ el: endinputEl, fn: handler });\n }\n\n (flatpickrInstance as any).__anchorClickHandlers = __anchorClickHandlers;\n\n return flatpickrInstance;\n } else {\n console.error('Failed to initialize Flatpickr');\n return undefined;\n }\n } catch (error) {\n console.error('Error initializing Flatpickr:', error);\n return undefined;\n }\n}\n\nexport async function initializeSingleAnchorFlatpickr(\n context: SingleFlatpickrContext & { appendTo?: HTMLElement }\n): Promise<Instance | undefined> {\n const {\n inputEl,\n getFlatpickrOptions,\n setCalendarAttributes,\n setInitialDates,\n appendTo,\n } = context;\n if (!inputEl) {\n console.error('Cannot initialize Flatpickr: inputEl is undefined');\n return undefined;\n }\n try {\n const options = await getFlatpickrOptions();\n const effectiveDateFormat =\n options.dateFormat || (options.mode === 'time' ? 'H:i' : 'Y-m-d');\n options.dateFormat = effectiveDateFormat;\n\n let inputElement: HTMLInputElement;\n if (inputEl instanceof HTMLInputElement) {\n inputElement = inputEl;\n options.clickOpens = true;\n } else {\n try {\n inputElement = document.createElement('input');\n inputElement.type = 'text';\n inputElement.style.display = 'none';\n\n const targetElement = appendTo || inputEl;\n if (!targetElement) {\n throw new Error('No valid element to append input to');\n }\n\n targetElement.appendChild(inputElement);\n options.clickOpens = false;\n options.positionElement = inputEl;\n } catch (error) {\n console.error('Error creating input element:', error);\n throw error;\n }\n }\n const flatpickrInstance = flatpickr(inputElement, options) as Instance;\n if (flatpickrInstance) {\n setTimeout(() => {\n if (setCalendarAttributes) {\n setCalendarAttributes(flatpickrInstance);\n }\n }, 0);\n if (setInitialDates) {\n setInitialDates(flatpickrInstance);\n }\n\n if (!(inputEl instanceof HTMLInputElement)) {\n const handler = () => flatpickrInstance.open();\n inputEl.addEventListener('click', handler);\n (flatpickrInstance as any).__anchorClickHandlers = [\n { el: inputEl, fn: handler },\n ];\n }\n\n return flatpickrInstance;\n } else {\n console.error('Failed to initialize Flatpickr');\n return undefined;\n }\n } catch (error) {\n console.error('Error initializing Flatpickr:', error);\n return undefined;\n }\n}\n\nexport function isValidDateFormat(format: string): format is DateFormatOption {\n return format in DATE_FORMAT_OPTIONS;\n}\n\nexport function getPlaceholder(\n dateFormat: string,\n isDateRange?: boolean\n): string {\n if (!dateFormat) {\n return isDateRange ? 'yyyy-mm-dd to yyyy-mm-dd' : 'yyyy-mm-dd';\n }\n\n if (isValidDateFormat(dateFormat)) {\n const placeholder = isDateRange\n ? `${DATE_FORMAT_OPTIONS[dateFormat]} to ${DATE_FORMAT_OPTIONS[dateFormat]}`\n : DATE_FORMAT_OPTIONS[dateFormat];\n return placeholder;\n }\n return 'Select date';\n}\n\nexport function loadLocale(locale: string): Promise<Partial<Locale>> {\n return loadLocaleFromLangs(locale);\n}\n\nexport function getModalContainer(element: HTMLElement): HTMLElement {\n let node: Node | null = element;\n\n while (node) {\n if (node instanceof ShadowRoot) {\n node = node.host;\n continue;\n }\n\n if (node instanceof Element) {\n const tag = node.tagName.toLowerCase();\n if (tag === 'kyn-modal' || tag === 'kyn-side-drawer') {\n return node as HTMLElement;\n }\n node = node.parentNode;\n continue;\n }\n\n break;\n }\n\n return document.body;\n}\n\nexport async function getFlatpickrOptions(\n context: FlatpickrOptionsContext\n): Promise<Partial<BaseOptions>> {\n if (!context) {\n console.error('Context is required for getFlatpickrOptions');\n return {};\n }\n\n const {\n locale,\n dateFormat,\n enableTime,\n twentyFourHourFormat,\n inputEl,\n allowInput,\n minDate,\n maxDate,\n minTime,\n maxTime,\n defaultDate,\n defaultHour,\n defaultMinute,\n enable,\n disable,\n mode = 'single',\n closeOnSelect,\n wrap = false,\n noCalendar = false,\n appendTo,\n onChange,\n onClose,\n onOpen,\n loadLocale,\n } = context;\n\n if (!locale) {\n console.warn('Locale not provided. Falling back to default.');\n }\n\n if (!dateFormat) {\n console.warn('Date format not provided. Using default format.');\n }\n\n let localeOptions;\n try {\n localeOptions = await loadLocale(locale);\n modifyWeekdayShorthands(localeOptions);\n } catch (error) {\n console.warn('Error loading locale, falling back to default:', error);\n localeOptions = English;\n }\n\n const baseLocale = locale.split('-')[0].toLowerCase();\n const isEnglishOr12HourLocale = ['en', 'es'].includes(baseLocale);\n\n const isWideScreen =\n typeof window !== 'undefined' && window.innerWidth >= 767;\n\n const effectiveDateFormat =\n dateFormat ||\n (mode === 'time' ? (twentyFourHourFormat ? 'H:i' : 'h:i K') : 'Y-m-d');\n\n const modalContainer = getModalContainer(context.inputEl);\n const inOverlay = modalContainer !== document.body;\n\n const options: Partial<BaseOptions> = {\n dateFormat: effectiveDateFormat,\n mode: mode === 'time' ? 'single' : mode,\n enableTime: mode === 'time' ? true : enableTime,\n noCalendar: mode === 'time' ? true : noCalendar,\n defaultDate: defaultDate,\n enableSeconds: effectiveDateFormat.toLowerCase().includes(':s'),\n allowInput: allowInput || false,\n clickOpens: true,\n time_24hr:\n typeof twentyFourHourFormat === 'boolean'\n ? twentyFourHourFormat\n : !isEnglishOr12HourLocale,\n weekNumbers: false,\n static: context.static ?? false,\n wrap,\n showMonths: mode === 'range' && isWideScreen ? 2 : 1,\n monthSelectorType: 'static',\n locale: localeOptions,\n closeOnSelect: closeOnSelect ?? !(mode === 'multiple' || enableTime),\n onChange: (selectedDates, dateStr, instance) => {\n onChange && onChange(selectedDates, dateStr, instance);\n },\n onClose: (selectedDates, dateStr, instance) => {\n if (mode === 'range' && instance.calendarContainer) {\n const timeContainer =\n instance.calendarContainer.querySelector('.flatpickr-time');\n if (selectedDates.length === 0) {\n timeContainer?.classList.add('default-time-select');\n timeContainer?.classList.remove('start-date', 'end-date');\n }\n }\n onClose && onClose(selectedDates, dateStr, instance);\n },\n onOpen: (selectedDates, dateStr, instance) => {\n onOpen && onOpen(selectedDates, dateStr, instance);\n },\n };\n\n if (inOverlay) {\n options.appendTo = modalContainer;\n options.static = false;\n (options.plugins ||= []).push(\n fixedOverlayPositionPlugin({\n offset: 6,\n minViewportMargin: 8,\n preferTop: false,\n }) as any\n );\n }\n\n if (mode === 'range') {\n options.onReady = (_, __, instance) => {\n if (instance.calendarContainer) {\n const timeContainer =\n instance.calendarContainer.querySelector('.flatpickr-time');\n timeContainer?.classList.add('default-time-select');\n }\n };\n }\n\n if (!(inputEl instanceof HTMLInputElement)) {\n options.positionElement = inputEl;\n }\n\n if (minDate) options.minDate = minDate;\n if (maxDate) options.maxDate = maxDate;\n if (minTime) options.minTime = minTime;\n if (maxTime) options.maxTime = maxTime;\n\n if (defaultDate) {\n if (\n Array.isArray(defaultDate) &&\n (mode === 'range' || mode === 'multiple')\n ) {\n options.defaultDate = defaultDate;\n } else if (!Array.isArray(defaultDate)) {\n if (typeof defaultDate === 'string') {\n let parsedDate: Date | null = null;\n switch (effectiveDateFormat) {\n case 'Y-m-d': {\n const [year, month, day] = defaultDate.split('-').map(Number);\n parsedDate =\n !isNaN(year) && !isNaN(month) && !isNaN(day)\n ? new Date(year, month - 1, day, 12)\n : null;\n break;\n }\n case 'd-m-Y': {\n const [day, month, year] = defaultDate.split('-').map(Number);\n parsedDate =\n !isNaN(day) && !isNaN(month) && !isNaN(year)\n ? new Date(year, month - 1, day, 12)\n : null;\n break;\n }\n case 'm-d-Y': {\n const [month, day, year] = defaultDate.split('-').map(Number);\n parsedDate =\n !isNaN(month) && !isNaN(day) && !isNaN(year)\n ? new Date(year, month - 1, day, 12)\n : null;\n break;\n }\n default:\n parsedDate = new Date(defaultDate);\n break;\n }\n options.defaultDate = parsedDate || defaultDate;\n }\n }\n }\n if (defaultHour !== undefined && defaultHour !== null)\n options.defaultHour = defaultHour;\n if (defaultMinute !== undefined && defaultMinute !== null)\n options.defaultMinute = defaultMinute;\n if (enable && enable.length > 0) options.enable = enable;\n if (disable && disable.length > 0) {\n options.disable = disable.map((date) => {\n if (date instanceof Date) return date;\n if (typeof date === 'number') return new Date(date);\n if (typeof date === 'string') {\n const parsed = flatpickr.parseDate(date, effectiveDateFormat);\n return parsed || date;\n }\n return date;\n });\n }\n if (appendTo) options.appendTo = appendTo;\n\n return options;\n}\n\nexport function updateEnableTime(dateFormat: string): boolean {\n const df = dateFormat || '';\n return (\n df.includes('H:') || df.includes('h:') || df.toLowerCase().includes(':s')\n );\n}\n\nexport function setCalendarAttributes(\n instance: Instance,\n modalDetected = false\n): void {\n if (!instance || !instance.config) {\n return;\n }\n\n const container = instance.calendarContainer;\n if (!container) return;\n\n const { minDate, maxDate } = instance.config;\n if (minDate && maxDate) {\n const minY = new Date(minDate).getFullYear();\n const maxY = new Date(maxDate).getFullYear();\n if (minY === maxY) {\n container.classList.add('single-year');\n } else {\n container.classList.remove('single-year');\n }\n }\n\n requestAnimationFrame(() => {\n if (!instance || !instance.config) {\n return;\n }\n\n const mode = instance.config.mode as\n | 'single'\n | 'multiple'\n | 'range'\n | 'time';\n\n container.setAttribute('role', 'application');\n container.setAttribute('aria-label', 'Calendar');\n container.classList.remove(\n 'container-modal',\n 'container-body',\n 'container-default'\n );\n container.classList.add(\n modalDetected ? 'container-modal' : 'container-default'\n );\n\n const monthsEl = container.querySelector<HTMLElement>('.flatpickr-months');\n monthsEl?.setAttribute('tabindex', '0');\n monthsEl?.setAttribute('role', 'group');\n monthsEl?.setAttribute('aria-label', 'Month and year navigation');\n\n const prevBtn = container.querySelector<HTMLElement>(\n '.flatpickr-prev-month'\n );\n prevBtn?.setAttribute('tabindex', '0');\n prevBtn?.setAttribute('role', 'button');\n prevBtn?.setAttribute('aria-label', 'Previous month');\n if (prevBtn) {\n const anyPrev = prevBtn as any;\n if (anyPrev._kynKeydown) {\n prevBtn.removeEventListener('keydown', anyPrev._kynKeydown);\n }\n const prevKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n instance.changeMonth(-1);\n }\n };\n prevBtn.addEventListener('keydown', prevKeydown);\n anyPrev._kynKeydown = prevKeydown;\n }\n\n const nextBtn = container.querySelector<HTMLElement>(\n '.flatpickr-next-month'\n );\n nextBtn?.setAttribute('tabindex', '0');\n nextBtn?.setAttribute('role', 'button');\n nextBtn?.setAttribute('aria-label', 'Next month');\n if (nextBtn) {\n const anyNext = nextBtn as any;\n if (anyNext._kynKeydown) {\n nextBtn.removeEventListener('keydown', anyNext._kynKeydown);\n }\n const nextKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n instance.changeMonth(1);\n }\n };\n nextBtn.addEventListener('keydown', nextKeydown);\n anyNext._kynKeydown = nextKeydown;\n }\n\n const firstMonth = container.querySelector<HTMLElement>('.flatpickr-month');\n const yearInput = firstMonth?.querySelector<HTMLInputElement>(\n 'input.numInput.cur-year'\n );\n if (yearInput) {\n yearInput.tabIndex = 0;\n yearInput.setAttribute('role', 'spinbutton');\n yearInput.setAttribute('aria-label', 'Year');\n if (instance.config.minDate) {\n yearInput.setAttribute(\n 'aria-valuemin',\n String(new Date(instance.config.minDate!).getFullYear())\n );\n }\n if (instance.config.maxDate) {\n yearInput.setAttribute(\n 'aria-valuemax',\n String(new Date(instance.config.maxDate!).getFullYear())\n );\n }\n const updateNow = () =>\n yearInput.setAttribute('aria-valuenow', yearInput.value);\n\n const anyYear = yearInput as any;\n if (anyYear._kynKeydown) {\n yearInput.removeEventListener('keydown', anyYear._kynKeydown);\n }\n\n const yearKeydown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n instance.changeYear(1);\n setTimeout(updateNow, 0);\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n instance.changeYear(-1);\n setTimeout(updateNow, 0);\n }\n };\n\n yearInput.addEventListener('keydown', yearKeydown);\n anyYear._kynKeydown = yearKeydown;\n setTimeout(updateNow, 0);\n }\n\n const daysGrid = container.querySelector<HTMLElement>('.flatpickr-days');\n daysGrid?.removeAttribute('tabindex');\n daysGrid?.setAttribute('role', 'grid');\n daysGrid?.setAttribute(\n 'aria-multiselectable',\n mode === 'multiple' ? 'true' : 'false'\n );\n\n const enabledDays = Array.from(\n container.querySelectorAll<HTMLElement>(\n '.flatpickr-day:not(.flatpickr-disabled)'\n )\n );\n enabledDays.forEach((day) => {\n day.tabIndex = 0;\n day.setAttribute('role', mode === 'range' ? 'gridcell' : 'button');\n });\n\n const oldNav = (container as any)._keyboardNav as EventListener | undefined;\n if (oldNav) container.removeEventListener('keydown', oldNav);\n\n const keyboardNav = (e: KeyboardEvent) => {\n const targetDay = (e.target as HTMLElement).closest<HTMLElement>(\n '.flatpickr-day:not(.flatpickr-disabled)'\n );\n if (!targetDay) return;\n\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n targetDay.click();\n return;\n case 'ArrowRight':\n case 'ArrowLeft':\n case 'ArrowDown':\n case 'ArrowUp': {\n e.preventDefault();\n const idx = enabledDays.indexOf(targetDay);\n let nextIdx: number;\n switch (e.key) {\n case 'ArrowRight':\n nextIdx = idx + 1;\n break;\n case 'ArrowLeft':\n nextIdx = idx - 1;\n break;\n case 'ArrowDown':\n nextIdx = idx + 7;\n break;\n case 'ArrowUp':\n nextIdx = idx - 7;\n break;\n default:\n return;\n }\n const next = enabledDays[nextIdx];\n if (next) next.focus();\n return;\n }\n }\n };\n container.addEventListener('keydown', keyboardNav);\n (container as any)._keyboardNav = keyboardNav;\n\n const hourInput = container.querySelector<HTMLInputElement>(\n 'input.flatpickr-hour'\n );\n if (hourInput) {\n hourInput.tabIndex = 0;\n hourInput.setAttribute('role', 'spinbutton');\n hourInput.setAttribute('aria-label', 'Hour');\n hourInput.setAttribute('aria-valuemin', hourInput.min);\n hourInput.setAttribute('aria-valuemax', hourInput.max);\n hourInput.setAttribute('aria-valuenow', hourInput.value);\n\n const anyHour = hourInput as any;\n if (anyHour._kynKeydown) {\n hourInput.removeEventListener('keydown', anyHour._kynKeydown);\n }\n\n const hourKeydown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n hourInput.stepUp();\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n hourInput.stepDown();\n }\n setTimeout(\n () => hourInput.setAttribute('aria-valuenow', hourInput.value),\n 0\n );\n };\n\n hourInput.addEventListener('keydown', hourKeydown);\n anyHour._kynKeydown = hourKeydown;\n }\n\n const minuteInput = container.querySelector<HTMLInputElement>(\n 'input.flatpickr-minute'\n );\n if (minuteInput) {\n minuteInput.tabIndex = 0;\n minuteInput.setAttribute('role', 'spinbutton');\n minuteInput.setAttribute('aria-label', 'Minute');\n minuteInput.setAttribute('aria-valuemin', minuteInput.min);\n minuteInput.setAttribute('aria-valuemax', minuteInput.max);\n minuteInput.setAttribute('aria-valuenow', minuteInput.value);\n\n const anyMinute = minuteInput as any;\n if (anyMinute._kynKeydown) {\n minuteInput.removeEventListener('keydown', anyMinute._kynKeydown);\n }\n\n const minuteKeydown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n minuteInput.stepUp();\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n minuteInput.stepDown();\n }\n setTimeout(\n () => minuteInput.setAttribute('aria-valuenow', minuteInput.value),\n 0\n );\n };\n\n minuteInput.addEventListener('keydown', minuteKeydown);\n anyMinute._kynKeydown = minuteKeydown;\n }\n\n const ampmToggle = container.querySelector<HTMLElement>('.flatpickr-am-pm');\n if (ampmToggle) {\n ampmToggle.tabIndex = 0;\n ampmToggle.setAttribute('role', 'button');\n ampmToggle.setAttribute('aria-label', 'Toggle AM/PM');\n\n const anyAmPm = ampmToggle as any;\n if (anyAmPm._kynKeydown) {\n ampmToggle.removeEventListener('keydown', anyAmPm._kynKeydown);\n }\n const ampmKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n ampmToggle.click();\n }\n };\n ampmToggle.addEventListener('keydown', ampmKeydown);\n anyAmPm._kynKeydown = ampmKeydown;\n }\n });\n}\n\nexport function hideEmptyYear(): void {\n // force year input to always be visible - don't hide it even when min === max\n document.querySelectorAll('.numInputWrapper').forEach((wrapper) => {\n const yearInput = wrapper.querySelector(\n '.numInput.cur-year'\n ) as HTMLInputElement;\n if (yearInput) {\n (wrapper as HTMLElement).style.display = '';\n\n yearInput.style.display = '';\n yearInput.disabled = false;\n\n if (!yearInput.hasAttribute('tabindex')) {\n yearInput.tabIndex = 0;\n }\n }\n });\n}\n\nexport function validate(\n inputEl: HTMLInputElement,\n required: boolean,\n invalidText: string,\n defaultErrorMessage: string,\n hasInteracted: boolean,\n internals: ElementInternals\n): { isValid: boolean; validationMessage: string } {\n if (!inputEl) {\n console.warn('Input element is undefined...');\n return { isValid: true, validationMessage: '' };\n }\n\n const isEmpty = !inputEl.value.trim();\n const isRequired = required;\n\n let validity = inputEl.validity;\n let validationMessage = inputEl.validationMessage;\n\n if (isRequired && isEmpty) {\n validity = { ...validity, valueMissing: true };\n validationMessage = defaultErrorMessage;\n }\n\n if (invalidText) {\n validity = { ...validity, customError: true };\n validationMessage = invalidText;\n }\n\n internals.setValidity(validity, validationMessage, inputEl);\n\n const isValid =\n !invalidText && (!hasInteracted || !isEmpty || (isEmpty && !isRequired));\n\n return { isValid, validationMessage };\n}\n\nexport function emitValue(\n element: HTMLElement,\n eventName: string,\n detail: any\n): void {\n element.dispatchEvent(\n new CustomEvent(eventName, {\n detail,\n bubbles: true,\n composed: true,\n })\n );\n}\n\nexport async function clearFlatpickrInput(\n flatpickrInstance: Instance | undefined,\n inputEl: HTMLInputElement | undefined,\n updateCallback?: () => void\n): Promise<void> {\n if (flatpickrInstance) {\n flatpickrInstance.clear();\n }\n\n if (inputEl) {\n inputEl.value = '';\n }\n\n if (updateCallback) {\n await updateCallback();\n }\n}\n\nexport enum DateRangeEditableMode {\n BOTH = 'both',\n START = 'start',\n END = 'end',\n NONE = 'none',\n}\n\nexport function createDateRangeDayLockHandler(\n editableMode: DateRangeEditableMode,\n currentValue: [Date | null, Date | null]\n): (\n dObj: Date,\n dStr: string,\n fp: Instance,\n dayElem: HTMLElement & { dateObj: Date }\n) => void {\n return (_dObj, _dStr, _fp, dayElem: HTMLElement & { dateObj: Date }) => {\n const currentDate = dayElem.dateObj;\n\n if (\n editableMode === DateRangeEditableMode.END &&\n currentValue[0] !== null\n ) {\n if (currentDate.getTime() <= currentValue[0].getTime()) {\n if (currentDate.getTime() === currentValue[0].getTime()) {\n dayElem.classList.add('flatpickr-locked-date');\n dayElem.setAttribute('title', getTextStrings().dateNotAvailable);\n dayElem.setAttribute('locked', 'start');\n dayElem.setAttribute('aria-disabled', 'true');\n } else {\n dayElem.classList.add('flatpickr-locked-date', 'flatpickr-disabled');\n dayElem.setAttribute('title', getTextStrings().lockedStartDate);\n }\n }\n } else if (\n editableMode === DateRangeEditableMode.START &&\n currentValue[1] !== null\n ) {\n if (currentDate.getTime() >= currentValue[1].getTime()) {\n if (currentDate.getTime() === currentValue[1].getTime()) {\n dayElem.classList.add('flatpickr-locked-date');\n dayElem.setAttribute('title', getTextStrings().lockedEndDate);\n dayElem.setAttribute('locked', 'end');\n dayElem.setAttribute('aria-disabled', 'true');\n } else {\n dayElem.classList.add('flatpickr-locked-date', 'flatpickr-disabled');\n dayElem.setAttribute('title', getTextStrings().dateNotAvailable);\n }\n }\n } else if (\n editableMode === DateRangeEditableMode.NONE &&\n currentValue[0] !== null &&\n currentValue[1] !== null\n ) {\n if (currentDate.getTime() === currentValue[0].getTime()) {\n dayElem.classList.add('flatpickr-locked-date');\n dayElem.setAttribute('title', getTextStrings().dateLocked);\n dayElem.setAttribute('locked', 'start');\n dayElem.setAttribute('aria-disabled', 'true');\n } else if (currentDate.getTime() === currentValue[1].getTime()) {\n dayElem.classList.add('flatpickr-locked-date');\n dayElem.setAttribute('title', getTextStrings().dateLocked);\n dayElem.setAttribute('locked', 'end');\n dayElem.setAttribute('aria-disabled', 'true');\n } else if (\n currentDate.getTime() > currentValue[0].getTime() &&\n currentDate.getTime() < currentValue[1].getTime()\n ) {\n dayElem.classList.add('flatpickr-locked-date');\n dayElem.setAttribute('title', getTextStrings().dateInSelectedRange);\n } else {\n dayElem.classList.add('flatpickr-locked-date', 'flatpickr-disabled');\n dayElem.setAttribute('title', getTextStrings().dateNotAvailable);\n }\n }\n\n if (\n dayElem.classList.contains('flatpickr-disabled') &&\n !dayElem.classList.contains('flatpickr-locked-date')\n ) {\n dayElem.classList.add('flatpickr-locked-date');\n }\n };\n}\n\nexport function createDateRangeChangeLockHandler(\n editableMode: DateRangeEditableMode,\n currentValue: [Date | null, Date | null],\n originalOnChange: Hook | Hook[]\n): (selectedDates: Date[], dateStr: string, instance: Instance) => void {\n return (selectedDates, dateStr, instance) => {\n let lockedStartDate: Date | null = null;\n let lockedEndDate: Date | null = null;\n\n if (\n editableMode === DateRangeEditableMode.END &&\n currentValue[0] !== null\n ) {\n lockedStartDate = currentValue[0];\n }\n if (\n editableMode === DateRangeEditableMode.START &&\n currentValue[1] !== null\n ) {\n lockedEndDate = currentValue[1];\n }\n\n if (editableMode === DateRangeEditableMode.NONE) {\n if (currentValue[0] !== null && currentValue[1] !== null) {\n instance.setDate([currentValue[0], currentValue[1]], false);\n return;\n }\n }\n\n if (currentValue[0] === null && currentValue[1] === null) {\n callOriginalOnChange(originalOnChange, selectedDates, dateStr, instance);\n return;\n }\n\n if (\n editableMode === DateRangeEditableMode.END &&\n lockedStartDate !== null\n ) {\n let modified = false;\n const newDates = [...selectedDates];\n\n if (\n selectedDates.length === 2 &&\n selectedDates[0].getTime() !== lockedStartDate.getTime()\n ) {\n newDates[0] = lockedStartDate;\n modified = true;\n } else if (selectedDates.length === 1) {\n newDates.splice(0, 0, lockedStartDate);\n modified = true;\n }\n\n if (modified) {\n instance.setDate(newDates, false);\n callOriginalOnChange(\n originalOnChange,\n newDates,\n instance.input.value,\n instance\n );\n return;\n }\n }\n\n if (\n editableMode === DateRangeEditableMode.START &&\n lockedEndDate !== null\n ) {\n let modified = false;\n const newDates = [...selectedDates];\n\n if (\n selectedDates.length === 2 &&\n selectedDates[1].getTime() !== lockedEndDate.getTime()\n ) {\n newDates[1] = lockedEndDate;\n modified = true;\n } else if (selectedDates.length === 1) {\n newDates.push(lockedEndDate);\n modified = true;\n }\n\n if (modified) {\n instance.setDate(newDates, false);\n callOriginalOnChange(\n originalOnChange,\n newDates,\n instance.input.value,\n instance\n );\n return;\n }\n }\n\n callOriginalOnChange(originalOnChange, selectedDates, dateStr, instance);\n };\n}\n\nfunction callOriginalOnChange(\n originalOnChange: Hook | Hook[],\n selectedDates: Date[],\n dateStr: string,\n instance: Instance\n): void {\n try {\n if (typeof originalOnChange === 'function') {\n originalOnChange(selectedDates, dateStr, instance);\n } else if (Array.isArray(originalOnChange)) {\n originalOnChange.forEach((hook) => {\n if (typeof hook === 'function') {\n try {\n hook(selectedDates, dateStr, instance);\n } catch (e) {\n console.warn('Error in onChange hook:', e);\n }\n }\n });\n }\n } catch (e) {\n console.warn('Error calling original onChange handler:', e);\n }\n}\n\nexport function applyDateRangeEditingRestrictions(\n options: Partial<BaseOptions>,\n editableMode: DateRangeEditableMode,\n currentValue: [Date | null, Date | null],\n tooltipStrings?: FlatpickrTextStrings\n): Partial<BaseOptions> {\n if (tooltipStrings) {\n setTooltipStrings(tooltipStrings);\n }\n const newOptions = { ...options };\n\n if (editableMode === DateRangeEditableMode.BOTH) {\n return newOptions;\n }\n\n const originalOnChange = newOptions.onChange;\n\n newOptions.clickOpens = true;\n\n try {\n newOptions.onDayCreate = createDateRangeDayLockHandler(\n editableMode,\n currentValue\n ) as any;\n\n newOptions.onChange = createDateRangeChangeLockHandler(\n editableMode,\n currentValue,\n originalOnChange || (() => {})\n );\n } catch (e) {\n console.warn('Error setting up date range editing restrictions:', e);\n }\n\n return newOptions;\n}\n"],"names":["flatpickrStylesInjected","_defaultCalendarTooltipStrings","lockedStartDate","lockedEndDate","dateLocked","dateNotAvailable","dateInSelectedRange","currentTooltipStrings","setTooltipStrings","customTextStrings","getTextStrings","DATE_FORMAT_OPTIONS","preventFlatpickrOpen","event","setShouldFlatpickrOpen","preventDefault","stopPropagation","stopImmediatePropagation","handleInputClick","handleInputFocus","shouldFlatpickrOpen","closeFlatpickr","modifyWeekdayShorthands","localeOptions","weekdays","_a","shorthand","map","day","charAt","injectFlatpickrStyles","customStyle","styleElement","document","createElement","id","textContent","head","appendChild","async","initializeMultiAnchorFlatpickr","context","inputEl","endinputEl","getFlatpickrOptions","setCalendarAttributes","setInitialDates","options","getInputElement","el","HTMLInputElement","input","querySelector","type","style","display","isConnected","Error","error","console","inputElement","endInputElement","plugins","rangePlugin","flatpickrInstance","flatpickr","setTimeout","__anchorClickHandlers","handler","open","addEventListener","push","fn","initializeSingleAnchorFlatpickr","appendTo","effectiveDateFormat","dateFormat","mode","clickOpens","targetElement","positionElement","isValidDateFormat","format","getPlaceholder","isDateRange","loadLocale","locale","loadLocaleFromLangs","getModalContainer","element","node","ShadowRoot","host","Element","tag","tagName","toLowerCase","parentNode","body","enableTime","twentyFourHourFormat","allowInput","minDate","maxDate","minTime","maxTime","defaultDate","defaultHour","defaultMinute","enable","disable","closeOnSelect","wrap","noCalendar","onChange","onClose","onOpen","warn","English","baseLocale","split","isEnglishOr12HourLocale","includes","isWideScreen","window","innerWidth","modalContainer","inOverlay","enableSeconds","time_24hr","weekNumbers","static","showMonths","monthSelectorType","selectedDates","dateStr","instance","calendarContainer","timeContainer","length","classList","add","remove","fixedOverlayPositionPlugin","offset","minViewportMargin","preferTop","onReady","_","__","Array","isArray","parsedDate","year","month","Number","isNaN","Date","date","parseDate","updateEnableTime","df","modalDetected","config","container","getFullYear","requestAnimationFrame","setAttribute","monthsEl","prevBtn","anyPrev","_kynKeydown","removeEventListener","prevKeydown","e","key","changeMonth","nextBtn","anyNext","nextKeydown","firstMonth","yearInput","tabIndex","String","updateNow","value","anyYear","yearKeydown","changeYear","daysGrid","removeAttribute","enabledDays","from","querySelectorAll","forEach","oldNav","_keyboardNav","keyboardNav","targetDay","target","closest","click","idx","indexOf","nextIdx","next","focus","hourInput","min","max","anyHour","hourKeydown","stepUp","stepDown","minuteInput","anyMinute","minuteKeydown","ampmToggle","anyAmPm","ampmKeydown","hideEmptyYear","wrapper","disabled","hasAttribute","validate","required","invalidText","defaultErrorMessage","hasInteracted","internals","isValid","validationMessage","isEmpty","trim","isRequired","validity","valueMissing","customError","setValidity","emitValue","eventName","detail","dispatchEvent","CustomEvent","bubbles","composed","clearFlatpickrInput","updateCallback","clear","DateRangeEditableMode","createDateRangeDayLockHandler","editableMode","currentValue","_dObj","_dStr","_fp","dayElem","currentDate","dateObj","END","getTime","START","NONE","contains","createDateRangeChangeLockHandler","originalOnChange","modified","newDates","splice","setDate","callOriginalOnChange","hook","applyDateRangeEditingRestrictions","tooltipStrings","newOptions","BOTH","onDayCreate"],"mappings":"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"}
|
|
@@ -167,6 +167,8 @@ export declare class TimePicker extends TimePicker_base {
|
|
|
167
167
|
* anchored to today, or returns null if invalid.
|
|
168
168
|
*/
|
|
169
169
|
private parseTimeString;
|
|
170
|
+
private _timesEqual;
|
|
171
|
+
private _incomingValueToDate;
|
|
170
172
|
connectedCallback(): void;
|
|
171
173
|
private hasValue;
|
|
172
174
|
private updateFormValue;
|
|
@@ -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
|
|
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 k,emitValue as v,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 F,v as T,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
|
|
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,P,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,kt,vt,gt,bt,yt,xt,wt,_t,It,St,Et,zt,Ft,Tt,Ct,Mt,$t,Dt,Ht,Lt,Vt,Nt,Wt=[d("kyn-time-picker")],At=[],qt=m(r),Ot=[],Rt=[],jt=[],Pt=[],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=[],ke=[],ve=[],ge=[],be=[],ye=[],xe=[],we=[],_e=[],Ie=[],Se=[],Ee=[],ze=[],Fe=[],Te=[],Ce=[],Me=[],$e=[],De=[],He=[],Le=[],Ve=[],Ne=[],We=[],Ae=[],qe=[],Oe=[],Re=[],je=[],Pe=[];return ot=class extends qt{constructor(){super(...arguments),n.set(this,i(this,Ot,"")),D.set(this,(i(this,Rt),i(this,jt,"en"))),H.set(this,(i(this,Pt),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))),R.set(this,(i(this,re),i(this,le,"md"))),j.set(this,(i(this,oe),i(this,de,!1))),P.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,ke),i(this,ve,""))),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,Fe),i(this,Te,!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,Re),i(this,je,{...$}))),this._shouldFlatpickrOpen=(i(this,Pe),!0),this._isFromFlatpickr=!1,this._initialized=!1,this._isDestroyed=!1,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,R,"f")}set size(t){s(this,R,t,"f")}get timepickerDisabled(){return a(this,j,"f")}set timepickerDisabled(t){s(this,j,t,"f")}get readonly(){return a(this,P,"f")}set readonly(t){s(this,P,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.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"
|
|
@@ -607,7 +607,7 @@ input {
|
|
|
607
607
|
@click=${this.onSuppressLabelInteraction}
|
|
608
608
|
?disabled=${this.timepickerDisabled}
|
|
609
609
|
?readonly=${this.readonly}
|
|
610
|
-
id=${`label-${
|
|
610
|
+
id=${`label-${r}`}
|
|
611
611
|
>
|
|
612
612
|
${this.required?o`<abbr
|
|
613
613
|
class="required"
|
|
@@ -624,7 +624,7 @@ input {
|
|
|
624
624
|
<input
|
|
625
625
|
class="${p({[`size--${this.size}`]:!0,"input-custom":!0,"is-readonly":this.readonly})}"
|
|
626
626
|
type="text"
|
|
627
|
-
id=${
|
|
627
|
+
id=${r}
|
|
628
628
|
name=${this.name}
|
|
629
629
|
placeholder=${d}
|
|
630
630
|
?disabled=${this.timepickerDisabled}
|
|
@@ -632,7 +632,7 @@ input {
|
|
|
632
632
|
?required=${this.required}
|
|
633
633
|
?invalid=${this._isInvalid}
|
|
634
634
|
aria-invalid=${this._isInvalid?"true":"false"}
|
|
635
|
-
aria-labelledby=${`label-${
|
|
635
|
+
aria-labelledby=${`label-${r}`}
|
|
636
636
|
autocomplete="off"
|
|
637
637
|
@click=${this.handleInputClickEvent}
|
|
638
638
|
@focus=${this.handleInputFocusEvent}
|
|
@@ -655,7 +655,7 @@ input {
|
|
|
655
655
|
aria-hidden="true"
|
|
656
656
|
@click=${this.handleInputClickEvent}
|
|
657
657
|
>
|
|
658
|
-
${z(
|
|
658
|
+
${z(T)}
|
|
659
659
|
</span>`}
|
|
660
660
|
</div>
|
|
661
661
|
${this.caption?o`<div
|
|
@@ -667,7 +667,7 @@ input {
|
|
|
667
667
|
>
|
|
668
668
|
${this.caption}
|
|
669
669
|
</div>`:""}
|
|
670
|
-
${this.renderValidationMessage(s,
|
|
670
|
+
${this.renderValidationMessage(s,n)}
|
|
671
671
|
</div>
|
|
672
672
|
`}renderValidationMessage(t,e){return this.timepickerDisabled?null:this.invalidText||this._isInvalid&&this._hasInteracted?o`<div
|
|
673
673
|
id=${t}
|
|
@@ -682,7 +682,7 @@ input {
|
|
|
682
682
|
role="img"
|
|
683
683
|
aria-label=${this.errorAriaLabel||"Error message icon"}
|
|
684
684
|
>
|
|
685
|
-
${z(
|
|
685
|
+
${z(C)}
|
|
686
686
|
</span>
|
|
687
687
|
${this.invalidText||this._internalValidationMsg||this.defaultErrorMessage}
|
|
688
688
|
</div>`:this.warnText?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 r=`${s[1]||""}${s[2]}:${s[3]}:${void 0!==s[4]?s[4].padStart(2,"0"):"00"}${s[5]||""}${s[6]||""}`.trim();if(r!==e.value){e.value=r;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;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 e=(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}e&&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===(e=this.flatpickrInstance)||void 0===e||e.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((()=>{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 r=this.enableSeconds||null!=i&&0!==i.getSeconds();return a=this.twentyFourHourFormat?r?"H:i:S":"H:i":r?"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 r=this._inputEl.validity,n=this._inputEl.validationMessage;s&&a&&(r={...r,valueMissing:!0},n=this.defaultErrorMessage||this._textStrings.pleaseSelectDate),this.invalidText&&(r={...r,customError:!0},n=this.invalidText);const l=!r.valueMissing&&!r.customError;l||n||(n=this._textStrings.pleaseSelectValidDate),this._internals.setValidity(r,n,this._inputEl),this._isInvalid=!l&&(this._hasInteracted||""!==this.invalidText),this._internalValidationMsg=n,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}}},r=new WeakMap,D=new WeakMap,H=new WeakMap,L=new WeakMap,V=new WeakMap,W=new WeakMap,A=new WeakMap,N=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,rt=new WeakMap,nt=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})],Ct=[c({type:String})],Mt=[c({type:Boolean})],Tt=[h()],$t=[h()],Dt=[u("input.input-custom")],Ht=[h()],Lt=[h()],Vt=[c({type:Object})],Wt=[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},re,ne),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,Ct,{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,Mt,{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},Ce,Me),e(ot,null,Tt,{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},Te,$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},We,Ae),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},Ne,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,Wt,{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},At,{kind:"class",name:ot.name,metadata:i},null,Nt),ot=lt.value,i&&Object.defineProperty(ot,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),ot.styles=[l(T),l(E)],i(ot,Nt),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||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};
|
|
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 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 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 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 void this.initializeFlatpickr();\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","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","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","hadFocus","renderRoot","ShadowRoot","activeElement","document","strValue","parsed","test","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","getSeconds","enableTime","allowInput","dateFormat","loadLocale","mode","onChange","handleTimeChange","onClose","handleClose","onOpen","handleOpen","appendTo","static","defaultDate","setMinutes","secondsToSet","setSeconds","setMilliseconds","getValue","selectedDates","dateStr","selectedTime","newDate","getHours","getMinutes","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 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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"}
|