@kyndryl-design-system/shidoka-applications 2.14.3 → 2.14.4
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.js +1 -1
- package/common/helpers/flatpickr.js.map +1 -1
- package/components/reusable/datePicker/datepicker.d.ts +3 -1
- package/components/reusable/datePicker/datepicker.d.ts.map +1 -1
- package/components/reusable/datePicker/datepicker.js +3 -3
- package/components/reusable/datePicker/datepicker.js.map +1 -1
- package/components/reusable/daterangepicker/daterangepicker.d.ts +1 -1
- package/components/reusable/daterangepicker/daterangepicker.d.ts.map +1 -1
- package/components/reusable/daterangepicker/daterangepicker.js +4 -4
- package/components/reusable/daterangepicker/daterangepicker.js.map +1 -1
- package/components/reusable/timepicker/timepicker.d.ts +3 -1
- package/components/reusable/timepicker/timepicker.d.ts.map +1 -1
- package/components/reusable/timepicker/timepicker.js +3 -3
- package/components/reusable/timepicker/timepicker.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e,f as t,E as n}from"../../vendor/flatpickr-bbd13d61.js";import{langsArray as a}from"../flatpickrLangs.js";let i=!1;const o={"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 —— : —— ——","m-d-Y H:i:s":"mm-dd-yyyy —— : —— ——","d-m-Y H:i:s":"dd-mm-yyyy —— : —— ——"};function r(e){return a.includes(e)}function l(e,t){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),t(!1)}function s(e){e(!0)}function c(e,t,n){e||(t(),n(!0))}function d(e){e.weekdays&&e.weekdays.shorthand&&(e.weekdays.shorthand=e.weekdays.shorthand.map((e=>e.charAt(0))))}function u(e){if(!i){const t=document.createElement("style");t.id="flatpickr-custom-styles",t.textContent=e,document.head.appendChild(t),i=!0}}async function m(n){const{inputEl:a,endinputEl:i,getFlatpickrOptions:o,setCalendarAttributes:r,setInitialDates:l}=n;if(a)try{const n=await o(),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}},c=s(a);if(i){const t=s(i);n.plugins=[...n.plugins||[],e({input:t})]}const d=t(c,n);return d?(setTimeout((()=>{r&&r(d)}),0),l&&l(d),a instanceof HTMLInputElement||a.addEventListener("click",(()=>{d.open()})),!i||i instanceof HTMLInputElement||i.addEventListener("click",(()=>{d.open()})),d):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 p(e){const{inputEl:n,getFlatpickrOptions:a,setCalendarAttributes:i,setInitialDates:o,appendTo:r}=e;if(n)try{const e=await a(),l=e.dateFormat||("time"===e.mode?"H:i":"Y-m-d");let s;if(e.dateFormat=l,n instanceof HTMLInputElement)s=n,e.clickOpens=!0;else try{s=document.createElement("input"),s.type="text",s.style.display="none";const t=r||n;if(!t)throw new Error("No valid element to append input to");t.appendChild(s),e.clickOpens=!1,e.positionElement=n}catch(e){throw console.error("Error creating input element:",e),e}const c=t(s,e);return c?(setTimeout((()=>{i&&i(c)}),0),o&&o(c),n instanceof HTMLInputElement||n.addEventListener("click",(()=>c.open())),c):void console.error("Failed to initialize Flatpickr")}catch(e){return console.error("Error initializing Flatpickr:",e),void(e instanceof Error&&console.error("Error details:",e.message))}else console.error("Cannot initialize Flatpickr: inputEl is undefined")}function y(e){return e in o}function f(e,t){if(y(e)){return t?`${o[e]} to ${o[e]}`:o[e]}return"Select date"}function
|
|
1
|
+
import{r as e,f as t,E as n}from"../../vendor/flatpickr-bbd13d61.js";import{langsArray as a}from"../flatpickrLangs.js";let i=!1;const o={"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 —— : —— ——","m-d-Y H:i:s":"mm-dd-yyyy —— : —— ——","d-m-Y H:i:s":"dd-mm-yyyy —— : —— ——"};function r(e){return a.includes(e)}function l(e,t){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),t(!1)}function s(e){e(!0)}function c(e,t,n){e||(t(),n(!0))}function d(e){e.weekdays&&e.weekdays.shorthand&&(e.weekdays.shorthand=e.weekdays.shorthand.map((e=>e.charAt(0))))}function u(e){if(!i){const t=document.createElement("style");t.id="flatpickr-custom-styles",t.textContent=e,document.head.appendChild(t),i=!0}}async function m(n){const{inputEl:a,endinputEl:i,getFlatpickrOptions:o,setCalendarAttributes:r,setInitialDates:l}=n;if(a)try{const n=await o(),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}},c=s(a);if(i){const t=s(i);n.plugins=[...n.plugins||[],e({input:t})]}const d=t(c,n);return d?(setTimeout((()=>{r&&r(d)}),0),l&&l(d),a instanceof HTMLInputElement||a.addEventListener("click",(()=>{d.open()})),!i||i instanceof HTMLInputElement||i.addEventListener("click",(()=>{d.open()})),d):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 p(e){const{inputEl:n,getFlatpickrOptions:a,setCalendarAttributes:i,setInitialDates:o,appendTo:r}=e;if(n)try{const e=await a(),l=e.dateFormat||("time"===e.mode?"H:i":"Y-m-d");let s;if(e.dateFormat=l,n instanceof HTMLInputElement)s=n,e.clickOpens=!0;else try{s=document.createElement("input"),s.type="text",s.style.display="none";const t=r||n;if(!t)throw new Error("No valid element to append input to");t.appendChild(s),e.clickOpens=!1,e.positionElement=n}catch(e){throw console.error("Error creating input element:",e),e}const c=t(s,e);return c?(setTimeout((()=>{i&&i(c)}),0),o&&o(c),n instanceof HTMLInputElement||n.addEventListener("click",(()=>c.open())),c):void console.error("Failed to initialize Flatpickr")}catch(e){return console.error("Error initializing Flatpickr:",e),void(e instanceof Error&&console.error("Error details:",e.message))}else console.error("Cannot initialize Flatpickr: inputEl is undefined")}function y(e){return e in o}function f(e,t){if(y(e)){return t?`${o[e]} to ${o[e]}`:o[e]}return"Select date"}function h(e){return["kyn-modal","kyn-side-drawer"].map((t=>e.closest(t))).find((e=>null!==e))||document.body}async function g(e){var a;if(!e)return console.error("Context is required for getFlatpickrOptions"),{};const{locale:i,dateFormat:o,enableTime:r,twentyFourHourFormat:l,inputEl:s,allowInput:c,minDate:u,maxDate:m,minTime:p,maxTime:y,defaultDate:f,defaultHour:h,defaultMinute:g,enable:w,disable:E,mode:k="single",closeOnSelect:b,wrap:v=!1,noCalendar:C=!1,appendTo:D,onChange:F,onClose:N,onOpen:L,loadLocale:T}=e;let H;i||console.warn("Locale not provided. Falling back to default."),o||console.warn("Date format not provided. Using default format.");try{H=await T(i),d(H)}catch(e){console.warn("Error loading locale, falling back to default:",e),H=n}const Y=["en","en-US","en-GB","es-MX"].includes(i),M=window.innerWidth>=767,I=o||("time"===k?l?"H:i":"h:i K":"Y-m-d"),S={dateFormat:I,mode:"time"===k?"single":k,enableTime:"time"===k||r,noCalendar:"time"===k||C,defaultDate:f,enableSeconds:!1,allowInput:c||!1,clickOpens:!0,time_24hr:"boolean"==typeof l?l:!Y,weekNumbers:!1,static:null!==(a=e.static)&&void 0!==a&&a,wrap:v,showMonths:"range"===k&&M?2:1,monthSelectorType:"static",locale:H,closeOnSelect:null!=b?b:!("multiple"===k||r),onChange:(e,t,n)=>{F&&F(e,t,n)},onClose:(e,t,n)=>{if("range"===k&&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"))}N&&N(e,t,n)},onOpen:(e,t,n)=>{L&&L(e,t,n)}};if("range"===k&&(S.onReady=(e,t,n)=>{if(n.calendarContainer){const e=n.calendarContainer.querySelector(".flatpickr-time");null==e||e.classList.add("default-time-select")}}),s instanceof HTMLInputElement||(S.positionElement=s),u&&(S.minDate=u),m&&(S.maxDate=m),p&&(S.minTime=p),y&&(S.maxTime=y),f)if(!Array.isArray(f)||"range"!==k&&"multiple"!==k){if(!Array.isArray(f)&&"string"==typeof f){let e=null;switch(I){case"Y-m-d":{const[t,n,a]=f.split("-").map(Number);e=isNaN(t)||isNaN(n)||isNaN(a)?null:new Date(Date.UTC(t,n-1,a,12));break}case"d-m-Y":{const[t,n,a]=f.split("-").map(Number);e=isNaN(t)||isNaN(n)||isNaN(a)?null:new Date(Date.UTC(a,n-1,t,12));break}case"m-d-Y":{const[t,n,a]=f.split("-").map(Number);e=isNaN(t)||isNaN(n)||isNaN(a)?null:new Date(Date.UTC(a,t-1,n,12));break}default:e=new Date(f)}S.defaultDate=e||f}}else S.defaultDate=f;return null!=h&&(S.defaultHour=h),null!=g&&(S.defaultMinute=g),w&&w.length>0&&(S.enable=w),E&&E.length>0&&(S.disable=E.map((e=>{if(e instanceof Date)return e;if("number"==typeof e)return new Date(e);if("string"==typeof e){return t.parseDate(e,I)||e}return e}))),D&&(S.appendTo=D),S}function w(e){return e.includes("H:")||e.includes("h:")}function E(e,t){(null==e?void 0:e.calendarContainer)?requestAnimationFrame((()=>{try{const{calendarContainer:n,config:a}=e;n.setAttribute("role","application"),n.setAttribute("aria-label","Calendar"),n.classList.remove("container-modal","container-body");const i=t?"container-modal":"container-default";n.classList.add(i),a&&void 0!==a.static&&(n.classList.remove("static-position-true","static-position-false"),n.classList.add(`static-position-${a.static}`))}catch(e){console.warn("Error setting calendar attributes:",e)}})):console.warn("Calendar container not available...")}async function k(e){var t,a,i;if("en"===e)return n;if(!r(e))return console.warn(`Unsupported locale "${e}". Falling back to English.`),n;try{const o=await import(`flatpickr/dist/l10n/${e}.js`),r=null!==(i=null!==(t=o[e])&&void 0!==t?t:null===(a=o.default)||void 0===a?void 0:a[e])&&void 0!==i?i:o.default;return r||(console.warn(`Locale configuration not found for "${e}". Falling back to English.`),n)}catch(t){return console.error(`Failed to load locale "${e}". Falling back to English.`,t),n}}function b(){const e=document.querySelector(".flatpickr-current-month span.cur-month");document.querySelectorAll(".numInputWrapper").forEach((t=>{const n=t.querySelector(".numInput.cur-year");n&&n.min&&n.max&&n.min===n.max&&(t.style.display="none",e&&(e.style.marginLeft="auto"))}))}function v(e,t,n,a,i,o){if(!e)return console.warn("Input element is undefined..."),{isValid:!0,validationMessage:""};const r=!e.value.trim(),l=t;let s=e.validity,c=e.validationMessage;l&&r&&(s={...s,valueMissing:!0},c=a),n&&(s={...s,customError:!0},c=n),o.setValidity(s,c,e);return{isValid:!n&&(!i||!r||r&&!l),validationMessage:c}}function C(e,t,n){e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0}))}export{C as emitValue,g as getFlatpickrOptions,h as getModalContainer,f as getPlaceholder,s as handleInputClick,c as handleInputFocus,b as hideEmptyYear,m as initializeMultiAnchorFlatpickr,p as initializeSingleAnchorFlatpickr,u as injectFlatpickrStyles,r as isSupportedLocale,y as isValidDateFormat,k as loadLocale,d as modifyWeekdayShorthands,l as preventFlatpickrOpen,E as setCalendarAttributes,w as updateEnableTime,v 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/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/l10n/default.js';\nimport { langsArray, SupportedLocale } from '../flatpickrLangs';\n\nlet flatpickrStylesInjected = false;\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 'm-d-Y H:i:s': 'mm-dd-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 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 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 isSupportedLocale(locale: string): boolean {\n return langsArray.includes(locale as SupportedLocale);\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 && 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 if (!(inputEl instanceof HTMLInputElement)) {\n inputEl.addEventListener('click', () => {\n flatpickrInstance.open();\n });\n }\n\n if (endinputEl && !(endinputEl instanceof HTMLInputElement)) {\n endinputEl.addEventListener('click', () => {\n flatpickrInstance.open();\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 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 if (!(inputEl instanceof HTMLInputElement)) {\n inputEl.addEventListener('click', () => flatpickrInstance.open());\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 if (error instanceof Error) {\n console.error('Error details:', error.message);\n }\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 (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 getModalContainer(element: HTMLElement): HTMLElement {\n return (\n ['kyn-modal', 'kyn-side-drawer']\n .map((selector) => element.closest(selector))\n .find((el): el is HTMLElement => el !== null) || document.body\n );\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 isEnglishOr12HourLocale = ['en', 'en-US', 'en-GB', 'es-MX'].includes(\n locale\n );\n\n const isWideScreen = window.innerWidth >= 767;\n\n const effectiveDateFormat =\n dateFormat ||\n (mode === 'time' ? (twentyFourHourFormat ? 'H:i' : 'h:i K') : 'Y-m-d');\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: false,\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 (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(Date.UTC(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(Date.UTC(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(Date.UTC(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 return dateFormat.includes('H:') || dateFormat.includes('h:');\n}\n\nexport function setCalendarAttributes(\n instance: Instance,\n modalDetected?: boolean\n): void {\n if (instance?.calendarContainer) {\n requestAnimationFrame(() => {\n try {\n const { calendarContainer, config } = instance;\n calendarContainer.setAttribute('role', 'application');\n calendarContainer.setAttribute('aria-label', 'Calendar');\n\n calendarContainer.classList.remove('container-modal', 'container-body');\n const containerClass = modalDetected\n ? 'container-modal'\n : 'container-default';\n calendarContainer.classList.add(containerClass);\n\n if (config && typeof config.static !== 'undefined') {\n calendarContainer.classList.remove(\n 'static-position-true',\n 'static-position-false'\n );\n calendarContainer.classList.add(`static-position-${config.static}`);\n }\n } catch (error) {\n console.warn('Error setting calendar attributes:', error);\n }\n });\n } else {\n console.warn('Calendar container not available...');\n }\n}\n\nexport async function loadLocale(locale: string): Promise<Partial<Locale>> {\n if (locale === 'en') return English;\n if (!isSupportedLocale(locale)) {\n console.warn(`Unsupported locale: ${locale}. Falling back to English.`);\n return English;\n }\n\n try {\n const module = await import(`flatpickr/dist/l10n/${locale}.js`);\n const localeConfig =\n module[locale] || module.default[locale] || module.default;\n if (!localeConfig) {\n console.warn(\n `Locale configuration not found for ${locale}. Falling back to English.`\n );\n return English;\n }\n return localeConfig;\n } catch (error) {\n console.error(\n `Failed to load locale ${locale}. Falling back to English.`,\n error\n );\n if (error instanceof Error) {\n console.error('Error details:', error.message);\n }\n return English;\n }\n}\n\nexport function hideEmptyYear(): void {\n const currentMonth = document.querySelector(\n '.flatpickr-current-month span.cur-month'\n ) as HTMLElement;\n document.querySelectorAll('.numInputWrapper').forEach((wrapper) => {\n const yearInput = wrapper.querySelector(\n '.numInput.cur-year'\n ) as HTMLInputElement;\n if (\n yearInput &&\n yearInput.min &&\n yearInput.max &&\n yearInput.min === yearInput.max\n ) {\n (wrapper as HTMLElement).style.display = 'none';\n\n if (currentMonth) {\n currentMonth.style.marginLeft = 'auto';\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"],"names":["flatpickrStylesInjected","DATE_FORMAT_OPTIONS","isSupportedLocale","locale","langsArray","includes","preventFlatpickrOpen","event","setShouldFlatpickrOpen","preventDefault","stopPropagation","stopImmediatePropagation","handleInputClick","handleInputFocus","shouldFlatpickrOpen","closeFlatpickr","modifyWeekdayShorthands","localeOptions","weekdays","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","addEventListener","open","initializeSingleAnchorFlatpickr","appendTo","effectiveDateFormat","dateFormat","mode","clickOpens","targetElement","positionElement","message","isValidDateFormat","format","getPlaceholder","isDateRange","getModalContainer","element","selector","closest","find","body","enableTime","twentyFourHourFormat","allowInput","minDate","maxDate","minTime","maxTime","defaultDate","defaultHour","defaultMinute","enable","disable","closeOnSelect","wrap","noCalendar","onChange","onClose","onOpen","loadLocale","warn","English","isEnglishOr12HourLocale","isWideScreen","window","innerWidth","enableSeconds","time_24hr","weekNumbers","static","_a","showMonths","monthSelectorType","selectedDates","dateStr","instance","calendarContainer","timeContainer","length","classList","add","remove","onReady","_","__","Array","isArray","parsedDate","year","month","split","Number","isNaN","Date","UTC","date","parseDate","updateEnableTime","modalDetected","requestAnimationFrame","config","setAttribute","containerClass","module","import","localeConfig","default","hideEmptyYear","currentMonth","querySelectorAll","forEach","wrapper","yearInput","min","max","marginLeft","validate","required","invalidText","defaultErrorMessage","hasInteracted","internals","isValid","validationMessage","isEmpty","value","trim","isRequired","validity","valueMissing","customError","setValidity","emitValue","eventName","detail","dispatchEvent","CustomEvent","bubbles","composed"],"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/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/l10n/default.js';\nimport { langsArray, SupportedLocale } from '../flatpickrLangs';\n\nlet flatpickrStylesInjected = false;\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 'm-d-Y H:i:s': 'mm-dd-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 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 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 isSupportedLocale(locale: string): boolean {\n return langsArray.includes(locale as SupportedLocale);\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 && 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 if (!(inputEl instanceof HTMLInputElement)) {\n inputEl.addEventListener('click', () => {\n flatpickrInstance.open();\n });\n }\n\n if (endinputEl && !(endinputEl instanceof HTMLInputElement)) {\n endinputEl.addEventListener('click', () => {\n flatpickrInstance.open();\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 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 if (!(inputEl instanceof HTMLInputElement)) {\n inputEl.addEventListener('click', () => flatpickrInstance.open());\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 if (error instanceof Error) {\n console.error('Error details:', error.message);\n }\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 (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 getModalContainer(element: HTMLElement): HTMLElement {\n return (\n ['kyn-modal', 'kyn-side-drawer']\n .map((selector) => element.closest(selector))\n .find((el): el is HTMLElement => el !== null) || document.body\n );\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 isEnglishOr12HourLocale = ['en', 'en-US', 'en-GB', 'es-MX'].includes(\n locale\n );\n\n const isWideScreen = window.innerWidth >= 767;\n\n const effectiveDateFormat =\n dateFormat ||\n (mode === 'time' ? (twentyFourHourFormat ? 'H:i' : 'h:i K') : 'Y-m-d');\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: false,\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 (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(Date.UTC(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(Date.UTC(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(Date.UTC(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 return dateFormat.includes('H:') || dateFormat.includes('h:');\n}\n\nexport function setCalendarAttributes(\n instance: Instance,\n modalDetected?: boolean\n): void {\n if (instance?.calendarContainer) {\n requestAnimationFrame(() => {\n try {\n const { calendarContainer, config } = instance;\n calendarContainer.setAttribute('role', 'application');\n calendarContainer.setAttribute('aria-label', 'Calendar');\n\n calendarContainer.classList.remove('container-modal', 'container-body');\n const containerClass = modalDetected\n ? 'container-modal'\n : 'container-default';\n calendarContainer.classList.add(containerClass);\n\n if (config && typeof config.static !== 'undefined') {\n calendarContainer.classList.remove(\n 'static-position-true',\n 'static-position-false'\n );\n calendarContainer.classList.add(`static-position-${config.static}`);\n }\n } catch (error) {\n console.warn('Error setting calendar attributes:', error);\n }\n });\n } else {\n console.warn('Calendar container not available...');\n }\n}\n\nexport async function loadLocale(locale: string): Promise<Partial<Locale>> {\n if (locale === 'en') return English;\n\n if (!isSupportedLocale(locale)) {\n console.warn(`Unsupported locale \"${locale}\". Falling back to English.`);\n return English;\n }\n\n try {\n const module = await import(`flatpickr/dist/l10n/${locale}.js`);\n const localeConfig =\n module[locale] ?? module.default?.[locale] ?? module.default;\n\n if (!localeConfig) {\n console.warn(\n `Locale configuration not found for \"${locale}\". Falling back to English.`\n );\n return English;\n }\n\n return localeConfig;\n } catch (error) {\n console.error(\n `Failed to load locale \"${locale}\". Falling back to English.`,\n error\n );\n return English;\n }\n}\n\nexport function hideEmptyYear(): void {\n const currentMonth = document.querySelector(\n '.flatpickr-current-month span.cur-month'\n ) as HTMLElement;\n document.querySelectorAll('.numInputWrapper').forEach((wrapper) => {\n const yearInput = wrapper.querySelector(\n '.numInput.cur-year'\n ) as HTMLInputElement;\n if (\n yearInput &&\n yearInput.min &&\n yearInput.max &&\n yearInput.min === yearInput.max\n ) {\n (wrapper as HTMLElement).style.display = 'none';\n\n if (currentMonth) {\n currentMonth.style.marginLeft = 'auto';\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"],"names":["flatpickrStylesInjected","DATE_FORMAT_OPTIONS","isSupportedLocale","locale","langsArray","includes","preventFlatpickrOpen","event","setShouldFlatpickrOpen","preventDefault","stopPropagation","stopImmediatePropagation","handleInputClick","handleInputFocus","shouldFlatpickrOpen","closeFlatpickr","modifyWeekdayShorthands","localeOptions","weekdays","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","addEventListener","open","initializeSingleAnchorFlatpickr","appendTo","effectiveDateFormat","dateFormat","mode","clickOpens","targetElement","positionElement","message","isValidDateFormat","format","getPlaceholder","isDateRange","getModalContainer","element","selector","closest","find","body","enableTime","twentyFourHourFormat","allowInput","minDate","maxDate","minTime","maxTime","defaultDate","defaultHour","defaultMinute","enable","disable","closeOnSelect","wrap","noCalendar","onChange","onClose","onOpen","loadLocale","warn","English","isEnglishOr12HourLocale","isWideScreen","window","innerWidth","enableSeconds","time_24hr","weekNumbers","static","_a","showMonths","monthSelectorType","selectedDates","dateStr","instance","calendarContainer","timeContainer","length","classList","add","remove","onReady","_","__","Array","isArray","parsedDate","year","month","split","Number","isNaN","Date","UTC","date","parseDate","updateEnableTime","modalDetected","requestAnimationFrame","config","setAttribute","containerClass","module","import","localeConfig","_c","_b","default","hideEmptyYear","currentMonth","querySelectorAll","forEach","wrapper","yearInput","min","max","marginLeft","validate","required","invalidText","defaultErrorMessage","hasInteracted","internals","isValid","validationMessage","isEmpty","value","trim","isRequired","validity","valueMissing","customError","setValidity","emitValue","eventName","detail","dispatchEvent","CustomEvent","bubbles","composed"],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export declare class DatePicker extends DatePicker_base {
|
|
|
13
13
|
static styles: any[];
|
|
14
14
|
/** Label text. */
|
|
15
15
|
label: string;
|
|
16
|
-
locale: SupportedLocale;
|
|
16
|
+
locale: SupportedLocale | string;
|
|
17
17
|
/** Sets flatpickr value to define how the date will be displayed in the input box (ex: `Y-m-d H:i`). */
|
|
18
18
|
dateFormat: string;
|
|
19
19
|
/** Sets the initial selected date(s). For multiple mode, provide an array of date strings matching dateFormat. */
|
|
@@ -85,6 +85,7 @@ export declare class DatePicker extends DatePicker_base {
|
|
|
85
85
|
requiredText: string;
|
|
86
86
|
clearAll: string;
|
|
87
87
|
pleaseSelectDate: string;
|
|
88
|
+
noDateSelected: string;
|
|
88
89
|
pleaseSelectValidDate: string;
|
|
89
90
|
};
|
|
90
91
|
/** Internal text strings.
|
|
@@ -94,6 +95,7 @@ export declare class DatePicker extends DatePicker_base {
|
|
|
94
95
|
requiredText: string;
|
|
95
96
|
clearAll: string;
|
|
96
97
|
pleaseSelectDate: string;
|
|
98
|
+
noDateSelected: string;
|
|
97
99
|
pleaseSelectValidDate: string;
|
|
98
100
|
};
|
|
99
101
|
/** Control flag to prevent Flatpickr from opening when clicking caption, error, label, or warning elements.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/datePicker/datepicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAKvD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAgB5D,OAAO,uBAAuB,CAAC;AAG/B,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAS3D,KAAK,eAAe,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;;
|
|
1
|
+
{"version":3,"file":"datepicker.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/datePicker/datepicker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as t}from"../../../vendor/tslib-53a81efe.js";import{o as e,n as i,t as a,i as r,e as n}from"../../../vendor/lit-7b0f5ebf.js";import{i as l,x as o,s}from"../../../vendor/lit-element-c6c02f24.js";import{FormMixin as d}from"../../../common/mixins/form-input.js";import{o as p}from"../../../vendor/lit-html-29220869.js";import{getPlaceholder as c,injectFlatpickrStyles as h,updateEnableTime as u,emitValue as m,initializeSingleAnchorFlatpickr as v,getModalContainer as k,setCalendarAttributes as g,hideEmptyYear as b,getFlatpickrOptions as f,loadLocale as y,preventFlatpickrOpen as x,handleInputClick as w,handleInputFocus as _}from"../../../common/helpers/flatpickr.js";import"../button/button.js";import{c as z}from"../../../shidoka-flatpickr-theme-3d6e1af1.js";import{j as D,H as F,I as $}from"../../../vendor/@kyndryl-design-system/shidoka-icons-726d44b0.js";import"../../../vendor/flatpickr-bbd13d61.js";import"../../../common/flatpickrLangs.js";import"../../../common/helpers/helpers.js";import"../button/defs.js";var
|
|
1
|
+
import{_ as t}from"../../../vendor/tslib-53a81efe.js";import{o as e,n as i,t as a,i as r,e as n}from"../../../vendor/lit-7b0f5ebf.js";import{i as l,x as o,s}from"../../../vendor/lit-element-c6c02f24.js";import{FormMixin as d}from"../../../common/mixins/form-input.js";import{o as p}from"../../../vendor/lit-html-29220869.js";import{getPlaceholder as c,injectFlatpickrStyles as h,updateEnableTime as u,emitValue as m,initializeSingleAnchorFlatpickr as v,getModalContainer as k,setCalendarAttributes as g,hideEmptyYear as b,getFlatpickrOptions as f,loadLocale as y,preventFlatpickrOpen as x,handleInputClick as w,handleInputFocus as _}from"../../../common/helpers/flatpickr.js";import"../button/button.js";import{c as z}from"../../../shidoka-flatpickr-theme-3d6e1af1.js";import{j as D,H as F,I as $}from"../../../vendor/@kyndryl-design-system/shidoka-icons-726d44b0.js";import"../../../vendor/flatpickr-bbd13d61.js";import"../../../common/flatpickrLangs.js";import"../../../common/helpers/helpers.js";import"../button/defs.js";var E=l`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -491,7 +491,7 @@ input {
|
|
|
491
491
|
}
|
|
492
492
|
.date-picker__disabled .label-text .required {
|
|
493
493
|
color: var(--kd-color-text-level-disabled);
|
|
494
|
-
}`;const
|
|
494
|
+
}`;const I={requiredText:"Required",clearAll:"Clear",pleaseSelectDate:"Please select a date",noDateSelected:"No date selected",pleaseSelectValidDate:"Please select a valid date"};let C=class extends(d(s)){constructor(){super(...arguments),this.label="",this.locale="en",this.dateFormat="Y-m-d",this.defaultDate=null,this.defaultErrorMessage="",this.required=!1,this.size="md",this.value=null,this.warnText="",this.disable=[],this._processedDisableDates=[],this.enable=[],this.mode="single",this.caption="",this.datePickerDisabled=!1,this.twentyFourHourFormat=null,this.minDate="",this.maxDate="",this.errorAriaLabel="",this.errorTitle="",this.warningAriaLabel="",this.warningTitle="",this.staticPosition=!1,this._enableTime=!1,this._hasInteracted=!1,this._isClearing=!1,this.textStrings=I,this._textStrings=I,this._shouldFlatpickrOpen=!1,this._initialized=!1,this._isDestroyed=!1,this.debouncedUpdate=this.debounce((async()=>{if(this.flatpickrInstance)try{await this.initializeFlatpickr()}catch(t){console.error("Error in debounced update:",t)}}),100)}debounce(t,e){let i=null;return(...a)=>{null!==i&&window.clearTimeout(i),i=window.setTimeout((()=>{t.apply(this,a),i=null}),e)}}connectedCallback(){super.connectedCallback(),this.addEventListener("change",this._onChange),this.addEventListener("reset",this._handleFormReset)}hasValue(){var t;return!!(null===(t=this._inputEl)||void 0===t?void 0:t.value)||(this.value?!Array.isArray(this.value)||this.value.length>0&&!this.value.every((t=>null===t)):!!this.defaultDate&&(Array.isArray(this.defaultDate)?this.defaultDate.length>0&&!this.defaultDate.every((t=>!t||""===t)):!!this.defaultDate))}render(){var t,i,a;const r=`${this.name}-error-message`,n=`${this.name}-warning-message`,l=this.name?`${this.name}-${Math.random().toString(36).slice(2,11)}`:`date-picker-${Math.random().toString(36).slice(2,11)}`,s=null!==(t=this.name)&&void 0!==t?t:"",d=c(this.dateFormat);return o`
|
|
495
495
|
<div class=${e(this.getDatepickerClasses())}>
|
|
496
496
|
<div
|
|
497
497
|
class="label-text"
|
|
@@ -577,5 +577,5 @@ input {
|
|
|
577
577
|
@click=${this.preventFlatpickrOpen}
|
|
578
578
|
>
|
|
579
579
|
${this.warnText}
|
|
580
|
-
</div>`:null}getDatepickerClasses(){return{"date-picker":!0,"date-picker__enable-time":this._enableTime,"date-picker__multiple-select":"multiple"===this.mode,"date-picker__disabled":this.datePickerDisabled}}async firstUpdated(t){super.firstUpdated(t),this._initialized||(h(z.toString()),this._initialized=!0,await this.updateComplete,this.setupAnchor())}updated(t){if(super.updated(t),t.has("value")&&!this._isClearing){const t=this.value;if((null===t||Array.isArray(t)&&0===t.length)&&this.flatpickrInstance){this._isClearing=!0;try{this.flatpickrInstance.clear(),this._inputEl&&(this._inputEl.value="")}finally{this._isClearing=!1}}this.requestUpdate()}t.has("defaultDate")&&this.flatpickrInstance&&!this._isClearing&&this.debouncedUpdate(),t.has("disable")&&(Array.isArray(this.disable)?this._processedDisableDates=this.disable.map((t=>{if(t instanceof Date)return t;if("number"==typeof t)return new Date(t);if("string"==typeof t){const[e,i,a]=t.split("-").map(Number);if(!isNaN(e)&&!isNaN(i)&&!isNaN(a))return new Date(e,i-1,a)}return t})):(this._processedDisableDates=[],console.warn("Disable prop must be an array")),this.flatpickrInstance&&this.debouncedUpdate()),(t.has("dateFormat")||t.has("minDate")||t.has("maxDate")||t.has("locale")||t.has("twentyFourHourFormat"))&&(this._enableTime=u(this.dateFormat),this.flatpickrInstance&&this._initialized&&!this._isClearing&&(t.has("dateFormat"),this.debouncedUpdate())),t.has("datePickerDisabled")&&this.datePickerDisabled&&this.flatpickrInstance&&this.flatpickrInstance.close()}async setupAnchor(){if(this._inputEl)try{await this.initializeFlatpickr()}catch(t){console.error("Error setting up flatpickr:",t)}else console.warn("Input element not found during setup")}async _handleClear(t){if(t.preventDefault(),t.stopPropagation(),this.flatpickrInstance){this._isClearing=!0;try{this.value="multiple"===this.mode?[]:null,this.defaultDate=null,this.flatpickrInstance.clear(),this._inputEl&&(this._inputEl.value=""),m(this,"on-change",{dates:null,dateString:"",source:"clear"}),this._validate(!0,!1),await this.updateComplete,this.requestUpdate()}catch(t){console.error("Error clearing datepicker:",t)}finally{this._isClearing=!1}}else console.warn("Cannot clear: Flatpickr instance not available")}async initializeFlatpickr(){if(!this._isDestroyed)if(this._inputEl&&this._inputEl.isConnected)try{if(this.flatpickrInstance&&this.flatpickrInstance.destroy(),this.flatpickrInstance=await v({inputEl:this._inputEl,getFlatpickrOptions:()=>this.getComponentFlatpickrOptions(),setCalendarAttributes:t=>{try{const e=k(this);g(t,e!==document.body),t.calendarContainer&&t.calendarContainer.setAttribute("aria-label","Date picker")}catch(t){console.warn("Error setting calendar attributes:",t)}},setInitialDates:this.setInitialDates.bind(this)}),!this.flatpickrInstance)throw new Error("Failed to initialize Flatpickr instance");b(),this._validate(!1,!1)}catch(t){console.error("Error initializing Flatpickr:",t),t instanceof Error&&console.error("Error details:",t.message)}else console.warn("Cannot initialize Flatpickr: input element not available or not connected to DOM")}async updateFlatpickrOptions(){this.flatpickrInstance?await this.debouncedUpdate():console.warn("Cannot update options: Flatpickr instance not available")}setInitialDates(){if(this.flatpickrInstance)try{const t=this.defaultDate||this.value;if(!t)return;if(Array.isArray(t)){const e=t.filter((t=>!!t&&!("string"==typeof t&&!t.trim())));e.length>0&&this.flatpickrInstance.setDate(e,!0)}else("string"==typeof t&&t.trim()||t instanceof Date)&&this.flatpickrInstance.setDate(t,!0)}catch(t){console.warn("Error setting initial dates:",t),t instanceof Error&&console.warn("Error details:",t.message)}else console.warn("Cannot set initial dates: Flatpickr instance not available")}async getComponentFlatpickrOptions(){var t;const e=k(this);return await f({locale:this.locale,dateFormat:this.dateFormat,defaultDate:this.defaultDate?this.defaultDate:void 0,enableTime:this._enableTime,twentyFourHourFormat:null!==(t=this.twentyFourHourFormat)&&void 0!==t?t:void 0,inputEl:this._inputEl,minDate:this.minDate,maxDate:this.maxDate,enable:this.enable,disable:this._processedDisableDates,mode:this.mode,closeOnSelect:!("multiple"===this.mode||this._enableTime),loadLocale:y,onOpen:this.handleOpen.bind(this),onClose:this.handleClose.bind(this),onChange:this.handleDateChange.bind(this),appendTo:e,noCalendar:!1,static:this.staticPosition})}handleOpen(){var t;this._shouldFlatpickrOpen||(null===(t=this.flatpickrInstance)||void 0===t||t.close(),this._shouldFlatpickrOpen=!0)}async handleClose(){this._hasInteracted=!0,this._validate(!0,!1),await this.updateComplete}async handleDateChange(t,e){var i;if(!this._isClearing){this._hasInteracted=!0;try{let a;"multiple"===this.mode?this.value=t.length>0?[...t]:null:this.value=t.length>0?t[0]:null,a=Array.isArray(this.value)?this.value.map((t=>t.toISOString())):this.value instanceof Date?this.value.toISOString():null,m(this,"on-change",{dates:a,dateString:(null===(i=this._inputEl)||void 0===i?void 0:i.value)||e,source:0===t.length?"clear":void 0}),this._validate(!0,!1),await this.updateComplete,this.requestUpdate()}catch(t){console.warn("Error handling date change:",t)}}}setShouldFlatpickrOpen(t){this._shouldFlatpickrOpen=t}closeFlatpickr(){var t;null===(t=this.flatpickrInstance)||void 0===t||t.close()}preventFlatpickrOpen(t){x(t,this.setShouldFlatpickrOpen.bind(this))}handleInputClickEvent(){w(this.setShouldFlatpickrOpen.bind(this))}handleInputFocusEvent(){_(this._shouldFlatpickrOpen,this.closeFlatpickr.bind(this),this.setShouldFlatpickrOpen.bind(this))}_validate(t,e){if(!(this._inputEl&&this._inputEl instanceof HTMLInputElement))return;t&&(this._hasInteracted=!0);const i=!this._inputEl.value.trim(),a=this.required;let r=this._inputEl.validity,n=this._inputEl.validationMessage;a&&i&&(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(),this.requestUpdate()}_onChange(){this._validate(!0,!1)}_handleFormReset(){this.value=null,this.flatpickrInstance&&this.flatpickrInstance.clear(),this._hasInteracted=!1,this._validate(!1,!1)}disconnectedCallback(){this._isDestroyed=!0,super.disconnectedCallback(),this.removeEventListener("change",this._onChange),this.removeEventListener("reset",this._handleFormReset),this.flatpickrInstance&&(this.flatpickrInstance.destroy(),this.flatpickrInstance=void 0)}};C.styles=[
|
|
580
|
+
</div>`:null}getDatepickerClasses(){return{"date-picker":!0,"date-picker__enable-time":this._enableTime,"date-picker__multiple-select":"multiple"===this.mode,"date-picker__disabled":this.datePickerDisabled}}async firstUpdated(t){super.firstUpdated(t),this._initialized||(h(z.toString()),this._initialized=!0,await this.updateComplete,this.setupAnchor())}updated(t){if(super.updated(t),t.has("value")&&!this._isClearing){const t=this.value;if((null===t||Array.isArray(t)&&0===t.length)&&this.flatpickrInstance){this._isClearing=!0;try{this.flatpickrInstance.clear(),this._inputEl&&(this._inputEl.value="")}finally{this._isClearing=!1}}this.requestUpdate()}t.has("defaultDate")&&this.flatpickrInstance&&!this._isClearing&&this.debouncedUpdate(),t.has("disable")&&(Array.isArray(this.disable)?this._processedDisableDates=this.disable.map((t=>{if(t instanceof Date)return t;if("number"==typeof t)return new Date(t);if("string"==typeof t){const[e,i,a]=t.split("-").map(Number);if(!isNaN(e)&&!isNaN(i)&&!isNaN(a))return new Date(e,i-1,a)}return t})):(this._processedDisableDates=[],console.warn("Disable prop must be an array")),this.flatpickrInstance&&this.debouncedUpdate()),(t.has("dateFormat")||t.has("minDate")||t.has("maxDate")||t.has("locale")||t.has("twentyFourHourFormat"))&&(this._enableTime=u(this.dateFormat),this.flatpickrInstance&&this._initialized&&!this._isClearing&&(t.has("dateFormat"),this.debouncedUpdate())),t.has("datePickerDisabled")&&this.datePickerDisabled&&this.flatpickrInstance&&this.flatpickrInstance.close()}async setupAnchor(){if(this._inputEl)try{await this.initializeFlatpickr()}catch(t){console.error("Error setting up flatpickr:",t)}else console.warn("Input element not found during setup")}async _handleClear(t){if(t.preventDefault(),t.stopPropagation(),this.flatpickrInstance){this._isClearing=!0;try{this.value="multiple"===this.mode?[]:null,this.defaultDate=null,this.flatpickrInstance.clear(),this._inputEl&&(this._inputEl.value="",this._inputEl.setAttribute("aria-label",this._textStrings.noDateSelected)),m(this,"on-change",{dates:null,dateString:"",source:"clear"}),this._validate(!0,!1),await this.updateComplete,await this.initializeFlatpickr(),this.requestUpdate()}catch(t){console.error("Error clearing datepicker:",t)}finally{this._isClearing=!1}}else console.warn("Cannot clear: Flatpickr instance not available")}async initializeFlatpickr(){if(!this._isDestroyed)if(this._inputEl&&this._inputEl.isConnected)try{if(this.flatpickrInstance&&this.flatpickrInstance.destroy(),this.flatpickrInstance=await v({inputEl:this._inputEl,getFlatpickrOptions:()=>this.getComponentFlatpickrOptions(),setCalendarAttributes:t=>{try{const e=k(this);g(t,e!==document.body),t.calendarContainer&&t.calendarContainer.setAttribute("aria-label","Date picker")}catch(t){console.warn("Error setting calendar attributes:",t)}},setInitialDates:this.setInitialDates.bind(this)}),!this.flatpickrInstance)throw new Error("Failed to initialize Flatpickr instance");b(),this._validate(!1,!1)}catch(t){console.error("Error initializing Flatpickr:",t),t instanceof Error&&console.error("Error details:",t.message)}else console.warn("Cannot initialize Flatpickr: input element not available or not connected to DOM")}async updateFlatpickrOptions(){this.flatpickrInstance?await this.debouncedUpdate():console.warn("Cannot update options: Flatpickr instance not available")}setInitialDates(){if(this.flatpickrInstance)try{const t=this.defaultDate||this.value;if(!t)return;if(Array.isArray(t)){const e=t.filter((t=>!!t&&!("string"==typeof t&&!t.trim())));e.length>0&&this.flatpickrInstance.setDate(e,!0)}else("string"==typeof t&&t.trim()||t instanceof Date)&&this.flatpickrInstance.setDate(t,!0)}catch(t){console.warn("Error setting initial dates:",t),t instanceof Error&&console.warn("Error details:",t.message)}else console.warn("Cannot set initial dates: Flatpickr instance not available")}async getComponentFlatpickrOptions(){var t;const e=k(this);return await f({locale:this.locale,dateFormat:this.dateFormat,defaultDate:this.defaultDate?this.defaultDate:void 0,enableTime:this._enableTime,twentyFourHourFormat:null!==(t=this.twentyFourHourFormat)&&void 0!==t?t:void 0,inputEl:this._inputEl,minDate:this.minDate,maxDate:this.maxDate,enable:this.enable,disable:this._processedDisableDates,mode:this.mode,closeOnSelect:!("multiple"===this.mode||this._enableTime),loadLocale:y,onOpen:this.handleOpen.bind(this),onClose:this.handleClose.bind(this),onChange:this.handleDateChange.bind(this),appendTo:e,noCalendar:!1,static:this.staticPosition})}handleOpen(){var t;this._shouldFlatpickrOpen||(null===(t=this.flatpickrInstance)||void 0===t||t.close(),this._shouldFlatpickrOpen=!0)}async handleClose(){this._hasInteracted=!0,this._validate(!0,!1),await this.updateComplete}async handleDateChange(t,e){var i;if(!this._isClearing){this._hasInteracted=!0;try{let a;"multiple"===this.mode?this.value=t.length>0?[...t]:null:this.value=t.length>0?t[0]:null,a=Array.isArray(this.value)?this.value.map((t=>t.toISOString())):this.value instanceof Date?this.value.toISOString():null,m(this,"on-change",{dates:a,dateString:(null===(i=this._inputEl)||void 0===i?void 0:i.value)||e,source:0===t.length?"clear":void 0}),this._validate(!0,!1),await this.updateComplete,this.requestUpdate()}catch(t){console.warn("Error handling date change:",t)}}}setShouldFlatpickrOpen(t){this._shouldFlatpickrOpen=t}closeFlatpickr(){var t;null===(t=this.flatpickrInstance)||void 0===t||t.close()}preventFlatpickrOpen(t){x(t,this.setShouldFlatpickrOpen.bind(this))}handleInputClickEvent(){w(this.setShouldFlatpickrOpen.bind(this))}handleInputFocusEvent(){_(this._shouldFlatpickrOpen,this.closeFlatpickr.bind(this),this.setShouldFlatpickrOpen.bind(this))}_validate(t,e){if(!(this._inputEl&&this._inputEl instanceof HTMLInputElement))return;t&&(this._hasInteracted=!0);const i=!this._inputEl.value.trim(),a=this.required;let r=this._inputEl.validity,n=this._inputEl.validationMessage;a&&i&&(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(),this.requestUpdate()}_onChange(){this._validate(!0,!1)}_handleFormReset(){this.value=null,this.flatpickrInstance&&this.flatpickrInstance.clear(),this._hasInteracted=!1,this._validate(!1,!1)}disconnectedCallback(){this._isDestroyed=!0,super.disconnectedCallback(),this.removeEventListener("change",this._onChange),this.removeEventListener("reset",this._handleFormReset),this.flatpickrInstance&&(this.flatpickrInstance.destroy(),this.flatpickrInstance=void 0)}};C.styles=[E,z],t([i({type:String})],C.prototype,"label",void 0),t([i({type:String})],C.prototype,"locale",void 0),t([i({type:String})],C.prototype,"dateFormat",void 0),t([i({type:Array})],C.prototype,"defaultDate",void 0),t([i({type:String})],C.prototype,"defaultErrorMessage",void 0),t([i({type:Boolean})],C.prototype,"required",void 0),t([i({type:String})],C.prototype,"size",void 0),t([i({type:Array})],C.prototype,"value",void 0),t([i({type:String})],C.prototype,"warnText",void 0),t([i({type:Array})],C.prototype,"disable",void 0),t([a()],C.prototype,"_processedDisableDates",void 0),t([i({type:Array})],C.prototype,"enable",void 0),t([i({type:String})],C.prototype,"mode",void 0),t([i({type:String})],C.prototype,"caption",void 0),t([i({type:Boolean})],C.prototype,"datePickerDisabled",void 0),t([i({type:Boolean})],C.prototype,"twentyFourHourFormat",void 0),t([i({type:String})],C.prototype,"minDate",void 0),t([i({type:String})],C.prototype,"maxDate",void 0),t([i({type:String})],C.prototype,"errorAriaLabel",void 0),t([i({type:String})],C.prototype,"errorTitle",void 0),t([i({type:String})],C.prototype,"warningAriaLabel",void 0),t([i({type:String})],C.prototype,"warningTitle",void 0),t([i({type:Boolean})],C.prototype,"staticPosition",void 0),t([a()],C.prototype,"_enableTime",void 0),t([a()],C.prototype,"_hasInteracted",void 0),t([a()],C.prototype,"flatpickrInstance",void 0),t([r("input")],C.prototype,"_inputEl",void 0),t([a()],C.prototype,"_isClearing",void 0),t([i({type:Object})],C.prototype,"textStrings",void 0),t([a()],C.prototype,"_textStrings",void 0),t([a()],C.prototype,"_shouldFlatpickrOpen",void 0),C=t([n("kyn-date-picker")],C);export{C as DatePicker};
|
|
581
581
|
//# sourceMappingURL=datepicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.js","sources":["../../../../src/components/reusable/datePicker/datepicker.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } 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 { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { langsArray } from '../../../common/flatpickrLangs';\nimport {\n injectFlatpickrStyles,\n initializeSingleAnchorFlatpickr,\n getFlatpickrOptions,\n getPlaceholder,\n preventFlatpickrOpen,\n handleInputClick,\n handleInputFocus,\n updateEnableTime,\n setCalendarAttributes,\n loadLocale,\n emitValue,\n hideEmptyYear,\n getModalContainer,\n} from '../../../common/helpers/flatpickr';\nimport '../../reusable/button';\n\nimport flatpickr from 'flatpickr';\nimport { BaseOptions } from 'flatpickr/dist/types/options';\n\nimport DatePickerStyles from './datepicker.scss';\nimport ShidokaFlatpickrTheme from '../../../common/scss/shidoka-flatpickr-theme.scss';\n\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-filled.svg';\nimport calendarIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/24/calendar.svg';\nimport clearIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/20/close-simple.svg';\n\ntype SupportedLocale = (typeof langsArray)[number];\n\nconst _defaultTextStrings = {\n requiredText: 'Required',\n clearAll: 'Clear',\n pleaseSelectDate: 'Please select a date',\n pleaseSelectValidDate: 'Please select a valid date',\n};\n\n/**\n * Datepicker: uses Flatpickr's datetime picker library -- `https://flatpickr.js.org`\n * @fires on-change - Captures the input event and emits the selected value and original event details.\n * @slot tooltip - Slot for tooltip.\n */\n@customElement('kyn-date-picker')\nexport class DatePicker extends FormMixin(LitElement) {\n static override styles = [DatePickerStyles, ShidokaFlatpickrTheme];\n\n /** Label text. */\n @property({ type: String })\n label = '';\n\n /* Sets desired locale and, if supported, dynamically loads language lib */\n @property({ type: String })\n locale: SupportedLocale = 'en';\n\n /** Sets flatpickr value to define how the date will be displayed in the input box (ex: `Y-m-d H:i`). */\n @property({ type: String })\n dateFormat = 'Y-m-d';\n\n /** Sets the initial selected date(s). For multiple mode, provide an array of date strings matching dateFormat. */\n @property({ type: Array })\n defaultDate: string | string[] | null = null;\n\n /** Sets default error message. */\n @property({ type: String })\n defaultErrorMessage = '';\n\n /** Sets datepicker form input value to required/required. */\n @property({ type: Boolean })\n required = false;\n\n /** Input size. \"sm\", \"md\", or \"lg\". */\n @property({ type: String })\n size = 'md';\n\n /** Sets pre-selected date/time value. */\n @property({ type: Array })\n override value: Date | Date[] | null = null;\n\n /** Sets validation warning messaging. */\n @property({ type: String })\n warnText = '';\n\n /** Sets flatpickr options setting to disable specific dates. Accepts array of dates in Y-m-d format, timestamps, or Date objects. */\n @property({ type: Array })\n disable: (string | number | Date)[] = [];\n\n /** Internal storage for processed disable dates */\n @state()\n private _processedDisableDates: (string | number | Date)[] = [];\n\n /** Sets flatpickr options setting to enable specific dates. */\n @property({ type: Array })\n enable: (string | number | Date)[] = [];\n\n /** Sets flatpickr mode to select single (default), multiple dates. */\n @property({ type: String })\n mode: 'single' | 'multiple' = 'single';\n\n /** Sets caption to be displayed under primary date picker elements. */\n @property({ type: String })\n caption = '';\n\n /** Sets entire datepicker form element to enabled/disabled. */\n @property({ type: Boolean })\n datePickerDisabled = false;\n\n /** Sets 24 hour formatting true/false.\n * Defaults to 12H for all `en-*` locales and 24H for all other locales.\n */\n @property({ type: Boolean })\n twentyFourHourFormat: boolean | null = null;\n\n /** Sets lower boundary of datepicker date selection. */\n @property({ type: String })\n minDate: string | number | Date = '';\n\n /** Sets upper boundary of datepicker date selection. */\n @property({ type: String })\n maxDate: string | number | Date = '';\n\n /** Sets aria label attribute for error message. */\n @property({ type: String })\n errorAriaLabel = '';\n\n /** Sets title attribute for error message. */\n @property({ type: String })\n errorTitle = '';\n\n /** Sets aria label attribute for warning message. */\n @property({ type: String })\n warningAriaLabel = '';\n\n /** Sets title attribute for warning message. */\n @property({ type: String })\n warningTitle = '';\n\n /** Sets whether the Flatpickr calendar UI should use static positioning. */\n @property({ type: Boolean })\n staticPosition = false;\n\n /** Sets flatpickr enableTime value based on detected dateFormat.\n * @internal\n */\n @state()\n private _enableTime = false;\n\n /**\n * Sets whether user has interacted with datepicker for error handling.\n * @internal\n */\n @state()\n private _hasInteracted = false;\n\n /** Flatpickr instantiation.\n * @internal\n */\n @state()\n private flatpickrInstance?: flatpickr.Instance;\n\n /**\n * Queries the anchor DOM element.\n * @internal\n */\n @query('input')\n private _inputEl?: HTMLInputElement;\n\n /** Tracks if we're in a clear operation to prevent duplicate events\n * @internal\n */\n @state()\n private _isClearing = false;\n\n /** Customizable text strings. */\n @property({ type: Object })\n textStrings = _defaultTextStrings;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n _textStrings = _defaultTextStrings;\n\n /** Control flag to prevent Flatpickr from opening when clicking caption, error, label, or warning elements.\n * @internal\n */\n @state()\n private _shouldFlatpickrOpen = false;\n\n /** Track initialization state\n * @internal\n */\n private _initialized = false;\n\n /** Track destroyed state\n * @internal\n */\n private _isDestroyed = false;\n\n private debounce<T extends (...args: any[]) => any>(\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 func.apply(this, args);\n timeout = null;\n }, wait);\n };\n }\n\n private debouncedUpdate = this.debounce(async () => {\n if (!this.flatpickrInstance) return;\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error in debounced update:', error);\n }\n }, 100);\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('change', this._onChange);\n this.addEventListener('reset', this._handleFormReset);\n }\n\n private hasValue(): boolean {\n if (this._inputEl?.value) return true;\n if (this.value) {\n if (Array.isArray(this.value)) {\n return (\n this.value.length > 0 && !this.value.every((date) => date === null)\n );\n }\n return true;\n }\n if (this.defaultDate) {\n if (Array.isArray(this.defaultDate)) {\n return (\n this.defaultDate.length > 0 &&\n !this.defaultDate.every((date) => !date || date === '')\n );\n }\n return !!this.defaultDate;\n }\n return false;\n }\n\n override render() {\n const errorId = `${this.name}-error-message`;\n const warningId = `${this.name}-warning-message`;\n const anchorId = this.name\n ? `${this.name}-${Math.random().toString(36).slice(2, 11)}`\n : `date-picker-${Math.random().toString(36).slice(2, 11)}`;\n const descriptionId = this.name ?? '';\n const placeholder = getPlaceholder(this.dateFormat);\n\n return html`\n <div class=${classMap(this.getDatepickerClasses())}>\n <div\n class=\"label-text\"\n @mousedown=${this.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n ?disabled=${this.datePickerDisabled}\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 >*</abbr\n >`\n : null}\n ${this.label}\n <slot name=\"tooltip\"></slot>\n </div>\n\n <div class=\"input-wrapper\">\n <input\n class=\"${classMap({\n [`size--${this.size}`]: true,\n 'input-custom': true,\n })}\"\n type=\"text\"\n id=${anchorId}\n name=${this.name}\n placeholder=${placeholder}\n ?disabled=${this.datePickerDisabled}\n ?required=${this.required}\n ?invalid=${this._isInvalid}\n aria-invalid=${this._isInvalid ? 'true' : 'false'}\n aria-labelledby=${`label-${anchorId}`}\n @click=${this.handleInputClickEvent}\n @focus=${this.handleInputFocusEvent}\n />\n ${this.hasValue()\n ? html`\n <kyn-button\n ?disabled=${this.datePickerDisabled}\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)}</span\n >\n </kyn-button>\n `\n : html`<span class=\"input-icon\">${unsafeSVG(calendarIcon)}</span>`}\n </div>\n\n ${this.caption\n ? html`<div\n id=${descriptionId}\n class=\"caption\"\n aria-disabled=${this.datePickerDisabled}\n @mousedown=${this.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\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.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.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n >\n <span\n class=\"error-icon\"\n aria-label=${`${this.errorAriaLabel}` || 'Error message icon'}\n role=\"button\"\n >${unsafeSVG(errorIcon)}</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.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n >\n ${this.warnText}\n </div>`;\n }\n\n return null;\n }\n\n getDatepickerClasses() {\n return {\n 'date-picker': true,\n 'date-picker__enable-time': this._enableTime,\n 'date-picker__multiple-select': this.mode === 'multiple',\n 'date-picker__disabled': this.datePickerDisabled,\n };\n }\n\n override async firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n if (!this._initialized) {\n injectFlatpickrStyles(ShidokaFlatpickrTheme.toString());\n this._initialized = true;\n await this.updateComplete;\n this.setupAnchor();\n }\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n\n if (changedProperties.has('value') && !this._isClearing) {\n const newValue = this.value;\n const isNull =\n newValue === null || (Array.isArray(newValue) && newValue.length === 0);\n if (isNull && this.flatpickrInstance) {\n this._isClearing = true;\n try {\n this.flatpickrInstance.clear();\n if (this._inputEl) {\n this._inputEl.value = '';\n }\n } finally {\n this._isClearing = false;\n }\n }\n this.requestUpdate();\n }\n\n if (\n changedProperties.has('defaultDate') &&\n this.flatpickrInstance &&\n !this._isClearing\n ) {\n this.debouncedUpdate();\n }\n\n if (changedProperties.has('disable')) {\n if (Array.isArray(this.disable)) {\n this._processedDisableDates = this.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 [year, month, day] = date.split('-').map(Number);\n if (!isNaN(year) && !isNaN(month) && !isNaN(day)) {\n return new Date(year, month - 1, day);\n }\n }\n return date;\n });\n } else {\n this._processedDisableDates = [];\n console.warn('Disable prop must be an array');\n }\n if (this.flatpickrInstance) {\n this.debouncedUpdate();\n }\n }\n\n if (\n changedProperties.has('dateFormat') ||\n changedProperties.has('minDate') ||\n changedProperties.has('maxDate') ||\n changedProperties.has('locale') ||\n changedProperties.has('twentyFourHourFormat')\n ) {\n this._enableTime = updateEnableTime(this.dateFormat);\n if (this.flatpickrInstance && this._initialized && !this._isClearing) {\n if (changedProperties.has('dateFormat')) {\n this.debouncedUpdate();\n } else {\n this.debouncedUpdate();\n }\n }\n }\n\n if (\n changedProperties.has('datePickerDisabled') &&\n this.datePickerDisabled &&\n this.flatpickrInstance\n ) {\n this.flatpickrInstance.close();\n }\n }\n\n private async setupAnchor() {\n if (!this._inputEl) {\n console.warn('Input element not found during setup');\n return;\n }\n\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error setting up flatpickr:', error);\n }\n }\n\n private async _handleClear(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.flatpickrInstance) {\n console.warn('Cannot clear: Flatpickr instance not available');\n return;\n }\n\n this._isClearing = true;\n\n try {\n this.value = this.mode === 'multiple' ? [] : null;\n this.defaultDate = null;\n\n this.flatpickrInstance.clear();\n if (this._inputEl) {\n this._inputEl.value = '';\n }\n\n emitValue(this, 'on-change', {\n dates: null,\n dateString: '',\n source: 'clear',\n });\n\n this._validate(true, false);\n await this.updateComplete;\n this.requestUpdate();\n } catch (error) {\n console.error('Error clearing datepicker:', error);\n } finally {\n this._isClearing = false;\n }\n }\n\n async initializeFlatpickr(): Promise<void> {\n if (this._isDestroyed) {\n return;\n }\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\n try {\n if (this.flatpickrInstance) {\n this.flatpickrInstance.destroy();\n }\n\n this.flatpickrInstance = await initializeSingleAnchorFlatpickr({\n inputEl: this._inputEl,\n getFlatpickrOptions: () => this.getComponentFlatpickrOptions(),\n setCalendarAttributes: (instance) => {\n try {\n const container = getModalContainer(this);\n setCalendarAttributes(instance, container !== document.body);\n if (instance.calendarContainer) {\n instance.calendarContainer.setAttribute(\n 'aria-label',\n 'Date picker'\n );\n }\n } catch (error) {\n console.warn('Error setting calendar attributes:', error);\n }\n },\n setInitialDates: this.setInitialDates.bind(this),\n });\n\n if (!this.flatpickrInstance) {\n throw new Error('Failed to initialize Flatpickr instance');\n }\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(): Promise<void> {\n if (!this.flatpickrInstance) {\n console.warn('Cannot update options: Flatpickr instance not available');\n return;\n }\n await this.debouncedUpdate();\n }\n\n setInitialDates(): void {\n if (!this.flatpickrInstance) {\n console.warn(\n 'Cannot set initial dates: Flatpickr instance not available'\n );\n return;\n }\n\n try {\n const dateToSet = this.defaultDate || this.value;\n if (!dateToSet) return;\n\n if (Array.isArray(dateToSet)) {\n const validDates = dateToSet.filter((date) => {\n if (!date) return false;\n if (typeof date === 'string' && !date.trim()) return false;\n return true;\n });\n\n if (validDates.length > 0) {\n this.flatpickrInstance.setDate(validDates, true);\n }\n } else if (typeof dateToSet === 'string' && dateToSet.trim()) {\n this.flatpickrInstance.setDate(dateToSet, true);\n } else if (dateToSet instanceof Date) {\n this.flatpickrInstance.setDate(dateToSet, true);\n }\n } catch (error) {\n console.warn('Error setting initial dates:', error);\n\n if (error instanceof Error) {\n console.warn('Error details:', error.message);\n }\n }\n }\n\n async getComponentFlatpickrOptions(): Promise<Partial<BaseOptions>> {\n const container = getModalContainer(this);\n const options = await getFlatpickrOptions({\n locale: this.locale,\n dateFormat: this.dateFormat,\n defaultDate: this.defaultDate ? this.defaultDate : undefined,\n enableTime: this._enableTime,\n twentyFourHourFormat: this.twentyFourHourFormat ?? undefined,\n inputEl: this._inputEl!,\n minDate: this.minDate,\n maxDate: this.maxDate,\n enable: this.enable,\n disable: this._processedDisableDates,\n mode: this.mode,\n closeOnSelect: !(this.mode === 'multiple' || this._enableTime),\n loadLocale,\n onOpen: this.handleOpen.bind(this),\n onClose: this.handleClose.bind(this),\n onChange: this.handleDateChange.bind(this),\n appendTo: container,\n noCalendar: false,\n static: this.staticPosition,\n });\n return options;\n }\n\n handleOpen(): void {\n if (!this._shouldFlatpickrOpen) {\n this.flatpickrInstance?.close();\n this._shouldFlatpickrOpen = true;\n }\n }\n\n async handleClose(): Promise<void> {\n this._hasInteracted = true;\n this._validate(true, false);\n await this.updateComplete;\n }\n\n async handleDateChange(\n selectedDates: Date[],\n dateStr: string\n ): Promise<void> {\n if (this._isClearing) return;\n\n this._hasInteracted = true;\n\n try {\n if (this.mode === 'multiple') {\n this.value = selectedDates.length > 0 ? [...selectedDates] : null;\n } else {\n this.value = selectedDates.length > 0 ? selectedDates[0] : null;\n }\n\n let formattedDates;\n if (Array.isArray(this.value)) {\n formattedDates = this.value.map((date) => date.toISOString());\n } else if (this.value instanceof Date) {\n formattedDates = this.value.toISOString();\n } else {\n formattedDates = null;\n }\n\n emitValue(this, 'on-change', {\n dates: formattedDates,\n dateString: (this._inputEl as HTMLInputElement)?.value || dateStr,\n source: selectedDates.length === 0 ? 'clear' : undefined,\n });\n\n this._validate(true, false);\n await this.updateComplete;\n this.requestUpdate();\n } catch (error) {\n console.warn('Error handling date change:', error);\n }\n }\n\n private setShouldFlatpickrOpen(value: boolean): void {\n this._shouldFlatpickrOpen = value;\n }\n\n private closeFlatpickr(): void {\n this.flatpickrInstance?.close();\n }\n\n private preventFlatpickrOpen(event: Event): void {\n preventFlatpickrOpen(event, this.setShouldFlatpickrOpen.bind(this));\n }\n\n private handleInputClickEvent(): void {\n handleInputClick(this.setShouldFlatpickrOpen.bind(this));\n }\n\n private handleInputFocusEvent(): void {\n handleInputFocus(\n this._shouldFlatpickrOpen,\n this.closeFlatpickr.bind(this),\n this.setShouldFlatpickrOpen.bind(this)\n );\n }\n\n private _validate(interacted: boolean, report: boolean): void {\n if (!this._inputEl || !(this._inputEl instanceof HTMLInputElement)) {\n return;\n }\n\n if (interacted) {\n this._hasInteracted = true;\n }\n\n const isEmpty = !this._inputEl.value.trim();\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 this._isInvalid =\n !isValid && (this._hasInteracted || this.invalidText !== '');\n this._internalValidationMsg = validationMessage;\n\n if (report) {\n this._internals.reportValidity();\n }\n\n this.requestUpdate();\n }\n\n private _onChange() {\n this._validate(true, false);\n }\n\n private _handleFormReset() {\n this.value = null;\n if (this.flatpickrInstance) {\n this.flatpickrInstance.clear();\n }\n this._hasInteracted = false;\n this._validate(false, false);\n }\n\n override disconnectedCallback(): void {\n this._isDestroyed = true;\n super.disconnectedCallback();\n this.removeEventListener('change', this._onChange);\n this.removeEventListener('reset', this._handleFormReset);\n\n if (this.flatpickrInstance) {\n this.flatpickrInstance.destroy();\n this.flatpickrInstance = undefined;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-date-picker': DatePicker;\n }\n}\n"],"names":["_defaultTextStrings","requiredText","clearAll","pleaseSelectDate","pleaseSelectValidDate","DatePicker","FormMixin","LitElement","constructor","this","label","locale","dateFormat","defaultDate","defaultErrorMessage","required","size","value","warnText","disable","_processedDisableDates","enable","mode","caption","datePickerDisabled","twentyFourHourFormat","minDate","maxDate","errorAriaLabel","errorTitle","warningAriaLabel","warningTitle","staticPosition","_enableTime","_hasInteracted","_isClearing","textStrings","_textStrings","_shouldFlatpickrOpen","_initialized","_isDestroyed","debouncedUpdate","debounce","async","flatpickrInstance","initializeFlatpickr","error","console","func","wait","timeout","args","window","clearTimeout","setTimeout","apply","connectedCallback","super","addEventListener","_onChange","_handleFormReset","hasValue","_a","_inputEl","Array","isArray","length","every","date","render","errorId","name","warningId","anchorId","Math","random","toString","slice","descriptionId","placeholder","getPlaceholder","html","classMap","getDatepickerClasses","preventFlatpickrOpen","_b","_c","_isInvalid","handleInputClickEvent","handleInputFocusEvent","_handleClear","unsafeSVG","clearIcon","calendarIcon","renderValidationMessage","invalidText","errorIcon","_internalValidationMsg","firstUpdated","changedProperties","injectFlatpickrStyles","ShidokaFlatpickrTheme","updateComplete","setupAnchor","updated","has","newValue","clear","requestUpdate","map","Date","year","month","day","split","Number","isNaN","warn","updateEnableTime","close","event","preventDefault","stopPropagation","emitValue","dates","dateString","source","_validate","isConnected","destroy","initializeSingleAnchorFlatpickr","inputEl","getFlatpickrOptions","getComponentFlatpickrOptions","setCalendarAttributes","instance","container","getModalContainer","document","body","calendarContainer","setAttribute","setInitialDates","bind","Error","hideEmptyYear","message","updateFlatpickrOptions","dateToSet","validDates","filter","trim","setDate","undefined","enableTime","closeOnSelect","loadLocale","onOpen","handleOpen","onClose","handleClose","onChange","handleDateChange","appendTo","noCalendar","static","selectedDates","dateStr","formattedDates","toISOString","setShouldFlatpickrOpen","closeFlatpickr","handleInputClick","handleInputFocus","interacted","report","HTMLInputElement","isEmpty","isRequired","validity","validationMessage","valueMissing","customError","isValid","_internals","setValidity","reportValidity","disconnectedCallback","removeEventListener","styles","DatePickerStyles","__decorate","property","type","String","prototype","Boolean","state","query","Object","customElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCA,MAAMA,EAAsB,CAC1BC,aAAc,WACdC,SAAU,QACVC,iBAAkB,uBAClBC,sBAAuB,8BASZ,IAAAC,EAAN,cAAyBC,EAAUC,IAAnC,WAAAC,uBAKLC,KAAKC,MAAG,GAIRD,KAAME,OAAoB,KAI1BF,KAAUG,WAAG,QAIbH,KAAWI,YAA6B,KAIxCJ,KAAmBK,oBAAG,GAItBL,KAAQM,UAAG,EAIXN,KAAIO,KAAG,KAIEP,KAAKQ,MAAyB,KAIvCR,KAAQS,SAAG,GAIXT,KAAOU,QAA+B,GAI9BV,KAAsBW,uBAA+B,GAI7DX,KAAMY,OAA+B,GAIrCZ,KAAIa,KAA0B,SAI9Bb,KAAOc,QAAG,GAIVd,KAAkBe,oBAAG,EAMrBf,KAAoBgB,qBAAmB,KAIvChB,KAAOiB,QAA2B,GAIlCjB,KAAOkB,QAA2B,GAIlClB,KAAcmB,eAAG,GAIjBnB,KAAUoB,WAAG,GAIbpB,KAAgBqB,iBAAG,GAInBrB,KAAYsB,aAAG,GAIftB,KAAcuB,gBAAG,EAMTvB,KAAWwB,aAAG,EAOdxB,KAAcyB,gBAAG,EAmBjBzB,KAAW0B,aAAG,EAItB1B,KAAW2B,YAAGpC,EAMdS,KAAY4B,aAAGrC,EAMPS,KAAoB6B,sBAAG,EAKvB7B,KAAY8B,cAAG,EAKf9B,KAAY+B,cAAG,EAoBf/B,KAAAgC,gBAAkBhC,KAAKiC,UAASC,UACtC,GAAKlC,KAAKmC,kBACV,UACQnC,KAAKoC,qBACZ,CAAC,MAAOC,GACPC,QAAQD,MAAM,6BAA8BA,EAC7C,IACA,IAgjBJ,CAzkBS,QAAAJ,CACNM,EACAC,GAEA,IAAIC,EAAyB,KAE7B,MAAO,IAAIC,KACO,OAAZD,GACFE,OAAOC,aAAaH,GAGtBA,EAAUE,OAAOE,YAAW,KAC1BN,EAAKO,MAAM9C,KAAM0C,GACjBD,EAAU,IAAI,GACbD,EAAK,CAEX,CAWQ,iBAAAO,GACPC,MAAMD,oBACN/C,KAAKiD,iBAAiB,SAAUjD,KAAKkD,WACrClD,KAAKiD,iBAAiB,QAASjD,KAAKmD,iBACrC,CAEO,QAAAC,SACN,iBAAIC,EAAArD,KAAKsD,+BAAU9C,SACfR,KAAKQ,OACH+C,MAAMC,QAAQxD,KAAKQ,QAEnBR,KAAKQ,MAAMiD,OAAS,IAAMzD,KAAKQ,MAAMkD,OAAOC,GAAkB,OAATA,MAKvD3D,KAAKI,cACHmD,MAAMC,QAAQxD,KAAKI,aAEnBJ,KAAKI,YAAYqD,OAAS,IACzBzD,KAAKI,YAAYsD,OAAOC,IAAUA,GAAiB,KAATA,MAGtC3D,KAAKI,aAGjB,CAEQ,MAAAwD,aACP,MAAMC,EAAU,GAAG7D,KAAK8D,qBAClBC,EAAY,GAAG/D,KAAK8D,uBACpBE,EAAWhE,KAAK8D,KAClB,GAAG9D,KAAK8D,QAAQG,KAAKC,SAASC,SAAS,IAAIC,MAAM,EAAG,MACpD,eAAeH,KAAKC,SAASC,SAAS,IAAIC,MAAM,EAAG,MACjDC,EAAyB,QAAThB,EAAArD,KAAK8D,YAAI,IAAAT,EAAAA,EAAI,GAC7BiB,EAAcC,EAAevE,KAAKG,YAExC,OAAOqE,CAAI;mBACIC,EAASzE,KAAK0E;;;uBAGV1E,KAAK2E;mBACT3E,KAAK2E;sBACF3E,KAAKe;eACZ,SAASiD;;YAEZhE,KAAKM,SACHkE,CAAI;;wBAEuB,QAAjBI,EAAA5E,KAAK4B,oBAAY,IAAAgD,OAAA,EAAAA,EAAEpF;;6BAEG,QAAjBqF,EAAA7E,KAAK4B,oBAAY,IAAAiD,OAAA,EAAAA,EAAErF;;iBAGlC;YACFQ,KAAKC;;;;;;qBAMIwE,EAAS,CAChB,CAAC,SAASzE,KAAKO,SAAS,EACxB,gBAAgB;;iBAGbyD;mBACEhE,KAAK8D;0BACEQ;wBACFtE,KAAKe;wBACLf,KAAKM;uBACNN,KAAK8E;2BACD9E,KAAK8E,WAAa,OAAS;8BACxB,SAASd;qBAClBhE,KAAK+E;qBACL/E,KAAKgF;;YAEdhF,KAAKoD,WACHoB,CAAI;;8BAEYxE,KAAKe;;;;gCAIHf,KAAK4B,aAAanC;2BACvBO,KAAKiF;;;uBAGTC,EAAUC;;;gBAInBX,CAAI,4BAA4BU,EAAUE;;;UAG9CpF,KAAKc,QACH0D,CAAI;mBACGH;;8BAEWrE,KAAKe;2BACRf,KAAK2E;uBACT3E,KAAK2E;;gBAEZ3E,KAAKc;oBAET;UACFd,KAAKqF,wBAAwBxB,EAASE;;KAG7C,CAEO,uBAAAsB,CAAwBxB,EAAiBE,GAC/C,OAAI/D,KAAKsF,aAAgBtF,KAAK8E,YAAc9E,KAAKyB,eACxC+C,CAAI;aACJX;;;gBAGG7D,KAAKoB,YAAc;qBACdpB,KAAK2E;iBACT3E,KAAK2E;;;;uBAIC,GAAG3E,KAAKmB,kBAAoB;;aAEtC+D,EAAUK;WACZvF,KAAKsF,aACRtF,KAAKwF,wBACLxF,KAAKK;cAILL,KAAKS,SACA+D,CAAI;aACJT;;;qBAGQ/D,KAAKqB,kBAAoB;gBAC9BrB,KAAKsB,cAAgB;qBAChBtB,KAAK2E;iBACT3E,KAAK2E;;UAEZ3E,KAAKS;cAIJ,IACR,CAED,oBAAAiE,GACE,MAAO,CACL,eAAe,EACf,2BAA4B1E,KAAKwB,YACjC,+BAA8C,aAAdxB,KAAKa,KACrC,wBAAyBb,KAAKe,mBAEjC,CAEQ,kBAAM0E,CAAaC,GAC1B1C,MAAMyC,aAAaC,GACd1F,KAAK8B,eACR6D,EAAsBC,EAAsBzB,YAC5CnE,KAAK8B,cAAe,QACd9B,KAAK6F,eACX7F,KAAK8F,cAER,CAEQ,OAAAC,CAAQL,GAGf,GAFA1C,MAAM+C,QAAQL,GAEVA,EAAkBM,IAAI,WAAahG,KAAK0B,YAAa,CACvD,MAAMuE,EAAWjG,KAAKQ,MAGtB,IADe,OAAbyF,GAAsB1C,MAAMC,QAAQyC,IAAiC,IAApBA,EAASxC,SAC9CzD,KAAKmC,kBAAmB,CACpCnC,KAAK0B,aAAc,EACnB,IACE1B,KAAKmC,kBAAkB+D,QACnBlG,KAAKsD,WACPtD,KAAKsD,SAAS9C,MAAQ,GAEzB,CAAS,QACRR,KAAK0B,aAAc,CACpB,CACF,CACD1B,KAAKmG,eACN,CAGCT,EAAkBM,IAAI,gBACtBhG,KAAKmC,oBACJnC,KAAK0B,aAEN1B,KAAKgC,kBAGH0D,EAAkBM,IAAI,aACpBzC,MAAMC,QAAQxD,KAAKU,SACrBV,KAAKW,uBAAyBX,KAAKU,QAAQ0F,KAAKzC,IAC9C,GAAIA,aAAgB0C,KAAM,OAAO1C,EACjC,GAAoB,iBAATA,EAAmB,OAAO,IAAI0C,KAAK1C,GAC9C,GAAoB,iBAATA,EAAmB,CAC5B,MAAO2C,EAAMC,EAAOC,GAAO7C,EAAK8C,MAAM,KAAKL,IAAIM,QAC/C,IAAKC,MAAML,KAAUK,MAAMJ,KAAWI,MAAMH,GAC1C,OAAO,IAAIH,KAAKC,EAAMC,EAAQ,EAAGC,EAEpC,CACD,OAAO7C,CAAI,KAGb3D,KAAKW,uBAAyB,GAC9B2B,QAAQsE,KAAK,kCAEX5G,KAAKmC,mBACPnC,KAAKgC,oBAKP0D,EAAkBM,IAAI,eACtBN,EAAkBM,IAAI,YACtBN,EAAkBM,IAAI,YACtBN,EAAkBM,IAAI,WACtBN,EAAkBM,IAAI,2BAEtBhG,KAAKwB,YAAcqF,EAAiB7G,KAAKG,YACrCH,KAAKmC,mBAAqBnC,KAAK8B,eAAiB9B,KAAK0B,cACnDgE,EAAkBM,IAAI,cACxBhG,KAAKgC,oBAQT0D,EAAkBM,IAAI,uBACtBhG,KAAKe,oBACLf,KAAKmC,mBAELnC,KAAKmC,kBAAkB2E,OAE1B,CAEO,iBAAMhB,GACZ,GAAK9F,KAAKsD,SAKV,UACQtD,KAAKoC,qBACZ,CAAC,MAAOC,GACPC,QAAQD,MAAM,8BAA+BA,EAC9C,MARCC,QAAQsE,KAAK,uCAShB,CAEO,kBAAM3B,CAAa8B,GAIzB,GAHAA,EAAMC,iBACND,EAAME,kBAEDjH,KAAKmC,kBAAV,CAKAnC,KAAK0B,aAAc,EAEnB,IACE1B,KAAKQ,MAAsB,aAAdR,KAAKa,KAAsB,GAAK,KAC7Cb,KAAKI,YAAc,KAEnBJ,KAAKmC,kBAAkB+D,QACnBlG,KAAKsD,WACPtD,KAAKsD,SAAS9C,MAAQ,IAGxB0G,EAAUlH,KAAM,YAAa,CAC3BmH,MAAO,KACPC,WAAY,GACZC,OAAQ,UAGVrH,KAAKsH,WAAU,GAAM,SACftH,KAAK6F,eACX7F,KAAKmG,eACN,CAAC,MAAO9D,GACPC,QAAQD,MAAM,6BAA8BA,EAC7C,CAAS,QACRrC,KAAK0B,aAAc,CACpB,CA1BA,MAFCY,QAAQsE,KAAK,iDA6BhB,CAED,yBAAMxE,GACJ,IAAIpC,KAAK+B,aAIT,GAAK/B,KAAKsD,UAAatD,KAAKsD,SAASiE,YAOrC,IAyBE,GAxBIvH,KAAKmC,mBACPnC,KAAKmC,kBAAkBqF,UAGzBxH,KAAKmC,wBAA0BsF,EAAgC,CAC7DC,QAAS1H,KAAKsD,SACdqE,oBAAqB,IAAM3H,KAAK4H,+BAChCC,sBAAwBC,IACtB,IACE,MAAMC,EAAYC,EAAkBhI,MACpC6H,EAAsBC,EAAUC,IAAcE,SAASC,MACnDJ,EAASK,mBACXL,EAASK,kBAAkBC,aACzB,aACA,cAGL,CAAC,MAAO/F,GACPC,QAAQsE,KAAK,qCAAsCvE,EACpD,GAEHgG,gBAAiBrI,KAAKqI,gBAAgBC,KAAKtI,SAGxCA,KAAKmC,kBACR,MAAM,IAAIoG,MAAM,2CAGlBC,IACAxI,KAAKsH,WAAU,GAAO,EACvB,CAAC,MAAOjF,GACPC,QAAQD,MAAM,gCAAiCA,GAC3CA,aAAiBkG,OACnBjG,QAAQD,MAAM,iBAAkBA,EAAMoG,QAEzC,MA1CCnG,QAAQsE,KACN,mFA0CL,CAED,4BAAM8B,GACC1I,KAAKmC,wBAIJnC,KAAKgC,kBAHTM,QAAQsE,KAAK,0DAIhB,CAED,eAAAyB,GACE,GAAKrI,KAAKmC,kBAOV,IACE,MAAMwG,EAAY3I,KAAKI,aAAeJ,KAAKQ,MAC3C,IAAKmI,EAAW,OAEhB,GAAIpF,MAAMC,QAAQmF,GAAY,CAC5B,MAAMC,EAAaD,EAAUE,QAAQlF,KAC9BA,KACe,iBAATA,IAAsBA,EAAKmF,UAIpCF,EAAWnF,OAAS,GACtBzD,KAAKmC,kBAAkB4G,QAAQH,GAAY,EAE9C,MAA+B,iBAAdD,GAA0BA,EAAUG,QAE3CH,aAAqBtC,OAD9BrG,KAAKmC,kBAAkB4G,QAAQJ,GAAW,EAI7C,CAAC,MAAOtG,GACPC,QAAQsE,KAAK,+BAAgCvE,GAEzCA,aAAiBkG,OACnBjG,QAAQsE,KAAK,iBAAkBvE,EAAMoG,QAExC,MA/BCnG,QAAQsE,KACN,6DA+BL,CAED,kCAAMgB,SACJ,MAAMG,EAAYC,EAAkBhI,MAsBpC,aArBsB2H,EAAoB,CACxCzH,OAAQF,KAAKE,OACbC,WAAYH,KAAKG,WACjBC,YAAaJ,KAAKI,YAAcJ,KAAKI,iBAAc4I,EACnDC,WAAYjJ,KAAKwB,YACjBR,6BAAsBqC,EAAArD,KAAKgB,yCAAwBgI,EACnDtB,QAAS1H,KAAKsD,SACdrC,QAASjB,KAAKiB,QACdC,QAASlB,KAAKkB,QACdN,OAAQZ,KAAKY,OACbF,QAASV,KAAKW,uBACdE,KAAMb,KAAKa,KACXqI,gBAA+B,aAAdlJ,KAAKa,MAAuBb,KAAKwB,aAClD2H,aACAC,OAAQpJ,KAAKqJ,WAAWf,KAAKtI,MAC7BsJ,QAAStJ,KAAKuJ,YAAYjB,KAAKtI,MAC/BwJ,SAAUxJ,KAAKyJ,iBAAiBnB,KAAKtI,MACrC0J,SAAU3B,EACV4B,YAAY,EACZC,OAAQ5J,KAAKuB,gBAGhB,CAED,UAAA8H,SACOrJ,KAAK6B,uBACgB,QAAxBwB,EAAArD,KAAKmC,yBAAmB,IAAAkB,GAAAA,EAAAyD,QACxB9G,KAAK6B,sBAAuB,EAE/B,CAED,iBAAM0H,GACJvJ,KAAKyB,gBAAiB,EACtBzB,KAAKsH,WAAU,GAAM,SACftH,KAAK6F,cACZ,CAED,sBAAM4D,CACJI,EACAC,SAEA,IAAI9J,KAAK0B,YAAT,CAEA1B,KAAKyB,gBAAiB,EAEtB,IAOE,IAAIsI,EANc,aAAd/J,KAAKa,KACPb,KAAKQ,MAAQqJ,EAAcpG,OAAS,EAAI,IAAIoG,GAAiB,KAE7D7J,KAAKQ,MAAQqJ,EAAcpG,OAAS,EAAIoG,EAAc,GAAK,KAK3DE,EADExG,MAAMC,QAAQxD,KAAKQ,OACJR,KAAKQ,MAAM4F,KAAKzC,GAASA,EAAKqG,gBACtChK,KAAKQ,iBAAiB6F,KACdrG,KAAKQ,MAAMwJ,cAEX,KAGnB9C,EAAUlH,KAAM,YAAa,CAC3BmH,MAAO4C,EACP3C,YAA+C,QAAlC/D,EAAArD,KAAKsD,gBAA6B,IAAAD,OAAA,EAAAA,EAAE7C,QAASsJ,EAC1DzC,OAAiC,IAAzBwC,EAAcpG,OAAe,aAAUuF,IAGjDhJ,KAAKsH,WAAU,GAAM,SACftH,KAAK6F,eACX7F,KAAKmG,eACN,CAAC,MAAO9D,GACPC,QAAQsE,KAAK,8BAA+BvE,EAC7C,CA/B4B,CAgC9B,CAEO,sBAAA4H,CAAuBzJ,GAC7BR,KAAK6B,qBAAuBrB,CAC7B,CAEO,cAAA0J,SACkB,QAAxB7G,EAAArD,KAAKmC,yBAAmB,IAAAkB,GAAAA,EAAAyD,OACzB,CAEO,oBAAAnC,CAAqBoC,GAC3BpC,EAAqBoC,EAAO/G,KAAKiK,uBAAuB3B,KAAKtI,MAC9D,CAEO,qBAAA+E,GACNoF,EAAiBnK,KAAKiK,uBAAuB3B,KAAKtI,MACnD,CAEO,qBAAAgF,GACNoF,EACEpK,KAAK6B,qBACL7B,KAAKkK,eAAe5B,KAAKtI,MACzBA,KAAKiK,uBAAuB3B,KAAKtI,MAEpC,CAEO,SAAAsH,CAAU+C,EAAqBC,GACrC,KAAKtK,KAAKsD,UAActD,KAAKsD,oBAAoBiH,kBAC/C,OAGEF,IACFrK,KAAKyB,gBAAiB,GAGxB,MAAM+I,GAAWxK,KAAKsD,SAAS9C,MAAMsI,OAC/B2B,EAAazK,KAAKM,SAExB,IAAIoK,EAAW1K,KAAKsD,SAASoH,SACzBC,EAAoB3K,KAAKsD,SAASqH,kBAElCF,GAAcD,IAChBE,EAAW,IAAKA,EAAUE,cAAc,GACxCD,EACE3K,KAAKK,qBAAuBL,KAAK4B,aAAalC,kBAG9CM,KAAKsF,cACPoF,EAAW,IAAKA,EAAUG,aAAa,GACvCF,EAAoB3K,KAAKsF,aAG3B,MAAMwF,GAAWJ,EAASE,eAAiBF,EAASG,YAE/CC,GAAYH,IACfA,EAAoB3K,KAAK4B,aAAajC,uBAGxCK,KAAK+K,WAAWC,YAAYN,EAAUC,EAAmB3K,KAAKsD,UAC9DtD,KAAK8E,YACFgG,IAAY9K,KAAKyB,gBAAuC,KAArBzB,KAAKsF,aAC3CtF,KAAKwF,uBAAyBmF,EAE1BL,GACFtK,KAAK+K,WAAWE,iBAGlBjL,KAAKmG,eACN,CAEO,SAAAjD,GACNlD,KAAKsH,WAAU,GAAM,EACtB,CAEO,gBAAAnE,GACNnD,KAAKQ,MAAQ,KACTR,KAAKmC,mBACPnC,KAAKmC,kBAAkB+D,QAEzBlG,KAAKyB,gBAAiB,EACtBzB,KAAKsH,WAAU,GAAO,EACvB,CAEQ,oBAAA4D,GACPlL,KAAK+B,cAAe,EACpBiB,MAAMkI,uBACNlL,KAAKmL,oBAAoB,SAAUnL,KAAKkD,WACxClD,KAAKmL,oBAAoB,QAASnL,KAAKmD,kBAEnCnD,KAAKmC,oBACPnC,KAAKmC,kBAAkBqF,UACvBxH,KAAKmC,uBAAoB6G,EAE5B,GAluBepJ,EAAAwL,OAAS,CAACC,EAAkBzF,GAI5C0F,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACP7L,EAAA8L,UAAA,aAAA,GAIXJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACa7L,EAAA8L,UAAA,cAAA,GAI/BJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACG7L,EAAA8L,UAAA,kBAAA,GAIrBJ,EAAA,CADCC,EAAS,CAAEC,KAAMjI,SAC2B3D,EAAA8L,UAAA,mBAAA,GAI7CJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACO7L,EAAA8L,UAAA,2BAAA,GAIzBJ,EAAA,CADCC,EAAS,CAAEC,KAAMG,WACD/L,EAAA8L,UAAA,gBAAA,GAIjBJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACN7L,EAAA8L,UAAA,YAAA,GAIZJ,EAAA,CADCC,EAAS,CAAEC,KAAMjI,SAC0B3D,EAAA8L,UAAA,aAAA,GAI5CJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACJ7L,EAAA8L,UAAA,gBAAA,GAIdJ,EAAA,CADCC,EAAS,CAAEC,KAAMjI,SACuB3D,EAAA8L,UAAA,eAAA,GAIzCJ,EAAA,CADCM,KAC+DhM,EAAA8L,UAAA,8BAAA,GAIhEJ,EAAA,CADCC,EAAS,CAAEC,KAAMjI,SACsB3D,EAAA8L,UAAA,cAAA,GAIxCJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACqB7L,EAAA8L,UAAA,YAAA,GAIvCJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACL7L,EAAA8L,UAAA,eAAA,GAIbJ,EAAA,CADCC,EAAS,CAAEC,KAAMG,WACS/L,EAAA8L,UAAA,0BAAA,GAM3BJ,EAAA,CADCC,EAAS,CAAEC,KAAMG,WAC0B/L,EAAA8L,UAAA,4BAAA,GAI5CJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACmB7L,EAAA8L,UAAA,eAAA,GAIrCJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACmB7L,EAAA8L,UAAA,eAAA,GAIrCJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACE7L,EAAA8L,UAAA,sBAAA,GAIpBJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACF7L,EAAA8L,UAAA,kBAAA,GAIhBJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACI7L,EAAA8L,UAAA,wBAAA,GAItBJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACA7L,EAAA8L,UAAA,oBAAA,GAIlBJ,EAAA,CADCC,EAAS,CAAEC,KAAMG,WACK/L,EAAA8L,UAAA,sBAAA,GAMvBJ,EAAA,CADCM,KAC2BhM,EAAA8L,UAAA,mBAAA,GAO5BJ,EAAA,CADCM,KAC8BhM,EAAA8L,UAAA,sBAAA,GAM/BJ,EAAA,CADCM,KAC8ChM,EAAA8L,UAAA,yBAAA,GAO/CJ,EAAA,CADCO,EAAM,UAC6BjM,EAAA8L,UAAA,gBAAA,GAMpCJ,EAAA,CADCM,KAC2BhM,EAAA8L,UAAA,mBAAA,GAI5BJ,EAAA,CADCC,EAAS,CAAEC,KAAMM,UACgBlM,EAAA8L,UAAA,mBAAA,GAMlCJ,EAAA,CADCM,KACkChM,EAAA8L,UAAA,oBAAA,GAMnCJ,EAAA,CADCM,KACoChM,EAAA8L,UAAA,4BAAA,GA/I1B9L,EAAU0L,EAAA,CADtBS,EAAc,oBACFnM"}
|
|
1
|
+
{"version":3,"file":"datepicker.js","sources":["../../../../src/components/reusable/datePicker/datepicker.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } 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 { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { langsArray } from '../../../common/flatpickrLangs';\nimport {\n injectFlatpickrStyles,\n initializeSingleAnchorFlatpickr,\n getFlatpickrOptions,\n getPlaceholder,\n preventFlatpickrOpen,\n handleInputClick,\n handleInputFocus,\n updateEnableTime,\n setCalendarAttributes,\n loadLocale,\n emitValue,\n hideEmptyYear,\n getModalContainer,\n} from '../../../common/helpers/flatpickr';\nimport '../../reusable/button';\n\nimport flatpickr from 'flatpickr';\nimport { BaseOptions } from 'flatpickr/dist/types/options';\n\nimport DatePickerStyles from './datepicker.scss';\nimport ShidokaFlatpickrTheme from '../../../common/scss/shidoka-flatpickr-theme.scss';\n\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-filled.svg';\nimport calendarIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/24/calendar.svg';\nimport clearIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/20/close-simple.svg';\n\ntype SupportedLocale = (typeof langsArray)[number];\n\nconst _defaultTextStrings = {\n requiredText: 'Required',\n clearAll: 'Clear',\n pleaseSelectDate: 'Please select a date',\n noDateSelected: 'No date selected',\n pleaseSelectValidDate: 'Please select a valid date',\n};\n\n/**\n * Datepicker: uses Flatpickr's datetime picker library -- `https://flatpickr.js.org`\n * @fires on-change - Captures the input event and emits the selected value and original event details.\n * @slot tooltip - Slot for tooltip.\n */\n@customElement('kyn-date-picker')\nexport class DatePicker extends FormMixin(LitElement) {\n static override styles = [DatePickerStyles, ShidokaFlatpickrTheme];\n\n /** Label text. */\n @property({ type: String })\n label = '';\n\n /* Sets desired locale and, if supported, dynamically loads language lib */\n @property({ type: String })\n locale: SupportedLocale | string = 'en';\n\n /** Sets flatpickr value to define how the date will be displayed in the input box (ex: `Y-m-d H:i`). */\n @property({ type: String })\n dateFormat = 'Y-m-d';\n\n /** Sets the initial selected date(s). For multiple mode, provide an array of date strings matching dateFormat. */\n @property({ type: Array })\n defaultDate: string | string[] | null = null;\n\n /** Sets default error message. */\n @property({ type: String })\n defaultErrorMessage = '';\n\n /** Sets datepicker form input value to required/required. */\n @property({ type: Boolean })\n required = false;\n\n /** Input size. \"sm\", \"md\", or \"lg\". */\n @property({ type: String })\n size = 'md';\n\n /** Sets pre-selected date/time value. */\n @property({ type: Array })\n override value: Date | Date[] | null = null;\n\n /** Sets validation warning messaging. */\n @property({ type: String })\n warnText = '';\n\n /** Sets flatpickr options setting to disable specific dates. Accepts array of dates in Y-m-d format, timestamps, or Date objects. */\n @property({ type: Array })\n disable: (string | number | Date)[] = [];\n\n /** Internal storage for processed disable dates */\n @state()\n private _processedDisableDates: (string | number | Date)[] = [];\n\n /** Sets flatpickr options setting to enable specific dates. */\n @property({ type: Array })\n enable: (string | number | Date)[] = [];\n\n /** Sets flatpickr mode to select single (default), multiple dates. */\n @property({ type: String })\n mode: 'single' | 'multiple' = 'single';\n\n /** Sets caption to be displayed under primary date picker elements. */\n @property({ type: String })\n caption = '';\n\n /** Sets entire datepicker form element to enabled/disabled. */\n @property({ type: Boolean })\n datePickerDisabled = false;\n\n /** Sets 24 hour formatting true/false.\n * Defaults to 12H for all `en-*` locales and 24H for all other locales.\n */\n @property({ type: Boolean })\n twentyFourHourFormat: boolean | null = null;\n\n /** Sets lower boundary of datepicker date selection. */\n @property({ type: String })\n minDate: string | number | Date = '';\n\n /** Sets upper boundary of datepicker date selection. */\n @property({ type: String })\n maxDate: string | number | Date = '';\n\n /** Sets aria label attribute for error message. */\n @property({ type: String })\n errorAriaLabel = '';\n\n /** Sets title attribute for error message. */\n @property({ type: String })\n errorTitle = '';\n\n /** Sets aria label attribute for warning message. */\n @property({ type: String })\n warningAriaLabel = '';\n\n /** Sets title attribute for warning message. */\n @property({ type: String })\n warningTitle = '';\n\n /** Sets whether the Flatpickr calendar UI should use static positioning. */\n @property({ type: Boolean })\n staticPosition = false;\n\n /** Sets flatpickr enableTime value based on detected dateFormat.\n * @internal\n */\n @state()\n private _enableTime = false;\n\n /**\n * Sets whether user has interacted with datepicker for error handling.\n * @internal\n */\n @state()\n private _hasInteracted = false;\n\n /** Flatpickr instantiation.\n * @internal\n */\n @state()\n private flatpickrInstance?: flatpickr.Instance;\n\n /**\n * Queries the anchor DOM element.\n * @internal\n */\n @query('input')\n private _inputEl?: HTMLInputElement;\n\n /** Tracks if we're in a clear operation to prevent duplicate events\n * @internal\n */\n @state()\n private _isClearing = false;\n\n /** Customizable text strings. */\n @property({ type: Object })\n textStrings = _defaultTextStrings;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n _textStrings = _defaultTextStrings;\n\n /** Control flag to prevent Flatpickr from opening when clicking caption, error, label, or warning elements.\n * @internal\n */\n @state()\n private _shouldFlatpickrOpen = false;\n\n /** Track initialization state\n * @internal\n */\n private _initialized = false;\n\n /** Track destroyed state\n * @internal\n */\n private _isDestroyed = false;\n\n private debounce<T extends (...args: any[]) => any>(\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 func.apply(this, args);\n timeout = null;\n }, wait);\n };\n }\n\n private debouncedUpdate = this.debounce(async () => {\n if (!this.flatpickrInstance) return;\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error in debounced update:', error);\n }\n }, 100);\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('change', this._onChange);\n this.addEventListener('reset', this._handleFormReset);\n }\n\n private hasValue(): boolean {\n if (this._inputEl?.value) return true;\n if (this.value) {\n if (Array.isArray(this.value)) {\n return (\n this.value.length > 0 && !this.value.every((date) => date === null)\n );\n }\n return true;\n }\n if (this.defaultDate) {\n if (Array.isArray(this.defaultDate)) {\n return (\n this.defaultDate.length > 0 &&\n !this.defaultDate.every((date) => !date || date === '')\n );\n }\n return !!this.defaultDate;\n }\n return false;\n }\n\n override render() {\n const errorId = `${this.name}-error-message`;\n const warningId = `${this.name}-warning-message`;\n const anchorId = this.name\n ? `${this.name}-${Math.random().toString(36).slice(2, 11)}`\n : `date-picker-${Math.random().toString(36).slice(2, 11)}`;\n const descriptionId = this.name ?? '';\n const placeholder = getPlaceholder(this.dateFormat);\n\n return html`\n <div class=${classMap(this.getDatepickerClasses())}>\n <div\n class=\"label-text\"\n @mousedown=${this.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n ?disabled=${this.datePickerDisabled}\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 >*</abbr\n >`\n : null}\n ${this.label}\n <slot name=\"tooltip\"></slot>\n </div>\n\n <div class=\"input-wrapper\">\n <input\n class=\"${classMap({\n [`size--${this.size}`]: true,\n 'input-custom': true,\n })}\"\n type=\"text\"\n id=${anchorId}\n name=${this.name}\n placeholder=${placeholder}\n ?disabled=${this.datePickerDisabled}\n ?required=${this.required}\n ?invalid=${this._isInvalid}\n aria-invalid=${this._isInvalid ? 'true' : 'false'}\n aria-labelledby=${`label-${anchorId}`}\n @click=${this.handleInputClickEvent}\n @focus=${this.handleInputFocusEvent}\n />\n ${this.hasValue()\n ? html`\n <kyn-button\n ?disabled=${this.datePickerDisabled}\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)}</span\n >\n </kyn-button>\n `\n : html`<span class=\"input-icon\">${unsafeSVG(calendarIcon)}</span>`}\n </div>\n\n ${this.caption\n ? html`<div\n id=${descriptionId}\n class=\"caption\"\n aria-disabled=${this.datePickerDisabled}\n @mousedown=${this.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\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.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.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n >\n <span\n class=\"error-icon\"\n aria-label=${`${this.errorAriaLabel}` || 'Error message icon'}\n role=\"button\"\n >${unsafeSVG(errorIcon)}</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.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n >\n ${this.warnText}\n </div>`;\n }\n\n return null;\n }\n\n getDatepickerClasses() {\n return {\n 'date-picker': true,\n 'date-picker__enable-time': this._enableTime,\n 'date-picker__multiple-select': this.mode === 'multiple',\n 'date-picker__disabled': this.datePickerDisabled,\n };\n }\n\n override async firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n if (!this._initialized) {\n injectFlatpickrStyles(ShidokaFlatpickrTheme.toString());\n this._initialized = true;\n await this.updateComplete;\n this.setupAnchor();\n }\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n\n if (changedProperties.has('value') && !this._isClearing) {\n const newValue = this.value;\n const isNull =\n newValue === null || (Array.isArray(newValue) && newValue.length === 0);\n if (isNull && this.flatpickrInstance) {\n this._isClearing = true;\n try {\n this.flatpickrInstance.clear();\n if (this._inputEl) {\n this._inputEl.value = '';\n }\n } finally {\n this._isClearing = false;\n }\n }\n this.requestUpdate();\n }\n\n if (\n changedProperties.has('defaultDate') &&\n this.flatpickrInstance &&\n !this._isClearing\n ) {\n this.debouncedUpdate();\n }\n\n if (changedProperties.has('disable')) {\n if (Array.isArray(this.disable)) {\n this._processedDisableDates = this.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 [year, month, day] = date.split('-').map(Number);\n if (!isNaN(year) && !isNaN(month) && !isNaN(day)) {\n return new Date(year, month - 1, day);\n }\n }\n return date;\n });\n } else {\n this._processedDisableDates = [];\n console.warn('Disable prop must be an array');\n }\n if (this.flatpickrInstance) {\n this.debouncedUpdate();\n }\n }\n\n if (\n changedProperties.has('dateFormat') ||\n changedProperties.has('minDate') ||\n changedProperties.has('maxDate') ||\n changedProperties.has('locale') ||\n changedProperties.has('twentyFourHourFormat')\n ) {\n this._enableTime = updateEnableTime(this.dateFormat);\n if (this.flatpickrInstance && this._initialized && !this._isClearing) {\n if (changedProperties.has('dateFormat')) {\n this.debouncedUpdate();\n } else {\n this.debouncedUpdate();\n }\n }\n }\n\n if (\n changedProperties.has('datePickerDisabled') &&\n this.datePickerDisabled &&\n this.flatpickrInstance\n ) {\n this.flatpickrInstance.close();\n }\n }\n\n private async setupAnchor() {\n if (!this._inputEl) {\n console.warn('Input element not found during setup');\n return;\n }\n\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error setting up flatpickr:', error);\n }\n }\n\n private async _handleClear(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.flatpickrInstance) {\n console.warn('Cannot clear: Flatpickr instance not available');\n return;\n }\n\n this._isClearing = true;\n\n try {\n this.value = this.mode === 'multiple' ? [] : null;\n this.defaultDate = null;\n\n this.flatpickrInstance.clear();\n if (this._inputEl) {\n this._inputEl.value = '';\n this._inputEl.setAttribute(\n 'aria-label',\n this._textStrings.noDateSelected\n );\n }\n\n emitValue(this, 'on-change', {\n dates: null,\n dateString: '',\n source: 'clear',\n });\n\n this._validate(true, false);\n await this.updateComplete;\n await this.initializeFlatpickr();\n this.requestUpdate();\n } catch (error) {\n console.error('Error clearing datepicker:', error);\n } finally {\n this._isClearing = false;\n }\n }\n\n async initializeFlatpickr(): Promise<void> {\n if (this._isDestroyed) {\n return;\n }\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\n try {\n if (this.flatpickrInstance) {\n this.flatpickrInstance.destroy();\n }\n\n this.flatpickrInstance = await initializeSingleAnchorFlatpickr({\n inputEl: this._inputEl,\n getFlatpickrOptions: () => this.getComponentFlatpickrOptions(),\n setCalendarAttributes: (instance) => {\n try {\n const container = getModalContainer(this);\n setCalendarAttributes(instance, container !== document.body);\n if (instance.calendarContainer) {\n instance.calendarContainer.setAttribute(\n 'aria-label',\n 'Date picker'\n );\n }\n } catch (error) {\n console.warn('Error setting calendar attributes:', error);\n }\n },\n setInitialDates: this.setInitialDates.bind(this),\n });\n\n if (!this.flatpickrInstance) {\n throw new Error('Failed to initialize Flatpickr instance');\n }\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(): Promise<void> {\n if (!this.flatpickrInstance) {\n console.warn('Cannot update options: Flatpickr instance not available');\n return;\n }\n await this.debouncedUpdate();\n }\n\n setInitialDates(): void {\n if (!this.flatpickrInstance) {\n console.warn(\n 'Cannot set initial dates: Flatpickr instance not available'\n );\n return;\n }\n\n try {\n const dateToSet = this.defaultDate || this.value;\n if (!dateToSet) return;\n\n if (Array.isArray(dateToSet)) {\n const validDates = dateToSet.filter((date) => {\n if (!date) return false;\n if (typeof date === 'string' && !date.trim()) return false;\n return true;\n });\n\n if (validDates.length > 0) {\n this.flatpickrInstance.setDate(validDates, true);\n }\n } else if (typeof dateToSet === 'string' && dateToSet.trim()) {\n this.flatpickrInstance.setDate(dateToSet, true);\n } else if (dateToSet instanceof Date) {\n this.flatpickrInstance.setDate(dateToSet, true);\n }\n } catch (error) {\n console.warn('Error setting initial dates:', error);\n\n if (error instanceof Error) {\n console.warn('Error details:', error.message);\n }\n }\n }\n\n async getComponentFlatpickrOptions(): Promise<Partial<BaseOptions>> {\n const container = getModalContainer(this);\n const options = await getFlatpickrOptions({\n locale: this.locale,\n dateFormat: this.dateFormat,\n defaultDate: this.defaultDate ? this.defaultDate : undefined,\n enableTime: this._enableTime,\n twentyFourHourFormat: this.twentyFourHourFormat ?? undefined,\n inputEl: this._inputEl!,\n minDate: this.minDate,\n maxDate: this.maxDate,\n enable: this.enable,\n disable: this._processedDisableDates,\n mode: this.mode,\n closeOnSelect: !(this.mode === 'multiple' || this._enableTime),\n loadLocale,\n onOpen: this.handleOpen.bind(this),\n onClose: this.handleClose.bind(this),\n onChange: this.handleDateChange.bind(this),\n appendTo: container,\n noCalendar: false,\n static: this.staticPosition,\n });\n return options;\n }\n\n handleOpen(): void {\n if (!this._shouldFlatpickrOpen) {\n this.flatpickrInstance?.close();\n this._shouldFlatpickrOpen = true;\n }\n }\n\n async handleClose(): Promise<void> {\n this._hasInteracted = true;\n this._validate(true, false);\n await this.updateComplete;\n }\n\n async handleDateChange(\n selectedDates: Date[],\n dateStr: string\n ): Promise<void> {\n if (this._isClearing) return;\n\n this._hasInteracted = true;\n\n try {\n if (this.mode === 'multiple') {\n this.value = selectedDates.length > 0 ? [...selectedDates] : null;\n } else {\n this.value = selectedDates.length > 0 ? selectedDates[0] : null;\n }\n\n let formattedDates;\n if (Array.isArray(this.value)) {\n formattedDates = this.value.map((date) => date.toISOString());\n } else if (this.value instanceof Date) {\n formattedDates = this.value.toISOString();\n } else {\n formattedDates = null;\n }\n\n emitValue(this, 'on-change', {\n dates: formattedDates,\n dateString: (this._inputEl as HTMLInputElement)?.value || dateStr,\n source: selectedDates.length === 0 ? 'clear' : undefined,\n });\n\n this._validate(true, false);\n await this.updateComplete;\n this.requestUpdate();\n } catch (error) {\n console.warn('Error handling date change:', error);\n }\n }\n\n private setShouldFlatpickrOpen(value: boolean): void {\n this._shouldFlatpickrOpen = value;\n }\n\n private closeFlatpickr(): void {\n this.flatpickrInstance?.close();\n }\n\n private preventFlatpickrOpen(event: Event): void {\n preventFlatpickrOpen(event, this.setShouldFlatpickrOpen.bind(this));\n }\n\n private handleInputClickEvent(): void {\n handleInputClick(this.setShouldFlatpickrOpen.bind(this));\n }\n\n private handleInputFocusEvent(): void {\n handleInputFocus(\n this._shouldFlatpickrOpen,\n this.closeFlatpickr.bind(this),\n this.setShouldFlatpickrOpen.bind(this)\n );\n }\n\n private _validate(interacted: boolean, report: boolean): void {\n if (!this._inputEl || !(this._inputEl instanceof HTMLInputElement)) {\n return;\n }\n\n if (interacted) {\n this._hasInteracted = true;\n }\n\n const isEmpty = !this._inputEl.value.trim();\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 this._isInvalid =\n !isValid && (this._hasInteracted || this.invalidText !== '');\n this._internalValidationMsg = validationMessage;\n\n if (report) {\n this._internals.reportValidity();\n }\n\n this.requestUpdate();\n }\n\n private _onChange() {\n this._validate(true, false);\n }\n\n private _handleFormReset() {\n this.value = null;\n if (this.flatpickrInstance) {\n this.flatpickrInstance.clear();\n }\n this._hasInteracted = false;\n this._validate(false, false);\n }\n\n override disconnectedCallback(): void {\n this._isDestroyed = true;\n super.disconnectedCallback();\n this.removeEventListener('change', this._onChange);\n this.removeEventListener('reset', this._handleFormReset);\n\n if (this.flatpickrInstance) {\n this.flatpickrInstance.destroy();\n this.flatpickrInstance = undefined;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-date-picker': DatePicker;\n }\n}\n"],"names":["_defaultTextStrings","requiredText","clearAll","pleaseSelectDate","noDateSelected","pleaseSelectValidDate","DatePicker","FormMixin","LitElement","constructor","this","label","locale","dateFormat","defaultDate","defaultErrorMessage","required","size","value","warnText","disable","_processedDisableDates","enable","mode","caption","datePickerDisabled","twentyFourHourFormat","minDate","maxDate","errorAriaLabel","errorTitle","warningAriaLabel","warningTitle","staticPosition","_enableTime","_hasInteracted","_isClearing","textStrings","_textStrings","_shouldFlatpickrOpen","_initialized","_isDestroyed","debouncedUpdate","debounce","async","flatpickrInstance","initializeFlatpickr","error","console","func","wait","timeout","args","window","clearTimeout","setTimeout","apply","connectedCallback","super","addEventListener","_onChange","_handleFormReset","hasValue","_a","_inputEl","Array","isArray","length","every","date","render","errorId","name","warningId","anchorId","Math","random","toString","slice","descriptionId","placeholder","getPlaceholder","html","classMap","getDatepickerClasses","preventFlatpickrOpen","_b","_c","_isInvalid","handleInputClickEvent","handleInputFocusEvent","_handleClear","unsafeSVG","clearIcon","calendarIcon","renderValidationMessage","invalidText","errorIcon","_internalValidationMsg","firstUpdated","changedProperties","injectFlatpickrStyles","ShidokaFlatpickrTheme","updateComplete","setupAnchor","updated","has","newValue","clear","requestUpdate","map","Date","year","month","day","split","Number","isNaN","warn","updateEnableTime","close","event","preventDefault","stopPropagation","setAttribute","emitValue","dates","dateString","source","_validate","isConnected","destroy","initializeSingleAnchorFlatpickr","inputEl","getFlatpickrOptions","getComponentFlatpickrOptions","setCalendarAttributes","instance","container","getModalContainer","document","body","calendarContainer","setInitialDates","bind","Error","hideEmptyYear","message","updateFlatpickrOptions","dateToSet","validDates","filter","trim","setDate","undefined","enableTime","closeOnSelect","loadLocale","onOpen","handleOpen","onClose","handleClose","onChange","handleDateChange","appendTo","noCalendar","static","selectedDates","dateStr","formattedDates","toISOString","setShouldFlatpickrOpen","closeFlatpickr","handleInputClick","handleInputFocus","interacted","report","HTMLInputElement","isEmpty","isRequired","validity","validationMessage","valueMissing","customError","isValid","_internals","setValidity","reportValidity","disconnectedCallback","removeEventListener","styles","DatePickerStyles","__decorate","property","type","String","prototype","Boolean","state","query","Object","customElement"],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ export declare class DateRangePicker extends DateRangePicker_base {
|
|
|
14
14
|
/** Label text. */
|
|
15
15
|
label: string;
|
|
16
16
|
/** Sets and dynamically imports specific l10n calendar localization. */
|
|
17
|
-
locale: SupportedLocale;
|
|
17
|
+
locale: SupportedLocale | string;
|
|
18
18
|
/** Sets flatpickr value to define how the date will be displayed in the input box (ex: `Y-m-d H:i`). */
|
|
19
19
|
dateFormat: string;
|
|
20
20
|
/** Sets the initial selected date(s). For range mode, provide an array of date strings matching dateFormat (e.g. ["2024-01-01", "2024-01-07"]). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daterangepicker.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/daterangepicker/daterangepicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAKvD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAgB5D,OAAO,uBAAuB,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAU3D,KAAK,eAAe,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;;AAanD;;;;GAIG;AACH,qBACa,eAAgB,SAAQ,oBAAqB;IACxD,OAAgB,MAAM,QAAkD;IAExE,kBAAkB;IAElB,KAAK,SAAM;IAEX,wEAAwE;IAExE,MAAM,EAAE,eAAe,CAAQ;
|
|
1
|
+
{"version":3,"file":"daterangepicker.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/daterangepicker/daterangepicker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as t}from"../../../vendor/tslib-53a81efe.js";import{o as e,n as i,t as a,i as r,e as n}from"../../../vendor/lit-7b0f5ebf.js";import{i as l,x as s,s as o}from"../../../vendor/lit-element-c6c02f24.js";import{FormMixin as d}from"../../../common/mixins/form-input.js";import{o as c}from"../../../vendor/lit-html-29220869.js";import{getPlaceholder as p,injectFlatpickrStyles as h,updateEnableTime as u,emitValue as v,initializeSingleAnchorFlatpickr as m,getModalContainer as g,setCalendarAttributes as k,hideEmptyYear as f,getFlatpickrOptions as b,loadLocale as y,preventFlatpickrOpen as x,handleInputClick as w,handleInputFocus as _}from"../../../common/helpers/flatpickr.js";import"../button/button.js";import{c as z}from"../../../shidoka-flatpickr-theme-3d6e1af1.js";import{j as D,H as F,I}from"../../../vendor/@kyndryl-design-system/shidoka-icons-726d44b0.js";import"../../../vendor/flatpickr-bbd13d61.js";import"../../../common/flatpickrLangs.js";import"../../../common/helpers/helpers.js";import"../button/defs.js";var
|
|
1
|
+
import{_ as t}from"../../../vendor/tslib-53a81efe.js";import{o as e,n as i,t as a,i as r,e as n}from"../../../vendor/lit-7b0f5ebf.js";import{i as l,x as s,s as o}from"../../../vendor/lit-element-c6c02f24.js";import{FormMixin as d}from"../../../common/mixins/form-input.js";import{o as c}from"../../../vendor/lit-html-29220869.js";import{getPlaceholder as p,injectFlatpickrStyles as h,updateEnableTime as u,emitValue as v,initializeSingleAnchorFlatpickr as m,getModalContainer as g,setCalendarAttributes as k,hideEmptyYear as f,getFlatpickrOptions as b,loadLocale as y,preventFlatpickrOpen as x,handleInputClick as w,handleInputFocus as _}from"../../../common/helpers/flatpickr.js";import"../button/button.js";import{c as z}from"../../../shidoka-flatpickr-theme-3d6e1af1.js";import{j as D,H as F,I as S}from"../../../vendor/@kyndryl-design-system/shidoka-icons-726d44b0.js";import"../../../vendor/flatpickr-bbd13d61.js";import"../../../common/flatpickrLangs.js";import"../../../common/helpers/helpers.js";import"../button/defs.js";var I=l`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -492,7 +492,7 @@ input {
|
|
|
492
492
|
}
|
|
493
493
|
.date-range-picker__disabled ::slotted(*) {
|
|
494
494
|
pointer-events: none;
|
|
495
|
-
}`;const
|
|
495
|
+
}`;const E={requiredText:"Required",clearAll:"Clear",pleaseSelectDate:"Please select a date",pleaseSelectValidDate:"Please select a valid date",dateRange:"Date range",noDateSelected:"No dates selected",startDateSelected:"Start date selected: {0}. Please select end date.",dateRangeSelected:"Selected date range: {0} to {1}"};let $=class extends(d(o)){constructor(){super(...arguments),this.label="",this.locale="en",this.dateFormat="Y-m-d",this.defaultDate=null,this.defaultErrorMessage="",this.value=[null,null],this.warnText="",this.disable=[],this._processedDisableDates=[],this.enable=[],this.caption="",this.required=!1,this.size="md",this.dateRangePickerDisabled=!1,this.twentyFourHourFormat=null,this.minDate="",this.maxDate="",this.errorAriaLabel="",this.errorTitle="",this.warningAriaLabel="",this.warningTitle="",this.staticPosition=!1,this._enableTime=!1,this._hasInteracted=!1,this.textStrings=E,this._textStrings=E,this._isClearing=!1,this._shouldFlatpickrOpen=!1,this._initialized=!1,this.debouncedUpdate=this.debounce((async()=>{if(this.flatpickrInstance)try{await this.initializeFlatpickr()}catch(t){console.error("Error in debounced update:",t)}}),100),this.handleResize=this.debounce((async()=>{if(this.flatpickrInstance)try{await this.initializeFlatpickr()}catch(t){console.error("Error handling resize:",t)}}),250)}debounce(t,e){let i=null;return(...a)=>{null!==i&&window.clearTimeout(i),i=window.setTimeout((()=>{t.apply(this,a),i=null}),e)}}disconnectedCallback(){var t;super.disconnectedCallback(),this.removeEventListener("change",this._onChange),this.removeEventListener("reset",this._handleFormReset),window.removeEventListener("resize",this.handleResize),null===(t=this.flatpickrInstance)||void 0===t||t.destroy()}connectedCallback(){super.connectedCallback(),this.addEventListener("change",this._onChange),this.addEventListener("reset",this._handleFormReset),window.addEventListener("resize",this.handleResize)}hasValue(){var t;return!!(null===(t=this._inputEl)||void 0===t?void 0:t.value)||(this.value&&Array.isArray(this.value)&&2===this.value.length?null!==this.value[0]&&null!==this.value[1]:!!this.defaultDate&&(!!Array.isArray(this.defaultDate)&&(2===this.defaultDate.length&&""!==this.defaultDate[0]&&""!==this.defaultDate[1])))}render(){var t,i,a;const r=`${this.name}-error-message`,n=`${this.name}-warning-message`,l=this.name?`${this.name}-${Math.random().toString(36).slice(2,11)}`:`date-range-picker-${Math.random().toString(36).slice(2,11)}`,o=null!==(t=this.name)&&void 0!==t?t:"",d=p(this.dateFormat,!0);return s`
|
|
496
496
|
<div class=${e(this.getDateRangePickerClasses())}>
|
|
497
497
|
<div
|
|
498
498
|
class="label-text"
|
|
@@ -566,7 +566,7 @@ input {
|
|
|
566
566
|
class="error-icon"
|
|
567
567
|
aria-label=${`${this.errorAriaLabel}`||"Error message icon"}
|
|
568
568
|
role="button"
|
|
569
|
-
>${c(
|
|
569
|
+
>${c(S)}</span
|
|
570
570
|
>${this.invalidText||this._internalValidationMsg||this.defaultErrorMessage}
|
|
571
571
|
</div>`:this.warnText?s`<div
|
|
572
572
|
id=${e}
|
|
@@ -578,5 +578,5 @@ input {
|
|
|
578
578
|
@click=${this.preventFlatpickrOpen}
|
|
579
579
|
>
|
|
580
580
|
${this.warnText}
|
|
581
|
-
</div>`:null}getDateRangePickerClasses(){return{"date-range-picker":!0,"date-range-picker__enable-time":this._enableTime,"date-range-picker__disabled":this.dateRangePickerDisabled}}async firstUpdated(t){super.firstUpdated(t),this._initialized||(h(z.toString()),this._initialized=!0,await this.updateComplete,this.setupAnchor())}updated(t){if(super.updated(t),t.has("value")){const t=this.value;Array.isArray(t)&&2===t.length&&t.every((t=>null===t))&&this.flatpickrInstance&&(this._isClearing=!0,this.flatpickrInstance.clear(),this._isClearing=!1,this._inputEl&&(this._inputEl.value=""))}t.has("defaultDate")&&this.flatpickrInstance&&!this._isClearing&&this.initializeFlatpickr(),t.has("disable")&&(Array.isArray(this.disable)?this._processedDisableDates=this.disable.map((t=>{if(t instanceof Date)return t;if("number"==typeof t)return new Date(t);if("string"==typeof t){const[e,i,a]=t.split("-").map(Number);if(!isNaN(e)&&!isNaN(i)&&!isNaN(a))return new Date(e,i-1,a)}return t})):(this._processedDisableDates=[],console.warn("Disable prop must be an array")),this.flatpickrInstance&&this.updateFlatpickrOptions()),t.has("dateFormat")||t.has("minDate")||t.has("maxDate")||t.has("locale")?(this._enableTime=u(this.dateFormat),this.flatpickrInstance&&this._initialized&&!this._isClearing&&(t.has("dateFormat")?this.initializeFlatpickr():this.updateFlatpickrOptions())):t.has("twentyFourHourFormat")&&(this._enableTime=u(this.dateFormat),this.flatpickrInstance&&this._initialized&&!this._isClearing&&(this.flatpickrInstance.destroy(),this.initializeFlatpickr())),t.has("dateRangePickerDisabled")&&this.dateRangePickerDisabled&&this.flatpickrInstance&&this.flatpickrInstance.close()}async setupAnchor(){if(this._inputEl)try{await this.initializeFlatpickr()}catch(t){console.error("Error setting up flatpickr:",t)}else console.warn("Input element not found during setup")}async _handleClear(t){t.preventDefault(),t.stopPropagation()
|
|
581
|
+
</div>`:null}getDateRangePickerClasses(){return{"date-range-picker":!0,"date-range-picker__enable-time":this._enableTime,"date-range-picker__disabled":this.dateRangePickerDisabled}}async firstUpdated(t){super.firstUpdated(t),this._initialized||(h(z.toString()),this._initialized=!0,await this.updateComplete,this.setupAnchor())}updated(t){if(super.updated(t),t.has("value")){const t=this.value;Array.isArray(t)&&2===t.length&&t.every((t=>null===t))&&this.flatpickrInstance&&(this._isClearing=!0,this.flatpickrInstance.clear(),this._isClearing=!1,this._inputEl&&(this._inputEl.value=""))}t.has("defaultDate")&&this.flatpickrInstance&&!this._isClearing&&this.initializeFlatpickr(),t.has("disable")&&(Array.isArray(this.disable)?this._processedDisableDates=this.disable.map((t=>{if(t instanceof Date)return t;if("number"==typeof t)return new Date(t);if("string"==typeof t){const[e,i,a]=t.split("-").map(Number);if(!isNaN(e)&&!isNaN(i)&&!isNaN(a))return new Date(e,i-1,a)}return t})):(this._processedDisableDates=[],console.warn("Disable prop must be an array")),this.flatpickrInstance&&this.updateFlatpickrOptions()),t.has("dateFormat")||t.has("minDate")||t.has("maxDate")||t.has("locale")?(this._enableTime=u(this.dateFormat),this.flatpickrInstance&&this._initialized&&!this._isClearing&&(t.has("dateFormat")?this.initializeFlatpickr():this.updateFlatpickrOptions())):t.has("twentyFourHourFormat")&&(this._enableTime=u(this.dateFormat),this.flatpickrInstance&&this._initialized&&!this._isClearing&&(this.flatpickrInstance.destroy(),this.initializeFlatpickr())),t.has("dateRangePickerDisabled")&&this.dateRangePickerDisabled&&this.flatpickrInstance&&this.flatpickrInstance.close()}async setupAnchor(){if(this._inputEl)try{await this.initializeFlatpickr()}catch(t){console.error("Error setting up flatpickr:",t)}else console.warn("Input element not found during setup")}async _handleClear(t){this._isClearing=!0,t.preventDefault(),t.stopPropagation();try{this.value=[null,null],this.defaultDate=null,this.flatpickrInstance&&this.flatpickrInstance.clear(),this._inputEl&&(this._inputEl.value="",this._inputEl.setAttribute("aria-label",this._textStrings.noDateSelected)),v(this,"on-change",{dates:null,dateString:"",source:"clear"}),this._validate(!0,!1),await this.updateComplete,await this.initializeFlatpickr(),this.requestUpdate()}finally{this._isClearing=!1}}async initializeFlatpickr(){if(this._inputEl)try{if(this.flatpickrInstance&&this.flatpickrInstance.destroy(),this.flatpickrInstance=await m({inputEl:this._inputEl,getFlatpickrOptions:()=>this.getComponentFlatpickrOptions(),setCalendarAttributes:t=>{try{if(!(null==t?void 0:t.calendarContainer))throw new Error("Calendar container not available");const e=g(this);k(t,e!==document.body),t.calendarContainer.setAttribute("aria-label","Date range calendar")}catch(t){console.warn("Error setting calendar attributes:",t)}},setInitialDates:this.setInitialDates.bind(this)}),!this.flatpickrInstance)throw new Error("Failed to initialize Flatpickr instance");f(),this._validate(!1,!1)}catch(t){console.error("Error initializing Flatpickr:",t),t instanceof Error&&console.error("Error details:",t.message)}else console.warn("Cannot initialize Flatpickr: input element not available")}async getComponentFlatpickrOptions(){var t;const e=g(this);return await b({locale:this.locale,dateFormat:this.dateFormat,defaultDate:this.defaultDate?this.defaultDate:void 0,enableTime:this._enableTime,twentyFourHourFormat:null!==(t=this.twentyFourHourFormat)&&void 0!==t?t:void 0,inputEl:this._inputEl,minDate:this.minDate,maxDate:this.maxDate,enable:this.enable,disable:this._processedDisableDates,mode:"range",closeOnSelect:!1,loadLocale:y,onOpen:this.handleOpen.bind(this),onClose:this.handleClose.bind(this),onChange:this.handleDateChange.bind(this),appendTo:e,noCalendar:!1,static:this.staticPosition})}async updateFlatpickrOptions(){this.flatpickrInstance?await this.debouncedUpdate():console.warn("Cannot update options: Flatpickr instance not available")}setInitialDates(){if(this.flatpickrInstance)try{if(Array.isArray(this.defaultDate)){const t=this.defaultDate.filter((t=>t&&""!==t)).map((t=>{if("string"==typeof t){const[e,i,a]=t.split("-").map(Number);if(!isNaN(e)&&!isNaN(i)&&!isNaN(a)){const t=new Date;return t.setFullYear(e,i-1,a),t.setHours(0,0,0,0),t}}return null})).filter((t=>null!==t));2===t.length?(this.flatpickrInstance.setDate(t,!0),this.value=t):console.warn("Invalid or incomplete date range provided in defaultDate")}else if(Array.isArray(this.value)&&2===this.value.length){const t=this.value.map((t=>t instanceof Date&&!isNaN(t.getTime())?t:(console.warn("Invalid date in value array:",t),null))).filter((t=>null!==t));2===t.length?this.flatpickrInstance.setDate(t,!0):console.warn("Invalid or incomplete date range provided in value")}}catch(t){console.warn("Error setting initial dates:",t),t instanceof Error&&console.warn("Error details:",t.message)}else console.warn("Cannot set initial dates: Flatpickr instance not available")}handleOpen(){var t;this._shouldFlatpickrOpen||(null===(t=this.flatpickrInstance)||void 0===t||t.close(),this._shouldFlatpickrOpen=!0)}async handleDateChange(t){var e;if(this._hasInteracted=!0,!this._isClearing)if(0===t.length)this.value=[null,null],v(this,"on-change",{dates:null,dateString:"",source:"clear"});else if(1===t.length)this.value=[t[0],null];else{this.value=[t[0],t[1]];const i=t.map((t=>t.toISOString())),a=(null===(e=this._inputEl)||void 0===e?void 0:e.value)||i.join(" to ");v(this,"on-change",{dates:i,dateString:a})}this.updateSelectedDateRangeAria(t),this._validate(!0,!1),await this.updateComplete}async handleClose(){this._hasInteracted=!0,this.flatpickrInstance&&this.flatpickrInstance.selectedDates&&1===this.flatpickrInstance.selectedDates.length&&(this.flatpickrInstance.clear(),this._inputEl&&(this._inputEl.value=""),this.value=[null,null]),this._validate(!0,!1),await this.updateComplete}updateSelectedDateRangeAria(t){if(!this._inputEl)return;let e=this._textStrings.dateRange;if(0===t.length)e=this._textStrings.noDateSelected;else if(1===t.length)e=this._textStrings.startDateSelected.replace("{0}",t[0].toLocaleDateString(this.locale));else if(2===t.length){const[i,a]=t;e=this._textStrings.dateRangeSelected.replace("{0}",i.toLocaleDateString(this.locale)).replace("{1}",a.toLocaleDateString(this.locale))}this._inputEl.setAttribute("aria-label",e)}setShouldFlatpickrOpen(t){this._shouldFlatpickrOpen=t}closeFlatpickr(){var t;null===(t=this.flatpickrInstance)||void 0===t||t.close()}preventFlatpickrOpen(t){x(t,this.setShouldFlatpickrOpen.bind(this))}handleInputClickEvent(){w(this.setShouldFlatpickrOpen.bind(this))}handleInputFocusEvent(){_(this._shouldFlatpickrOpen,this.closeFlatpickr.bind(this),this.setShouldFlatpickrOpen.bind(this))}_validate(t,e){if(!(this._inputEl&&this._inputEl instanceof HTMLInputElement))return;t&&(this._hasInteracted=!0);const i=!this._inputEl.value.trim()||!this.value[0]||!this.value[1],a=this.required;let r=this._inputEl.validity,n=this._inputEl.validationMessage;a&&i&&(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(),this.requestUpdate()}_onChange(){this._validate(!0,!1)}_handleFormReset(){this.value=[null,null],this.flatpickrInstance&&this.flatpickrInstance.clear(),this._hasInteracted=!1,this._validate(!1,!1)}};$.styles=[I,z],t([i({type:String})],$.prototype,"label",void 0),t([i({type:String})],$.prototype,"locale",void 0),t([i({type:String})],$.prototype,"dateFormat",void 0),t([i({type:Array})],$.prototype,"defaultDate",void 0),t([i({type:String})],$.prototype,"defaultErrorMessage",void 0),t([i({type:Array})],$.prototype,"value",void 0),t([i({type:String})],$.prototype,"warnText",void 0),t([i({type:Array})],$.prototype,"disable",void 0),t([a()],$.prototype,"_processedDisableDates",void 0),t([i({type:Array})],$.prototype,"enable",void 0),t([i({type:String})],$.prototype,"caption",void 0),t([i({type:Boolean})],$.prototype,"required",void 0),t([i({type:String})],$.prototype,"size",void 0),t([i({type:Boolean})],$.prototype,"dateRangePickerDisabled",void 0),t([i({type:Boolean})],$.prototype,"twentyFourHourFormat",void 0),t([i({type:String})],$.prototype,"minDate",void 0),t([i({type:String})],$.prototype,"maxDate",void 0),t([i({type:String})],$.prototype,"errorAriaLabel",void 0),t([i({type:String})],$.prototype,"errorTitle",void 0),t([i({type:String})],$.prototype,"warningAriaLabel",void 0),t([i({type:String})],$.prototype,"warningTitle",void 0),t([i({type:Boolean})],$.prototype,"staticPosition",void 0),t([a()],$.prototype,"_enableTime",void 0),t([a()],$.prototype,"flatpickrInstance",void 0),t([r("input")],$.prototype,"_inputEl",void 0),t([a()],$.prototype,"_hasInteracted",void 0),t([i({type:Object})],$.prototype,"textStrings",void 0),t([a()],$.prototype,"_textStrings",void 0),t([a()],$.prototype,"_isClearing",void 0),t([a()],$.prototype,"_shouldFlatpickrOpen",void 0),$=t([n("kyn-date-range-picker")],$);export{$ as DateRangePicker};
|
|
582
582
|
//# sourceMappingURL=daterangepicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daterangepicker.js","sources":["../../../../src/components/reusable/daterangepicker/daterangepicker.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } 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 { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { langsArray } from '../../../common/flatpickrLangs';\nimport {\n injectFlatpickrStyles,\n initializeSingleAnchorFlatpickr,\n getFlatpickrOptions,\n getPlaceholder,\n preventFlatpickrOpen,\n handleInputClick,\n handleInputFocus,\n setCalendarAttributes,\n loadLocale,\n emitValue,\n updateEnableTime,\n hideEmptyYear,\n getModalContainer,\n} from '../../../common/helpers/flatpickr';\nimport '../../reusable/button';\n\nimport { BaseOptions } from 'flatpickr/dist/types/options';\nimport type { Instance } from 'flatpickr/dist/types/instance';\n\nimport DateRangePickerStyles from './daterangepicker.scss';\nimport ShidokaFlatpickrTheme from '../../../common/scss/shidoka-flatpickr-theme.scss';\n\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-filled.svg';\nimport calendarIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/24/calendar.svg';\nimport clearIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/20/close-simple.svg';\n\ntype SupportedLocale = (typeof langsArray)[number];\n\nconst _defaultTextStrings = {\n requiredText: 'Required',\n clearAll: 'Clear',\n pleaseSelectDate: 'Please select a date',\n pleaseSelectValidDate: 'Please select a valid date',\n dateRange: 'Date range',\n noDateSelected: 'No dates selected',\n startDateSelected: 'Start date selected: {0}. Please select end date.',\n dateRangeSelected: 'Selected date range: {0} to {1}',\n};\n\n/**\n * Date Range Picker: uses Flatpickr library, range picker implementation -- `https://flatpickr.js.org/examples/#range-calendar`\n * @fires on-change - Captures the input event and emits the selected value and original event details.\n * @slot tooltip - Slot for tooltip.\n */\n@customElement('kyn-date-range-picker')\nexport class DateRangePicker extends FormMixin(LitElement) {\n static override styles = [DateRangePickerStyles, ShidokaFlatpickrTheme];\n\n /** Label text. */\n @property({ type: String })\n label = '';\n\n /** Sets and dynamically imports specific l10n calendar localization. */\n @property({ type: String })\n locale: SupportedLocale = 'en';\n\n /** Sets flatpickr value to define how the date will be displayed in the input box (ex: `Y-m-d H:i`). */\n @property({ type: String })\n dateFormat = 'Y-m-d';\n\n /** Sets the initial selected date(s). For range mode, provide an array of date strings matching dateFormat (e.g. [\"2024-01-01\", \"2024-01-07\"]). */\n @property({ type: Array })\n defaultDate: string[] | null = null;\n\n /** Sets default error message. */\n @property({ type: String })\n defaultErrorMessage = '';\n\n /** Sets date/time range value. */\n @property({ type: Array })\n override value: [Date | null, Date | null] = [null, null];\n\n /** Sets validation warning messaging. */\n @property({ type: String })\n warnText = '';\n\n /** Sets flatpickr options setting to disable specific dates. Accepts array of dates in Y-m-d format, timestamps, or Date objects. */\n @property({ type: Array })\n disable: (string | number | Date)[] = [];\n\n /** Internal storage for processed disable dates */\n @state()\n private _processedDisableDates: (string | number | Date)[] = [];\n\n /** Sets flatpickr options setting to enable specific dates. */\n @property({ type: Array })\n enable: (string | number | Date)[] = [];\n\n /** Sets caption to be displayed under primary date picker elements. */\n @property({ type: String })\n caption = '';\n\n /** Sets date range picker form input value to required/required. */\n @property({ type: Boolean })\n required = false;\n\n /** Input size. \"sm\", \"md\", or \"lg\". */\n @property({ type: String })\n size = 'md';\n\n /** Sets entire date range picker form element to enabled/disabled. */\n @property({ type: Boolean })\n dateRangePickerDisabled = false;\n\n /** Sets 24 hour formatting true/false.\n * Defaults to 12H for all `en-` locales and 24H for all other locales.\n */\n @property({ type: Boolean })\n twentyFourHourFormat: boolean | null = null;\n\n /** Sets lower boundary of date range picker date selection. */\n @property({ type: String })\n minDate: string | number | Date = '';\n\n /** Sets upper boundary of date range picker date selection. */\n @property({ type: String })\n maxDate: string | number | Date = '';\n\n /** Sets aria label attribute for error message. */\n @property({ type: String })\n errorAriaLabel = '';\n\n /** Sets title attribute for error message. */\n @property({ type: String })\n errorTitle = '';\n\n /** Sets aria label attribute for warning message. */\n @property({ type: String })\n warningAriaLabel = '';\n\n /** Sets title attribute for warning message. */\n @property({ type: String })\n warningTitle = '';\n\n /** Sets whether the Flatpickr calendar UI should use static positioning. */\n @property({ type: Boolean })\n staticPosition = false;\n\n /** Sets flatpickr enableTime value based on detected dateFormat.\n * @internal\n */\n @state()\n private _enableTime = false;\n\n /** Flatpickr instantiation.\n * @internal\n */\n @state()\n private flatpickrInstance?: Instance;\n\n /**\n * Queries the input DOM element.\n * @internal\n */\n @query('input')\n private _inputEl?: HTMLInputElement;\n\n /**\n * Sets whether user has interacted with datepicker for error handling.\n * @internal\n */\n @state()\n private _hasInteracted = false;\n\n /** Customizable text strings. */\n @property({ type: Object })\n textStrings = _defaultTextStrings;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n _textStrings = _defaultTextStrings;\n\n /** Tracks if we're in a clear operation to prevent duplicate events\n * @internal\n */\n @state()\n private _isClearing = false;\n\n /** Control flag to prevent Flatpickr from opening when clicking caption, error, label, or warning elements.\n * @internal\n */\n @state()\n private _shouldFlatpickrOpen = false;\n\n /** Track initialization state\n * @internal\n */\n private _initialized = false;\n\n private debounce<T extends (...args: any[]) => any>(\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 func.apply(this, args);\n timeout = null;\n }, wait);\n };\n }\n\n private debouncedUpdate = this.debounce(async () => {\n if (!this.flatpickrInstance) return;\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error in debounced update:', error);\n }\n }, 100);\n\n private handleResize = this.debounce(async () => {\n if (this.flatpickrInstance) {\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error handling resize:', error);\n }\n }\n }, 250);\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('change', this._onChange);\n this.removeEventListener('reset', this._handleFormReset);\n window.removeEventListener('resize', this.handleResize);\n this.flatpickrInstance?.destroy();\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('change', this._onChange);\n this.addEventListener('reset', this._handleFormReset);\n window.addEventListener('resize', this.handleResize);\n }\n\n private hasValue(): boolean {\n if (this._inputEl?.value) return true;\n if (this.value && Array.isArray(this.value) && this.value.length === 2) {\n return this.value[0] !== null && this.value[1] !== null;\n }\n if (this.defaultDate) {\n if (Array.isArray(this.defaultDate)) {\n return (\n this.defaultDate.length === 2 &&\n this.defaultDate[0] !== '' &&\n this.defaultDate[1] !== ''\n );\n }\n return false;\n }\n return false;\n }\n\n override render() {\n const errorId = `${this.name}-error-message`;\n const warningId = `${this.name}-warning-message`;\n const anchorId = this.name\n ? `${this.name}-${Math.random().toString(36).slice(2, 11)}`\n : `date-range-picker-${Math.random().toString(36).slice(2, 11)}`;\n const descriptionId = this.name ?? '';\n const placeholder = getPlaceholder(this.dateFormat, true);\n\n return html`\n <div class=${classMap(this.getDateRangePickerClasses())}>\n <div\n class=\"label-text\"\n @mousedown=${this.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n aria-disabled=${this.dateRangePickerDisabled ? 'true' : 'false'}\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 >*</abbr\n >`\n : null}\n ${this.label}\n <slot name=\"tooltip\"></slot>\n </div>\n\n <div class=\"input-wrapper\">\n <input\n class=\"${classMap({\n [`size--${this.size}`]: true,\n 'input-custom': true,\n })}\"\n type=\"text\"\n id=${anchorId}\n name=${this.name}\n placeholder=${placeholder}\n ?disabled=${this.dateRangePickerDisabled}\n ?required=${this.required}\n ?invalid=${this._isInvalid}\n aria-invalid=${this._isInvalid ? 'true' : 'false'}\n aria-labelledby=${`label-${anchorId}`}\n @click=${this.handleInputClickEvent}\n @focus=${this.handleInputFocusEvent}\n />\n ${this.hasValue()\n ? html`\n <kyn-button\n ?disabled=${this.dateRangePickerDisabled}\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)}</span\n >\n </kyn-button>\n `\n : html`<span class=\"input-icon\">${unsafeSVG(calendarIcon)}</span>`}\n </div>\n\n ${this.caption\n ? html`<div\n id=${descriptionId}\n class=\"caption\"\n aria-disabled=${this.dateRangePickerDisabled ? 'true' : 'false'}\n @mousedown=${this.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\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.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.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n >\n <span\n class=\"error-icon\"\n aria-label=${`${this.errorAriaLabel}` || 'Error message icon'}\n role=\"button\"\n >${unsafeSVG(errorIcon)}</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.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n >\n ${this.warnText}\n </div>`;\n }\n\n return null;\n }\n\n getDateRangePickerClasses() {\n return {\n 'date-range-picker': true,\n 'date-range-picker__enable-time': this._enableTime,\n 'date-range-picker__disabled': this.dateRangePickerDisabled,\n };\n }\n\n override async firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n if (!this._initialized) {\n injectFlatpickrStyles(ShidokaFlatpickrTheme.toString());\n this._initialized = true;\n await this.updateComplete;\n this.setupAnchor();\n }\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n\n if (changedProperties.has('value')) {\n const newValue = this.value;\n if (\n Array.isArray(newValue) &&\n newValue.length === 2 &&\n newValue.every((v) => v === null)\n ) {\n if (this.flatpickrInstance) {\n this._isClearing = true;\n this.flatpickrInstance.clear();\n this._isClearing = false;\n if (this._inputEl) {\n this._inputEl.value = '';\n }\n }\n }\n }\n\n if (\n changedProperties.has('defaultDate') &&\n this.flatpickrInstance &&\n !this._isClearing\n ) {\n this.initializeFlatpickr();\n }\n\n if (changedProperties.has('disable')) {\n if (Array.isArray(this.disable)) {\n this._processedDisableDates = this.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 [year, month, day] = date.split('-').map(Number);\n if (!isNaN(year) && !isNaN(month) && !isNaN(day)) {\n return new Date(year, month - 1, day);\n }\n }\n return date;\n });\n } else {\n this._processedDisableDates = [];\n console.warn('Disable prop must be an array');\n }\n if (this.flatpickrInstance) {\n this.updateFlatpickrOptions();\n }\n }\n\n if (\n changedProperties.has('dateFormat') ||\n changedProperties.has('minDate') ||\n changedProperties.has('maxDate') ||\n changedProperties.has('locale')\n ) {\n this._enableTime = updateEnableTime(this.dateFormat);\n if (this.flatpickrInstance && this._initialized && !this._isClearing) {\n if (changedProperties.has('dateFormat')) {\n this.initializeFlatpickr();\n } else {\n this.updateFlatpickrOptions();\n }\n }\n } else if (changedProperties.has('twentyFourHourFormat')) {\n this._enableTime = updateEnableTime(this.dateFormat);\n if (this.flatpickrInstance && this._initialized && !this._isClearing) {\n this.flatpickrInstance.destroy();\n this.initializeFlatpickr();\n }\n }\n\n if (\n changedProperties.has('dateRangePickerDisabled') &&\n this.dateRangePickerDisabled &&\n this.flatpickrInstance\n ) {\n this.flatpickrInstance.close();\n }\n }\n\n private async setupAnchor() {\n if (!this._inputEl) {\n console.warn('Input element not found during setup');\n return;\n }\n\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error setting up flatpickr:', error);\n }\n }\n\n private async _handleClear(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n this._isClearing = true;\n\n try {\n this.value = [null, null];\n this.defaultDate = null;\n\n if (this.flatpickrInstance) {\n this.flatpickrInstance.clear();\n if (this._inputEl) {\n this._inputEl.value = '';\n }\n }\n\n emitValue(this, 'on-change', {\n dates: null,\n dateString: '',\n source: 'clear',\n });\n\n this._validate(true, false);\n await this.updateComplete;\n this.requestUpdate();\n } finally {\n this._isClearing = false;\n }\n }\n\n async initializeFlatpickr(): Promise<void> {\n if (!this._inputEl) {\n console.warn('Cannot initialize Flatpickr: input element not available');\n return;\n }\n try {\n if (this.flatpickrInstance) {\n this.flatpickrInstance.destroy();\n }\n\n this.flatpickrInstance = await initializeSingleAnchorFlatpickr({\n inputEl: this._inputEl,\n getFlatpickrOptions: () => this.getComponentFlatpickrOptions(),\n setCalendarAttributes: (instance) => {\n try {\n if (!instance?.calendarContainer) {\n throw new Error('Calendar container not available');\n }\n const container = getModalContainer(this);\n setCalendarAttributes(instance, container !== document.body);\n instance.calendarContainer.setAttribute(\n 'aria-label',\n 'Date range calendar'\n );\n } catch (error) {\n console.warn('Error setting calendar attributes:', error);\n }\n },\n setInitialDates: this.setInitialDates.bind(this),\n });\n\n if (!this.flatpickrInstance) {\n throw new Error('Failed to initialize Flatpickr instance');\n }\n\n hideEmptyYear();\n this._validate(false, false);\n } catch (error) {\n console.error('Error initializing Flatpickr:', error);\n\n if (error instanceof Error) {\n console.error('Error details:', error.message);\n }\n }\n }\n\n async getComponentFlatpickrOptions(): Promise<Partial<BaseOptions>> {\n const container = getModalContainer(this);\n const options = await getFlatpickrOptions({\n locale: this.locale,\n dateFormat: this.dateFormat,\n defaultDate: this.defaultDate ? this.defaultDate : undefined,\n enableTime: this._enableTime,\n twentyFourHourFormat: this.twentyFourHourFormat ?? undefined,\n inputEl: this._inputEl!,\n minDate: this.minDate,\n maxDate: this.maxDate,\n enable: this.enable,\n disable: this._processedDisableDates,\n mode: 'range',\n closeOnSelect: false,\n loadLocale,\n onOpen: this.handleOpen.bind(this),\n onClose: this.handleClose.bind(this),\n onChange: this.handleDateChange.bind(this),\n appendTo: container,\n noCalendar: false,\n static: this.staticPosition,\n });\n return options;\n }\n\n async updateFlatpickrOptions(): Promise<void> {\n if (!this.flatpickrInstance) {\n console.warn('Cannot update options: Flatpickr instance not available');\n return;\n }\n await this.debouncedUpdate();\n }\n\n setInitialDates(): void {\n if (!this.flatpickrInstance) {\n console.warn(\n 'Cannot set initial dates: Flatpickr instance not available'\n );\n return;\n }\n\n try {\n if (Array.isArray(this.defaultDate)) {\n const validDates = this.defaultDate\n .filter((date) => date && date !== '')\n .map((date) => {\n if (typeof date === 'string') {\n const [year, month, day] = date.split('-').map(Number);\n if (!isNaN(year) && !isNaN(month) && !isNaN(day)) {\n const localDate = new Date();\n localDate.setFullYear(year, month - 1, day);\n localDate.setHours(0, 0, 0, 0);\n return localDate;\n }\n }\n return null;\n })\n .filter((date): date is Date => date !== null);\n\n if (validDates.length === 2) {\n this.flatpickrInstance.setDate(validDates, true);\n this.value = validDates as [Date, Date];\n } else {\n console.warn(\n 'Invalid or incomplete date range provided in defaultDate'\n );\n }\n } else if (Array.isArray(this.value) && this.value.length === 2) {\n const validDates = this.value\n .map((date) => {\n if (!(date instanceof Date) || isNaN(date.getTime())) {\n console.warn('Invalid date in value array:', date);\n return null;\n }\n return date;\n })\n .filter((date): date is Date => date !== null);\n\n if (validDates.length === 2) {\n this.flatpickrInstance.setDate(validDates, true);\n } else {\n console.warn('Invalid or incomplete date range provided in value');\n }\n }\n } catch (error) {\n console.warn('Error setting initial dates:', error);\n if (error instanceof Error) {\n console.warn('Error details:', error.message);\n }\n }\n }\n\n handleOpen(): void {\n if (!this._shouldFlatpickrOpen) {\n this.flatpickrInstance?.close();\n this._shouldFlatpickrOpen = true;\n }\n }\n\n async handleDateChange(selectedDates: Date[]): Promise<void> {\n this._hasInteracted = true;\n\n if (!this._isClearing) {\n if (selectedDates.length === 0) {\n this.value = [null, null];\n emitValue(this, 'on-change', {\n dates: null,\n dateString: '',\n source: 'clear',\n });\n } else if (selectedDates.length === 1) {\n this.value = [selectedDates[0], null];\n } else {\n this.value = [selectedDates[0], selectedDates[1]];\n const formattedDates = selectedDates.map((date) => date.toISOString());\n const dateString = this._inputEl?.value || formattedDates.join(' to ');\n emitValue(this, 'on-change', {\n dates: formattedDates,\n dateString,\n });\n }\n }\n\n this.updateSelectedDateRangeAria(selectedDates);\n this._validate(true, false);\n await this.updateComplete;\n }\n\n async handleClose() {\n this._hasInteracted = true;\n\n if (\n this.flatpickrInstance &&\n this.flatpickrInstance.selectedDates &&\n this.flatpickrInstance.selectedDates.length === 1\n ) {\n this.flatpickrInstance.clear();\n if (this._inputEl) {\n this._inputEl.value = '';\n }\n this.value = [null, null];\n }\n\n this._validate(true, false);\n await this.updateComplete;\n }\n\n updateSelectedDateRangeAria(selectedDates: Date[]) {\n if (!this._inputEl) return;\n\n let ariaLabel = this._textStrings.dateRange;\n\n if (selectedDates.length === 0) {\n ariaLabel = this._textStrings.noDateSelected;\n } else if (selectedDates.length === 1) {\n ariaLabel = this._textStrings.startDateSelected.replace(\n '{0}',\n selectedDates[0].toLocaleDateString(this.locale)\n );\n } else if (selectedDates.length === 2) {\n const [startDate, endDate] = selectedDates;\n ariaLabel = this._textStrings.dateRangeSelected\n .replace('{0}', startDate.toLocaleDateString(this.locale))\n .replace('{1}', endDate.toLocaleDateString(this.locale));\n }\n\n this._inputEl.setAttribute('aria-label', ariaLabel);\n }\n\n private setShouldFlatpickrOpen(value: boolean) {\n this._shouldFlatpickrOpen = value;\n }\n\n private closeFlatpickr() {\n this.flatpickrInstance?.close();\n }\n\n private preventFlatpickrOpen(event: Event) {\n preventFlatpickrOpen(event, this.setShouldFlatpickrOpen.bind(this));\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 private _validate(interacted: boolean, report: boolean): void {\n if (!this._inputEl || !(this._inputEl instanceof HTMLInputElement)) {\n return;\n }\n\n if (interacted) {\n this._hasInteracted = true;\n }\n\n const isEmpty =\n !this._inputEl.value.trim() || !this.value[0] || !this.value[1];\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 this._isInvalid =\n !isValid && (this._hasInteracted || this.invalidText !== '');\n this._internalValidationMsg = validationMessage;\n\n if (report) {\n this._internals.reportValidity();\n }\n\n this.requestUpdate();\n }\n\n private _onChange() {\n this._validate(true, false);\n }\n\n private _handleFormReset() {\n this.value = [null, null];\n if (this.flatpickrInstance) {\n this.flatpickrInstance.clear();\n }\n this._hasInteracted = false;\n this._validate(false, false);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-date-range-picker': DateRangePicker;\n }\n}\n"],"names":["_defaultTextStrings","requiredText","clearAll","pleaseSelectDate","pleaseSelectValidDate","dateRange","noDateSelected","startDateSelected","dateRangeSelected","DateRangePicker","FormMixin","LitElement","constructor","this","label","locale","dateFormat","defaultDate","defaultErrorMessage","value","warnText","disable","_processedDisableDates","enable","caption","required","size","dateRangePickerDisabled","twentyFourHourFormat","minDate","maxDate","errorAriaLabel","errorTitle","warningAriaLabel","warningTitle","staticPosition","_enableTime","_hasInteracted","textStrings","_textStrings","_isClearing","_shouldFlatpickrOpen","_initialized","debouncedUpdate","debounce","async","flatpickrInstance","initializeFlatpickr","error","console","handleResize","func","wait","timeout","args","window","clearTimeout","setTimeout","apply","disconnectedCallback","super","removeEventListener","_onChange","_handleFormReset","_a","destroy","connectedCallback","addEventListener","hasValue","_inputEl","Array","isArray","length","render","errorId","name","warningId","anchorId","Math","random","toString","slice","descriptionId","placeholder","getPlaceholder","html","classMap","getDateRangePickerClasses","preventFlatpickrOpen","_b","_c","_isInvalid","handleInputClickEvent","handleInputFocusEvent","_handleClear","unsafeSVG","clearIcon","calendarIcon","renderValidationMessage","invalidText","errorIcon","_internalValidationMsg","firstUpdated","changedProperties","injectFlatpickrStyles","ShidokaFlatpickrTheme","updateComplete","setupAnchor","updated","has","newValue","every","v","clear","map","date","Date","year","month","day","split","Number","isNaN","warn","updateFlatpickrOptions","updateEnableTime","close","event","preventDefault","stopPropagation","emitValue","dates","dateString","source","_validate","requestUpdate","initializeSingleAnchorFlatpickr","inputEl","getFlatpickrOptions","getComponentFlatpickrOptions","setCalendarAttributes","instance","calendarContainer","Error","container","getModalContainer","document","body","setAttribute","setInitialDates","bind","hideEmptyYear","message","undefined","enableTime","mode","closeOnSelect","loadLocale","onOpen","handleOpen","onClose","handleClose","onChange","handleDateChange","appendTo","noCalendar","static","validDates","filter","localDate","setFullYear","setHours","setDate","getTime","selectedDates","formattedDates","toISOString","join","updateSelectedDateRangeAria","ariaLabel","replace","toLocaleDateString","startDate","endDate","setShouldFlatpickrOpen","closeFlatpickr","handleInputClick","handleInputFocus","interacted","report","HTMLInputElement","isEmpty","trim","isRequired","validity","validationMessage","valueMissing","customError","isValid","_internals","setValidity","reportValidity","styles","DateRangePickerStyles","__decorate","property","type","String","prototype","state","Boolean","query","Object","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"daterangepicker.js","sources":["../../../../src/components/reusable/daterangepicker/daterangepicker.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } 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 { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { langsArray } from '../../../common/flatpickrLangs';\nimport {\n injectFlatpickrStyles,\n initializeSingleAnchorFlatpickr,\n getFlatpickrOptions,\n getPlaceholder,\n preventFlatpickrOpen,\n handleInputClick,\n handleInputFocus,\n setCalendarAttributes,\n loadLocale,\n emitValue,\n updateEnableTime,\n hideEmptyYear,\n getModalContainer,\n} from '../../../common/helpers/flatpickr';\nimport '../../reusable/button';\n\nimport { BaseOptions } from 'flatpickr/dist/types/options';\nimport type { Instance } from 'flatpickr/dist/types/instance';\n\nimport DateRangePickerStyles from './daterangepicker.scss';\nimport ShidokaFlatpickrTheme from '../../../common/scss/shidoka-flatpickr-theme.scss';\n\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/close-filled.svg';\nimport calendarIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/24/calendar.svg';\nimport clearIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/20/close-simple.svg';\n\ntype SupportedLocale = (typeof langsArray)[number];\n\nconst _defaultTextStrings = {\n requiredText: 'Required',\n clearAll: 'Clear',\n pleaseSelectDate: 'Please select a date',\n pleaseSelectValidDate: 'Please select a valid date',\n dateRange: 'Date range',\n noDateSelected: 'No dates selected',\n startDateSelected: 'Start date selected: {0}. Please select end date.',\n dateRangeSelected: 'Selected date range: {0} to {1}',\n};\n\n/**\n * Date Range Picker: uses Flatpickr library, range picker implementation -- `https://flatpickr.js.org/examples/#range-calendar`\n * @fires on-change - Captures the input event and emits the selected value and original event details.\n * @slot tooltip - Slot for tooltip.\n */\n@customElement('kyn-date-range-picker')\nexport class DateRangePicker extends FormMixin(LitElement) {\n static override styles = [DateRangePickerStyles, ShidokaFlatpickrTheme];\n\n /** Label text. */\n @property({ type: String })\n label = '';\n\n /** Sets and dynamically imports specific l10n calendar localization. */\n @property({ type: String })\n locale: SupportedLocale | string = 'en';\n\n /** Sets flatpickr value to define how the date will be displayed in the input box (ex: `Y-m-d H:i`). */\n @property({ type: String })\n dateFormat = 'Y-m-d';\n\n /** Sets the initial selected date(s). For range mode, provide an array of date strings matching dateFormat (e.g. [\"2024-01-01\", \"2024-01-07\"]). */\n @property({ type: Array })\n defaultDate: string[] | null = null;\n\n /** Sets default error message. */\n @property({ type: String })\n defaultErrorMessage = '';\n\n /** Sets date/time range value. */\n @property({ type: Array })\n override value: [Date | null, Date | null] = [null, null];\n\n /** Sets validation warning messaging. */\n @property({ type: String })\n warnText = '';\n\n /** Sets flatpickr options setting to disable specific dates. Accepts array of dates in Y-m-d format, timestamps, or Date objects. */\n @property({ type: Array })\n disable: (string | number | Date)[] = [];\n\n /** Internal storage for processed disable dates */\n @state()\n private _processedDisableDates: (string | number | Date)[] = [];\n\n /** Sets flatpickr options setting to enable specific dates. */\n @property({ type: Array })\n enable: (string | number | Date)[] = [];\n\n /** Sets caption to be displayed under primary date picker elements. */\n @property({ type: String })\n caption = '';\n\n /** Sets date range picker form input value to required/required. */\n @property({ type: Boolean })\n required = false;\n\n /** Input size. \"sm\", \"md\", or \"lg\". */\n @property({ type: String })\n size = 'md';\n\n /** Sets entire date range picker form element to enabled/disabled. */\n @property({ type: Boolean })\n dateRangePickerDisabled = false;\n\n /** Sets 24 hour formatting true/false.\n * Defaults to 12H for all `en-` locales and 24H for all other locales.\n */\n @property({ type: Boolean })\n twentyFourHourFormat: boolean | null = null;\n\n /** Sets lower boundary of date range picker date selection. */\n @property({ type: String })\n minDate: string | number | Date = '';\n\n /** Sets upper boundary of date range picker date selection. */\n @property({ type: String })\n maxDate: string | number | Date = '';\n\n /** Sets aria label attribute for error message. */\n @property({ type: String })\n errorAriaLabel = '';\n\n /** Sets title attribute for error message. */\n @property({ type: String })\n errorTitle = '';\n\n /** Sets aria label attribute for warning message. */\n @property({ type: String })\n warningAriaLabel = '';\n\n /** Sets title attribute for warning message. */\n @property({ type: String })\n warningTitle = '';\n\n /** Sets whether the Flatpickr calendar UI should use static positioning. */\n @property({ type: Boolean })\n staticPosition = false;\n\n /** Sets flatpickr enableTime value based on detected dateFormat.\n * @internal\n */\n @state()\n private _enableTime = false;\n\n /** Flatpickr instantiation.\n * @internal\n */\n @state()\n private flatpickrInstance?: Instance;\n\n /**\n * Queries the input DOM element.\n * @internal\n */\n @query('input')\n private _inputEl?: HTMLInputElement;\n\n /**\n * Sets whether user has interacted with datepicker for error handling.\n * @internal\n */\n @state()\n private _hasInteracted = false;\n\n /** Customizable text strings. */\n @property({ type: Object })\n textStrings = _defaultTextStrings;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n _textStrings = _defaultTextStrings;\n\n /** Tracks if we're in a clear operation to prevent duplicate events\n * @internal\n */\n @state()\n private _isClearing = false;\n\n /** Control flag to prevent Flatpickr from opening when clicking caption, error, label, or warning elements.\n * @internal\n */\n @state()\n private _shouldFlatpickrOpen = false;\n\n /** Track initialization state\n * @internal\n */\n private _initialized = false;\n\n private debounce<T extends (...args: any[]) => any>(\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 func.apply(this, args);\n timeout = null;\n }, wait);\n };\n }\n\n private debouncedUpdate = this.debounce(async () => {\n if (!this.flatpickrInstance) return;\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error in debounced update:', error);\n }\n }, 100);\n\n private handleResize = this.debounce(async () => {\n if (this.flatpickrInstance) {\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error handling resize:', error);\n }\n }\n }, 250);\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('change', this._onChange);\n this.removeEventListener('reset', this._handleFormReset);\n window.removeEventListener('resize', this.handleResize);\n this.flatpickrInstance?.destroy();\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('change', this._onChange);\n this.addEventListener('reset', this._handleFormReset);\n window.addEventListener('resize', this.handleResize);\n }\n\n private hasValue(): boolean {\n if (this._inputEl?.value) return true;\n if (this.value && Array.isArray(this.value) && this.value.length === 2) {\n return this.value[0] !== null && this.value[1] !== null;\n }\n if (this.defaultDate) {\n if (Array.isArray(this.defaultDate)) {\n return (\n this.defaultDate.length === 2 &&\n this.defaultDate[0] !== '' &&\n this.defaultDate[1] !== ''\n );\n }\n return false;\n }\n return false;\n }\n\n override render() {\n const errorId = `${this.name}-error-message`;\n const warningId = `${this.name}-warning-message`;\n const anchorId = this.name\n ? `${this.name}-${Math.random().toString(36).slice(2, 11)}`\n : `date-range-picker-${Math.random().toString(36).slice(2, 11)}`;\n const descriptionId = this.name ?? '';\n const placeholder = getPlaceholder(this.dateFormat, true);\n\n return html`\n <div class=${classMap(this.getDateRangePickerClasses())}>\n <div\n class=\"label-text\"\n @mousedown=${this.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n aria-disabled=${this.dateRangePickerDisabled ? 'true' : 'false'}\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 >*</abbr\n >`\n : null}\n ${this.label}\n <slot name=\"tooltip\"></slot>\n </div>\n\n <div class=\"input-wrapper\">\n <input\n class=\"${classMap({\n [`size--${this.size}`]: true,\n 'input-custom': true,\n })}\"\n type=\"text\"\n id=${anchorId}\n name=${this.name}\n placeholder=${placeholder}\n ?disabled=${this.dateRangePickerDisabled}\n ?required=${this.required}\n ?invalid=${this._isInvalid}\n aria-invalid=${this._isInvalid ? 'true' : 'false'}\n aria-labelledby=${`label-${anchorId}`}\n @click=${this.handleInputClickEvent}\n @focus=${this.handleInputFocusEvent}\n />\n ${this.hasValue()\n ? html`\n <kyn-button\n ?disabled=${this.dateRangePickerDisabled}\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)}</span\n >\n </kyn-button>\n `\n : html`<span class=\"input-icon\">${unsafeSVG(calendarIcon)}</span>`}\n </div>\n\n ${this.caption\n ? html`<div\n id=${descriptionId}\n class=\"caption\"\n aria-disabled=${this.dateRangePickerDisabled ? 'true' : 'false'}\n @mousedown=${this.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\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.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.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n >\n <span\n class=\"error-icon\"\n aria-label=${`${this.errorAriaLabel}` || 'Error message icon'}\n role=\"button\"\n >${unsafeSVG(errorIcon)}</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.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n >\n ${this.warnText}\n </div>`;\n }\n\n return null;\n }\n\n getDateRangePickerClasses() {\n return {\n 'date-range-picker': true,\n 'date-range-picker__enable-time': this._enableTime,\n 'date-range-picker__disabled': this.dateRangePickerDisabled,\n };\n }\n\n override async firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n if (!this._initialized) {\n injectFlatpickrStyles(ShidokaFlatpickrTheme.toString());\n this._initialized = true;\n await this.updateComplete;\n this.setupAnchor();\n }\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n\n if (changedProperties.has('value')) {\n const newValue = this.value;\n if (\n Array.isArray(newValue) &&\n newValue.length === 2 &&\n newValue.every((v) => v === null)\n ) {\n if (this.flatpickrInstance) {\n this._isClearing = true;\n this.flatpickrInstance.clear();\n this._isClearing = false;\n if (this._inputEl) {\n this._inputEl.value = '';\n }\n }\n }\n }\n\n if (\n changedProperties.has('defaultDate') &&\n this.flatpickrInstance &&\n !this._isClearing\n ) {\n this.initializeFlatpickr();\n }\n\n if (changedProperties.has('disable')) {\n if (Array.isArray(this.disable)) {\n this._processedDisableDates = this.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 [year, month, day] = date.split('-').map(Number);\n if (!isNaN(year) && !isNaN(month) && !isNaN(day)) {\n return new Date(year, month - 1, day);\n }\n }\n return date;\n });\n } else {\n this._processedDisableDates = [];\n console.warn('Disable prop must be an array');\n }\n if (this.flatpickrInstance) {\n this.updateFlatpickrOptions();\n }\n }\n\n if (\n changedProperties.has('dateFormat') ||\n changedProperties.has('minDate') ||\n changedProperties.has('maxDate') ||\n changedProperties.has('locale')\n ) {\n this._enableTime = updateEnableTime(this.dateFormat);\n if (this.flatpickrInstance && this._initialized && !this._isClearing) {\n if (changedProperties.has('dateFormat')) {\n this.initializeFlatpickr();\n } else {\n this.updateFlatpickrOptions();\n }\n }\n } else if (changedProperties.has('twentyFourHourFormat')) {\n this._enableTime = updateEnableTime(this.dateFormat);\n if (this.flatpickrInstance && this._initialized && !this._isClearing) {\n this.flatpickrInstance.destroy();\n this.initializeFlatpickr();\n }\n }\n\n if (\n changedProperties.has('dateRangePickerDisabled') &&\n this.dateRangePickerDisabled &&\n this.flatpickrInstance\n ) {\n this.flatpickrInstance.close();\n }\n }\n\n private async setupAnchor() {\n if (!this._inputEl) {\n console.warn('Input element not found during setup');\n return;\n }\n\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error setting up flatpickr:', error);\n }\n }\n\n private async _handleClear(event: Event) {\n this._isClearing = true;\n event.preventDefault();\n event.stopPropagation();\n try {\n this.value = [null, null];\n this.defaultDate = null;\n\n if (this.flatpickrInstance) {\n this.flatpickrInstance.clear();\n }\n if (this._inputEl) {\n this._inputEl.value = '';\n this._inputEl.setAttribute(\n 'aria-label',\n this._textStrings.noDateSelected\n );\n }\n\n emitValue(this, 'on-change', {\n dates: null,\n dateString: '',\n source: 'clear',\n });\n\n this._validate(true, false);\n await this.updateComplete;\n\n await this.initializeFlatpickr();\n this.requestUpdate();\n } finally {\n this._isClearing = false;\n }\n }\n\n async initializeFlatpickr(): Promise<void> {\n if (!this._inputEl) {\n console.warn('Cannot initialize Flatpickr: input element not available');\n return;\n }\n try {\n if (this.flatpickrInstance) {\n this.flatpickrInstance.destroy();\n }\n\n this.flatpickrInstance = await initializeSingleAnchorFlatpickr({\n inputEl: this._inputEl,\n getFlatpickrOptions: () => this.getComponentFlatpickrOptions(),\n setCalendarAttributes: (instance) => {\n try {\n if (!instance?.calendarContainer) {\n throw new Error('Calendar container not available');\n }\n const container = getModalContainer(this);\n setCalendarAttributes(instance, container !== document.body);\n instance.calendarContainer.setAttribute(\n 'aria-label',\n 'Date range calendar'\n );\n } catch (error) {\n console.warn('Error setting calendar attributes:', error);\n }\n },\n setInitialDates: this.setInitialDates.bind(this),\n });\n\n if (!this.flatpickrInstance) {\n throw new Error('Failed to initialize Flatpickr instance');\n }\n\n hideEmptyYear();\n this._validate(false, false);\n } catch (error) {\n console.error('Error initializing Flatpickr:', error);\n\n if (error instanceof Error) {\n console.error('Error details:', error.message);\n }\n }\n }\n\n async getComponentFlatpickrOptions(): Promise<Partial<BaseOptions>> {\n const container = getModalContainer(this);\n const options = await getFlatpickrOptions({\n locale: this.locale,\n dateFormat: this.dateFormat,\n defaultDate: this.defaultDate ? this.defaultDate : undefined,\n enableTime: this._enableTime,\n twentyFourHourFormat: this.twentyFourHourFormat ?? undefined,\n inputEl: this._inputEl!,\n minDate: this.minDate,\n maxDate: this.maxDate,\n enable: this.enable,\n disable: this._processedDisableDates,\n mode: 'range',\n closeOnSelect: false,\n loadLocale,\n onOpen: this.handleOpen.bind(this),\n onClose: this.handleClose.bind(this),\n onChange: this.handleDateChange.bind(this),\n appendTo: container,\n noCalendar: false,\n static: this.staticPosition,\n });\n return options;\n }\n\n async updateFlatpickrOptions(): Promise<void> {\n if (!this.flatpickrInstance) {\n console.warn('Cannot update options: Flatpickr instance not available');\n return;\n }\n await this.debouncedUpdate();\n }\n\n setInitialDates(): void {\n if (!this.flatpickrInstance) {\n console.warn(\n 'Cannot set initial dates: Flatpickr instance not available'\n );\n return;\n }\n\n try {\n if (Array.isArray(this.defaultDate)) {\n const validDates = this.defaultDate\n .filter((date) => date && date !== '')\n .map((date) => {\n if (typeof date === 'string') {\n const [year, month, day] = date.split('-').map(Number);\n if (!isNaN(year) && !isNaN(month) && !isNaN(day)) {\n const localDate = new Date();\n localDate.setFullYear(year, month - 1, day);\n localDate.setHours(0, 0, 0, 0);\n return localDate;\n }\n }\n return null;\n })\n .filter((date): date is Date => date !== null);\n\n if (validDates.length === 2) {\n this.flatpickrInstance.setDate(validDates, true);\n this.value = validDates as [Date, Date];\n } else {\n console.warn(\n 'Invalid or incomplete date range provided in defaultDate'\n );\n }\n } else if (Array.isArray(this.value) && this.value.length === 2) {\n const validDates = this.value\n .map((date) => {\n if (!(date instanceof Date) || isNaN(date.getTime())) {\n console.warn('Invalid date in value array:', date);\n return null;\n }\n return date;\n })\n .filter((date): date is Date => date !== null);\n\n if (validDates.length === 2) {\n this.flatpickrInstance.setDate(validDates, true);\n } else {\n console.warn('Invalid or incomplete date range provided in value');\n }\n }\n } catch (error) {\n console.warn('Error setting initial dates:', error);\n if (error instanceof Error) {\n console.warn('Error details:', error.message);\n }\n }\n }\n\n handleOpen(): void {\n if (!this._shouldFlatpickrOpen) {\n this.flatpickrInstance?.close();\n this._shouldFlatpickrOpen = true;\n }\n }\n\n async handleDateChange(selectedDates: Date[]): Promise<void> {\n this._hasInteracted = true;\n\n if (!this._isClearing) {\n if (selectedDates.length === 0) {\n this.value = [null, null];\n emitValue(this, 'on-change', {\n dates: null,\n dateString: '',\n source: 'clear',\n });\n } else if (selectedDates.length === 1) {\n this.value = [selectedDates[0], null];\n } else {\n this.value = [selectedDates[0], selectedDates[1]];\n const formattedDates = selectedDates.map((date) => date.toISOString());\n const dateString = this._inputEl?.value || formattedDates.join(' to ');\n emitValue(this, 'on-change', {\n dates: formattedDates,\n dateString,\n });\n }\n }\n\n this.updateSelectedDateRangeAria(selectedDates);\n this._validate(true, false);\n await this.updateComplete;\n }\n\n async handleClose() {\n this._hasInteracted = true;\n\n if (\n this.flatpickrInstance &&\n this.flatpickrInstance.selectedDates &&\n this.flatpickrInstance.selectedDates.length === 1\n ) {\n this.flatpickrInstance.clear();\n if (this._inputEl) {\n this._inputEl.value = '';\n }\n this.value = [null, null];\n }\n\n this._validate(true, false);\n await this.updateComplete;\n }\n\n updateSelectedDateRangeAria(selectedDates: Date[]) {\n if (!this._inputEl) return;\n\n let ariaLabel = this._textStrings.dateRange;\n\n if (selectedDates.length === 0) {\n ariaLabel = this._textStrings.noDateSelected;\n } else if (selectedDates.length === 1) {\n ariaLabel = this._textStrings.startDateSelected.replace(\n '{0}',\n selectedDates[0].toLocaleDateString(this.locale)\n );\n } else if (selectedDates.length === 2) {\n const [startDate, endDate] = selectedDates;\n ariaLabel = this._textStrings.dateRangeSelected\n .replace('{0}', startDate.toLocaleDateString(this.locale))\n .replace('{1}', endDate.toLocaleDateString(this.locale));\n }\n\n this._inputEl.setAttribute('aria-label', ariaLabel);\n }\n\n private setShouldFlatpickrOpen(value: boolean) {\n this._shouldFlatpickrOpen = value;\n }\n\n private closeFlatpickr() {\n this.flatpickrInstance?.close();\n }\n\n private preventFlatpickrOpen(event: Event) {\n preventFlatpickrOpen(event, this.setShouldFlatpickrOpen.bind(this));\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 private _validate(interacted: boolean, report: boolean): void {\n if (!this._inputEl || !(this._inputEl instanceof HTMLInputElement)) {\n return;\n }\n\n if (interacted) {\n this._hasInteracted = true;\n }\n\n const isEmpty =\n !this._inputEl.value.trim() || !this.value[0] || !this.value[1];\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 this._isInvalid =\n !isValid && (this._hasInteracted || this.invalidText !== '');\n this._internalValidationMsg = validationMessage;\n\n if (report) {\n this._internals.reportValidity();\n }\n\n this.requestUpdate();\n }\n\n private _onChange() {\n this._validate(true, false);\n }\n\n private _handleFormReset() {\n this.value = [null, null];\n if (this.flatpickrInstance) {\n this.flatpickrInstance.clear();\n }\n this._hasInteracted = false;\n this._validate(false, false);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-date-range-picker': DateRangePicker;\n }\n}\n"],"names":["_defaultTextStrings","requiredText","clearAll","pleaseSelectDate","pleaseSelectValidDate","dateRange","noDateSelected","startDateSelected","dateRangeSelected","DateRangePicker","FormMixin","LitElement","constructor","this","label","locale","dateFormat","defaultDate","defaultErrorMessage","value","warnText","disable","_processedDisableDates","enable","caption","required","size","dateRangePickerDisabled","twentyFourHourFormat","minDate","maxDate","errorAriaLabel","errorTitle","warningAriaLabel","warningTitle","staticPosition","_enableTime","_hasInteracted","textStrings","_textStrings","_isClearing","_shouldFlatpickrOpen","_initialized","debouncedUpdate","debounce","async","flatpickrInstance","initializeFlatpickr","error","console","handleResize","func","wait","timeout","args","window","clearTimeout","setTimeout","apply","disconnectedCallback","super","removeEventListener","_onChange","_handleFormReset","_a","destroy","connectedCallback","addEventListener","hasValue","_inputEl","Array","isArray","length","render","errorId","name","warningId","anchorId","Math","random","toString","slice","descriptionId","placeholder","getPlaceholder","html","classMap","getDateRangePickerClasses","preventFlatpickrOpen","_b","_c","_isInvalid","handleInputClickEvent","handleInputFocusEvent","_handleClear","unsafeSVG","clearIcon","calendarIcon","renderValidationMessage","invalidText","errorIcon","_internalValidationMsg","firstUpdated","changedProperties","injectFlatpickrStyles","ShidokaFlatpickrTheme","updateComplete","setupAnchor","updated","has","newValue","every","v","clear","map","date","Date","year","month","day","split","Number","isNaN","warn","updateFlatpickrOptions","updateEnableTime","close","event","preventDefault","stopPropagation","setAttribute","emitValue","dates","dateString","source","_validate","requestUpdate","initializeSingleAnchorFlatpickr","inputEl","getFlatpickrOptions","getComponentFlatpickrOptions","setCalendarAttributes","instance","calendarContainer","Error","container","getModalContainer","document","body","setInitialDates","bind","hideEmptyYear","message","undefined","enableTime","mode","closeOnSelect","loadLocale","onOpen","handleOpen","onClose","handleClose","onChange","handleDateChange","appendTo","noCalendar","static","validDates","filter","localDate","setFullYear","setHours","setDate","getTime","selectedDates","formattedDates","toISOString","join","updateSelectedDateRangeAria","ariaLabel","replace","toLocaleDateString","startDate","endDate","setShouldFlatpickrOpen","closeFlatpickr","handleInputClick","handleInputFocus","interacted","report","HTMLInputElement","isEmpty","trim","isRequired","validity","validationMessage","valueMissing","customError","isValid","_internals","setValidity","reportValidity","styles","DateRangePickerStyles","__decorate","property","type","String","prototype","state","Boolean","query","Object","customElement"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export declare class TimePicker extends TimePicker_base {
|
|
|
15
15
|
/** Label text. */
|
|
16
16
|
label: string;
|
|
17
17
|
/** Sets desired locale and, if supported, dynamically loads language lib */
|
|
18
|
-
locale: SupportedLocale;
|
|
18
|
+
locale: SupportedLocale | string;
|
|
19
19
|
/** Sets date/time value. */
|
|
20
20
|
value: Date | null;
|
|
21
21
|
/** Sets the initial selected date(s). For multiple mode, provide an array of date strings matching dateFormat. */
|
|
@@ -77,6 +77,7 @@ export declare class TimePicker extends TimePicker_base {
|
|
|
77
77
|
requiredText: string;
|
|
78
78
|
clearAll: string;
|
|
79
79
|
pleaseSelectDate: string;
|
|
80
|
+
noTimeSelected: string;
|
|
80
81
|
pleaseSelectValidDate: string;
|
|
81
82
|
};
|
|
82
83
|
/** Internal text strings.
|
|
@@ -86,6 +87,7 @@ export declare class TimePicker extends TimePicker_base {
|
|
|
86
87
|
requiredText: string;
|
|
87
88
|
clearAll: string;
|
|
88
89
|
pleaseSelectDate: string;
|
|
90
|
+
noTimeSelected: string;
|
|
89
91
|
pleaseSelectValidDate: string;
|
|
90
92
|
};
|
|
91
93
|
/** Control flag to determine if Flatpickr should open
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timepicker.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/timepicker/timepicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAIvD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,uBAAuB,CAAC;AAgB/B,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAW3D,KAAK,eAAe,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;;
|
|
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{_ as t}from"../../../vendor/tslib-53a81efe.js";import{o as e,n as i,t as r,i as a,e as n}from"../../../vendor/lit-7b0f5ebf.js";import{i as o,x as l,s}from"../../../vendor/lit-element-c6c02f24.js";import{FormMixin as d}from"../../../common/mixins/form-input.js";import"../button/button.js";import{injectFlatpickrStyles as p,emitValue as c,initializeSingleAnchorFlatpickr as h,getModalContainer as u,setCalendarAttributes as m,hideEmptyYear as v,getFlatpickrOptions as k,loadLocale as f,preventFlatpickrOpen as g,handleInputClick as b,handleInputFocus as y}from"../../../common/helpers/flatpickr.js";import{c as x}from"../../../shidoka-flatpickr-theme-3d6e1af1.js";import{o as w}from"../../../vendor/lit-html-29220869.js";import{j as _,K as z,I as $}from"../../../vendor/@kyndryl-design-system/shidoka-icons-726d44b0.js";import"../../../common/helpers/helpers.js";import"../button/defs.js";import"../../../vendor/flatpickr-bbd13d61.js";import"../../../common/flatpickrLangs.js";var
|
|
1
|
+
import{_ as t}from"../../../vendor/tslib-53a81efe.js";import{o as e,n as i,t as r,i as a,e as n}from"../../../vendor/lit-7b0f5ebf.js";import{i as o,x as l,s}from"../../../vendor/lit-element-c6c02f24.js";import{FormMixin as d}from"../../../common/mixins/form-input.js";import"../button/button.js";import{injectFlatpickrStyles as p,emitValue as c,initializeSingleAnchorFlatpickr as h,getModalContainer as u,setCalendarAttributes as m,hideEmptyYear as v,getFlatpickrOptions as k,loadLocale as f,preventFlatpickrOpen as g,handleInputClick as b,handleInputFocus as y}from"../../../common/helpers/flatpickr.js";import{c as x}from"../../../shidoka-flatpickr-theme-3d6e1af1.js";import{o as w}from"../../../vendor/lit-html-29220869.js";import{j as _,K as z,I as $}from"../../../vendor/@kyndryl-design-system/shidoka-icons-726d44b0.js";import"../../../common/helpers/helpers.js";import"../button/defs.js";import"../../../vendor/flatpickr-bbd13d61.js";import"../../../common/flatpickrLangs.js";var F=o`*,
|
|
2
2
|
*::before,
|
|
3
3
|
*::after {
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -492,7 +492,7 @@ input {
|
|
|
492
492
|
}
|
|
493
493
|
.time-picker__disabled .input-custom {
|
|
494
494
|
pointer-events: none;
|
|
495
|
-
}`;const
|
|
495
|
+
}`;const I={requiredText:"Required",clearAll:"Clear",pleaseSelectDate:"Please select a date",noTimeSelected:"No time selected",pleaseSelectValidDate:"Please select a valid date"};let C=class extends(d(s)){constructor(){super(...arguments),this.label="",this.locale="en",this.value=null,this.defaultDate=null,this.defaultHour=null,this.defaultMinute=null,this.defaultErrorMessage="",this.warnText="",this.caption="",this.required=!1,this.size="md",this.timepickerDisabled=!1,this.twentyFourHourFormat=null,this.minTime="",this.maxTime="",this.errorAriaLabel="",this.errorTitle="",this.warningAriaLabel="",this.warningTitle="",this.staticPosition=!1,this._hasInteracted=!1,this._isClearing=!1,this.textStrings=I,this._textStrings=I,this._shouldFlatpickrOpen=!0,this._initialized=!1,this.debouncedUpdate=this.debounce((async()=>{if(this.flatpickrInstance)try{await this.initializeFlatpickr()}catch(t){console.error("Error in debounced update:",t)}}),100),this._isDestroyed=!1}debounce(t,e){let i=null;return(...r)=>{null!==i&&window.clearTimeout(i),i=window.setTimeout((()=>{t.apply(this,r),i=null}),e)}}generateRandomId(t){return`${t}-${Math.random().toString(36).slice(2,11)}`}connectedCallback(){super.connectedCallback(),this.addEventListener("change",this._onChange),this.addEventListener("reset",this._handleFormReset)}hasValue(){return null!==this.value&&this._hasInteracted}render(){var t,i,r;const a=`${this.name}-error-message`,n=`${this.name}-warning-message`,o=this.name?this.generateRandomId(this.name):this.generateRandomId("time-picker"),s=null!==(t=this.name)&&void 0!==t?t:"";return l`
|
|
496
496
|
<div class=${e(this.getTimepickerClasses())}>
|
|
497
497
|
<div
|
|
498
498
|
class="label-text"
|
|
@@ -576,5 +576,5 @@ input {
|
|
|
576
576
|
@click=${this.preventFlatpickrOpen}
|
|
577
577
|
>
|
|
578
578
|
${this.warnText}
|
|
579
|
-
</div>`:null}getTimepickerClasses(){return{"time-picker":!0,"time-picker__disabled":this.timepickerDisabled}}async firstUpdated(t){super.firstUpdated(t),this._initialized||(p(x.toString()),this._initialized=!0,await this.updateComplete,this.setupAnchor())}async updated(t){if(await super.updated(t),t.has("defaultHour")||t.has("defaultMinute")||t.has("defaultDate")||t.has("invalidText")||t.has("minTime")||t.has("maxTime")?this.flatpickrInstance&&!this._isClearing&&await this.debouncedUpdate():t.has("twentyFourHourFormat")&&this.flatpickrInstance&&!this._isClearing&&await this.debouncedUpdate(),t.has("value")&&!this._isClearing){if(null===this.value&&this.flatpickrInstance){this._isClearing=!0;try{this.flatpickrInstance.clear(),this._inputEl&&(this._inputEl.value="")}finally{this._isClearing=!1}}this.requestUpdate()}t.has("timepickerDisabled")&&this.timepickerDisabled&&this.flatpickrInstance&&this.flatpickrInstance.close()}async _handleClear(t){t.preventDefault(),t.stopPropagation(),this._isClearing=!0;try{this.value=null,this.flatpickrInstance&&(this.flatpickrInstance.clear(),this._inputEl&&(this._inputEl.value="")),c(this,"on-change",{time:"",source:"clear"}),this._validate(!0,!1),await this.updateComplete,this.requestUpdate()}finally{this._isClearing=!1}}async setupAnchor(){if(this._inputEl)try{await this.initializeFlatpickr()}catch(t){console.error("Error setting up flatpickr:",t)}else console.warn("Input element not found during setup")}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&&(this.flatpickrInstance.destroy(),this.flatpickrInstance=void 0,await new Promise((t=>setTimeout(t,0)))),this._isDestroyed||!t.isConnected)return;if(await new Promise((t=>requestAnimationFrame(t))),this._isDestroyed||!t.isConnected)return;if(this.flatpickrInstance=await h({inputEl:this._inputEl,getFlatpickrOptions:async()=>{const t=await this.getComponentFlatpickrOptions();return!1===t.noCalendar&&(console.warn("Time picker requires noCalendar option to be true"),t.noCalendar=!0),t},setCalendarAttributes:t=>{try{const e=u(this)!==document.body;m(t,e),t.calendarContainer&&t.calendarContainer.setAttribute("aria-label","Time picker")}catch(t){console.warn("Error setting calendar attributes:",t)}},setInitialDates:this.setInitialDates.bind(this)}),!this.flatpickrInstance)throw new Error("Failed to initialize Flatpickr instance");v(),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,e,i,r;const a=u(this),n=this.twentyFourHourFormat?"H:i":"h:i K";return k({locale:this.locale,enableTime:!0,twentyFourHourFormat:null!==(t=this.twentyFourHourFormat)&&void 0!==t?t:void 0,inputEl:this._inputEl,allowInput:!0,dateFormat:n,minTime:this.minTime,maxTime:this.maxTime,loadLocale:f,mode:"time",noCalendar:!0,onChange:this.handleTimeChange.bind(this),onClose:this.handleClose.bind(this),onOpen:this.handleOpen.bind(this),appendTo:a,static:this.staticPosition,defaultDate:null!==(e=this.defaultDate)&&void 0!==e?e:void 0,defaultHour:null!==(i=this.defaultHour)&&void 0!==i?i:void 0,defaultMinute:null!==(r=this.defaultMinute)&&void 0!==r?r:void 0})}setInitialDates(t){try{if(this._hasInteracted||this.value)return;if(null!=this.defaultDate)if("string"==typeof this.defaultDate){const e=this.defaultDate.split(":").map(Number);if(e.length>=2&&!isNaN(e[0])&&!isNaN(e[1])){const i=new Date;return i.setHours(e[0],e[1],0,0),void t.setDate(i,!1)}}else if(this.defaultDate instanceof Date)return void t.setDate(this.defaultDate,!1);if(null!==this.defaultHour||null!==this.defaultMinute){const e=new Date;null!==this.defaultHour&&e.setHours(this.defaultHour),null!==this.defaultMinute&&e.setMinutes(this.defaultMinute),e.setSeconds(0),e.setMilliseconds(0),t.setDate(e,!1)}}catch(t){console.warn("Error setting initial dates:",t)}}handleOpen(){var t;this._shouldFlatpickrOpen||(null===(t=this.flatpickrInstance)||void 0===t||t.close(),this._shouldFlatpickrOpen=!0)}async handleClose(){this._hasInteracted=!0,this._validate(!0,!1),await this.updateComplete}async handleTimeChange(t,e){if(!this._isClearing)try{if(t.length>0){this._hasInteracted||(this._hasInteracted=!0);const i=t[0],r=new Date;r.setHours(i.getHours()),r.setMinutes(i.getMinutes()),r.setSeconds(0),r.setMilliseconds(0),this.value=r,c(this,"on-change",{time:e,source:void 0})}else this.value=null,c(this,"on-change",{time:"",source:"clear"});this._validate(!0,!1),await this.updateComplete,this.requestUpdate()}catch(t){console.warn("Error handling time change:",t)}}_validate(t,e){if(!(this._inputEl&&this._inputEl instanceof HTMLInputElement))return;t&&(this._hasInteracted=!0);const i=!this._inputEl.value.trim(),r=this.required;let a=this._inputEl.validity,n=this._inputEl.validationMessage;r&&i&&(a={...a,valueMissing:!0},n=this.defaultErrorMessage||this._textStrings.pleaseSelectDate),this.invalidText&&(a={...a,customError:!0},n=this.invalidText);const o=!a.valueMissing&&!a.customError;o||n||(n=this._textStrings.pleaseSelectValidDate),this._internals.setValidity(a,n,this._inputEl),this._isInvalid=!o&&(this._hasInteracted||""!==this.invalidText),this._internalValidationMsg=n,e&&this._internals.reportValidity(),this.requestUpdate()}_onChange(){this._validate(!0,!1)}_handleFormReset(){this.value=null,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()}preventFlatpickrOpen(t){g(t,this.setShouldFlatpickrOpen.bind(this))}handleInputClickEvent(){b(this.setShouldFlatpickrOpen.bind(this))}handleInputFocusEvent(){y(this._shouldFlatpickrOpen,this.closeFlatpickr.bind(this),this.setShouldFlatpickrOpen.bind(this))}disconnectedCallback(){this._isDestroyed=!0,super.disconnectedCallback(),this.removeEventListener("change",this._onChange),this.removeEventListener("reset",this._handleFormReset),this.flatpickrInstance&&(this.flatpickrInstance.destroy(),this.flatpickrInstance=void 0)}};C.styles=[
|
|
579
|
+
</div>`:null}getTimepickerClasses(){return{"time-picker":!0,"time-picker__disabled":this.timepickerDisabled}}async firstUpdated(t){super.firstUpdated(t),this._initialized||(p(x.toString()),this._initialized=!0,await this.updateComplete,this.setupAnchor())}async updated(t){if(await super.updated(t),t.has("defaultHour")||t.has("defaultMinute")||t.has("defaultDate")||t.has("invalidText")||t.has("minTime")||t.has("maxTime")?this.flatpickrInstance&&!this._isClearing&&await this.debouncedUpdate():t.has("twentyFourHourFormat")&&this.flatpickrInstance&&!this._isClearing&&await this.debouncedUpdate(),t.has("value")&&!this._isClearing){if(null===this.value&&this.flatpickrInstance){this._isClearing=!0;try{this.flatpickrInstance.clear(),this._inputEl&&(this._inputEl.value="")}finally{this._isClearing=!1}}this.requestUpdate()}t.has("timepickerDisabled")&&this.timepickerDisabled&&this.flatpickrInstance&&this.flatpickrInstance.close()}async _handleClear(t){t.preventDefault(),t.stopPropagation(),this._isClearing=!0;try{this.value=null,this.flatpickrInstance&&(this.flatpickrInstance.clear(),this._inputEl&&(this._inputEl.value="",this._inputEl.setAttribute("aria-label",this._textStrings.noTimeSelected))),c(this,"on-change",{time:"",source:"clear"}),this._validate(!0,!1),await this.updateComplete,await this.initializeFlatpickr(),this.requestUpdate()}finally{this._isClearing=!1}}async setupAnchor(){if(this._inputEl)try{await this.initializeFlatpickr()}catch(t){console.error("Error setting up flatpickr:",t)}else console.warn("Input element not found during setup")}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&&(this.flatpickrInstance.destroy(),this.flatpickrInstance=void 0,await new Promise((t=>setTimeout(t,0)))),this._isDestroyed||!t.isConnected)return;if(await new Promise((t=>requestAnimationFrame(t))),this._isDestroyed||!t.isConnected)return;if(this.flatpickrInstance=await h({inputEl:this._inputEl,getFlatpickrOptions:async()=>{const t=await this.getComponentFlatpickrOptions();return!1===t.noCalendar&&(console.warn("Time picker requires noCalendar option to be true"),t.noCalendar=!0),t},setCalendarAttributes:t=>{try{const e=u(this)!==document.body;m(t,e),t.calendarContainer&&t.calendarContainer.setAttribute("aria-label","Time picker")}catch(t){console.warn("Error setting calendar attributes:",t)}},setInitialDates:this.setInitialDates.bind(this)}),!this.flatpickrInstance)throw new Error("Failed to initialize Flatpickr instance");v(),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,e,i,r;const a=u(this),n=this.twentyFourHourFormat?"H:i":"h:i K";return k({locale:this.locale,enableTime:!0,twentyFourHourFormat:null!==(t=this.twentyFourHourFormat)&&void 0!==t?t:void 0,inputEl:this._inputEl,allowInput:!0,dateFormat:n,minTime:this.minTime,maxTime:this.maxTime,loadLocale:f,mode:"time",noCalendar:!0,onChange:this.handleTimeChange.bind(this),onClose:this.handleClose.bind(this),onOpen:this.handleOpen.bind(this),appendTo:a,static:this.staticPosition,defaultDate:null!==(e=this.defaultDate)&&void 0!==e?e:void 0,defaultHour:null!==(i=this.defaultHour)&&void 0!==i?i:void 0,defaultMinute:null!==(r=this.defaultMinute)&&void 0!==r?r:void 0})}setInitialDates(t){try{if(this._hasInteracted||this.value)return;if(null!=this.defaultDate)if("string"==typeof this.defaultDate){const e=this.defaultDate.split(":").map(Number);if(e.length>=2&&!isNaN(e[0])&&!isNaN(e[1])){const i=new Date;return i.setHours(e[0],e[1],0,0),void t.setDate(i,!1)}}else if(this.defaultDate instanceof Date)return void t.setDate(this.defaultDate,!1);if(null!==this.defaultHour||null!==this.defaultMinute){const e=new Date;null!==this.defaultHour&&e.setHours(this.defaultHour),null!==this.defaultMinute&&e.setMinutes(this.defaultMinute),e.setSeconds(0),e.setMilliseconds(0),t.setDate(e,!1)}}catch(t){console.warn("Error setting initial dates:",t)}}handleOpen(){var t;this._shouldFlatpickrOpen||(null===(t=this.flatpickrInstance)||void 0===t||t.close(),this._shouldFlatpickrOpen=!0)}async handleClose(){this._hasInteracted=!0,this._validate(!0,!1),await this.updateComplete}async handleTimeChange(t,e){if(!this._isClearing)try{if(t.length>0){this._hasInteracted||(this._hasInteracted=!0);const i=t[0],r=new Date;r.setHours(i.getHours()),r.setMinutes(i.getMinutes()),r.setSeconds(0),r.setMilliseconds(0),this.value=r,c(this,"on-change",{time:e,source:void 0})}else this.value=null,c(this,"on-change",{time:"",source:"clear"});this._validate(!0,!1),await this.updateComplete,this.requestUpdate()}catch(t){console.warn("Error handling time change:",t)}}_validate(t,e){if(!(this._inputEl&&this._inputEl instanceof HTMLInputElement))return;t&&(this._hasInteracted=!0);const i=!this._inputEl.value.trim(),r=this.required;let a=this._inputEl.validity,n=this._inputEl.validationMessage;r&&i&&(a={...a,valueMissing:!0},n=this.defaultErrorMessage||this._textStrings.pleaseSelectDate),this.invalidText&&(a={...a,customError:!0},n=this.invalidText);const o=!a.valueMissing&&!a.customError;o||n||(n=this._textStrings.pleaseSelectValidDate),this._internals.setValidity(a,n,this._inputEl),this._isInvalid=!o&&(this._hasInteracted||""!==this.invalidText),this._internalValidationMsg=n,e&&this._internals.reportValidity(),this.requestUpdate()}_onChange(){this._validate(!0,!1)}_handleFormReset(){this.value=null,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()}preventFlatpickrOpen(t){g(t,this.setShouldFlatpickrOpen.bind(this))}handleInputClickEvent(){b(this.setShouldFlatpickrOpen.bind(this))}handleInputFocusEvent(){y(this._shouldFlatpickrOpen,this.closeFlatpickr.bind(this),this.setShouldFlatpickrOpen.bind(this))}disconnectedCallback(){this._isDestroyed=!0,super.disconnectedCallback(),this.removeEventListener("change",this._onChange),this.removeEventListener("reset",this._handleFormReset),this.flatpickrInstance&&(this.flatpickrInstance.destroy(),this.flatpickrInstance=void 0)}};C.styles=[F,x],t([i({type:String})],C.prototype,"label",void 0),t([i({type:String})],C.prototype,"locale",void 0),t([i({type:Object})],C.prototype,"value",void 0),t([i({type:Array})],C.prototype,"defaultDate",void 0),t([i({type:Number})],C.prototype,"defaultHour",void 0),t([i({type:Number})],C.prototype,"defaultMinute",void 0),t([i({type:String})],C.prototype,"defaultErrorMessage",void 0),t([i({type:String})],C.prototype,"warnText",void 0),t([i({type:String})],C.prototype,"caption",void 0),t([i({type:Boolean})],C.prototype,"required",void 0),t([i({type:String})],C.prototype,"size",void 0),t([i({type:Boolean})],C.prototype,"timepickerDisabled",void 0),t([i({type:Boolean})],C.prototype,"twentyFourHourFormat",void 0),t([i({type:String})],C.prototype,"minTime",void 0),t([i({type:String})],C.prototype,"maxTime",void 0),t([i({type:String})],C.prototype,"errorAriaLabel",void 0),t([i({type:String})],C.prototype,"errorTitle",void 0),t([i({type:String})],C.prototype,"warningAriaLabel",void 0),t([i({type:String})],C.prototype,"warningTitle",void 0),t([i({type:Boolean})],C.prototype,"staticPosition",void 0),t([r()],C.prototype,"_hasInteracted",void 0),t([r()],C.prototype,"flatpickrInstance",void 0),t([a("input.input-custom")],C.prototype,"_inputEl",void 0),t([r()],C.prototype,"_isClearing",void 0),t([i({type:Object})],C.prototype,"textStrings",void 0),t([r()],C.prototype,"_textStrings",void 0),C=t([n("kyn-time-picker")],C);export{C as TimePicker};
|
|
580
580
|
//# sourceMappingURL=timepicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timepicker.js","sources":["../../../../src/components/reusable/timepicker/timepicker.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } 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 preventFlatpickrOpen,\n handleInputClick,\n handleInputFocus,\n setCalendarAttributes,\n loadLocale,\n emitValue,\n hideEmptyYear,\n getModalContainer,\n} from '../../../common/helpers/flatpickr';\n\nimport flatpickr from 'flatpickr';\nimport { BaseOptions } from 'flatpickr/dist/types/options';\n\nimport TimepickerStyles from './timepicker.scss';\nimport ShidokaFlatpickrTheme from '../../../common/scss/shidoka-flatpickr-theme.scss';\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/20/close-simple.svg';\n\ntype SupportedLocale = (typeof langsArray)[number];\n\nconst _defaultTextStrings = {\n requiredText: 'Required',\n clearAll: 'Clear',\n pleaseSelectDate: 'Please select a date',\n pleaseSelectValidDate: 'Please select a valid date',\n};\n\n/**\n * Timepicker: uses Flatpickr library,time picker implementation -- `https://flatpickr.js.org/examples/#time-picker`\n * @fires on-change - Captures the input event and emits the selected value and original event details.\n * @slot tooltip - Slot for tooltip.\n */\n@customElement('kyn-time-picker')\nexport class TimePicker extends FormMixin(LitElement) {\n static override styles = [TimepickerStyles, ShidokaFlatpickrTheme];\n\n /** Label text. */\n @property({ type: String })\n label = '';\n\n /** Sets desired locale and, if supported, dynamically loads language lib */\n @property({ type: String })\n locale: SupportedLocale = 'en';\n\n /** Sets date/time value. */\n @property({ type: Object })\n override value: Date | null = null;\n\n /** Sets the initial selected date(s). For multiple mode, provide an array of date strings matching dateFormat. */\n @property({ type: Array })\n defaultDate: string | string[] | null = null;\n\n /** Sets initial value of the hour element. */\n @property({ type: Number })\n defaultHour: number | null = null;\n\n /** Sets initial value of the minute element. */\n @property({ type: Number })\n defaultMinute: number | null = null;\n\n /** Sets default error message. */\n @property({ type: String })\n defaultErrorMessage = '';\n\n /** Sets validation warning messaging. */\n @property({ type: String })\n warnText = '';\n\n /** Sets caption to be displayed under primary date picker elements. */\n @property({ type: String })\n caption = '';\n\n /** Sets datepicker form input value to required/required. */\n @property({ type: Boolean })\n required = false;\n\n /** Input size. \"sm\", \"md\", or \"lg\". */\n @property({ type: String })\n size = 'md';\n\n /** Sets entire datepicker form element to enabled/disabled. */\n @property({ type: Boolean })\n timepickerDisabled = false;\n\n /** Sets 24 hour formatting true/false.\n * Defaults to 12H for all `en-*` locales and 24H for all other locales.\n */\n @property({ type: Boolean })\n twentyFourHourFormat: boolean | null = null;\n\n /** Sets lower boundary of datepicker date selection. */\n @property({ type: String })\n minTime: string | number | Date = '';\n\n /** Sets upper boundary of datepicker date selection. */\n @property({ type: String })\n maxTime: string | number | Date = '';\n\n /** Sets aria label attribute for error message. */\n @property({ type: String })\n errorAriaLabel = '';\n\n /** Sets title attribute for error message. */\n @property({ type: String })\n errorTitle = '';\n\n /** Sets aria label attribute for warning message. */\n @property({ type: String })\n warningAriaLabel = '';\n\n /** Sets title attribute for warning message. */\n @property({ type: String })\n warningTitle = '';\n\n /** Sets whether the Flatpickr calendar UI should use static positioning. */\n @property({ type: Boolean })\n staticPosition = false;\n\n /**\n * Sets whether user has interacted with timepicker for error handling.\n * @internal\n */\n @state()\n private _hasInteracted = false;\n\n /** Flatpickr instantiation.\n * @internal\n */\n @state()\n private flatpickrInstance?: flatpickr.Instance;\n\n /**\n * Queries the anchor DOM element.\n * @ignore\n */\n @query('input.input-custom')\n private _inputEl?: HTMLInputElement;\n\n /** Tracks if we're in a clear operation to prevent duplicate events\n * @internal\n */\n @state()\n private _isClearing = false;\n\n /** Customizable text strings. */\n @property({ type: Object })\n textStrings = _defaultTextStrings;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n _textStrings = _defaultTextStrings;\n\n /** Control flag to determine if Flatpickr should open\n * @internal\n */\n private _shouldFlatpickrOpen = true;\n\n /** Track initialization state\n * @internal\n */\n private _initialized = false;\n\n private debounce<T extends (...args: any[]) => any>(\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 func.apply(this, args);\n timeout = null;\n }, wait);\n };\n }\n\n private debouncedUpdate = this.debounce(async () => {\n if (!this.flatpickrInstance) 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 override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('change', this._onChange);\n this.addEventListener('reset', this._handleFormReset);\n }\n\n private hasValue(): boolean {\n return this.value !== null && this._hasInteracted;\n }\n\n override render() {\n const errorId = `${this.name}-error-message`;\n const warningId = `${this.name}-warning-message`;\n const anchorId = this.name\n ? this.generateRandomId(this.name)\n : this.generateRandomId('time-picker');\n const descriptionId = this.name ?? '';\n const placeholder = '—— : ——';\n return html`\n <div class=${classMap(this.getTimepickerClasses())}>\n <div\n class=\"label-text\"\n @mousedown=${this.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n ?disabled=${this.timepickerDisabled}\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 >*</abbr\n >`\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 })}\"\n type=\"text\"\n id=${anchorId}\n name=${this.name}\n placeholder=${placeholder}\n ?disabled=${this.timepickerDisabled}\n ?required=${this.required}\n ?invalid=${this._isInvalid}\n aria-invalid=${this._isInvalid}\n aria-labelledby=${`label-${anchorId}`}\n @click=${this.handleInputClickEvent}\n @focus=${this.handleInputFocusEvent}\n />\n ${this.hasValue()\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 class=\"input-icon\">${unsafeSVG(clockIcon)}</span>`}\n </div>\n ${this.caption\n ? html`<div\n id=${descriptionId}\n class=\"caption\"\n aria-disabled=${this.timepickerDisabled}\n @mousedown=${this.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\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.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.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n >\n <span\n class=\"error-icon\"\n aria-label=${this.errorAriaLabel || 'Error message icon'}\n role=\"button\"\n >${unsafeSVG(errorIcon)}</span\n >${this.invalidText ||\n this._internalValidationMsg ||\n this.defaultErrorMessage}\n </div>`;\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.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n >\n ${this.warnText}\n </div>`;\n }\n return null;\n }\n\n getTimepickerClasses() {\n return {\n 'time-picker': true,\n 'time-picker__disabled': this.timepickerDisabled,\n };\n }\n\n override async firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n if (!this._initialized) {\n injectFlatpickrStyles(ShidokaFlatpickrTheme.toString());\n this._initialized = true;\n await this.updateComplete;\n this.setupAnchor();\n }\n }\n\n override async updated(changedProperties: PropertyValues) {\n await super.updated(changedProperties);\n\n if (\n changedProperties.has('defaultHour') ||\n changedProperties.has('defaultMinute') ||\n changedProperties.has('defaultDate')\n ) {\n if (this.flatpickrInstance && !this._isClearing) {\n await this.debouncedUpdate();\n }\n } else if (\n changedProperties.has('invalidText') ||\n changedProperties.has('minTime') ||\n changedProperties.has('maxTime')\n ) {\n if (this.flatpickrInstance && !this._isClearing) {\n await this.debouncedUpdate();\n }\n } else if (changedProperties.has('twentyFourHourFormat')) {\n if (this.flatpickrInstance && !this._isClearing) {\n await this.debouncedUpdate();\n }\n }\n if (changedProperties.has('value') && !this._isClearing) {\n const newValue = this.value;\n if (newValue === null && this.flatpickrInstance) {\n this._isClearing = true;\n try {\n this.flatpickrInstance.clear();\n if (this._inputEl) {\n this._inputEl.value = '';\n }\n } finally {\n this._isClearing = false;\n }\n }\n this.requestUpdate();\n }\n if (\n changedProperties.has('timepickerDisabled') &&\n this.timepickerDisabled &&\n this.flatpickrInstance\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 try {\n this.value = null;\n if (this.flatpickrInstance) {\n this.flatpickrInstance.clear();\n if (this._inputEl) {\n this._inputEl.value = '';\n }\n }\n emitValue(this, 'on-change', {\n time: '',\n source: 'clear',\n });\n this._validate(true, false);\n await this.updateComplete;\n this.requestUpdate();\n } finally {\n this._isClearing = false;\n }\n }\n\n private async setupAnchor() {\n if (!this._inputEl) {\n console.warn('Input element not found during setup');\n return;\n }\n\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error setting up flatpickr:', error);\n }\n }\n\n private _isDestroyed = false;\n\n async initializeFlatpickr(): Promise<void> {\n if (this._isDestroyed) {\n return;\n }\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\n const inputEl = this._inputEl;\n try {\n if (this.flatpickrInstance) {\n this.flatpickrInstance.destroy();\n this.flatpickrInstance = undefined;\n await new Promise((resolve) => setTimeout(resolve, 0));\n }\n\n if (this._isDestroyed || !inputEl.isConnected) {\n return;\n }\n\n await new Promise((resolve) => requestAnimationFrame(resolve));\n\n if (this._isDestroyed || !inputEl.isConnected) {\n return;\n }\n\n this.flatpickrInstance = await initializeSingleAnchorFlatpickr({\n inputEl: this._inputEl,\n getFlatpickrOptions: async () => {\n const options = await this.getComponentFlatpickrOptions();\n if (options.noCalendar === false) {\n console.warn('Time picker requires noCalendar option to be true');\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 instance.calendarContainer.setAttribute(\n 'aria-label',\n 'Time picker'\n );\n }\n } catch (error) {\n console.warn('Error setting calendar attributes:', error);\n }\n },\n setInitialDates: this.setInitialDates.bind(this),\n });\n\n if (!this.flatpickrInstance) {\n throw new Error('Failed to initialize Flatpickr instance');\n }\n\n hideEmptyYear();\n this._validate(false, false);\n } catch (error) {\n console.error('Error initializing Flatpickr:', error);\n\n if (error instanceof Error) {\n console.error('Error details:', error.message);\n }\n }\n }\n\n async updateFlatpickrOptions(): Promise<void> {\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 const container = getModalContainer(this);\n const effectiveDateFormat = this.twentyFourHourFormat ? 'H:i' : 'h:i K';\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 appendTo: container,\n static: this.staticPosition,\n defaultDate: this.defaultDate ?? undefined,\n defaultHour: this.defaultHour ?? undefined,\n defaultMinute: this.defaultMinute ?? undefined,\n });\n }\n\n setInitialDates(instance: flatpickr.Instance): void {\n try {\n if (this._hasInteracted || this.value) return;\n if (this.defaultDate != null) {\n if (typeof this.defaultDate === 'string') {\n const parts = this.defaultDate.split(':').map(Number);\n if (parts.length >= 2 && !isNaN(parts[0]) && !isNaN(parts[1])) {\n const newDate = new Date();\n newDate.setHours(parts[0], parts[1], 0, 0);\n instance.setDate(newDate, false);\n return;\n }\n } else if (this.defaultDate instanceof Date) {\n instance.setDate(this.defaultDate, false);\n return;\n }\n }\n if (this.defaultHour !== null || this.defaultMinute !== null) {\n const newDate = new Date();\n if (this.defaultHour !== null) {\n newDate.setHours(this.defaultHour);\n }\n if (this.defaultMinute !== null) {\n newDate.setMinutes(this.defaultMinute);\n }\n newDate.setSeconds(0);\n newDate.setMilliseconds(0);\n instance.setDate(newDate, false);\n }\n } catch (error) {\n console.warn('Error setting initial dates:', error);\n }\n }\n\n handleOpen(): void {\n if (!this._shouldFlatpickrOpen) {\n this.flatpickrInstance?.close();\n this._shouldFlatpickrOpen = true;\n }\n }\n\n async handleClose(): Promise<void> {\n this._hasInteracted = true;\n this._validate(true, false);\n await this.updateComplete;\n }\n\n async handleTimeChange(\n selectedDates: Date[],\n dateStr: string\n ): Promise<void> {\n if (this._isClearing) return;\n try {\n if (selectedDates.length > 0) {\n if (!this._hasInteracted) {\n this._hasInteracted = true;\n }\n const selectedTime = selectedDates[0];\n const newDate = new Date();\n newDate.setHours(selectedTime.getHours());\n newDate.setMinutes(selectedTime.getMinutes());\n newDate.setSeconds(0);\n newDate.setMilliseconds(0);\n this.value = newDate;\n emitValue(this, 'on-change', {\n time: dateStr,\n source: undefined,\n });\n } else {\n this.value = null;\n emitValue(this, 'on-change', {\n time: '',\n source: 'clear',\n });\n }\n this._validate(true, false);\n await this.updateComplete;\n this.requestUpdate();\n } catch (error) {\n console.warn('Error handling time change:', error);\n }\n }\n\n private _validate(interacted: boolean, report: boolean): void {\n if (!this._inputEl || !(this._inputEl instanceof HTMLInputElement)) {\n return;\n }\n if (interacted) {\n this._hasInteracted = true;\n }\n const isEmpty = !this._inputEl.value.trim();\n const isRequired = this.required;\n let validity = this._inputEl.validity;\n let validationMessage = this._inputEl.validationMessage;\n if (isRequired && isEmpty) {\n validity = { ...validity, valueMissing: true };\n validationMessage =\n this.defaultErrorMessage || this._textStrings.pleaseSelectDate;\n }\n if (this.invalidText) {\n validity = { ...validity, customError: true };\n validationMessage = this.invalidText;\n }\n const isValid = !validity.valueMissing && !validity.customError;\n if (!isValid && !validationMessage) {\n validationMessage = this._textStrings.pleaseSelectValidDate;\n }\n this._internals.setValidity(validity, validationMessage, this._inputEl);\n this._isInvalid =\n !isValid && (this._hasInteracted || this.invalidText !== '');\n this._internalValidationMsg = validationMessage;\n if (report) {\n this._internals.reportValidity();\n }\n this.requestUpdate();\n }\n\n private _onChange() {\n this._validate(true, false);\n }\n\n private _handleFormReset() {\n this.value = null;\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 preventFlatpickrOpen(event: Event) {\n preventFlatpickrOpen(event, this.setShouldFlatpickrOpen.bind(this));\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(): void {\n this._isDestroyed = true;\n super.disconnectedCallback();\n this.removeEventListener('change', this._onChange);\n this.removeEventListener('reset', this._handleFormReset);\n if (this.flatpickrInstance) {\n this.flatpickrInstance.destroy();\n this.flatpickrInstance = undefined;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-time-picker': TimePicker;\n }\n}\n"],"names":["_defaultTextStrings","requiredText","clearAll","pleaseSelectDate","pleaseSelectValidDate","TimePicker","FormMixin","LitElement","constructor","this","label","locale","value","defaultDate","defaultHour","defaultMinute","defaultErrorMessage","warnText","caption","required","size","timepickerDisabled","twentyFourHourFormat","minTime","maxTime","errorAriaLabel","errorTitle","warningAriaLabel","warningTitle","staticPosition","_hasInteracted","_isClearing","textStrings","_textStrings","_shouldFlatpickrOpen","_initialized","debouncedUpdate","debounce","async","flatpickrInstance","initializeFlatpickr","error","console","_isDestroyed","func","wait","timeout","args","window","clearTimeout","setTimeout","apply","generateRandomId","prefix","Math","random","toString","slice","connectedCallback","super","addEventListener","_onChange","_handleFormReset","hasValue","render","errorId","name","warningId","anchorId","descriptionId","_a","html","classMap","getTimepickerClasses","preventFlatpickrOpen","_b","_c","_isInvalid","handleInputClickEvent","handleInputFocusEvent","_handleClear","unsafeSVG","clearIcon","clockIcon","renderValidationMessage","invalidText","errorIcon","_internalValidationMsg","firstUpdated","changedProperties","injectFlatpickrStyles","ShidokaFlatpickrTheme","updateComplete","setupAnchor","updated","has","clear","_inputEl","requestUpdate","close","event","preventDefault","stopPropagation","emitValue","time","source","_validate","warn","isConnected","inputEl","destroy","undefined","Promise","resolve","requestAnimationFrame","initializeSingleAnchorFlatpickr","getFlatpickrOptions","options","getComponentFlatpickrOptions","noCalendar","setCalendarAttributes","instance","modalDetected","getModalContainer","document","body","calendarContainer","setAttribute","setInitialDates","bind","Error","hideEmptyYear","message","updateFlatpickrOptions","container","effectiveDateFormat","enableTime","allowInput","dateFormat","loadLocale","mode","onChange","handleTimeChange","onClose","handleClose","onOpen","handleOpen","appendTo","static","_d","parts","split","map","Number","length","isNaN","newDate","Date","setHours","setDate","setMinutes","setSeconds","setMilliseconds","selectedDates","dateStr","selectedTime","getHours","getMinutes","interacted","report","HTMLInputElement","isEmpty","trim","isRequired","validity","validationMessage","valueMissing","customError","isValid","_internals","setValidity","reportValidity","setShouldFlatpickrOpen","closeFlatpickr","handleInputClick","handleInputFocus","disconnectedCallback","removeEventListener","styles","TimepickerStyles","__decorate","property","type","String","prototype","Object","Array","Boolean","state","query","customElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCA,MAAMA,EAAsB,CAC1BC,aAAc,WACdC,SAAU,QACVC,iBAAkB,uBAClBC,sBAAuB,8BASZ,IAAAC,EAAN,cAAyBC,EAAUC,IAAnC,WAAAC,uBAKLC,KAAKC,MAAG,GAIRD,KAAME,OAAoB,KAIjBF,KAAKG,MAAgB,KAI9BH,KAAWI,YAA6B,KAIxCJ,KAAWK,YAAkB,KAI7BL,KAAaM,cAAkB,KAI/BN,KAAmBO,oBAAG,GAItBP,KAAQQ,SAAG,GAIXR,KAAOS,QAAG,GAIVT,KAAQU,UAAG,EAIXV,KAAIW,KAAG,KAIPX,KAAkBY,oBAAG,EAMrBZ,KAAoBa,qBAAmB,KAIvCb,KAAOc,QAA2B,GAIlCd,KAAOe,QAA2B,GAIlCf,KAAcgB,eAAG,GAIjBhB,KAAUiB,WAAG,GAIbjB,KAAgBkB,iBAAG,GAInBlB,KAAYmB,aAAG,GAIfnB,KAAcoB,gBAAG,EAOTpB,KAAcqB,gBAAG,EAmBjBrB,KAAWsB,aAAG,EAItBtB,KAAWuB,YAAGhC,EAMdS,KAAYwB,aAAGjC,EAKPS,KAAoByB,sBAAG,EAKvBzB,KAAY0B,cAAG,EAoBf1B,KAAA2B,gBAAkB3B,KAAK4B,UAASC,UACtC,GAAK7B,KAAK8B,kBACV,UACQ9B,KAAK+B,qBACZ,CAAC,MAAOC,GACPC,QAAQD,MAAM,6BAA8BA,EAC7C,IACA,KA0OKhC,KAAYkC,cAAG,CAiRxB,CAphBS,QAAAN,CACNO,EACAC,GAEA,IAAIC,EAAyB,KAE7B,MAAO,IAAIC,KACO,OAAZD,GACFE,OAAOC,aAAaH,GAGtBA,EAAUE,OAAOE,YAAW,KAC1BN,EAAKO,MAAM1C,KAAMsC,GACjBD,EAAU,IAAI,GACbD,EAAK,CAEX,CAWO,gBAAAO,CAAiBC,GACvB,MAAO,GAAGA,KAAUC,KAAKC,SAASC,SAAS,IAAIC,MAAM,EAAG,KACzD,CAEQ,iBAAAC,GACPC,MAAMD,oBACNjD,KAAKmD,iBAAiB,SAAUnD,KAAKoD,WACrCpD,KAAKmD,iBAAiB,QAASnD,KAAKqD,iBACrC,CAEO,QAAAC,GACN,OAAsB,OAAftD,KAAKG,OAAkBH,KAAKqB,cACpC,CAEQ,MAAAkC,aACP,MAAMC,EAAU,GAAGxD,KAAKyD,qBAClBC,EAAY,GAAG1D,KAAKyD,uBACpBE,EAAW3D,KAAKyD,KAClBzD,KAAK2C,iBAAiB3C,KAAKyD,MAC3BzD,KAAK2C,iBAAiB,eACpBiB,EAAyB,QAATC,EAAA7D,KAAKyD,YAAI,IAAAI,EAAAA,EAAI,GAEnC,OAAOC,CAAI;mBACIC,EAAS/D,KAAKgE;;;uBAGVhE,KAAKiE;mBACTjE,KAAKiE;sBACFjE,KAAKY;eACZ,SAAS+C;;YAEZ3D,KAAKU,SACHoD,CAAI;;wBAEuB,QAAjBI,EAAAlE,KAAKwB,oBAAY,IAAA0C,OAAA,EAAAA,EAAE1E;;6BAEG,QAAjB2E,EAAAnE,KAAKwB,oBAAY,IAAA2C,OAAA,EAAAA,EAAE3E;;iBAGlC;YACFQ,KAAKC;;;;;qBAKI8D,EAAS,CAChB,CAAC,SAAS/D,KAAKW,SAAS,EACxB,gBAAgB;;iBAGbgD;mBACE3D,KAAKyD;0BA9BA;wBAgCAzD,KAAKY;wBACLZ,KAAKU;uBACNV,KAAKoE;2BACDpE,KAAKoE;8BACF,SAAST;qBAClB3D,KAAKqE;qBACLrE,KAAKsE;;YAEdtE,KAAKsD,WACHQ,CAAI;;8BAEY9D,KAAKY;;;;gCAIHZ,KAAKwB,aAAa/B;2BACvBO,KAAKuE;;;sBAGVC,EAAUC;;;gBAIlBX,CAAI,4BAA4BU,EAAUE;;UAE9C1E,KAAKS,QACHqD,CAAI;mBACGF;;8BAEW5D,KAAKY;2BACRZ,KAAKiE;uBACTjE,KAAKiE;;gBAEZjE,KAAKS;oBAET;UACFT,KAAK2E,wBAAwBnB,EAASE;;KAG7C,CAEO,uBAAAiB,CAAwBnB,EAAiBE,GAC/C,OAAI1D,KAAK4E,aAAgB5E,KAAKoE,YAAcpE,KAAKqB,eACxCyC,CAAI;aACJN;;;gBAGGxD,KAAKiB,YAAc;qBACdjB,KAAKiE;iBACTjE,KAAKiE;;;;uBAICjE,KAAKgB,gBAAkB;;aAEjCwD,EAAUK;WACZ7E,KAAK4E,aACR5E,KAAK8E,wBACL9E,KAAKO;cAGLP,KAAKQ,SACAsD,CAAI;aACJJ;;;qBAGQ1D,KAAKkB,kBAAoB;gBAC9BlB,KAAKmB,cAAgB;qBAChBnB,KAAKiE;iBACTjE,KAAKiE;;UAEZjE,KAAKQ;cAGJ,IACR,CAED,oBAAAwD,GACE,MAAO,CACL,eAAe,EACf,wBAAyBhE,KAAKY,mBAEjC,CAEQ,kBAAMmE,CAAaC,GAC1B9B,MAAM6B,aAAaC,GACdhF,KAAK0B,eACRuD,EAAsBC,EAAsBnC,YAC5C/C,KAAK0B,cAAe,QACd1B,KAAKmF,eACXnF,KAAKoF,cAER,CAEQ,aAAMC,CAAQL,GAwBrB,SAvBM9B,MAAMmC,QAAQL,GAGlBA,EAAkBM,IAAI,gBACtBN,EAAkBM,IAAI,kBACtBN,EAAkBM,IAAI,gBAMtBN,EAAkBM,IAAI,gBACtBN,EAAkBM,IAAI,YACtBN,EAAkBM,IAAI,WANlBtF,KAAK8B,oBAAsB9B,KAAKsB,mBAC5BtB,KAAK2B,kBAUJqD,EAAkBM,IAAI,yBAC3BtF,KAAK8B,oBAAsB9B,KAAKsB,mBAC5BtB,KAAK2B,kBAGXqD,EAAkBM,IAAI,WAAatF,KAAKsB,YAAa,CAEvD,GAAiB,OADAtB,KAAKG,OACGH,KAAK8B,kBAAmB,CAC/C9B,KAAKsB,aAAc,EACnB,IACEtB,KAAK8B,kBAAkByD,QACnBvF,KAAKwF,WACPxF,KAAKwF,SAASrF,MAAQ,GAEzB,CAAS,QACRH,KAAKsB,aAAc,CACpB,CACF,CACDtB,KAAKyF,eACN,CAECT,EAAkBM,IAAI,uBACtBtF,KAAKY,oBACLZ,KAAK8B,mBAEL9B,KAAK8B,kBAAkB4D,OAE1B,CAEO,kBAAMnB,CAAaoB,GACzBA,EAAMC,iBACND,EAAME,kBACN7F,KAAKsB,aAAc,EACnB,IACEtB,KAAKG,MAAQ,KACTH,KAAK8B,oBACP9B,KAAK8B,kBAAkByD,QACnBvF,KAAKwF,WACPxF,KAAKwF,SAASrF,MAAQ,KAG1B2F,EAAU9F,KAAM,YAAa,CAC3B+F,KAAM,GACNC,OAAQ,UAEVhG,KAAKiG,WAAU,GAAM,SACfjG,KAAKmF,eACXnF,KAAKyF,eACN,CAAS,QACRzF,KAAKsB,aAAc,CACpB,CACF,CAEO,iBAAM8D,GACZ,GAAKpF,KAAKwF,SAKV,UACQxF,KAAK+B,qBACZ,CAAC,MAAOC,GACPC,QAAQD,MAAM,8BAA+BA,EAC9C,MARCC,QAAQiE,KAAK,uCAShB,CAID,yBAAMnE,GACJ,GAAI/B,KAAKkC,aACP,OAGF,IAAKlC,KAAKwF,WAAaxF,KAAKwF,SAASW,YAInC,YAHAlE,QAAQiE,KACN,oFAKJ,MAAME,EAAUpG,KAAKwF,SACrB,IAOE,GANIxF,KAAK8B,oBACP9B,KAAK8B,kBAAkBuE,UACvBrG,KAAK8B,uBAAoBwE,QACnB,IAAIC,SAASC,GAAY/D,WAAW+D,EAAS,MAGjDxG,KAAKkC,eAAiBkE,EAAQD,YAChC,OAKF,SAFM,IAAII,SAASC,GAAYC,sBAAsBD,KAEjDxG,KAAKkC,eAAiBkE,EAAQD,YAChC,OA+BF,GA5BAnG,KAAK8B,wBAA0B4E,EAAgC,CAC7DN,QAASpG,KAAKwF,SACdmB,oBAAqB9E,UACnB,MAAM+E,QAAgB5G,KAAK6G,+BAK3B,OAJ2B,IAAvBD,EAAQE,aACV7E,QAAQiE,KAAK,qDACbU,EAAQE,YAAa,GAEhBF,CAAO,EAEhBG,sBAAwBC,IACtB,IACE,MACMC,EADYC,EAAkBlH,QACAmH,SAASC,KAC7CL,EAAsBC,EAAUC,GAC5BD,EAASK,mBACXL,EAASK,kBAAkBC,aACzB,aACA,cAGL,CAAC,MAAOtF,GACPC,QAAQiE,KAAK,qCAAsClE,EACpD,GAEHuF,gBAAiBvH,KAAKuH,gBAAgBC,KAAKxH,SAGxCA,KAAK8B,kBACR,MAAM,IAAI2F,MAAM,2CAGlBC,IACA1H,KAAKiG,WAAU,GAAO,EACvB,CAAC,MAAOjE,GACPC,QAAQD,MAAM,gCAAiCA,GAE3CA,aAAiByF,OACnBxF,QAAQD,MAAM,iBAAkBA,EAAM2F,QAEzC,CACF,CAED,4BAAMC,GACC5H,KAAK8B,wBAIJ9B,KAAK2B,kBAHTM,QAAQiE,KAAK,0DAIhB,CAED,kCAAMW,eACJ,MAAMgB,EAAYX,EAAkBlH,MAC9B8H,EAAsB9H,KAAKa,qBAAuB,MAAQ,QAChE,OAAO8F,EAAoB,CACzBzG,OAAQF,KAAKE,OACb6H,YAAY,EACZlH,6BAAsBgD,EAAA7D,KAAKa,yCAAwByF,EACnDF,QAASpG,KAAKwF,SACdwC,YAAY,EACZC,WAAYH,EACZhH,QAASd,KAAKc,QACdC,QAASf,KAAKe,QACdmH,aACAC,KAAM,OACNrB,YAAY,EACZsB,SAAUpI,KAAKqI,iBAAiBb,KAAKxH,MACrCsI,QAAStI,KAAKuI,YAAYf,KAAKxH,MAC/BwI,OAAQxI,KAAKyI,WAAWjB,KAAKxH,MAC7B0I,SAAUb,EACVc,OAAQ3I,KAAKoB,eACbhB,oBAAa8D,EAAAlE,KAAKI,gCAAekG,EACjCjG,oBAAa8D,EAAAnE,KAAKK,gCAAeiG,EACjChG,sBAAesI,EAAA5I,KAAKM,kCAAiBgG,GAExC,CAED,eAAAiB,CAAgBP,GACd,IACE,GAAIhH,KAAKqB,gBAAkBrB,KAAKG,MAAO,OACvC,GAAwB,MAApBH,KAAKI,YACP,GAAgC,iBAArBJ,KAAKI,YAA0B,CACxC,MAAMyI,EAAQ7I,KAAKI,YAAY0I,MAAM,KAAKC,IAAIC,QAC9C,GAAIH,EAAMI,QAAU,IAAMC,MAAML,EAAM,MAAQK,MAAML,EAAM,IAAK,CAC7D,MAAMM,EAAU,IAAIC,KAGpB,OAFAD,EAAQE,SAASR,EAAM,GAAIA,EAAM,GAAI,EAAG,QACxC7B,EAASsC,QAAQH,GAAS,EAE3B,CACF,MAAM,GAAInJ,KAAKI,uBAAuBgJ,KAErC,YADApC,EAASsC,QAAQtJ,KAAKI,aAAa,GAIvC,GAAyB,OAArBJ,KAAKK,aAA+C,OAAvBL,KAAKM,cAAwB,CAC5D,MAAM6I,EAAU,IAAIC,KACK,OAArBpJ,KAAKK,aACP8I,EAAQE,SAASrJ,KAAKK,aAEG,OAAvBL,KAAKM,eACP6I,EAAQI,WAAWvJ,KAAKM,eAE1B6I,EAAQK,WAAW,GACnBL,EAAQM,gBAAgB,GACxBzC,EAASsC,QAAQH,GAAS,EAC3B,CACF,CAAC,MAAOnH,GACPC,QAAQiE,KAAK,+BAAgClE,EAC9C,CACF,CAED,UAAAyG,SACOzI,KAAKyB,uBACgB,QAAxBoC,EAAA7D,KAAK8B,yBAAmB,IAAA+B,GAAAA,EAAA6B,QACxB1F,KAAKyB,sBAAuB,EAE/B,CAED,iBAAM8G,GACJvI,KAAKqB,gBAAiB,EACtBrB,KAAKiG,WAAU,GAAM,SACfjG,KAAKmF,cACZ,CAED,sBAAMkD,CACJqB,EACAC,GAEA,IAAI3J,KAAKsB,YACT,IACE,GAAIoI,EAAcT,OAAS,EAAG,CACvBjJ,KAAKqB,iBACRrB,KAAKqB,gBAAiB,GAExB,MAAMuI,EAAeF,EAAc,GAC7BP,EAAU,IAAIC,KACpBD,EAAQE,SAASO,EAAaC,YAC9BV,EAAQI,WAAWK,EAAaE,cAChCX,EAAQK,WAAW,GACnBL,EAAQM,gBAAgB,GACxBzJ,KAAKG,MAAQgJ,EACbrD,EAAU9F,KAAM,YAAa,CAC3B+F,KAAM4D,EACN3D,YAAQM,GAEX,MACCtG,KAAKG,MAAQ,KACb2F,EAAU9F,KAAM,YAAa,CAC3B+F,KAAM,GACNC,OAAQ,UAGZhG,KAAKiG,WAAU,GAAM,SACfjG,KAAKmF,eACXnF,KAAKyF,eACN,CAAC,MAAOzD,GACPC,QAAQiE,KAAK,8BAA+BlE,EAC7C,CACF,CAEO,SAAAiE,CAAU8D,EAAqBC,GACrC,KAAKhK,KAAKwF,UAAcxF,KAAKwF,oBAAoByE,kBAC/C,OAEEF,IACF/J,KAAKqB,gBAAiB,GAExB,MAAM6I,GAAWlK,KAAKwF,SAASrF,MAAMgK,OAC/BC,EAAapK,KAAKU,SACxB,IAAI2J,EAAWrK,KAAKwF,SAAS6E,SACzBC,EAAoBtK,KAAKwF,SAAS8E,kBAClCF,GAAcF,IAChBG,EAAW,IAAKA,EAAUE,cAAc,GACxCD,EACEtK,KAAKO,qBAAuBP,KAAKwB,aAAa9B,kBAE9CM,KAAK4E,cACPyF,EAAW,IAAKA,EAAUG,aAAa,GACvCF,EAAoBtK,KAAK4E,aAE3B,MAAM6F,GAAWJ,EAASE,eAAiBF,EAASG,YAC/CC,GAAYH,IACfA,EAAoBtK,KAAKwB,aAAa7B,uBAExCK,KAAK0K,WAAWC,YAAYN,EAAUC,EAAmBtK,KAAKwF,UAC9DxF,KAAKoE,YACFqG,IAAYzK,KAAKqB,gBAAuC,KAArBrB,KAAK4E,aAC3C5E,KAAK8E,uBAAyBwF,EAC1BN,GACFhK,KAAK0K,WAAWE,iBAElB5K,KAAKyF,eACN,CAEO,SAAArC,GACNpD,KAAKiG,WAAU,GAAM,EACtB,CAEO,gBAAA5C,GACNrD,KAAKG,MAAQ,KACTH,KAAK8B,mBACP9B,KAAK8B,kBAAkByD,QAEzBvF,KAAKqB,gBAAiB,EACtBrB,KAAKiG,WAAU,GAAO,EACvB,CAEO,sBAAA4E,CAAuB1K,GAC7BH,KAAKyB,qBAAuBtB,CAC7B,CAEO,cAAA2K,SACkB,QAAxBjH,EAAA7D,KAAK8B,yBAAmB,IAAA+B,GAAAA,EAAA6B,OACzB,CAEO,oBAAAzB,CAAqB0B,GAC3B1B,EAAqB0B,EAAO3F,KAAK6K,uBAAuBrD,KAAKxH,MAC9D,CAEO,qBAAAqE,GACN0G,EAAiB/K,KAAK6K,uBAAuBrD,KAAKxH,MACnD,CAEO,qBAAAsE,GACN0G,EACEhL,KAAKyB,qBACLzB,KAAK8K,eAAetD,KAAKxH,MACzBA,KAAK6K,uBAAuBrD,KAAKxH,MAEpC,CAEQ,oBAAAiL,GACPjL,KAAKkC,cAAe,EACpBgB,MAAM+H,uBACNjL,KAAKkL,oBAAoB,SAAUlL,KAAKoD,WACxCpD,KAAKkL,oBAAoB,QAASlL,KAAKqD,kBACnCrD,KAAK8B,oBACP9B,KAAK8B,kBAAkBuE,UACvBrG,KAAK8B,uBAAoBwE,EAE5B,GArpBe1G,EAAAuL,OAAS,CAACC,EAAkBlG,GAI5CmG,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACP5L,EAAA6L,UAAA,aAAA,GAIXJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACa5L,EAAA6L,UAAA,cAAA,GAI/BJ,EAAA,CADCC,EAAS,CAAEC,KAAMG,UACiB9L,EAAA6L,UAAA,aAAA,GAInCJ,EAAA,CADCC,EAAS,CAAEC,KAAMI,SAC2B/L,EAAA6L,UAAA,mBAAA,GAI7CJ,EAAA,CADCC,EAAS,CAAEC,KAAMvC,UACgBpJ,EAAA6L,UAAA,mBAAA,GAIlCJ,EAAA,CADCC,EAAS,CAAEC,KAAMvC,UACkBpJ,EAAA6L,UAAA,qBAAA,GAIpCJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACO5L,EAAA6L,UAAA,2BAAA,GAIzBJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACJ5L,EAAA6L,UAAA,gBAAA,GAIdJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACL5L,EAAA6L,UAAA,eAAA,GAIbJ,EAAA,CADCC,EAAS,CAAEC,KAAMK,WACDhM,EAAA6L,UAAA,gBAAA,GAIjBJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACN5L,EAAA6L,UAAA,YAAA,GAIZJ,EAAA,CADCC,EAAS,CAAEC,KAAMK,WACShM,EAAA6L,UAAA,0BAAA,GAM3BJ,EAAA,CADCC,EAAS,CAAEC,KAAMK,WAC0BhM,EAAA6L,UAAA,4BAAA,GAI5CJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACmB5L,EAAA6L,UAAA,eAAA,GAIrCJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACmB5L,EAAA6L,UAAA,eAAA,GAIrCJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACE5L,EAAA6L,UAAA,sBAAA,GAIpBJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACF5L,EAAA6L,UAAA,kBAAA,GAIhBJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACI5L,EAAA6L,UAAA,wBAAA,GAItBJ,EAAA,CADCC,EAAS,CAAEC,KAAMC,UACA5L,EAAA6L,UAAA,oBAAA,GAIlBJ,EAAA,CADCC,EAAS,CAAEC,KAAMK,WACKhM,EAAA6L,UAAA,sBAAA,GAOvBJ,EAAA,CADCQ,KAC8BjM,EAAA6L,UAAA,sBAAA,GAM/BJ,EAAA,CADCQ,KAC8CjM,EAAA6L,UAAA,yBAAA,GAO/CJ,EAAA,CADCS,EAAM,uBAC6BlM,EAAA6L,UAAA,gBAAA,GAMpCJ,EAAA,CADCQ,KAC2BjM,EAAA6L,UAAA,mBAAA,GAI5BJ,EAAA,CADCC,EAAS,CAAEC,KAAMG,UACgB9L,EAAA6L,UAAA,mBAAA,GAMlCJ,EAAA,CADCQ,KACkCjM,EAAA6L,UAAA,oBAAA,GAvHxB7L,EAAUyL,EAAA,CADtBU,EAAc,oBACFnM"}
|
|
1
|
+
{"version":3,"file":"timepicker.js","sources":["../../../../src/components/reusable/timepicker/timepicker.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } 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 preventFlatpickrOpen,\n handleInputClick,\n handleInputFocus,\n setCalendarAttributes,\n loadLocale,\n emitValue,\n hideEmptyYear,\n getModalContainer,\n} from '../../../common/helpers/flatpickr';\n\nimport flatpickr from 'flatpickr';\nimport { BaseOptions } from 'flatpickr/dist/types/options';\n\nimport TimepickerStyles from './timepicker.scss';\nimport ShidokaFlatpickrTheme from '../../../common/scss/shidoka-flatpickr-theme.scss';\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/20/close-simple.svg';\n\ntype SupportedLocale = (typeof langsArray)[number];\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\n/**\n * Timepicker: uses Flatpickr library,time picker implementation -- `https://flatpickr.js.org/examples/#time-picker`\n * @fires on-change - Captures the input event and emits the selected value and original event details.\n * @slot tooltip - Slot for tooltip.\n */\n@customElement('kyn-time-picker')\nexport class TimePicker extends FormMixin(LitElement) {\n static override styles = [TimepickerStyles, ShidokaFlatpickrTheme];\n\n /** Label text. */\n @property({ type: String })\n label = '';\n\n /** Sets desired locale and, if supported, dynamically loads language lib */\n @property({ type: String })\n locale: SupportedLocale | string = 'en';\n\n /** Sets date/time value. */\n @property({ type: Object })\n override value: Date | null = null;\n\n /** Sets the initial selected date(s). For multiple mode, provide an array of date strings matching dateFormat. */\n @property({ type: Array })\n defaultDate: string | string[] | null = null;\n\n /** Sets initial value of the hour element. */\n @property({ type: Number })\n defaultHour: number | null = null;\n\n /** Sets initial value of the minute element. */\n @property({ type: Number })\n defaultMinute: number | null = null;\n\n /** Sets default error message. */\n @property({ type: String })\n defaultErrorMessage = '';\n\n /** Sets validation warning messaging. */\n @property({ type: String })\n warnText = '';\n\n /** Sets caption to be displayed under primary date picker elements. */\n @property({ type: String })\n caption = '';\n\n /** Sets datepicker form input value to required/required. */\n @property({ type: Boolean })\n required = false;\n\n /** Input size. \"sm\", \"md\", or \"lg\". */\n @property({ type: String })\n size = 'md';\n\n /** Sets entire datepicker form element to enabled/disabled. */\n @property({ type: Boolean })\n timepickerDisabled = false;\n\n /** Sets 24 hour formatting true/false.\n * Defaults to 12H for all `en-*` locales and 24H for all other locales.\n */\n @property({ type: Boolean })\n twentyFourHourFormat: boolean | null = null;\n\n /** Sets lower boundary of datepicker date selection. */\n @property({ type: String })\n minTime: string | number | Date = '';\n\n /** Sets upper boundary of datepicker date selection. */\n @property({ type: String })\n maxTime: string | number | Date = '';\n\n /** Sets aria label attribute for error message. */\n @property({ type: String })\n errorAriaLabel = '';\n\n /** Sets title attribute for error message. */\n @property({ type: String })\n errorTitle = '';\n\n /** Sets aria label attribute for warning message. */\n @property({ type: String })\n warningAriaLabel = '';\n\n /** Sets title attribute for warning message. */\n @property({ type: String })\n warningTitle = '';\n\n /** Sets whether the Flatpickr calendar UI should use static positioning. */\n @property({ type: Boolean })\n staticPosition = false;\n\n /**\n * Sets whether user has interacted with timepicker for error handling.\n * @internal\n */\n @state()\n private _hasInteracted = false;\n\n /** Flatpickr instantiation.\n * @internal\n */\n @state()\n private flatpickrInstance?: flatpickr.Instance;\n\n /**\n * Queries the anchor DOM element.\n * @ignore\n */\n @query('input.input-custom')\n private _inputEl?: HTMLInputElement;\n\n /** Tracks if we're in a clear operation to prevent duplicate events\n * @internal\n */\n @state()\n private _isClearing = false;\n\n /** Customizable text strings. */\n @property({ type: Object })\n textStrings = _defaultTextStrings;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n _textStrings = _defaultTextStrings;\n\n /** Control flag to determine if Flatpickr should open\n * @internal\n */\n private _shouldFlatpickrOpen = true;\n\n /** Track initialization state\n * @internal\n */\n private _initialized = false;\n\n private debounce<T extends (...args: any[]) => any>(\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 func.apply(this, args);\n timeout = null;\n }, wait);\n };\n }\n\n private debouncedUpdate = this.debounce(async () => {\n if (!this.flatpickrInstance) 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 override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('change', this._onChange);\n this.addEventListener('reset', this._handleFormReset);\n }\n\n private hasValue(): boolean {\n return this.value !== null && this._hasInteracted;\n }\n\n override render() {\n const errorId = `${this.name}-error-message`;\n const warningId = `${this.name}-warning-message`;\n const anchorId = this.name\n ? this.generateRandomId(this.name)\n : this.generateRandomId('time-picker');\n const descriptionId = this.name ?? '';\n const placeholder = '—— : ——';\n return html`\n <div class=${classMap(this.getTimepickerClasses())}>\n <div\n class=\"label-text\"\n @mousedown=${this.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n ?disabled=${this.timepickerDisabled}\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 >*</abbr\n >`\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 })}\"\n type=\"text\"\n id=${anchorId}\n name=${this.name}\n placeholder=${placeholder}\n ?disabled=${this.timepickerDisabled}\n ?required=${this.required}\n ?invalid=${this._isInvalid}\n aria-invalid=${this._isInvalid}\n aria-labelledby=${`label-${anchorId}`}\n @click=${this.handleInputClickEvent}\n @focus=${this.handleInputFocusEvent}\n />\n ${this.hasValue()\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 class=\"input-icon\">${unsafeSVG(clockIcon)}</span>`}\n </div>\n ${this.caption\n ? html`<div\n id=${descriptionId}\n class=\"caption\"\n aria-disabled=${this.timepickerDisabled}\n @mousedown=${this.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\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.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.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n >\n <span\n class=\"error-icon\"\n aria-label=${this.errorAriaLabel || 'Error message icon'}\n role=\"button\"\n >${unsafeSVG(errorIcon)}</span\n >${this.invalidText ||\n this._internalValidationMsg ||\n this.defaultErrorMessage}\n </div>`;\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.preventFlatpickrOpen}\n @click=${this.preventFlatpickrOpen}\n >\n ${this.warnText}\n </div>`;\n }\n return null;\n }\n\n getTimepickerClasses() {\n return {\n 'time-picker': true,\n 'time-picker__disabled': this.timepickerDisabled,\n };\n }\n\n override async firstUpdated(changedProperties: PropertyValues) {\n super.firstUpdated(changedProperties);\n if (!this._initialized) {\n injectFlatpickrStyles(ShidokaFlatpickrTheme.toString());\n this._initialized = true;\n await this.updateComplete;\n this.setupAnchor();\n }\n }\n\n override async updated(changedProperties: PropertyValues) {\n await super.updated(changedProperties);\n\n if (\n changedProperties.has('defaultHour') ||\n changedProperties.has('defaultMinute') ||\n changedProperties.has('defaultDate')\n ) {\n if (this.flatpickrInstance && !this._isClearing) {\n await this.debouncedUpdate();\n }\n } else if (\n changedProperties.has('invalidText') ||\n changedProperties.has('minTime') ||\n changedProperties.has('maxTime')\n ) {\n if (this.flatpickrInstance && !this._isClearing) {\n await this.debouncedUpdate();\n }\n } else if (changedProperties.has('twentyFourHourFormat')) {\n if (this.flatpickrInstance && !this._isClearing) {\n await this.debouncedUpdate();\n }\n }\n if (changedProperties.has('value') && !this._isClearing) {\n const newValue = this.value;\n if (newValue === null && this.flatpickrInstance) {\n this._isClearing = true;\n try {\n this.flatpickrInstance.clear();\n if (this._inputEl) {\n this._inputEl.value = '';\n }\n } finally {\n this._isClearing = false;\n }\n }\n this.requestUpdate();\n }\n if (\n changedProperties.has('timepickerDisabled') &&\n this.timepickerDisabled &&\n this.flatpickrInstance\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 try {\n this.value = null;\n if (this.flatpickrInstance) {\n this.flatpickrInstance.clear();\n if (this._inputEl) {\n this._inputEl.value = '';\n this._inputEl.setAttribute(\n 'aria-label',\n this._textStrings.noTimeSelected\n );\n }\n }\n emitValue(this, 'on-change', {\n time: '',\n source: 'clear',\n });\n this._validate(true, false);\n await this.updateComplete;\n await this.initializeFlatpickr();\n this.requestUpdate();\n } finally {\n this._isClearing = false;\n }\n }\n\n private async setupAnchor() {\n if (!this._inputEl) {\n console.warn('Input element not found during setup');\n return;\n }\n\n try {\n await this.initializeFlatpickr();\n } catch (error) {\n console.error('Error setting up flatpickr:', error);\n }\n }\n\n private _isDestroyed = false;\n\n async initializeFlatpickr(): Promise<void> {\n if (this._isDestroyed) {\n return;\n }\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\n const inputEl = this._inputEl;\n try {\n if (this.flatpickrInstance) {\n this.flatpickrInstance.destroy();\n this.flatpickrInstance = undefined;\n await new Promise((resolve) => setTimeout(resolve, 0));\n }\n\n if (this._isDestroyed || !inputEl.isConnected) {\n return;\n }\n\n await new Promise((resolve) => requestAnimationFrame(resolve));\n\n if (this._isDestroyed || !inputEl.isConnected) {\n return;\n }\n\n this.flatpickrInstance = await initializeSingleAnchorFlatpickr({\n inputEl: this._inputEl,\n getFlatpickrOptions: async () => {\n const options = await this.getComponentFlatpickrOptions();\n if (options.noCalendar === false) {\n console.warn('Time picker requires noCalendar option to be true');\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 instance.calendarContainer.setAttribute(\n 'aria-label',\n 'Time picker'\n );\n }\n } catch (error) {\n console.warn('Error setting calendar attributes:', error);\n }\n },\n setInitialDates: this.setInitialDates.bind(this),\n });\n\n if (!this.flatpickrInstance) {\n throw new Error('Failed to initialize Flatpickr instance');\n }\n\n hideEmptyYear();\n this._validate(false, false);\n } catch (error) {\n console.error('Error initializing Flatpickr:', error);\n\n if (error instanceof Error) {\n console.error('Error details:', error.message);\n }\n }\n }\n\n async updateFlatpickrOptions(): Promise<void> {\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 const container = getModalContainer(this);\n const effectiveDateFormat = this.twentyFourHourFormat ? 'H:i' : 'h:i K';\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 appendTo: container,\n static: this.staticPosition,\n defaultDate: this.defaultDate ?? undefined,\n defaultHour: this.defaultHour ?? undefined,\n defaultMinute: this.defaultMinute ?? undefined,\n });\n }\n\n setInitialDates(instance: flatpickr.Instance): void {\n try {\n if (this._hasInteracted || this.value) return;\n if (this.defaultDate != null) {\n if (typeof this.defaultDate === 'string') {\n const parts = this.defaultDate.split(':').map(Number);\n if (parts.length >= 2 && !isNaN(parts[0]) && !isNaN(parts[1])) {\n const newDate = new Date();\n newDate.setHours(parts[0], parts[1], 0, 0);\n instance.setDate(newDate, false);\n return;\n }\n } else if (this.defaultDate instanceof Date) {\n instance.setDate(this.defaultDate, false);\n return;\n }\n }\n if (this.defaultHour !== null || this.defaultMinute !== null) {\n const newDate = new Date();\n if (this.defaultHour !== null) {\n newDate.setHours(this.defaultHour);\n }\n if (this.defaultMinute !== null) {\n newDate.setMinutes(this.defaultMinute);\n }\n newDate.setSeconds(0);\n newDate.setMilliseconds(0);\n instance.setDate(newDate, false);\n }\n } catch (error) {\n console.warn('Error setting initial dates:', error);\n }\n }\n\n handleOpen(): void {\n if (!this._shouldFlatpickrOpen) {\n this.flatpickrInstance?.close();\n this._shouldFlatpickrOpen = true;\n }\n }\n\n async handleClose(): Promise<void> {\n this._hasInteracted = true;\n this._validate(true, false);\n await this.updateComplete;\n }\n\n async handleTimeChange(\n selectedDates: Date[],\n dateStr: string\n ): Promise<void> {\n if (this._isClearing) return;\n try {\n if (selectedDates.length > 0) {\n if (!this._hasInteracted) {\n this._hasInteracted = true;\n }\n const selectedTime = selectedDates[0];\n const newDate = new Date();\n newDate.setHours(selectedTime.getHours());\n newDate.setMinutes(selectedTime.getMinutes());\n newDate.setSeconds(0);\n newDate.setMilliseconds(0);\n this.value = newDate;\n emitValue(this, 'on-change', {\n time: dateStr,\n source: undefined,\n });\n } else {\n this.value = null;\n emitValue(this, 'on-change', {\n time: '',\n source: 'clear',\n });\n }\n this._validate(true, false);\n await this.updateComplete;\n this.requestUpdate();\n } catch (error) {\n console.warn('Error handling time change:', error);\n }\n }\n\n private _validate(interacted: boolean, report: boolean): void {\n if (!this._inputEl || !(this._inputEl instanceof HTMLInputElement)) {\n return;\n }\n if (interacted) {\n this._hasInteracted = true;\n }\n const isEmpty = !this._inputEl.value.trim();\n const isRequired = this.required;\n let validity = this._inputEl.validity;\n let validationMessage = this._inputEl.validationMessage;\n if (isRequired && isEmpty) {\n validity = { ...validity, valueMissing: true };\n validationMessage =\n this.defaultErrorMessage || this._textStrings.pleaseSelectDate;\n }\n if (this.invalidText) {\n validity = { ...validity, customError: true };\n validationMessage = this.invalidText;\n }\n const isValid = !validity.valueMissing && !validity.customError;\n if (!isValid && !validationMessage) {\n validationMessage = this._textStrings.pleaseSelectValidDate;\n }\n this._internals.setValidity(validity, validationMessage, this._inputEl);\n this._isInvalid =\n !isValid && (this._hasInteracted || this.invalidText !== '');\n this._internalValidationMsg = validationMessage;\n if (report) {\n this._internals.reportValidity();\n }\n this.requestUpdate();\n }\n\n private _onChange() {\n this._validate(true, false);\n }\n\n private _handleFormReset() {\n this.value = null;\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 preventFlatpickrOpen(event: Event) {\n preventFlatpickrOpen(event, this.setShouldFlatpickrOpen.bind(this));\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(): void {\n this._isDestroyed = true;\n super.disconnectedCallback();\n this.removeEventListener('change', this._onChange);\n this.removeEventListener('reset', this._handleFormReset);\n if (this.flatpickrInstance) {\n this.flatpickrInstance.destroy();\n this.flatpickrInstance = undefined;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-time-picker': TimePicker;\n }\n}\n"],"names":["_defaultTextStrings","requiredText","clearAll","pleaseSelectDate","noTimeSelected","pleaseSelectValidDate","TimePicker","FormMixin","LitElement","constructor","this","label","locale","value","defaultDate","defaultHour","defaultMinute","defaultErrorMessage","warnText","caption","required","size","timepickerDisabled","twentyFourHourFormat","minTime","maxTime","errorAriaLabel","errorTitle","warningAriaLabel","warningTitle","staticPosition","_hasInteracted","_isClearing","textStrings","_textStrings","_shouldFlatpickrOpen","_initialized","debouncedUpdate","debounce","async","flatpickrInstance","initializeFlatpickr","error","console","_isDestroyed","func","wait","timeout","args","window","clearTimeout","setTimeout","apply","generateRandomId","prefix","Math","random","toString","slice","connectedCallback","super","addEventListener","_onChange","_handleFormReset","hasValue","render","errorId","name","warningId","anchorId","descriptionId","_a","html","classMap","getTimepickerClasses","preventFlatpickrOpen","_b","_c","_isInvalid","handleInputClickEvent","handleInputFocusEvent","_handleClear","unsafeSVG","clearIcon","clockIcon","renderValidationMessage","invalidText","errorIcon","_internalValidationMsg","firstUpdated","changedProperties","injectFlatpickrStyles","ShidokaFlatpickrTheme","updateComplete","setupAnchor","updated","has","clear","_inputEl","requestUpdate","close","event","preventDefault","stopPropagation","setAttribute","emitValue","time","source","_validate","warn","isConnected","inputEl","destroy","undefined","Promise","resolve","requestAnimationFrame","initializeSingleAnchorFlatpickr","getFlatpickrOptions","options","getComponentFlatpickrOptions","noCalendar","setCalendarAttributes","instance","modalDetected","getModalContainer","document","body","calendarContainer","setInitialDates","bind","Error","hideEmptyYear","message","updateFlatpickrOptions","container","effectiveDateFormat","enableTime","allowInput","dateFormat","loadLocale","mode","onChange","handleTimeChange","onClose","handleClose","onOpen","handleOpen","appendTo","static","_d","parts","split","map","Number","length","isNaN","newDate","Date","setHours","setDate","setMinutes","setSeconds","setMilliseconds","selectedDates","dateStr","selectedTime","getHours","getMinutes","interacted","report","HTMLInputElement","isEmpty","trim","isRequired","validity","validationMessage","valueMissing","customError","isValid","_internals","setValidity","reportValidity","setShouldFlatpickrOpen","closeFlatpickr","handleInputClick","handleInputFocus","disconnectedCallback","removeEventListener","styles","TimepickerStyles","__decorate","property","type","String","prototype","Object","Array","Boolean","state","query","customElement"],"mappings":"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"}
|