@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,72 +1 @@
1
- import { t as e } from "../../../../../../chunks/types.js";
2
- import t from "../../../../messages.js";
3
- import { t as n } from "../../../../../../chunks/advanced-filter-select.js";
4
- import { fieldDefaultProps as r } from "../constants.js";
5
- import { createFieldValue as i, getInitialAdvancedFilterValue as a, getInputValue as o } from "./utils.js";
6
- import { Combobox as s, TooltipProvider as c } from "@box/blueprint-web";
7
- import { Field as l, getIn as u, useFormikContext as d } from "formik";
8
- import { useCallback as f, useMemo as p, useRef as m, useState as h } from "react";
9
- import { useIntl as g } from "react-intl";
10
- import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
11
- var b = (t) => t === e.IS_BLANK || t === e.IS_NOT_BLANK, x = ({ label: x, fieldNamePrefix: S, disableForm: C, onAdvancedFilterOptionChange: w, fieldAdvancedFilterOptions: T, filterOptionsMap: E, portalElement: D, hasAccordion: O, isModified: k, hasExperimentalVirtualization: A }) => {
12
- let { setFieldValue: j, values: M } = d(), N = g(), P = `${S}.value.enum`, F = p(() => u(M, `${S}.options`, []).map((e) => e?.key).filter((e) => typeof e == "string"), [M, S]), [I, L] = h(a(T, E) || e.MATCH_ANY), [R, z] = h(!1), [B, V] = h(!1), H = (e, t) => typeof t == "string" ? t.toLowerCase().includes(e.toLowerCase()) : !1, U = m([]), W = m(null), G = f((e, t, n) => {
13
- let r = e;
14
- L(r), w?.(P, r);
15
- let a = i(b(e) ? [] : t, e, !0);
16
- n.setFieldValue(P, a);
17
- }, [P, w]), K = f((e) => {
18
- W.current && G(e, U.current, W.current);
19
- }, [G]), q = f((e) => {
20
- j(P, i(e, I, !0));
21
- }, [
22
- I,
23
- P,
24
- j
25
- ]), J = f((e) => {
26
- z(e), e && V(!1);
27
- }, []), Y = f((e) => {
28
- V(e), e && z(!1);
29
- }, []), X = f((e) => !e || e.length === 0 ? N.formatMessage(t.multiselectPlaceholder) : "", [N]);
30
- return /* @__PURE__ */ v("div", {
31
- "data-testid": `${x}-field`,
32
- children: /* @__PURE__ */ v(l, {
33
- name: P,
34
- children: ({ field: e, form: t }) => {
35
- let i = o(e.value, !0);
36
- return U.current = i, W.current = t, /* @__PURE__ */ y(_, { children: [/* @__PURE__ */ v(n, {
37
- disableForm: C,
38
- fieldAdvancedFilterOptions: T,
39
- fieldNamePrefix: S,
40
- filterOptionsMap: E,
41
- isModified: k,
42
- label: x,
43
- onAdvancedFilterOptionChange: w,
44
- onOpenChange: Y,
45
- onValueChange: K,
46
- open: B,
47
- portalElement: D,
48
- showLabel: !O,
49
- value: I
50
- }), !b(I) && /* @__PURE__ */ v(c, { children: /* @__PURE__ */ v(s, {
51
- ...r,
52
- as: "input",
53
- disabled: C,
54
- experimentalVirtualization: A,
55
- filterFn: H,
56
- hideLabel: !0,
57
- label: x,
58
- multiselect: !0,
59
- name: e.name,
60
- onOpenChange: J,
61
- onValueChange: q,
62
- open: R,
63
- options: F,
64
- placeholder: X(i),
65
- portalElement: D,
66
- value: i
67
- }) })] });
68
- }
69
- })
70
- });
71
- };
72
- export { x as MetadataMultiSelectFieldAdvanced };
1
+ import{t as FilterKeyTypes}from"../../../../../../chunks/types.js";import messages from"../../../../messages.js";import{t as AdvancedFilterSelect}from"../../../../../../chunks/advanced-filter-select.js";import{fieldDefaultProps}from"../constants.js";import{createFieldValue,getInitialAdvancedFilterValue,getInputValue}from"./utils.js";import{Combobox,TooltipProvider}from"@box/blueprint-web";import{Field,getIn,useFormikContext}from"formik";import{useCallback,useMemo,useRef,useState}from"react";import{useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";var isBlankOption=advancedFilterOption=>advancedFilterOption===FilterKeyTypes.IS_BLANK||advancedFilterOption===FilterKeyTypes.IS_NOT_BLANK,MetadataMultiSelectFieldAdvanced=({label,fieldNamePrefix,disableForm,onAdvancedFilterOptionChange,fieldAdvancedFilterOptions,filterOptionsMap,portalElement,hasAccordion,isModified,hasExperimentalVirtualization})=>{let{setFieldValue,values}=useFormikContext(),intl=useIntl(),fieldName=`${fieldNamePrefix}.value.enum`,options=useMemo(()=>getIn(values,`${fieldNamePrefix}.options`,[]).map(option=>option?.key).filter(key=>typeof key==`string`),[values,fieldNamePrefix]),[advancedFilterOption,setAdvancedFilterOption]=useState(getInitialAdvancedFilterValue(fieldAdvancedFilterOptions,filterOptionsMap)||FilterKeyTypes.MATCH_ANY),[isComboboxOpen,setIsComboboxOpen]=useState(!1),[isSelectOpen,setIsSelectOpen]=useState(!1),onFilter=(query,option)=>typeof option==`string`?option.toLowerCase().includes(query.toLowerCase()):!1,inputValueRef=useRef([]),formRef=useRef(null),handleAdvancedFilterOptionChange=useCallback((value,inputValue,form)=>{let selectedOption=value;setAdvancedFilterOption(selectedOption),onAdvancedFilterOptionChange?.(fieldName,selectedOption);let newValue=createFieldValue(isBlankOption(value)?[]:inputValue,value,!0);form.setFieldValue(fieldName,newValue)},[fieldName,onAdvancedFilterOptionChange]),handleSelectValueChange=useCallback(value=>{formRef.current&&handleAdvancedFilterOptionChange(value,inputValueRef.current,formRef.current)},[handleAdvancedFilterOptionChange]),handleValueChange=useCallback(value=>{setFieldValue(fieldName,createFieldValue(value,advancedFilterOption,!0))},[advancedFilterOption,fieldName,setFieldValue]),handleComboboxOpenChange=useCallback(open=>{setIsComboboxOpen(open),open&&setIsSelectOpen(!1)},[]),handleSelectOpenChange=useCallback(open=>{setIsSelectOpen(open),open&&setIsComboboxOpen(!1)},[]),getPlaceholder=useCallback(inputValue=>!inputValue||inputValue.length===0?intl.formatMessage(messages.multiselectPlaceholder):``,[intl]);return jsx(`div`,{"data-testid":`${label}-field`,children:jsx(Field,{name:fieldName,children:({field,form})=>{let inputValue=getInputValue(field.value,!0);return inputValueRef.current=inputValue,formRef.current=form,jsxs(Fragment,{children:[jsx(AdvancedFilterSelect,{disableForm,fieldAdvancedFilterOptions,fieldNamePrefix,filterOptionsMap,isModified,label,onAdvancedFilterOptionChange,onOpenChange:handleSelectOpenChange,onValueChange:handleSelectValueChange,open:isSelectOpen,portalElement,showLabel:!hasAccordion,value:advancedFilterOption}),!isBlankOption(advancedFilterOption)&&jsx(TooltipProvider,{children:jsx(Combobox,{...fieldDefaultProps,as:`input`,disabled:disableForm,experimentalVirtualization:hasExperimentalVirtualization,filterFn:onFilter,hideLabel:!0,label,multiselect:!0,name:field.name,onOpenChange:handleComboboxOpenChange,onValueChange:handleValueChange,open:isComboboxOpen,options,placeholder:getPlaceholder(inputValue),portalElement,value:inputValue})})]})}})})};export{MetadataMultiSelectFieldAdvanced};
@@ -1,35 +1 @@
1
- import e from "../../../../messages.js";
2
- import { fieldDefaultProps as t } from "../constants.js";
3
- import { MetadataMultiSelectFieldAdvanced as n } from "./metadata-multi-select-field-advanced.js";
4
- import { Combobox as r, TooltipProvider as i } from "@box/blueprint-web";
5
- import { Field as a, getIn as o, useFormikContext as s } from "formik";
6
- import { useCallback as c, useMemo as l } from "react";
7
- import { useIntl as u } from "react-intl";
8
- import { jsx as d } from "react/jsx-runtime";
9
- var f = ({ disableForm: n, fieldNamePrefix: f, label: p, portalElement: m, hasAccordion: h, hasExperimentalVirtualization: g }) => {
10
- let { setFieldValue: _, values: v } = s(), y = u(), b = `${f}.value.enum`, x = l(() => o(v, `${f}.options`, []).map(({ key: e }) => e), [v, f]), S = c((e, t) => t.toLowerCase().includes(e.toLowerCase()), []), C = c((e) => _(b, e), [_, b]), w = c((t) => (t || [])?.length === 0 ? y.formatMessage(e.multiselectPlaceholder) : "", [y]);
11
- return /* @__PURE__ */ d("div", {
12
- "data-testid": `${p}-field`,
13
- children: /* @__PURE__ */ d(a, {
14
- name: b,
15
- children: ({ field: e }) => /* @__PURE__ */ d(i, { children: /* @__PURE__ */ d(r, {
16
- ...t,
17
- as: "input",
18
- "data-target-id": `Combobox-${f}`,
19
- disabled: n,
20
- filterFn: S,
21
- hideLabel: h,
22
- label: p,
23
- multiselect: !0,
24
- experimentalVirtualization: g,
25
- name: e.name,
26
- onValueChange: C,
27
- options: x,
28
- placeholder: w(e.value),
29
- portalElement: m,
30
- value: e.value
31
- }) })
32
- })
33
- });
34
- }, p = ({ isAdvancedFilterEnabled: e, ...t }) => d(e ? n : f, { ...t });
35
- export { p as MetadataMultiSelectField, p as default };
1
+ import messages from"../../../../messages.js";import{fieldDefaultProps}from"../constants.js";import{MetadataMultiSelectFieldAdvanced}from"./metadata-multi-select-field-advanced.js";import{Combobox,TooltipProvider}from"@box/blueprint-web";import{Field,getIn,useFormikContext}from"formik";import{useCallback,useMemo}from"react";import{useIntl}from"react-intl";import{jsx}from"react/jsx-runtime";var MetadataMultiSelectFieldBase=({disableForm,fieldNamePrefix,label,portalElement,hasAccordion,hasExperimentalVirtualization})=>{let{setFieldValue,values}=useFormikContext(),intl=useIntl(),fieldName=`${fieldNamePrefix}.value.enum`,options=useMemo(()=>getIn(values,`${fieldNamePrefix}.options`,[]).map(({key})=>key),[values,fieldNamePrefix]),onFilter=useCallback((query,option)=>option.toLowerCase().includes(query.toLowerCase()),[]),handleValueChange=useCallback(value=>setFieldValue(fieldName,value),[setFieldValue,fieldName]),getPlaceholder=useCallback(fieldValue=>(fieldValue||[])?.length===0?intl.formatMessage(messages.multiselectPlaceholder):``,[intl]);return jsx(`div`,{"data-testid":`${label}-field`,children:jsx(Field,{name:fieldName,children:({field})=>jsx(TooltipProvider,{children:jsx(Combobox,{...fieldDefaultProps,as:`input`,"data-target-id":`Combobox-${fieldNamePrefix}`,disabled:disableForm,filterFn:onFilter,hideLabel:hasAccordion,label,multiselect:!0,experimentalVirtualization:hasExperimentalVirtualization,name:field.name,onValueChange:handleValueChange,options,placeholder:getPlaceholder(field.value),portalElement,value:field.value})})})})},MetadataMultiSelectField=({isAdvancedFilterEnabled,...props})=>jsx(isAdvancedFilterEnabled?MetadataMultiSelectFieldAdvanced:MetadataMultiSelectFieldBase,{...props});export{MetadataMultiSelectField,MetadataMultiSelectField as default};
@@ -1,12 +1 @@
1
- var e = /* @__PURE__ */ function(e) {
2
- return e.MATCH_ANY = "matchAny", e.MATCH_ALL = "matchAll", e.IS_BLANK = "isBlank", e.IS_NOT_BLANK = "isNotBlank", e;
3
- }({}), t = (e, t) => e && t?.some(([t]) => t === e) ? e : "matchAny", n = (e, t) => {
4
- if (Array.isArray(e)) return e.filter((e) => e !== "");
5
- if (t && typeof e == "object" && e) return (e.value || []).filter((e) => e !== "");
6
- let n = e || [];
7
- return Array.isArray(n) ? n.filter((e) => e !== "") : [];
8
- }, r = (e, t, n) => n ? {
9
- value: i(t) ? [] : e,
10
- advancedFilterOption: t
11
- } : e, i = (e) => e === "isBlank" || e === "isNotBlank";
12
- export { e as MultiSelectAdvancedFilterOption, r as createFieldValue, t as getInitialAdvancedFilterValue, n as getInputValue };
1
+ var MultiSelectAdvancedFilterOption=function(MultiSelectAdvancedFilterOption){return MultiSelectAdvancedFilterOption.MATCH_ANY=`matchAny`,MultiSelectAdvancedFilterOption.MATCH_ALL=`matchAll`,MultiSelectAdvancedFilterOption.IS_BLANK=`isBlank`,MultiSelectAdvancedFilterOption.IS_NOT_BLANK=`isNotBlank`,MultiSelectAdvancedFilterOption}({}),getInitialAdvancedFilterValue=(fieldAdvancedFilterOptions,filterOptionsMap)=>fieldAdvancedFilterOptions&&filterOptionsMap?.some(([key])=>key===fieldAdvancedFilterOptions)?fieldAdvancedFilterOptions:`matchAny`,getInputValue=(fieldValue,isAdvancedFilterEnabled)=>{if(Array.isArray(fieldValue))return fieldValue.filter(item=>item!==``);if(isAdvancedFilterEnabled&&typeof fieldValue==`object`&&fieldValue)return(fieldValue.value||[]).filter(item=>item!==``);let result=fieldValue||[];return Array.isArray(result)?result.filter(item=>item!==``):[]},createFieldValue=(inputValue,advancedFilterOption,isAdvancedFilterEnabled)=>isAdvancedFilterEnabled?{value:isBlankOption(advancedFilterOption)?[]:inputValue,advancedFilterOption}:inputValue,isBlankOption=advancedFilterOption=>advancedFilterOption===`isBlank`||advancedFilterOption===`isNotBlank`;export{MultiSelectAdvancedFilterOption,createFieldValue,getInitialAdvancedFilterValue,getInputValue};
@@ -1,64 +1 @@
1
- import { t as e } from "../../../../../../chunks/types.js";
2
- import t from "../../../../messages.js";
3
- import { t as n } from "../../../../../../chunks/advanced-filter-select.js";
4
- import { fieldDefaultProps as r } from "../constants.js";
5
- import { createFieldValue as i, getInitialAdvancedFilterValue as a, getInputValue as o, shouldHideTextInput as s } from "./utils.js";
6
- import { TextInput as c } from "@box/blueprint-web";
7
- import { Field as l } from "formik";
8
- import { useCallback as u, useState as d } from "react";
9
- import { useIntl as f } from "react-intl";
10
- import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
11
- var g = ({ label: g, fieldNamePrefix: _, disableForm: v, isAdvancedFilterEnabled: y, onAdvancedFilterOptionChange: b, fieldAdvancedFilterOptions: x, filterOptionsMap: S, hasAccordion: C, isModified: w, placeholder: T }) => {
12
- let E = f(), D = `${_}.value.enum[0]`, [O, k] = d(a(x, S) || e.CONTAINS), A = u((e, t, n) => {
13
- let r = e;
14
- k(r), b?.(D, r);
15
- let a = i(t, e, y);
16
- n.setFieldValue(D, a);
17
- }, [
18
- D,
19
- y,
20
- b
21
- ]), j = u((e, t) => {
22
- let n = e.target.value, r = i(n, O, y);
23
- t.setFieldValue(D, r);
24
- }, [
25
- O,
26
- y,
27
- D
28
- ]);
29
- return /* @__PURE__ */ m("div", {
30
- "data-testid": `${g}-field`,
31
- children: /* @__PURE__ */ m(l, {
32
- name: D,
33
- children: ({ field: e, meta: i, form: a }) => {
34
- let l = o(e.value, y);
35
- return /* @__PURE__ */ h(p, { children: [y && /* @__PURE__ */ m(n, {
36
- disableForm: v,
37
- fieldAdvancedFilterOptions: x,
38
- fieldNamePrefix: _,
39
- filterOptionsMap: S,
40
- isModified: w,
41
- label: g,
42
- onAdvancedFilterOptionChange: b,
43
- onValueChange: (e) => A(e, l, a),
44
- showLabel: y && !C,
45
- value: O
46
- }), !s(y, O) && /* @__PURE__ */ m(c, {
47
- ...r,
48
- ...e,
49
- "aria-label": E.formatMessage(t.enterValueAriaLabel, { label: g }),
50
- "data-target-id": `TextInput-${_}`,
51
- disabled: v,
52
- error: i.error,
53
- hideLabel: y || C,
54
- label: g,
55
- onChange: (e) => j(e, a),
56
- placeholder: T || E.formatMessage(t.setValuePlaceholder),
57
- value: l
58
- })] });
59
- }
60
- })
61
- });
62
- };
63
- g.displayName = "MetadataStringField";
64
- export { g as MetadataStringField, g as default };
1
+ import{t as FilterKeyTypes}from"../../../../../../chunks/types.js";import messages from"../../../../messages.js";import{t as AdvancedFilterSelect}from"../../../../../../chunks/advanced-filter-select.js";import{fieldDefaultProps}from"../constants.js";import{createFieldValue,getInitialAdvancedFilterValue,getInputValue,shouldHideTextInput}from"./utils.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";var MetadataStringField=({label,fieldNamePrefix,disableForm,isAdvancedFilterEnabled,onAdvancedFilterOptionChange,fieldAdvancedFilterOptions,filterOptionsMap,hasAccordion,isModified,placeholder})=>{let intl=useIntl(),fieldName=`${fieldNamePrefix}.value.enum[0]`,[advancedFilterOption,setAdvancedFilterOption]=useState(getInitialAdvancedFilterValue(fieldAdvancedFilterOptions,filterOptionsMap)||FilterKeyTypes.CONTAINS),handleAdvancedFilterOptionChange=useCallback((value,inputValue,form)=>{let selectedOption=value;setAdvancedFilterOption(selectedOption),onAdvancedFilterOptionChange?.(fieldName,selectedOption);let newValue=createFieldValue(inputValue,value,isAdvancedFilterEnabled);form.setFieldValue(fieldName,newValue)},[fieldName,isAdvancedFilterEnabled,onAdvancedFilterOptionChange]),handleTextInputChange=useCallback((event,form)=>{let newInputValue=event.target.value,newValue=createFieldValue(newInputValue,advancedFilterOption,isAdvancedFilterEnabled);form.setFieldValue(fieldName,newValue)},[advancedFilterOption,isAdvancedFilterEnabled,fieldName]);return jsx(`div`,{"data-testid":`${label}-field`,children:jsx(Field,{name:fieldName,children:({field,meta,form})=>{let inputValue=getInputValue(field.value,isAdvancedFilterEnabled);return jsxs(Fragment,{children:[isAdvancedFilterEnabled&&jsx(AdvancedFilterSelect,{disableForm,fieldAdvancedFilterOptions,fieldNamePrefix,filterOptionsMap,isModified,label,onAdvancedFilterOptionChange,onValueChange:value=>handleAdvancedFilterOptionChange(value,inputValue,form),showLabel:isAdvancedFilterEnabled&&!hasAccordion,value:advancedFilterOption}),!shouldHideTextInput(isAdvancedFilterEnabled,advancedFilterOption)&&jsx(TextInput,{...fieldDefaultProps,...field,"aria-label":intl.formatMessage(messages.enterValueAriaLabel,{label}),"data-target-id":`TextInput-${fieldNamePrefix}`,disabled:disableForm,error:meta.error,hideLabel:isAdvancedFilterEnabled||hasAccordion,label,onChange:event=>handleTextInputChange(event,form),placeholder:placeholder||intl.formatMessage(messages.setValuePlaceholder),value:inputValue})]})}})})};MetadataStringField.displayName=`MetadataStringField`;export{MetadataStringField,MetadataStringField as default};
@@ -1,7 +1 @@
1
- var e = /* @__PURE__ */ function(e) {
2
- 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;
3
- }({}), t = (e, t) => e && t?.some(([t]) => t === e) ? e : "matchExactly", n = (e) => e === "isBlank" || e === "isNotBlank", r = (e, t) => t && typeof e == "object" && e ? e.value || "" : e || "", i = (e, t, r) => r ? {
4
- value: n(t) ? "" : e,
5
- advancedFilterOption: t
6
- } : e, a = (e, t) => e && n(t);
7
- export { e as AdvancedFilterOption, i as createFieldValue, t as getInitialAdvancedFilterValue, r as getInputValue, n as isBlankOption, a as shouldHideTextInput };
1
+ var AdvancedFilterOption=function(AdvancedFilterOption){return AdvancedFilterOption.MATCH_EXACTLY=`matchExactly`,AdvancedFilterOption.STARTS_WITH=`startsWith`,AdvancedFilterOption.CONTAINS=`contains`,AdvancedFilterOption.DOES_NOT_CONTAIN=`doesNotContain`,AdvancedFilterOption.IS_NOT=`isNot`,AdvancedFilterOption.IS_BLANK=`isBlank`,AdvancedFilterOption.IS_NOT_BLANK=`isNotBlank`,AdvancedFilterOption}({}),getInitialAdvancedFilterValue=(fieldAdvancedFilterOptions,filterOptionsMap)=>fieldAdvancedFilterOptions&&filterOptionsMap?.some(([key])=>key===fieldAdvancedFilterOptions)?fieldAdvancedFilterOptions:`matchExactly`,isBlankOption=option=>option===`isBlank`||option===`isNotBlank`,getInputValue=(fieldValue,isAdvancedFilterEnabled)=>isAdvancedFilterEnabled&&typeof fieldValue==`object`&&fieldValue?fieldValue.value||``:fieldValue||``,createFieldValue=(inputValue,advancedFilterOption,isAdvancedFilterEnabled)=>isAdvancedFilterEnabled?{value:isBlankOption(advancedFilterOption)?``:inputValue,advancedFilterOption}:inputValue,shouldHideTextInput=(isAdvancedFilterEnabled,advancedFilterOption)=>isAdvancedFilterEnabled&&isBlankOption(advancedFilterOption);export{AdvancedFilterOption,createFieldValue,getInitialAdvancedFilterValue,getInputValue,isBlankOption,shouldHideTextInput};
@@ -1,89 +1 @@
1
- import e from "../../../../messages.js";
2
- import { t } from "../../../../../../chunks/advanced-filter-select.js";
3
- import { t as n } from "../../../../../../chunks/metadata-taxonomy-field-advanced.module.js";
4
- import { createFieldValue as r, getInitialAdvancedFilterValue as i, getInputValue as a, isBlankOption as o } from "./utils.js";
5
- import { ComboboxWithApiPagination as s, ComboboxWithApiTreeView as c } from "@box/combobox-with-api";
6
- import { Field as l, getIn as u, useFormikContext as d } from "formik";
7
- import { useCallback as f, useState as p } from "react";
8
- import { useIntl as m } from "react-intl";
9
- import h from "clsx";
10
- import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
11
- var y = ({ className: y, disableForm: b, fieldNamePrefix: x, label: S, portalElement: C, taxonomyOptionsFetcher: w, isMultilevelTaxonomyFieldEnabled: T, hasAccordion: E, isAdvancedFilterEnabled: D, onAdvancedFilterOptionChange: O, fieldAdvancedFilterOptions: k, filterOptionsMap: A, isModified: j }) => {
12
- let { setFieldValue: M, values: N } = d(), { metadata: { templateKey: P, scope: F } } = N, I = m(), L = `${x}.value`, { key: R, optionsRules: z, levels: B } = u(N, x), V = z?.selectableLevels, H = T && V?.some((e) => e > 1), [U, W] = p(i(k, A)), [G, K] = p(!1), q = f((e) => w ? w(F, P, R, V?.[0] ?? 0, e) : Promise.resolve({ options: [] }), [
13
- R,
14
- F,
15
- V,
16
- w,
17
- P
18
- ]), J = f((t) => t?.length === 0 ? I.formatMessage(e.multiselectPlaceholder) : "", [I]), Y = f((e, t, n) => {
19
- W(e), O?.(L, e);
20
- let i = r(o(e) ? [] : t, e, D);
21
- n.setFieldValue(L, i);
22
- }, [
23
- L,
24
- D,
25
- O
26
- ]), X = f((e) => {
27
- e && K(!1);
28
- }, []), Z = f((e) => {
29
- M(L, r(e, U, D));
30
- }, [
31
- U,
32
- L,
33
- D,
34
- M
35
- ]);
36
- return /* @__PURE__ */ _("div", {
37
- "data-testid": `${S}-field`,
38
- children: /* @__PURE__ */ _(l, {
39
- name: L,
40
- children: ({ field: e, form: r }) => {
41
- let i = a(e.value, D);
42
- return /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(t, {
43
- disableForm: b ?? !1,
44
- fieldAdvancedFilterOptions: k,
45
- fieldNamePrefix: x,
46
- filterOptionsMap: A,
47
- isModified: j,
48
- label: S,
49
- onAdvancedFilterOptionChange: O,
50
- onOpenChange: K,
51
- onValueChange: (e) => Y(e, i, r),
52
- open: G,
53
- portalElement: C,
54
- showLabel: !E,
55
- value: U
56
- }), !o(U) && /* @__PURE__ */ _("div", {
57
- className: h(n.comboboxWrapper, b && n.disabled),
58
- children: H ? /* @__PURE__ */ _(c, {
59
- className: h(y, b && n.disabledTreeView),
60
- defaultFetcher: q,
61
- disabled: b,
62
- hideLabel: !0,
63
- label: S,
64
- levels: B,
65
- multiselect: !0,
66
- onOpenChange: X,
67
- onValueChange: Z,
68
- placeholder: J(i),
69
- portalElement: C,
70
- selectableLevels: V,
71
- value: i
72
- }) : /* @__PURE__ */ _(s, {
73
- className: y,
74
- defaultFetcher: q,
75
- disabled: b,
76
- label: void 0,
77
- multiselect: !0,
78
- onOpenChange: X,
79
- onValueChange: Z,
80
- placeholder: J(i),
81
- portalElement: C,
82
- value: i
83
- })
84
- })] });
85
- }
86
- })
87
- });
88
- };
89
- export { y as LegacyMetadataTaxonomyFieldAdvanced, y as default };
1
+ import messages from"../../../../messages.js";import{t as AdvancedFilterSelect}from"../../../../../../chunks/advanced-filter-select.js";import{t as metadata_taxonomy_field_advanced_module_default}from"../../../../../../chunks/metadata-taxonomy-field-advanced.module.js";import{createFieldValue,getInitialAdvancedFilterValue,getInputValue,isBlankOption}from"./utils.js";import{ComboboxWithApiPagination,ComboboxWithApiTreeView}from"@box/combobox-with-api";import{Field,getIn,useFormikContext}from"formik";import{useCallback,useState}from"react";import{useIntl}from"react-intl";import clsx from"clsx";import{Fragment,jsx,jsxs}from"react/jsx-runtime";var LegacyMetadataTaxonomyFieldAdvanced=({className,disableForm,fieldNamePrefix,label,portalElement,taxonomyOptionsFetcher,isMultilevelTaxonomyFieldEnabled,hasAccordion,isAdvancedFilterEnabled,onAdvancedFilterOptionChange,fieldAdvancedFilterOptions,filterOptionsMap,isModified})=>{let{setFieldValue,values}=useFormikContext(),{metadata:{templateKey,scope}}=values,intl=useIntl(),fieldName=`${fieldNamePrefix}.value`,{key,optionsRules,levels}=getIn(values,fieldNamePrefix),selectableLevels=optionsRules?.selectableLevels,isMultilevelTaxonomy=isMultilevelTaxonomyFieldEnabled&&selectableLevels?.some(level=>level>1),[advancedFilterOption,setAdvancedFilterOption]=useState(getInitialAdvancedFilterValue(fieldAdvancedFilterOptions,filterOptionsMap)),[isSelectOpen,setIsSelectOpen]=useState(!1),defaultFetcher=useCallback(input=>taxonomyOptionsFetcher?taxonomyOptionsFetcher(scope,templateKey,key,selectableLevels?.[0]??0,input):Promise.resolve({options:[]}),[key,scope,selectableLevels,taxonomyOptionsFetcher,templateKey]),getPlaceholder=useCallback(selectedValues=>selectedValues?.length===0?intl.formatMessage(messages.multiselectPlaceholder):``,[intl]),handleAdvancedFilterOptionChange=useCallback((value,inputValue,form)=>{setAdvancedFilterOption(value),onAdvancedFilterOptionChange?.(fieldName,value);let newValue=createFieldValue(isBlankOption(value)?[]:inputValue,value,isAdvancedFilterEnabled);form.setFieldValue(fieldName,newValue)},[fieldName,isAdvancedFilterEnabled,onAdvancedFilterOptionChange]),handleComboboxOpenChange=useCallback(open=>{open&&setIsSelectOpen(!1)},[]),handleValueChange=useCallback(value=>{setFieldValue(fieldName,createFieldValue(value,advancedFilterOption,isAdvancedFilterEnabled))},[advancedFilterOption,fieldName,isAdvancedFilterEnabled,setFieldValue]);return jsx(`div`,{"data-testid":`${label}-field`,children:jsx(Field,{name:fieldName,children:({field,form})=>{let inputValue=getInputValue(field.value,isAdvancedFilterEnabled);return jsxs(Fragment,{children:[jsx(AdvancedFilterSelect,{disableForm:disableForm??!1,fieldAdvancedFilterOptions,fieldNamePrefix,filterOptionsMap,isModified,label,onAdvancedFilterOptionChange,onOpenChange:setIsSelectOpen,onValueChange:value=>handleAdvancedFilterOptionChange(value,inputValue,form),open:isSelectOpen,portalElement,showLabel:!hasAccordion,value:advancedFilterOption}),!isBlankOption(advancedFilterOption)&&jsx(`div`,{className:clsx(metadata_taxonomy_field_advanced_module_default.comboboxWrapper,disableForm&&metadata_taxonomy_field_advanced_module_default.disabled),children:isMultilevelTaxonomy?jsx(ComboboxWithApiTreeView,{className:clsx(className,disableForm&&metadata_taxonomy_field_advanced_module_default.disabledTreeView),defaultFetcher,disabled:disableForm,hideLabel:!0,label,levels,multiselect:!0,onOpenChange:handleComboboxOpenChange,onValueChange:handleValueChange,placeholder:getPlaceholder(inputValue),portalElement,selectableLevels,value:inputValue}):jsx(ComboboxWithApiPagination,{className,defaultFetcher,disabled:disableForm,label:void 0,multiselect:!0,onOpenChange:handleComboboxOpenChange,onValueChange:handleValueChange,placeholder:getPlaceholder(inputValue),portalElement,value:inputValue})})]})}})})};export{LegacyMetadataTaxonomyFieldAdvanced,LegacyMetadataTaxonomyFieldAdvanced as default};
@@ -1,46 +1 @@
1
- import e from "../../../../messages.js";
2
- import { ComboboxWithApiPagination as t, ComboboxWithApiTreeView as n } from "@box/combobox-with-api";
3
- import { Field as r, getIn as i, useFormikContext as a } from "formik";
4
- import { useCallback as o } from "react";
5
- import { useIntl as s } from "react-intl";
6
- import { jsx as c } from "react/jsx-runtime";
7
- var l = ({ className: l, disableForm: u, fieldNamePrefix: d, label: f, portalElement: p, taxonomyOptionsFetcher: m, isMultilevelTaxonomyFieldEnabled: h, hasAccordion: g }) => {
8
- let { setFieldValue: _, values: v } = a(), { metadata: { templateKey: y, scope: b } } = v, x = s(), S = `${d}.value`, { key: C, optionsRules: { multiSelect: w, selectableLevels: T }, levels: E } = i(v, d), D = h && T?.some((e) => e > 1), O = o((e) => m(b, y, C, T?.[0], e), [
9
- C,
10
- b,
11
- T,
12
- m,
13
- y
14
- ]), k = o((t) => w || !t?.length ? x.formatMessage(e.taxonomyPlaceholder) : void 0, [w, x]), A = o((e) => _(S, e), [_, S]);
15
- return /* @__PURE__ */ c("div", {
16
- "data-testid": `${f}-field`,
17
- children: /* @__PURE__ */ c(r, {
18
- name: S,
19
- children: ({ field: e }) => D ? /* @__PURE__ */ c(n, {
20
- className: l,
21
- defaultFetcher: O,
22
- disabled: u,
23
- hideLabel: g,
24
- label: f,
25
- levels: E,
26
- multiselect: w,
27
- onValueChange: A,
28
- placeholder: k(e.value),
29
- portalElement: p,
30
- selectableLevels: T,
31
- value: e.value
32
- }) : /* @__PURE__ */ c(t, {
33
- className: l,
34
- defaultFetcher: O,
35
- disabled: u,
36
- label: g ? void 0 : f,
37
- multiselect: w,
38
- onValueChange: A,
39
- placeholder: k(e.value),
40
- portalElement: p,
41
- value: e.value
42
- })
43
- })
44
- });
45
- };
46
- export { l as LegacyMetadataTaxonomyField, l as default };
1
+ import messages from"../../../../messages.js";import{ComboboxWithApiPagination,ComboboxWithApiTreeView}from"@box/combobox-with-api";import{Field,getIn,useFormikContext}from"formik";import{useCallback}from"react";import{useIntl}from"react-intl";import{jsx}from"react/jsx-runtime";var LegacyMetadataTaxonomyField=({className,disableForm,fieldNamePrefix,label,portalElement,taxonomyOptionsFetcher,isMultilevelTaxonomyFieldEnabled,hasAccordion})=>{let{setFieldValue,values}=useFormikContext(),{metadata:{templateKey,scope}}=values,intl=useIntl(),fieldName=`${fieldNamePrefix}.value`,{key,optionsRules:{multiSelect,selectableLevels},levels}=getIn(values,fieldNamePrefix),isMultilevelTaxonomy=isMultilevelTaxonomyFieldEnabled&&selectableLevels?.some(level=>level>1),defaultFetcher=useCallback(input=>taxonomyOptionsFetcher(scope,templateKey,key,selectableLevels?.[0],input),[key,scope,selectableLevels,taxonomyOptionsFetcher,templateKey]),getPlaceholder=useCallback(selectedValues=>multiSelect||!selectedValues?.length?intl.formatMessage(messages.taxonomyPlaceholder):void 0,[multiSelect,intl]),handleValueChange=useCallback(value=>setFieldValue(fieldName,value),[setFieldValue,fieldName]);return jsx(`div`,{"data-testid":`${label}-field`,children:jsx(Field,{name:fieldName,children:({field})=>isMultilevelTaxonomy?jsx(ComboboxWithApiTreeView,{className,defaultFetcher,disabled:disableForm,hideLabel:hasAccordion,label,levels,multiselect:multiSelect,onValueChange:handleValueChange,placeholder:getPlaceholder(field.value),portalElement,selectableLevels,value:field.value}):jsx(ComboboxWithApiPagination,{className,defaultFetcher,disabled:disableForm,label:hasAccordion?void 0:label,multiselect:multiSelect,onValueChange:handleValueChange,placeholder:getPlaceholder(field.value),portalElement,value:field.value})})})};export{LegacyMetadataTaxonomyField,LegacyMetadataTaxonomyField as default};
@@ -1,11 +1 @@
1
- import { LegacyMetadataTaxonomyFieldAdvanced as e } from "./legacy-metadata-taxonomy-field-advanced.js";
2
- import { MetadataTaxonomyPickerFieldAdvanced as t } from "./picker/metadata-taxonomy-picker-field-advanced.js";
3
- import { jsx as n } from "react/jsx-runtime";
4
- var r = (r) => {
5
- let { isTaxonomyPickerEnabled: i, createTaxonomyItemsService: a } = r;
6
- return i && a ? /* @__PURE__ */ n(t, {
7
- ...r,
8
- createTaxonomyItemsService: a
9
- }) : (i && process.env.NODE_ENV !== "production" && console.error("[metadata-filter] isTaxonomyPickerEnabled is true but createTaxonomyItemsService was not provided; falling back to the legacy taxonomy field."), /* @__PURE__ */ n(e, { ...r }));
10
- };
11
- export { r as MetadataTaxonomyFieldAdvanced, r as default };
1
+ import{LegacyMetadataTaxonomyFieldAdvanced}from"./legacy-metadata-taxonomy-field-advanced.js";import{MetadataTaxonomyPickerFieldAdvanced}from"./picker/metadata-taxonomy-picker-field-advanced.js";import{jsx}from"react/jsx-runtime";var MetadataTaxonomyFieldAdvanced=props=>{let{isTaxonomyPickerEnabled,createTaxonomyItemsService}=props;return isTaxonomyPickerEnabled&&createTaxonomyItemsService?jsx(MetadataTaxonomyPickerFieldAdvanced,{...props,createTaxonomyItemsService}):(isTaxonomyPickerEnabled&&process.env.NODE_ENV!==`production`&&console.error(`[metadata-filter] isTaxonomyPickerEnabled is true but createTaxonomyItemsService was not provided; falling back to the legacy taxonomy field.`),jsx(LegacyMetadataTaxonomyFieldAdvanced,{...props}))};export{MetadataTaxonomyFieldAdvanced,MetadataTaxonomyFieldAdvanced as default};
@@ -1,11 +1 @@
1
- import { LegacyMetadataTaxonomyField as e } from "./legacy-metadata-taxonomy-field.js";
2
- import { MetadataTaxonomyPickerField as t } from "./picker/metadata-taxonomy-picker-field.js";
3
- import { jsx as n } from "react/jsx-runtime";
4
- var r = (r) => {
5
- let { isTaxonomyPickerEnabled: i, createTaxonomyItemsService: a } = r;
6
- return i && a ? /* @__PURE__ */ n(t, {
7
- ...r,
8
- createTaxonomyItemsService: a
9
- }) : (i && process.env.NODE_ENV !== "production" && console.error("[metadata-filter] isTaxonomyPickerEnabled is true but createTaxonomyItemsService was not provided; falling back to the legacy taxonomy field."), /* @__PURE__ */ n(e, { ...r }));
10
- };
11
- export { r as MetadataTaxonomyField, r as default };
1
+ import{LegacyMetadataTaxonomyField}from"./legacy-metadata-taxonomy-field.js";import{MetadataTaxonomyPickerField}from"./picker/metadata-taxonomy-picker-field.js";import{jsx}from"react/jsx-runtime";var MetadataTaxonomyField=props=>{let{isTaxonomyPickerEnabled,createTaxonomyItemsService}=props;return isTaxonomyPickerEnabled&&createTaxonomyItemsService?jsx(MetadataTaxonomyPickerField,{...props,createTaxonomyItemsService}):(isTaxonomyPickerEnabled&&process.env.NODE_ENV!==`production`&&console.error(`[metadata-filter] isTaxonomyPickerEnabled is true but createTaxonomyItemsService was not provided; falling back to the legacy taxonomy field.`),jsx(LegacyMetadataTaxonomyField,{...props}))};export{MetadataTaxonomyField,MetadataTaxonomyField as default};
@@ -1,84 +1 @@
1
- import e from "../../../../../messages.js";
2
- import { t } from "../../../../../../../chunks/advanced-filter-select.js";
3
- import { getTaxonomyPickerMode as n, mapFormValueToTaxonomyValues as r, mapLevelsToTaxonomyLevels as i, mapTaxonomyValuesToFormValue as a } from "./value-mapping.js";
4
- import { t as o } from "../../../../../../../chunks/metadata-taxonomy-field-advanced.module.js";
5
- import { createFieldValue as s, getInitialAdvancedFilterValue as c, getInputValue as l, isBlankOption as u } from "../utils.js";
6
- import { Field as d, getIn as f, useFormikContext as p } from "formik";
7
- import { useCallback as m, useMemo as h, useRef as g, useState as _ } from "react";
8
- import { useIntl as v } from "react-intl";
9
- import ee from "clsx";
10
- import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
11
- import { MetadataTaxonomyPicker as S } from "@box/metadata-taxonomy-picker";
12
- var C = ({ className: C, disableForm: w, fieldNamePrefix: T, label: E, portalElement: D, isMultilevelTaxonomyFieldEnabled: O, hasAccordion: k, isAdvancedFilterEnabled: A, onAdvancedFilterOptionChange: j, fieldAdvancedFilterOptions: M, filterOptionsMap: N, isModified: P, createTaxonomyItemsService: F }) => {
13
- let { setFieldValue: I, values: L } = p(), { metadata: { templateKey: R, scope: z } } = L, B = v(), V = `${T}.value`, { key: H, optionsRules: U, levels: W } = f(L, T), G = U?.selectableLevels, K = n(O, G), [q, J] = _(c(M, N)), [Y, X] = _(!1), Z = g([]), Q = h(() => F({
14
- scope: z,
15
- templateKey: R,
16
- fieldKey: H
17
- }), [
18
- F,
19
- z,
20
- R,
21
- H
22
- ]), $ = h(() => i(W, G), [W, G]), te = m((t) => t.length === 0 ? B.formatMessage(e.multiselectPlaceholder) : "", [B]), ne = m((e, t, n) => {
23
- J(e), j?.(V, e);
24
- let r = [];
25
- u(e) || (r = t.length ? t : Z.current);
26
- let i = s(r, e, A);
27
- n.setFieldValue(V, i);
28
- }, [
29
- V,
30
- A,
31
- j
32
- ]), re = h(() => ({ onOpenChange: (e) => {
33
- e && X(!1);
34
- } }), []), ie = m((e) => {
35
- let t = a(e, K);
36
- Z.current = t, I(V, s(t, q, A));
37
- }, [
38
- q,
39
- V,
40
- A,
41
- K,
42
- I
43
- ]);
44
- return /* @__PURE__ */ b("div", {
45
- "data-testid": `${E}-field`,
46
- children: /* @__PURE__ */ b(d, {
47
- name: V,
48
- children: ({ field: e, form: n }) => {
49
- let i = l(e.value, A), a = r(i);
50
- return /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(t, {
51
- disableForm: w ?? !1,
52
- fieldAdvancedFilterOptions: M,
53
- fieldNamePrefix: T,
54
- filterOptionsMap: N,
55
- isModified: P,
56
- label: E,
57
- onAdvancedFilterOptionChange: j,
58
- onOpenChange: X,
59
- onValueChange: (e) => ne(e, i, n),
60
- open: Y,
61
- portalElement: D,
62
- showLabel: !k,
63
- value: q
64
- }), !u(q) && /* @__PURE__ */ b("div", {
65
- className: ee(o.comboboxWrapper, w && o.disabled),
66
- children: /* @__PURE__ */ b(S, {
67
- containerClassName: C,
68
- disabled: w,
69
- eventService: re,
70
- itemsService: Q,
71
- levels: $,
72
- mode: K,
73
- multiSelect: !0,
74
- onValueChange: ie,
75
- placeholder: te(a),
76
- portalElement: D,
77
- value: a
78
- })
79
- })] });
80
- }
81
- })
82
- });
83
- };
84
- export { C as MetadataTaxonomyPickerFieldAdvanced, C as default };
1
+ import messages from"../../../../../messages.js";import{t as AdvancedFilterSelect}from"../../../../../../../chunks/advanced-filter-select.js";import{getTaxonomyPickerMode,mapFormValueToTaxonomyValues,mapLevelsToTaxonomyLevels,mapTaxonomyValuesToFormValue}from"./value-mapping.js";import{t as metadata_taxonomy_field_advanced_module_default}from"../../../../../../../chunks/metadata-taxonomy-field-advanced.module.js";import{createFieldValue,getInitialAdvancedFilterValue,getInputValue,isBlankOption}from"../utils.js";import{Field,getIn,useFormikContext}from"formik";import{useCallback,useMemo,useRef,useState}from"react";import{useIntl}from"react-intl";import clsx from"clsx";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import{MetadataTaxonomyPicker}from"@box/metadata-taxonomy-picker";var MetadataTaxonomyPickerFieldAdvanced=({className,disableForm,fieldNamePrefix,label,portalElement,isMultilevelTaxonomyFieldEnabled,hasAccordion,isAdvancedFilterEnabled,onAdvancedFilterOptionChange,fieldAdvancedFilterOptions,filterOptionsMap,isModified,createTaxonomyItemsService})=>{let{setFieldValue,values}=useFormikContext(),{metadata:{templateKey,scope}}=values,intl=useIntl(),fieldName=`${fieldNamePrefix}.value`,{key,optionsRules,levels}=getIn(values,fieldNamePrefix),selectableLevels=optionsRules?.selectableLevels,mode=getTaxonomyPickerMode(isMultilevelTaxonomyFieldEnabled,selectableLevels),[advancedFilterOption,setAdvancedFilterOption]=useState(getInitialAdvancedFilterValue(fieldAdvancedFilterOptions,filterOptionsMap)),[isSelectOpen,setIsSelectOpen]=useState(!1),lastValuesRef=useRef([]),itemsService=useMemo(()=>createTaxonomyItemsService({scope,templateKey,fieldKey:key}),[createTaxonomyItemsService,scope,templateKey,key]),pickerLevels=useMemo(()=>mapLevelsToTaxonomyLevels(levels,selectableLevels),[levels,selectableLevels]),getPlaceholder=useCallback(selectedValues=>selectedValues.length===0?intl.formatMessage(messages.multiselectPlaceholder):``,[intl]),handleAdvancedFilterOptionChange=useCallback((value,inputValue,form)=>{setAdvancedFilterOption(value),onAdvancedFilterOptionChange?.(fieldName,value);let valuesToUse=[];isBlankOption(value)||(valuesToUse=inputValue.length?inputValue:lastValuesRef.current);let newValue=createFieldValue(valuesToUse,value,isAdvancedFilterEnabled);form.setFieldValue(fieldName,newValue)},[fieldName,isAdvancedFilterEnabled,onAdvancedFilterOptionChange]),eventService=useMemo(()=>({onOpenChange:open=>{open&&setIsSelectOpen(!1)}}),[]),handleValueChange=useCallback(newValues=>{let mapped=mapTaxonomyValuesToFormValue(newValues,mode);lastValuesRef.current=mapped,setFieldValue(fieldName,createFieldValue(mapped,advancedFilterOption,isAdvancedFilterEnabled))},[advancedFilterOption,fieldName,isAdvancedFilterEnabled,mode,setFieldValue]);return jsx(`div`,{"data-testid":`${label}-field`,children:jsx(Field,{name:fieldName,children:({field,form})=>{let inputValue=getInputValue(field.value,isAdvancedFilterEnabled),pickerValue=mapFormValueToTaxonomyValues(inputValue);return jsxs(Fragment,{children:[jsx(AdvancedFilterSelect,{disableForm:disableForm??!1,fieldAdvancedFilterOptions,fieldNamePrefix,filterOptionsMap,isModified,label,onAdvancedFilterOptionChange,onOpenChange:setIsSelectOpen,onValueChange:value=>handleAdvancedFilterOptionChange(value,inputValue,form),open:isSelectOpen,portalElement,showLabel:!hasAccordion,value:advancedFilterOption}),!isBlankOption(advancedFilterOption)&&jsx(`div`,{className:clsx(metadata_taxonomy_field_advanced_module_default.comboboxWrapper,disableForm&&metadata_taxonomy_field_advanced_module_default.disabled),children:jsx(MetadataTaxonomyPicker,{containerClassName:className,disabled:disableForm,eventService,itemsService,levels:pickerLevels,mode,multiSelect:!0,onValueChange:handleValueChange,placeholder:getPlaceholder(pickerValue),portalElement,value:pickerValue})})]})}})})};export{MetadataTaxonomyPickerFieldAdvanced,MetadataTaxonomyPickerFieldAdvanced as default};
@@ -1,46 +1 @@
1
- import e from "../../../../../messages.js";
2
- import { getTaxonomyPickerMode as t, mapFormValueToTaxonomyValues as n, mapLevelsToTaxonomyLevels as r, mapTaxonomyValuesToFormValue as i } from "./value-mapping.js";
3
- import { Field as a, getIn as o, useFormikContext as s } from "formik";
4
- import { useCallback as c, useMemo as l } from "react";
5
- import { useIntl as u } from "react-intl";
6
- import { jsx as d } from "react/jsx-runtime";
7
- import { MetadataTaxonomyPicker as f } from "@box/metadata-taxonomy-picker";
8
- var p = ({ className: p, disableForm: m, fieldNamePrefix: h, label: g, portalElement: _, isMultilevelTaxonomyFieldEnabled: v, hasAccordion: y, createTaxonomyItemsService: b }) => {
9
- let { setFieldValue: x, values: S } = s(), { metadata: { templateKey: C, scope: w } } = S, T = u(), E = `${h}.value`, { key: D, optionsRules: { multiSelect: O, selectableLevels: k }, levels: A } = o(S, h), j = t(v, k), M = l(() => b({
10
- scope: w,
11
- templateKey: C,
12
- fieldKey: D
13
- }), [
14
- b,
15
- w,
16
- C,
17
- D
18
- ]), N = l(() => r(A, k), [A, k]), P = c((t) => O || !t.length ? T.formatMessage(e.taxonomyPlaceholder) : void 0, [O, T]), F = c((e) => x(E, i(e, j)), [
19
- x,
20
- E,
21
- j
22
- ]);
23
- return /* @__PURE__ */ d("div", {
24
- "data-testid": `${g}-field`,
25
- children: /* @__PURE__ */ d(a, {
26
- name: E,
27
- children: ({ field: e }) => {
28
- let t = n(e.value);
29
- return /* @__PURE__ */ d(f, {
30
- containerClassName: p,
31
- disabled: m,
32
- itemsService: M,
33
- label: y ? void 0 : g,
34
- levels: N,
35
- mode: j,
36
- multiSelect: O,
37
- onValueChange: F,
38
- placeholder: P(t),
39
- portalElement: _,
40
- value: t
41
- });
42
- }
43
- })
44
- });
45
- };
46
- export { p as MetadataTaxonomyPickerField, p as default };
1
+ import messages from"../../../../../messages.js";import{getTaxonomyPickerMode,mapFormValueToTaxonomyValues,mapLevelsToTaxonomyLevels,mapTaxonomyValuesToFormValue}from"./value-mapping.js";import{Field,getIn,useFormikContext}from"formik";import{useCallback,useMemo}from"react";import{useIntl}from"react-intl";import{jsx}from"react/jsx-runtime";import{MetadataTaxonomyPicker}from"@box/metadata-taxonomy-picker";var MetadataTaxonomyPickerField=({className,disableForm,fieldNamePrefix,label,portalElement,isMultilevelTaxonomyFieldEnabled,hasAccordion,createTaxonomyItemsService})=>{let{setFieldValue,values}=useFormikContext(),{metadata:{templateKey,scope}}=values,intl=useIntl(),fieldName=`${fieldNamePrefix}.value`,{key,optionsRules:{multiSelect,selectableLevels},levels}=getIn(values,fieldNamePrefix),mode=getTaxonomyPickerMode(isMultilevelTaxonomyFieldEnabled,selectableLevels),itemsService=useMemo(()=>createTaxonomyItemsService({scope,templateKey,fieldKey:key}),[createTaxonomyItemsService,scope,templateKey,key]),pickerLevels=useMemo(()=>mapLevelsToTaxonomyLevels(levels,selectableLevels),[levels,selectableLevels]),getPlaceholder=useCallback(selectedValues=>multiSelect||!selectedValues.length?intl.formatMessage(messages.taxonomyPlaceholder):void 0,[multiSelect,intl]),handleValueChange=useCallback(newValues=>setFieldValue(fieldName,mapTaxonomyValuesToFormValue(newValues,mode)),[setFieldValue,fieldName,mode]);return jsx(`div`,{"data-testid":`${label}-field`,children:jsx(Field,{name:fieldName,children:({field})=>{let pickerValue=mapFormValueToTaxonomyValues(field.value);return jsx(MetadataTaxonomyPicker,{containerClassName:className,disabled:disableForm,itemsService,label:hasAccordion?void 0:label,levels:pickerLevels,mode,multiSelect,onValueChange:handleValueChange,placeholder:getPlaceholder(pickerValue),portalElement,value:pickerValue})}})})};export{MetadataTaxonomyPickerField,MetadataTaxonomyPickerField as default};
@@ -1,32 +1 @@
1
- import { TaxonomyPickerMode as e } from "@box/metadata-taxonomy-picker";
2
- function t(e) {
3
- return Array.isArray(e) ? e.map((e) => ({
4
- id: e.value,
5
- displayName: e.displayValue ?? "",
6
- level: e.level,
7
- ancestors: e.ancestors
8
- })) : [];
9
- }
10
- function n(t, n) {
11
- return n === e.SingleLevel ? t.map((e) => ({
12
- value: e.id,
13
- displayValue: e.displayName
14
- })) : t.map((e) => ({
15
- value: e.id,
16
- displayValue: e.displayName,
17
- level: e.level,
18
- selectable: !0,
19
- ancestors: e.ancestors
20
- }));
21
- }
22
- function r(t, n) {
23
- return t && n?.some((e) => e > 1) ? e.MultiLevel : e.SingleLevel;
24
- }
25
- function i(e, t) {
26
- return e?.map((e) => ({
27
- level: e.level,
28
- displayName: e.displayName,
29
- selectable: !!t?.includes(e.level)
30
- })) ?? [];
31
- }
32
- export { r as getTaxonomyPickerMode, t as mapFormValueToTaxonomyValues, i as mapLevelsToTaxonomyLevels, n as mapTaxonomyValuesToFormValue };
1
+ import{TaxonomyPickerMode}from"@box/metadata-taxonomy-picker";function mapFormValueToTaxonomyValues(value){return Array.isArray(value)?value.map(option=>({id:option.value,displayName:option.displayValue??``,level:option.level,ancestors:option.ancestors})):[]}function mapTaxonomyValuesToFormValue(values,mode){return mode===TaxonomyPickerMode.SingleLevel?values.map(value=>({value:value.id,displayValue:value.displayName})):values.map(value=>({value:value.id,displayValue:value.displayName,level:value.level,selectable:!0,ancestors:value.ancestors}))}function getTaxonomyPickerMode(isMultilevelTaxonomyFieldEnabled,selectableLevels){return isMultilevelTaxonomyFieldEnabled&&selectableLevels?.some(level=>level>1)?TaxonomyPickerMode.MultiLevel:TaxonomyPickerMode.SingleLevel}function mapLevelsToTaxonomyLevels(levels,selectableLevels){return levels?.map(level=>({level:level.level,displayName:level.displayName,selectable:!!selectableLevels?.includes(level.level)}))??[]}export{getTaxonomyPickerMode,mapFormValueToTaxonomyValues,mapLevelsToTaxonomyLevels,mapTaxonomyValuesToFormValue};
@@ -1,8 +1 @@
1
- import { t as e } from "../../../../../../chunks/types.js";
2
- var t = /* @__PURE__ */ function(e) {
3
- return e.MATCH_ANY = "matchAny", e.MATCH_ALL = "matchAll", e.IS_BLANK = "isBlank", e.IS_NOT_BLANK = "isNotBlank", e;
4
- }({}), n = (t, n) => t && n?.some(([e]) => e === t) ? t : e.MATCH_ANY, r = (t) => t === e.IS_BLANK || t === e.IS_NOT_BLANK, i = (e, t) => Array.isArray(e) ? e : t && typeof e == "object" && e && e.value || [], a = (e, t, n) => n ? {
5
- value: r(t) ? [] : e,
6
- advancedFilterOption: t
7
- } : e;
8
- export { t as TaxonomyAdvancedFilterOption, a as createFieldValue, n as getInitialAdvancedFilterValue, i as getInputValue, r as isBlankOption };
1
+ import{t as FilterKeyTypes}from"../../../../../../chunks/types.js";var TaxonomyAdvancedFilterOption=function(TaxonomyAdvancedFilterOption){return TaxonomyAdvancedFilterOption.MATCH_ANY=`matchAny`,TaxonomyAdvancedFilterOption.MATCH_ALL=`matchAll`,TaxonomyAdvancedFilterOption.IS_BLANK=`isBlank`,TaxonomyAdvancedFilterOption.IS_NOT_BLANK=`isNotBlank`,TaxonomyAdvancedFilterOption}({}),getInitialAdvancedFilterValue=(fieldAdvancedFilterOptions,filterOptionsMap)=>fieldAdvancedFilterOptions&&filterOptionsMap?.some(([key])=>key===fieldAdvancedFilterOptions)?fieldAdvancedFilterOptions:FilterKeyTypes.MATCH_ANY,isBlankOption=advancedFilterOption=>advancedFilterOption===FilterKeyTypes.IS_BLANK||advancedFilterOption===FilterKeyTypes.IS_NOT_BLANK,getInputValue=(fieldValue,isAdvancedFilterEnabled)=>Array.isArray(fieldValue)?fieldValue:isAdvancedFilterEnabled&&typeof fieldValue==`object`&&fieldValue&&fieldValue.value||[],createFieldValue=(inputValue,advancedFilterOption,isAdvancedFilterEnabled)=>isAdvancedFilterEnabled?{value:isBlankOption(advancedFilterOption)?[]:inputValue,advancedFilterOption}:inputValue;export{TaxonomyAdvancedFilterOption,createFieldValue,getInitialAdvancedFilterValue,getInputValue,isBlankOption};
@@ -1,2 +1 @@
1
- import { t as e } from "../../../../../../chunks/advanced-filter-select.js";
2
- export { e as AdvancedFilterSelect, e as default };
1
+ import{t as AdvancedFilterSelect}from"../../../../../../chunks/advanced-filter-select.js";export{AdvancedFilterSelect,AdvancedFilterSelect as default};
@@ -1,2 +1 @@
1
- import { t as e } from "../../../../../../chunks/advanced-filter-select.js";
2
- export { e as AdvancedFilterSelect };
1
+ import{t as AdvancedFilterSelect}from"../../../../../../chunks/advanced-filter-select.js";export{AdvancedFilterSelect};
@@ -1,27 +1 @@
1
- import { t as e } from "../../../../chunks/types.js";
2
- import t from "../../messages.js";
3
- import { advancedFilterFieldTypes as n, filterFieldTypes as r } from "./filter-field-types.js";
4
- var i = (n, r, i, a) => {
5
- if (n.key === "modified_at" && r) return [
6
- [e.SELECT_FILTER_TYPE, i.formatMessage(t.selectAdvancedFilterType)],
7
- [e.IS_NOT_BLANK, i.formatMessage(t.modifiedAtFilterAnyTime)],
8
- [e.TODAY, i.formatMessage(t.relativeDateFilterToday)],
9
- [e.PAST, i.formatMessage(t.relativeDateFilterPast)],
10
- [e.OLDER_THAN, i.formatMessage(t.relativeDateFilterOlderThan)],
11
- [e.CUSTOM_RANGE, i.formatMessage(t.modifiedAtFilterCustomRange)]
12
- ];
13
- if (n.type === "taxonomy") {
14
- let t = n.optionsRules?.multiSelect ? "taxonomyMultiSelect" : "taxonomySingleSelect", r = a?.[t] || [];
15
- return n.levels?.length === 1 ? r.filter(([t]) => t !== e.MATCH_AT_OR_WITHIN && t !== e.IS_NOT_AT_OR_WITHIN) : r;
16
- }
17
- return a?.[n.type] || [];
18
- }, a = (e, t, i, a) => e.type === "taxonomy" ? i && t ? n.taxonomy : r.taxonomy : a[e.type] || r[e.type], o = ({ field: e, isAdvancedFilterEnabled: t, isAdvancedTaxonomy: o, intl: s, filterOptionsMap: c }) => {
19
- let l = t ? n : r, u = a(e, t, o, l);
20
- return {
21
- fieldTypesMap: l,
22
- MetadataFilterField: u,
23
- showField: !!u && !e.hidden,
24
- getFilterOptionsForField: () => i(e, t, s, c)
25
- };
26
- };
27
- export { o as processMetadataField };
1
+ import{t as FilterKeyTypes}from"../../../../chunks/types.js";import messages from"../../messages.js";import{advancedFilterFieldTypes,filterFieldTypes}from"./filter-field-types.js";var getFilterOptions=(field,isAdvancedFilterEnabled,intl,filterOptionsMap)=>{if(field.key===`modified_at`&&isAdvancedFilterEnabled)return[[FilterKeyTypes.SELECT_FILTER_TYPE,intl.formatMessage(messages.selectAdvancedFilterType)],[FilterKeyTypes.IS_NOT_BLANK,intl.formatMessage(messages.modifiedAtFilterAnyTime)],[FilterKeyTypes.TODAY,intl.formatMessage(messages.relativeDateFilterToday)],[FilterKeyTypes.PAST,intl.formatMessage(messages.relativeDateFilterPast)],[FilterKeyTypes.OLDER_THAN,intl.formatMessage(messages.relativeDateFilterOlderThan)],[FilterKeyTypes.CUSTOM_RANGE,intl.formatMessage(messages.modifiedAtFilterCustomRange)]];if(field.type===`taxonomy`){let taxonomyKey=field.optionsRules?.multiSelect?`taxonomyMultiSelect`:`taxonomySingleSelect`,options=filterOptionsMap?.[taxonomyKey]||[];return field.levels?.length===1?options.filter(([key])=>key!==FilterKeyTypes.MATCH_AT_OR_WITHIN&&key!==FilterKeyTypes.IS_NOT_AT_OR_WITHIN):options}return filterOptionsMap?.[field.type]||[]},getMetadataFilterField=(field,isAdvancedFilterEnabled,isAdvancedTaxonomy,fieldTypesMap)=>field.type===`taxonomy`?isAdvancedTaxonomy&&isAdvancedFilterEnabled?advancedFilterFieldTypes.taxonomy:filterFieldTypes.taxonomy:fieldTypesMap[field.type]||filterFieldTypes[field.type],processMetadataField=({field,isAdvancedFilterEnabled,isAdvancedTaxonomy,intl,filterOptionsMap})=>{let fieldTypesMap=isAdvancedFilterEnabled?advancedFilterFieldTypes:filterFieldTypes,MetadataFilterField=getMetadataFilterField(field,isAdvancedFilterEnabled,isAdvancedTaxonomy,fieldTypesMap);return{fieldTypesMap,MetadataFilterField,showField:!!MetadataFilterField&&!field.hidden,getFilterOptionsForField:()=>getFilterOptions(field,isAdvancedFilterEnabled,intl,filterOptionsMap)}};export{processMetadataField};