@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,59 +1 @@
1
- import e from "../esm/lib/messages.js";
2
- import { Select as t, Text as n } from "@box/blueprint-web";
3
- import { Field as r } from "formik";
4
- import { useCallback as i, useState as a } from "react";
5
- import { useIntl as o } from "react-intl";
6
- import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
7
- import '../styles/advanced-filter-select.css';var u = {
8
- noAttributesText: "_noAttributesText_19mt4_1",
9
- fieldLabel: "_fieldLabel_19mt4_5",
10
- selectContainer: "_selectContainer_19mt4_10",
11
- modifiedIcon: "_modifiedIcon_19mt4_15"
12
- }, d = ({ label: d, fieldNamePrefix: f, fieldAdvancedFilterOptions: p, filterOptionsMap: m, disableForm: h, portalElement: g, onAdvancedFilterOptionChange: _, onValueChange: v, defaultValue: y = "", showLabel: b = !0, advancedFilterFieldName: x = `${f}.value.advancedFilterOption`, value: S, labelClassName: C = u.fieldLabel, labelAs: w = "div", open: T, onOpenChange: E, isModified: D }) => {
13
- let O = o(), [k, A] = a(p || y), j = S === void 0 ? k : S, M = i((e, ...t) => {
14
- S === void 0 && A(e), _ && _(f, e), v(e, ...t);
15
- }, [
16
- f,
17
- _,
18
- v,
19
- S
20
- ]);
21
- return /* @__PURE__ */ l(s, { children: [b && /* @__PURE__ */ l(n, {
22
- as: w,
23
- className: C,
24
- color: "textOnLightDefault",
25
- variant: "bodyDefaultBold",
26
- children: [d, D && /* @__PURE__ */ c("div", {
27
- "aria-label": O.formatMessage(e.filterModifiedAriaLabel),
28
- className: u.modifiedIcon,
29
- role: "img"
30
- })]
31
- }), /* @__PURE__ */ c(r, {
32
- name: x,
33
- children: ({ field: n, meta: r }) => /* @__PURE__ */ c("div", {
34
- className: u.selectContainer,
35
- children: /* @__PURE__ */ c(t, {
36
- ...n,
37
- "aria-disabled": h,
38
- "aria-label": O.formatMessage(e.advancedFilterOptionAriaLabel, { label: d }),
39
- disabled: h,
40
- error: r.touched && r.error ? r.error : void 0,
41
- hideLabel: !0,
42
- label: O.formatMessage(e.selectFilterType),
43
- onOpenChange: E,
44
- onValueChange: M,
45
- open: T,
46
- placeholder: O.formatMessage(e.selectOptionPlaceholder),
47
- value: j,
48
- children: /* @__PURE__ */ c(t.Content, {
49
- container: g,
50
- children: m?.map(([e, n]) => /* @__PURE__ */ c(t.Option, {
51
- text: n,
52
- value: e
53
- }, e))
54
- })
55
- })
56
- })
57
- })] });
58
- };
59
- export { u as n, d as t };
1
+ import messages from"../esm/lib/messages.js";import{Select,Text}from"@box/blueprint-web";import{Field}from"formik";import{useCallback,useState}from"react";import{useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import '../styles/advanced-filter-select.css';var metadata_filter_fields_module_default={noAttributesText:`_noAttributesText_19mt4_1`,fieldLabel:`_fieldLabel_19mt4_5`,selectContainer:`_selectContainer_19mt4_10`,modifiedIcon:`_modifiedIcon_19mt4_15`},AdvancedFilterSelect=({label,fieldNamePrefix,fieldAdvancedFilterOptions,filterOptionsMap,disableForm,portalElement,onAdvancedFilterOptionChange,onValueChange,defaultValue=``,showLabel=!0,advancedFilterFieldName=`${fieldNamePrefix}.value.advancedFilterOption`,value,labelClassName=metadata_filter_fields_module_default.fieldLabel,labelAs=`div`,open,onOpenChange,isModified})=>{let intl=useIntl(),[internalValue,setInternalValue]=useState(fieldAdvancedFilterOptions||defaultValue),currentValue=value===void 0?internalValue:value,handleAdvancedFilterChange=useCallback((selectedValue,...additionalArgs)=>{value===void 0&&setInternalValue(selectedValue),onAdvancedFilterOptionChange&&onAdvancedFilterOptionChange(fieldNamePrefix,selectedValue),onValueChange(selectedValue,...additionalArgs)},[fieldNamePrefix,onAdvancedFilterOptionChange,onValueChange,value]);return jsxs(Fragment,{children:[showLabel&&jsxs(Text,{as:labelAs,className:labelClassName,color:`textOnLightDefault`,variant:`bodyDefaultBold`,children:[label,isModified&&jsx(`div`,{"aria-label":intl.formatMessage(messages.filterModifiedAriaLabel),className:metadata_filter_fields_module_default.modifiedIcon,role:`img`})]}),jsx(Field,{name:advancedFilterFieldName,children:({field,meta})=>jsx(`div`,{className:metadata_filter_fields_module_default.selectContainer,children:jsx(Select,{...field,"aria-disabled":disableForm,"aria-label":intl.formatMessage(messages.advancedFilterOptionAriaLabel,{label}),disabled:disableForm,error:meta.touched&&meta.error?meta.error:void 0,hideLabel:!0,label:intl.formatMessage(messages.selectFilterType),onOpenChange,onValueChange:handleAdvancedFilterChange,open,placeholder:intl.formatMessage(messages.selectOptionPlaceholder),value:currentValue,children:jsx(Select.Content,{container:portalElement,children:filterOptionsMap?.map(([optionValue,optionLabel])=>jsx(Select.Option,{text:optionLabel,value:optionValue},optionValue))})})})})]})};export{metadata_filter_fields_module_default as n,AdvancedFilterSelect as t};
@@ -1,11 +1 @@
1
- import '../styles/metadata-date-field.css';var e = {
2
- container: "_container_10ye0_1",
3
- dateSelect: "_dateSelect_10ye0_6",
4
- rangeInputsContainer: "_rangeInputsContainer_10ye0_9",
5
- verticalLayout: "_verticalLayout_10ye0_13",
6
- inputContainer: "_inputContainer_10ye0_23",
7
- advancedDateContainer: "_advancedDateContainer_10ye0_31",
8
- datePicker: "_datePicker_10ye0_40",
9
- daysInputContainer: "_daysInputContainer_10ye0_44"
10
- };
11
- export { e as t };
1
+ import '../styles/metadata-date-field.css';var metadata_date_field_module_default={container:`_container_10ye0_1`,dateSelect:`_dateSelect_10ye0_6`,rangeInputsContainer:`_rangeInputsContainer_10ye0_9`,verticalLayout:`_verticalLayout_10ye0_13`,inputContainer:`_inputContainer_10ye0_23`,advancedDateContainer:`_advancedDateContainer_10ye0_31`,datePicker:`_datePicker_10ye0_40`,daysInputContainer:`_daysInputContainer_10ye0_44`};export{metadata_date_field_module_default as t};
@@ -1,49 +1 @@
1
- import { defaultInitialValues as e } from "../esm/lib/defaults.js";
2
- import t from "../esm/lib/messages.js";
3
- import { MetadataFilterFields as n } from "../esm/lib/components/metadata-filter-fields/metadata-filter-fields.js";
4
- import { MetadataFilterFieldsAccordion as r } from "../esm/lib/components/metadata-filter-fields/metadata-filter-fields-accordion.js";
5
- import { MetadataTemplateSelector as i } from "../esm/lib/components/metadata-template-selector/metadata-template-selector.js";
6
- import { mapDataFromTemplate as a } from "../esm/lib/mappers.js";
7
- import { LoadingIndicator as o } from "@box/blueprint-web";
8
- import { useFormikContext as s } from "formik";
9
- import { useEffect as c } from "react";
10
- import { useIntl as l } from "react-intl";
11
- import { jsx as u, jsxs as d } from "react/jsx-runtime";
12
- import '../styles/metadata-filter.css';var f = {
13
- container: "_container_p63iy_1",
14
- loadingIndicator: "_loadingIndicator_p63iy_7"
15
- }, p = ({ isAdvancedFilterEnabled: p, isModifiedMarkerEnabled: m, metadataTemplateOptions: h, portalElement: g, selectedMetadataTemplate: _, taxonomyOptionsFetcher: v, showMetadataSelector: y = !0, disableForm: b = !1, isLoading: x = !1, hasError: S = !1, locale: C = navigator.language, canUseRelativeDates: w, isMultilevelTaxonomyFieldEnabled: T = !1, isTaxonomyPickerEnabled: E = !1, createTaxonomyItemsService: D, filterOptionsMap: O, onAdvancedFilterOptionChange: k, fieldAdvancedFilterOptions: A, hasAccordion: j = !1, onDirtyChange: M, isAdvancedTaxonomy: N = !1, hasExperimentalVirtualization: P = !1 }) => {
16
- let { setFieldValue: F } = s(), I = l();
17
- return c(() => {
18
- _ ? F("metadata", a(_)) : F("metadata", e);
19
- }, [_, F]), /* @__PURE__ */ d("div", {
20
- className: f.container,
21
- children: [y && /* @__PURE__ */ u(i, {
22
- hasError: S,
23
- metadataTemplateOptions: h,
24
- portalElement: g
25
- }), !S && (x ? /* @__PURE__ */ u(o, {
26
- "aria-label": I.formatMessage(t.loading),
27
- className: f.loadingIndicator
28
- }) : _ ? /* @__PURE__ */ u(j ? r : n, {
29
- canUseRelativeDates: w,
30
- disableForm: b,
31
- fieldAdvancedFilterOptions: A,
32
- filterOptionsMap: O,
33
- hasAccordion: j,
34
- isAdvancedFilterEnabled: p,
35
- isAdvancedTaxonomy: N,
36
- isModifiedMarkerEnabled: m,
37
- isMultilevelTaxonomyFieldEnabled: T,
38
- isTaxonomyPickerEnabled: E,
39
- createTaxonomyItemsService: D,
40
- locale: C,
41
- onAdvancedFilterOptionChange: k,
42
- onDirtyChange: M,
43
- portalElement: g,
44
- taxonomyOptionsFetcher: v,
45
- hasExperimentalVirtualization: P
46
- }) : null)]
47
- });
48
- };
49
- export { p as t };
1
+ import{defaultInitialValues}from"../esm/lib/defaults.js";import messages from"../esm/lib/messages.js";import{MetadataFilterFields}from"../esm/lib/components/metadata-filter-fields/metadata-filter-fields.js";import{MetadataFilterFieldsAccordion}from"../esm/lib/components/metadata-filter-fields/metadata-filter-fields-accordion.js";import{MetadataTemplateSelector}from"../esm/lib/components/metadata-template-selector/metadata-template-selector.js";import{mapDataFromTemplate}from"../esm/lib/mappers.js";import{LoadingIndicator}from"@box/blueprint-web";import{useFormikContext}from"formik";import{useEffect}from"react";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import '../styles/metadata-filter.css';var metadata_filter_module_default={container:`_container_p63iy_1`,loadingIndicator:`_loadingIndicator_p63iy_7`},MetadataFilter=({isAdvancedFilterEnabled,isModifiedMarkerEnabled,metadataTemplateOptions,portalElement,selectedMetadataTemplate,taxonomyOptionsFetcher,showMetadataSelector=!0,disableForm=!1,isLoading=!1,hasError=!1,locale=navigator.language,canUseRelativeDates,isMultilevelTaxonomyFieldEnabled=!1,isTaxonomyPickerEnabled=!1,createTaxonomyItemsService,filterOptionsMap,onAdvancedFilterOptionChange,fieldAdvancedFilterOptions,hasAccordion=!1,onDirtyChange,isAdvancedTaxonomy=!1,hasExperimentalVirtualization=!1})=>{let{setFieldValue}=useFormikContext(),intl=useIntl();return useEffect(()=>{selectedMetadataTemplate?setFieldValue(`metadata`,mapDataFromTemplate(selectedMetadataTemplate)):setFieldValue(`metadata`,defaultInitialValues)},[selectedMetadataTemplate,setFieldValue]),jsxs(`div`,{className:metadata_filter_module_default.container,children:[showMetadataSelector&&jsx(MetadataTemplateSelector,{hasError,metadataTemplateOptions,portalElement}),!hasError&&(isLoading?jsx(LoadingIndicator,{"aria-label":intl.formatMessage(messages.loading),className:metadata_filter_module_default.loadingIndicator}):selectedMetadataTemplate?jsx(hasAccordion?MetadataFilterFieldsAccordion:MetadataFilterFields,{canUseRelativeDates,disableForm,fieldAdvancedFilterOptions,filterOptionsMap,hasAccordion,isAdvancedFilterEnabled,isAdvancedTaxonomy,isModifiedMarkerEnabled,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,locale,onAdvancedFilterOptionChange,onDirtyChange,portalElement,taxonomyOptionsFetcher,hasExperimentalVirtualization}):null)]})};export{MetadataFilter as t};
@@ -1,78 +1 @@
1
- import { n as e, t } from "./types.js";
2
- import n from "../esm/lib/messages.js";
3
- import { t as r } from "./advanced-filter-select.js";
4
- import { fieldDefaultProps as i } from "../esm/lib/components/metadata-filter-fields/components/constants.js";
5
- import { FloatInputDisplayState as a, getInputDisplayState as o, getInputValues as s } from "../esm/lib/components/metadata-filter-fields/components/metadata-float-field/utils.js";
6
- import { createAdvancedFilterOptionHandler as c, createInputChangeHandler as l } from "../esm/lib/components/metadata-filter-fields/components/metadata-float-field/handlers.js";
7
- import { n as u } from "./use-float-validation.js";
8
- import { TextInput as d } from "@box/blueprint-web";
9
- import { Field as f } from "formik";
10
- import { useCallback as p, useState as m } from "react";
11
- import { useIntl as h } from "react-intl";
12
- import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
13
- import '../styles/metadata-float-field-advanced.css';var y = {
14
- container: "_container_jjzra_1",
15
- rangeInputsContainer: "_rangeInputsContainer_jjzra_6",
16
- inputContainer: "_inputContainer_jjzra_16",
17
- advancedFilterContainer: "_advancedFilterContainer_jjzra_23"
18
- }, b = ({ label: b, fieldNamePrefix: x, disableForm: S, onAdvancedFilterOptionChange: C, fieldAdvancedFilterOptions: w, filterOptionsMap: T, hasAccordion: E, isModified: D }) => {
19
- let O = h(), k = `${x}.value.enum[0]`, [A, j] = m(e.FROM), [M, N] = m(w || t.EQUALS), { validateFloats: P } = u(), F = p((e, t, n, r) => c(k, C, N)(e, t, n, r), [
20
- k,
21
- C,
22
- N
23
- ]), I = p((t, n, r) => l(k, M, j, e.FROM)(t, n, r), [k, M]), L = p((t, n, r) => l(k, M, j, e.TO)(t, n, r), [k, M]);
24
- return /* @__PURE__ */ _("div", {
25
- className: y.advancedFilterContainer,
26
- "data-testid": `${b}-field`,
27
- children: /* @__PURE__ */ _(f, {
28
- name: k,
29
- validate: (e) => {
30
- let t = s(e, !0);
31
- return P(t.from, t.to, A, !0);
32
- },
33
- children: ({ field: t, meta: c, form: l }) => {
34
- let u = s(t.value, !0), f = o(M), p = f !== a.NONE, m = f === a.SINGLE, h = f === a.BOTH, k = P(u.from, u.to, e.FROM, !0), A = P(u.from, u.to, e.TO, !0);
35
- return /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(r, {
36
- disableForm: S,
37
- fieldAdvancedFilterOptions: w,
38
- fieldNamePrefix: x,
39
- filterOptionsMap: T,
40
- isModified: D,
41
- label: b,
42
- onAdvancedFilterOptionChange: C,
43
- onValueChange: (e) => F(e, u.from, u.to, l),
44
- showLabel: !E,
45
- value: M
46
- }), p && /* @__PURE__ */ v("div", {
47
- className: y.rangeInputsContainer,
48
- children: [(m || h) && /* @__PURE__ */ _("div", {
49
- className: y.inputContainer,
50
- children: /* @__PURE__ */ _(d, {
51
- ...i,
52
- disabled: S,
53
- error: m ? c.error : k,
54
- hideLabel: !0,
55
- label: O.formatMessage(n.fieldFromLabel, { label: b }),
56
- onChange: (e) => I(e.currentTarget.value, u.to, l),
57
- placeholder: h ? O.formatMessage(n.minValuePlaceholder) : O.formatMessage(n.enterNumberPlaceholder),
58
- value: u.from
59
- })
60
- }), h && /* @__PURE__ */ _("div", {
61
- className: y.inputContainer,
62
- children: /* @__PURE__ */ _(d, {
63
- ...i,
64
- disabled: S,
65
- error: A,
66
- hideLabel: !0,
67
- label: O.formatMessage(n.fieldToLabel, { label: b }),
68
- onChange: (e) => L(e.currentTarget.value, u.from, l),
69
- placeholder: O.formatMessage(n.maxValuePlaceholder),
70
- value: u.to
71
- })
72
- })]
73
- })] });
74
- }
75
- })
76
- });
77
- };
78
- export { y as n, b as t };
1
+ import{n as RangeLabelType,t as FilterKeyTypes}from"./types.js";import messages from"../esm/lib/messages.js";import{t as AdvancedFilterSelect}from"./advanced-filter-select.js";import{fieldDefaultProps}from"../esm/lib/components/metadata-filter-fields/components/constants.js";import{FloatInputDisplayState,getInputDisplayState,getInputValues}from"../esm/lib/components/metadata-filter-fields/components/metadata-float-field/utils.js";import{createAdvancedFilterOptionHandler,createInputChangeHandler}from"../esm/lib/components/metadata-filter-fields/components/metadata-float-field/handlers.js";import{n as useFloatValidation}from"./use-float-validation.js";import{TextInput}from"@box/blueprint-web";import{Field}from"formik";import{useCallback,useState}from"react";import{useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import '../styles/metadata-float-field-advanced.css';var metadata_float_field_module_default={container:`_container_jjzra_1`,rangeInputsContainer:`_rangeInputsContainer_jjzra_6`,inputContainer:`_inputContainer_jjzra_16`,advancedFilterContainer:`_advancedFilterContainer_jjzra_23`},MetadataFloatFieldAdvanced=({label,fieldNamePrefix,disableForm,onAdvancedFilterOptionChange,fieldAdvancedFilterOptions,filterOptionsMap,hasAccordion,isModified})=>{let intl=useIntl(),fieldName=`${fieldNamePrefix}.value.enum[0]`,[lastChangedField,setLastChangedField]=useState(RangeLabelType.FROM),[advancedFilterOption,setAdvancedFilterOption]=useState(fieldAdvancedFilterOptions||FilterKeyTypes.EQUALS),{validateFloats}=useFloatValidation(),handleAdvancedFilterOptionChange=useCallback((value,fromValue,toValue,form)=>createAdvancedFilterOptionHandler(fieldName,onAdvancedFilterOptionChange,setAdvancedFilterOption)(value,fromValue,toValue,form),[fieldName,onAdvancedFilterOptionChange,setAdvancedFilterOption]),handleFromOnChange=useCallback((value,otherValue,form)=>createInputChangeHandler(fieldName,advancedFilterOption,setLastChangedField,RangeLabelType.FROM)(value,otherValue,form),[fieldName,advancedFilterOption]),handleToOnChange=useCallback((value,otherValue,form)=>createInputChangeHandler(fieldName,advancedFilterOption,setLastChangedField,RangeLabelType.TO)(value,otherValue,form),[fieldName,advancedFilterOption]);return jsx(`div`,{className:metadata_float_field_module_default.advancedFilterContainer,"data-testid":`${label}-field`,children:jsx(Field,{name:fieldName,validate:value=>{let currentInputValues=getInputValues(value,!0);return validateFloats(currentInputValues.from,currentInputValues.to,lastChangedField,!0)},children:({field,meta,form})=>{let currentInputValues=getInputValues(field.value,!0),displayState=getInputDisplayState(advancedFilterOption),showInputs=displayState!==FloatInputDisplayState.NONE,showSingleInput=displayState===FloatInputDisplayState.SINGLE,showBothInputs=displayState===FloatInputDisplayState.BOTH,fromError=validateFloats(currentInputValues.from,currentInputValues.to,RangeLabelType.FROM,!0),toError=validateFloats(currentInputValues.from,currentInputValues.to,RangeLabelType.TO,!0);return jsxs(Fragment,{children:[jsx(AdvancedFilterSelect,{disableForm,fieldAdvancedFilterOptions,fieldNamePrefix,filterOptionsMap,isModified,label,onAdvancedFilterOptionChange,onValueChange:value=>handleAdvancedFilterOptionChange(value,currentInputValues.from,currentInputValues.to,form),showLabel:!hasAccordion,value:advancedFilterOption}),showInputs&&jsxs(`div`,{className:metadata_float_field_module_default.rangeInputsContainer,children:[(showSingleInput||showBothInputs)&&jsx(`div`,{className:metadata_float_field_module_default.inputContainer,children:jsx(TextInput,{...fieldDefaultProps,disabled:disableForm,error:showSingleInput?meta.error:fromError,hideLabel:!0,label:intl.formatMessage(messages.fieldFromLabel,{label}),onChange:e=>handleFromOnChange(e.currentTarget.value,currentInputValues.to,form),placeholder:showBothInputs?intl.formatMessage(messages.minValuePlaceholder):intl.formatMessage(messages.enterNumberPlaceholder),value:currentInputValues.from})}),showBothInputs&&jsx(`div`,{className:metadata_float_field_module_default.inputContainer,children:jsx(TextInput,{...fieldDefaultProps,disabled:disableForm,error:toError,hideLabel:!0,label:intl.formatMessage(messages.fieldToLabel,{label}),onChange:e=>handleToOnChange(e.currentTarget.value,currentInputValues.from,form),placeholder:intl.formatMessage(messages.maxValuePlaceholder),value:currentInputValues.to})})]})]})}})})};export{metadata_float_field_module_default as n,MetadataFloatFieldAdvanced as t};
@@ -1,6 +1 @@
1
- import '../styles/metadata-taxonomy-field-advanced.css';var e = {
2
- comboboxWrapper: "_comboboxWrapper_1e1d8_1",
3
- disabled: "_disabled_1e1d8_1",
4
- disabledTreeView: "_disabledTreeView_1e1d8_5"
5
- };
6
- export { e as t };
1
+ import '../styles/metadata-taxonomy-field-advanced.css';var metadata_taxonomy_field_advanced_module_default={comboboxWrapper:`_comboboxWrapper_1e1d8_1`,disabled:`_disabled_1e1d8_1`,disabledTreeView:`_disabledTreeView_1e1d8_5`};export{metadata_taxonomy_field_advanced_module_default as t};
@@ -1,6 +1 @@
1
- var e = /* @__PURE__ */ function(e) {
2
- return e[e.TO = 0] = "TO", e[e.FROM = 1] = "FROM", e;
3
- }({}), t = /* @__PURE__ */ function(e) {
4
- return e.MATCH_EXACTLY = "matchExactly", e.STARTS_WITH = "startsWith", e.CONTAINS = "contains", e.DOES_NOT_CONTAIN = "doesNotContain", e.IS_NOT = "isNot", e.IS_BLANK = "isBlank", e.IS_NOT_BLANK = "isNotBlank", e.SELECT_FILTER_TYPE = "selectFilterType", e.TODAY = "today", e.NEXT = "next", e.PAST = "past", e.OLDER_THAN = "olderThan", e.CUSTOM_RANGE = "customRange", e.EQUALS = "equals", e.GREATER_THAN_OR_EQUAL = "greaterThanOrEqual", e.LESS_THAN_OR_EQUAL = "lessThanOrEqual", e.BETWEEN = "between", e.MATCH_ANY = "matchAny", e.MATCH_ALL = "matchAll", e.IS_NOT_ANY = "isNotAny", e.MATCH_AT_OR_WITHIN = "matchAtOrWithin", e.IS_NOT_AT_OR_WITHIN = "isNotAtOrWithin", e;
5
- }({});
6
- export { e as n, t };
1
+ var RangeLabelType=function(RangeLabelType){return RangeLabelType[RangeLabelType.TO=0]=`TO`,RangeLabelType[RangeLabelType.FROM=1]=`FROM`,RangeLabelType}({}),FilterKeyTypes=function(FilterKeyTypes){return FilterKeyTypes.MATCH_EXACTLY=`matchExactly`,FilterKeyTypes.STARTS_WITH=`startsWith`,FilterKeyTypes.CONTAINS=`contains`,FilterKeyTypes.DOES_NOT_CONTAIN=`doesNotContain`,FilterKeyTypes.IS_NOT=`isNot`,FilterKeyTypes.IS_BLANK=`isBlank`,FilterKeyTypes.IS_NOT_BLANK=`isNotBlank`,FilterKeyTypes.SELECT_FILTER_TYPE=`selectFilterType`,FilterKeyTypes.TODAY=`today`,FilterKeyTypes.NEXT=`next`,FilterKeyTypes.PAST=`past`,FilterKeyTypes.OLDER_THAN=`olderThan`,FilterKeyTypes.CUSTOM_RANGE=`customRange`,FilterKeyTypes.EQUALS=`equals`,FilterKeyTypes.GREATER_THAN_OR_EQUAL=`greaterThanOrEqual`,FilterKeyTypes.LESS_THAN_OR_EQUAL=`lessThanOrEqual`,FilterKeyTypes.BETWEEN=`between`,FilterKeyTypes.MATCH_ANY=`matchAny`,FilterKeyTypes.MATCH_ALL=`matchAll`,FilterKeyTypes.IS_NOT_ANY=`isNotAny`,FilterKeyTypes.MATCH_AT_OR_WITHIN=`matchAtOrWithin`,FilterKeyTypes.IS_NOT_AT_OR_WITHIN=`isNotAtOrWithin`,FilterKeyTypes}({});export{RangeLabelType as n,FilterKeyTypes as t};
@@ -1,4 +1 @@
1
- var e = /* @__PURE__ */ function(e) {
2
- return e[e.MAX = 0] = "MAX", e[e.OVERLAPPING = 1] = "OVERLAPPING", e[e.INVALID = 2] = "INVALID", e;
3
- }({});
4
- export { e as t };
1
+ var ErrorType=function(ErrorType){return ErrorType[ErrorType.MAX=0]=`MAX`,ErrorType[ErrorType.OVERLAPPING=1]=`OVERLAPPING`,ErrorType[ErrorType.INVALID=2]=`INVALID`,ErrorType}({});export{ErrorType as t};
@@ -1,22 +1 @@
1
- import { n as e } from "./types.js";
2
- import t from "../esm/lib/messages.js";
3
- import { useState as n } from "react";
4
- import { useIntl as r } from "react-intl";
5
- var i = /* @__PURE__ */ function(e) {
6
- return e[e.INVALID = 0] = "INVALID", e[e.OVERLAPPING = 1] = "OVERLAPPING", e;
7
- }({}), a = (e, t = !1) => e?.length ? t ? /^[-+]?(\d+(\.\d*)?|\.\d+)$/.test(e) : /^[-+]?\d+(\.\d+)?$/.test(e) : !0, o = (e, t, n) => {
8
- let r = parseFloat(e), i = parseFloat(t);
9
- return n ? i <= r : i < r;
10
- }, s = (e, n, r) => n ? e ? r.formatMessage(t.floatFieldInvalidMinValueRange) : r.formatMessage(t.floatFieldInvalidMaxValueRange) : e ? r.formatMessage(t.floatFieldInvalidFromValueRange) : r.formatMessage(t.floatFieldInvalidToValueRange), c = (e, n, r) => n ? r.formatMessage(t.mustBeANumber) : e ? r.formatMessage(t.floatFieldInvalidFromValue) : r.formatMessage(t.floatFieldInvalidToValue), l = () => {
11
- let t = r(), [l, u] = n(null), [d, f] = n(null), p = (t, n) => t === e.FROM ? u(n) : f(n);
12
- return {
13
- validateFloats: (n, r, l, u = !1) => {
14
- let d = l === e.FROM, f = a(n, u), m = a(r, u);
15
- if (!(d ? f : m)) return p(l, i.INVALID), c(d, u, t);
16
- if (f && m && o(n, r, u)) return p(l, i.OVERLAPPING), s(d, u, t);
17
- },
18
- fromErrorType: l,
19
- toErrorType: d
20
- };
21
- };
22
- export { l as n, i as r, a as t };
1
+ import{n as RangeLabelType}from"./types.js";import messages from"../esm/lib/messages.js";import{useState}from"react";import{useIntl}from"react-intl";var ErrorType=function(ErrorType){return ErrorType[ErrorType.INVALID=0]=`INVALID`,ErrorType[ErrorType.OVERLAPPING=1]=`OVERLAPPING`,ErrorType}({}),isFloatOrBlank=(value,isAdvancedMode=!1)=>value?.length?isAdvancedMode?/^[-+]?(\d+(\.\d*)?|\.\d+)$/.test(value):/^[-+]?\d+(\.\d+)?$/.test(value):!0,isRangeOverlapping=(fromValue,toValue,isAdvancedMode)=>{let fromFloat=parseFloat(fromValue),toFloat=parseFloat(toValue);return isAdvancedMode?toFloat<=fromFloat:toFloat<fromFloat},getOverlappingErrorMessage=(isFromField,isAdvancedMode,intl)=>isAdvancedMode?isFromField?intl.formatMessage(messages.floatFieldInvalidMinValueRange):intl.formatMessage(messages.floatFieldInvalidMaxValueRange):isFromField?intl.formatMessage(messages.floatFieldInvalidFromValueRange):intl.formatMessage(messages.floatFieldInvalidToValueRange),getInvalidInputErrorMessage=(isFromField,isAdvancedMode,intl)=>isAdvancedMode?intl.formatMessage(messages.mustBeANumber):isFromField?intl.formatMessage(messages.floatFieldInvalidFromValue):intl.formatMessage(messages.floatFieldInvalidToValue),useFloatValidation=()=>{let intl=useIntl(),[fromErrorType,setFromErrorType]=useState(null),[toErrorType,setToErrorType]=useState(null),setErrorType=(rangeLabelType,errorType)=>rangeLabelType===RangeLabelType.FROM?setFromErrorType(errorType):setToErrorType(errorType);return{validateFloats:(fromValue,toValue,type,isAdvancedMode=!1)=>{let isFromField=type===RangeLabelType.FROM,isFromValid=isFloatOrBlank(fromValue,isAdvancedMode),isToValid=isFloatOrBlank(toValue,isAdvancedMode);if(!(isFromField?isFromValid:isToValid))return setErrorType(type,ErrorType.INVALID),getInvalidInputErrorMessage(isFromField,isAdvancedMode,intl);if(isFromValid&&isToValid&&isRangeOverlapping(fromValue,toValue,isAdvancedMode))return setErrorType(type,ErrorType.OVERLAPPING),getOverlappingErrorMessage(isFromField,isAdvancedMode,intl)},fromErrorType,toErrorType}};export{useFloatValidation as n,ErrorType as r,isFloatOrBlank as t};
package/dist/esm/index.js CHANGED
@@ -1,14 +1 @@
1
- import { n as e, t } from "../chunks/types.js";
2
- import { getRelativeFromToValues as n } from "./lib/components/metadata-filter-fields/components/metadata-date-field/date-conversion-utils.js";
3
- import { defaultInitialValues as r, defaultMetadataValueMap as i } from "./lib/defaults.js";
4
- import { MetadataDateField as a, MetadataDateFieldNonRelative as o } from "./lib/components/metadata-filter-fields/components/metadata-date-field/metadata-date-field.js";
5
- import { MetadataEnumField as s } from "./lib/components/metadata-filter-fields/components/metadata-enum-field/metadata-enum-field.js";
6
- import { MetadataFloatField as c } from "./lib/components/metadata-filter-fields/components/metadata-float-field/metadata-float-field.js";
7
- import { MetadataMultiSelectField as l } from "./lib/components/metadata-filter-fields/components/metadata-multi-select-field/metadata-multi-select-field.js";
8
- import { MetadataStringField as u } from "./lib/components/metadata-filter-fields/components/metadata-string-field/metadata-string-field.js";
9
- import { MetadataTaxonomyField as d } from "./lib/components/metadata-filter-fields/components/metadata-taxonomy-field/metadata-taxonomy-field.js";
10
- import { MetadataTaxonomyFieldAdvanced as f } from "./lib/components/metadata-filter-fields/components/metadata-taxonomy-field/metadata-taxonomy-field-advanced.js";
11
- import { t as p } from "../chunks/metadata-filter.js";
12
- import "./lib/components/metadata-filter-fields/components/index.js";
13
- export * from "@box/combobox-with-api";
14
- export { t as FilterKeyTypes, a as MetadataDateField, o as MetadataDateFieldNonRelative, s as MetadataEnumField, p as MetadataFilter, c as MetadataFloatField, l as MetadataMultiSelectField, u as MetadataStringField, d as MetadataTaxonomyField, f as MetadataTaxonomyFieldAdvanced, e as RangeLabelType, r as defaultInitialValues, i as defaultMetadataValueMap, n as getRelativeFromToValues };
1
+ import{n as RangeLabelType,t as FilterKeyTypes}from"../chunks/types.js";import{getRelativeFromToValues}from"./lib/components/metadata-filter-fields/components/metadata-date-field/date-conversion-utils.js";import{defaultInitialValues,defaultMetadataValueMap}from"./lib/defaults.js";import{MetadataDateField,MetadataDateFieldNonRelative}from"./lib/components/metadata-filter-fields/components/metadata-date-field/metadata-date-field.js";import{MetadataEnumField}from"./lib/components/metadata-filter-fields/components/metadata-enum-field/metadata-enum-field.js";import{MetadataFloatField}from"./lib/components/metadata-filter-fields/components/metadata-float-field/metadata-float-field.js";import{MetadataMultiSelectField}from"./lib/components/metadata-filter-fields/components/metadata-multi-select-field/metadata-multi-select-field.js";import{MetadataStringField}from"./lib/components/metadata-filter-fields/components/metadata-string-field/metadata-string-field.js";import{MetadataTaxonomyField}from"./lib/components/metadata-filter-fields/components/metadata-taxonomy-field/metadata-taxonomy-field.js";import{MetadataTaxonomyFieldAdvanced}from"./lib/components/metadata-filter-fields/components/metadata-taxonomy-field/metadata-taxonomy-field-advanced.js";import{t as MetadataFilter}from"../chunks/metadata-filter.js";import"./lib/components/metadata-filter-fields/components/index.js";export*from"@box/combobox-with-api";export{FilterKeyTypes,MetadataDateField,MetadataDateFieldNonRelative,MetadataEnumField,MetadataFilter,MetadataFloatField,MetadataMultiSelectField,MetadataStringField,MetadataTaxonomyField,MetadataTaxonomyFieldAdvanced,RangeLabelType,defaultInitialValues,defaultMetadataValueMap,getRelativeFromToValues};
@@ -1,2 +1 @@
1
- var e = { maxLength: 255 };
2
- export { e as fieldDefaultProps };
1
+ var fieldDefaultProps={maxLength:255};export{fieldDefaultProps};
@@ -1,8 +1 @@
1
- import { MetadataDateField as e, MetadataDateFieldNonRelative as t } from "./metadata-date-field/metadata-date-field.js";
2
- import { MetadataEnumField as n } from "./metadata-enum-field/metadata-enum-field.js";
3
- import { MetadataFloatField as r } from "./metadata-float-field/metadata-float-field.js";
4
- import { MetadataMultiSelectField as i } from "./metadata-multi-select-field/metadata-multi-select-field.js";
5
- import { MetadataStringField as a } from "./metadata-string-field/metadata-string-field.js";
6
- import { MetadataTaxonomyField as o } from "./metadata-taxonomy-field/metadata-taxonomy-field.js";
7
- import { MetadataTaxonomyFieldAdvanced as s } from "./metadata-taxonomy-field/metadata-taxonomy-field-advanced.js";
8
- export { e as MetadataDateField, t as MetadataDateFieldNonRelative, n as MetadataEnumField, r as MetadataFloatField, i as MetadataMultiSelectField, a as MetadataStringField, o as MetadataTaxonomyField, s as MetadataTaxonomyFieldAdvanced };
1
+ import{MetadataDateField,MetadataDateFieldNonRelative}from"./metadata-date-field/metadata-date-field.js";import{MetadataEnumField}from"./metadata-enum-field/metadata-enum-field.js";import{MetadataFloatField}from"./metadata-float-field/metadata-float-field.js";import{MetadataMultiSelectField}from"./metadata-multi-select-field/metadata-multi-select-field.js";import{MetadataStringField}from"./metadata-string-field/metadata-string-field.js";import{MetadataTaxonomyField}from"./metadata-taxonomy-field/metadata-taxonomy-field.js";import{MetadataTaxonomyFieldAdvanced}from"./metadata-taxonomy-field/metadata-taxonomy-field-advanced.js";export{MetadataDateField,MetadataDateFieldNonRelative,MetadataEnumField,MetadataFloatField,MetadataMultiSelectField,MetadataStringField,MetadataTaxonomyField,MetadataTaxonomyFieldAdvanced};
@@ -1,3 +1 @@
1
- import { CalendarDate as e } from "@box/blueprint-web";
2
- var t = new e(3e3, 1, 1);
3
- export { t as DEFAULT_MAX_DATE };
1
+ import{CalendarDate}from"@box/blueprint-web";var DEFAULT_MAX_DATE=new CalendarDate(3e3,1,1);export{DEFAULT_MAX_DATE};
@@ -1,49 +1 @@
1
- import { n as e } from "../../../../../../chunks/types.js";
2
- import { Time as t, fromAbsolute as n, parseAbsolute as r, parseAbsoluteToLocal as i, toCalendarDate as a, toCalendarDateTime as o, toZoned as s } from "@box/blueprint-web";
3
- var c = (e, t) => {
4
- try {
5
- return a(t ? o(r(e, "UTC")) : i(e));
6
- } catch {
7
- return null;
8
- }
9
- }, l = (n, r, i) => {
10
- let a = "";
11
- return n && (a = s(i === e.FROM ? n : o(n, new t(23, 59, 59, 999)), r).toAbsoluteString()), a;
12
- }, u = (n, r) => {
13
- let i = "";
14
- return n && (i = s(r === e.FROM ? o(n, new t(0, 0, 0, 0)) : o(n, new t(23, 59, 59, 999)), "UTC").toAbsoluteString()), i;
15
- }, d = (t, r, i = (/* @__PURE__ */ new Date()).getTime()) => {
16
- if ((t === "next" || t === "past" || t === "olderThan") && (r === void 0 || isNaN(r))) return {
17
- from: void 0,
18
- to: void 0
19
- };
20
- let a = (e) => e === void 0 ? void 0 : e, o = a(n(i, "UTC")), s = (e) => a(o?.add({ days: e * r })), c = {
21
- today: () => ({
22
- from: o,
23
- to: o
24
- }),
25
- next: () => ({
26
- from: o,
27
- to: s(1)
28
- }),
29
- past: () => ({
30
- from: s(-1),
31
- to: o
32
- }),
33
- olderThan: () => ({
34
- from: a(n(0, "UTC")),
35
- to: s(-1)
36
- })
37
- }[t]?.(), l = c?.from, d = c?.to;
38
- return {
39
- from: l ? u(l, e.FROM) : void 0,
40
- to: d ? u(d, e.TO) : void 0
41
- };
42
- }, f = (t, r) => {
43
- let i = (e) => e === void 0 ? void 0 : e, a = i(n((/* @__PURE__ */ new Date()).getTime(), "UTC")), o = (e, t) => i(a?.add({ days: e * t })), s = o(t < 1 ? -1 : 1, Math.abs(t)), c = o(r < 1 ? -1 : 1, Math.abs(r));
44
- return {
45
- from: s ? u(s, e.FROM) : void 0,
46
- to: c ? u(c, e.TO) : void 0
47
- };
48
- };
49
- export { c as convertToDatePickerValue, l as convertToFormikValue, u as convertToFormikValueRanged, f as getCustomFromToValues, d as getRelativeFromToValues };
1
+ import{n as RangeLabelType}from"../../../../../../chunks/types.js";import{Time,fromAbsolute,parseAbsolute,parseAbsoluteToLocal,toCalendarDate,toCalendarDateTime,toZoned}from"@box/blueprint-web";var convertToDatePickerValue=(formikValue,discardTz)=>{try{return toCalendarDate(discardTz?toCalendarDateTime(parseAbsolute(formikValue,`UTC`)):parseAbsoluteToLocal(formikValue))}catch{return null}},convertToFormikValue=(datePickerValue,localTimezone,rangeLabelName)=>{let formikValue=``;return datePickerValue&&(formikValue=toZoned(rangeLabelName===RangeLabelType.FROM?datePickerValue:toCalendarDateTime(datePickerValue,new Time(23,59,59,999)),localTimezone).toAbsoluteString()),formikValue},convertToFormikValueRanged=(datePickerValue,rangeLabelName)=>{let formikValue=``;return datePickerValue&&(formikValue=toZoned(rangeLabelName===RangeLabelType.FROM?toCalendarDateTime(datePickerValue,new Time(0,0,0,0)):toCalendarDateTime(datePickerValue,new Time(23,59,59,999)),`UTC`).toAbsoluteString()),formikValue},getRelativeFromToValues=(selectedRelValue,relDaysFieldValue,baseTimestamp=new Date().getTime())=>{if((selectedRelValue===`next`||selectedRelValue===`past`||selectedRelValue===`olderThan`)&&(relDaysFieldValue===void 0||isNaN(relDaysFieldValue)))return{from:void 0,to:void 0};let undefinedable=val=>val===void 0?void 0:val,relNow=undefinedable(fromAbsolute(baseTimestamp,`UTC`)),addDays=dir=>undefinedable(relNow?.add({days:dir*relDaysFieldValue})),relDateStrategy={today:()=>({from:relNow,to:relNow}),next:()=>({from:relNow,to:addDays(1)}),past:()=>({from:addDays(-1),to:relNow}),olderThan:()=>({from:undefinedable(fromAbsolute(0,`UTC`)),to:addDays(-1)})}[selectedRelValue]?.(),newFromValue=relDateStrategy?.from,newToValue=relDateStrategy?.to;return{from:newFromValue?convertToFormikValueRanged(newFromValue,RangeLabelType.FROM):void 0,to:newToValue?convertToFormikValueRanged(newToValue,RangeLabelType.TO):void 0}},getCustomFromToValues=(from,to)=>{let undefinedable=val=>val===void 0?void 0:val,timeNow=undefinedable(fromAbsolute(new Date().getTime(),`UTC`)),addDays=(dir,days)=>undefinedable(timeNow?.add({days:dir*days})),newFromValue=addDays(from<1?-1:1,Math.abs(from)),newToValue=addDays(to<1?-1:1,Math.abs(to));return{from:newFromValue?convertToFormikValueRanged(newFromValue,RangeLabelType.FROM):void 0,to:newToValue?convertToFormikValueRanged(newToValue,RangeLabelType.TO):void 0}};export{convertToDatePickerValue,convertToFormikValue,convertToFormikValueRanged,getCustomFromToValues,getRelativeFromToValues};
@@ -1,167 +1 @@
1
- import { n as e, t } from "../../../../../../chunks/types.js";
2
- import { convertToFormikValueRanged 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 c } from "./use-date-validation.js";
8
- import { useIntegerValidation as ee } from "./use-integer-validation.js";
9
- import { getDynamicMaxMinValue as l, processRelativeDaysInput as u } from "./utils.js";
10
- import { t as te } from "../../../../../../chunks/advanced-filter-select.js";
11
- import { DateI18nProvider as ne, DatePicker as d, TextInput as re } from "@box/blueprint-web";
12
- import { Field as f, getIn as ie, useFormikContext as ae } from "formik";
13
- import { useCallback as p, useEffect as oe, useMemo as m, useRef as h, useState as g } from "react";
14
- import { useIntl as _ } from "react-intl";
15
- import se from "clsx";
16
- import { jsx as v, jsxs as y } from "react/jsx-runtime";
17
- var b = ({ disableForm: b, fieldNamePrefix: x, label: S, locale: C, portalElement: w, filterOptionsMap: ce, onAdvancedFilterOptionChange: T, fieldAdvancedFilterOptions: E, hasAccordion: le, isModified: ue }) => {
18
- let D = `${x}.value.advancedFilterOption`, O = `${x}.value.relativeDays`, k = `${x}.value.range.gt`, A = `${x}.value.range.lt`, { values: j, setFieldValue: M, setFieldTouched: N } = ae(), { validateDates: P, fromDatePickerValue: F, toDatePickerValue: I, fromErrorType: L, toErrorType: R } = c(j, k, A, C, !0), { validatePositiveInteger: z } = ee(), B = _(), [V, H] = g(E || t.SELECT_FILTER_TYPE), [U, W] = g(!1), G = ie(j, O), [K, q] = g(e.FROM), J = h(F), Y = h(I), X = {
19
- clearDatePickerAriaLabel: B.formatMessage(i.clearSelectedDate),
20
- nextMonthAriaLabel: B.formatMessage(i.switchToNextMonth),
21
- openCalendarDropdownAriaLabel: B.formatMessage(i.openCalendar),
22
- previousMonthAriaLabel: B.formatMessage(i.switchToNextMonth)
23
- }, Z = p(() => {
24
- if (V === t.TODAY) {
25
- let { from: e, to: t } = r("today", void 0);
26
- M(k, e), M(A, t);
27
- } else if (G !== void 0) {
28
- let e = typeof G == "string" ? Number(G) : G;
29
- if (!isNaN(e) && e > 0) {
30
- let n = V;
31
- if ([
32
- t.NEXT,
33
- t.PAST,
34
- t.OLDER_THAN
35
- ].includes(n)) {
36
- let { from: t, to: i } = r(n, e);
37
- M(k, t), M(A, i);
38
- }
39
- }
40
- }
41
- }, [
42
- V,
43
- G,
44
- k,
45
- A,
46
- M
47
- ]);
48
- oe(() => {
49
- U && (Z(), W(!1));
50
- }, [U, Z]);
51
- let de = p((e) => {
52
- let n = e;
53
- H(n), M(D, n), T && T(x, n), [
54
- t.IS_BLANK,
55
- t.IS_NOT_BLANK,
56
- t.SELECT_FILTER_TYPE
57
- ].includes(n) || !n || n === t.CUSTOM_RANGE ? (M(O, void 0), M(k, void 0), M(A, void 0)) : n === t.TODAY ? (M(O, void 0), W(!0)) : (M(k, void 0), M(A, void 0));
58
- }, [
59
- x,
60
- T,
61
- M,
62
- D,
63
- O,
64
- k,
65
- A
66
- ]), fe = p((e) => {
67
- let { valueToStore: t, shouldTriggerUpdate: n } = u(e);
68
- M(O, t), n && W(!0);
69
- }, [M, O]), pe = p((t) => {
70
- let r = n(t, e.FROM);
71
- J.current = t, M(k, r), q(e.FROM);
72
- }, [M, k]), me = p((t) => {
73
- let r = n(t, e.TO);
74
- Y.current = t, M(A, r), q(e.TO);
75
- }, [M, A]), Q = p((t) => {
76
- N(t === e.FROM ? k : A, !0), q(t);
77
- }, [
78
- N,
79
- k,
80
- A
81
- ]), he = m(() => l(I, a), [I]), ge = m(() => l(F), [F]), $ = (e, t, n) => !!(t === s.MAX && e === s.OVERLAPPING || e === s.OVERLAPPING && n), _e = [
82
- t.IS_BLANK,
83
- t.IS_NOT_BLANK,
84
- t.SELECT_FILTER_TYPE,
85
- t.TODAY
86
- ];
87
- return /* @__PURE__ */ v(ne, {
88
- locale: C,
89
- children: /* @__PURE__ */ y("div", {
90
- className: o.advancedDateContainer,
91
- "data-testid": `${S}-advanced-field`,
92
- children: [/* @__PURE__ */ v(te, {
93
- advancedFilterFieldName: D,
94
- disableForm: b,
95
- fieldAdvancedFilterOptions: E,
96
- fieldNamePrefix: x,
97
- filterOptionsMap: ce,
98
- isModified: ue,
99
- label: S,
100
- onAdvancedFilterOptionChange: T,
101
- onValueChange: de,
102
- portalElement: w,
103
- showLabel: !le,
104
- value: V
105
- }), !V || _e.includes(V) ? null : V === t.CUSTOM_RANGE ? /* @__PURE__ */ y("div", {
106
- className: se(o.rangeInputsContainer, o.verticalLayout),
107
- children: [/* @__PURE__ */ v(f, {
108
- name: k,
109
- validate: (t) => P(J.current, Y.current, e.FROM),
110
- children: ({ field: t, meta: n }) => /* @__PURE__ */ v("div", {
111
- className: o.datePicker,
112
- children: /* @__PURE__ */ v(d, {
113
- ...t,
114
- ...X,
115
- calendarAriaLabel: B.formatMessage(i.selectStartDate),
116
- error: !$(L, R, K !== e.FROM) && n.error,
117
- isDisabled: b,
118
- label: B.formatMessage(i.afterDate),
119
- maxValue: he,
120
- onBlur: () => Q(e.FROM),
121
- onChange: pe,
122
- portalElement: w,
123
- value: F
124
- })
125
- })
126
- }), /* @__PURE__ */ v(f, {
127
- name: A,
128
- validate: (t) => P(J.current, Y.current, e.TO),
129
- children: ({ field: t, meta: n }) => /* @__PURE__ */ v("div", {
130
- className: o.datePicker,
131
- children: /* @__PURE__ */ v(d, {
132
- ...t,
133
- ...X,
134
- calendarAriaLabel: B.formatMessage(i.selectEndDate),
135
- error: !$(R, L, K !== e.TO) && n.error,
136
- isDisabled: b,
137
- label: B.formatMessage(i.beforeDate),
138
- maxValue: a,
139
- minValue: ge,
140
- onBlur: () => Q(e.TO),
141
- onChange: me,
142
- portalElement: w,
143
- value: I
144
- })
145
- })
146
- })]
147
- }) : /* @__PURE__ */ v(f, {
148
- name: O,
149
- validate: (e) => z(e?.toString() || ""),
150
- children: ({ field: e, meta: t }) => /* @__PURE__ */ v("div", {
151
- className: o.daysInputContainer,
152
- children: /* @__PURE__ */ v(re, {
153
- ...e,
154
- disabled: b,
155
- error: t.touched && t.error,
156
- hideLabel: !0,
157
- label: B.formatMessage(i.relativeDaysSelectLabel),
158
- onChange: (e) => fe(e.target.value),
159
- placeholder: B.formatMessage(i.numberOfDays),
160
- value: G?.toString() || ""
161
- })
162
- })
163
- })]
164
- })
165
- });
166
- };
167
- export { b as MetadataDateFieldAdvanced, b as default };
1
+ import{n as RangeLabelType,t as FilterKeyTypes}from"../../../../../../chunks/types.js";import{convertToFormikValueRanged,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{useIntegerValidation}from"./use-integer-validation.js";import{getDynamicMaxMinValue,processRelativeDaysInput}from"./utils.js";import{t as AdvancedFilterSelect}from"../../../../../../chunks/advanced-filter-select.js";import{DateI18nProvider,DatePicker,TextInput}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 MetadataDateFieldAdvanced=({disableForm,fieldNamePrefix,label,locale,portalElement,filterOptionsMap,onAdvancedFilterOptionChange,fieldAdvancedFilterOptions,hasAccordion,isModified})=>{let advancedFilterFieldName=`${fieldNamePrefix}.value.advancedFilterOption`,relativeDaysFieldName=`${fieldNamePrefix}.value.relativeDays`,fromFieldName=`${fieldNamePrefix}.value.range.gt`,toFieldName=`${fieldNamePrefix}.value.range.lt`,{values,setFieldValue,setFieldTouched}=useFormikContext(),{validateDates,fromDatePickerValue,toDatePickerValue,fromErrorType,toErrorType}=useDateValidation(values,fromFieldName,toFieldName,locale,!0),{validatePositiveInteger}=useIntegerValidation(),intl=useIntl(),[advancedFilterValue,setAdvancedFilterValue]=useState(fieldAdvancedFilterOptions||FilterKeyTypes.SELECT_FILTER_TYPE),[shouldUpdateFromToFields,setShouldUpdateFromToFields]=useState(!1),relativeDaysValue=getIn(values,relativeDaysFieldName),[lastChangedField,setLastChangedField]=useState(RangeLabelType.FROM),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)},updateFromToFields=useCallback(()=>{if(advancedFilterValue===FilterKeyTypes.TODAY){let{from,to}=getRelativeFromToValues(`today`,void 0);setFieldValue(fromFieldName,from),setFieldValue(toFieldName,to)}else if(relativeDaysValue!==void 0){let numValue=typeof relativeDaysValue==`string`?Number(relativeDaysValue):relativeDaysValue;if(!isNaN(numValue)&&numValue>0){let relativeType=advancedFilterValue;if([FilterKeyTypes.NEXT,FilterKeyTypes.PAST,FilterKeyTypes.OLDER_THAN].includes(relativeType)){let{from,to}=getRelativeFromToValues(relativeType,numValue);setFieldValue(fromFieldName,from),setFieldValue(toFieldName,to)}}}},[advancedFilterValue,relativeDaysValue,fromFieldName,toFieldName,setFieldValue]);useEffect(()=>{shouldUpdateFromToFields&&(updateFromToFields(),setShouldUpdateFromToFields(!1))},[shouldUpdateFromToFields,updateFromToFields]);let handleAdvancedFilterChange=useCallback(value=>{let selectedOption=value;setAdvancedFilterValue(selectedOption),setFieldValue(advancedFilterFieldName,selectedOption),onAdvancedFilterOptionChange&&onAdvancedFilterOptionChange(fieldNamePrefix,selectedOption),[FilterKeyTypes.IS_BLANK,FilterKeyTypes.IS_NOT_BLANK,FilterKeyTypes.SELECT_FILTER_TYPE].includes(selectedOption)||!selectedOption||selectedOption===FilterKeyTypes.CUSTOM_RANGE?(setFieldValue(relativeDaysFieldName,void 0),setFieldValue(fromFieldName,void 0),setFieldValue(toFieldName,void 0)):selectedOption===FilterKeyTypes.TODAY?(setFieldValue(relativeDaysFieldName,void 0),setShouldUpdateFromToFields(!0)):(setFieldValue(fromFieldName,void 0),setFieldValue(toFieldName,void 0))},[fieldNamePrefix,onAdvancedFilterOptionChange,setFieldValue,advancedFilterFieldName,relativeDaysFieldName,fromFieldName,toFieldName]),handleRelativeDaysChange=useCallback(value=>{let{valueToStore,shouldTriggerUpdate}=processRelativeDaysInput(value);setFieldValue(relativeDaysFieldName,valueToStore),shouldTriggerUpdate&&setShouldUpdateFromToFields(!0)},[setFieldValue,relativeDaysFieldName]),handleFromOnChange=useCallback(datePickerValue=>{let formikValue=convertToFormikValueRanged(datePickerValue,RangeLabelType.FROM);fromValidationRef.current=datePickerValue,setFieldValue(fromFieldName,formikValue),setLastChangedField(RangeLabelType.FROM)},[setFieldValue,fromFieldName]),handleToOnChange=useCallback(datePickerValue=>{let formikValue=convertToFormikValueRanged(datePickerValue,RangeLabelType.TO);toValidationRef.current=datePickerValue,setFieldValue(toFieldName,formikValue),setLastChangedField(RangeLabelType.TO)},[setFieldValue,toFieldName]),handleOnBlur=useCallback(rangeLabelType=>{setFieldTouched(rangeLabelType===RangeLabelType.FROM?fromFieldName:toFieldName,!0),setLastChangedField(rangeLabelType)},[setFieldTouched,fromFieldName,toFieldName]),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),HIDE_INPUT_FILTER_VALUES=[FilterKeyTypes.IS_BLANK,FilterKeyTypes.IS_NOT_BLANK,FilterKeyTypes.SELECT_FILTER_TYPE,FilterKeyTypes.TODAY];return jsx(DateI18nProvider,{locale,children:jsxs(`div`,{className:metadata_date_field_module_default.advancedDateContainer,"data-testid":`${label}-advanced-field`,children:[jsx(AdvancedFilterSelect,{advancedFilterFieldName,disableForm,fieldAdvancedFilterOptions,fieldNamePrefix,filterOptionsMap,isModified,label,onAdvancedFilterOptionChange,onValueChange:handleAdvancedFilterChange,portalElement,showLabel:!hasAccordion,value:advancedFilterValue}),!advancedFilterValue||HIDE_INPUT_FILTER_VALUES.includes(advancedFilterValue)?null:advancedFilterValue===FilterKeyTypes.CUSTOM_RANGE?jsxs(`div`,{className:clsx(metadata_date_field_module_default.rangeInputsContainer,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.datePicker,children:jsx(DatePicker,{...field,...sharedDatePickerProps,calendarAriaLabel:intl.formatMessage(messages.selectStartDate),error:!shouldHideError(fromErrorType,toErrorType,lastChangedField!==RangeLabelType.FROM)&&meta.error,isDisabled:disableForm,label:intl.formatMessage(messages.afterDate),maxValue:fromMaxValue,onBlur:()=>handleOnBlur(RangeLabelType.FROM),onChange:handleFromOnChange,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.datePicker,children:jsx(DatePicker,{...field,...sharedDatePickerProps,calendarAriaLabel:intl.formatMessage(messages.selectEndDate),error:!shouldHideError(toErrorType,fromErrorType,lastChangedField!==RangeLabelType.TO)&&meta.error,isDisabled:disableForm,label:intl.formatMessage(messages.beforeDate),maxValue:DEFAULT_MAX_DATE,minValue:toMinValue,onBlur:()=>handleOnBlur(RangeLabelType.TO),onChange:handleToOnChange,portalElement,value:toDatePickerValue})})})]}):jsx(Field,{name:relativeDaysFieldName,validate:value=>validatePositiveInteger(value?.toString()||``),children:({field,meta})=>jsx(`div`,{className:metadata_date_field_module_default.daysInputContainer,children:jsx(TextInput,{...field,disabled:disableForm,error:meta.touched&&meta.error,hideLabel:!0,label:intl.formatMessage(messages.relativeDaysSelectLabel),onChange:e=>handleRelativeDaysChange(e.target.value),placeholder:intl.formatMessage(messages.numberOfDays),value:relativeDaysValue?.toString()||``})})})]})})};export{MetadataDateFieldAdvanced,MetadataDateFieldAdvanced as default};