@3mo/date-time-fields 0.1.6 → 0.2.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3mo/date-time-fields",
3
- "version": "0.1.6",
3
+ "version": "0.2.0",
4
4
  "description": "A set of date-time related fields.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,9 +24,6 @@
24
24
  "dist"
25
25
  ],
26
26
  "dependencies": {
27
- "tslib": "x",
28
- "@a11d/lit": "x",
29
- "@a11d/array.prototype.group": "x",
30
27
  "@3mo/date-time": "x",
31
28
  "@3mo/field": "x",
32
29
  "@3mo/flex": "x",
@@ -39,6 +36,10 @@
39
36
  "@3mo/popover": "x",
40
37
  "@3mo/scroller": "x",
41
38
  "@3mo/tab": "x",
42
- "@3mo/text-fields": "x"
39
+ "@3mo/text-fields": "x",
40
+ "@a11d/array.prototype.group": "x",
41
+ "@a11d/lit": "x",
42
+ "tslib": "x",
43
+ "typescript-memoize": "1.x"
43
44
  }
44
45
  }
@@ -1,9 +0,0 @@
1
- export declare class DateParser {
2
- private static getDateSeparator;
3
- static parse(dateText: string, referenceDate?: import("@3mo/date-time/DateTime.js").DateTime): import("@3mo/date-time/DateTime.js").DateTime | undefined;
4
- private static parseDateFromLocalDate;
5
- private static parseDateFromOperation;
6
- private static parseDateFromShortcut;
7
- private static parseDateFromKeyword;
8
- }
9
- //# sourceMappingURL=DateParser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DateParser.d.ts","sourceRoot":"","sources":["../DateParser.ts"],"names":[],"mappings":"AAEA,qBAAa,UAAU;IACtB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAI/B,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,gDAAe;IAgC3D,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAgBrC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAiBrC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAOpC,OAAO,CAAC,MAAM,CAAC,oBAAoB;CA8BnC"}
@@ -1,93 +0,0 @@
1
- import { Localizer } from '@3mo/localization';
2
- export class DateParser {
3
- static getDateSeparator(language = Localizer.currentLanguage) {
4
- return Intl.DateTimeFormat(language).format(new Date).replace(/\p{Number}/gu, '')[0];
5
- }
6
- static parse(dateText, referenceDate = new DateTime) {
7
- dateText = dateText.toLowerCase().trim();
8
- if (!dateText) {
9
- return undefined;
10
- }
11
- if (dateText.startsWith('+') || dateText.startsWith('-')) {
12
- return DateParser.parseDateFromOperation(dateText, referenceDate);
13
- }
14
- if (dateText.includes(DateParser.getDateSeparator())) {
15
- return DateParser.parseDateFromLocalDate(dateText, referenceDate);
16
- }
17
- if ((dateText.length === 3 || dateText.length === 4 || dateText.length === 8) && !isNaN(parseInt(dateText))) {
18
- return DateParser.parseDateFromShortcut(dateText);
19
- }
20
- const date = new DateTime(dateText || new DateTime);
21
- if (String(date) !== 'Invalid Date') {
22
- return date;
23
- }
24
- const keywordDate = DateParser.parseDateFromKeyword(dateText, referenceDate);
25
- if (keywordDate) {
26
- return keywordDate;
27
- }
28
- return undefined;
29
- }
30
- static parseDateFromLocalDate(dateText, referenceDate = new DateTime) {
31
- const date = new DateTime(dateText);
32
- if (String(date) === 'Invalid Date') {
33
- return undefined;
34
- }
35
- const dateParts = dateText.split(DateParser.getDateSeparator());
36
- if (dateParts.length === 2) {
37
- date.setFullYear(referenceDate.getFullYear());
38
- }
39
- return date;
40
- }
41
- static parseDateFromOperation(dateText, referenceDate = new DateTime) {
42
- const lastChar = dateText.charAt(dateText.length - 1).toLowerCase();
43
- let num;
44
- if (!isNaN(Number(lastChar))) {
45
- num = parseInt(dateText.substring(0, dateText.length));
46
- return referenceDate.add({ days: num });
47
- }
48
- else {
49
- num = parseInt(dateText.substring(0, dateText.length - 1));
50
- switch (lastChar) {
51
- case 'y': return referenceDate.add({ years: num });
52
- case 'm': return referenceDate.add({ months: num });
53
- default: return undefined;
54
- }
55
- }
56
- }
57
- static parseDateFromShortcut(dateText) {
58
- const day = dateText.substring(0, 2);
59
- const month = dateText.substring(2, dateText.length >= 4 ? 4 : 3);
60
- const year = length !== 8 ? undefined : dateText.substring(4, 8);
61
- return new DateTime(year ? parseInt(year) : new Date().getFullYear(), parseInt(month) - 1, parseInt(day));
62
- }
63
- static parseDateFromKeyword(keyword, referenceDate = new DateTime) {
64
- switch (keyword) {
65
- case 'h': return new DateTime(referenceDate);
66
- case 'üm': return referenceDate.add({ days: +2 });
67
- case 'm': return referenceDate.add({ days: +1 });
68
- case 'üüm': return referenceDate.add({ days: +3 });
69
- case 'g': return referenceDate.add({ days: -1 });
70
- case 'vg': return referenceDate.add({ days: -2 });
71
- case 'vvg': return referenceDate.add({ days: -3 });
72
- case 'adw': return referenceDate.weekStart;
73
- case 'edw': return referenceDate.weekEnd;
74
- case 'anw': return referenceDate.add({ weeks: +1 }).weekStart;
75
- case 'enw': return referenceDate.add({ weeks: +1 }).weekEnd;
76
- case 'alw': return referenceDate.add({ weeks: -1 }).weekStart;
77
- case 'elw': return referenceDate.add({ weeks: -1 }).weekEnd;
78
- case 'adm': return referenceDate.monthStart;
79
- case 'edm': return referenceDate.monthEnd;
80
- case 'anm': return referenceDate.add({ months: +1 }).monthStart;
81
- case 'enm': return referenceDate.add({ months: +1 }).monthEnd;
82
- case 'alm': return referenceDate.add({ months: -1 }).monthStart;
83
- case 'elm': return referenceDate.add({ months: -1 }).monthEnd;
84
- case 'adj': return referenceDate.yearStart;
85
- case 'edj': return referenceDate.yearEnd;
86
- case 'anj': return referenceDate.add({ years: +1 }).yearStart;
87
- case 'enj': return referenceDate.add({ years: +1 }).yearEnd;
88
- case 'alj': return referenceDate.add({ years: -1 }).yearStart;
89
- case 'elj': return referenceDate.add({ years: -1 }).yearEnd;
90
- default: return undefined;
91
- }
92
- }
93
- }