@box/metadata-filter 1.14.3

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.
Files changed (142) hide show
  1. package/LICENSE +379 -0
  2. package/README.md +48 -0
  3. package/dist/chunks/index.js +73 -0
  4. package/dist/chunks/metadata-date-field.module.js +13 -0
  5. package/dist/chunks/metadata-float-field.module.js +11 -0
  6. package/dist/chunks/types.js +6 -0
  7. package/dist/chunks/use-date-validation.js +40 -0
  8. package/dist/chunks/use-float-validation.js +26 -0
  9. package/dist/esm/index.js +23 -0
  10. package/dist/esm/lib/components/metadata-filter-fields/components/constants.js +6 -0
  11. package/dist/esm/lib/components/metadata-filter-fields/components/index.js +13 -0
  12. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/constants.js +5 -0
  13. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/date-conversion-utils.js +62 -0
  14. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/metadata-date-field-advanced.js +173 -0
  15. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/metadata-date-field-relative.js +189 -0
  16. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/metadata-date-field.js +123 -0
  17. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/use-date-internationalization.js +14 -0
  18. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/use-date-validation.js +12 -0
  19. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/utils.js +5 -0
  20. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-enum-field/metadata-enum-field.js +54 -0
  21. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/handlers.js +15 -0
  22. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/metadata-float-field-advanced.js +93 -0
  23. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/metadata-float-field.js +90 -0
  24. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/use-float-validation.js +9 -0
  25. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/utils.js +63 -0
  26. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-multi-select-field/metadata-multi-select-field-advanced.js +75 -0
  27. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-multi-select-field/metadata-multi-select-field.js +50 -0
  28. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-multi-select-field/utils.js +20 -0
  29. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-string-field/metadata-string-field.js +71 -0
  30. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-string-field/utils.js +15 -0
  31. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/metadata-taxonomy-field.js +67 -0
  32. package/dist/esm/lib/components/metadata-filter-fields/components/shared/advanced-filter-select.js +11 -0
  33. package/dist/esm/lib/components/metadata-filter-fields/components/shared/index.js +4 -0
  34. package/dist/esm/lib/components/metadata-filter-fields/filter-field-types.js +53 -0
  35. package/dist/esm/lib/components/metadata-filter-fields/metadata-filter-fields.js +62 -0
  36. package/dist/esm/lib/components/metadata-template-selector/index.js +1 -0
  37. package/dist/esm/lib/components/metadata-template-selector/metadata-template-selector.js +45 -0
  38. package/dist/esm/lib/defaults.js +39 -0
  39. package/dist/esm/lib/mappers.js +24 -0
  40. package/dist/esm/lib/messages.js +194 -0
  41. package/dist/esm/lib/metadata-filter.js +71 -0
  42. package/dist/i18n/bn-IN.js +49 -0
  43. package/dist/i18n/bn-IN.properties +94 -0
  44. package/dist/i18n/da-DK.js +49 -0
  45. package/dist/i18n/da-DK.properties +94 -0
  46. package/dist/i18n/de-DE.js +49 -0
  47. package/dist/i18n/de-DE.properties +94 -0
  48. package/dist/i18n/en-AU.js +49 -0
  49. package/dist/i18n/en-AU.properties +94 -0
  50. package/dist/i18n/en-CA.js +49 -0
  51. package/dist/i18n/en-CA.properties +94 -0
  52. package/dist/i18n/en-GB.js +49 -0
  53. package/dist/i18n/en-GB.properties +94 -0
  54. package/dist/i18n/en-US.js +49 -0
  55. package/dist/i18n/en-US.properties +94 -0
  56. package/dist/i18n/en-x-pseudo.js +49 -0
  57. package/dist/i18n/en-x-pseudo.properties +94 -0
  58. package/dist/i18n/es-419.js +49 -0
  59. package/dist/i18n/es-419.properties +94 -0
  60. package/dist/i18n/es-ES.js +49 -0
  61. package/dist/i18n/es-ES.properties +94 -0
  62. package/dist/i18n/fi-FI.js +49 -0
  63. package/dist/i18n/fi-FI.properties +94 -0
  64. package/dist/i18n/fr-CA.js +49 -0
  65. package/dist/i18n/fr-CA.properties +94 -0
  66. package/dist/i18n/fr-FR.js +49 -0
  67. package/dist/i18n/fr-FR.properties +94 -0
  68. package/dist/i18n/hi-IN.js +49 -0
  69. package/dist/i18n/hi-IN.properties +94 -0
  70. package/dist/i18n/it-IT.js +49 -0
  71. package/dist/i18n/it-IT.properties +94 -0
  72. package/dist/i18n/ja-JP.js +49 -0
  73. package/dist/i18n/ja-JP.properties +94 -0
  74. package/dist/i18n/json/src/lib/messages.json +1 -0
  75. package/dist/i18n/ko-KR.js +49 -0
  76. package/dist/i18n/ko-KR.properties +94 -0
  77. package/dist/i18n/nb-NO.js +49 -0
  78. package/dist/i18n/nb-NO.properties +94 -0
  79. package/dist/i18n/nl-NL.js +49 -0
  80. package/dist/i18n/nl-NL.properties +94 -0
  81. package/dist/i18n/pl-PL.js +49 -0
  82. package/dist/i18n/pl-PL.properties +94 -0
  83. package/dist/i18n/pt-BR.js +49 -0
  84. package/dist/i18n/pt-BR.properties +94 -0
  85. package/dist/i18n/ru-RU.js +49 -0
  86. package/dist/i18n/ru-RU.properties +94 -0
  87. package/dist/i18n/sv-SE.js +49 -0
  88. package/dist/i18n/sv-SE.properties +94 -0
  89. package/dist/i18n/tr-TR.js +49 -0
  90. package/dist/i18n/tr-TR.properties +94 -0
  91. package/dist/i18n/zh-CN.js +49 -0
  92. package/dist/i18n/zh-CN.properties +94 -0
  93. package/dist/i18n/zh-TW.js +49 -0
  94. package/dist/i18n/zh-TW.properties +94 -0
  95. package/dist/styles/index.css +1 -0
  96. package/dist/styles/metadata-date-field.css +1 -0
  97. package/dist/styles/metadata-filter.css +1 -0
  98. package/dist/styles/metadata-float-field.css +1 -0
  99. package/dist/types/index.d.ts +6 -0
  100. package/dist/types/lib/components/metadata-filter-fields/components/constants.d.ts +3 -0
  101. package/dist/types/lib/components/metadata-filter-fields/components/index.d.ts +5 -0
  102. package/dist/types/lib/components/metadata-filter-fields/components/metadata-date-field/constants.d.ts +1 -0
  103. package/dist/types/lib/components/metadata-filter-fields/components/metadata-date-field/date-conversion-utils.d.ts +13 -0
  104. package/dist/types/lib/components/metadata-filter-fields/components/metadata-date-field/metadata-date-field-advanced.d.ts +3 -0
  105. package/dist/types/lib/components/metadata-filter-fields/components/metadata-date-field/metadata-date-field-relative.d.ts +3 -0
  106. package/dist/types/lib/components/metadata-filter-fields/components/metadata-date-field/metadata-date-field.d.ts +4 -0
  107. package/dist/types/lib/components/metadata-filter-fields/components/metadata-date-field/types.d.ts +9 -0
  108. package/dist/types/lib/components/metadata-filter-fields/components/metadata-date-field/use-date-internationalization.d.ts +6 -0
  109. package/dist/types/lib/components/metadata-filter-fields/components/metadata-date-field/use-date-validation.d.ts +9 -0
  110. package/dist/types/lib/components/metadata-filter-fields/components/metadata-date-field/utils.d.ts +2 -0
  111. package/dist/types/lib/components/metadata-filter-fields/components/metadata-enum-field/metadata-enum-field.d.ts +3 -0
  112. package/dist/types/lib/components/metadata-filter-fields/components/metadata-float-field/handlers.d.ts +4 -0
  113. package/dist/types/lib/components/metadata-filter-fields/components/metadata-float-field/metadata-float-field-advanced.d.ts +3 -0
  114. package/dist/types/lib/components/metadata-filter-fields/components/metadata-float-field/metadata-float-field.d.ts +3 -0
  115. package/dist/types/lib/components/metadata-filter-fields/components/metadata-float-field/types.d.ts +4 -0
  116. package/dist/types/lib/components/metadata-filter-fields/components/metadata-float-field/use-float-validation.d.ts +8 -0
  117. package/dist/types/lib/components/metadata-filter-fields/components/metadata-float-field/utils.d.ts +35 -0
  118. package/dist/types/lib/components/metadata-filter-fields/components/metadata-multi-select-field/metadata-multi-select-field-advanced.d.ts +2 -0
  119. package/dist/types/lib/components/metadata-filter-fields/components/metadata-multi-select-field/metadata-multi-select-field.d.ts +3 -0
  120. package/dist/types/lib/components/metadata-filter-fields/components/metadata-multi-select-field/utils.d.ts +13 -0
  121. package/dist/types/lib/components/metadata-filter-fields/components/metadata-string-field/metadata-string-field.d.ts +6 -0
  122. package/dist/types/lib/components/metadata-filter-fields/components/metadata-string-field/utils.d.ts +17 -0
  123. package/dist/types/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/metadata-taxonomy-field.d.ts +3 -0
  124. package/dist/types/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/types.d.ts +6 -0
  125. package/dist/types/lib/components/metadata-filter-fields/components/shared/advanced-filter-select.d.ts +18 -0
  126. package/dist/types/lib/components/metadata-filter-fields/components/shared/index.d.ts +1 -0
  127. package/dist/types/lib/components/metadata-filter-fields/filter-field-types.d.ts +17 -0
  128. package/dist/types/lib/components/metadata-filter-fields/metadata-filter-fields.d.ts +3 -0
  129. package/dist/types/lib/components/metadata-filter-fields/types.d.ts +33 -0
  130. package/dist/types/lib/components/metadata-template-selector/index.d.ts +1 -0
  131. package/dist/types/lib/components/metadata-template-selector/metadata-template-selector.d.ts +3 -0
  132. package/dist/types/lib/components/metadata-template-selector/types.d.ts +6 -0
  133. package/dist/types/lib/defaults.d.ts +13 -0
  134. package/dist/types/lib/mappers.d.ts +16 -0
  135. package/dist/types/lib/messages.d.ts +238 -0
  136. package/dist/types/lib/metadata-filter.d.ts +2 -0
  137. package/dist/types/lib/test-utils/formik-wrapper.d.ts +9 -0
  138. package/dist/types/lib/test-utils/index.d.ts +3 -0
  139. package/dist/types/lib/test-utils/sample-data.d.ts +15 -0
  140. package/dist/types/lib/test-utils/test-utils.d.ts +3 -0
  141. package/dist/types/lib/types.d.ts +86 -0
  142. package/package.json +50 -0
