@mhmo91/schmancy 0.3.8 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"date-range-dO1-f42P.js","sources":["../../../../.yarn/berry/cache/dayjs-npm-1.11.13-d478bb9479-10c0.zip/node_modules/dayjs/dayjs.min.js","../../../../.yarn/berry/cache/dayjs-npm-1.11.13-d478bb9479-10c0.zip/node_modules/dayjs/plugin/quarterOfYear.js","../src/date-range/date-utils.ts","../src/date-range/date-range.ts"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));","import dayjs from 'dayjs'\n\ntype DateFormat = 'YYYY-MM-DD' | 'YYYY-MM-DDTHH:mm'\n\n/**\n * Ensures that a date string conforms to a specific format.\n * If the date is already in the correct format, it returns the original string.\n * If the date is in a different format, it attempts to convert it to the specified format.\n * If the date is invalid or cannot be converted, it returns null.\n *\n * @param dateString The date string to validate and format.\n * @param expectedFormat The expected date format (e.g., 'YYYY-MM-DD', 'YYYY-MM-DDTHH:mm').\n * @returns The formatted date string, or null if the date is invalid.\n */\nfunction enforceDateFormat(dateString: string | undefined, expectedFormat: DateFormat): string | null {\n\tif (!dateString) {\n\t\treturn null // Or handle the undefined case differently if needed\n\t}\n\n\tconst parsedDate = dayjs(dateString)\n\n\tif (!parsedDate.isValid()) {\n\t\treturn null // Date is invalid\n\t}\n\n\treturn parsedDate.format(expectedFormat)\n}\n\n/**\n * Validates if the initial date range values are in the expected format.\n *\n * @param dateFrom The dateFrom value to validate.\n * @param dateTo The dateTo value to validate.\n * @param expectedFormat The expected date format.\n * @returns An object indicating whether each date is valid, and the formatted date or null if invalid.\n */\nfunction validateInitialDateRange(\n\tdateFrom: string | undefined,\n\tdateTo: string | undefined,\n\texpectedFormat: DateFormat,\n): {\n\tdateFrom: string | null\n\tdateTo: string | null\n\tisValid: boolean\n} {\n\tconst formattedDateFrom = enforceDateFormat(dateFrom, expectedFormat)\n\tconst formattedDateTo = enforceDateFormat(dateTo, expectedFormat)\n\n\tconst isValid = formattedDateFrom !== null && formattedDateTo !== null\n\n\treturn {\n\t\tdateFrom: formattedDateFrom,\n\t\tdateTo: formattedDateTo,\n\t\tisValid,\n\t}\n}\n\nexport { validateInitialDateRange }\n","import { $LitElement } from '@mixins/index'\nimport dayjs from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { html, PropertyValues } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { debounceTime, fromEvent, takeUntil, timer } from 'rxjs'\nimport { $dialog } from '../dialog/dialog-service'\nimport { validateInitialDateRange } from './date-utils'\n\n// Add quarter plugin to dayjs\ndayjs.extend(quarterOfYear)\n\nexport type SchmancyDateRangeChangeEvent = CustomEvent<{\n\tdateFrom: string\n\tdateTo: string\n}>\n\n// Custom type to include 'quarter' as a valid unit\ntype ExtendedTimeUnit = dayjs.OpUnitType | 'quarter'\n\n/**\n * A date range selector that supports presets and manual date input.\n *\n * @element schmancy-date-range\n * @fires change - Fired when the date range changes with dateFrom and dateTo values\n */\n@customElement('schmancy-date-range')\nexport class SchmancyDateRange extends $LitElement() {\n\t// Core properties\n\t@property({ type: String }) type: 'date' | 'datetime-local' = 'date'\n\t@property({ type: Object }) dateFrom: { label: string; value: string } = { label: 'From', value: '' }\n\t@property({ type: Object }) dateTo: { label: string; value: string } = { label: 'To', value: '' }\n\t@property({ type: String }) minDate?: string\n\t@property({ type: String }) maxDate?: string\n\n\t// Enhanced functionality\n\t@property({ type: Array }) customPresets: Array<{\n\t\tlabel: string\n\t\tdateFrom: string\n\t\tdateTo: string\n\t}> = []\n\t@property({ type: String }) format?: string\n\t@property({ type: Boolean }) disabled = false\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = 'Select date range'\n\t@property({ type: Boolean }) clearable = true\n\t@property({ type: Boolean }) allowDirectInput = true\n\n\t// Internal states\n\t@state() private isOpen = false\n\t@state() private selectedDateRange: string = ''\n\t@state() private activePreset: string | null = null\n\t@state() private announceMessage: string = ''\n\t@state() private isMobile = false\n\t@state() private isTyping = false\n\t@state() private typedValue = ''\n\n\t// Default presets\n\tprivate presetRanges: Array<{\n\t\tlabel: string\n\t\trange: { dateFrom: string; dateTo: string }\n\t\tstep: ExtendedTimeUnit\n\t}> = []\n\n\t// Categorized presets\n\tprivate presetCategories: Array<{\n\t\tname: string\n\t\tpresets: Array<{\n\t\t\tlabel: string\n\t\t\trange: { dateFrom: string; dateTo: string }\n\t\t\tstep: ExtendedTimeUnit\n\t\t}>\n\t}> = []\n\n\t// DOM references\n\t@query('.date-range-input') private inputRef!: HTMLInputElement\n\t\n\t// Memoization cache\n\tprivate memoizedPresets = new Map<string, typeof this.presetCategories>()\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.initPresetRanges()\n\t\tthis.checkMobileView()\n\n\t\t// Validate initial date range\n\t\tconst dateFormat = this.getDateFormat() as 'YYYY-MM-DD' | 'YYYY-MM-DDTHH:mm'\n\t\tconst validatedRange = validateInitialDateRange(this.dateFrom.value, this.dateTo.value, dateFormat)\n\n\t\tif (validatedRange.isValid) {\n\t\t\tthis.dateFrom.value = validatedRange.dateFrom!\n\t\t\tthis.dateTo.value = validatedRange.dateTo!\n\t\t\tthis.updateSelectedDateRange()\n\t\t} else {\n\t\t\tconst now = dayjs().format(dateFormat)\n\t\t\tthis.dateFrom.value = now\n\t\t\tthis.dateTo.value = now\n\t\t\tthis.updateSelectedDateRange()\n\t\t}\n\n\t\t// Set up global event handlers using RxJS\n\t\tthis.setupEventHandlers()\n\t}\n\n\tprivate setupEventHandlers() {\n\t\t// Handle keyboard navigation\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tthis.handleKeyboardNavigation(event)\n\t\t\t})\n\n\t\t// Handle window resize with debouncing\n\t\tfromEvent(window, 'resize')\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(150),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.checkMobileView()\n\t\t\t})\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tupdated(changedProps: PropertyValues) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (\n\t\t\t(changedProps.has('dateFrom') || changedProps.has('dateTo')) &&\n\t\t\t(this.dateFrom?.value !== undefined || this.dateTo?.value !== undefined)\n\t\t) {\n\t\t\tthis.updateSelectedDateRange()\n\t\t}\n\t}\n\n\tprivate initPresetRanges() {\n\t\tconst format = this.getDateFormat()\n\t\tconst cacheKey = `${this.type}-${format}-${JSON.stringify(this.customPresets)}`\n\t\t\n\t\t// Check memoization cache\n\t\tif (this.memoizedPresets.has(cacheKey)) {\n\t\t\tconst cached = this.memoizedPresets.get(cacheKey)!\n\t\t\tthis.presetCategories = cached\n\t\t\tthis.presetRanges = []\n\t\t\tcached.forEach(category => {\n\t\t\t\tthis.presetRanges.push(...category.presets)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Define categories with their presets\n\t\tthis.presetCategories = [\n\t\t\t{\n\t\t\t\tname: 'Days',\n\t\t\t\tpresets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Today',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().startOf('day').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Yesterday',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(1, 'days').startOf('day').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().subtract(1, 'days').endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 7 Days',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(6, 'days').startOf('day').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 14 Days',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(13, 'days').startOf('day').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 30 Days',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(29, 'days').startOf('day').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 60 Days',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(59, 'days').startOf('day').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 90 Days',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(89, 'days').startOf('day').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Weeks',\n\t\t\t\tpresets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'This Week',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().startOf('week').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('week').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'week',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last Week',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(1, 'weeks').startOf('week').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().subtract(1, 'weeks').endOf('week').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'week',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 2 Weeks',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(2, 'weeks').startOf('week').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'week',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 4 Weeks',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(4, 'weeks').startOf('week').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'week',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Months',\n\t\t\t\tpresets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'This Month',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().startOf('month').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('month').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'month',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last Month',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(1, 'month').startOf('month').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().subtract(1, 'month').endOf('month').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'month',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 3 Months',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(3, 'months').startOf('month').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'month',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 6 Months',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(6, 'months').startOf('month').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'month',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Quarters',\n\t\t\t\tpresets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'This Quarter',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().startOf('quarter').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('quarter').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'quarter',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last Quarter',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(1, 'quarter').startOf('quarter').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().subtract(1, 'quarter').endOf('quarter').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'quarter',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 2 Quarters',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(2, 'quarters').startOf('quarter').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'quarter',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 4 Quarters',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(4, 'quarters').startOf('quarter').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'quarter',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Years',\n\t\t\t\tpresets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'This Year',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().startOf('year').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('year').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'year',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last Year',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(1, 'year').startOf('year').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().subtract(1, 'year').endOf('year').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'year',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Year to Date',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().startOf('year').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t]\n\n\t\t// For datetime-local type, add time-specific presets\n\t\tif (this.type === 'datetime-local') {\n\t\t\tthis.presetCategories.unshift({\n\t\t\t\tname: 'Hours',\n\t\t\t\tpresets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 24 Hours',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(24, 'hours').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'hour',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 12 Hours',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(12, 'hours').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'hour',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})\n\t\t}\n\n\t\t// Flatten presets for other methods that expect a flat list\n\t\tthis.presetRanges = []\n\t\tthis.presetCategories.forEach(category => {\n\t\t\tthis.presetRanges.push(...category.presets)\n\t\t})\n\n\t\t// Add custom presets if provided\n\t\tif (this.customPresets && this.customPresets.length > 0) {\n\t\t\tconst customCategory = {\n\t\t\t\tname: 'Custom',\n\t\t\t\tpresets: this.customPresets.map(preset => ({\n\t\t\t\t\tlabel: preset.label,\n\t\t\t\t\trange: {\n\t\t\t\t\t\tdateFrom: preset.dateFrom,\n\t\t\t\t\t\tdateTo: preset.dateTo,\n\t\t\t\t\t},\n\t\t\t\t\tstep: 'day' as ExtendedTimeUnit,\n\t\t\t\t})),\n\t\t\t}\n\n\t\t\tthis.presetCategories.push(customCategory)\n\t\t\tthis.presetRanges.push(...customCategory.presets)\n\t\t}\n\t\t\n\t\t// Cache the result\n\t\tthis.memoizedPresets.set(cacheKey, [...this.presetCategories])\n\t}\n\n\tprivate getDateFormat(): string {\n\t\treturn this.format || (this.type === 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DDTHH:mm')\n\t}\n\n\t/**\n\t * Creates a concise display format for the selected date range\n\t */\n\tprivate updateSelectedDateRange() {\n\t\t// Find matching preset\n\t\tconst preset = this.presetRanges.find(\n\t\t\tp => p.range.dateFrom === this.dateFrom.value && p.range.dateTo === this.dateTo.value,\n\t\t)\n\n\t\tif (preset) {\n\t\t\t// If matches a preset, just use the preset name\n\t\t\tthis.selectedDateRange = preset.label\n\t\t\tthis.activePreset = preset.label\n\t\t\treturn\n\t\t}\n\n\t\t// If we didn't find a preset match, check if we should update the active preset\n\t\tthis.checkAndUpdateActivePreset(this.dateFrom.value, this.dateTo.value)\n\n\t\t// Custom date range - create concise format\n\t\tthis.activePreset = null\n\n\t\tif (!this.dateFrom.value || !this.dateTo.value) {\n\t\t\tthis.selectedDateRange = this.placeholder\n\t\t\treturn\n\t\t}\n\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) {\n\t\t\tthis.selectedDateRange = this.placeholder\n\t\t\treturn\n\t\t}\n\n\t\t// Format times if needed (for datetime-local)\n\t\tconst fromTime = this.type === 'datetime-local' ? fromDate.format(' h:mm A') : ''\n\t\tconst toTime = this.type === 'datetime-local' ? toDate.format(' h:mm A') : ''\n\n\t\t// Check if same day\n\t\tif (fromDate.isSame(toDate, 'day')) {\n\t\t\tthis.selectedDateRange = `${fromDate.format('MMM D, YYYY')}${fromTime}`\n\t\t\treturn\n\t\t}\n\n\t\t// Check if same month and year\n\t\tif (fromDate.isSame(toDate, 'month') && fromDate.isSame(toDate, 'year')) {\n\t\t\tthis.selectedDateRange = `${fromDate.format('MMM D')}-${toDate.format('D, YYYY')}${toTime}`\n\t\t\treturn\n\t\t}\n\n\t\t// Check if same year\n\t\tif (fromDate.isSame(toDate, 'year')) {\n\t\t\tthis.selectedDateRange = `${fromDate.format('MMM D')} - ${toDate.format('MMM D, YYYY')}${toTime}`\n\t\t\treturn\n\t\t}\n\n\t\t// Different years\n\t\tthis.selectedDateRange = `${fromDate.format('MMM D, YYYY')}${fromTime} - ${toDate.format('MMM D, YYYY')}${toTime}`\n\t}\n\n\tprivate setDateRange(dateFrom: string, dateTo: string) {\n\t\tthis.dateFrom.value = dateFrom\n\t\tthis.dateTo.value = dateTo\n\t\tthis.updateSelectedDateRange()\n\n\t\t// Announce change to screen readers\n\t\tthis.announceToScreenReader(`Date range updated: ${this.selectedDateRange}`)\n\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<{ dateFrom: string; dateTo: string }>('change', {\n\t\t\t\tdetail: { dateFrom, dateTo },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate handlePresetSelection(preset: { label: string; range: { dateFrom: string; dateTo: string } }, e: Event) {\n\t\te.stopPropagation()\n\t\tthis.activePreset = preset.label\n\t\tthis.setDateRange(preset.range.dateFrom, preset.range.dateTo)\n\t\t$dialog.dismiss()\n\t}\n\n\n\n\tprivate toggleDropdown(e: Event) {\n\t\te.stopPropagation()\n\t\tif (this.disabled) return\n\n\t\tif (this.isOpen) {\n\t\t\tthis.closeDropdown()\n\t\t} else {\n\t\t\tthis.openDropdown()\n\t\t}\n\t}\n\n\tprivate openDropdown() {\n\t\tif (this.disabled) return\n\t\t\n\t\tthis.isOpen = true\n\t\t\n\t\t// Create dialog content\n\t\tconst dialogContent = this.createDialogContent()\n\t\t\n\t\t// Use the dialog service - it will automatically find the nearest schmancy-theme\n\t\t$dialog.component(dialogContent, {\n\t\t\ttitle: 'Select Date Range',\n\t\t\twidth: this.isMobile ? '100vw' : 'fit-content',\n\t\t\thideActions: true\n\t\t}).then(() => {\n\t\t\tthis.isOpen = false\n\t\t})\n\t}\n\n\tprivate closeDropdown() {\n\t\t$dialog.dismiss()\n\t\tthis.isOpen = false\n\t}\n\n\t/**\n\t * Helper method to safely add/subtract quarter values\n\t */\n\tprivate adjustQuarter(date: dayjs.Dayjs, amount: number, direction: 1 | -1): dayjs.Dayjs {\n\t\t// Get current quarter (1-4)\n\t\tconst currentQuarter = date.quarter()\n\n\t\t// Calculate new quarter\n\t\tlet newQuarter = currentQuarter + direction * amount\n\t\tlet yearAdjustment = 0\n\n\t\t// Handle year boundaries\n\t\twhile (newQuarter > 4) {\n\t\t\tnewQuarter -= 4\n\t\t\tyearAdjustment += 1\n\t\t}\n\n\t\twhile (newQuarter < 1) {\n\t\t\tnewQuarter += 4\n\t\t\tyearAdjustment -= 1\n\t\t}\n\n\t\t// Adjust year if needed\n\t\tconst adjustedDate = date.add(yearAdjustment, 'year')\n\n\t\t// Set to the start of the new quarter\n\t\tconst newDate = adjustedDate.month((newQuarter - 1) * 3)\n\n\t\t// Maintain the same day of month if possible\n\t\tconst daysInMonth = newDate.daysInMonth()\n\t\tconst targetDay = Math.min(date.date(), daysInMonth)\n\n\t\treturn newDate.date(targetDay)\n\t}\n\n\t/**\n\t * Shifts the date range based on its type (preset or custom)\n\t * Enhanced to properly handle various time units and preserve date patterns\n\t */\n\tprivate shiftDateRange(direction: number, e: Event) {\n\t\te.stopPropagation()\n\n\t\tif (!this.dateFrom.value || !this.dateTo.value) return\n\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) return\n\n\t\tconst format = this.getDateFormat()\n\n\t\t// Convert direction to a type that our helper methods can use\n\t\tconst dir = direction > 0 ? 1 : -1\n\n\t\tlet newFromDate: dayjs.Dayjs\n\t\tlet newToDate: dayjs.Dayjs\n\n\t\t// For preset ranges, use their specific step unit\n\t\tconst activePreset = this.presetRanges.find(p => p.label === this.activePreset)\n\n\t\t// Detect if the date range represents full time periods\n\t\tconst isFullMonth = fromDate.date() === 1 && toDate.isSame(fromDate.endOf('month'), 'day')\n\t\tconst isFullQuarter =\n\t\t\tfromDate.isSame(fromDate.startOf('quarter'), 'day') && toDate.isSame(toDate.endOf('quarter'), 'day')\n\t\tconst isFullYear = fromDate.isSame(fromDate.startOf('year'), 'day') && toDate.isSame(toDate.endOf('year'), 'day')\n\t\tconst isFullWeek = fromDate.day() === 0 && toDate.day() === 6 && toDate.diff(fromDate, 'days') === 6\n\n\t\t// Determine shift unit and amount\n\t\tlet unit: ExtendedTimeUnit = 'day'\n\t\tlet amount = 1\n\n\t\tif (activePreset) {\n\t\t\t// Use the preset's specific unit (day, week, month, quarter, year)\n\t\t\tunit = activePreset.step\n\t\t\tamount = 1 // For presets, we shift by one unit\n\t\t} else {\n\t\t\t// For custom ranges, calculate the appropriate step size\n\t\t\tconst rangeDurationInDays = toDate.diff(fromDate, 'day')\n\n\t\t\t// For very long ranges, use years\n\t\t\tif (rangeDurationInDays >= 360) {\n\t\t\t\tunit = 'year'\n\t\t\t\tamount = Math.round(rangeDurationInDays / 365)\n\t\t\t}\n\t\t\t// For long ranges, use quarters\n\t\t\telse if (rangeDurationInDays >= 90) {\n\t\t\t\tunit = 'quarter'\n\t\t\t\tamount = Math.round(rangeDurationInDays / 90)\n\t\t\t}\n\t\t\t// For medium-long ranges, use months\n\t\t\telse if (rangeDurationInDays >= 30) {\n\t\t\t\tunit = 'month'\n\t\t\t\tamount = Math.round(rangeDurationInDays / 30)\n\t\t\t}\n\t\t\t// For medium ranges, use weeks\n\t\t\telse if (rangeDurationInDays >= 7) {\n\t\t\t\tunit = 'week'\n\t\t\t\tamount = Math.round(rangeDurationInDays / 7)\n\t\t\t}\n\t\t\t// For shorter ranges, use days\n\t\t\telse {\n\t\t\t\tunit = 'day'\n\t\t\t\tamount = rangeDurationInDays + 1 // Include both start and end days\n\t\t\t}\n\t\t}\n\n\t\t// Handle special case for quarters\n\t\tif (unit === 'quarter') {\n\t\t\tif (isFullQuarter) {\n\t\t\t\t// Full quarter logic\n\t\t\t\tif (dir > 0) {\n\t\t\t\t\tnewFromDate = this.adjustQuarter(fromDate, amount, 1).startOf('quarter')\n\t\t\t\t\tnewToDate = newFromDate.endOf('quarter')\n\t\t\t\t} else {\n\t\t\t\t\tnewFromDate = this.adjustQuarter(fromDate, amount, -1).startOf('quarter')\n\t\t\t\t\tnewToDate = newFromDate.endOf('quarter')\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Partial quarter logic - maintain day pattern\n\t\t\t\tif (dir > 0) {\n\t\t\t\t\tnewFromDate = this.adjustQuarter(fromDate, amount, 1)\n\t\t\t\t\tnewToDate = this.adjustQuarter(toDate, amount, 1)\n\t\t\t\t} else {\n\t\t\t\t\tnewFromDate = this.adjustQuarter(fromDate, amount, -1)\n\t\t\t\t\tnewToDate = this.adjustQuarter(toDate, amount, -1)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// For hour-based units (used in datetime-local type)\n\t\telse if (unit === 'hour') {\n\t\t\tconst rangeDurationInHours = toDate.diff(fromDate, 'hour')\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(rangeDurationInHours, 'hour')\n\t\t\t\tnewToDate = toDate.add(rangeDurationInHours, 'hour')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(rangeDurationInHours, 'hour')\n\t\t\t\tnewToDate = toDate.subtract(rangeDurationInHours, 'hour')\n\t\t\t}\n\t\t}\n\t\t// For year-based shifting\n\t\telse if (unit === 'year' && isFullYear) {\n\t\t\t// For full year ranges\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, 'year').startOf('year')\n\t\t\t\tnewToDate = newFromDate.endOf('year')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, 'year').startOf('year')\n\t\t\t\tnewToDate = newFromDate.endOf('year')\n\t\t\t}\n\t\t} else if (unit === 'year') {\n\t\t\t// For year unit but not full year range\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, 'year')\n\t\t\t\tnewToDate = toDate.add(amount, 'year')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, 'year')\n\t\t\t\tnewToDate = toDate.subtract(amount, 'year')\n\t\t\t}\n\t\t}\n\t\t// For month-based shifting\n\t\telse if (unit === 'month' && isFullMonth) {\n\t\t\t// For full month ranges\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, 'month').startOf('month')\n\t\t\t\tnewToDate = newFromDate.endOf('month')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, 'month').startOf('month')\n\t\t\t\tnewToDate = newFromDate.endOf('month')\n\t\t\t}\n\t\t} else if (unit === 'month') {\n\t\t\t// For month unit but not a full month range\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, 'month')\n\t\t\t\tnewToDate = toDate.add(amount, 'month')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, 'month')\n\t\t\t\tnewToDate = toDate.subtract(amount, 'month')\n\t\t\t}\n\t\t}\n\t\t// For week-based shifting\n\t\telse if (unit === 'week' && isFullWeek) {\n\t\t\t// For full week ranges\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, 'week').startOf('week')\n\t\t\t\tnewToDate = newFromDate.endOf('week')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, 'week').startOf('week')\n\t\t\t\tnewToDate = newFromDate.endOf('week')\n\t\t\t}\n\t\t} else if (unit === 'week') {\n\t\t\t// For week unit but not full week range\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, 'week')\n\t\t\t\tnewToDate = toDate.add(amount, 'week')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, 'week')\n\t\t\t\tnewToDate = toDate.subtract(amount, 'week')\n\t\t\t}\n\t\t}\n\t\t// For day-based shifting (default)\n\t\telse {\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, 'day')\n\t\t\t\tnewToDate = toDate.add(amount, 'day')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, 'day')\n\t\t\t\tnewToDate = toDate.subtract(amount, 'day')\n\t\t\t}\n\t\t}\n\n\t\t// Format the new dates and update the range\n\t\tconst newFromDateStr = newFromDate.format(format)\n\t\tconst newToDateStr = newToDate.format(format)\n\n\t\t// Set new date range\n\t\tthis.setDateRange(newFromDateStr, newToDateStr)\n\n\t\t// Check if the new date range matches a preset, and update activePreset if needed\n\t\tthis.checkAndUpdateActivePreset(newFromDateStr, newToDateStr)\n\t}\n\n\t/**\n\t * Handle keyboard navigation for accessibility\n\t */\n\tprivate handleKeyboardNavigation(event: KeyboardEvent) {\n\t\tconst key = event.key\n\t\t\n\t\t// Handle date navigation keys\n\t\tif (this.dateFrom.value && this.dateTo.value && !this.disabled) {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'PageUp':\n\t\t\t\t\tif (event.target === this || this.contains(event.target as Node)) {\n\t\t\t\t\t\tthis.shiftDateRange(-1, event)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'PageDown':\n\t\t\t\t\tif (event.target === this || this.contains(event.target as Node)) {\n\t\t\t\t\t\tthis.shiftDateRange(1, event)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'Home':\n\t\t\t\t\tif (event.ctrlKey && (event.target === this || this.contains(event.target as Node))) {\n\t\t\t\t\t\t// Ctrl+Home: Jump to start of current month\n\t\t\t\t\t\tconst currentFrom = dayjs(this.dateFrom.value)\n\t\t\t\t\t\tconst currentTo = dayjs(this.dateTo.value)\n\t\t\t\t\t\tconst monthStart = currentFrom.startOf('month')\n\t\t\t\t\t\tconst daysDiff = currentTo.diff(currentFrom, 'day')\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.setDateRange(\n\t\t\t\t\t\t\tmonthStart.format(this.getDateFormat()),\n\t\t\t\t\t\t\tmonthStart.add(daysDiff, 'day').format(this.getDateFormat())\n\t\t\t\t\t\t)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'End':\n\t\t\t\t\tif (event.ctrlKey && (event.target === this || this.contains(event.target as Node))) {\n\t\t\t\t\t\t// Ctrl+End: Jump to end of current month\n\t\t\t\t\t\tconst currentFrom = dayjs(this.dateFrom.value)\n\t\t\t\t\t\tconst currentTo = dayjs(this.dateTo.value)\n\t\t\t\t\t\tconst daysDiff = currentTo.diff(currentFrom, 'day')\n\t\t\t\t\t\tconst monthEnd = currentTo.endOf('month')\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.setDateRange(\n\t\t\t\t\t\t\tmonthEnd.subtract(daysDiff, 'day').format(this.getDateFormat()),\n\t\t\t\t\t\t\tmonthEnd.format(this.getDateFormat())\n\t\t\t\t\t\t)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the current date range matches any predefined preset,\n\t * and updates the activePreset accordingly\n\t */\n\tprivate checkAndUpdateActivePreset(fromDate: string, toDate: string) {\n\t\t// Find a preset that matches the current date range\n\t\tconst matchingPreset = this.presetRanges.find(\n\t\t\tpreset => preset.range.dateFrom === fromDate && preset.range.dateTo === toDate,\n\t\t)\n\n\t\tif (matchingPreset) {\n\t\t\tthis.activePreset = matchingPreset.label\n\t\t} else {\n\t\t\tthis.activePreset = null\n\t\t}\n\t}\n\n\tprivate applyManualDateSelection(e: Event) {\n\t\te.stopPropagation()\n\t\t// Validate dates before applying\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) {\n\t\t\tthis.announceToScreenReader('Invalid date format. Please check your input.')\n\t\t\treturn\n\t\t}\n\n\t\t// Ensure from date is before to date\n\t\tif (fromDate.isAfter(toDate)) {\n\t\t\tthis.setDateRange(toDate.format(this.getDateFormat()), fromDate.format(this.getDateFormat()))\n\t\t} else {\n\t\t\tthis.setDateRange(this.dateFrom.value, this.dateTo.value)\n\t\t}\n\n\t\t$dialog.dismiss()\n\t}\n\n\t/**\n\t * Check if view is mobile\n\t */\n\tprivate checkMobileView() {\n\t\tthis.isMobile = window.innerWidth < 768\n\t}\n\n\t/**\n\t * Handle direct text input\n\t */\n\tprivate handleDirectInput(e: Event) {\n\t\tconst input = e.target as HTMLInputElement\n\t\tthis.typedValue = input.value\n\t\tthis.isTyping = true\n\t}\n\n\t/**\n\t * Parse typed date range\n\t */\n\tprivate parseTypedDateRange(value: string): { dateFrom: string; dateTo: string } | null {\n\t\t// Common separators\n\t\tconst separators = [' to ', ' - ', ' – ', ' — ', '-', '–', '—']\n\t\tlet parts: string[] = []\n\t\t\n\t\tfor (const sep of separators) {\n\t\t\tif (value.includes(sep)) {\n\t\t\t\tparts = value.split(sep).map(p => p.trim())\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (parts.length !== 2) return null\n\t\t\n\t\tconst fromDate = dayjs(parts[0])\n\t\tconst toDate = dayjs(parts[1])\n\t\t\n\t\tif (!fromDate.isValid() || !toDate.isValid()) return null\n\t\t\n\t\treturn {\n\t\t\tdateFrom: fromDate.format(this.getDateFormat()),\n\t\t\tdateTo: toDate.format(this.getDateFormat())\n\t\t}\n\t}\n\n\t/**\n\t * Handle input blur to parse typed dates\n\t */\n\tprivate handleInputBlur() {\n\t\tif (!this.isTyping || !this.typedValue) return\n\t\t\n\t\tconst parsed = this.parseTypedDateRange(this.typedValue)\n\t\tif (parsed) {\n\t\t\tthis.setDateRange(parsed.dateFrom, parsed.dateTo)\n\t\t\tthis.isTyping = false\n\t\t\tthis.typedValue = ''\n\t\t} else {\n\t\t\t// Reset to current value if parse fails\n\t\t\tthis.announceToScreenReader('Invalid date format. Please use format like: Jan 1, 2024 - Jan 31, 2024')\n\t\t\tif (this.inputRef) {\n\t\t\t\tthis.inputRef.value = this.selectedDateRange\n\t\t\t}\n\t\t\tthis.isTyping = false\n\t\t\tthis.typedValue = ''\n\t\t}\n\t}\n\n\n\n\t/**\n\t * Create dialog content\n\t */\n\tprivate createDialogContent() {\n\t\treturn html`\n\t\t\t<div class=\"w-full min-h-[400px] max-h-[80vh] flex flex-col p-4\">\n\t\t\t\t<!-- Custom Range Section with Inline Calendars -->\n\t\t\t\t<schmancy-surface type=\"container\" class=\"rounded-xl p-4 mb-6\">\n\t\t\t\t\t<div class=\"flex flex-col gap-4\">\n\t\t\t\t\t\t<div class=\"flex items-center justify-between\">\n\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"lg\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\tCustom Range\n\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t<schmancy-button variant=\"filled\" @click=\"${(e: Event) => this.applyManualDateSelection(e)}\">\n\t\t\t\t\t\t\t\tApply\n\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n\t\t\t\t\t\t\t<!-- From Date Calendar -->\n\t\t\t\t\t\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"md\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\t\t${this.dateFrom.label || 'From'}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype=\"${this.type}\"\n\t\t\t\t\t\t\t\t\tvalue=\"${this.dateFrom.value}\"\n\t\t\t\t\t\t\t\t\tmin=\"${ifDefined(this.minDate)}\"\n\t\t\t\t\t\t\t\t\tmax=\"${ifDefined(this.maxDate)}\"\n\t\t\t\t\t\t\t\t\tclass=\"w-full p-3 rounded-lg border border-outline bg-surface-container text-surface-on focus:outline-none focus:ring-2 focus:ring-primary\"\n\t\t\t\t\t\t\t\t\t@change=\"${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\tconst target = e.target as HTMLInputElement\n\t\t\t\t\t\t\t\t\t\tthis.dateFrom.value = target.value\n\t\t\t\t\t\t\t\t\t\tthis.updateSelectedDateRange()\n\t\t\t\t\t\t\t\t\t}}\"\n\t\t\t\t\t\t\t\t\tstyle=\"color-scheme: ${this.getAttribute('scheme') === 'dark' ? 'dark' : 'light'}\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<!-- To Date Calendar -->\n\t\t\t\t\t\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"md\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\t\t${this.dateTo.label || 'To'}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype=\"${this.type}\"\n\t\t\t\t\t\t\t\t\tvalue=\"${this.dateTo.value}\"\n\t\t\t\t\t\t\t\t\tmin=\"${ifDefined(this.dateFrom.value)}\"\n\t\t\t\t\t\t\t\t\tmax=\"${ifDefined(this.maxDate)}\"\n\t\t\t\t\t\t\t\t\tclass=\"w-full p-3 rounded-lg border border-outline bg-surface-container text-surface-on focus:outline-none focus:ring-2 focus:ring-primary\"\n\t\t\t\t\t\t\t\t\t@change=\"${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\tconst target = e.target as HTMLInputElement\n\t\t\t\t\t\t\t\t\t\tthis.dateTo.value = target.value\n\t\t\t\t\t\t\t\t\t\tthis.updateSelectedDateRange()\n\t\t\t\t\t\t\t\t\t}}\"\n\t\t\t\t\t\t\t\t\tstyle=\"color-scheme: ${this.getAttribute('scheme') === 'dark' ? 'dark' : 'light'}\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</schmancy-surface>\n\n\t\t\t\t<!-- Presets Section -->\n\t\t\t\t<div class=\"flex-1 overflow-y-auto overflow-x-hidden min-h-0\">\n\t\t\t\t\t<div class=\"grid grid-cols-2 md:grid-cols-5 gap-6\">\n\t\t\t\t\t\t${this.presetCategories.map(\n\t\t\t\t\t\t\tcategory => html`\n\t\t\t\t\t\t\t\t<div class=\"space-y-3\">\n\t\t\t\t\t\t\t\t\t<schmancy-typography type=\"title\" token=\"md\" class=\"text-surface-onVariant font-medium\">\n\t\t\t\t\t\t\t\t\t\t${category.name}\n\t\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t\t<div class=\"space-y-1\">\n\t\t\t\t\t\t\t\t\t\t${category.presets.map(\n\t\t\t\t\t\t\t\t\t\t\tpreset => html`\n\t\t\t\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"${this.activePreset === preset.label ? 'filled' : 'text'}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"w-full justify-start text-left\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"${(e: Event) => this.handlePresetSelection(preset, e)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-pressed=\"${this.activePreset === preset.label}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label=\"${preset.label}: ${preset.range.dateFrom} to ${preset.range.dateTo}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"${preset.range.dateFrom} to ${preset.range.dateTo}\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"truncate\">${preset.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n\n\t/**\n\t * Announce messages to screen readers\n\t */\n\tprivate announceToScreenReader(message: string) {\n\t\tthis.announceMessage = message\n\t\t// Clear the message after announcement\n\t\ttimer(100)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.announceMessage = ''\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"relative ${this.disabled ? 'opacity-60 pointer-events-none' : ''}\">\n\t\t\t\t<!-- Screen reader announcements -->\n\t\t\t\t<div class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n\t\t\t\t\t${this.announceMessage}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Trigger using the preferred schmancy-grid pattern -->\n\t\t\t\t<div class=\"trigger-container\">\n\t\t\t\t\t<schmancy-grid @click=${(event: Event) => event.stopPropagation()} align=\"center\" cols=\"auto 1fr auto\">\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Previous ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.shiftDateRange(-1, e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled || !this.dateFrom.value || !this.dateTo.value}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tarrow_left\n\t\t\t\t\t\t</schmancy-icon-button>\n\n\t\t\t\t\t\t${this.allowDirectInput\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t\t\t\t\tclass=\"date-range-input w-full\"\n\t\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\t.value=${this.isTyping ? this.typedValue : this.selectedDateRange}\n\t\t\t\t\t\t\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\t\t\t\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t\t\t\t\t\t\t?required=${this.required}\n\t\t\t\t\t\t\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\t\t\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\t\t\t\t\t\taria-label=\"Select or type date range. Current: ${this.selectedDateRange || 'No date selected'}\"\n\t\t\t\t\t\t\t\t\t\t@focus=${() => this.openDropdown()}\n\t\t\t\t\t\t\t\t\t\t@input=${this.handleDirectInput}\n\t\t\t\t\t\t\t\t\t\t@blur=${() => this.handleInputBlur()}\n\t\t\t\t\t\t\t\t\t\t@keydown=${(e: KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\t\t\t\tthis.handleInputBlur()\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t></schmancy-input>\n\t\t\t\t\t\t\t `\n\t\t\t\t\t\t\t: html`\n\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\tclass=\"w-max\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\t\t\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\t\t\t\t\t\taria-label=\"Select date range. Current: ${this.selectedDateRange || 'No date selected'}\"\n\t\t\t\t\t\t\t\t\t\t@click=${(e: Event) => this.toggleDropdown(e)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.selectedDateRange || this.placeholder}\n\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t `\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Next ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.shiftDateRange(1, e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled || !this.dateFrom.value || !this.dateTo.value}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tarrow_right\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t</schmancy-grid>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}"],"names":["t","e","n","r","i","s","u","a","o","c","f","h","d","l","$","y","M","name","weekdays","split","months","ordinal","m","String","length","Array","join","v","z","utcOffset","Math","abs","floor","date","year","month","clone","add","ceil","p","w","D","ms","Q","toLowerCase","replace","g","S","_","O","args","arguments","b","locale","$L","utc","$u","x","$x","$offset","this","parse","prototype","$d","Date","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","apply","slice","$locale","weekStart","$set","min","daysInMonth","get","Number","round","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","k","forEach","extend","$i","isDayjs","en","Ls","quarter","bind","enforceDateFormat","dateString","expectedFormat","parsedDate","dayjs","validateInitialDateRange","dateFrom","dateTo","formattedDateFrom","formattedDateTo","quarterOfYear","SchmancyDateRange","$LitElement","constructor","super","type","label","value","customPresets","disabled","required","placeholder","clearable","allowDirectInput","isOpen","selectedDateRange","activePreset","announceMessage","isMobile","isTyping","typedValue","presetRanges","presetCategories","memoizedPresets","Map","connectedCallback","initPresetRanges","checkMobileView","dateFormat","getDateFormat","validatedRange","updateSelectedDateRange","now","setupEventHandlers","fromEvent","document","pipe","takeUntil","disconnecting","subscribe","event","handleKeyboardNavigation","window","debounceTime","disconnectedCallback","changedProps","updated","has","cacheKey","JSON","stringify","cached","category","push","presets","range","step","unshift","customCategory","map","preset","find","checkAndUpdateActivePreset","fromDate","fromTime","toTime","announceToScreenReader","dispatchEvent","CustomEvent","detail","bubbles","composed","stopPropagation","setDateRange","$dialog","dismiss","closeDropdown","openDropdown","dialogContent","createDialogContent","component","title","width","hideActions","then","amount","direction","newQuarter","yearAdjustment","newDate","targetDay","dir","newFromDate","newToDate","isFullMonth","isFullQuarter","isFullYear","isFullWeek","day","unit","rangeDurationInDays","adjustQuarter","rangeDurationInHours","newFromDateStr","newToDateStr","key","target","contains","shiftDateRange","preventDefault","ctrlKey","currentFrom","currentTo","monthStart","daysDiff","monthEnd","matchingPreset","innerWidth","input","separators","parts","sep","includes","trim","handleInputBlur","parsed","parseTypedDateRange","inputRef","html","applyManualDateSelection","ifDefined","minDate","maxDate","getAttribute","handlePresetSelection","message","timer","handleDirectInput","toggleDropdown","__decorateClass","property","Object","Boolean","state","query","customElement"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"date-range-CIn-HKuL.js","sources":["../../../../.yarn/berry/cache/dayjs-npm-1.11.13-d478bb9479-10c0.zip/node_modules/dayjs/dayjs.min.js","../../../../.yarn/berry/cache/dayjs-npm-1.11.13-d478bb9479-10c0.zip/node_modules/dayjs/plugin/quarterOfYear.js","../src/date-range/date-utils.ts","../src/date-range/date-range.ts"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));","import dayjs from 'dayjs'\n\ntype DateFormat = 'YYYY-MM-DD' | 'YYYY-MM-DDTHH:mm'\n\n/**\n * Ensures that a date string conforms to a specific format.\n * If the date is already in the correct format, it returns the original string.\n * If the date is in a different format, it attempts to convert it to the specified format.\n * If the date is invalid or cannot be converted, it returns null.\n *\n * @param dateString The date string to validate and format.\n * @param expectedFormat The expected date format (e.g., 'YYYY-MM-DD', 'YYYY-MM-DDTHH:mm').\n * @returns The formatted date string, or null if the date is invalid.\n */\nfunction enforceDateFormat(dateString: string | undefined, expectedFormat: DateFormat): string | null {\n\tif (!dateString) {\n\t\treturn null // Or handle the undefined case differently if needed\n\t}\n\n\tconst parsedDate = dayjs(dateString)\n\n\tif (!parsedDate.isValid()) {\n\t\treturn null // Date is invalid\n\t}\n\n\treturn parsedDate.format(expectedFormat)\n}\n\n/**\n * Validates if the initial date range values are in the expected format.\n *\n * @param dateFrom The dateFrom value to validate.\n * @param dateTo The dateTo value to validate.\n * @param expectedFormat The expected date format.\n * @returns An object indicating whether each date is valid, and the formatted date or null if invalid.\n */\nfunction validateInitialDateRange(\n\tdateFrom: string | undefined,\n\tdateTo: string | undefined,\n\texpectedFormat: DateFormat,\n): {\n\tdateFrom: string | null\n\tdateTo: string | null\n\tisValid: boolean\n} {\n\tconst formattedDateFrom = enforceDateFormat(dateFrom, expectedFormat)\n\tconst formattedDateTo = enforceDateFormat(dateTo, expectedFormat)\n\n\tconst isValid = formattedDateFrom !== null && formattedDateTo !== null\n\n\treturn {\n\t\tdateFrom: formattedDateFrom,\n\t\tdateTo: formattedDateTo,\n\t\tisValid,\n\t}\n}\n\nexport { validateInitialDateRange }\n","import { $LitElement } from '@mixins/index'\nimport dayjs from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { html, PropertyValues } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { debounceTime, fromEvent, takeUntil, timer } from 'rxjs'\nimport { $dialog } from '../dialog/dialog-service'\nimport { validateInitialDateRange } from './date-utils'\n\n// Add quarter plugin to dayjs\ndayjs.extend(quarterOfYear)\n\nexport type SchmancyDateRangeChangeEvent = CustomEvent<{\n\tdateFrom: string\n\tdateTo: string\n}>\n\n// Custom type to include 'quarter' as a valid unit\ntype ExtendedTimeUnit = dayjs.OpUnitType | 'quarter'\n\n/**\n * A date range selector that supports presets and manual date input.\n *\n * @element schmancy-date-range\n * @fires change - Fired when the date range changes with dateFrom and dateTo values\n */\n@customElement('schmancy-date-range')\nexport class SchmancyDateRange extends $LitElement() {\n\t// Core properties\n\t@property({ type: String }) type: 'date' | 'datetime-local' = 'date'\n\t@property({ type: Object }) dateFrom: { label: string; value: string } = { label: 'From', value: '' }\n\t@property({ type: Object }) dateTo: { label: string; value: string } = { label: 'To', value: '' }\n\t@property({ type: String }) minDate?: string\n\t@property({ type: String }) maxDate?: string\n\n\t// Enhanced functionality\n\t@property({ type: Array }) customPresets: Array<{\n\t\tlabel: string\n\t\tdateFrom: string\n\t\tdateTo: string\n\t}> = []\n\t@property({ type: String }) format?: string\n\t@property({ type: Boolean }) disabled = false\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = 'Select date range'\n\t@property({ type: Boolean }) clearable = true\n\t@property({ type: Boolean }) allowDirectInput = true\n\n\t// Internal states\n\t@state() private isOpen = false\n\t@state() private selectedDateRange: string = ''\n\t@state() private activePreset: string | null = null\n\t@state() private announceMessage: string = ''\n\t@state() private isMobile = false\n\t@state() private isTyping = false\n\t@state() private typedValue = ''\n\n\t// Default presets\n\tprivate presetRanges: Array<{\n\t\tlabel: string\n\t\trange: { dateFrom: string; dateTo: string }\n\t\tstep: ExtendedTimeUnit\n\t}> = []\n\n\t// Categorized presets\n\tprivate presetCategories: Array<{\n\t\tname: string\n\t\tpresets: Array<{\n\t\t\tlabel: string\n\t\t\trange: { dateFrom: string; dateTo: string }\n\t\t\tstep: ExtendedTimeUnit\n\t\t}>\n\t}> = []\n\n\t// DOM references\n\t@query('.date-range-input') private inputRef!: HTMLInputElement\n\t\n\t// Memoization cache\n\tprivate memoizedPresets = new Map<string, typeof this.presetCategories>()\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.initPresetRanges()\n\t\tthis.checkMobileView()\n\n\t\t// Validate initial date range\n\t\tconst dateFormat = this.getDateFormat() as 'YYYY-MM-DD' | 'YYYY-MM-DDTHH:mm'\n\t\tconst validatedRange = validateInitialDateRange(this.dateFrom.value, this.dateTo.value, dateFormat)\n\n\t\tif (validatedRange.isValid) {\n\t\t\tthis.dateFrom.value = validatedRange.dateFrom!\n\t\t\tthis.dateTo.value = validatedRange.dateTo!\n\t\t\tthis.updateSelectedDateRange()\n\t\t} else {\n\t\t\tconst now = dayjs().format(dateFormat)\n\t\t\tthis.dateFrom.value = now\n\t\t\tthis.dateTo.value = now\n\t\t\tthis.updateSelectedDateRange()\n\t\t}\n\n\t\t// Set up global event handlers using RxJS\n\t\tthis.setupEventHandlers()\n\t}\n\n\tprivate setupEventHandlers() {\n\t\t// Handle keyboard navigation\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tthis.handleKeyboardNavigation(event)\n\t\t\t})\n\n\t\t// Handle window resize with debouncing\n\t\tfromEvent(window, 'resize')\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(150),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.checkMobileView()\n\t\t\t})\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tupdated(changedProps: PropertyValues) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (\n\t\t\t(changedProps.has('dateFrom') || changedProps.has('dateTo')) &&\n\t\t\t(this.dateFrom?.value !== undefined || this.dateTo?.value !== undefined)\n\t\t) {\n\t\t\tthis.updateSelectedDateRange()\n\t\t}\n\t}\n\n\tprivate initPresetRanges() {\n\t\tconst format = this.getDateFormat()\n\t\tconst cacheKey = `${this.type}-${format}-${JSON.stringify(this.customPresets)}`\n\t\t\n\t\t// Check memoization cache\n\t\tif (this.memoizedPresets.has(cacheKey)) {\n\t\t\tconst cached = this.memoizedPresets.get(cacheKey)!\n\t\t\tthis.presetCategories = cached\n\t\t\tthis.presetRanges = []\n\t\t\tcached.forEach(category => {\n\t\t\t\tthis.presetRanges.push(...category.presets)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Define categories with their presets\n\t\tthis.presetCategories = [\n\t\t\t{\n\t\t\t\tname: 'Days',\n\t\t\t\tpresets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Today',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().startOf('day').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Yesterday',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(1, 'days').startOf('day').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().subtract(1, 'days').endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 7 Days',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(6, 'days').startOf('day').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 14 Days',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(13, 'days').startOf('day').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 30 Days',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(29, 'days').startOf('day').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 60 Days',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(59, 'days').startOf('day').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 90 Days',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(89, 'days').startOf('day').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Weeks',\n\t\t\t\tpresets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'This Week',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().startOf('week').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('week').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'week',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last Week',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(1, 'weeks').startOf('week').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().subtract(1, 'weeks').endOf('week').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'week',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 2 Weeks',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(2, 'weeks').startOf('week').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'week',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 4 Weeks',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(4, 'weeks').startOf('week').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'week',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Months',\n\t\t\t\tpresets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'This Month',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().startOf('month').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('month').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'month',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last Month',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(1, 'month').startOf('month').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().subtract(1, 'month').endOf('month').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'month',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 3 Months',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(3, 'months').startOf('month').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'month',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 6 Months',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(6, 'months').startOf('month').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'month',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Quarters',\n\t\t\t\tpresets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'This Quarter',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().startOf('quarter').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('quarter').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'quarter',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last Quarter',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(1, 'quarter').startOf('quarter').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().subtract(1, 'quarter').endOf('quarter').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'quarter',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 2 Quarters',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(2, 'quarters').startOf('quarter').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'quarter',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 4 Quarters',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(4, 'quarters').startOf('quarter').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'quarter',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Years',\n\t\t\t\tpresets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'This Year',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().startOf('year').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('year').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'year',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last Year',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(1, 'year').startOf('year').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().subtract(1, 'year').endOf('year').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'year',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Year to Date',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().startOf('year').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'day',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t]\n\n\t\t// For datetime-local type, add time-specific presets\n\t\tif (this.type === 'datetime-local') {\n\t\t\tthis.presetCategories.unshift({\n\t\t\t\tname: 'Hours',\n\t\t\t\tpresets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 24 Hours',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(24, 'hours').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'hour',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Last 12 Hours',\n\t\t\t\t\t\trange: {\n\t\t\t\t\t\t\tdateFrom: dayjs().subtract(12, 'hours').format(format),\n\t\t\t\t\t\t\tdateTo: dayjs().format(format),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstep: 'hour',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})\n\t\t}\n\n\t\t// Flatten presets for other methods that expect a flat list\n\t\tthis.presetRanges = []\n\t\tthis.presetCategories.forEach(category => {\n\t\t\tthis.presetRanges.push(...category.presets)\n\t\t})\n\n\t\t// Add custom presets if provided\n\t\tif (this.customPresets && this.customPresets.length > 0) {\n\t\t\tconst customCategory = {\n\t\t\t\tname: 'Custom',\n\t\t\t\tpresets: this.customPresets.map(preset => ({\n\t\t\t\t\tlabel: preset.label,\n\t\t\t\t\trange: {\n\t\t\t\t\t\tdateFrom: preset.dateFrom,\n\t\t\t\t\t\tdateTo: preset.dateTo,\n\t\t\t\t\t},\n\t\t\t\t\tstep: 'day' as ExtendedTimeUnit,\n\t\t\t\t})),\n\t\t\t}\n\n\t\t\tthis.presetCategories.push(customCategory)\n\t\t\tthis.presetRanges.push(...customCategory.presets)\n\t\t}\n\t\t\n\t\t// Cache the result\n\t\tthis.memoizedPresets.set(cacheKey, [...this.presetCategories])\n\t}\n\n\tprivate getDateFormat(): string {\n\t\treturn this.format || (this.type === 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DDTHH:mm')\n\t}\n\n\t/**\n\t * Creates a concise display format for the selected date range\n\t */\n\tprivate updateSelectedDateRange() {\n\t\t// Find matching preset\n\t\tconst preset = this.presetRanges.find(\n\t\t\tp => p.range.dateFrom === this.dateFrom.value && p.range.dateTo === this.dateTo.value,\n\t\t)\n\n\t\tif (preset) {\n\t\t\t// If matches a preset, just use the preset name\n\t\t\tthis.selectedDateRange = preset.label\n\t\t\tthis.activePreset = preset.label\n\t\t\treturn\n\t\t}\n\n\t\t// If we didn't find a preset match, check if we should update the active preset\n\t\tthis.checkAndUpdateActivePreset(this.dateFrom.value, this.dateTo.value)\n\n\t\t// Custom date range - create concise format\n\t\tthis.activePreset = null\n\n\t\tif (!this.dateFrom.value || !this.dateTo.value) {\n\t\t\tthis.selectedDateRange = this.placeholder\n\t\t\treturn\n\t\t}\n\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) {\n\t\t\tthis.selectedDateRange = this.placeholder\n\t\t\treturn\n\t\t}\n\n\t\t// Format times if needed (for datetime-local)\n\t\tconst fromTime = this.type === 'datetime-local' ? fromDate.format(' h:mm A') : ''\n\t\tconst toTime = this.type === 'datetime-local' ? toDate.format(' h:mm A') : ''\n\n\t\t// Check if same day\n\t\tif (fromDate.isSame(toDate, 'day')) {\n\t\t\tthis.selectedDateRange = `${fromDate.format('MMM D, YYYY')}${fromTime}`\n\t\t\treturn\n\t\t}\n\n\t\t// Check if same month and year\n\t\tif (fromDate.isSame(toDate, 'month') && fromDate.isSame(toDate, 'year')) {\n\t\t\tthis.selectedDateRange = `${fromDate.format('MMM D')}-${toDate.format('D, YYYY')}${toTime}`\n\t\t\treturn\n\t\t}\n\n\t\t// Check if same year\n\t\tif (fromDate.isSame(toDate, 'year')) {\n\t\t\tthis.selectedDateRange = `${fromDate.format('MMM D')} - ${toDate.format('MMM D, YYYY')}${toTime}`\n\t\t\treturn\n\t\t}\n\n\t\t// Different years\n\t\tthis.selectedDateRange = `${fromDate.format('MMM D, YYYY')}${fromTime} - ${toDate.format('MMM D, YYYY')}${toTime}`\n\t}\n\n\tprivate setDateRange(dateFrom: string, dateTo: string) {\n\t\tthis.dateFrom.value = dateFrom\n\t\tthis.dateTo.value = dateTo\n\t\tthis.updateSelectedDateRange()\n\n\t\t// Announce change to screen readers\n\t\tthis.announceToScreenReader(`Date range updated: ${this.selectedDateRange}`)\n\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<{ dateFrom: string; dateTo: string }>('change', {\n\t\t\t\tdetail: { dateFrom, dateTo },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate handlePresetSelection(preset: { label: string; range: { dateFrom: string; dateTo: string } }, e: Event) {\n\t\te.stopPropagation()\n\t\tthis.activePreset = preset.label\n\t\tthis.setDateRange(preset.range.dateFrom, preset.range.dateTo)\n\t\t$dialog.dismiss()\n\t}\n\n\n\n\tprivate toggleDropdown(e: Event) {\n\t\te.stopPropagation()\n\t\tif (this.disabled) return\n\n\t\tif (this.isOpen) {\n\t\t\tthis.closeDropdown()\n\t\t} else {\n\t\t\tthis.openDropdown()\n\t\t}\n\t}\n\n\tprivate openDropdown() {\n\t\tif (this.disabled) return\n\t\t\n\t\tthis.isOpen = true\n\t\t\n\t\t// Create dialog content\n\t\tconst dialogContent = this.createDialogContent()\n\t\t\n\t\t// Use the dialog service - it will automatically find the nearest schmancy-theme\n\t\t$dialog.component(dialogContent, {\n\t\t\ttitle: 'Select Date Range',\n\t\t\twidth: this.isMobile ? '100vw' : 'fit-content',\n\t\t\thideActions: true\n\t\t}).then(() => {\n\t\t\tthis.isOpen = false\n\t\t})\n\t}\n\n\tprivate closeDropdown() {\n\t\t$dialog.dismiss()\n\t\tthis.isOpen = false\n\t}\n\n\t/**\n\t * Helper method to safely add/subtract quarter values\n\t */\n\tprivate adjustQuarter(date: dayjs.Dayjs, amount: number, direction: 1 | -1): dayjs.Dayjs {\n\t\t// Get current quarter (1-4)\n\t\tconst currentQuarter = date.quarter()\n\n\t\t// Calculate new quarter\n\t\tlet newQuarter = currentQuarter + direction * amount\n\t\tlet yearAdjustment = 0\n\n\t\t// Handle year boundaries\n\t\twhile (newQuarter > 4) {\n\t\t\tnewQuarter -= 4\n\t\t\tyearAdjustment += 1\n\t\t}\n\n\t\twhile (newQuarter < 1) {\n\t\t\tnewQuarter += 4\n\t\t\tyearAdjustment -= 1\n\t\t}\n\n\t\t// Adjust year if needed\n\t\tconst adjustedDate = date.add(yearAdjustment, 'year')\n\n\t\t// Set to the start of the new quarter\n\t\tconst newDate = adjustedDate.month((newQuarter - 1) * 3)\n\n\t\t// Maintain the same day of month if possible\n\t\tconst daysInMonth = newDate.daysInMonth()\n\t\tconst targetDay = Math.min(date.date(), daysInMonth)\n\n\t\treturn newDate.date(targetDay)\n\t}\n\n\t/**\n\t * Shifts the date range based on its type (preset or custom)\n\t * Enhanced to properly handle various time units and preserve date patterns\n\t */\n\tprivate shiftDateRange(direction: number, e: Event) {\n\t\te.stopPropagation()\n\n\t\tif (!this.dateFrom.value || !this.dateTo.value) return\n\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) return\n\n\t\tconst format = this.getDateFormat()\n\n\t\t// Convert direction to a type that our helper methods can use\n\t\tconst dir = direction > 0 ? 1 : -1\n\n\t\tlet newFromDate: dayjs.Dayjs\n\t\tlet newToDate: dayjs.Dayjs\n\n\t\t// For preset ranges, use their specific step unit\n\t\tconst activePreset = this.presetRanges.find(p => p.label === this.activePreset)\n\n\t\t// Detect if the date range represents full time periods\n\t\tconst isFullMonth = fromDate.date() === 1 && toDate.isSame(fromDate.endOf('month'), 'day')\n\t\tconst isFullQuarter =\n\t\t\tfromDate.isSame(fromDate.startOf('quarter'), 'day') && toDate.isSame(toDate.endOf('quarter'), 'day')\n\t\tconst isFullYear = fromDate.isSame(fromDate.startOf('year'), 'day') && toDate.isSame(toDate.endOf('year'), 'day')\n\t\tconst isFullWeek = fromDate.day() === 0 && toDate.day() === 6 && toDate.diff(fromDate, 'days') === 6\n\n\t\t// Determine shift unit and amount\n\t\tlet unit: ExtendedTimeUnit = 'day'\n\t\tlet amount = 1\n\n\t\tif (activePreset) {\n\t\t\t// Use the preset's specific unit (day, week, month, quarter, year)\n\t\t\tunit = activePreset.step\n\t\t\tamount = 1 // For presets, we shift by one unit\n\t\t} else {\n\t\t\t// For custom ranges, calculate the appropriate step size\n\t\t\tconst rangeDurationInDays = toDate.diff(fromDate, 'day')\n\n\t\t\t// For very long ranges, use years\n\t\t\tif (rangeDurationInDays >= 360) {\n\t\t\t\tunit = 'year'\n\t\t\t\tamount = Math.round(rangeDurationInDays / 365)\n\t\t\t}\n\t\t\t// For long ranges, use quarters\n\t\t\telse if (rangeDurationInDays >= 90) {\n\t\t\t\tunit = 'quarter'\n\t\t\t\tamount = Math.round(rangeDurationInDays / 90)\n\t\t\t}\n\t\t\t// For medium-long ranges, use months\n\t\t\telse if (rangeDurationInDays >= 30) {\n\t\t\t\tunit = 'month'\n\t\t\t\tamount = Math.round(rangeDurationInDays / 30)\n\t\t\t}\n\t\t\t// For medium ranges, use weeks\n\t\t\telse if (rangeDurationInDays >= 7) {\n\t\t\t\tunit = 'week'\n\t\t\t\tamount = Math.round(rangeDurationInDays / 7)\n\t\t\t}\n\t\t\t// For shorter ranges, use days\n\t\t\telse {\n\t\t\t\tunit = 'day'\n\t\t\t\tamount = rangeDurationInDays + 1 // Include both start and end days\n\t\t\t}\n\t\t}\n\n\t\t// Handle special case for quarters\n\t\tif (unit === 'quarter') {\n\t\t\tif (isFullQuarter) {\n\t\t\t\t// Full quarter logic\n\t\t\t\tif (dir > 0) {\n\t\t\t\t\tnewFromDate = this.adjustQuarter(fromDate, amount, 1).startOf('quarter')\n\t\t\t\t\tnewToDate = newFromDate.endOf('quarter')\n\t\t\t\t} else {\n\t\t\t\t\tnewFromDate = this.adjustQuarter(fromDate, amount, -1).startOf('quarter')\n\t\t\t\t\tnewToDate = newFromDate.endOf('quarter')\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Partial quarter logic - maintain day pattern\n\t\t\t\tif (dir > 0) {\n\t\t\t\t\tnewFromDate = this.adjustQuarter(fromDate, amount, 1)\n\t\t\t\t\tnewToDate = this.adjustQuarter(toDate, amount, 1)\n\t\t\t\t} else {\n\t\t\t\t\tnewFromDate = this.adjustQuarter(fromDate, amount, -1)\n\t\t\t\t\tnewToDate = this.adjustQuarter(toDate, amount, -1)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// For hour-based units (used in datetime-local type)\n\t\telse if (unit === 'hour') {\n\t\t\tconst rangeDurationInHours = toDate.diff(fromDate, 'hour')\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(rangeDurationInHours, 'hour')\n\t\t\t\tnewToDate = toDate.add(rangeDurationInHours, 'hour')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(rangeDurationInHours, 'hour')\n\t\t\t\tnewToDate = toDate.subtract(rangeDurationInHours, 'hour')\n\t\t\t}\n\t\t}\n\t\t// For year-based shifting\n\t\telse if (unit === 'year' && isFullYear) {\n\t\t\t// For full year ranges\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, 'year').startOf('year')\n\t\t\t\tnewToDate = newFromDate.endOf('year')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, 'year').startOf('year')\n\t\t\t\tnewToDate = newFromDate.endOf('year')\n\t\t\t}\n\t\t} else if (unit === 'year') {\n\t\t\t// For year unit but not full year range\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, 'year')\n\t\t\t\tnewToDate = toDate.add(amount, 'year')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, 'year')\n\t\t\t\tnewToDate = toDate.subtract(amount, 'year')\n\t\t\t}\n\t\t}\n\t\t// For month-based shifting\n\t\telse if (unit === 'month' && isFullMonth) {\n\t\t\t// For full month ranges\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, 'month').startOf('month')\n\t\t\t\tnewToDate = newFromDate.endOf('month')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, 'month').startOf('month')\n\t\t\t\tnewToDate = newFromDate.endOf('month')\n\t\t\t}\n\t\t} else if (unit === 'month') {\n\t\t\t// For month unit but not a full month range\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, 'month')\n\t\t\t\tnewToDate = toDate.add(amount, 'month')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, 'month')\n\t\t\t\tnewToDate = toDate.subtract(amount, 'month')\n\t\t\t}\n\t\t}\n\t\t// For week-based shifting\n\t\telse if (unit === 'week' && isFullWeek) {\n\t\t\t// For full week ranges\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, 'week').startOf('week')\n\t\t\t\tnewToDate = newFromDate.endOf('week')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, 'week').startOf('week')\n\t\t\t\tnewToDate = newFromDate.endOf('week')\n\t\t\t}\n\t\t} else if (unit === 'week') {\n\t\t\t// For week unit but not full week range\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, 'week')\n\t\t\t\tnewToDate = toDate.add(amount, 'week')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, 'week')\n\t\t\t\tnewToDate = toDate.subtract(amount, 'week')\n\t\t\t}\n\t\t}\n\t\t// For day-based shifting (default)\n\t\telse {\n\t\t\tif (dir > 0) {\n\t\t\t\tnewFromDate = fromDate.add(amount, 'day')\n\t\t\t\tnewToDate = toDate.add(amount, 'day')\n\t\t\t} else {\n\t\t\t\tnewFromDate = fromDate.subtract(amount, 'day')\n\t\t\t\tnewToDate = toDate.subtract(amount, 'day')\n\t\t\t}\n\t\t}\n\n\t\t// Format the new dates and update the range\n\t\tconst newFromDateStr = newFromDate.format(format)\n\t\tconst newToDateStr = newToDate.format(format)\n\n\t\t// Set new date range\n\t\tthis.setDateRange(newFromDateStr, newToDateStr)\n\n\t\t// Check if the new date range matches a preset, and update activePreset if needed\n\t\tthis.checkAndUpdateActivePreset(newFromDateStr, newToDateStr)\n\t}\n\n\t/**\n\t * Handle keyboard navigation for accessibility\n\t */\n\tprivate handleKeyboardNavigation(event: KeyboardEvent) {\n\t\tconst key = event.key\n\t\t\n\t\t// Handle date navigation keys\n\t\tif (this.dateFrom.value && this.dateTo.value && !this.disabled) {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'PageUp':\n\t\t\t\t\tif (event.target === this || this.contains(event.target as Node)) {\n\t\t\t\t\t\tthis.shiftDateRange(-1, event)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'PageDown':\n\t\t\t\t\tif (event.target === this || this.contains(event.target as Node)) {\n\t\t\t\t\t\tthis.shiftDateRange(1, event)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'Home':\n\t\t\t\t\tif (event.ctrlKey && (event.target === this || this.contains(event.target as Node))) {\n\t\t\t\t\t\t// Ctrl+Home: Jump to start of current month\n\t\t\t\t\t\tconst currentFrom = dayjs(this.dateFrom.value)\n\t\t\t\t\t\tconst currentTo = dayjs(this.dateTo.value)\n\t\t\t\t\t\tconst monthStart = currentFrom.startOf('month')\n\t\t\t\t\t\tconst daysDiff = currentTo.diff(currentFrom, 'day')\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.setDateRange(\n\t\t\t\t\t\t\tmonthStart.format(this.getDateFormat()),\n\t\t\t\t\t\t\tmonthStart.add(daysDiff, 'day').format(this.getDateFormat())\n\t\t\t\t\t\t)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'End':\n\t\t\t\t\tif (event.ctrlKey && (event.target === this || this.contains(event.target as Node))) {\n\t\t\t\t\t\t// Ctrl+End: Jump to end of current month\n\t\t\t\t\t\tconst currentFrom = dayjs(this.dateFrom.value)\n\t\t\t\t\t\tconst currentTo = dayjs(this.dateTo.value)\n\t\t\t\t\t\tconst daysDiff = currentTo.diff(currentFrom, 'day')\n\t\t\t\t\t\tconst monthEnd = currentTo.endOf('month')\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.setDateRange(\n\t\t\t\t\t\t\tmonthEnd.subtract(daysDiff, 'day').format(this.getDateFormat()),\n\t\t\t\t\t\t\tmonthEnd.format(this.getDateFormat())\n\t\t\t\t\t\t)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the current date range matches any predefined preset,\n\t * and updates the activePreset accordingly\n\t */\n\tprivate checkAndUpdateActivePreset(fromDate: string, toDate: string) {\n\t\t// Find a preset that matches the current date range\n\t\tconst matchingPreset = this.presetRanges.find(\n\t\t\tpreset => preset.range.dateFrom === fromDate && preset.range.dateTo === toDate,\n\t\t)\n\n\t\tif (matchingPreset) {\n\t\t\tthis.activePreset = matchingPreset.label\n\t\t} else {\n\t\t\tthis.activePreset = null\n\t\t}\n\t}\n\n\tprivate applyManualDateSelection(e: Event) {\n\t\te.stopPropagation()\n\t\t// Validate dates before applying\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) {\n\t\t\tthis.announceToScreenReader('Invalid date format. Please check your input.')\n\t\t\treturn\n\t\t}\n\n\t\t// Ensure from date is before to date\n\t\tif (fromDate.isAfter(toDate)) {\n\t\t\tthis.setDateRange(toDate.format(this.getDateFormat()), fromDate.format(this.getDateFormat()))\n\t\t} else {\n\t\t\tthis.setDateRange(this.dateFrom.value, this.dateTo.value)\n\t\t}\n\n\t\t$dialog.dismiss()\n\t}\n\n\t/**\n\t * Check if view is mobile\n\t */\n\tprivate checkMobileView() {\n\t\tthis.isMobile = window.innerWidth < 768\n\t}\n\n\t/**\n\t * Handle direct text input\n\t */\n\tprivate handleDirectInput(e: Event) {\n\t\tconst input = e.target as HTMLInputElement\n\t\tthis.typedValue = input.value\n\t\tthis.isTyping = true\n\t}\n\n\t/**\n\t * Parse typed date range\n\t */\n\tprivate parseTypedDateRange(value: string): { dateFrom: string; dateTo: string } | null {\n\t\t// Common separators\n\t\tconst separators = [' to ', ' - ', ' – ', ' — ', '-', '–', '—']\n\t\tlet parts: string[] = []\n\t\t\n\t\tfor (const sep of separators) {\n\t\t\tif (value.includes(sep)) {\n\t\t\t\tparts = value.split(sep).map(p => p.trim())\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (parts.length !== 2) return null\n\t\t\n\t\tconst fromDate = dayjs(parts[0])\n\t\tconst toDate = dayjs(parts[1])\n\t\t\n\t\tif (!fromDate.isValid() || !toDate.isValid()) return null\n\t\t\n\t\treturn {\n\t\t\tdateFrom: fromDate.format(this.getDateFormat()),\n\t\t\tdateTo: toDate.format(this.getDateFormat())\n\t\t}\n\t}\n\n\t/**\n\t * Handle input blur to parse typed dates\n\t */\n\tprivate handleInputBlur() {\n\t\tif (!this.isTyping || !this.typedValue) return\n\t\t\n\t\tconst parsed = this.parseTypedDateRange(this.typedValue)\n\t\tif (parsed) {\n\t\t\tthis.setDateRange(parsed.dateFrom, parsed.dateTo)\n\t\t\tthis.isTyping = false\n\t\t\tthis.typedValue = ''\n\t\t} else {\n\t\t\t// Reset to current value if parse fails\n\t\t\tthis.announceToScreenReader('Invalid date format. Please use format like: Jan 1, 2024 - Jan 31, 2024')\n\t\t\tif (this.inputRef) {\n\t\t\t\tthis.inputRef.value = this.selectedDateRange\n\t\t\t}\n\t\t\tthis.isTyping = false\n\t\t\tthis.typedValue = ''\n\t\t}\n\t}\n\n\n\n\t/**\n\t * Create dialog content\n\t */\n\tprivate createDialogContent() {\n\t\treturn html`\n\t\t\t<div class=\"w-full min-h-[400px] max-h-[80vh] flex flex-col p-4\">\n\t\t\t\t<!-- Custom Range Section with Inline Calendars -->\n\t\t\t\t<schmancy-surface type=\"container\" class=\"rounded-xl p-4 mb-6\">\n\t\t\t\t\t<div class=\"flex flex-col gap-4\">\n\t\t\t\t\t\t<div class=\"flex items-center justify-between\">\n\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"lg\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\tCustom Range\n\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t<schmancy-button variant=\"filled\" @click=\"${(e: Event) => this.applyManualDateSelection(e)}\">\n\t\t\t\t\t\t\t\tApply\n\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n\t\t\t\t\t\t\t<!-- From Date Calendar -->\n\t\t\t\t\t\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"md\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\t\t${this.dateFrom.label || 'From'}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype=\"${this.type}\"\n\t\t\t\t\t\t\t\t\tvalue=\"${this.dateFrom.value}\"\n\t\t\t\t\t\t\t\t\tmin=\"${ifDefined(this.minDate)}\"\n\t\t\t\t\t\t\t\t\tmax=\"${ifDefined(this.maxDate)}\"\n\t\t\t\t\t\t\t\t\tclass=\"w-full p-3 rounded-lg border border-outline bg-surface-container text-surface-on focus:outline-none focus:ring-2 focus:ring-primary\"\n\t\t\t\t\t\t\t\t\t@change=\"${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\tconst target = e.target as HTMLInputElement\n\t\t\t\t\t\t\t\t\t\tthis.dateFrom.value = target.value\n\t\t\t\t\t\t\t\t\t\tthis.updateSelectedDateRange()\n\t\t\t\t\t\t\t\t\t}}\"\n\t\t\t\t\t\t\t\t\tstyle=\"color-scheme: ${this.getAttribute('scheme') === 'dark' ? 'dark' : 'light'}\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<!-- To Date Calendar -->\n\t\t\t\t\t\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"md\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\t\t${this.dateTo.label || 'To'}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype=\"${this.type}\"\n\t\t\t\t\t\t\t\t\tvalue=\"${this.dateTo.value}\"\n\t\t\t\t\t\t\t\t\tmin=\"${ifDefined(this.dateFrom.value)}\"\n\t\t\t\t\t\t\t\t\tmax=\"${ifDefined(this.maxDate)}\"\n\t\t\t\t\t\t\t\t\tclass=\"w-full p-3 rounded-lg border border-outline bg-surface-container text-surface-on focus:outline-none focus:ring-2 focus:ring-primary\"\n\t\t\t\t\t\t\t\t\t@change=\"${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\tconst target = e.target as HTMLInputElement\n\t\t\t\t\t\t\t\t\t\tthis.dateTo.value = target.value\n\t\t\t\t\t\t\t\t\t\tthis.updateSelectedDateRange()\n\t\t\t\t\t\t\t\t\t}}\"\n\t\t\t\t\t\t\t\t\tstyle=\"color-scheme: ${this.getAttribute('scheme') === 'dark' ? 'dark' : 'light'}\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</schmancy-surface>\n\n\t\t\t\t<!-- Presets Section -->\n\t\t\t\t<div class=\"flex-1 overflow-y-auto overflow-x-hidden min-h-0\">\n\t\t\t\t\t<div class=\"grid grid-cols-2 md:grid-cols-5 gap-6\">\n\t\t\t\t\t\t${this.presetCategories.map(\n\t\t\t\t\t\t\tcategory => html`\n\t\t\t\t\t\t\t\t<div class=\"space-y-3\">\n\t\t\t\t\t\t\t\t\t<schmancy-typography type=\"title\" token=\"md\" class=\"text-surface-onVariant font-medium\">\n\t\t\t\t\t\t\t\t\t\t${category.name}\n\t\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t\t<div class=\"space-y-1\">\n\t\t\t\t\t\t\t\t\t\t${category.presets.map(\n\t\t\t\t\t\t\t\t\t\t\tpreset => html`\n\t\t\t\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"${this.activePreset === preset.label ? 'filled' : 'text'}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"w-full justify-start text-left\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"${(e: Event) => this.handlePresetSelection(preset, e)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-pressed=\"${this.activePreset === preset.label}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label=\"${preset.label}: ${preset.range.dateFrom} to ${preset.range.dateTo}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"${preset.range.dateFrom} to ${preset.range.dateTo}\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"truncate\">${preset.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n\n\t/**\n\t * Announce messages to screen readers\n\t */\n\tprivate announceToScreenReader(message: string) {\n\t\tthis.announceMessage = message\n\t\t// Clear the message after announcement\n\t\ttimer(100)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.announceMessage = ''\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"relative ${this.disabled ? 'opacity-60 pointer-events-none' : ''}\">\n\t\t\t\t<!-- Screen reader announcements -->\n\t\t\t\t<div class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n\t\t\t\t\t${this.announceMessage}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Trigger using the preferred schmancy-grid pattern -->\n\t\t\t\t<div class=\"trigger-container\">\n\t\t\t\t\t<schmancy-grid @click=${(event: Event) => event.stopPropagation()} align=\"center\" cols=\"auto 1fr auto\">\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Previous ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.shiftDateRange(-1, e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled || !this.dateFrom.value || !this.dateTo.value}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tarrow_left\n\t\t\t\t\t\t</schmancy-icon-button>\n\n\t\t\t\t\t\t${this.allowDirectInput\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t\t\t\t\tclass=\"date-range-input w-full\"\n\t\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\t.value=${this.isTyping ? this.typedValue : this.selectedDateRange}\n\t\t\t\t\t\t\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\t\t\t\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t\t\t\t\t\t\t?required=${this.required}\n\t\t\t\t\t\t\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\t\t\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\t\t\t\t\t\taria-label=\"Select or type date range. Current: ${this.selectedDateRange || 'No date selected'}\"\n\t\t\t\t\t\t\t\t\t\t@focus=${() => this.openDropdown()}\n\t\t\t\t\t\t\t\t\t\t@input=${this.handleDirectInput}\n\t\t\t\t\t\t\t\t\t\t@blur=${() => this.handleInputBlur()}\n\t\t\t\t\t\t\t\t\t\t@keydown=${(e: KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\t\t\t\tthis.handleInputBlur()\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t></schmancy-input>\n\t\t\t\t\t\t\t `\n\t\t\t\t\t\t\t: html`\n\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\tclass=\"w-max\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\t\t\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\t\t\t\t\t\taria-label=\"Select date range. Current: ${this.selectedDateRange || 'No date selected'}\"\n\t\t\t\t\t\t\t\t\t\t@click=${(e: Event) => this.toggleDropdown(e)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.selectedDateRange || this.placeholder}\n\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t `\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Next ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.shiftDateRange(1, e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled || !this.dateFrom.value || !this.dateTo.value}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tarrow_right\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t</schmancy-grid>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}"],"names":["t","e","n","r","i","s","u","a","o","c","f","h","d","l","$","y","M","name","weekdays","split","months","ordinal","m","String","length","Array","join","v","z","utcOffset","Math","abs","floor","date","year","month","clone","add","ceil","p","w","D","ms","Q","toLowerCase","replace","g","S","_","O","args","arguments","b","locale","$L","utc","$u","x","$x","$offset","this","parse","prototype","$d","Date","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","apply","slice","$locale","weekStart","$set","min","daysInMonth","get","Number","round","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","k","forEach","extend","$i","isDayjs","en","Ls","quarter","bind","enforceDateFormat","dateString","expectedFormat","parsedDate","dayjs","validateInitialDateRange","dateFrom","dateTo","formattedDateFrom","formattedDateTo","quarterOfYear","SchmancyDateRange","$LitElement","constructor","super","type","label","value","customPresets","disabled","required","placeholder","clearable","allowDirectInput","isOpen","selectedDateRange","activePreset","announceMessage","isMobile","isTyping","typedValue","presetRanges","presetCategories","memoizedPresets","Map","connectedCallback","initPresetRanges","checkMobileView","dateFormat","getDateFormat","validatedRange","updateSelectedDateRange","now","setupEventHandlers","fromEvent","document","pipe","takeUntil","disconnecting","subscribe","event","handleKeyboardNavigation","window","debounceTime","disconnectedCallback","changedProps","updated","has","cacheKey","JSON","stringify","cached","category","push","presets","range","step","unshift","customCategory","map","preset","find","checkAndUpdateActivePreset","fromDate","fromTime","toTime","announceToScreenReader","dispatchEvent","CustomEvent","detail","bubbles","composed","stopPropagation","setDateRange","$dialog","dismiss","closeDropdown","openDropdown","dialogContent","createDialogContent","component","title","width","hideActions","then","amount","direction","newQuarter","yearAdjustment","newDate","targetDay","dir","newFromDate","newToDate","isFullMonth","isFullQuarter","isFullYear","isFullWeek","day","unit","rangeDurationInDays","adjustQuarter","rangeDurationInHours","newFromDateStr","newToDateStr","key","target","contains","shiftDateRange","preventDefault","ctrlKey","currentFrom","currentTo","monthStart","daysDiff","monthEnd","matchingPreset","innerWidth","input","separators","parts","sep","includes","trim","handleInputBlur","parsed","parseTypedDateRange","inputRef","html","applyManualDateSelection","ifDefined","minDate","maxDate","getAttribute","handlePresetSelection","message","timer","handleDirectInput","toggleDropdown","__decorateClass","property","Object","Boolean","state","query","customElement"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -60,7 +60,6 @@
60
60
  ${e.presets.map(a=>j.html`
61
61
  <schmancy-button
62
62
  variant="${this.activePreset===a.label?"filled":"text"}"
63
- size="sm"
64
63
  class="w-full justify-start text-left"
65
64
  @click="${t=>this.handlePresetSelection(a,t)}"
66
65
  aria-pressed="${this.activePreset===a.label}"
@@ -137,4 +136,4 @@
137
136
  </div>
138
137
  </div>
139
138
  `}},$([D.property({type:String})],exports.SchmancyDateRange.prototype,"type",2),$([D.property({type:Object})],exports.SchmancyDateRange.prototype,"dateFrom",2),$([D.property({type:Object})],exports.SchmancyDateRange.prototype,"dateTo",2),$([D.property({type:String})],exports.SchmancyDateRange.prototype,"minDate",2),$([D.property({type:String})],exports.SchmancyDateRange.prototype,"maxDate",2),$([D.property({type:Array})],exports.SchmancyDateRange.prototype,"customPresets",2),$([D.property({type:String})],exports.SchmancyDateRange.prototype,"format",2),$([D.property({type:Boolean})],exports.SchmancyDateRange.prototype,"disabled",2),$([D.property({type:Boolean})],exports.SchmancyDateRange.prototype,"required",2),$([D.property({type:String})],exports.SchmancyDateRange.prototype,"placeholder",2),$([D.property({type:Boolean})],exports.SchmancyDateRange.prototype,"clearable",2),$([D.property({type:Boolean})],exports.SchmancyDateRange.prototype,"allowDirectInput",2),$([D.state()],exports.SchmancyDateRange.prototype,"isOpen",2),$([D.state()],exports.SchmancyDateRange.prototype,"selectedDateRange",2),$([D.state()],exports.SchmancyDateRange.prototype,"activePreset",2),$([D.state()],exports.SchmancyDateRange.prototype,"announceMessage",2),$([D.state()],exports.SchmancyDateRange.prototype,"isMobile",2),$([D.state()],exports.SchmancyDateRange.prototype,"isTyping",2),$([D.state()],exports.SchmancyDateRange.prototype,"typedValue",2),$([D.query(".date-range-input")],exports.SchmancyDateRange.prototype,"inputRef",2),exports.SchmancyDateRange=$([D.customElement("schmancy-date-range")],exports.SchmancyDateRange),exports.validateInitialDateRange=oe;
140
- //# sourceMappingURL=date-range-BAKeMiFS.cjs.map
139
+ //# sourceMappingURL=date-range-Dff7Y8Ph.cjs.map