@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.
Files changed (52) hide show
  1. package/dist/chunks/advanced-filter-select.js +1 -59
  2. package/dist/chunks/metadata-date-field.module.js +1 -11
  3. package/dist/chunks/metadata-filter.js +1 -49
  4. package/dist/chunks/metadata-float-field-advanced.js +1 -78
  5. package/dist/chunks/metadata-taxonomy-field-advanced.module.js +1 -6
  6. package/dist/chunks/types.js +1 -6
  7. package/dist/chunks/types2.js +1 -4
  8. package/dist/chunks/use-float-validation.js +1 -22
  9. package/dist/esm/index.js +1 -14
  10. package/dist/esm/lib/components/metadata-filter-fields/components/constants.js +1 -2
  11. package/dist/esm/lib/components/metadata-filter-fields/components/index.js +1 -8
  12. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/constants.js +1 -3
  13. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/date-conversion-utils.js +1 -49
  14. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/metadata-date-field-advanced.js +1 -167
  15. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/metadata-date-field-relative.js +1 -238
  16. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/metadata-date-field.js +1 -90
  17. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/use-date-internationalization.js +1 -11
  18. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/use-date-validation.js +1 -25
  19. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/use-integer-validation.js +1 -16
  20. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-date-field/utils.js +1 -9
  21. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-enum-field/metadata-enum-field.js +1 -39
  22. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/handlers.js +1 -13
  23. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/metadata-float-field-advanced.js +1 -2
  24. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/metadata-float-field.js +1 -67
  25. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/use-float-validation.js +1 -2
  26. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-float-field/utils.js +1 -47
  27. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-multi-select-field/metadata-multi-select-field-advanced.js +1 -72
  28. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-multi-select-field/metadata-multi-select-field.js +1 -35
  29. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-multi-select-field/utils.js +1 -12
  30. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-string-field/metadata-string-field.js +1 -64
  31. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-string-field/utils.js +1 -7
  32. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/legacy-metadata-taxonomy-field-advanced.js +1 -89
  33. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/legacy-metadata-taxonomy-field.js +1 -46
  34. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/metadata-taxonomy-field-advanced.js +1 -11
  35. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/metadata-taxonomy-field.js +1 -11
  36. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/picker/metadata-taxonomy-picker-field-advanced.js +1 -84
  37. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/picker/metadata-taxonomy-picker-field.js +1 -46
  38. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/picker/value-mapping.js +1 -32
  39. package/dist/esm/lib/components/metadata-filter-fields/components/metadata-taxonomy-field/utils.js +1 -8
  40. package/dist/esm/lib/components/metadata-filter-fields/components/shared/advanced-filter-select.js +1 -2
  41. package/dist/esm/lib/components/metadata-filter-fields/components/shared/index.js +1 -2
  42. package/dist/esm/lib/components/metadata-filter-fields/field-processing-utils.js +1 -27
  43. package/dist/esm/lib/components/metadata-filter-fields/filter-field-types.js +1 -27
  44. package/dist/esm/lib/components/metadata-filter-fields/is-modified-utils.js +1 -85
  45. package/dist/esm/lib/components/metadata-filter-fields/metadata-filter-fields-accordion.js +1 -63
  46. package/dist/esm/lib/components/metadata-filter-fields/metadata-filter-fields.js +1 -61
  47. package/dist/esm/lib/components/metadata-template-selector/metadata-template-selector.js +1 -33
  48. package/dist/esm/lib/defaults.js +1 -32
  49. package/dist/esm/lib/mappers.js +1 -18
  50. package/dist/esm/lib/messages.js +1 -220
  51. package/dist/esm/lib/metadata-filter.js +1 -3
  52. 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 { n as e } from "../../../../../../chunks/types.js";
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 { DateFormatter as e, getLocalTimeZone as t } from "@box/blueprint-web";
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 { n as e } from "../../../../../../chunks/types.js";
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 e from "../../../../messages.js";
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};
@@ -1,9 +1 @@
1
- import { DEFAULT_MAX_DATE as e } from "./constants.js";
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 e from "../../../../messages.js";
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};
@@ -1,13 +1 @@
1
- import { n as e } from "../../../../../../chunks/types.js";
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 { t as e } from "../../../../../../chunks/metadata-float-field-advanced.js";
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 e } from "../../../../../../chunks/types.js";
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 { n as e, t } from "../../../../../../chunks/use-float-validation.js";
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};
@@ -1,47 +1 @@
1
- var e = /* @__PURE__ */ function(e) {
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};