@burdenoff/microfe-crewfoundry 2026.924.1 → 2026.1013.2
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/crewfoundry/components/forms/FormModal.d.ts +25 -1
- package/dist/crewfoundry/components/forms/FormModal.d.ts.map +1 -1
- package/dist/crewfoundry/components/forms/FormModal.js +151 -136
- package/dist/crewfoundry/components/forms/FormModal.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +49 -49
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +260 -115
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +199 -166
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobsPagePage.d.ts.map +1 -1
- package/dist/crewfoundry/pages/HiringJobsPagePage.js +118 -104
- package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
- package/dist/crewfoundry/store/crewfoundryStore.d.ts +1 -1
- package/dist/crewfoundry/store/crewfoundryStore.d.ts.map +1 -1
- package/dist/crewfoundry/store/crewfoundryStore.js.map +1 -1
- package/dist/crewfoundry/utils/dateUtils.d.ts +47 -0
- package/dist/crewfoundry/utils/dateUtils.d.ts.map +1 -0
- package/dist/crewfoundry/utils/dateUtils.js +22 -0
- package/dist/crewfoundry/utils/dateUtils.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local-calendar date utilities for the CrewFoundry MFE.
|
|
3
|
+
*
|
|
4
|
+
* The native `new Date('YYYY-MM-DD')` constructor parses date-only strings
|
|
5
|
+
* as UTC midnight, which silently breaks user-facing date math for callers
|
|
6
|
+
* in non-UTC timezones (a deadline picked as "today" in PST is already
|
|
7
|
+
* 17-20 hours in the past by local noon). These helpers parse and compare
|
|
8
|
+
* as local-calendar-day values instead.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Parse a YYYY-MM-DD or ISO-8601 timestamp as local-midnight on that
|
|
12
|
+
* calendar day. Two input shapes are accepted because the same field
|
|
13
|
+
* can arrive either way depending on the source:
|
|
14
|
+
*
|
|
15
|
+
* - 'YYYY-MM-DD' — what the date input sends on save (local calendar day).
|
|
16
|
+
* - 'YYYY-MM-DDTHH:mm:ss.sssZ' (or with an offset) — what the GraphQL
|
|
17
|
+
* server returns for `DateTime` columns (UTC instant).
|
|
18
|
+
*
|
|
19
|
+
* For full timestamps we extract the date portion BEFORE constructing the
|
|
20
|
+
* Date, so a UTC midnight instant displays as the same calendar day in
|
|
21
|
+
* any timezone (a deadline stored as 2026-09-29T00:00:00Z is meant to be
|
|
22
|
+
* 2026-09-29, not whatever the user's timezone shifts it to).
|
|
23
|
+
*
|
|
24
|
+
* Returns null if the input isn't a well-formed date-only or ISO string,
|
|
25
|
+
* an unparseable Date, an out-of-range date component (e.g. 2026-02-30),
|
|
26
|
+
* or an empty value. Callers that want a raw Date back should check the
|
|
27
|
+
* result.
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseLocalDate(dateStr: string | null | undefined): Date | null;
|
|
30
|
+
/**
|
|
31
|
+
* Whole-day difference between two dates, compared as local calendar days.
|
|
32
|
+
*
|
|
33
|
+
* Both inputs are interpreted at their local midnight. The result is the
|
|
34
|
+
* signed integer count of calendar days from `from` to `to` (negative if
|
|
35
|
+
* `to` is earlier). The inputs must already be valid Dates — this helper
|
|
36
|
+
* does no validity checking; call parseLocalDate first for YYYY-MM-DD
|
|
37
|
+
* strings.
|
|
38
|
+
*/
|
|
39
|
+
export declare function localDayDiff(from: Date, to: Date): number;
|
|
40
|
+
/**
|
|
41
|
+
* Local-calendar today as a YYYY-MM-DD string. Recomputed on every call;
|
|
42
|
+
* callers that need the picker `min` value pass this through a prop and
|
|
43
|
+
* accept that the prop won't refresh across midnight without a re-render
|
|
44
|
+
* trigger (typing in the form is sufficient in practice).
|
|
45
|
+
*/
|
|
46
|
+
export declare function localTodayString(): string;
|
|
47
|
+
//# sourceMappingURL=dateUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateUtils.d.ts","sourceRoot":"","sources":["../../../src/crewfoundry/utils/dateUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAe9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,MAAM,CAIzD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAGzC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/crewfoundry/utils/dateUtils.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
if (!e) return null;
|
|
4
|
+
let t = /^\d{4}-\d{2}-\d{2}/.exec(e);
|
|
5
|
+
if (!t) return null;
|
|
6
|
+
let [n, r, i] = t[0].split("-").map((e) => Number(e));
|
|
7
|
+
if (!Number.isFinite(n) || !Number.isFinite(r) || !Number.isFinite(i)) return null;
|
|
8
|
+
let a = new Date(n, r - 1, i);
|
|
9
|
+
return a.getFullYear() !== n || a.getMonth() !== r - 1 || a.getDate() !== i ? null : a;
|
|
10
|
+
}
|
|
11
|
+
function t(e, t) {
|
|
12
|
+
let n = new Date(e.getFullYear(), e.getMonth(), e.getDate()), r = new Date(t.getFullYear(), t.getMonth(), t.getDate());
|
|
13
|
+
return Math.round((r.getTime() - n.getTime()) / 864e5);
|
|
14
|
+
}
|
|
15
|
+
function n() {
|
|
16
|
+
let e = /* @__PURE__ */ new Date();
|
|
17
|
+
return `${e.getFullYear()}-${String(e.getMonth() + 1).padStart(2, "0")}-${String(e.getDate()).padStart(2, "0")}`;
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { t as localDayDiff, n as localTodayString, e as parseLocalDate };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=dateUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateUtils.js","names":[],"sources":["../../../src/crewfoundry/utils/dateUtils.ts"],"sourcesContent":["/**\n * Local-calendar date utilities for the CrewFoundry MFE.\n *\n * The native `new Date('YYYY-MM-DD')` constructor parses date-only strings\n * as UTC midnight, which silently breaks user-facing date math for callers\n * in non-UTC timezones (a deadline picked as \"today\" in PST is already\n * 17-20 hours in the past by local noon). These helpers parse and compare\n * as local-calendar-day values instead.\n */\n\n/**\n * Parse a YYYY-MM-DD or ISO-8601 timestamp as local-midnight on that\n * calendar day. Two input shapes are accepted because the same field\n * can arrive either way depending on the source:\n *\n * - 'YYYY-MM-DD' — what the date input sends on save (local calendar day).\n * - 'YYYY-MM-DDTHH:mm:ss.sssZ' (or with an offset) — what the GraphQL\n * server returns for `DateTime` columns (UTC instant).\n *\n * For full timestamps we extract the date portion BEFORE constructing the\n * Date, so a UTC midnight instant displays as the same calendar day in\n * any timezone (a deadline stored as 2026-09-29T00:00:00Z is meant to be\n * 2026-09-29, not whatever the user's timezone shifts it to).\n *\n * Returns null if the input isn't a well-formed date-only or ISO string,\n * an unparseable Date, an out-of-range date component (e.g. 2026-02-30),\n * or an empty value. Callers that want a raw Date back should check the\n * result.\n */\nexport function parseLocalDate(dateStr: string | null | undefined): Date | null {\n if (!dateStr) return null;\n // Extract the YYYY-MM-DD prefix: handles both date-only inputs and\n // full ISO timestamps (YYYY-MM-DDTHH:mm:ss...).\n const dateOnlyMatch = /^\\d{4}-\\d{2}-\\d{2}/.exec(dateStr);\n if (!dateOnlyMatch) return null;\n const [year, month, day] = dateOnlyMatch[0].split('-').map((part) => Number(part));\n if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) {\n return null;\n }\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null;\n }\n return date;\n}\n\n/**\n * Whole-day difference between two dates, compared as local calendar days.\n *\n * Both inputs are interpreted at their local midnight. The result is the\n * signed integer count of calendar days from `from` to `to` (negative if\n * `to` is earlier). The inputs must already be valid Dates — this helper\n * does no validity checking; call parseLocalDate first for YYYY-MM-DD\n * strings.\n */\nexport function localDayDiff(from: Date, to: Date): number {\n const fromMidnight = new Date(from.getFullYear(), from.getMonth(), from.getDate());\n const toMidnight = new Date(to.getFullYear(), to.getMonth(), to.getDate());\n return Math.round((toMidnight.getTime() - fromMidnight.getTime()) / 86_400_000);\n}\n\n/**\n * Local-calendar today as a YYYY-MM-DD string. Recomputed on every call;\n * callers that need the picker `min` value pass this through a prop and\n * accept that the prop won't refresh across midnight without a re-render\n * trigger (typing in the form is sufficient in practice).\n */\nexport function localTodayString(): string {\n const now = new Date();\n return `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}`;\n}\n"],"mappings":";AA6BA,SAAgB,EAAe,GAAiD;AAC9E,KAAI,CAAC,EAAS,QAAO;CAGrB,IAAM,IAAgB,qBAAqB,KAAK,EAAQ;AACxD,KAAI,CAAC,EAAe,QAAO;CAC3B,IAAM,CAAC,GAAM,GAAO,KAAO,EAAc,GAAG,MAAM,IAAI,CAAC,KAAK,MAAS,OAAO,EAAK,CAAC;AAClF,KAAI,CAAC,OAAO,SAAS,EAAK,IAAI,CAAC,OAAO,SAAS,EAAM,IAAI,CAAC,OAAO,SAAS,EAAI,CAC5E,QAAO;CAET,IAAM,IAAO,IAAI,KAAK,GAAM,IAAQ,GAAG,EAAI;AAI3C,QAHI,EAAK,aAAa,KAAK,KAAQ,EAAK,UAAU,KAAK,IAAQ,KAAK,EAAK,SAAS,KAAK,IAC9E,OAEF;;AAYT,SAAgB,EAAa,GAAY,GAAkB;CACzD,IAAM,IAAe,IAAI,KAAK,EAAK,aAAa,EAAE,EAAK,UAAU,EAAE,EAAK,SAAS,CAAC,EAC5E,IAAa,IAAI,KAAK,EAAG,aAAa,EAAE,EAAG,UAAU,EAAE,EAAG,SAAS,CAAC;AAC1E,QAAO,KAAK,OAAO,EAAW,SAAS,GAAG,EAAa,SAAS,IAAI,MAAW;;AASjF,SAAgB,IAA2B;CACzC,IAAM,oBAAM,IAAI,MAAM;AACtB,QAAO,GAAG,EAAI,aAAa,CAAC,GAAG,OAAO,EAAI,UAAU,GAAG,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,EAAI,SAAS,CAAC,CAAC,SAAS,GAAG,IAAI"}
|