@triptease/tt-date-range-picker 6.4.3 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/SidePanel/PresetButton.js +6 -0
- package/dist/cjs/src/SidePanel/PresetButton.js.map +1 -1
- package/dist/esm/src/SidePanel/PresetButton.d.ts +1 -0
- package/dist/esm/src/SidePanel/PresetButton.js +6 -0
- package/dist/esm/src/SidePanel/PresetButton.js.map +1 -1
- package/dist/esm/test/preset-button.test.js +13 -0
- package/dist/esm/test/preset-button.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -18,6 +18,7 @@ var Preset;
|
|
|
18
18
|
Preset["LastWeek"] = "Last week";
|
|
19
19
|
Preset["ThisMonth"] = "This month";
|
|
20
20
|
Preset["LastMonth"] = "Last month";
|
|
21
|
+
Preset["MonthToDate"] = "Month to date";
|
|
21
22
|
Preset["ThisQuarter"] = "This quarter";
|
|
22
23
|
Preset["LastQuarter"] = "Last quarter";
|
|
23
24
|
Preset["YearToDate"] = "Year to date";
|
|
@@ -102,6 +103,11 @@ class PresetButton extends lit_1.LitElement {
|
|
|
102
103
|
};
|
|
103
104
|
case Preset.AllTime:
|
|
104
105
|
return { startDate: undefined, endDate: undefined };
|
|
106
|
+
case Preset.MonthToDate:
|
|
107
|
+
return {
|
|
108
|
+
startDate: this.today.startOf('month').toISODate(),
|
|
109
|
+
endDate: this.today.toISODate(),
|
|
110
|
+
};
|
|
105
111
|
default:
|
|
106
112
|
return { startDate: this.today.toISODate(), endDate: this.today.plus({ days: 28 }).toISODate() };
|
|
107
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresetButton.js","sourceRoot":"","sources":["../../../../src/SidePanel/PresetButton.ts"],"names":[],"mappings":";;;;;;;;;AAAA,6BAAuC;AACvC,qDAA6C;AAC7C,iCAAiC;AACjC,gGAAsG;AACtG,2CAAqC;AAErC,IAAY,
|
|
1
|
+
{"version":3,"file":"PresetButton.js","sourceRoot":"","sources":["../../../../src/SidePanel/PresetButton.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { DateTime } from 'luxon';\nimport { DateRange, DateRangeSelectionEvent } from '@triptease/tt-calendar/date-selection-context.js';\nimport { button } from './styles.js';\n\nexport enum Preset {\n ThisWeek = 'This week',\n LastWeek = 'Last week',\n ThisMonth = 'This month',\n LastMonth = 'Last month',\n MonthToDate = 'Month to date',\n ThisQuarter = 'This quarter',\n LastQuarter = 'Last quarter',\n YearToDate = 'Year to date',\n LastYear = 'Last year',\n Next1Month = 'Next 1 month',\n Next3Months = 'Next 3 months',\n Next6Months = 'Next 6 months',\n Next12Months = 'Next 12 months',\n AllTime = 'All time',\n}\n\nconst parsePreset = (value: string | null): Preset | undefined => {\n if (!value) return undefined;\n if (Object.values(Preset).includes(<Preset>value)) return <Preset>value;\n return undefined;\n};\n\nexport class PresetButton extends LitElement {\n static styles = button;\n\n @property({ type: Preset, converter: parsePreset })\n public preset?: Preset;\n\n private _onClick = (event: MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n this.dispatchEvent(new DateRangeSelectionEvent(this.range));\n };\n\n private get today(): DateTime {\n return DateTime.local().startOf('day');\n }\n\n private get range(): DateRange {\n switch (this.preset) {\n case Preset.ThisWeek:\n return { startDate: this.today.startOf('week').toISODate()!, endDate: this.today.endOf('week').toISODate()! };\n case Preset.LastWeek:\n return {\n startDate: this.today.startOf('week').minus({ weeks: 1 }).toISODate()!,\n endDate: this.today.endOf('week').minus({ weeks: 1 }).toISODate()!,\n };\n case Preset.ThisMonth:\n return { startDate: this.today.startOf('month').toISODate()!, endDate: this.today.endOf('month').toISODate()! };\n case Preset.LastMonth:\n return {\n startDate: this.today.minus({ months: 1 }).startOf('month').toISODate()!,\n endDate: this.today.minus({ months: 1 }).endOf('month').toISODate()!,\n };\n case Preset.ThisQuarter:\n return {\n startDate: this.today.startOf('quarter').toISODate()!,\n endDate: this.today.endOf('quarter').toISODate()!,\n };\n case Preset.YearToDate:\n return { startDate: this.today.startOf('year').toISODate()!, endDate: this.today.toISODate()! };\n case Preset.Next1Month:\n return {\n startDate: this.today.toISODate()!,\n endDate: this.today.plus({ months: 1 }).toISODate()!,\n };\n case Preset.Next3Months:\n return {\n startDate: this.today.toISODate()!,\n endDate: this.today.plus({ months: 3 }).toISODate()!,\n };\n case Preset.Next6Months:\n return {\n startDate: this.today.toISODate()!,\n endDate: this.today.plus({ months: 6 }).toISODate()!,\n };\n case Preset.Next12Months:\n return {\n startDate: this.today.toISODate()!,\n endDate: this.today.plus({ months: 12 }).toISODate()!,\n };\n case Preset.LastQuarter:\n return {\n startDate: this.today.minus({ quarters: 1 }).startOf('quarter').toISODate()!,\n endDate: this.today.minus({ quarters: 1 }).endOf('quarter').toISODate()!,\n };\n case Preset.LastYear:\n return {\n startDate: this.today.minus({ years: 1 }).startOf('year').toISODate()!,\n endDate: this.today.minus({ years: 1 }).endOf('year').toISODate()!,\n };\n case Preset.AllTime:\n return { startDate: undefined, endDate: undefined };\n case Preset.MonthToDate:\n return {\n startDate: this.today.startOf('month').toISODate()!,\n endDate: this.today.toISODate()!,\n };\n default:\n return { startDate: this.today.toISODate()!, endDate: this.today.plus({ days: 28 }).toISODate()! };\n }\n }\n\n public render() {\n return html` <button @click=\"${this._onClick}\">\n <slot>${this.preset}</slot>\n </button>`;\n }\n}\n"]}
|
|
@@ -15,6 +15,7 @@ export var Preset;
|
|
|
15
15
|
Preset["LastWeek"] = "Last week";
|
|
16
16
|
Preset["ThisMonth"] = "This month";
|
|
17
17
|
Preset["LastMonth"] = "Last month";
|
|
18
|
+
Preset["MonthToDate"] = "Month to date";
|
|
18
19
|
Preset["ThisQuarter"] = "This quarter";
|
|
19
20
|
Preset["LastQuarter"] = "Last quarter";
|
|
20
21
|
Preset["YearToDate"] = "Year to date";
|
|
@@ -99,6 +100,11 @@ export class PresetButton extends LitElement {
|
|
|
99
100
|
};
|
|
100
101
|
case Preset.AllTime:
|
|
101
102
|
return { startDate: undefined, endDate: undefined };
|
|
103
|
+
case Preset.MonthToDate:
|
|
104
|
+
return {
|
|
105
|
+
startDate: this.today.startOf('month').toISODate(),
|
|
106
|
+
endDate: this.today.toISODate(),
|
|
107
|
+
};
|
|
102
108
|
default:
|
|
103
109
|
return { startDate: this.today.toISODate(), endDate: this.today.plus({ days: 28 }).toISODate() };
|
|
104
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresetButton.js","sourceRoot":"","sources":["../../../../src/SidePanel/PresetButton.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAa,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AACtG,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"PresetButton.js","sourceRoot":"","sources":["../../../../src/SidePanel/PresetButton.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAa,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AACtG,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,CAAN,IAAY,MAeX;AAfD,WAAY,MAAM;IAChB,gCAAsB,CAAA;IACtB,gCAAsB,CAAA;IACtB,kCAAwB,CAAA;IACxB,kCAAwB,CAAA;IACxB,uCAA6B,CAAA;IAC7B,sCAA4B,CAAA;IAC5B,sCAA4B,CAAA;IAC5B,qCAA2B,CAAA;IAC3B,gCAAsB,CAAA;IACtB,qCAA2B,CAAA;IAC3B,uCAA6B,CAAA;IAC7B,uCAA6B,CAAA;IAC7B,yCAA+B,CAAA;IAC/B,8BAAoB,CAAA;AACtB,CAAC,EAfW,MAAM,KAAN,MAAM,QAejB;AAED,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAsB,EAAE;IAC/D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAS,KAAK,CAAC;QAAE,OAAe,KAAK,CAAC;IACxE,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,OAAO,YAAa,SAAQ,UAAU;IAA5C;;QAMU,aAAQ,GAAG,CAAC,KAAiB,EAAE,EAAE;YACvC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC;IA4EJ,CAAC;IA1EC,IAAY,KAAK;QACf,OAAO,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,IAAY,KAAK;QACf,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,MAAM,CAAC,QAAQ;gBAClB,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAG,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,EAAG,EAAE,CAAC;YAChH,KAAK,MAAM,CAAC,QAAQ;gBAClB,OAAO;oBACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,EAAG;oBACtE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,EAAG;iBACnE,CAAC;YACJ,KAAK,MAAM,CAAC,SAAS;gBACnB,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,EAAG,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,EAAG,EAAE,CAAC;YAClH,KAAK,MAAM,CAAC,SAAS;gBACnB,OAAO;oBACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,EAAG;oBACxE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,EAAG;iBACrE,CAAC;YACJ,KAAK,MAAM,CAAC,WAAW;gBACrB,OAAO;oBACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,EAAG;oBACrD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,EAAG;iBAClD,CAAC;YACJ,KAAK,MAAM,CAAC,UAAU;gBACpB,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAG,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAG,EAAE,CAAC;YAClG,KAAK,MAAM,CAAC,UAAU;gBACpB,OAAO;oBACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAG;oBAClC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,EAAG;iBACrD,CAAC;YACJ,KAAK,MAAM,CAAC,WAAW;gBACrB,OAAO;oBACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAG;oBAClC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,EAAG;iBACrD,CAAC;YACJ,KAAK,MAAM,CAAC,WAAW;gBACrB,OAAO;oBACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAG;oBAClC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,EAAG;iBACrD,CAAC;YACJ,KAAK,MAAM,CAAC,YAAY;gBACtB,OAAO;oBACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAG;oBAClC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAG;iBACtD,CAAC;YACJ,KAAK,MAAM,CAAC,WAAW;gBACrB,OAAO;oBACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,EAAG;oBAC5E,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,EAAG;iBACzE,CAAC;YACJ,KAAK,MAAM,CAAC,QAAQ;gBAClB,OAAO;oBACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAG;oBACtE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,EAAG;iBACnE,CAAC;YACJ,KAAK,MAAM,CAAC,OAAO;gBACjB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;YACtD,KAAK,MAAM,CAAC,WAAW;gBACrB,OAAO;oBACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,EAAG;oBACnD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAG;iBACjC,CAAC;YACJ;gBACE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAG,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAG,EAAE,CAAC;QACvG,CAAC;IACH,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAA,oBAAoB,IAAI,CAAC,QAAQ;cAClC,IAAI,CAAC,MAAM;cACX,CAAC;IACb,CAAC;;AApFM,mBAAM,GAAG,MAAM,AAAT,CAAU;AAGhB;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;4CAC5B","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { DateTime } from 'luxon';\nimport { DateRange, DateRangeSelectionEvent } from '@triptease/tt-calendar/date-selection-context.js';\nimport { button } from './styles.js';\n\nexport enum Preset {\n ThisWeek = 'This week',\n LastWeek = 'Last week',\n ThisMonth = 'This month',\n LastMonth = 'Last month',\n MonthToDate = 'Month to date',\n ThisQuarter = 'This quarter',\n LastQuarter = 'Last quarter',\n YearToDate = 'Year to date',\n LastYear = 'Last year',\n Next1Month = 'Next 1 month',\n Next3Months = 'Next 3 months',\n Next6Months = 'Next 6 months',\n Next12Months = 'Next 12 months',\n AllTime = 'All time',\n}\n\nconst parsePreset = (value: string | null): Preset | undefined => {\n if (!value) return undefined;\n if (Object.values(Preset).includes(<Preset>value)) return <Preset>value;\n return undefined;\n};\n\nexport class PresetButton extends LitElement {\n static styles = button;\n\n @property({ type: Preset, converter: parsePreset })\n public preset?: Preset;\n\n private _onClick = (event: MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n this.dispatchEvent(new DateRangeSelectionEvent(this.range));\n };\n\n private get today(): DateTime {\n return DateTime.local().startOf('day');\n }\n\n private get range(): DateRange {\n switch (this.preset) {\n case Preset.ThisWeek:\n return { startDate: this.today.startOf('week').toISODate()!, endDate: this.today.endOf('week').toISODate()! };\n case Preset.LastWeek:\n return {\n startDate: this.today.startOf('week').minus({ weeks: 1 }).toISODate()!,\n endDate: this.today.endOf('week').minus({ weeks: 1 }).toISODate()!,\n };\n case Preset.ThisMonth:\n return { startDate: this.today.startOf('month').toISODate()!, endDate: this.today.endOf('month').toISODate()! };\n case Preset.LastMonth:\n return {\n startDate: this.today.minus({ months: 1 }).startOf('month').toISODate()!,\n endDate: this.today.minus({ months: 1 }).endOf('month').toISODate()!,\n };\n case Preset.ThisQuarter:\n return {\n startDate: this.today.startOf('quarter').toISODate()!,\n endDate: this.today.endOf('quarter').toISODate()!,\n };\n case Preset.YearToDate:\n return { startDate: this.today.startOf('year').toISODate()!, endDate: this.today.toISODate()! };\n case Preset.Next1Month:\n return {\n startDate: this.today.toISODate()!,\n endDate: this.today.plus({ months: 1 }).toISODate()!,\n };\n case Preset.Next3Months:\n return {\n startDate: this.today.toISODate()!,\n endDate: this.today.plus({ months: 3 }).toISODate()!,\n };\n case Preset.Next6Months:\n return {\n startDate: this.today.toISODate()!,\n endDate: this.today.plus({ months: 6 }).toISODate()!,\n };\n case Preset.Next12Months:\n return {\n startDate: this.today.toISODate()!,\n endDate: this.today.plus({ months: 12 }).toISODate()!,\n };\n case Preset.LastQuarter:\n return {\n startDate: this.today.minus({ quarters: 1 }).startOf('quarter').toISODate()!,\n endDate: this.today.minus({ quarters: 1 }).endOf('quarter').toISODate()!,\n };\n case Preset.LastYear:\n return {\n startDate: this.today.minus({ years: 1 }).startOf('year').toISODate()!,\n endDate: this.today.minus({ years: 1 }).endOf('year').toISODate()!,\n };\n case Preset.AllTime:\n return { startDate: undefined, endDate: undefined };\n case Preset.MonthToDate:\n return {\n startDate: this.today.startOf('month').toISODate()!,\n endDate: this.today.toISODate()!,\n };\n default:\n return { startDate: this.today.toISODate()!, endDate: this.today.plus({ days: 28 }).toISODate()! };\n }\n }\n\n public render() {\n return html` <button @click=\"${this._onClick}\">\n <slot>${this.preset}</slot>\n </button>`;\n }\n}\n"]}
|
|
@@ -13,6 +13,7 @@ describe('PresetButton', () => {
|
|
|
13
13
|
[
|
|
14
14
|
[Preset.LastWeek, '2024-12-23', '2024-12-29'],
|
|
15
15
|
[Preset.LastMonth, '2024-12-01', '2024-12-31'],
|
|
16
|
+
[Preset.MonthToDate, '2025-01-01', '2025-01-01'],
|
|
16
17
|
[Preset.LastQuarter, '2024-10-01', '2024-12-31'],
|
|
17
18
|
[Preset.LastYear, '2024-01-01', '2024-12-31'],
|
|
18
19
|
[Preset.ThisWeek, '2024-12-30', '2025-01-05'],
|
|
@@ -34,5 +35,17 @@ describe('PresetButton', () => {
|
|
|
34
35
|
await expect(event.detail.endDate).to.equal(endDate);
|
|
35
36
|
});
|
|
36
37
|
});
|
|
38
|
+
it(`should fire a date selection event with the correct date range when the month to date preset is clicked mid month`, async () => {
|
|
39
|
+
const midJan2025 = Date.UTC(2025, 0, 16, 0, 0, 0);
|
|
40
|
+
Settings.now = () => midJan2025;
|
|
41
|
+
const button = await fixture(html `
|
|
42
|
+
<tt-preset-button preset=${Preset.MonthToDate}></tt-preset-button>
|
|
43
|
+
`);
|
|
44
|
+
const dateSelectionPromise = oneEvent(button, 'date-range-selection');
|
|
45
|
+
button.shadowRoot?.querySelector('button')?.click();
|
|
46
|
+
const event = await dateSelectionPromise;
|
|
47
|
+
await expect(event.detail.startDate).to.equal('2025-01-01');
|
|
48
|
+
await expect(event.detail.endDate).to.equal('2025-01-16');
|
|
49
|
+
});
|
|
37
50
|
});
|
|
38
51
|
//# sourceMappingURL=preset-button.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset-button.test.js","sourceRoot":"","sources":["../../../test/preset-button.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAgB,MAAM,iBAAiB,CAAC;AACvD,OAAO,mCAAmC,CAAC;AAE3C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"preset-button.test.js","sourceRoot":"","sources":["../../../test/preset-button.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Settings } from 'luxon';\nimport { expect, fixture, html, oneEvent } from '@open-wc/testing';\nimport { DateRangeSelectionEvent } from '@triptease/tt-calendar/date-selection-context.js';\nimport { Preset, PresetButton } from '../src/index.js';\nimport '../src/SidePanel/tt-side-panel.js';\n\nconst firstJan2025 = Date.UTC(2025, 0, 1, 0, 0, 0);\n\ndescribe('PresetButton', () => {\n before(() => {\n Settings.now = () => firstJan2025;\n });\n\n after(() => {\n Settings.now = () => Date.now();\n });\n\n [\n [Preset.LastWeek, '2024-12-23', '2024-12-29'],\n [Preset.LastMonth, '2024-12-01', '2024-12-31'],\n [Preset.MonthToDate, '2025-01-01', '2025-01-01'],\n [Preset.LastQuarter, '2024-10-01', '2024-12-31'],\n [Preset.LastYear, '2024-01-01', '2024-12-31'],\n [Preset.ThisWeek, '2024-12-30', '2025-01-05'],\n [Preset.YearToDate, '2025-01-01', '2025-01-01'],\n [Preset.ThisQuarter, '2025-01-01', '2025-03-31'],\n [Preset.ThisMonth, '2025-01-01', '2025-01-31'],\n [Preset.Next1Month, '2025-01-01', '2025-02-01'],\n [Preset.Next3Months, '2025-01-01', '2025-04-01'],\n [Preset.Next6Months, '2025-01-01', '2025-07-01'],\n [Preset.Next12Months, '2025-01-01', '2026-01-01'],\n [Preset.AllTime, undefined, undefined],\n ].forEach(([preset, startDate, endDate]) => {\n it(`should fire a date selection event with the correct date range when the ${preset} preset is clicked`, async () => {\n const button = await fixture<PresetButton>(html` <tt-preset-button preset=${preset}></tt-preset-button> `);\n\n const dateSelectionPromise = oneEvent<DateRangeSelectionEvent>(button, 'date-range-selection');\n button.shadowRoot?.querySelector('button')?.click();\n const event = await dateSelectionPromise;\n\n await expect(event.detail.startDate).to.equal(startDate);\n await expect(event.detail.endDate).to.equal(endDate);\n });\n });\n\n it(`should fire a date selection event with the correct date range when the month to date preset is clicked mid month`, async () => {\n const midJan2025 = Date.UTC(2025, 0, 16, 0, 0, 0);\n\n Settings.now = () => midJan2025;\n\n const button = await fixture<PresetButton>(html`\n <tt-preset-button preset=${Preset.MonthToDate}></tt-preset-button>\n `);\n\n const dateSelectionPromise = oneEvent<DateRangeSelectionEvent>(button, 'date-range-selection');\n button.shadowRoot?.querySelector('button')?.click();\n const event = await dateSelectionPromise;\n\n await expect(event.detail.startDate).to.equal('2025-01-01');\n await expect(event.detail.endDate).to.equal('2025-01-16');\n });\n});\n"]}
|