@box/metadata-filter 2.2.28 → 2.2.29
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/chunks/advanced-filter-select.js +1 -59
- package/dist/chunks/metadata-date-field.module.js +1 -11
- package/dist/chunks/metadata-filter.js +1 -49
- package/dist/chunks/metadata-float-field-advanced.js +1 -78
- package/dist/chunks/metadata-taxonomy-field-advanced.module.js +1 -6
- package/dist/chunks/types.js +1 -6
- package/dist/chunks/types2.js +1 -4
- package/dist/chunks/use-float-validation.js +1 -22
- package/dist/esm/index.js +1 -14
- package/dist/esm/lib/components/metadata-filter-fields/components/constants.js +1 -2
- package/dist/esm/lib/components/metadata-filter-fields/components/index.js +1 -8
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/constants.js +1 -3
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/date-conversion-utils.js +1 -49
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/metadata-date-field-advanced.js +1 -167
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/metadata-date-field-relative.js +1 -238
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/metadata-date-field.js +1 -90
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/use-date-internationalization.js +1 -11
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/use-date-validation.js +1 -25
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/use-integer-validation.js +1 -16
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/utils.js +1 -9
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-enum-field/metadata-enum-field.js +1 -39
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/handlers.js +1 -13
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/metadata-float-field-advanced.js +1 -2
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/metadata-float-field.js +1 -67
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/use-float-validation.js +1 -2
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/utils.js +1 -47
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-multi-select-field/metadata-multi-select-field-advanced.js +1 -72
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-multi-select-field/metadata-multi-select-field.js +1 -35
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-multi-select-field/utils.js +1 -12
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-string-field/metadata-string-field.js +1 -64
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-string-field/utils.js +1 -7
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/legacy-metadata-taxonomy-field-advanced.js +1 -89
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/legacy-metadata-taxonomy-field.js +1 -46
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/metadata-taxonomy-field-advanced.js +1 -11
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/metadata-taxonomy-field.js +1 -11
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/picker/metadata-taxonomy-picker-field-advanced.js +1 -84
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/picker/metadata-taxonomy-picker-field.js +1 -46
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/picker/value-mapping.js +1 -32
- package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/utils.js +1 -8
- package/dist/esm/lib/components/metadata-filter-fields/components/shared/advanced-filter-select.js +1 -2
- package/dist/esm/lib/components/metadata-filter-fields/components/shared/index.js +1 -2
- package/dist/esm/lib/components/metadata-filter-fields/field-processing-utils.js +1 -27
- package/dist/esm/lib/components/metadata-filter-fields/filter-field-types.js +1 -27
- package/dist/esm/lib/components/metadata-filter-fields/is-modified-utils.js +1 -85
- package/dist/esm/lib/components/metadata-filter-fields/metadata-filter-fields-accordion.js +1 -63
- package/dist/esm/lib/components/metadata-filter-fields/metadata-filter-fields.js +1 -61
- package/dist/esm/lib/components/metadata-template-selector/metadata-template-selector.js +1 -33
- package/dist/esm/lib/defaults.js +1 -32
- package/dist/esm/lib/mappers.js +1 -18
- package/dist/esm/lib/messages.js +1 -220
- package/dist/esm/lib/metadata-filter.js +1 -3
- package/package.json +9 -9
|
@@ -1,238 +1 @@
|
|
|
1
|
-
import { n as e } from "../../../../../../chunks/types.js";
|
|
2
|
-
import { convertToFormikValueRanged as t, getCustomFromToValues as n, getRelativeFromToValues as r } from "./date-conversion-utils.js";
|
|
3
|
-
import i from "../../../../messages.js";
|
|
4
|
-
import { DEFAULT_MAX_DATE as a } from "./constants.js";
|
|
5
|
-
import { t as o } from "../../../../../../chunks/metadata-date-field.module.js";
|
|
6
|
-
import { t as s } from "../../../../../../chunks/types2.js";
|
|
7
|
-
import { useDateValidation as ee } from "./use-date-validation.js";
|
|
8
|
-
import { getDynamicMaxMinValue as c } from "./utils.js";
|
|
9
|
-
import { DateI18nProvider as te, DatePicker as l, Radio as u, Select as d, Text as ne } from "@box/blueprint-web";
|
|
10
|
-
import { Field as f, getIn as p, useFormikContext as re } from "formik";
|
|
11
|
-
import { useCallback as ie, useEffect as ae, useMemo as m, useRef as h, useState as g } from "react";
|
|
12
|
-
import { useIntl as oe } from "react-intl";
|
|
13
|
-
import se from "clsx";
|
|
14
|
-
import { jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
15
|
-
var y = {
|
|
16
|
-
next: i.nextDaysAmt,
|
|
17
|
-
past: i.pastDaysAmt,
|
|
18
|
-
olderThan: i.olderThanDaysAmt
|
|
19
|
-
}, ce = [
|
|
20
|
-
1,
|
|
21
|
-
3,
|
|
22
|
-
15,
|
|
23
|
-
45,
|
|
24
|
-
60,
|
|
25
|
-
120,
|
|
26
|
-
365
|
|
27
|
-
], le = (e) => e in y || e === "today" || e === "customRange", b = ({ customDateFilterOptions: b, disableForm: x, fieldNamePrefix: S, label: C, locale: w, portalElement: T, hasAccordion: ue }) => {
|
|
28
|
-
let [E, D] = g(e.FROM), [O, k] = g(!1), A = `${S}.value.range.gt`, j = `${S}.value.range.lt`, de = `${S}.value.relativeType`, M = `${S}.value.relativeDays`, fe = `${S}.value.customType`, N = `${S}.value.customDays`, { values: P, setFieldTouched: pe, setFieldValue: F } = re(), { validateDates: I, fromDatePickerValue: L, toDatePickerValue: R, fromErrorType: z, toErrorType: B } = ee(P, A, j, w, !0), V = oe(), H = p(P, de), U = p(P, fe), me = L || R, W = "anyTime", G = "anyTime";
|
|
29
|
-
le(H) ? W = H : U ? G = U : me && (W = "customRange", G = "customRange");
|
|
30
|
-
let [K, q] = g(W), J = h(H), he = h(U), Y = p(P, M), ge = p(P, N), [X, _e] = g(G), Z = h(L), Q = h(R), ve = {
|
|
31
|
-
clearDatePickerAriaLabel: V.formatMessage(i.clearSelectedDate),
|
|
32
|
-
nextMonthAriaLabel: V.formatMessage(i.switchToNextMonth),
|
|
33
|
-
openCalendarDropdownAriaLabel: V.formatMessage(i.openCalendar),
|
|
34
|
-
previousMonthAriaLabel: V.formatMessage(i.switchToNextMonth)
|
|
35
|
-
}, ye = () => {
|
|
36
|
-
F(A, void 0), F(j, void 0), Z.current = void 0, Q.current = void 0;
|
|
37
|
-
}, be = (n) => {
|
|
38
|
-
let r = t(n, e.FROM);
|
|
39
|
-
Z.current = n, F(A, r), D(e.FROM);
|
|
40
|
-
}, xe = (n) => {
|
|
41
|
-
let r = t(n, e.TO);
|
|
42
|
-
Q.current = n, F(j, r), D(e.TO);
|
|
43
|
-
}, Se = (t) => {
|
|
44
|
-
pe(t === e.FROM ? A : j, !0), D(t);
|
|
45
|
-
}, Ce = (e) => {
|
|
46
|
-
let t;
|
|
47
|
-
le(e) && (t = e), e === "customRange" && (Z.current = void 0, Q.current = void 0), F(de, t), q(e), F(M, void 0), k(!0);
|
|
48
|
-
}, we = (e) => {
|
|
49
|
-
F(fe, e), _e(e), F(N, void 0), ye();
|
|
50
|
-
let t = b.find((t) => t.name === e);
|
|
51
|
-
if (t && t.type === "text") {
|
|
52
|
-
let { from: e, to: r } = n(t.from, t.to);
|
|
53
|
-
F(A, e), F(j, r);
|
|
54
|
-
}
|
|
55
|
-
}, Te = ie(() => {
|
|
56
|
-
let { from: e, to: t } = r(K, Y);
|
|
57
|
-
F(A, e), F(j, t);
|
|
58
|
-
}, [
|
|
59
|
-
A,
|
|
60
|
-
Y,
|
|
61
|
-
K,
|
|
62
|
-
F,
|
|
63
|
-
j
|
|
64
|
-
]);
|
|
65
|
-
ae(() => {
|
|
66
|
-
O && (Te(), k(!1));
|
|
67
|
-
}, [O, Te]), ae(() => {
|
|
68
|
-
let e = J.current !== H, t = he.current !== U;
|
|
69
|
-
(e || t) && (q(H ?? "anyTime"), _e(U), J.current = H, he.current = U);
|
|
70
|
-
}, [H, U]);
|
|
71
|
-
let Ee = m(() => c(R, a), [R]), De = m(() => c(L), [L]), Oe = (e, t, n) => !!(t === s.MAX && e === s.OVERLAPPING || e === s.OVERLAPPING && n), $ = (e) => {
|
|
72
|
-
if (e !== K) return null;
|
|
73
|
-
let t = ce.map((t) => {
|
|
74
|
-
let n = y[e];
|
|
75
|
-
return {
|
|
76
|
-
value: String(t),
|
|
77
|
-
label: V.formatMessage(n, { count: t })
|
|
78
|
-
};
|
|
79
|
-
});
|
|
80
|
-
return /* @__PURE__ */ _(d, {
|
|
81
|
-
className: o.dateSelect,
|
|
82
|
-
defaultValue: Y === void 0 ? "" : String(Y),
|
|
83
|
-
label: V.formatMessage(i.relativeDaysSelectLabel),
|
|
84
|
-
onValueChange: (e) => {
|
|
85
|
-
F(M, Number(e)), k(!0);
|
|
86
|
-
},
|
|
87
|
-
placeholder: V.formatMessage(i.selectValuePlaceholder),
|
|
88
|
-
children: /* @__PURE__ */ _(d.Content, {
|
|
89
|
-
container: T,
|
|
90
|
-
children: t?.map((e) => /* @__PURE__ */ _(d.Option, {
|
|
91
|
-
text: e.label,
|
|
92
|
-
value: e.value,
|
|
93
|
-
children: e.label
|
|
94
|
-
}, e.value))
|
|
95
|
-
})
|
|
96
|
-
});
|
|
97
|
-
}, ke = (e, t) => e === X ? /* @__PURE__ */ _(d, {
|
|
98
|
-
className: o.dateSelect,
|
|
99
|
-
defaultValue: ge === void 0 ? "" : String(ge),
|
|
100
|
-
label: V.formatMessage(i.relativeDaysSelectLabel),
|
|
101
|
-
onValueChange: (e) => {
|
|
102
|
-
let r = t.find((t) => t.name === e);
|
|
103
|
-
if (r) {
|
|
104
|
-
let { from: e, to: t } = n(r.from, r.to);
|
|
105
|
-
F(A, e), F(j, t), F(N, r.name);
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
placeholder: V.formatMessage(i.selectValuePlaceholder),
|
|
109
|
-
children: /* @__PURE__ */ _(d.Content, {
|
|
110
|
-
container: T,
|
|
111
|
-
children: t.map((e) => /* @__PURE__ */ _(d.Option, {
|
|
112
|
-
text: e.name,
|
|
113
|
-
value: e.name,
|
|
114
|
-
children: e.name
|
|
115
|
-
}, e.name))
|
|
116
|
-
})
|
|
117
|
-
}) : null, Ae = () => /* @__PURE__ */ v(u.Group, {
|
|
118
|
-
disabled: x,
|
|
119
|
-
loop: !1,
|
|
120
|
-
onValueChange: we,
|
|
121
|
-
value: X,
|
|
122
|
-
children: [
|
|
123
|
-
/* @__PURE__ */ _(u.Item, {
|
|
124
|
-
label: V.formatMessage(i.relativeDateFilterAnyTime),
|
|
125
|
-
value: "anyTime"
|
|
126
|
-
}),
|
|
127
|
-
b.map((e) => {
|
|
128
|
-
if (e.type === "text") return /* @__PURE__ */ _(u.Item, {
|
|
129
|
-
label: e.name,
|
|
130
|
-
value: e.name
|
|
131
|
-
}, e.name);
|
|
132
|
-
let { name: t, options: n } = e;
|
|
133
|
-
return /* @__PURE__ */ _(u.Item, {
|
|
134
|
-
description: n ? ke(t, n) : void 0,
|
|
135
|
-
label: t,
|
|
136
|
-
value: t
|
|
137
|
-
}, t);
|
|
138
|
-
}),
|
|
139
|
-
/* @__PURE__ */ _(u.Item, {
|
|
140
|
-
description: je(),
|
|
141
|
-
label: V.formatMessage(i.relativeDateFilterCustomRange),
|
|
142
|
-
value: "customRange"
|
|
143
|
-
})
|
|
144
|
-
]
|
|
145
|
-
}), je = () => !b && K !== "customRange" || b && X !== "customRange" ? null : /* @__PURE__ */ v("div", {
|
|
146
|
-
className: se(o.rangeInputsContainer, o.verticalLayout, o.dateSelect),
|
|
147
|
-
children: [/* @__PURE__ */ _(f, {
|
|
148
|
-
name: A,
|
|
149
|
-
validate: (t) => I(Z.current, Q.current, e.FROM),
|
|
150
|
-
children: ({ field: t, meta: n }) => /* @__PURE__ */ _("div", {
|
|
151
|
-
className: o.inputContainer,
|
|
152
|
-
children: /* @__PURE__ */ _(l, {
|
|
153
|
-
...t,
|
|
154
|
-
...ve,
|
|
155
|
-
calendarAriaLabel: V.formatMessage(i.selectStartDate),
|
|
156
|
-
error: Oe(z, B, E !== e.FROM) ? void 0 : n.error,
|
|
157
|
-
isDisabled: x,
|
|
158
|
-
label: V.formatMessage(i.fieldStartDateLabel),
|
|
159
|
-
maxValue: Ee,
|
|
160
|
-
onBlur: () => Se(e.FROM),
|
|
161
|
-
onChange: (e) => be(e),
|
|
162
|
-
portalElement: T,
|
|
163
|
-
value: L
|
|
164
|
-
})
|
|
165
|
-
})
|
|
166
|
-
}), /* @__PURE__ */ _(f, {
|
|
167
|
-
name: j,
|
|
168
|
-
validate: (t) => I(Z.current, Q.current, e.TO),
|
|
169
|
-
children: ({ field: t, meta: n }) => /* @__PURE__ */ _("div", {
|
|
170
|
-
className: o.inputContainer,
|
|
171
|
-
children: /* @__PURE__ */ _(l, {
|
|
172
|
-
...t,
|
|
173
|
-
...ve,
|
|
174
|
-
calendarAriaLabel: V.formatMessage(i.selectEndDate),
|
|
175
|
-
error: Oe(B, z, E !== e.TO) ? void 0 : n.error,
|
|
176
|
-
isDisabled: x,
|
|
177
|
-
label: V.formatMessage(i.fieldEndDateLabel),
|
|
178
|
-
maxValue: a,
|
|
179
|
-
minValue: De,
|
|
180
|
-
onBlur: () => Se(e.TO),
|
|
181
|
-
onChange: (e) => xe(e),
|
|
182
|
-
portalElement: T,
|
|
183
|
-
value: R
|
|
184
|
-
})
|
|
185
|
-
})
|
|
186
|
-
})]
|
|
187
|
-
});
|
|
188
|
-
return /* @__PURE__ */ _(te, {
|
|
189
|
-
locale: w,
|
|
190
|
-
children: /* @__PURE__ */ v("div", {
|
|
191
|
-
className: o.container,
|
|
192
|
-
"data-testid": `${C}-field`,
|
|
193
|
-
children: [!ue && /* @__PURE__ */ _(ne, {
|
|
194
|
-
as: "span",
|
|
195
|
-
className: o.rangeFieldLabel,
|
|
196
|
-
color: "textOnLightSecondary",
|
|
197
|
-
variant: "bodyDefaultBold",
|
|
198
|
-
children: C
|
|
199
|
-
}), b ? Ae() : /* @__PURE__ */ v(u.Group, {
|
|
200
|
-
disabled: x,
|
|
201
|
-
loop: !1,
|
|
202
|
-
onValueChange: Ce,
|
|
203
|
-
value: K,
|
|
204
|
-
children: [
|
|
205
|
-
/* @__PURE__ */ _(u.Item, {
|
|
206
|
-
label: V.formatMessage(i.relativeDateFilterAnyTime),
|
|
207
|
-
value: "anyTime"
|
|
208
|
-
}),
|
|
209
|
-
/* @__PURE__ */ _(u.Item, {
|
|
210
|
-
label: V.formatMessage(i.relativeDateFilterToday),
|
|
211
|
-
value: "today"
|
|
212
|
-
}),
|
|
213
|
-
/* @__PURE__ */ _(u.Item, {
|
|
214
|
-
description: $("next"),
|
|
215
|
-
label: V.formatMessage(i.relativeDateFilterNext),
|
|
216
|
-
value: "next"
|
|
217
|
-
}),
|
|
218
|
-
/* @__PURE__ */ _(u.Item, {
|
|
219
|
-
description: $("past"),
|
|
220
|
-
label: V.formatMessage(i.relativeDateFilterPast),
|
|
221
|
-
value: "past"
|
|
222
|
-
}),
|
|
223
|
-
/* @__PURE__ */ _(u.Item, {
|
|
224
|
-
description: $("olderThan"),
|
|
225
|
-
label: V.formatMessage(i.relativeDateFilterOlderThan),
|
|
226
|
-
value: "olderThan"
|
|
227
|
-
}),
|
|
228
|
-
/* @__PURE__ */ _(u.Item, {
|
|
229
|
-
description: je(),
|
|
230
|
-
label: V.formatMessage(i.relativeDateFilterCustomRange),
|
|
231
|
-
value: "customRange"
|
|
232
|
-
})
|
|
233
|
-
]
|
|
234
|
-
})]
|
|
235
|
-
})
|
|
236
|
-
});
|
|
237
|
-
};
|
|
238
|
-
export { b as MetadataDateFieldRelative, b as default };
|
|
1
|
+
import{n as RangeLabelType}from"../../../../../../chunks/types.js";import{convertToFormikValueRanged,getCustomFromToValues,getRelativeFromToValues}from"./date-conversion-utils.js";import messages from"../../../../messages.js";import{DEFAULT_MAX_DATE}from"./constants.js";import{t as metadata_date_field_module_default}from"../../../../../../chunks/metadata-date-field.module.js";import{t as ErrorType}from"../../../../../../chunks/types2.js";import{useDateValidation}from"./use-date-validation.js";import{getDynamicMaxMinValue}from"./utils.js";import{DateI18nProvider,DatePicker,Radio,Select,Text}from"@box/blueprint-web";import{Field,getIn,useFormikContext}from"formik";import{useCallback,useEffect,useMemo,useRef,useState}from"react";import{useIntl}from"react-intl";import clsx from"clsx";import{jsx,jsxs}from"react/jsx-runtime";var relDaysMessageStrategies={next:messages.nextDaysAmt,past:messages.pastDaysAmt,olderThan:messages.olderThanDaysAmt},daysPresets=[1,3,15,45,60,120,365],isRelativeType=value=>value in relDaysMessageStrategies||value===`today`||value===`customRange`,MetadataDateFieldRelative=({customDateFilterOptions,disableForm,fieldNamePrefix,label,locale,portalElement,hasAccordion})=>{let[lastChangedField,setLastChangedField]=useState(RangeLabelType.FROM),[shouldUpdateFromToFields,setShouldUpdateFromToFields]=useState(!1),fromFieldName=`${fieldNamePrefix}.value.range.gt`,toFieldName=`${fieldNamePrefix}.value.range.lt`,relTypeFieldName=`${fieldNamePrefix}.value.relativeType`,relDaysFieldName=`${fieldNamePrefix}.value.relativeDays`,customTypeFieldName=`${fieldNamePrefix}.value.customType`,customDaysFieldName=`${fieldNamePrefix}.value.customDays`,{values,setFieldTouched,setFieldValue}=useFormikContext(),{validateDates,fromDatePickerValue,toDatePickerValue,fromErrorType,toErrorType}=useDateValidation(values,fromFieldName,toFieldName,locale,!0),intl=useIntl(),relTypeFieldValue=getIn(values,relTypeFieldName),customTypeFieldValue=getIn(values,customTypeFieldName),hasFromOrToValues=fromDatePickerValue||toDatePickerValue,defaultSelectedRelValue=`anyTime`,defaultSelectedCustomDateFilterValue=`anyTime`;isRelativeType(relTypeFieldValue)?defaultSelectedRelValue=relTypeFieldValue:customTypeFieldValue?defaultSelectedCustomDateFilterValue=customTypeFieldValue:hasFromOrToValues&&(defaultSelectedRelValue=`customRange`,defaultSelectedCustomDateFilterValue=`customRange`);let[selectedRelValue,setSelectedRelValue]=useState(defaultSelectedRelValue),prevRelTypeFieldValue=useRef(relTypeFieldValue),prevCustomTypeFieldValue=useRef(customTypeFieldValue),relDaysFieldValue=getIn(values,relDaysFieldName),customDaysFieldValue=getIn(values,customDaysFieldName),[selectedCustomDateFilterValue,setSelectedCustomDateFilterValue]=useState(defaultSelectedCustomDateFilterValue),fromValidationRef=useRef(fromDatePickerValue),toValidationRef=useRef(toDatePickerValue),sharedDatePickerProps={clearDatePickerAriaLabel:intl.formatMessage(messages.clearSelectedDate),nextMonthAriaLabel:intl.formatMessage(messages.switchToNextMonth),openCalendarDropdownAriaLabel:intl.formatMessage(messages.openCalendar),previousMonthAriaLabel:intl.formatMessage(messages.switchToNextMonth)},clearFromToFields=()=>{setFieldValue(fromFieldName,void 0),setFieldValue(toFieldName,void 0),fromValidationRef.current=void 0,toValidationRef.current=void 0},handleFromOnChange=datePickerValue=>{let formikValue=convertToFormikValueRanged(datePickerValue,RangeLabelType.FROM);fromValidationRef.current=datePickerValue,setFieldValue(fromFieldName,formikValue),setLastChangedField(RangeLabelType.FROM)},handleToOnChange=datePickerValue=>{let formikValue=convertToFormikValueRanged(datePickerValue,RangeLabelType.TO);toValidationRef.current=datePickerValue,setFieldValue(toFieldName,formikValue),setLastChangedField(RangeLabelType.TO)},handleOnBlur=rangeLabelType=>{setFieldTouched(rangeLabelType===RangeLabelType.FROM?fromFieldName:toFieldName,!0),setLastChangedField(rangeLabelType)},handleRelativeTypeChange=value=>{let relValue;isRelativeType(value)&&(relValue=value),value===`customRange`&&(fromValidationRef.current=void 0,toValidationRef.current=void 0),setFieldValue(relTypeFieldName,relValue),setSelectedRelValue(value),setFieldValue(relDaysFieldName,void 0),setShouldUpdateFromToFields(!0)},handleCustomDateFilterChange=optionName=>{setFieldValue(customTypeFieldName,optionName),setSelectedCustomDateFilterValue(optionName),setFieldValue(customDaysFieldName,void 0),clearFromToFields();let selectedOption=customDateFilterOptions.find(option=>option.name===optionName);if(selectedOption&&selectedOption.type===`text`){let{from,to}=getCustomFromToValues(selectedOption.from,selectedOption.to);setFieldValue(fromFieldName,from),setFieldValue(toFieldName,to)}},updateFromToFields=useCallback(()=>{let{from,to}=getRelativeFromToValues(selectedRelValue,relDaysFieldValue);setFieldValue(fromFieldName,from),setFieldValue(toFieldName,to)},[fromFieldName,relDaysFieldValue,selectedRelValue,setFieldValue,toFieldName]);useEffect(()=>{shouldUpdateFromToFields&&(updateFromToFields(),setShouldUpdateFromToFields(!1))},[shouldUpdateFromToFields,updateFromToFields]),useEffect(()=>{let relTypeChanged=prevRelTypeFieldValue.current!==relTypeFieldValue,customTypeChanged=prevCustomTypeFieldValue.current!==customTypeFieldValue;(relTypeChanged||customTypeChanged)&&(setSelectedRelValue(relTypeFieldValue??`anyTime`),setSelectedCustomDateFilterValue(customTypeFieldValue),prevRelTypeFieldValue.current=relTypeFieldValue,prevCustomTypeFieldValue.current=customTypeFieldValue)},[relTypeFieldValue,customTypeFieldValue]);let fromMaxValue=useMemo(()=>getDynamicMaxMinValue(toDatePickerValue,DEFAULT_MAX_DATE),[toDatePickerValue]),toMinValue=useMemo(()=>getDynamicMaxMinValue(fromDatePickerValue),[fromDatePickerValue]),shouldHideError=(thisErrorType,otherErrorType,isNotLastChangedField)=>!!(otherErrorType===ErrorType.MAX&&thisErrorType===ErrorType.OVERLAPPING||thisErrorType===ErrorType.OVERLAPPING&&isNotLastChangedField),getDaysSelect=type=>{if(type!==selectedRelValue)return null;let daysOptions=daysPresets.map(value=>{let daysAmtMessage=relDaysMessageStrategies[type];return{value:String(value),label:intl.formatMessage(daysAmtMessage,{count:value})}});return jsx(Select,{className:metadata_date_field_module_default.dateSelect,defaultValue:relDaysFieldValue===void 0?``:String(relDaysFieldValue),label:intl.formatMessage(messages.relativeDaysSelectLabel),onValueChange:key=>{setFieldValue(relDaysFieldName,Number(key)),setShouldUpdateFromToFields(!0)},placeholder:intl.formatMessage(messages.selectValuePlaceholder),children:jsx(Select.Content,{container:portalElement,children:daysOptions?.map(option=>jsx(Select.Option,{text:option.label,value:option.value,children:option.label},option.value))})})},getCustomDaysSelect=(name,options)=>name===selectedCustomDateFilterValue?jsx(Select,{className:metadata_date_field_module_default.dateSelect,defaultValue:customDaysFieldValue===void 0?``:String(customDaysFieldValue),label:intl.formatMessage(messages.relativeDaysSelectLabel),onValueChange:selectedOptionName=>{let selectedOption=options.find(option=>option.name===selectedOptionName);if(selectedOption){let{from,to}=getCustomFromToValues(selectedOption.from,selectedOption.to);setFieldValue(fromFieldName,from),setFieldValue(toFieldName,to),setFieldValue(customDaysFieldName,selectedOption.name)}},placeholder:intl.formatMessage(messages.selectValuePlaceholder),children:jsx(Select.Content,{container:portalElement,children:options.map(option=>jsx(Select.Option,{text:option.name,value:option.name,children:option.name},option.name))})}):null,renderCustomDateFilterOptions=()=>jsxs(Radio.Group,{disabled:disableForm,loop:!1,onValueChange:handleCustomDateFilterChange,value:selectedCustomDateFilterValue,children:[jsx(Radio.Item,{label:intl.formatMessage(messages.relativeDateFilterAnyTime),value:`anyTime`}),customDateFilterOptions.map(option=>{if(option.type===`text`)return jsx(Radio.Item,{label:option.name,value:option.name},option.name);let{name,options}=option;return jsx(Radio.Item,{description:options?getCustomDaysSelect(name,options):void 0,label:name,value:name},name)}),jsx(Radio.Item,{description:getCustomRangeFields(),label:intl.formatMessage(messages.relativeDateFilterCustomRange),value:`customRange`})]}),getCustomRangeFields=()=>!customDateFilterOptions&&selectedRelValue!==`customRange`||customDateFilterOptions&&selectedCustomDateFilterValue!==`customRange`?null:jsxs(`div`,{className:clsx(metadata_date_field_module_default.rangeInputsContainer,metadata_date_field_module_default.verticalLayout,metadata_date_field_module_default.dateSelect),children:[jsx(Field,{name:fromFieldName,validate:fromValue=>validateDates(fromValidationRef.current,toValidationRef.current,RangeLabelType.FROM),children:({field,meta})=>jsx(`div`,{className:metadata_date_field_module_default.inputContainer,children:jsx(DatePicker,{...field,...sharedDatePickerProps,calendarAriaLabel:intl.formatMessage(messages.selectStartDate),error:shouldHideError(fromErrorType,toErrorType,lastChangedField!==RangeLabelType.FROM)?void 0:meta.error,isDisabled:disableForm,label:intl.formatMessage(messages.fieldStartDateLabel),maxValue:fromMaxValue,onBlur:()=>handleOnBlur(RangeLabelType.FROM),onChange:datePickerValue=>handleFromOnChange(datePickerValue),portalElement,value:fromDatePickerValue})})}),jsx(Field,{name:toFieldName,validate:toValue=>validateDates(fromValidationRef.current,toValidationRef.current,RangeLabelType.TO),children:({field,meta})=>jsx(`div`,{className:metadata_date_field_module_default.inputContainer,children:jsx(DatePicker,{...field,...sharedDatePickerProps,calendarAriaLabel:intl.formatMessage(messages.selectEndDate),error:shouldHideError(toErrorType,fromErrorType,lastChangedField!==RangeLabelType.TO)?void 0:meta.error,isDisabled:disableForm,label:intl.formatMessage(messages.fieldEndDateLabel),maxValue:DEFAULT_MAX_DATE,minValue:toMinValue,onBlur:()=>handleOnBlur(RangeLabelType.TO),onChange:datePickerValue=>handleToOnChange(datePickerValue),portalElement,value:toDatePickerValue})})})]});return jsx(DateI18nProvider,{locale,children:jsxs(`div`,{className:metadata_date_field_module_default.container,"data-testid":`${label}-field`,children:[!hasAccordion&&jsx(Text,{as:`span`,className:metadata_date_field_module_default.rangeFieldLabel,color:`textOnLightSecondary`,variant:`bodyDefaultBold`,children:label}),customDateFilterOptions?renderCustomDateFilterOptions():jsxs(Radio.Group,{disabled:disableForm,loop:!1,onValueChange:handleRelativeTypeChange,value:selectedRelValue,children:[jsx(Radio.Item,{label:intl.formatMessage(messages.relativeDateFilterAnyTime),value:`anyTime`}),jsx(Radio.Item,{label:intl.formatMessage(messages.relativeDateFilterToday),value:`today`}),jsx(Radio.Item,{description:getDaysSelect(`next`),label:intl.formatMessage(messages.relativeDateFilterNext),value:`next`}),jsx(Radio.Item,{description:getDaysSelect(`past`),label:intl.formatMessage(messages.relativeDateFilterPast),value:`past`}),jsx(Radio.Item,{description:getDaysSelect(`olderThan`),label:intl.formatMessage(messages.relativeDateFilterOlderThan),value:`olderThan`}),jsx(Radio.Item,{description:getCustomRangeFields(),label:intl.formatMessage(messages.relativeDateFilterCustomRange),value:`customRange`})]})]})})};export{MetadataDateFieldRelative,MetadataDateFieldRelative as default};
|
|
@@ -1,90 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { convertToFormikValueRanged as t } from "./date-conversion-utils.js";
|
|
3
|
-
import n from "../../../../messages.js";
|
|
4
|
-
import { DEFAULT_MAX_DATE as r } from "./constants.js";
|
|
5
|
-
import { t as i } from "../../../../../../chunks/metadata-date-field.module.js";
|
|
6
|
-
import { t as a } from "../../../../../../chunks/types2.js";
|
|
7
|
-
import { useDateValidation as o } from "./use-date-validation.js";
|
|
8
|
-
import { getDynamicMaxMinValue as s } from "./utils.js";
|
|
9
|
-
import { MetadataDateFieldAdvanced as c } from "./metadata-date-field-advanced.js";
|
|
10
|
-
import { MetadataDateFieldRelative as l } from "./metadata-date-field-relative.js";
|
|
11
|
-
import { DateI18nProvider as u, DatePicker as d, Text as f } from "@box/blueprint-web";
|
|
12
|
-
import { Field as p, useFormikContext as m } from "formik";
|
|
13
|
-
import { useMemo as h, useRef as g, useState as _ } from "react";
|
|
14
|
-
import { useIntl as v } from "react-intl";
|
|
15
|
-
import { jsx as y, jsxs as b } from "react/jsx-runtime";
|
|
16
|
-
var x = ({ canUseRelativeDates: e, isAdvancedFilterEnabled: t, ...n }) => y(t ? c : e ? l : S, { ...n }), S = ({ customFieldLabels: c = [], direction: l = "horizontal", disableForm: x, fieldNamePrefix: S, label: C, locale: w, portalElement: T, hasAccordion: E }) => {
|
|
17
|
-
let [D, O] = _(e.FROM), k = `${S}.value.range.gt`, A = `${S}.value.range.lt`, { values: j, setFieldTouched: M, setFieldValue: N } = m(), { validateDates: P, fromDatePickerValue: F, toDatePickerValue: I, fromErrorType: L, toErrorType: R } = o(j, k, A, w, !0), z = v(), B = g(F), V = g(I), H = {
|
|
18
|
-
clearDatePickerAriaLabel: z.formatMessage(n.clearSelectedDate),
|
|
19
|
-
nextMonthAriaLabel: z.formatMessage(n.switchToNextMonth),
|
|
20
|
-
openCalendarDropdownAriaLabel: z.formatMessage(n.openCalendar),
|
|
21
|
-
previousMonthAriaLabel: z.formatMessage(n.switchToNextMonth)
|
|
22
|
-
}, [U, W] = c, G = (n) => {
|
|
23
|
-
let r = t(n, e.FROM);
|
|
24
|
-
B.current = n, N(k, r), O(e.FROM);
|
|
25
|
-
}, K = (n) => {
|
|
26
|
-
let r = t(n, e.TO);
|
|
27
|
-
V.current = n, N(A, r), O(e.TO);
|
|
28
|
-
}, q = (t) => {
|
|
29
|
-
M(t === e.FROM ? k : A, !0), O(t);
|
|
30
|
-
}, J = h(() => s(I, r), [I]), Y = h(() => s(F), [F]), X = (e, t, n) => !!(t === a.MAX && e === a.OVERLAPPING || e === a.OVERLAPPING && n);
|
|
31
|
-
return /* @__PURE__ */ b("div", {
|
|
32
|
-
className: i.container,
|
|
33
|
-
"data-testid": `${C}-field`,
|
|
34
|
-
children: [!E && /* @__PURE__ */ y(f, {
|
|
35
|
-
as: "span",
|
|
36
|
-
className: i.rangeFieldLabel,
|
|
37
|
-
color: "textOnLightSecondary",
|
|
38
|
-
variant: "bodyDefaultBold",
|
|
39
|
-
children: C
|
|
40
|
-
}), /* @__PURE__ */ y(u, {
|
|
41
|
-
locale: w,
|
|
42
|
-
children: /* @__PURE__ */ b("div", {
|
|
43
|
-
className: `${i.rangeInputsContainer} ${l === "vertical" ? i.verticalLayout : ""}`,
|
|
44
|
-
children: [/* @__PURE__ */ y(p, {
|
|
45
|
-
name: k,
|
|
46
|
-
validate: (t) => P(B.current, V.current, e.FROM),
|
|
47
|
-
children: ({ field: t, meta: r }) => /* @__PURE__ */ y("div", {
|
|
48
|
-
className: i.inputContainer,
|
|
49
|
-
children: /* @__PURE__ */ y(d, {
|
|
50
|
-
...t,
|
|
51
|
-
...H,
|
|
52
|
-
calendarAriaLabel: z.formatMessage(n.selectFromDate),
|
|
53
|
-
dataTargetId: `DatePicker-${S}_from`,
|
|
54
|
-
error: X(L, R, D !== e.FROM) ? void 0 : r.error,
|
|
55
|
-
isDisabled: x,
|
|
56
|
-
label: U || z.formatMessage(n.fieldFromLabel),
|
|
57
|
-
maxValue: J,
|
|
58
|
-
onBlur: () => q(e.FROM),
|
|
59
|
-
onChange: (e) => G(e),
|
|
60
|
-
portalElement: T,
|
|
61
|
-
value: F
|
|
62
|
-
})
|
|
63
|
-
})
|
|
64
|
-
}), /* @__PURE__ */ y(p, {
|
|
65
|
-
name: A,
|
|
66
|
-
validate: (t) => P(B.current, V.current, e.TO),
|
|
67
|
-
children: ({ field: t, meta: a }) => /* @__PURE__ */ y("div", {
|
|
68
|
-
className: i.inputContainer,
|
|
69
|
-
children: /* @__PURE__ */ y(d, {
|
|
70
|
-
...t,
|
|
71
|
-
...H,
|
|
72
|
-
calendarAriaLabel: z.formatMessage(n.selectToDate),
|
|
73
|
-
dataTargetId: `DatePicker-${S}_to`,
|
|
74
|
-
error: X(R, L, D !== e.TO) ? void 0 : a.error,
|
|
75
|
-
isDisabled: x,
|
|
76
|
-
label: W || z.formatMessage(n.fieldToLabel),
|
|
77
|
-
maxValue: r,
|
|
78
|
-
minValue: Y,
|
|
79
|
-
onBlur: () => q(e.TO),
|
|
80
|
-
onChange: (e) => K(e),
|
|
81
|
-
portalElement: T,
|
|
82
|
-
value: I
|
|
83
|
-
})
|
|
84
|
-
})
|
|
85
|
-
})]
|
|
86
|
-
})
|
|
87
|
-
})]
|
|
88
|
-
});
|
|
89
|
-
};
|
|
90
|
-
export { x as MetadataDateField, x as default, S as MetadataDateFieldNonRelative };
|
|
1
|
+
import{n as RangeLabelType}from"../../../../../../chunks/types.js";import{convertToFormikValueRanged}from"./date-conversion-utils.js";import messages from"../../../../messages.js";import{DEFAULT_MAX_DATE}from"./constants.js";import{t as metadata_date_field_module_default}from"../../../../../../chunks/metadata-date-field.module.js";import{t as ErrorType}from"../../../../../../chunks/types2.js";import{useDateValidation}from"./use-date-validation.js";import{getDynamicMaxMinValue}from"./utils.js";import{MetadataDateFieldAdvanced}from"./metadata-date-field-advanced.js";import{MetadataDateFieldRelative}from"./metadata-date-field-relative.js";import{DateI18nProvider,DatePicker,Text}from"@box/blueprint-web";import{Field,useFormikContext}from"formik";import{useMemo,useRef,useState}from"react";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";var MetadataDateField=({canUseRelativeDates,isAdvancedFilterEnabled,...props})=>jsx(isAdvancedFilterEnabled?MetadataDateFieldAdvanced:canUseRelativeDates?MetadataDateFieldRelative:MetadataDateFieldNonRelative,{...props}),MetadataDateFieldNonRelative=({customFieldLabels=[],direction=`horizontal`,disableForm,fieldNamePrefix,label,locale,portalElement,hasAccordion})=>{let[lastChangedField,setLastChangedField]=useState(RangeLabelType.FROM),fromFieldName=`${fieldNamePrefix}.value.range.gt`,toFieldName=`${fieldNamePrefix}.value.range.lt`,{values,setFieldTouched,setFieldValue}=useFormikContext(),{validateDates,fromDatePickerValue,toDatePickerValue,fromErrorType,toErrorType}=useDateValidation(values,fromFieldName,toFieldName,locale,!0),intl=useIntl(),fromValidationRef=useRef(fromDatePickerValue),toValidationRef=useRef(toDatePickerValue),sharedDatePickerProps={clearDatePickerAriaLabel:intl.formatMessage(messages.clearSelectedDate),nextMonthAriaLabel:intl.formatMessage(messages.switchToNextMonth),openCalendarDropdownAriaLabel:intl.formatMessage(messages.openCalendar),previousMonthAriaLabel:intl.formatMessage(messages.switchToNextMonth)},[fromFieldLabel,toFieldLabel]=customFieldLabels,handleFromOnChange=datePickerValue=>{let formikValue=convertToFormikValueRanged(datePickerValue,RangeLabelType.FROM);fromValidationRef.current=datePickerValue,setFieldValue(fromFieldName,formikValue),setLastChangedField(RangeLabelType.FROM)},handleToOnChange=datePickerValue=>{let formikValue=convertToFormikValueRanged(datePickerValue,RangeLabelType.TO);toValidationRef.current=datePickerValue,setFieldValue(toFieldName,formikValue),setLastChangedField(RangeLabelType.TO)},handleOnBlur=rangeLabelType=>{setFieldTouched(rangeLabelType===RangeLabelType.FROM?fromFieldName:toFieldName,!0),setLastChangedField(rangeLabelType)},fromMaxValue=useMemo(()=>getDynamicMaxMinValue(toDatePickerValue,DEFAULT_MAX_DATE),[toDatePickerValue]),toMinValue=useMemo(()=>getDynamicMaxMinValue(fromDatePickerValue),[fromDatePickerValue]),shouldHideError=(thisErrorType,otherErrorType,isNotLastChangedField)=>!!(otherErrorType===ErrorType.MAX&&thisErrorType===ErrorType.OVERLAPPING||thisErrorType===ErrorType.OVERLAPPING&&isNotLastChangedField);return jsxs(`div`,{className:metadata_date_field_module_default.container,"data-testid":`${label}-field`,children:[!hasAccordion&&jsx(Text,{as:`span`,className:metadata_date_field_module_default.rangeFieldLabel,color:`textOnLightSecondary`,variant:`bodyDefaultBold`,children:label}),jsx(DateI18nProvider,{locale,children:jsxs(`div`,{className:`${metadata_date_field_module_default.rangeInputsContainer} ${direction===`vertical`?metadata_date_field_module_default.verticalLayout:``}`,children:[jsx(Field,{name:fromFieldName,validate:fromValue=>validateDates(fromValidationRef.current,toValidationRef.current,RangeLabelType.FROM),children:({field,meta})=>jsx(`div`,{className:metadata_date_field_module_default.inputContainer,children:jsx(DatePicker,{...field,...sharedDatePickerProps,calendarAriaLabel:intl.formatMessage(messages.selectFromDate),dataTargetId:`DatePicker-${fieldNamePrefix}_from`,error:shouldHideError(fromErrorType,toErrorType,lastChangedField!==RangeLabelType.FROM)?void 0:meta.error,isDisabled:disableForm,label:fromFieldLabel||intl.formatMessage(messages.fieldFromLabel),maxValue:fromMaxValue,onBlur:()=>handleOnBlur(RangeLabelType.FROM),onChange:datePickerValue=>handleFromOnChange(datePickerValue),portalElement,value:fromDatePickerValue})})}),jsx(Field,{name:toFieldName,validate:toValue=>validateDates(fromValidationRef.current,toValidationRef.current,RangeLabelType.TO),children:({field,meta})=>jsx(`div`,{className:metadata_date_field_module_default.inputContainer,children:jsx(DatePicker,{...field,...sharedDatePickerProps,calendarAriaLabel:intl.formatMessage(messages.selectToDate),dataTargetId:`DatePicker-${fieldNamePrefix}_to`,error:shouldHideError(toErrorType,fromErrorType,lastChangedField!==RangeLabelType.TO)?void 0:meta.error,isDisabled:disableForm,label:toFieldLabel||intl.formatMessage(messages.fieldToLabel),maxValue:DEFAULT_MAX_DATE,minValue:toMinValue,onBlur:()=>handleOnBlur(RangeLabelType.TO),onChange:datePickerValue=>handleToOnChange(datePickerValue),portalElement,value:toDatePickerValue})})})]})})]})};export{MetadataDateField,MetadataDateField as default,MetadataDateFieldNonRelative};
|
|
@@ -1,11 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useMemo as n } from "react";
|
|
3
|
-
var r = (r) => {
|
|
4
|
-
let i = n(() => new e(r), [r]), a = t();
|
|
5
|
-
return {
|
|
6
|
-
locale: r,
|
|
7
|
-
localTimezone: a,
|
|
8
|
-
formatCalendarDate: (e) => i.format(e.toDate(a))
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
export { r as useDateInternationalization };
|
|
1
|
+
import{DateFormatter,getLocalTimeZone}from"@box/blueprint-web";import{useMemo}from"react";var useDateInternationalization=locale=>{let dateFormatter=useMemo(()=>new DateFormatter(locale),[locale]),localTimezone=getLocalTimeZone();return{locale,localTimezone,formatCalendarDate:calendarDate=>dateFormatter.format(calendarDate.toDate(localTimezone))}};export{useDateInternationalization};
|
|
@@ -1,25 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { convertToDatePickerValue as t } from "./date-conversion-utils.js";
|
|
3
|
-
import n from "../../../../messages.js";
|
|
4
|
-
import { DEFAULT_MAX_DATE as r } from "./constants.js";
|
|
5
|
-
import { t as i } from "../../../../../../chunks/types2.js";
|
|
6
|
-
import { useDateInternationalization as a } from "./use-date-internationalization.js";
|
|
7
|
-
import { getIn as o } from "formik";
|
|
8
|
-
import { useMemo as s, useState as c } from "react";
|
|
9
|
-
import { useIntl as l } from "react-intl";
|
|
10
|
-
var u = (u, d, f, p, m) => {
|
|
11
|
-
let { formatCalendarDate: h } = a(p), g = l(), _ = o(u, d), v = o(u, f), y = s(() => t(_, m), [m, _]), b = s(() => t(v, m), [m, v]), [x, S] = c(null), [C, w] = c(null), T = (t, n) => t === e.FROM ? S(n) : w(n);
|
|
12
|
-
return {
|
|
13
|
-
validateDates: (t, a, o) => {
|
|
14
|
-
let s = o === e.FROM;
|
|
15
|
-
if ((s ? t : a)?.compare(r) > 0) return T(o, i.MAX), g.formatMessage(n.beforeDateValidationError, { date: h(r) });
|
|
16
|
-
if (t && a && t.compare(a) > 0) return T(o, i.OVERLAPPING), s ? g.formatMessage(n.beforeDateValidationError, { date: h(a) }) : g.formatMessage(n.afterDateValidationError, { date: h(t) });
|
|
17
|
-
T(o, null);
|
|
18
|
-
},
|
|
19
|
-
fromDatePickerValue: y,
|
|
20
|
-
toDatePickerValue: b,
|
|
21
|
-
fromErrorType: x,
|
|
22
|
-
toErrorType: C
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
export { u as useDateValidation };
|
|
1
|
+
import{n as RangeLabelType}from"../../../../../../chunks/types.js";import{convertToDatePickerValue}from"./date-conversion-utils.js";import messages from"../../../../messages.js";import{DEFAULT_MAX_DATE}from"./constants.js";import{t as ErrorType}from"../../../../../../chunks/types2.js";import{useDateInternationalization}from"./use-date-internationalization.js";import{getIn}from"formik";import{useMemo,useState}from"react";import{useIntl}from"react-intl";var useDateValidation=(values,fromFieldName,toFieldName,locale,discardTz)=>{let{formatCalendarDate}=useDateInternationalization(locale),intl=useIntl(),fromFormikValue=getIn(values,fromFieldName),toFormikValue=getIn(values,toFieldName),fromDatePickerValue=useMemo(()=>convertToDatePickerValue(fromFormikValue,discardTz),[discardTz,fromFormikValue]),toDatePickerValue=useMemo(()=>convertToDatePickerValue(toFormikValue,discardTz),[discardTz,toFormikValue]),[fromErrorType,setFromErrorType]=useState(null),[toErrorType,setToErrorType]=useState(null),setErrorType=(rangeLabelType,errorType)=>rangeLabelType===RangeLabelType.FROM?setFromErrorType(errorType):setToErrorType(errorType);return{validateDates:(fromDatePicker,toDatePicker,rangeLabelType)=>{let isFrom=rangeLabelType===RangeLabelType.FROM;if((isFrom?fromDatePicker:toDatePicker)?.compare(DEFAULT_MAX_DATE)>0)return setErrorType(rangeLabelType,ErrorType.MAX),intl.formatMessage(messages.beforeDateValidationError,{date:formatCalendarDate(DEFAULT_MAX_DATE)});if(fromDatePicker&&toDatePicker&&fromDatePicker.compare(toDatePicker)>0)return setErrorType(rangeLabelType,ErrorType.OVERLAPPING),isFrom?intl.formatMessage(messages.beforeDateValidationError,{date:formatCalendarDate(toDatePicker)}):intl.formatMessage(messages.afterDateValidationError,{date:formatCalendarDate(fromDatePicker)});setErrorType(rangeLabelType,null)},fromDatePickerValue,toDatePickerValue,fromErrorType,toErrorType}};export{useDateValidation};
|
|
@@ -1,16 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { t } from "../../../../../../chunks/types2.js";
|
|
3
|
-
import { useState as n } from "react";
|
|
4
|
-
import { useIntl as r } from "react-intl";
|
|
5
|
-
var i = (e) => e?.length ? /^[-+]?\d+$/.test(e.trim()) : !0, a = () => {
|
|
6
|
-
let a = r(), [o, s] = n(null);
|
|
7
|
-
return {
|
|
8
|
-
validatePositiveInteger: (n) => {
|
|
9
|
-
if (!i(n)) return s(t.INVALID), a.formatMessage(e.mustBeANumber);
|
|
10
|
-
if (n && parseInt(n, 10) <= 0) return s(t.INVALID), a.formatMessage(e.mustBePositiveNumber);
|
|
11
|
-
s(null);
|
|
12
|
-
},
|
|
13
|
-
errorType: o
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
export { i as isIntegerOrBlank, a as useIntegerValidation };
|
|
1
|
+
import messages from"../../../../messages.js";import{t as ErrorType}from"../../../../../../chunks/types2.js";import{useState}from"react";import{useIntl}from"react-intl";var isIntegerOrBlank=value=>value?.length?/^[-+]?\d+$/.test(value.trim()):!0,useIntegerValidation=()=>{let intl=useIntl(),[errorType,setErrorType]=useState(null);return{validatePositiveInteger:value=>{if(!isIntegerOrBlank(value))return setErrorType(ErrorType.INVALID),intl.formatMessage(messages.mustBeANumber);if(value&&parseInt(value,10)<=0)return setErrorType(ErrorType.INVALID),intl.formatMessage(messages.mustBePositiveNumber);setErrorType(null)},errorType}};export{isIntegerOrBlank,useIntegerValidation};
|
package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/utils.js
CHANGED
|
@@ -1,9 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
var t = (t, n) => t ? t.compare(e) > 0 ? e : t : n, n = (e) => {
|
|
3
|
-
let t = Number(e), n = !isNaN(t) && t > 0 && /^\d+$/.test(e.trim());
|
|
4
|
-
return {
|
|
5
|
-
valueToStore: n ? t : e,
|
|
6
|
-
shouldTriggerUpdate: n
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
export { t as getDynamicMaxMinValue, n as processRelativeDaysInput };
|
|
1
|
+
import{DEFAULT_MAX_DATE}from"./constants.js";var getDynamicMaxMinValue=(calendarDate,nullDefault)=>calendarDate?calendarDate.compare(DEFAULT_MAX_DATE)>0?DEFAULT_MAX_DATE:calendarDate:nullDefault,processRelativeDaysInput=value=>{let numValue=Number(value),isValidPositiveNumber=!isNaN(numValue)&&numValue>0&&/^\d+$/.test(value.trim());return{valueToStore:isValidPositiveNumber?numValue:value,shouldTriggerUpdate:isValidPositiveNumber}};export{getDynamicMaxMinValue,processRelativeDaysInput};
|
|
@@ -1,39 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { SELECT_EMPTY_VALUE as t, Select as n } from "@box/blueprint-web";
|
|
3
|
-
import { Field as r, getIn as i, useFormikContext as a } from "formik";
|
|
4
|
-
import { FormattedMessage as o, useIntl as s } from "react-intl";
|
|
5
|
-
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
6
|
-
var u = ({ disableForm: u, fieldNamePrefix: d, label: f, portalElement: p, hasAccordion: m, placeholder: h }) => {
|
|
7
|
-
let { setFieldValue: g, values: _ } = a(), v = s(), y = `${d}.value.enum[0]`, b = i(_, `${d}.options`, []).map(({ key: e }) => e), x = h || v.formatMessage(e.selectValuePlaceholder);
|
|
8
|
-
return /* @__PURE__ */ c("div", {
|
|
9
|
-
"data-testid": `${f}-field`,
|
|
10
|
-
children: /* @__PURE__ */ c(r, {
|
|
11
|
-
name: y,
|
|
12
|
-
children: ({ field: r }) => /* @__PURE__ */ c(n, {
|
|
13
|
-
"data-target-id": `Select-${d}`,
|
|
14
|
-
disabled: u,
|
|
15
|
-
hideLabel: m,
|
|
16
|
-
label: f,
|
|
17
|
-
onValueChange: (e) => {
|
|
18
|
-
e === t ? g(y, "") : g(y, e);
|
|
19
|
-
},
|
|
20
|
-
placeholder: x,
|
|
21
|
-
...r,
|
|
22
|
-
value: r.value === t ? "" : r.value,
|
|
23
|
-
children: /* @__PURE__ */ l(n.Content, {
|
|
24
|
-
container: p,
|
|
25
|
-
children: [/* @__PURE__ */ c(n.Option, {
|
|
26
|
-
text: x,
|
|
27
|
-
value: t,
|
|
28
|
-
children: /* @__PURE__ */ c(o, { ...e.selectValuePlaceholder })
|
|
29
|
-
}), b?.map((e) => /* @__PURE__ */ c(n.Option, {
|
|
30
|
-
text: e,
|
|
31
|
-
value: e,
|
|
32
|
-
children: e
|
|
33
|
-
}, e))]
|
|
34
|
-
})
|
|
35
|
-
})
|
|
36
|
-
})
|
|
37
|
-
});
|
|
38
|
-
};
|
|
39
|
-
export { u as MetadataEnumField, u as default };
|
|
1
|
+
import messages from"../../../../messages.js";import{SELECT_EMPTY_VALUE,Select}from"@box/blueprint-web";import{Field,getIn,useFormikContext}from"formik";import{FormattedMessage,useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";var MetadataEnumField=({disableForm,fieldNamePrefix,label,portalElement,hasAccordion,placeholder})=>{let{setFieldValue,values}=useFormikContext(),intl=useIntl(),fieldName=`${fieldNamePrefix}.value.enum[0]`,options=getIn(values,`${fieldNamePrefix}.options`,[]).map(({key})=>key),defaultMessage=placeholder||intl.formatMessage(messages.selectValuePlaceholder);return jsx(`div`,{"data-testid":`${label}-field`,children:jsx(Field,{name:fieldName,children:({field})=>jsx(Select,{"data-target-id":`Select-${fieldNamePrefix}`,disabled:disableForm,hideLabel:hasAccordion,label,onValueChange:key=>{key===SELECT_EMPTY_VALUE?setFieldValue(fieldName,``):setFieldValue(fieldName,key)},placeholder:defaultMessage,...field,value:field.value===SELECT_EMPTY_VALUE?``:field.value,children:jsxs(Select.Content,{container:portalElement,children:[jsx(Select.Option,{text:defaultMessage,value:SELECT_EMPTY_VALUE,children:jsx(FormattedMessage,{...messages.selectValuePlaceholder})}),options?.map(option=>jsx(Select.Option,{text:option,value:option,children:option},option))]})})})})};export{MetadataEnumField,MetadataEnumField as default};
|
package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/handlers.js
CHANGED
|
@@ -1,13 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { createFieldValue as t } from "./utils.js";
|
|
3
|
-
var n = (e, n, r) => (i, a, o, s) => {
|
|
4
|
-
let c = i;
|
|
5
|
-
r?.(c), n?.(e, c);
|
|
6
|
-
let l = t(i === "isBlank" || i === "isNotBlank" ? "" : a, i === "isBlank" || i === "isNotBlank" ? "" : o, i, !0);
|
|
7
|
-
s.setFieldValue(e, l);
|
|
8
|
-
}, r = (n, r, i, a) => (o, s, c) => {
|
|
9
|
-
i(a);
|
|
10
|
-
let l = t(a === e.FROM ? o : s, a === e.TO ? o : s, r, !0);
|
|
11
|
-
c.setFieldValue(n, l);
|
|
12
|
-
};
|
|
13
|
-
export { n as createAdvancedFilterOptionHandler, r as createInputChangeHandler };
|
|
1
|
+
import{n as RangeLabelType}from"../../../../../../chunks/types.js";import{createFieldValue}from"./utils.js";var createAdvancedFilterOptionHandler=(fieldName,onAdvancedFilterOptionChange,setAdvancedFilterOption)=>(value,currentFromValue,currentToValue,form)=>{let selectedOption=value;setAdvancedFilterOption?.(selectedOption),onAdvancedFilterOptionChange?.(fieldName,selectedOption);let newValue=createFieldValue(value===`isBlank`||value===`isNotBlank`?``:currentFromValue,value===`isBlank`||value===`isNotBlank`?``:currentToValue,value,!0);form.setFieldValue(fieldName,newValue)},createInputChangeHandler=(fieldName,advancedFilterOption,setLastChangedField,fieldType)=>(value,otherValue,form)=>{setLastChangedField(fieldType);let newValue=createFieldValue(fieldType===RangeLabelType.FROM?value:otherValue,fieldType===RangeLabelType.TO?value:otherValue,advancedFilterOption,!0);form.setFieldValue(fieldName,newValue)};export{createAdvancedFilterOptionHandler,createInputChangeHandler};
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
export { e as MetadataFloatFieldAdvanced, e as default };
|
|
1
|
+
import{t as MetadataFloatFieldAdvanced}from"../../../../../../chunks/metadata-float-field-advanced.js";export{MetadataFloatFieldAdvanced,MetadataFloatFieldAdvanced as default};
|
|
@@ -1,67 +1 @@
|
|
|
1
|
-
import { n as
|
|
2
|
-
import t from "../../../../messages.js";
|
|
3
|
-
import { fieldDefaultProps as n } from "../constants.js";
|
|
4
|
-
import { n as r, t as i } from "../../../../../../chunks/metadata-float-field-advanced.js";
|
|
5
|
-
import { n as a, r as o } from "../../../../../../chunks/use-float-validation.js";
|
|
6
|
-
import { Text as s, TextInput as c } from "@box/blueprint-web";
|
|
7
|
-
import { Field as l, getIn as u, useFormikContext as d } from "formik";
|
|
8
|
-
import { useRef as f, useState as p } from "react";
|
|
9
|
-
import { useIntl as m } from "react-intl";
|
|
10
|
-
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
11
|
-
var _ = ({ label: i, fieldNamePrefix: _, disableForm: v, hasAccordion: y }) => {
|
|
12
|
-
let b = m(), [x, S] = p(e.FROM), { values: C, setFieldValue: w, setFieldTouched: T } = d(), E = `${_}.value.range.gt`, D = `${_}.value.range.lt`, O = u(C, E), k = u(C, D), A = f(O), j = f(k), { validateFloats: M, fromErrorType: N, toErrorType: P } = a(), F = (t) => {
|
|
13
|
-
A.current = t, w(E, t), S(e.FROM);
|
|
14
|
-
}, I = (t) => {
|
|
15
|
-
j.current = t, w(D, t), S(e.TO);
|
|
16
|
-
}, L = (e, t) => {
|
|
17
|
-
T(e, !0), S(t);
|
|
18
|
-
}, R = (e, t, n) => !!(e === o.OVERLAPPING && n);
|
|
19
|
-
return /* @__PURE__ */ g("div", {
|
|
20
|
-
className: r.container,
|
|
21
|
-
"data-testid": `${i}-field`,
|
|
22
|
-
children: [!y && /* @__PURE__ */ h(s, {
|
|
23
|
-
as: "span",
|
|
24
|
-
color: "textOnLightSecondary",
|
|
25
|
-
variant: "bodyDefaultBold",
|
|
26
|
-
children: i
|
|
27
|
-
}), /* @__PURE__ */ g("div", {
|
|
28
|
-
className: r.rangeInputsContainer,
|
|
29
|
-
children: [/* @__PURE__ */ h(l, {
|
|
30
|
-
name: `${E}`,
|
|
31
|
-
validate: () => M(A.current, j.current, e.FROM),
|
|
32
|
-
children: ({ field: a, meta: o }) => /* @__PURE__ */ h("div", {
|
|
33
|
-
className: r.inputContainer,
|
|
34
|
-
children: /* @__PURE__ */ h(c, {
|
|
35
|
-
...n,
|
|
36
|
-
...a,
|
|
37
|
-
"data-target-id": `TextInput-${_}_from`,
|
|
38
|
-
disabled: v,
|
|
39
|
-
error: R(N, P, x !== e.FROM) ? void 0 : o.error,
|
|
40
|
-
label: b.formatMessage(t.fieldFromLabel, { label: i }),
|
|
41
|
-
onBlur: () => L(E, e.FROM),
|
|
42
|
-
onChange: (e) => F(e.currentTarget.value),
|
|
43
|
-
placeholder: "0"
|
|
44
|
-
})
|
|
45
|
-
})
|
|
46
|
-
}), /* @__PURE__ */ h(l, {
|
|
47
|
-
name: `${D}`,
|
|
48
|
-
validate: () => M(A.current, j.current, e.TO),
|
|
49
|
-
children: ({ field: a, meta: o }) => /* @__PURE__ */ h("div", {
|
|
50
|
-
className: r.inputContainer,
|
|
51
|
-
children: /* @__PURE__ */ h(c, {
|
|
52
|
-
...n,
|
|
53
|
-
...a,
|
|
54
|
-
"data-target-id": `TextInput-${_}_to`,
|
|
55
|
-
disabled: v,
|
|
56
|
-
error: R(P, N, x !== e.TO) ? void 0 : o.error,
|
|
57
|
-
label: b.formatMessage(t.fieldToLabel, { label: i }),
|
|
58
|
-
onBlur: () => L(D, e.TO),
|
|
59
|
-
onChange: (e) => I(e.currentTarget.value),
|
|
60
|
-
placeholder: "0"
|
|
61
|
-
})
|
|
62
|
-
})
|
|
63
|
-
})]
|
|
64
|
-
})]
|
|
65
|
-
});
|
|
66
|
-
}, v = ({ isAdvancedFilterEnabled: e, ...t }) => h(e ? i : _, { ...t });
|
|
67
|
-
export { v as MetadataFloatField, v as default };
|
|
1
|
+
import{n as RangeLabelType}from"../../../../../../chunks/types.js";import messages from"../../../../messages.js";import{fieldDefaultProps}from"../constants.js";import{n as metadata_float_field_module_default,t as MetadataFloatFieldAdvanced}from"../../../../../../chunks/metadata-float-field-advanced.js";import{n as useFloatValidation,r as ErrorType}from"../../../../../../chunks/use-float-validation.js";import{Text,TextInput}from"@box/blueprint-web";import{Field,getIn,useFormikContext}from"formik";import{useRef,useState}from"react";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";var MetadataFloatFieldBase=({label,fieldNamePrefix,disableForm,hasAccordion})=>{let intl=useIntl(),[lastChangedField,setLastChangedField]=useState(RangeLabelType.FROM),{values,setFieldValue,setFieldTouched}=useFormikContext(),fromFieldName=`${fieldNamePrefix}.value.range.gt`,toFieldName=`${fieldNamePrefix}.value.range.lt`,fromValue=getIn(values,fromFieldName),toValue=getIn(values,toFieldName),fromValidationRef=useRef(fromValue),toValidationRef=useRef(toValue),{validateFloats,fromErrorType,toErrorType}=useFloatValidation(),handleFromOnChange=value=>{fromValidationRef.current=value,setFieldValue(fromFieldName,value),setLastChangedField(RangeLabelType.FROM)},handleToOnChange=value=>{toValidationRef.current=value,setFieldValue(toFieldName,value),setLastChangedField(RangeLabelType.TO)},handleOnBlur=(fieldName,type)=>{setFieldTouched(fieldName,!0),setLastChangedField(type)},shouldHideError=(thisErrorType,otherErrorType,isNotLastChangedField)=>!!(thisErrorType===ErrorType.OVERLAPPING&&isNotLastChangedField);return jsxs(`div`,{className:metadata_float_field_module_default.container,"data-testid":`${label}-field`,children:[!hasAccordion&&jsx(Text,{as:`span`,color:`textOnLightSecondary`,variant:`bodyDefaultBold`,children:label}),jsxs(`div`,{className:metadata_float_field_module_default.rangeInputsContainer,children:[jsx(Field,{name:`${fromFieldName}`,validate:()=>validateFloats(fromValidationRef.current,toValidationRef.current,RangeLabelType.FROM),children:({field,meta})=>jsx(`div`,{className:metadata_float_field_module_default.inputContainer,children:jsx(TextInput,{...fieldDefaultProps,...field,"data-target-id":`TextInput-${fieldNamePrefix}_from`,disabled:disableForm,error:shouldHideError(fromErrorType,toErrorType,lastChangedField!==RangeLabelType.FROM)?void 0:meta.error,label:intl.formatMessage(messages.fieldFromLabel,{label}),onBlur:()=>handleOnBlur(fromFieldName,RangeLabelType.FROM),onChange:e=>handleFromOnChange(e.currentTarget.value),placeholder:`0`})})}),jsx(Field,{name:`${toFieldName}`,validate:()=>validateFloats(fromValidationRef.current,toValidationRef.current,RangeLabelType.TO),children:({field,meta})=>jsx(`div`,{className:metadata_float_field_module_default.inputContainer,children:jsx(TextInput,{...fieldDefaultProps,...field,"data-target-id":`TextInput-${fieldNamePrefix}_to`,disabled:disableForm,error:shouldHideError(toErrorType,fromErrorType,lastChangedField!==RangeLabelType.TO)?void 0:meta.error,label:intl.formatMessage(messages.fieldToLabel,{label}),onBlur:()=>handleOnBlur(toFieldName,RangeLabelType.TO),onChange:e=>handleToOnChange(e.currentTarget.value),placeholder:`0`})})})]})]})},MetadataFloatField=({isAdvancedFilterEnabled,...props})=>jsx(isAdvancedFilterEnabled?MetadataFloatFieldAdvanced:MetadataFloatFieldBase,{...props});export{MetadataFloatField,MetadataFloatField as default};
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
export { t as isFloatOrBlank, e as useFloatValidation };
|
|
1
|
+
import{n as useFloatValidation,t as isFloatOrBlank}from"../../../../../../chunks/use-float-validation.js";export{isFloatOrBlank,useFloatValidation};
|
package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/utils.js
CHANGED
|
@@ -1,47 +1 @@
|
|
|
1
|
-
var
|
|
2
|
-
return e.EQUALS = "equals", e.IS_NOT = "isNot", e.GREATER_THAN = "greaterThanOrEqual", e.LESS_THAN = "lessThanOrEqual", e.BETWEEN = "between", e.IS_BLANK = "isBlank", e.IS_NOT_BLANK = "isNotBlank", e;
|
|
3
|
-
}({}), t = (e, t) => e && t?.some(([t]) => t === e) ? e : "equals", n = /* @__PURE__ */ function(e) {
|
|
4
|
-
return e.BOTH = "both", e.SINGLE = "single", e.NONE = "none", e;
|
|
5
|
-
}({}), r = (e) => e === "isBlank" || e === "isNotBlank" ? "none" : e === "between" ? "both" : [
|
|
6
|
-
"equals",
|
|
7
|
-
"isNot",
|
|
8
|
-
"greaterThanOrEqual",
|
|
9
|
-
"lessThanOrEqual"
|
|
10
|
-
].includes(e) ? "single" : "none", i = (e) => e.lt && !e.gt ? {
|
|
11
|
-
from: e.lt,
|
|
12
|
-
to: ""
|
|
13
|
-
} : {
|
|
14
|
-
from: e.gt || "",
|
|
15
|
-
to: e.lt || ""
|
|
16
|
-
}, a = (e) => e.advancedFilterOption === "lessThanOrEqual" ? {
|
|
17
|
-
from: e.value?.range?.lt || "",
|
|
18
|
-
to: ""
|
|
19
|
-
} : {
|
|
20
|
-
from: e.value?.range?.gt || "",
|
|
21
|
-
to: e.value?.range?.lt || ""
|
|
22
|
-
}, o = (e) => typeof e == "object" && !!e, s = (e) => o(e) && "advancedFilterOption" in e && "value" in e && typeof e.advancedFilterOption == "string", c = (e, t) => {
|
|
23
|
-
if (!o(e)) return {
|
|
24
|
-
from: "",
|
|
25
|
-
to: ""
|
|
26
|
-
};
|
|
27
|
-
let n = e;
|
|
28
|
-
return n.range && !t ? i(n.range) : t && s(e) ? a(e) : n.range ? i(n.range) : {
|
|
29
|
-
from: "",
|
|
30
|
-
to: ""
|
|
31
|
-
};
|
|
32
|
-
}, l = (e, t, n, r) => {
|
|
33
|
-
if (r) {
|
|
34
|
-
if (n === "isBlank" || n === "isNotBlank") return {
|
|
35
|
-
value: { range: {} },
|
|
36
|
-
advancedFilterOption: n
|
|
37
|
-
};
|
|
38
|
-
let r = {};
|
|
39
|
-
return e && (n === "lessThanOrEqual" ? r.lt = e : r.gt = e), t && n === "between" && (r.lt = t), {
|
|
40
|
-
value: { range: r },
|
|
41
|
-
advancedFilterOption: n
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
let i = {};
|
|
45
|
-
return e && (i.gt = e), t && (i.lt = t), { range: i };
|
|
46
|
-
};
|
|
47
|
-
export { e as FloatAdvancedFilterOption, n as FloatInputDisplayState, l as createFieldValue, t as getInitialAdvancedFilterValue, r as getInputDisplayState, c as getInputValues };
|
|
1
|
+
var FloatAdvancedFilterOption=function(FloatAdvancedFilterOption){return FloatAdvancedFilterOption.EQUALS=`equals`,FloatAdvancedFilterOption.IS_NOT=`isNot`,FloatAdvancedFilterOption.GREATER_THAN=`greaterThanOrEqual`,FloatAdvancedFilterOption.LESS_THAN=`lessThanOrEqual`,FloatAdvancedFilterOption.BETWEEN=`between`,FloatAdvancedFilterOption.IS_BLANK=`isBlank`,FloatAdvancedFilterOption.IS_NOT_BLANK=`isNotBlank`,FloatAdvancedFilterOption}({}),getInitialAdvancedFilterValue=(fieldAdvancedFilterOptions,filterOptionsMap)=>fieldAdvancedFilterOptions&&filterOptionsMap?.some(([key])=>key===fieldAdvancedFilterOptions)?fieldAdvancedFilterOptions:`equals`,FloatInputDisplayState=function(FloatInputDisplayState){return FloatInputDisplayState.BOTH=`both`,FloatInputDisplayState.SINGLE=`single`,FloatInputDisplayState.NONE=`none`,FloatInputDisplayState}({}),getInputDisplayState=advancedFilterOption=>advancedFilterOption===`isBlank`||advancedFilterOption===`isNotBlank`?`none`:advancedFilterOption===`between`?`both`:[`equals`,`isNot`,`greaterThanOrEqual`,`lessThanOrEqual`].includes(advancedFilterOption)?`single`:`none`,extractRangeValues=range=>range.lt&&!range.gt?{from:range.lt,to:``}:{from:range.gt||``,to:range.lt||``},extractAdvancedFilterValues=objectValue=>objectValue.advancedFilterOption===`lessThanOrEqual`?{from:objectValue.value?.range?.lt||``,to:``}:{from:objectValue.value?.range?.gt||``,to:objectValue.value?.range?.lt||``},isValidObject=value=>typeof value==`object`&&!!value,isAdvancedFilterObject=value=>isValidObject(value)&&`advancedFilterOption`in value&&`value`in value&&typeof value.advancedFilterOption==`string`,getInputValues=(fieldValue,isAdvancedFilterEnabled)=>{if(!isValidObject(fieldValue))return{from:``,to:``};let rangeValue=fieldValue;return rangeValue.range&&!isAdvancedFilterEnabled?extractRangeValues(rangeValue.range):isAdvancedFilterEnabled&&isAdvancedFilterObject(fieldValue)?extractAdvancedFilterValues(fieldValue):rangeValue.range?extractRangeValues(rangeValue.range):{from:``,to:``}},createFieldValue=(fromValue,toValue,advancedFilterOption,isAdvancedFilterEnabled)=>{if(isAdvancedFilterEnabled){if(advancedFilterOption===`isBlank`||advancedFilterOption===`isNotBlank`)return{value:{range:{}},advancedFilterOption};let range={};return fromValue&&(advancedFilterOption===`lessThanOrEqual`?range.lt=fromValue:range.gt=fromValue),toValue&&advancedFilterOption===`between`&&(range.lt=toValue),{value:{range},advancedFilterOption}}let range={};return fromValue&&(range.gt=fromValue),toValue&&(range.lt=toValue),{range}};export{FloatAdvancedFilterOption,FloatInputDisplayState,createFieldValue,getInitialAdvancedFilterValue,getInputDisplayState,getInputValues};
|