@@ -0,0 +1,62 @@
1
+ import { Time as f } from "@box/blueprint-web/lib-esm/primitives/calendar/classes.util";
2
+ import { fromAbsolute as p } from "@box/blueprint-web/lib-esm/primitives/calendar/from-absolute.util";
3
+ import { parseAbsoluteToLocal as b } from "@box/blueprint-web/lib-esm/primitives/calendar/parse-absolute-to-local.util";
4
+ import { parseAbsolute as F } from "@box/blueprint-web/lib-esm/primitives/calendar/parse-absolute.util";
5
+ import { toCalendarDateTime as T } from "@box/blueprint-web/lib-esm/primitives/calendar/to-calendar-date-time.util";
6
+ import { toCalendarDate as R } from "@box/blueprint-web/lib-esm/primitives/calendar/to-calendar-date.util";
7
+ import { toZoned as C } from "@box/blueprint-web/lib-esm/primitives/calendar/to-zoned.util";
8
+ import { R as a } from "../../../../../../chunks/types.js";
9
+ const g = (o, r) => {
10
+ try {
11
+ const n = r ? T(F(o, "UTC")) : b(o);
12
+ return R(n);
13
+ } catch {
14
+ return null;
15
+ }
16
+ }, h = (o, r, n) => {
17
+ let e = "";
18
+ if (o) {
19
+ const t = n === a.FROM ? o : T(o, new f(23, 59, 59, 999));
20
+ e = C(t, r).toAbsoluteString();
21
+ }
22
+ return e;
23
+ }, v = (o, r) => {
24
+ let n = "";
25
+ if (o) {
26
+ const e = r === a.FROM ? T(o, new f(0, 0, 0, 0)) : T(o, new f(23, 59, 59, 999));
27
+ n = C(e, "UTC").toAbsoluteString();
28
+ }
29
+ return n;
30
+ }, x = (o, r, n = (/* @__PURE__ */ new Date()).getTime()) => {
31
+ var l;
32
+ const e = (i) => i === void 0 ? void 0 : i, t = e(p(n, "UTC")), s = (i) => e(t == null ? void 0 : t.add({
33
+ days: i * r
34
+ })), c = {
35
+ today: () => ({
36
+ from: t,
37
+ to: t
38
+ }),
39
+ next: () => ({
40
+ from: t,
41
+ to: s(1)
42
+ }),
43
+ past: () => ({
44
+ from: s(-1),
45
+ to: t
46
+ }),
47
+ olderThan: () => ({
48
+ from: e(p(0, "UTC")),
49
+ to: s(-1)
50
+ })
51
+ }, m = (l = c[o]) == null ? void 0 : l.call(c), d = m == null ? void 0 : m.from, u = m == null ? void 0 : m.to;
52
+ return {
53
+ from: d ? v(d, a.FROM) : void 0,
54
+ to: u ? v(u, a.TO) : void 0
55
+ };
56
+ };
57
+ export {
58
+ g as convertToDatePickerValue,
59
+ h as convertToFormikValue,
60
+ v as convertToFormikValueRanged,
61
+ x as getRelativeFromToValues
62
+ };
@@ -0,0 +1,173 @@
1
+ import { DateI18nProvider as le, DatePicker as X, TextInput as ie } from "@box/blueprint-web";
2
+ import ce from "clsx";
3
+ import { useFormikContext as de, getIn as ue, Field as y } from "formik";
4
+ import { useState as b, useRef as _, useCallback as v, useEffect as me, useMemo as H } from "react";
5
+ import { useIntl as fe } from "react-intl";
6
+ import { R as s } from "../../../../../../chunks/types.js";
7
+ import { DEFAULT_MAX_DATE as q } from "./constants.js";
8
+ import { getRelativeFromToValues as z, convertToFormikValueRanged as J } from "./date-conversion-utils.js";
9
+ import { s as h } from "../../../../../../chunks/metadata-date-field.module.js";
10
+ import { u as ve, E as A } from "../../../../../../chunks/use-date-validation.js";
11
+ import { getDynamicMaxMinValue as K } from "./utils.js";
12
+ import c from "../../../../messages.js";
13
+ import { jsx as n, jsxs as Q } from "react/jsx-runtime";
14
+ import { A as he } from "../../../../../../chunks/index.js";
15
+ const Be = ({
16
+ disableForm: p,
17
+ fieldNamePrefix: d,
18
+ label: C,
19
+ locale: L,
20
+ portalElement: D,
21
+ filterOptionsMap: W,
22
+ onAdvancedFilterOptionChange: F,
23
+ fieldAdvancedFilterOptions: N
24
+ }) => {
25
+ const T = `${d}.value.advancedFilterOption`, u = `${d}.value.relativeDays`, r = `${d}.value.range.gt`, o = `${d}.value.range.lt`, {
26
+ values: B,
27
+ setFieldValue: t,
28
+ setFieldTouched: I
29
+ } = de(), {
30
+ validateDates: x,
31
+ fromDatePickerValue: g,
32
+ toDatePickerValue: M,
33
+ fromErrorType: E,
34
+ toErrorType: S
35
+ } = ve(B, r, o, L, !0), l = fe(), [i, Y] = b(N || ""), [P, V] = b(!1), m = ue(B, u), [$, O] = b(s.FROM), k = _(g), R = _(M), w = {
36
+ clearDatePickerAriaLabel: l.formatMessage(c.clearSelectedDate),
37
+ nextMonthAriaLabel: l.formatMessage(c.switchToNextMonth),
38
+ openCalendarDropdownAriaLabel: l.formatMessage(c.openCalendar),
39
+ previousMonthAriaLabel: l.formatMessage(c.switchToNextMonth)
40
+ }, U = v(() => {
41
+ if (i === "today") {
42
+ const {
43
+ from: a,
44
+ to: e
45
+ } = z("today", void 0);
46
+ t(r, a), t(o, e);
47
+ } else if (m !== void 0 && m > 0) {
48
+ const a = i;
49
+ if (["next", "past", "olderThan"].includes(a)) {
50
+ const {
51
+ from: e,
52
+ to: f
53
+ } = z(a, m);
54
+ t(r, e), t(o, f);
55
+ }
56
+ }
57
+ }, [i, m, r, o, t]);
58
+ me(() => {
59
+ P && (U(), V(!1));
60
+ }, [P, U]);
61
+ const Z = v((a) => {
62
+ const e = a;
63
+ Y(e), t(T, e), F && F(d, e);
64
+ const f = () => {
65
+ t(u, void 0), t(r, void 0), t(o, void 0);
66
+ }, ne = () => {
67
+ t(r, void 0), t(o, void 0);
68
+ };
69
+ ["isBlank", "isNotBlank", "selectFilterType"].includes(e) || !e || e === "customRange" ? f() : e === "today" ? (t(u, void 0), V(!0)) : ne();
70
+ }, [d, F, t, T, u, r, o]), ee = v((a) => {
71
+ const e = a === "" ? void 0 : Number(a);
72
+ (!isNaN(e) || a === "") && (t(u, e), e && e > 0 && V(!0));
73
+ }, [t, u]), ae = v((a) => {
74
+ const e = J(a, s.FROM);
75
+ k.current = a, t(r, e), O(s.FROM);
76
+ }, [t, r]), te = v((a) => {
77
+ const e = J(a, s.TO);
78
+ R.current = a, t(o, e), O(s.TO);
79
+ }, [t, o]), j = v((a) => {
80
+ const e = a === s.FROM ? r : o;
81
+ I(e, !0), O(a);
82
+ }, [I, r, o]), re = H(() => K(M, q), [M]), oe = H(() => K(g), [g]), G = (a, e, f) => !!(e === A.MAX && a === A.OVERLAPPING || a === A.OVERLAPPING && f), se = () => !i || i === "isBlank" || i === "isNotBlank" || i === "selectFilterType" || i === "today" ? null : i === "customRange" ? /* @__PURE__ */ Q("div", {
83
+ className: ce(h.rangeInputsContainer, h.verticalLayout),
84
+ children: [/* @__PURE__ */ n(y, {
85
+ name: r,
86
+ validate: (a) => x(k.current, R.current, s.FROM),
87
+ children: ({
88
+ field: a,
89
+ meta: e
90
+ }) => /* @__PURE__ */ n("div", {
91
+ className: h.datePicker,
92
+ children: /* @__PURE__ */ n(X, {
93
+ ...a,
94
+ ...w,
95
+ calendarAriaLabel: l.formatMessage(c.selectStartDate),
96
+ error: G(E, S, $ !== s.FROM) ? void 0 : e.error,
97
+ isDisabled: p,
98
+ label: l.formatMessage(c.afterDate),
99
+ maxValue: re,
100
+ onBlur: () => j(s.FROM),
101
+ onChange: ae,
102
+ portalElement: D,
103
+ value: g
104
+ })
105
+ })
106
+ }), /* @__PURE__ */ n(y, {
107
+ name: o,
108
+ validate: (a) => x(k.current, R.current, s.TO),
109
+ children: ({
110
+ field: a,
111
+ meta: e
112
+ }) => /* @__PURE__ */ n("div", {
113
+ className: h.datePicker,
114
+ children: /* @__PURE__ */ n(X, {
115
+ ...a,
116
+ ...w,
117
+ calendarAriaLabel: l.formatMessage(c.selectEndDate),
118
+ error: G(S, E, $ !== s.TO) ? void 0 : e.error,
119
+ isDisabled: p,
120
+ label: l.formatMessage(c.beforeDate),
121
+ maxValue: q,
122
+ minValue: oe,
123
+ onBlur: () => j(s.TO),
124
+ onChange: te,
125
+ portalElement: D,
126
+ value: M
127
+ })
128
+ })
129
+ })]
130
+ }) : /* @__PURE__ */ n(y, {
131
+ name: u,
132
+ children: ({
133
+ field: a,
134
+ meta: e
135
+ }) => /* @__PURE__ */ n("div", {
136
+ className: h.daysInputContainer,
137
+ children: /* @__PURE__ */ n(ie, {
138
+ ...a,
139
+ disabled: p,
140
+ error: e.touched && e.error ? e.error : void 0,
141
+ hideLabel: !0,
142
+ label: l.formatMessage(c.relativeDaysSelectLabel),
143
+ onChange: (f) => ee(f.target.value),
144
+ placeholder: l.formatMessage(c.numberOfDays),
145
+ value: (m == null ? void 0 : m.toString()) || ""
146
+ })
147
+ })
148
+ });
149
+ return /* @__PURE__ */ n(le, {
150
+ locale: L,
151
+ children: /* @__PURE__ */ Q("div", {
152
+ className: h.advancedDateContainer,
153
+ "data-testid": `${C}-advanced-field`,
154
+ children: [/* @__PURE__ */ n(he, {
155
+ advancedFilterFieldName: T,
156
+ disableForm: p,
157
+ fieldAdvancedFilterOptions: N,
158
+ fieldNamePrefix: d,
159
+ filterOptionsMap: W,
160
+ label: C,
161
+ onAdvancedFilterOptionChange: F,
162
+ onValueChange: Z,
163
+ portalElement: D,
164
+ showLabel: !0,
165
+ value: i
166
+ }), se()]
167
+ })
168
+ });
169
+ };
170
+ export {
171
+ Be as MetadataDateFieldAdvanced,
172
+ Be as default
173
+ };
@@ -0,0 +1,189 @@
1
+ import { DateI18nProvider as ue, Text as me, Radio as c, Select as x, DatePicker as H } from "@box/blueprint-web";
2
+ import fe from "clsx";
3
+ import { useFormikContext as ge, getIn as q, Field as z } from "formik";
4
+ import { useState as A, useRef as J, useCallback as he, useEffect as ve, useMemo as K } from "react";
5
+ import { useIntl as pe } from "react-intl";
6
+ import { R as o } from "../../../../../../chunks/types.js";
7
+ import { DEFAULT_MAX_DATE as Q } from "./constants.js";
8
+ import { getRelativeFromToValues as Fe, convertToFormikValueRanged as W } from "./date-conversion-utils.js";
9
+ import { s as d } from "../../../../../../chunks/metadata-date-field.module.js";
10
+ import { u as Me, E as L } from "../../../../../../chunks/use-date-validation.js";
11
+ import { getDynamicMaxMinValue as Y } from "./utils.js";
12
+ import a from "../../../../messages.js";
13
+ import { jsx as l, jsxs as S } from "react/jsx-runtime";
14
+ const ee = {
15
+ next: a.nextDaysAmt,
16
+ past: a.pastDaysAmt,
17
+ olderThan: a.olderThanDaysAmt
18
+ }, De = [1, 3, 15, 45, 60, 120, 365], Z = (u) => u in ee || u === "today", ke = ({
19
+ disableForm: u,
20
+ fieldNamePrefix: p,
21
+ label: N,
22
+ locale: I,
23
+ portalElement: M
24
+ }) => {
25
+ const [k, D] = A(o.FROM), [E, T] = A(!1), m = `${p}.value.range.gt`, f = `${p}.value.range.lt`, P = `${p}.value.relativeType`, y = `${p}.value.relativeDays`, {
26
+ values: V,
27
+ setFieldTouched: ae,
28
+ setFieldValue: i
29
+ } = ge(), {
30
+ validateDates: $,
31
+ fromDatePickerValue: g,
32
+ toDatePickerValue: h,
33
+ fromErrorType: B,
34
+ toErrorType: w
35
+ } = Me(V, m, f, I, !0), r = pe(), G = q(V, P), te = g || h;
36
+ let R = "anyTime";
37
+ Z(G) ? R = G : te && (R = "customRange");
38
+ const [v, re] = A(R), F = q(V, y), b = J(g), O = J(h), U = {
39
+ clearDatePickerAriaLabel: r.formatMessage(a.clearSelectedDate),
40
+ nextMonthAriaLabel: r.formatMessage(a.switchToNextMonth),
41
+ openCalendarDropdownAriaLabel: r.formatMessage(a.openCalendar),
42
+ previousMonthAriaLabel: r.formatMessage(a.switchToNextMonth)
43
+ }, le = (e) => {
44
+ const t = W(e, o.FROM);
45
+ b.current = e, i(m, t), D(o.FROM);
46
+ }, oe = (e) => {
47
+ const t = W(e, o.TO);
48
+ O.current = e, i(f, t), D(o.TO);
49
+ }, j = (e) => {
50
+ const t = e === o.FROM ? m : f;
51
+ ae(t, !0), D(e);
52
+ }, se = (e) => {
53
+ let t;
54
+ Z(e) && (t = e), i(P, t), re(e), i(y, void 0), T(!0);
55
+ }, X = he(() => {
56
+ const {
57
+ from: e,
58
+ to: t
59
+ } = Fe(v, F);
60
+ i(m, e), i(f, t);
61
+ }, [m, F, v, i, f]);
62
+ ve(() => {
63
+ E && (X(), T(!1));
64
+ }, [E, X]);
65
+ const ne = K(() => Y(h, Q), [h]), ie = K(() => Y(g), [g]), _ = (e, t, s) => !!(t === L.MAX && e === L.OVERLAPPING || e === L.OVERLAPPING && s), C = (e) => {
66
+ if (e !== v)
67
+ return null;
68
+ const t = (n) => {
69
+ const de = ee[e];
70
+ return {
71
+ value: String(n),
72
+ label: r.formatMessage(de, {
73
+ count: n
74
+ })
75
+ };
76
+ }, s = De.map(t);
77
+ return /* @__PURE__ */ l(x, {
78
+ className: d.daysSelect,
79
+ defaultValue: F === void 0 ? "" : String(F),
80
+ label: r.formatMessage(a.relativeDaysSelectLabel),
81
+ onValueChange: (n) => {
82
+ i(y, Number(n)), T(!0);
83
+ },
84
+ placeholder: r.formatMessage(a.selectValuePlaceholder),
85
+ children: /* @__PURE__ */ l(x.Content, {
86
+ container: M,
87
+ children: s == null ? void 0 : s.map((n) => /* @__PURE__ */ l(x.Option, {
88
+ text: n.label,
89
+ value: n.value,
90
+ children: n.label
91
+ }, n.value))
92
+ })
93
+ });
94
+ }, ce = () => v !== "customRange" ? null : /* @__PURE__ */ S("div", {
95
+ className: fe(d.rangeInputsContainer, d.verticalLayout),
96
+ children: [/* @__PURE__ */ l(z, {
97
+ name: m,
98
+ validate: (e) => $(b.current, O.current, o.FROM),
99
+ children: ({
100
+ field: e,
101
+ meta: t
102
+ }) => /* @__PURE__ */ l("div", {
103
+ className: d.inputContainer,
104
+ children: /* @__PURE__ */ l(H, {
105
+ ...e,
106
+ ...U,
107
+ calendarAriaLabel: r.formatMessage(a.selectStartDate),
108
+ error: _(B, w, k !== o.FROM) ? void 0 : t.error,
109
+ isDisabled: u,
110
+ label: r.formatMessage(a.fieldStartDateLabel),
111
+ maxValue: ne,
112
+ onBlur: () => j(o.FROM),
113
+ onChange: (s) => le(s),
114
+ portalElement: M,
115
+ value: g
116
+ })
117
+ })
118
+ }), /* @__PURE__ */ l(z, {
119
+ name: f,
120
+ validate: (e) => $(b.current, O.current, o.TO),
121
+ children: ({
122
+ field: e,
123
+ meta: t
124
+ }) => /* @__PURE__ */ l("div", {
125
+ className: d.inputContainer,
126
+ children: /* @__PURE__ */ l(H, {
127
+ ...e,
128
+ ...U,
129
+ calendarAriaLabel: r.formatMessage(a.selectEndDate),
130
+ error: _(w, B, k !== o.TO) ? void 0 : t.error,
131
+ isDisabled: u,
132
+ label: r.formatMessage(a.fieldEndDateLabel),
133
+ maxValue: Q,
134
+ minValue: ie,
135
+ onBlur: () => j(o.TO),
136
+ onChange: (s) => oe(s),
137
+ portalElement: M,
138
+ value: h
139
+ })
140
+ })
141
+ })]
142
+ });
143
+ return /* @__PURE__ */ l(ue, {
144
+ locale: I,
145
+ children: /* @__PURE__ */ S("div", {
146
+ className: d.container,
147
+ "data-testid": `${N}-field`,
148
+ children: [/* @__PURE__ */ l(me, {
149
+ as: "span",
150
+ className: d.rangeFieldLabel,
151
+ color: "textOnLightSecondary",
152
+ variant: "bodyDefaultBold",
153
+ children: N
154
+ }), /* @__PURE__ */ S(c.Group, {
155
+ disabled: u,
156
+ loop: !1,
157
+ onValueChange: se,
158
+ value: v,
159
+ children: [/* @__PURE__ */ l(c.Item, {
160
+ label: r.formatMessage(a.relativeDateFilterAnyTime),
161
+ value: "anyTime"
162
+ }), /* @__PURE__ */ l(c.Item, {
163
+ label: r.formatMessage(a.relativeDateFilterToday),
164
+ value: "today"
165
+ }), /* @__PURE__ */ l(c.Item, {
166
+ description: C("next"),
167
+ label: r.formatMessage(a.relativeDateFilterNext),
168
+ value: "next"
169
+ }), /* @__PURE__ */ l(c.Item, {
170
+ description: C("past"),
171
+ label: r.formatMessage(a.relativeDateFilterPast),
172
+ value: "past"
173
+ }), /* @__PURE__ */ l(c.Item, {
174
+ description: C("olderThan"),
175
+ label: r.formatMessage(a.relativeDateFilterOlderThan),
176
+ value: "olderThan"
177
+ }), /* @__PURE__ */ l(c.Item, {
178
+ description: ce(),
179
+ label: r.formatMessage(a.relativeDateFilterCustomRange),
180
+ value: "customRange"
181
+ })]
182
+ })]
183
+ })
184
+ });
185
+ };
186
+ export {
187
+ ke as MetadataDateFieldRelative,
188
+ ke as default
189
+ };
@@ -0,0 +1,123 @@
1
+ import { Text as _, DateI18nProvider as H, DatePicker as N } from "@box/blueprint-web";
2
+ import { useFormikContext as U, Field as k } from "formik";
3
+ import { useState as q, useRef as P, useMemo as E } from "react";
4
+ import { useIntl as J } from "react-intl";
5
+ import n from "../../../../messages.js";
6
+ import { R as a } from "../../../../../../chunks/types.js";
7
+ import { DEFAULT_MAX_DATE as y } from "./constants.js";
8
+ import { convertToFormikValue as I } from "./date-conversion-utils.js";
9
+ import { MetadataDateFieldRelative as K } from "./metadata-date-field-relative.js";
10
+ import { s as l } from "../../../../../../chunks/metadata-date-field.module.js";
11
+ import { u as Q, E as g } from "../../../../../../chunks/use-date-validation.js";
12
+ import { useDateInternationalization as W } from "./use-date-internationalization.js";
13
+ import { getDynamicMaxMinValue as B } from "./utils.js";
14
+ import { jsx as t, jsxs as w } from "react/jsx-runtime";
15
+ const fe = ({
16
+ canUseRelativeDates: m,
17
+ ...i
18
+ }) => m ? /* @__PURE__ */ t(K, {
19
+ ...i
20
+ }) : /* @__PURE__ */ t(Y, {
21
+ ...i
22
+ }), Y = ({
23
+ disableForm: m,
24
+ fieldNamePrefix: i,
25
+ label: D,
26
+ locale: M,
27
+ portalElement: v
28
+ }) => {
29
+ const [O, h] = q(a.FROM), d = `${i}.value.range.gt`, c = `${i}.value.range.lt`, {
30
+ values: S,
31
+ setFieldTouched: $,
32
+ setFieldValue: T
33
+ } = U(), {
34
+ localTimezone: V
35
+ } = W(M), {
36
+ validateDates: R,
37
+ fromDatePickerValue: u,
38
+ toDatePickerValue: f,
39
+ fromErrorType: L,
40
+ toErrorType: b
41
+ } = Q(S, d, c, M, !1), o = J(), F = P(u), p = P(f), x = {
42
+ clearDatePickerAriaLabel: o.formatMessage(n.clearSelectedDate),
43
+ nextMonthAriaLabel: o.formatMessage(n.switchToNextMonth),
44
+ openCalendarDropdownAriaLabel: o.formatMessage(n.openCalendar),
45
+ previousMonthAriaLabel: o.formatMessage(n.switchToNextMonth)
46
+ }, j = (e) => {
47
+ const r = I(e, V, a.FROM);
48
+ F.current = e, T(d, r), h(a.FROM);
49
+ }, z = (e) => {
50
+ const r = I(e, V, a.TO);
51
+ p.current = e, T(c, r), h(a.TO);
52
+ }, A = (e) => {
53
+ const r = e === a.FROM ? d : c;
54
+ $(r, !0), h(e);
55
+ }, G = E(() => B(f, y), [f]), X = E(() => B(u), [u]), C = (e, r, s) => !!(r === g.MAX && e === g.OVERLAPPING || e === g.OVERLAPPING && s);
56
+ return /* @__PURE__ */ w("div", {
57
+ className: l.container,
58
+ "data-testid": `${D}-field`,
59
+ children: [/* @__PURE__ */ t(_, {
60
+ as: "span",
61
+ className: l.rangeFieldLabel,
62
+ color: "textOnLightSecondary",
63
+ variant: "bodyDefaultBold",
64
+ children: D
65
+ }), /* @__PURE__ */ t(H, {
66
+ locale: M,
67
+ children: /* @__PURE__ */ w("div", {
68
+ className: l.rangeInputsContainer,
69
+ children: [/* @__PURE__ */ t(k, {
70
+ name: d,
71
+ validate: (e) => R(F.current, p.current, a.FROM),
72
+ children: ({
73
+ field: e,
74
+ meta: r
75
+ }) => /* @__PURE__ */ t("div", {
76
+ className: l.inputContainer,
77
+ children: /* @__PURE__ */ t(N, {
78
+ ...e,
79
+ ...x,
80
+ calendarAriaLabel: o.formatMessage(n.selectFromDate),
81
+ error: C(L, b, O !== a.FROM) ? void 0 : r.error,
82
+ isDisabled: m,
83
+ label: o.formatMessage(n.fieldFromLabel),
84
+ maxValue: G,
85
+ onBlur: () => A(a.FROM),
86
+ onChange: (s) => j(s),
87
+ portalElement: v,
88
+ value: u
89
+ })
90
+ })
91
+ }), /* @__PURE__ */ t(k, {
92
+ name: c,
93
+ validate: (e) => R(F.current, p.current, a.TO),
94
+ children: ({
95
+ field: e,
96
+ meta: r
97
+ }) => /* @__PURE__ */ t("div", {
98
+ className: l.inputContainer,
99
+ children: /* @__PURE__ */ t(N, {
100
+ ...e,
101
+ ...x,
102
+ calendarAriaLabel: o.formatMessage(n.selectToDate),
103
+ error: C(b, L, O !== a.TO) ? void 0 : r.error,
104
+ isDisabled: m,
105
+ label: o.formatMessage(n.fieldToLabel),
106
+ maxValue: y,
107
+ minValue: X,
108
+ onBlur: () => A(a.TO),
109
+ onChange: (s) => z(s),
110
+ portalElement: v,
111
+ value: f
112
+ })
113
+ })
114
+ })]
115
+ })
116
+ })]
117
+ });
118
+ };
119
+ export {
120
+ fe as MetadataDateField,
121
+ Y as MetadataDateFieldNonRelative,
122
+ fe as default
123
+ };
@@ -0,0 +1,14 @@
1
+ import { useMemo as a } from "react";
2
+ import { DateFormatter as n } from "@box/blueprint-web/lib-esm/primitives/calendar/classes.util";
3
+ import { getLocalTimeZone as m } from "@box/blueprint-web/lib-esm/primitives/calendar/get-local-timezone.util";
4
+ const c = (t) => {
5
+ const e = a(() => new n(t), [t]), o = m();
6
+ return {
7
+ locale: t,
8
+ localTimezone: o,
9
+ formatCalendarDate: (r) => e.format(r.toDate(o))
10
+ };
11
+ };
12
+ export {
13
+ c as useDateInternationalization
14
+ };
@@ -0,0 +1,12 @@
1
+ import "formik";
2
+ import "react";
3
+ import "react-intl";
4
+ import "../../../../../../chunks/types.js";
5
+ import "./constants.js";
6
+ import "./date-conversion-utils.js";
7
+ import { u as d } from "../../../../../../chunks/use-date-validation.js";
8
+ import "./use-date-internationalization.js";
9
+ import "../../../../messages.js";
10
+ export {
11
+ d as useDateValidation
12
+ };
@@ -0,0 +1,5 @@
1
+ import { DEFAULT_MAX_DATE as i } from "./constants.js";
2
+ const m = (r, o) => r ? r.compare(i) > 0 ? i : r : o;
3
+ export {
4
+ m as getDynamicMaxMinValue
5
+ };
@@ -0,0 +1,54 @@
1
+ import { Select as l, SELECT_EMPTY_VALUE as n } from "@box/blueprint-web";
2
+ import { useFormikContext as f, getIn as g, Field as x } from "formik";
3
+ import { useIntl as E, FormattedMessage as F } from "react-intl";
4
+ import u from "../../../../messages.js";
5
+ import { jsx as t, jsxs as M } from "react/jsx-runtime";
6
+ const L = ({
7
+ disableForm: i,
8
+ fieldNamePrefix: o,
9
+ label: d,
10
+ portalElement: h
11
+ }) => {
12
+ const {
13
+ setFieldValue: c,
14
+ values: p
15
+ } = f(), v = E(), s = `${o}.value.enum[0]`, r = g(p, `${o}.options`, []).map(({
16
+ key: a
17
+ }) => a), m = v.formatMessage(u.selectValuePlaceholder);
18
+ return /* @__PURE__ */ t("div", {
19
+ "data-testid": `${d}-field`,
20
+ children: /* @__PURE__ */ t(x, {
21
+ name: s,
22
+ children: ({
23
+ field: a
24
+ }) => /* @__PURE__ */ t(l, {
25
+ disabled: i,
26
+ label: d,
27
+ onValueChange: (e) => {
28
+ e === n ? c(s, "") : c(s, e);
29
+ },
30
+ placeholder: m,
31
+ ...a,
32
+ value: a.value === n ? "" : a.value,
33
+ children: /* @__PURE__ */ M(l.Content, {
34
+ container: h,
35
+ children: [/* @__PURE__ */ t(l.Option, {
36
+ text: m,
37
+ value: n,
38
+ children: /* @__PURE__ */ t(F, {
39
+ ...u.selectValuePlaceholder
40
+ })
41
+ }), r == null ? void 0 : r.map((e) => /* @__PURE__ */ t(l.Option, {
42
+ text: e,
43
+ value: e,
44
+ children: e
45
+ }, e))]
46
+ })
47
+ })
48
+ })
49
+ });
50
+ };
51
+ export {
52
+ L as MetadataEnumField,
53
+ L as default
54
+ };
@@ -0,0 +1,15 @@
1
+ import { R as B } from "../../../../../../chunks/types.js";
2
+ import { createFieldValue as R } from "./utils.js";
3
+ const b = (u, s, V) => (r, m, o, k) => {
4
+ V == null || V(r), s == null || s(u, r);
5
+ const a = R(r === "isBlank" || r === "isNotBlank" ? "" : m, r === "isBlank" || r === "isNotBlank" ? "" : o, r, !0);
6
+ k.setFieldValue(u, a);
7
+ }, f = (u, s, V, r) => (m, o, k) => {
8
+ V(r);
9
+ const t = R(r === B.FROM ? m : o, r === B.TO ? m : o, s, !0);
10
+ k.setFieldValue(u, t);
11
+ };
12
+ export {
13
+ b as createAdvancedFilterOptionHandler,
14
+ f as createInputChangeHandler
15
+ };