@mhmo91/schmancy 0.4.6 → 0.4.7

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 +0,0 @@
1
- {"version":3,"file":"date-range-C_01AThP.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, 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\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\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\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' : '800px',\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\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=\"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<schmancy-input\n\t\t\t\t\t\t\t\t\ttype=\"${this.type}\"\n\t\t\t\t\t\t\t\t\t.value=\"${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\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></schmancy-input>\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<schmancy-input\n\t\t\t\t\t\t\t\t\ttype=\"${this.type}\"\n\t\t\t\t\t\t\t\t\t.value=\"${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\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></schmancy-input>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<!-- Apply Button - Now at the bottom for logical flow -->\n\t\t\t\t\t\t<div class=\"flex justify-end mt-2\">\n\t\t\t\t\t\t\t<schmancy-button \n\t\t\t\t\t\t\t\tvariant=\"filled\" \n\t\t\t\t\t\t\t\t@click=\"${(e: Event) => this.applyManualDateSelection(e)}\"\n\t\t\t\t\t\t\t\t?disabled=\"${!this.dateFrom.value || !this.dateTo.value}\"\n\t\t\t\t\t\t\t>\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</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\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<section @click=${(event: Event) => event.stopPropagation()} class=\"flex\" >\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<schmancy-button\n\t\t\t\t\t\t\tclass=\"w-max\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\t\t\t\taria-expanded=${this.isOpen}\n\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@click=${(e: Event) => this.toggleDropdown(e)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${this.selectedDateRange || this.placeholder}\n\t\t\t\t\t\t</schmancy-button>\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</section>\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","super","type","label","value","customPresets","disabled","required","placeholder","clearable","isOpen","selectedDateRange","activePreset","announceMessage","isMobile","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","html","ifDefined","minDate","maxDate","applyManualDateSelection","handlePresetSelection","message","timer","toggleDropdown","__decorateClass","property","Object","Boolean","state","customElement"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,119 +0,0 @@
1
- "use strict";const j=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const ut=require("./litElement.mixin-Do6OsQmn.cjs");require("./tailwind.mixin-BvJKKv72.cjs");const dt=require("./_commonjsHelpers-k2hpEU-q.cjs"),B=require("lit"),w=require("lit/decorators.js"),J=require("lit/directives/if-defined.js"),K=require("./dialog-service-BgqAlT7T.cjs");var at,rt={exports:{}},ht=(at||(at=1,rt.exports=function(){var t=1e3,s=6e4,e=36e5,o="millisecond",y="second",u="minute",c="hour",p="day",Y="week",T="month",E="quarter",x="year",P="date",M="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,Q=/\[([^\]]+)]|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,N={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(h){var n=["th","st","nd","rd"],a=h%100;return"["+h+(n[(a-20)%10]||n[a]||n[0])+"]"}},D=function(h,n,a){var d=String(h);return!d||d.length>=n?h:""+Array(n+1-d.length).join(a)+h},ct={s:D,z:function(h){var n=-h.utcOffset(),a=Math.abs(n),d=Math.floor(a/60),r=a%60;return(n<=0?"+":"-")+D(d,2,"0")+":"+D(r,2,"0")},m:function h(n,a){if(n.date()<a.date())return-h(a,n);var d=12*(a.year()-n.year())+(a.month()-n.month()),r=n.clone().add(d,T),l=a-r<0,m=n.clone().add(d+(l?-1:1),T);return+(-(d+(a-r)/(l?r-m:m-r))||0)},a:function(h){return h<0?Math.ceil(h)||0:Math.floor(h)},p:function(h){return{M:T,y:x,w:Y,d:p,D:P,h:c,m:u,s:y,ms:o,Q:E}[h]||String(h||"").toLowerCase().replace(/s$/,"")},u:function(h){return h===void 0}},H="en",C={};C[H]=N;var tt="$isDayjsObject",G=function(h){return h instanceof I||!(!h||!h[tt])},U=function h(n,a,d){var r;if(!n)return H;if(typeof n=="string"){var l=n.toLowerCase();C[l]&&(r=l),a&&(C[l]=a,r=l);var m=n.split("-");if(!r&&m.length>1)return h(m[0])}else{var v=n.name;C[v]=n,r=v}return!d&&r&&(H=r),r||!d&&H},$=function(h,n){if(G(h))return h.clone();var a=typeof n=="object"?n:{};return a.date=h,a.args=arguments,new I(a)},g=ct;g.l=U,g.i=G,g.w=function(h,n){return $(h,{locale:n.$L,utc:n.$u,x:n.$x,$offset:n.$offset})};var I=function(){function h(a){this.$L=U(a.locale,null,!0),this.parse(a),this.$x=this.$x||a.x||{},this[tt]=!0}var n=h.prototype;return n.parse=function(a){this.$d=function(d){var r=d.date,l=d.utc;if(r===null)return new Date(NaN);if(g.u(r))return new Date;if(r instanceof Date)return new Date(r);if(typeof r=="string"&&!/Z$/i.test(r)){var m=r.match(f);if(m){var v=m[2]-1||0,b=(m[7]||"0").substring(0,3);return l?new Date(Date.UTC(m[1],v,m[3]||1,m[4]||0,m[5]||0,m[6]||0,b)):new Date(m[1],v,m[3]||1,m[4]||0,m[5]||0,m[6]||0,b)}}return new Date(r)}(a),this.init()},n.init=function(){var a=this.$d;this.$y=a.getFullYear(),this.$M=a.getMonth(),this.$D=a.getDate(),this.$W=a.getDay(),this.$H=a.getHours(),this.$m=a.getMinutes(),this.$s=a.getSeconds(),this.$ms=a.getMilliseconds()},n.$utils=function(){return g},n.isValid=function(){return this.$d.toString()!==M},n.isSame=function(a,d){var r=$(a);return this.startOf(d)<=r&&r<=this.endOf(d)},n.isAfter=function(a,d){return $(a)<this.startOf(d)},n.isBefore=function(a,d){return this.endOf(d)<$(a)},n.$g=function(a,d,r){return g.u(a)?this[d]:this.set(r,a)},n.unix=function(){return Math.floor(this.valueOf()/1e3)},n.valueOf=function(){return this.$d.getTime()},n.startOf=function(a,d){var r=this,l=!!g.u(d)||d,m=g.p(a),v=function(_,k){var q=g.w(r.$u?Date.UTC(r.$y,k,_):new Date(r.$y,k,_),r);return l?q:q.endOf(p)},b=function(_,k){return g.w(r.toDate()[_].apply(r.toDate("s"),(l?[0,0,0,0]:[23,59,59,999]).slice(k)),r)},O=this.$W,F=this.$M,R=this.$D,A="set"+(this.$u?"UTC":"");switch(m){case x:return l?v(1,0):v(31,11);case T:return l?v(1,F):v(0,F+1);case Y:var L=this.$locale().weekStart||0,V=(O<L?O+7:O)-L;return v(l?R-V:R+(6-V),F);case p:case P:return b(A+"Hours",0);case c:return b(A+"Minutes",1);case u:return b(A+"Seconds",2);case y:return b(A+"Milliseconds",3);default:return this.clone()}},n.endOf=function(a){return this.startOf(a,!1)},n.$set=function(a,d){var r,l=g.p(a),m="set"+(this.$u?"UTC":""),v=(r={},r[p]=m+"Date",r[P]=m+"Date",r[T]=m+"Month",r[x]=m+"FullYear",r[c]=m+"Hours",r[u]=m+"Minutes",r[y]=m+"Seconds",r[o]=m+"Milliseconds",r)[l],b=l===p?this.$D+(d-this.$W):d;if(l===T||l===x){var O=this.clone().set(P,1);O.$d[v](b),O.init(),this.$d=O.set(P,Math.min(this.$D,O.daysInMonth())).$d}else v&&this.$d[v](b);return this.init(),this},n.set=function(a,d){return this.clone().$set(a,d)},n.get=function(a){return this[g.p(a)]()},n.add=function(a,d){var r,l=this;a=Number(a);var m=g.p(d),v=function(F){var R=$(l);return g.w(R.date(R.date()+Math.round(F*a)),l)};if(m===T)return this.set(T,this.$M+a);if(m===x)return this.set(x,this.$y+a);if(m===p)return v(1);if(m===Y)return v(7);var b=(r={},r[u]=s,r[c]=e,r[y]=t,r)[m]||1,O=this.$d.getTime()+a*b;return g.w(O,this)},n.subtract=function(a,d){return this.add(-1*a,d)},n.format=function(a){var d=this,r=this.$locale();if(!this.isValid())return r.invalidDate||M;var l=a||"YYYY-MM-DDTHH:mm:ssZ",m=g.z(this),v=this.$H,b=this.$m,O=this.$M,F=r.weekdays,R=r.months,A=r.meridiem,L=function(k,q,W,z){return k&&(k[q]||k(d,l))||W[q].slice(0,z)},V=function(k){return g.s(v%12||12,k,"0")},_=A||function(k,q,W){var z=k<12?"AM":"PM";return W?z.toLowerCase():z};return l.replace(Q,function(k,q){return q||function(W){switch(W){case"YY":return String(d.$y).slice(-2);case"YYYY":return g.s(d.$y,4,"0");case"M":return O+1;case"MM":return g.s(O+1,2,"0");case"MMM":return L(r.monthsShort,O,R,3);case"MMMM":return L(R,O);case"D":return d.$D;case"DD":return g.s(d.$D,2,"0");case"d":return String(d.$W);case"dd":return L(r.weekdaysMin,d.$W,F,2);case"ddd":return L(r.weekdaysShort,d.$W,F,3);case"dddd":return F[d.$W];case"H":return String(v);case"HH":return g.s(v,2,"0");case"h":return V(1);case"hh":return V(2);case"a":return _(v,b,!0);case"A":return _(v,b,!1);case"m":return String(b);case"mm":return g.s(b,2,"0");case"s":return String(d.$s);case"ss":return g.s(d.$s,2,"0");case"SSS":return g.s(d.$ms,3,"0");case"Z":return m}return null}(k)||m.replace(":","")})},n.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},n.diff=function(a,d,r){var l,m=this,v=g.p(d),b=$(a),O=(b.utcOffset()-this.utcOffset())*s,F=this-b,R=function(){return g.m(m,b)};switch(v){case x:l=R()/12;break;case T:l=R();break;case E:l=R()/3;break;case Y:l=(F-O)/6048e5;break;case p:l=(F-O)/864e5;break;case c:l=F/e;break;case u:l=F/s;break;case y:l=F/t;break;default:l=F}return r?l:g.a(l)},n.daysInMonth=function(){return this.endOf(T).$D},n.$locale=function(){return C[this.$L]},n.locale=function(a,d){if(!a)return this.$L;var r=this.clone(),l=U(a,d,!0);return l&&(r.$L=l),r},n.clone=function(){return g.w(this.$d,this)},n.toDate=function(){return new Date(this.valueOf())},n.toJSON=function(){return this.isValid()?this.toISOString():null},n.toISOString=function(){return this.$d.toISOString()},n.toString=function(){return this.$d.toUTCString()},h}(),et=I.prototype;return $.prototype=et,[["$ms",o],["$s",y],["$m",u],["$H",c],["$W",p],["$M",T],["$y",x],["$D",P]].forEach(function(h){et[h[1]]=function(n){return this.$g(n,h[0],h[1])}}),$.extend=function(h,n){return h.$i||(h(n,I,$),h.$i=!0),$},$.locale=U,$.isDayjs=G,$.unix=function(h){return $(1e3*h)},$.en=C[H],$.Ls=C,$.p={},$}()),rt.exports);const i=dt.getDefaultExportFromCjs(ht);var st,nt={exports:{}},Z,X,lt=st?nt.exports:(st=1,nt.exports=(Z="month",X="quarter",function(t,s){var e=s.prototype;e.quarter=function(u){return this.$utils().u(u)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(u-1))};var o=e.add;e.add=function(u,c){return u=Number(u),this.$utils().p(c)===X?this.add(3*u,Z):o.bind(this)(u,c)};var y=e.startOf;e.startOf=function(u,c){var p=this.$utils(),Y=!!p.u(c)||c;if(p.p(u)===X){var T=this.quarter()-1;return Y?this.month(3*T).startOf(Z).startOf("day"):this.month(3*T+2).endOf(Z).endOf("day")}return y.bind(this)(u,c)}}));const mt=dt.getDefaultExportFromCjs(lt);function it(t,s){if(!t)return null;const e=i(t);return e.isValid()?e.format(s):null}function ot(t,s,e){const o=it(t,e),y=it(s,e);return{dateFrom:o,dateTo:y,isValid:o!==null&&y!==null}}var ft=Object.defineProperty,pt=Object.getOwnPropertyDescriptor,S=(t,s,e,o)=>{for(var y,u=o>1?void 0:o?pt(s,e):s,c=t.length-1;c>=0;c--)(y=t[c])&&(u=(o?y(s,e,u):y(u))||u);return o&&u&&ft(s,e,u),u};i.extend(mt),exports.SchmancyDateRange=class extends ut.$LitElement(){constructor(){super(...arguments),this.type="date",this.dateFrom={label:"From",value:""},this.dateTo={label:"To",value:""},this.customPresets=[],this.disabled=!1,this.required=!1,this.placeholder="Select date range",this.clearable=!0,this.isOpen=!1,this.selectedDateRange="",this.activePreset=null,this.announceMessage="",this.isMobile=!1,this.presetRanges=[],this.presetCategories=[],this.memoizedPresets=new Map}connectedCallback(){super.connectedCallback(),this.initPresetRanges(),this.checkMobileView();const t=this.getDateFormat(),s=ot(this.dateFrom.value,this.dateTo.value,t);if(s.isValid)this.dateFrom.value=s.dateFrom,this.dateTo.value=s.dateTo,this.updateSelectedDateRange();else{const e=i().format(t);this.dateFrom.value=e,this.dateTo.value=e,this.updateSelectedDateRange()}this.setupEventHandlers()}setupEventHandlers(){j.fromEvent(document,"keydown").pipe(j.takeUntil(this.disconnecting)).subscribe(t=>{this.handleKeyboardNavigation(t)}),j.fromEvent(window,"resize").pipe(j.debounceTime(150),j.takeUntil(this.disconnecting)).subscribe(()=>{this.checkMobileView()})}disconnectedCallback(){super.disconnectedCallback()}updated(t){super.updated(t),!t.has("dateFrom")&&!t.has("dateTo")||this.dateFrom?.value===void 0&&this.dateTo?.value===void 0||this.updateSelectedDateRange()}initPresetRanges(){const t=this.getDateFormat(),s=`${this.type}-${t}-${JSON.stringify(this.customPresets)}`;if(this.memoizedPresets.has(s)){const e=this.memoizedPresets.get(s);return this.presetCategories=e,this.presetRanges=[],void e.forEach(o=>{this.presetRanges.push(...o.presets)})}if(this.presetCategories=[{name:"Days",presets:[{label:"Today",range:{dateFrom:i().startOf("day").format(t),dateTo:i().endOf("day").format(t)},step:"day"},{label:"Yesterday",range:{dateFrom:i().subtract(1,"days").startOf("day").format(t),dateTo:i().subtract(1,"days").endOf("day").format(t)},step:"day"},{label:"Last 7 Days",range:{dateFrom:i().subtract(6,"days").startOf("day").format(t),dateTo:i().endOf("day").format(t)},step:"day"},{label:"Last 14 Days",range:{dateFrom:i().subtract(13,"days").startOf("day").format(t),dateTo:i().endOf("day").format(t)},step:"day"},{label:"Last 30 Days",range:{dateFrom:i().subtract(29,"days").startOf("day").format(t),dateTo:i().endOf("day").format(t)},step:"day"},{label:"Last 60 Days",range:{dateFrom:i().subtract(59,"days").startOf("day").format(t),dateTo:i().endOf("day").format(t)},step:"day"},{label:"Last 90 Days",range:{dateFrom:i().subtract(89,"days").startOf("day").format(t),dateTo:i().endOf("day").format(t)},step:"day"}]},{name:"Weeks",presets:[{label:"This Week",range:{dateFrom:i().startOf("week").format(t),dateTo:i().endOf("week").format(t)},step:"week"},{label:"Last Week",range:{dateFrom:i().subtract(1,"weeks").startOf("week").format(t),dateTo:i().subtract(1,"weeks").endOf("week").format(t)},step:"week"},{label:"Last 2 Weeks",range:{dateFrom:i().subtract(2,"weeks").startOf("week").format(t),dateTo:i().endOf("day").format(t)},step:"week"},{label:"Last 4 Weeks",range:{dateFrom:i().subtract(4,"weeks").startOf("week").format(t),dateTo:i().endOf("day").format(t)},step:"week"}]},{name:"Months",presets:[{label:"This Month",range:{dateFrom:i().startOf("month").format(t),dateTo:i().endOf("month").format(t)},step:"month"},{label:"Last Month",range:{dateFrom:i().subtract(1,"month").startOf("month").format(t),dateTo:i().subtract(1,"month").endOf("month").format(t)},step:"month"},{label:"Last 3 Months",range:{dateFrom:i().subtract(3,"months").startOf("month").format(t),dateTo:i().endOf("day").format(t)},step:"month"},{label:"Last 6 Months",range:{dateFrom:i().subtract(6,"months").startOf("month").format(t),dateTo:i().endOf("day").format(t)},step:"month"}]},{name:"Quarters",presets:[{label:"This Quarter",range:{dateFrom:i().startOf("quarter").format(t),dateTo:i().endOf("quarter").format(t)},step:"quarter"},{label:"Last Quarter",range:{dateFrom:i().subtract(1,"quarter").startOf("quarter").format(t),dateTo:i().subtract(1,"quarter").endOf("quarter").format(t)},step:"quarter"},{label:"Last 2 Quarters",range:{dateFrom:i().subtract(2,"quarters").startOf("quarter").format(t),dateTo:i().endOf("day").format(t)},step:"quarter"},{label:"Last 4 Quarters",range:{dateFrom:i().subtract(4,"quarters").startOf("quarter").format(t),dateTo:i().endOf("day").format(t)},step:"quarter"}]},{name:"Years",presets:[{label:"This Year",range:{dateFrom:i().startOf("year").format(t),dateTo:i().endOf("year").format(t)},step:"year"},{label:"Last Year",range:{dateFrom:i().subtract(1,"year").startOf("year").format(t),dateTo:i().subtract(1,"year").endOf("year").format(t)},step:"year"},{label:"Year to Date",range:{dateFrom:i().startOf("year").format(t),dateTo:i().endOf("day").format(t)},step:"day"}]}],this.type==="datetime-local"&&this.presetCategories.unshift({name:"Hours",presets:[{label:"Last 24 Hours",range:{dateFrom:i().subtract(24,"hours").format(t),dateTo:i().format(t)},step:"hour"},{label:"Last 12 Hours",range:{dateFrom:i().subtract(12,"hours").format(t),dateTo:i().format(t)},step:"hour"}]}),this.presetRanges=[],this.presetCategories.forEach(e=>{this.presetRanges.push(...e.presets)}),this.customPresets&&this.customPresets.length>0){const e={name:"Custom",presets:this.customPresets.map(o=>({label:o.label,range:{dateFrom:o.dateFrom,dateTo:o.dateTo},step:"day"}))};this.presetCategories.push(e),this.presetRanges.push(...e.presets)}this.memoizedPresets.set(s,[...this.presetCategories])}getDateFormat(){return this.format||(this.type==="date"?"YYYY-MM-DD":"YYYY-MM-DDTHH:mm")}updateSelectedDateRange(){const t=this.presetRanges.find(u=>u.range.dateFrom===this.dateFrom.value&&u.range.dateTo===this.dateTo.value);if(t)return this.selectedDateRange=t.label,void(this.activePreset=t.label);if(this.checkAndUpdateActivePreset(this.dateFrom.value,this.dateTo.value),this.activePreset=null,!this.dateFrom.value||!this.dateTo.value)return void(this.selectedDateRange=this.placeholder);const s=i(this.dateFrom.value),e=i(this.dateTo.value);if(!s.isValid()||!e.isValid())return void(this.selectedDateRange=this.placeholder);const o=this.type==="datetime-local"?s.format(" h:mm A"):"",y=this.type==="datetime-local"?e.format(" h:mm A"):"";s.isSame(e,"day")?this.selectedDateRange=`${s.format("MMM D, YYYY")}${o}`:s.isSame(e,"month")&&s.isSame(e,"year")?this.selectedDateRange=`${s.format("MMM D")}-${e.format("D, YYYY")}${y}`:s.isSame(e,"year")?this.selectedDateRange=`${s.format("MMM D")} - ${e.format("MMM D, YYYY")}${y}`:this.selectedDateRange=`${s.format("MMM D, YYYY")}${o} - ${e.format("MMM D, YYYY")}${y}`}setDateRange(t,s){this.dateFrom.value=t,this.dateTo.value=s,this.updateSelectedDateRange(),this.announceToScreenReader(`Date range updated: ${this.selectedDateRange}`),this.dispatchEvent(new CustomEvent("change",{detail:{dateFrom:t,dateTo:s},bubbles:!0,composed:!0}))}handlePresetSelection(t,s){s.stopPropagation(),this.activePreset=t.label,this.setDateRange(t.range.dateFrom,t.range.dateTo),K.$dialog.dismiss()}toggleDropdown(t){t.stopPropagation(),this.disabled||(this.isOpen?this.closeDropdown():this.openDropdown())}openDropdown(){if(this.disabled)return;this.isOpen=!0;const t=this.createDialogContent();K.$dialog.component(t,{title:"Select Date Range",width:this.isMobile?"100vw":"800px",hideActions:!0}).then(()=>{this.isOpen=!1})}closeDropdown(){K.$dialog.dismiss(),this.isOpen=!1}adjustQuarter(t,s,e){let o=t.quarter()+e*s,y=0;for(;o>4;)o-=4,y+=1;for(;o<1;)o+=4,y-=1;const u=t.add(y,"year").month(3*(o-1)),c=u.daysInMonth(),p=Math.min(t.date(),c);return u.date(p)}shiftDateRange(t,s){if(s.stopPropagation(),!this.dateFrom.value||!this.dateTo.value)return;const e=i(this.dateFrom.value),o=i(this.dateTo.value);if(!e.isValid()||!o.isValid())return;const y=this.getDateFormat(),u=t>0?1:-1;let c,p;const Y=this.presetRanges.find(D=>D.label===this.activePreset),T=e.date()===1&&o.isSame(e.endOf("month"),"day"),E=e.isSame(e.startOf("quarter"),"day")&&o.isSame(o.endOf("quarter"),"day"),x=e.isSame(e.startOf("year"),"day")&&o.isSame(o.endOf("year"),"day"),P=e.day()===0&&o.day()===6&&o.diff(e,"days")===6;let M="day",f=1;if(Y)M=Y.step,f=1;else{const D=o.diff(e,"day");D>=360?(M="year",f=Math.round(D/365)):D>=90?(M="quarter",f=Math.round(D/90)):D>=30?(M="month",f=Math.round(D/30)):D>=7?(M="week",f=Math.round(D/7)):(M="day",f=D+1)}if(M==="quarter")E?u>0?(c=this.adjustQuarter(e,f,1).startOf("quarter"),p=c.endOf("quarter")):(c=this.adjustQuarter(e,f,-1).startOf("quarter"),p=c.endOf("quarter")):u>0?(c=this.adjustQuarter(e,f,1),p=this.adjustQuarter(o,f,1)):(c=this.adjustQuarter(e,f,-1),p=this.adjustQuarter(o,f,-1));else if(M==="hour"){const D=o.diff(e,"hour");u>0?(c=e.add(D,"hour"),p=o.add(D,"hour")):(c=e.subtract(D,"hour"),p=o.subtract(D,"hour"))}else M==="year"&&x?u>0?(c=e.add(f,"year").startOf("year"),p=c.endOf("year")):(c=e.subtract(f,"year").startOf("year"),p=c.endOf("year")):M==="year"?u>0?(c=e.add(f,"year"),p=o.add(f,"year")):(c=e.subtract(f,"year"),p=o.subtract(f,"year")):M==="month"&&T?u>0?(c=e.add(f,"month").startOf("month"),p=c.endOf("month")):(c=e.subtract(f,"month").startOf("month"),p=c.endOf("month")):M==="month"?u>0?(c=e.add(f,"month"),p=o.add(f,"month")):(c=e.subtract(f,"month"),p=o.subtract(f,"month")):M==="week"&&P?u>0?(c=e.add(f,"week").startOf("week"),p=c.endOf("week")):(c=e.subtract(f,"week").startOf("week"),p=c.endOf("week")):M==="week"?u>0?(c=e.add(f,"week"),p=o.add(f,"week")):(c=e.subtract(f,"week"),p=o.subtract(f,"week")):u>0?(c=e.add(f,"day"),p=o.add(f,"day")):(c=e.subtract(f,"day"),p=o.subtract(f,"day"));const Q=c.format(y),N=p.format(y);this.setDateRange(Q,N),this.checkAndUpdateActivePreset(Q,N)}handleKeyboardNavigation(t){const s=t.key;if(this.dateFrom.value&&this.dateTo.value&&!this.disabled)switch(s){case"PageUp":(t.target===this||this.contains(t.target))&&(this.shiftDateRange(-1,t),t.preventDefault());break;case"PageDown":(t.target===this||this.contains(t.target))&&(this.shiftDateRange(1,t),t.preventDefault());break;case"Home":if(t.ctrlKey&&(t.target===this||this.contains(t.target))){const e=i(this.dateFrom.value),o=i(this.dateTo.value),y=e.startOf("month"),u=o.diff(e,"day");this.setDateRange(y.format(this.getDateFormat()),y.add(u,"day").format(this.getDateFormat())),t.preventDefault()}break;case"End":if(t.ctrlKey&&(t.target===this||this.contains(t.target))){const e=i(this.dateFrom.value),o=i(this.dateTo.value),y=o.diff(e,"day"),u=o.endOf("month");this.setDateRange(u.subtract(y,"day").format(this.getDateFormat()),u.format(this.getDateFormat())),t.preventDefault()}}}checkAndUpdateActivePreset(t,s){const e=this.presetRanges.find(o=>o.range.dateFrom===t&&o.range.dateTo===s);this.activePreset=e?e.label:null}applyManualDateSelection(t){t.stopPropagation();const s=i(this.dateFrom.value),e=i(this.dateTo.value);s.isValid()&&e.isValid()?(s.isAfter(e)?this.setDateRange(e.format(this.getDateFormat()),s.format(this.getDateFormat())):this.setDateRange(this.dateFrom.value,this.dateTo.value),K.$dialog.dismiss()):this.announceToScreenReader("Invalid date format. Please check your input.")}checkMobileView(){this.isMobile=window.innerWidth<768}createDialogContent(){return B.html`
2
- <div class="w-full min-h-[400px] max-h-[80vh] flex flex-col p-4">
3
- <!-- Custom Range Section with Inline Calendars -->
4
- <schmancy-surface type="container" class="rounded-xl p-4 mb-6">
5
- <div class="flex flex-col gap-4">
6
- <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
7
- <!-- From Date Calendar -->
8
- <div class="flex flex-col gap-2">
9
- <schmancy-typography type="label" token="md" class="text-surface-onVariant">
10
- ${this.dateFrom.label||"From"}
11
- </schmancy-typography>
12
- <schmancy-input
13
- type="${this.type}"
14
- .value="${this.dateFrom.value}"
15
- min="${J.ifDefined(this.minDate)}"
16
- max="${J.ifDefined(this.maxDate)}"
17
- @change="${t=>{const s=t.target;this.dateFrom.value=s.value,this.updateSelectedDateRange()}}"
18
- ></schmancy-input>
19
- </div>
20
-
21
- <!-- To Date Calendar -->
22
- <div class="flex flex-col gap-2">
23
- <schmancy-typography type="label" token="md" class="text-surface-onVariant">
24
- ${this.dateTo.label||"To"}
25
- </schmancy-typography>
26
- <schmancy-input
27
- type="${this.type}"
28
- .value="${this.dateTo.value}"
29
- min="${J.ifDefined(this.dateFrom.value)}"
30
- max="${J.ifDefined(this.maxDate)}"
31
- @change="${t=>{const s=t.target;this.dateTo.value=s.value,this.updateSelectedDateRange()}}"
32
- ></schmancy-input>
33
- </div>
34
- </div>
35
-
36
- <!-- Apply Button - Now at the bottom for logical flow -->
37
- <div class="flex justify-end mt-2">
38
- <schmancy-button
39
- variant="filled"
40
- @click="${t=>this.applyManualDateSelection(t)}"
41
- ?disabled="${!this.dateFrom.value||!this.dateTo.value}"
42
- >
43
- Apply
44
- </schmancy-button>
45
- </div>
46
- </div>
47
- </schmancy-surface>
48
-
49
- <!-- Presets Section -->
50
- <div class="flex-1 overflow-y-auto overflow-x-hidden min-h-0">
51
- <div class="grid grid-cols-2 md:grid-cols-5 gap-6">
52
- ${this.presetCategories.map(t=>B.html`
53
- <div class="space-y-3">
54
- <schmancy-typography type="title" token="md" class="text-surface-onVariant font-medium">
55
- ${t.name}
56
- </schmancy-typography>
57
- <div class="space-y-1">
58
- ${t.presets.map(s=>B.html`
59
- <schmancy-button
60
- variant="${this.activePreset===s.label?"filled":"text"}"
61
- class="w-full justify-start text-left"
62
- @click="${e=>this.handlePresetSelection(s,e)}"
63
- aria-pressed="${this.activePreset===s.label}"
64
- aria-label="${s.label}: ${s.range.dateFrom} to ${s.range.dateTo}"
65
- title="${s.range.dateFrom} to ${s.range.dateTo}"
66
- >
67
- <span class="truncate">${s.label}</span>
68
- </schmancy-button>
69
- `)}
70
- </div>
71
- </div>
72
- `)}
73
- </div>
74
- </div>
75
- </div>
76
- `}announceToScreenReader(t){this.announceMessage=t,j.timer(100).pipe(j.takeUntil(this.disconnecting)).subscribe(()=>{this.announceMessage=""})}render(){return B.html`
77
- <div class="relative ${this.disabled?"opacity-60 pointer-events-none":""}">
78
- <!-- Screen reader announcements -->
79
- <div class="sr-only" role="status" aria-live="polite" aria-atomic="true">
80
- ${this.announceMessage}
81
- </div>
82
-
83
- <!-- Trigger using the preferred schmancy-grid pattern -->
84
- <div class="trigger-container">
85
- <section @click=${t=>t.stopPropagation()} class="flex" >
86
- <schmancy-icon-button
87
- type="button"
88
- aria-label="Previous ${this.activePreset?this.activePreset.toLowerCase():"date range"}"
89
- @click=${t=>this.shiftDateRange(-1,t)}
90
- ?disabled=${this.disabled||!this.dateFrom.value||!this.dateTo.value}
91
- >
92
- arrow_left
93
- </schmancy-icon-button>
94
-
95
- <schmancy-button
96
- class="w-max"
97
- variant="outlined"
98
- type="button"
99
- aria-haspopup="menu"
100
- aria-expanded=${this.isOpen}
101
- aria-label="Select date range. Current: ${this.selectedDateRange||"No date selected"}"
102
- @click=${t=>this.toggleDropdown(t)}
103
- >
104
- ${this.selectedDateRange||this.placeholder}
105
- </schmancy-button>
106
-
107
- <schmancy-icon-button
108
- type="button"
109
- aria-label="Next ${this.activePreset?this.activePreset.toLowerCase():"date range"}"
110
- @click=${t=>this.shiftDateRange(1,t)}
111
- ?disabled=${this.disabled||!this.dateFrom.value||!this.dateTo.value}
112
- >
113
- arrow_right
114
- </schmancy-icon-button>
115
- </section>
116
- </div>
117
- </div>
118
- `}},S([w.property({type:String})],exports.SchmancyDateRange.prototype,"type",2),S([w.property({type:Object})],exports.SchmancyDateRange.prototype,"dateFrom",2),S([w.property({type:Object})],exports.SchmancyDateRange.prototype,"dateTo",2),S([w.property({type:String})],exports.SchmancyDateRange.prototype,"minDate",2),S([w.property({type:String})],exports.SchmancyDateRange.prototype,"maxDate",2),S([w.property({type:Array})],exports.SchmancyDateRange.prototype,"customPresets",2),S([w.property({type:String})],exports.SchmancyDateRange.prototype,"format",2),S([w.property({type:Boolean})],exports.SchmancyDateRange.prototype,"disabled",2),S([w.property({type:Boolean})],exports.SchmancyDateRange.prototype,"required",2),S([w.property({type:String})],exports.SchmancyDateRange.prototype,"placeholder",2),S([w.property({type:Boolean})],exports.SchmancyDateRange.prototype,"clearable",2),S([w.state()],exports.SchmancyDateRange.prototype,"isOpen",2),S([w.state()],exports.SchmancyDateRange.prototype,"selectedDateRange",2),S([w.state()],exports.SchmancyDateRange.prototype,"activePreset",2),S([w.state()],exports.SchmancyDateRange.prototype,"announceMessage",2),S([w.state()],exports.SchmancyDateRange.prototype,"isMobile",2),exports.SchmancyDateRange=S([w.customElement("schmancy-date-range")],exports.SchmancyDateRange),exports.validateInitialDateRange=ot;
119
- //# sourceMappingURL=date-range-DSVDY7Uj.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-range-DSVDY7Uj.cjs","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, 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\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\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\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' : '800px',\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\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=\"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<schmancy-input\n\t\t\t\t\t\t\t\t\ttype=\"${this.type}\"\n\t\t\t\t\t\t\t\t\t.value=\"${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\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></schmancy-input>\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<schmancy-input\n\t\t\t\t\t\t\t\t\ttype=\"${this.type}\"\n\t\t\t\t\t\t\t\t\t.value=\"${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\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></schmancy-input>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<!-- Apply Button - Now at the bottom for logical flow -->\n\t\t\t\t\t\t<div class=\"flex justify-end mt-2\">\n\t\t\t\t\t\t\t<schmancy-button \n\t\t\t\t\t\t\t\tvariant=\"filled\" \n\t\t\t\t\t\t\t\t@click=\"${(e: Event) => this.applyManualDateSelection(e)}\"\n\t\t\t\t\t\t\t\t?disabled=\"${!this.dateFrom.value || !this.dateTo.value}\"\n\t\t\t\t\t\t\t>\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</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\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<section @click=${(event: Event) => event.stopPropagation()} class=\"flex\" >\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<schmancy-button\n\t\t\t\t\t\t\tclass=\"w-max\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\t\t\t\taria-expanded=${this.isOpen}\n\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@click=${(e: Event) => this.toggleDropdown(e)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${this.selectedDateRange || this.placeholder}\n\t\t\t\t\t\t</schmancy-button>\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</section>\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","isOpen","selectedDateRange","activePreset","announceMessage","isMobile","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","html","ifDefined","minDate","maxDate","applyManualDateSelection","handlePresetSelection","message","timer","render","toggleDropdown","__decorateClass","property","Object","Boolean","state","customElement"],"mappings":"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","x_google_ignoreList":[0,1]}