@wordpress/dataviews 9.0.1-next.a730c9c8c.0 → 9.1.1-next.233ccab9b.0

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 (100) hide show
  1. package/CHANGELOG.md +19 -3
  2. package/README.md +4 -2
  3. package/build/components/dataviews/index.js +4 -6
  4. package/build/components/dataviews/index.js.map +1 -1
  5. package/build/components/dataviews-filters/filters-toggled.js +32 -0
  6. package/build/components/dataviews-filters/filters-toggled.js.map +1 -0
  7. package/build/components/dataviews-filters/filters.js +73 -0
  8. package/build/components/dataviews-filters/filters.js.map +1 -0
  9. package/build/components/dataviews-filters/index.js +26 -190
  10. package/build/components/dataviews-filters/index.js.map +1 -1
  11. package/build/components/dataviews-filters/toggle.js +99 -0
  12. package/build/components/dataviews-filters/toggle.js.map +1 -0
  13. package/build/components/dataviews-filters/use-filters.js +63 -0
  14. package/build/components/dataviews-filters/use-filters.js.map +1 -0
  15. package/build/components/dataviews-picker/index.js +4 -6
  16. package/build/components/dataviews-picker/index.js.map +1 -1
  17. package/build/components/dataviews-view-config/index.js +22 -3
  18. package/build/components/dataviews-view-config/index.js.map +1 -1
  19. package/build/dataform-controls/array.js +110 -24
  20. package/build/dataform-controls/array.js.map +1 -1
  21. package/build/dataviews-layouts/picker-grid/index.js +4 -1
  22. package/build/dataviews-layouts/picker-grid/index.js.map +1 -1
  23. package/build/field-types/array.js +0 -6
  24. package/build/field-types/array.js.map +1 -1
  25. package/build/index.js +7 -0
  26. package/build/index.js.map +1 -1
  27. package/build/types.js.map +1 -1
  28. package/build/validation.js +18 -1
  29. package/build/validation.js.map +1 -1
  30. package/build-module/components/dataviews/index.js +5 -7
  31. package/build-module/components/dataviews/index.js.map +1 -1
  32. package/build-module/components/dataviews-filters/filters-toggled.js +24 -0
  33. package/build-module/components/dataviews-filters/filters-toggled.js.map +1 -0
  34. package/build-module/components/dataviews-filters/filters.js +65 -0
  35. package/build-module/components/dataviews-filters/filters.js.map +1 -0
  36. package/build-module/components/dataviews-filters/index.js +4 -186
  37. package/build-module/components/dataviews-filters/index.js.map +1 -1
  38. package/build-module/components/dataviews-filters/toggle.js +91 -0
  39. package/build-module/components/dataviews-filters/toggle.js.map +1 -0
  40. package/build-module/components/dataviews-filters/use-filters.js +56 -0
  41. package/build-module/components/dataviews-filters/use-filters.js.map +1 -0
  42. package/build-module/components/dataviews-picker/index.js +5 -7
  43. package/build-module/components/dataviews-picker/index.js.map +1 -1
  44. package/build-module/components/dataviews-view-config/index.js +22 -3
  45. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  46. package/build-module/dataform-controls/array.js +112 -26
  47. package/build-module/dataform-controls/array.js.map +1 -1
  48. package/build-module/dataviews-layouts/picker-grid/index.js +4 -1
  49. package/build-module/dataviews-layouts/picker-grid/index.js.map +1 -1
  50. package/build-module/field-types/array.js +0 -6
  51. package/build-module/field-types/array.js.map +1 -1
  52. package/build-module/index.js +1 -0
  53. package/build-module/index.js.map +1 -1
  54. package/build-module/types.js.map +1 -1
  55. package/build-module/validation.js +18 -1
  56. package/build-module/validation.js.map +1 -1
  57. package/build-types/components/dataform/stories/index.story.d.ts.map +1 -1
  58. package/build-types/components/dataviews/index.d.ts +3 -2
  59. package/build-types/components/dataviews/index.d.ts.map +1 -1
  60. package/build-types/components/dataviews-filters/filters-toggled.d.ts +5 -0
  61. package/build-types/components/dataviews-filters/filters-toggled.d.ts.map +1 -0
  62. package/build-types/components/dataviews-filters/filters.d.ts +6 -0
  63. package/build-types/components/dataviews-filters/filters.d.ts.map +1 -0
  64. package/build-types/components/dataviews-filters/index.d.ts +4 -8
  65. package/build-types/components/dataviews-filters/index.d.ts.map +1 -1
  66. package/build-types/components/dataviews-filters/toggle.d.ts +3 -0
  67. package/build-types/components/dataviews-filters/toggle.d.ts.map +1 -0
  68. package/build-types/components/dataviews-filters/use-filters.d.ts +4 -0
  69. package/build-types/components/dataviews-filters/use-filters.d.ts.map +1 -0
  70. package/build-types/components/dataviews-picker/index.d.ts +3 -2
  71. package/build-types/components/dataviews-picker/index.d.ts.map +1 -1
  72. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  73. package/build-types/dataform-controls/array.d.ts.map +1 -1
  74. package/build-types/dataviews-layouts/picker-grid/index.d.ts.map +1 -1
  75. package/build-types/field-types/array.d.ts.map +1 -1
  76. package/build-types/index.d.ts +1 -0
  77. package/build-types/index.d.ts.map +1 -1
  78. package/build-types/types.d.ts +2 -1
  79. package/build-types/types.d.ts.map +1 -1
  80. package/build-types/validation.d.ts.map +1 -1
  81. package/build-wp/index.js +899 -408
  82. package/package.json +15 -15
  83. package/src/components/dataform/stories/index.story.tsx +73 -1
  84. package/src/components/dataviews/index.tsx +8 -14
  85. package/src/components/dataviews/stories/index.story.tsx +1 -1
  86. package/src/components/dataviews-filters/filters-toggled.tsx +20 -0
  87. package/src/components/dataviews-filters/filters.tsx +73 -0
  88. package/src/components/dataviews-filters/index.tsx +4 -246
  89. package/src/components/dataviews-filters/toggle.tsx +118 -0
  90. package/src/components/dataviews-filters/use-filters.ts +73 -0
  91. package/src/components/dataviews-picker/index.tsx +8 -14
  92. package/src/components/dataviews-view-config/index.tsx +18 -3
  93. package/src/dataform-controls/array.tsx +137 -40
  94. package/src/dataviews-layouts/picker-grid/index.tsx +15 -8
  95. package/src/field-types/array.tsx +0 -8
  96. package/src/index.ts +1 -0
  97. package/src/test/validation.ts +192 -0
  98. package/src/types.ts +2 -1
  99. package/src/validation.ts +30 -0
  100. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["FormTokenField","useCallback","useMemo","jsx","_jsx","ArrayControl","data","field","onChange","hideLabelFromVision","_elements$map","label","placeholder","elements","getValue","setValue","value","item","findElementByValue","suggestionValue","find","suggestion","findElementByLabel","suggestionLabel","arrayValue","Array","isArray","map","token","tokenLabel","onChangeControl","tokens","stringTokens","tokenByLabel","undefined","suggestions","__experimentalExpandOnFocus","length","__next40pxDefaultSize","__nextHasNoMarginBottom"],"sources":["@wordpress/dataviews/src/dataform-controls/array.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { FormTokenField } from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\n\nexport default function ArrayControl< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\tconst { label, placeholder, elements, getValue, setValue } = field;\n\tconst value = getValue( { item: data } );\n\n\tconst findElementByValue = useCallback(\n\t\t( suggestionValue: string ) => {\n\t\t\treturn elements?.find(\n\t\t\t\t( suggestion ) => suggestion.value === suggestionValue\n\t\t\t);\n\t\t},\n\t\t[ elements ]\n\t);\n\n\tconst findElementByLabel = useCallback(\n\t\t( suggestionLabel: string ) => {\n\t\t\treturn elements?.find(\n\t\t\t\t( suggestion ) => suggestion.label === suggestionLabel\n\t\t\t);\n\t\t},\n\t\t[ elements ]\n\t);\n\n\t// Ensure value is an array\n\tconst arrayValue = useMemo(\n\t\t() =>\n\t\t\tArray.isArray( value )\n\t\t\t\t? value.map( ( token ) => {\n\t\t\t\t\t\tconst tokenLabel = findElementByValue( token )?.label;\n\t\t\t\t\t\treturn tokenLabel || token;\n\t\t\t\t } )\n\t\t\t\t: [],\n\t\t[ value, findElementByValue ]\n\t);\n\n\tconst onChangeControl = useCallback(\n\t\t( tokens: ( string | { value: string } )[] ) => {\n\t\t\t// Convert TokenItem objects to strings\n\t\t\tconst stringTokens = tokens.map( ( token ) => {\n\t\t\t\tif ( typeof token !== 'string' ) {\n\t\t\t\t\treturn token.value;\n\t\t\t\t}\n\n\t\t\t\tconst tokenByLabel = findElementByLabel( token );\n\n\t\t\t\treturn tokenByLabel?.value || token;\n\t\t\t} );\n\n\t\t\tonChange( setValue( { item: data, value: stringTokens } ) );\n\t\t},\n\t\t[ onChange, setValue, data, findElementByLabel ]\n\t);\n\n\treturn (\n\t\t<FormTokenField\n\t\t\tlabel={ hideLabelFromVision ? undefined : label }\n\t\t\tvalue={ arrayValue }\n\t\t\tonChange={ onChangeControl }\n\t\t\tplaceholder={ placeholder }\n\t\t\tsuggestions={\n\t\t\t\telements?.map( ( suggestion ) => suggestion.label ) ?? []\n\t\t\t}\n\t\t\t__experimentalExpandOnFocus={ elements && elements.length > 0 }\n\t\t\t__next40pxDefaultSize\n\t\t\t__nextHasNoMarginBottom\n\t\t/>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,cAAc,QAAQ,uBAAuB;AACtD,SAASC,WAAW,EAAEC,OAAO,QAAQ,oBAAoB;;AAEzD;AACA;AACA;AAFA,SAAAC,GAAA,IAAAC,IAAA;AAKA,eAAe,SAASC,YAAYA,CAAU;EAC7CC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC;AAC6B,CAAC,EAAG;EAAA,IAAAC,aAAA;EACjC,MAAM;IAAEC,KAAK;IAAEC,WAAW;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC;EAAS,CAAC,GAAGR,KAAK;EAClE,MAAMS,KAAK,GAAGF,QAAQ,CAAE;IAAEG,IAAI,EAAEX;EAAK,CAAE,CAAC;EAExC,MAAMY,kBAAkB,GAAGjB,WAAW,CACnCkB,eAAuB,IAAM;IAC9B,OAAON,QAAQ,EAAEO,IAAI,CAClBC,UAAU,IAAMA,UAAU,CAACL,KAAK,KAAKG,eACxC,CAAC;EACF,CAAC,EACD,CAAEN,QAAQ,CACX,CAAC;EAED,MAAMS,kBAAkB,GAAGrB,WAAW,CACnCsB,eAAuB,IAAM;IAC9B,OAAOV,QAAQ,EAAEO,IAAI,CAClBC,UAAU,IAAMA,UAAU,CAACV,KAAK,KAAKY,eACxC,CAAC;EACF,CAAC,EACD,CAAEV,QAAQ,CACX,CAAC;;EAED;EACA,MAAMW,UAAU,GAAGtB,OAAO,CACzB,MACCuB,KAAK,CAACC,OAAO,CAAEV,KAAM,CAAC,GACnBA,KAAK,CAACW,GAAG,CAAIC,KAAK,IAAM;IACxB,MAAMC,UAAU,GAAGX,kBAAkB,CAAEU,KAAM,CAAC,EAAEjB,KAAK;IACrD,OAAOkB,UAAU,IAAID,KAAK;EAC1B,CAAE,CAAC,GACH,EAAE,EACN,CAAEZ,KAAK,EAAEE,kBAAkB,CAC5B,CAAC;EAED,MAAMY,eAAe,GAAG7B,WAAW,CAChC8B,MAAwC,IAAM;IAC/C;IACA,MAAMC,YAAY,GAAGD,MAAM,CAACJ,GAAG,CAAIC,KAAK,IAAM;MAC7C,IAAK,OAAOA,KAAK,KAAK,QAAQ,EAAG;QAChC,OAAOA,KAAK,CAACZ,KAAK;MACnB;MAEA,MAAMiB,YAAY,GAAGX,kBAAkB,CAAEM,KAAM,CAAC;MAEhD,OAAOK,YAAY,EAAEjB,KAAK,IAAIY,KAAK;IACpC,CAAE,CAAC;IAEHpB,QAAQ,CAAEO,QAAQ,CAAE;MAAEE,IAAI,EAAEX,IAAI;MAAEU,KAAK,EAAEgB;IAAa,CAAE,CAAE,CAAC;EAC5D,CAAC,EACD,CAAExB,QAAQ,EAAEO,QAAQ,EAAET,IAAI,EAAEgB,kBAAkB,CAC/C,CAAC;EAED,oBACClB,IAAA,CAACJ,cAAc;IACdW,KAAK,EAAGF,mBAAmB,GAAGyB,SAAS,GAAGvB,KAAO;IACjDK,KAAK,EAAGQ,UAAY;IACpBhB,QAAQ,EAAGsB,eAAiB;IAC5BlB,WAAW,EAAGA,WAAa;IAC3BuB,WAAW,GAAAzB,aAAA,GACVG,QAAQ,EAAEc,GAAG,CAAIN,UAAU,IAAMA,UAAU,CAACV,KAAM,CAAC,cAAAD,aAAA,cAAAA,aAAA,GAAI,EACvD;IACD0B,2BAA2B,EAAGvB,QAAQ,IAAIA,QAAQ,CAACwB,MAAM,GAAG,CAAG;IAC/DC,qBAAqB;IACrBC,uBAAuB;EAAA,CACvB,CAAC;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["deepMerge","privateApis","useCallback","useMemo","useState","_n","sprintf","unlock","jsx","_jsx","ValidatedFormTokenField","ArrayControl","data","field","onChange","hideLabelFromVision","label","placeholder","elements","getValue","setValue","value","item","customValidity","setCustomValidity","undefined","arrayValueAsElements","Array","isArray","map","token","element","find","suggestion","validateTokens","tokens","tokenValues","isValid","invalidTokens","filter","tokenValue","some","length","type","message","join","custom","result","onChangeControl","valueTokens","required","onValidate","suggestions","__experimentalValidateInput","__experimentalExpandOnFocus","__experimentalShowHowTo","displayTransform","el","__experimentalRenderItem","children"],"sources":["@wordpress/dataviews/src/dataform-controls/array.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport deepMerge from 'deepmerge';\n\n/**\n * WordPress dependencies\n */\nimport { privateApis } from '@wordpress/components';\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { _n, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../types';\nimport { unlock } from '../lock-unlock';\n\nconst { ValidatedFormTokenField } = unlock( privateApis );\n\nexport default function ArrayControl< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n}: DataFormControlProps< Item > ) {\n\tconst { label, placeholder, elements, getValue, setValue } = field;\n\tconst value = getValue( { item: data } );\n\n\tconst [ customValidity, setCustomValidity ] = useState<\n\t\t| {\n\t\t\t\ttype: 'validating' | 'valid' | 'invalid';\n\t\t\t\tmessage: string;\n\t\t }\n\t\t| undefined\n\t>( undefined );\n\n\t// Convert stored values to element objects for the token field\n\tconst arrayValueAsElements = useMemo(\n\t\t() =>\n\t\t\tArray.isArray( value )\n\t\t\t\t? value.map( ( token ) => {\n\t\t\t\t\t\tconst element = elements?.find(\n\t\t\t\t\t\t\t( suggestion ) => suggestion.value === token\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn element || { value: token, label: token };\n\t\t\t\t } )\n\t\t\t\t: [],\n\t\t[ value, elements ]\n\t);\n\n\tconst validateTokens = useCallback(\n\t\t( tokens: ( string | { value: string; label?: string } )[] ) => {\n\t\t\t// Extract actual values from tokens for validation\n\t\t\tconst tokenValues = tokens.map( ( token ) => {\n\t\t\t\tif ( typeof token === 'object' && 'value' in token ) {\n\t\t\t\t\treturn token.value;\n\t\t\t\t}\n\t\t\t\treturn token;\n\t\t\t} );\n\n\t\t\t// First, check if elements validation is required and any tokens are invalid\n\t\t\tif ( field.isValid?.elements && elements ) {\n\t\t\t\tconst invalidTokens = tokenValues.filter( ( tokenValue ) => {\n\t\t\t\t\treturn ! elements.some(\n\t\t\t\t\t\t( element ) => element.value === tokenValue\n\t\t\t\t\t);\n\t\t\t\t} );\n\n\t\t\t\tif ( invalidTokens.length > 0 ) {\n\t\t\t\t\tsetCustomValidity( {\n\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\tmessage: sprintf(\n\t\t\t\t\t\t\t/* translators: %s: list of invalid tokens */\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'Please select from the available options: %s is invalid.',\n\t\t\t\t\t\t\t\t'Please select from the available options: %s are invalid.',\n\t\t\t\t\t\t\t\tinvalidTokens.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tinvalidTokens.join( ', ' )\n\t\t\t\t\t\t),\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Then check custom validation if provided.\n\t\t\tif ( field.isValid?.custom ) {\n\t\t\t\tconst result = field.isValid?.custom?.(\n\t\t\t\t\tdeepMerge(\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tsetValue( {\n\t\t\t\t\t\t\titem: data,\n\t\t\t\t\t\t\tvalue: tokenValues,\n\t\t\t\t\t\t} ) as Partial< Item >\n\t\t\t\t\t),\n\t\t\t\t\tfield\n\t\t\t\t);\n\n\t\t\t\tif ( result ) {\n\t\t\t\t\tsetCustomValidity( {\n\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\tmessage: result,\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If no validation errors, clear custom validity\n\t\t\tsetCustomValidity( undefined );\n\t\t},\n\t\t[ elements, data, field, setValue ]\n\t);\n\n\tconst onChangeControl = useCallback(\n\t\t( tokens: ( string | { value: string; label?: string } )[] ) => {\n\t\t\tconst valueTokens = tokens.map( ( token ) => {\n\t\t\t\tif ( typeof token === 'object' && 'value' in token ) {\n\t\t\t\t\treturn token.value;\n\t\t\t\t}\n\t\t\t\t// If it's a string, it's either a new suggestion value or user input\n\t\t\t\treturn token;\n\t\t\t} );\n\n\t\t\tonChange( setValue( { item: data, value: valueTokens } ) );\n\t\t},\n\t\t[ onChange, setValue, data ]\n\t);\n\n\treturn (\n\t\t<ValidatedFormTokenField\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tonValidate={ validateTokens }\n\t\t\tcustomValidity={ customValidity }\n\t\t\tlabel={ hideLabelFromVision ? undefined : label }\n\t\t\tvalue={ arrayValueAsElements }\n\t\t\tonChange={ onChangeControl }\n\t\t\tplaceholder={ placeholder }\n\t\t\tsuggestions={ elements?.map( ( element ) => element.value ) }\n\t\t\t__experimentalValidateInput={ ( token: string ) => {\n\t\t\t\t// If elements validation is required, check if token is valid\n\t\t\t\tif ( field.isValid?.elements && elements ) {\n\t\t\t\t\treturn elements.some(\n\t\t\t\t\t\t( element ) =>\n\t\t\t\t\t\t\telement.value === token || element.label === token\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// For non-elements validation, allow all tokens\n\t\t\t\treturn true;\n\t\t\t} }\n\t\t\t__experimentalExpandOnFocus={ elements && elements.length > 0 }\n\t\t\t__experimentalShowHowTo={ ! field.isValid?.elements }\n\t\t\tdisplayTransform={ ( token: any ) => {\n\t\t\t\t// For existing tokens (element objects), display their label\n\t\t\t\tif ( typeof token === 'object' && 'label' in token ) {\n\t\t\t\t\treturn token.label;\n\t\t\t\t}\n\t\t\t\t// For suggestions (value strings), find the corresponding element and show its label\n\t\t\t\tif ( typeof token === 'string' && elements ) {\n\t\t\t\t\tconst element = elements.find(\n\t\t\t\t\t\t( el ) => el.value === token\n\t\t\t\t\t);\n\t\t\t\t\treturn element?.label || token;\n\t\t\t\t}\n\t\t\t\treturn token;\n\t\t\t} }\n\t\t\t__experimentalRenderItem={ ( { item }: { item: any } ) => {\n\t\t\t\t// Custom rendering for suggestion items (item is a value string)\n\t\t\t\tif ( typeof item === 'string' && elements ) {\n\t\t\t\t\tconst element = elements.find(\n\t\t\t\t\t\t( el ) => el.value === item\n\t\t\t\t\t);\n\t\t\t\t\treturn <span>{ element?.label || item }</span>;\n\t\t\t\t}\n\t\t\t\treturn <span>{ item }</span>;\n\t\t\t} }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -56,6 +56,9 @@ function GridItem({
56
56
  field: titleField
57
57
  }) : null;
58
58
  return /*#__PURE__*/_jsxs(Composite.Item, {
59
+ "aria-label": titleField ? titleField.getValue({
60
+ item
61
+ }) || __('(no title)') : undefined,
59
62
  render: ({
60
63
  children,
61
64
  ...props
@@ -91,7 +94,7 @@ function GridItem({
91
94
  disabled: false,
92
95
  "aria-hidden": true,
93
96
  tabIndex: -1
94
- }), /*#__PURE__*/_jsx(HStack, {
97
+ }), showTitle && /*#__PURE__*/_jsx(HStack, {
95
98
  justify: "space-between",
96
99
  className: "dataviews-view-picker-grid__title-actions",
97
100
  children: /*#__PURE__*/_jsx("div", {
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","__experimentalHStack","HStack","__experimentalVStack","VStack","Spinner","Flex","FlexItem","privateApis","componentsPrivateApis","Composite","__","sprintf","useInstanceId","useContext","unlock","DataViewsSelectionCheckbox","DataViewsContext","useIsMultiselectPicker","GridItems","Badge","getDataByGroup","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","GridItem","view","multiselect","selection","onChangeSelection","getItemId","item","mediaField","titleField","descriptionField","regularFields","badgeFields","config","posinset","setsize","showTitle","showMedia","showDescription","id","isSelected","includes","renderedMediaField","render","field","renderedTitleField","Item","children","props","spacing","role","className","onClick","filter","itemId","newSelection","disabled","tabIndex","justify","length","wrap","alignment","map","gap","expanded","style","height","direction","header","maxHeight","GridGroup","groupName","groupField","headerId","label","ViewPickerGrid","actions","data","fields","isLoading","empty","_view$fields","_view$page","_view$perPage","resizeObserverRef","paginationInfo","itemListLabel","find","otherFields","reduce","accumulator","fieldId","f","key","layout","push","hasData","usedPreviewSize","previewSize","isMultiselect","size","groupByField","dataByGroup","isInfiniteScroll","infiniteScrollEnabled","currentPage","page","perPage","setSize","totalItems","undefined","virtualFocus","orientation","Array","from","entries","groupItems","gridTemplateColumns","ref","posInSet","indexOf","sizes","index"],"sources":["@wordpress/dataviews/src/dataviews-layouts/picker-grid/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tSpinner,\n\tFlex,\n\tFlexItem,\n\tprivateApis as componentsPrivateApis,\n\tComposite,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport DataViewsContext from '../../components/dataviews-context';\nimport { useIsMultiselectPicker } from '../../components/dataviews-picker/footer';\nimport type {\n\tNormalizedField,\n\tViewPickerGrid as ViewPickerGridType,\n\tViewPickerGridProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport { GridItems } from '../utils/grid-items';\nconst { Badge } = unlock( componentsPrivateApis );\nimport getDataByGroup from '../utils/get-data-by-group';\n\ninterface GridItemProps< Item > {\n\tview: ViewPickerGridType;\n\tmultiselect?: boolean;\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\titem: Item;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tregularFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\tconfig: {\n\t\tsizes: string;\n\t};\n\tposinset?: number;\n\tsetsize?: number;\n}\n\nfunction GridItem< Item >( {\n\tview,\n\tmultiselect,\n\tselection,\n\tonChangeSelection,\n\tgetItemId,\n\titem,\n\tmediaField,\n\ttitleField,\n\tdescriptionField,\n\tregularFields,\n\tbadgeFields,\n\tconfig,\n\tposinset,\n\tsetsize,\n}: GridItemProps< Item > ) {\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst id = getItemId( item );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render\n\t\t\titem={ item }\n\t\t\tfield={ mediaField }\n\t\t\tconfig={ config }\n\t\t/>\n\t) : null;\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\treturn (\n\t\t<Composite.Item\n\t\t\tkey={ id }\n\t\t\trender={ ( { children, ...props } ) => (\n\t\t\t\t<VStack spacing={ 0 } children={ children } { ...props } />\n\t\t\t) }\n\t\t\trole=\"option\"\n\t\t\taria-posinset={ posinset }\n\t\t\taria-setsize={ setsize }\n\t\t\tclassName={ clsx( 'dataviews-view-picker-grid__card', {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t} ) }\n\t\t\taria-selected={ isSelected }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( isSelected ) {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst newSelection = multiselect\n\t\t\t\t\t\t? [ ...selection, id ]\n\t\t\t\t\t\t: [ id ];\n\t\t\t\t\tonChangeSelection( newSelection );\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ showMedia && renderedMediaField && (\n\t\t\t\t<div className=\"dataviews-view-picker-grid__media\">\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ showMedia && renderedMediaField && (\n\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\tdisabled={ false }\n\t\t\t\t\taria-hidden\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<HStack\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName=\"dataviews-view-picker-grid__title-actions\"\n\t\t\t>\n\t\t\t\t<div className=\"dataviews-view-picker-grid__title-field dataviews-title-field\">\n\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t</div>\n\t\t\t</HStack>\n\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__badge-fields\"\n\t\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\t\twrap\n\t\t\t\t\t\talignment=\"top\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field-value\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__fields\"\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field\"\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<FlexItem className=\"dataviews-view-picker-grid__field-name\">\n\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field-value\"\n\t\t\t\t\t\t\t\t\t\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</VStack>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</Composite.Item>\n\t);\n}\n\nfunction GridGroup< Item >( {\n\tgroupName,\n\tgroupField,\n\tchildren,\n}: {\n\tgroupName: string;\n\tgroupField: NormalizedField< Item >;\n\tchildren: ReactNode;\n} ) {\n\tconst headerId = useInstanceId(\n\t\tGridGroup,\n\t\t'dataviews-view-picker-grid-group__header'\n\t);\n\treturn (\n\t\t<VStack\n\t\t\tkey={ groupName }\n\t\t\tspacing={ 2 }\n\t\t\trole=\"group\"\n\t\t\taria-labelledby={ headerId }\n\t\t>\n\t\t\t<h3\n\t\t\t\tclassName=\"dataviews-view-picker-grid-group__header\"\n\t\t\t\tid={ headerId }\n\t\t\t>\n\t\t\t\t{ sprintf(\n\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\tgroupField.label,\n\t\t\t\t\tgroupName\n\t\t\t\t) }\n\t\t\t</h3>\n\t\t\t{ children }\n\t\t</VStack>\n\t);\n}\n\nfunction ViewPickerGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tselection,\n\tview,\n\tclassName,\n\tempty,\n}: ViewPickerGridProps< Item > ) {\n\tconst { resizeObserverRef, paginationInfo, itemListLabel } =\n\t\tuseContext( DataViewsContext );\n\tconst titleField = fields.find(\n\t\t( field ) => field.id === view?.titleField\n\t);\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view?.mediaField\n\t);\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view?.descriptionField\n\t);\n\tconst otherFields = view.fields ?? [];\n\tconst { regularFields, badgeFields } = otherFields.reduce(\n\t\t(\n\t\t\taccumulator: Record< string, NormalizedField< Item >[] >,\n\t\t\tfieldId\n\t\t) => {\n\t\t\tconst field = fields.find( ( f ) => f.id === fieldId );\n\t\t\tif ( ! field ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\t\t\t// If the field is a badge field, add it to the badgeFields array\n\t\t\t// otherwise add it to the rest visibleFields array.\n\t\t\tconst key = view.layout?.badgeFields?.includes( fieldId )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'regularFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ regularFields: [], badgeFields: [] }\n\t);\n\tconst hasData = !! data?.length;\n\tconst usedPreviewSize = view.layout?.previewSize;\n\tconst isMultiselect = useIsMultiselectPicker( actions );\n\n\t/*\n\t * This is the maximum width that an image can achieve in the grid. The reasoning is:\n\t * The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).\n\t * Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.\n\t * So each image will never grow past 2*430px plus a little more to account for the gaps.\n\t */\n\tconst size = '900px';\n\n\tconst groupField = view.groupByField\n\t\t? fields.find( ( f ) => f.id === view.groupByField )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\n\tconst currentPage = view?.page ?? 1;\n\tconst perPage = view?.perPage ?? 0;\n\tconst setSize = isInfiniteScroll ? paginationInfo?.totalItems : undefined;\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render multiple groups.\n\t\t\t\thasData && groupField && dataByGroup && (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\tvirtualFocus\n\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t\taria-multiselectable={ isMultiselect }\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'dataviews-view-picker-grid',\n\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t) }\n\t\t\t\t\t\taria-label={ itemListLabel }\n\t\t\t\t\t\trender={ ( { children, ...props } ) => (\n\t\t\t\t\t\t\t<VStack\n\t\t\t\t\t\t\t\tspacing={ 4 }\n\t\t\t\t\t\t\t\tchildren={ children }\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t\t<GridGroup\n\t\t\t\t\t\t\t\t\tkey={ groupName }\n\t\t\t\t\t\t\t\t\tgroupName={ groupName }\n\t\t\t\t\t\t\t\t\tgroupField={ groupField }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<GridItems\n\t\t\t\t\t\t\t\t\t\tpreviewSize={ usedPreviewSize }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\tgridTemplateColumns:\n\t\t\t\t\t\t\t\t\t\t\t\tusedPreviewSize &&\n\t\t\t\t\t\t\t\t\t\t\t\t`repeat(auto-fill, minmax(${ usedPreviewSize }px, 1fr))`,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\t\t\tref={\n\t\t\t\t\t\t\t\t\t\t\tresizeObserverRef as React.RefObject< HTMLDivElement >\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\t\t\tconst posInSet =\n\t\t\t\t\t\t\t\t\t\t\t\t( currentPage - 1 ) * perPage +\n\t\t\t\t\t\t\t\t\t\t\t\tdata.indexOf( item ) +\n\t\t\t\t\t\t\t\t\t\t\t\t1;\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmultiselect={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisMultiselect\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\tposinset={ posInSet }\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetsize={ setSize }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</GridItems>\n\t\t\t\t\t\t\t\t</GridGroup>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Composite>\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t{\n\t\t\t\t// Render a single grid with all data.\n\t\t\t\thasData && ! dataByGroup && (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t<GridItems\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-picker-grid',\n\t\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tpreviewSize={ usedPreviewSize }\n\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\tref={\n\t\t\t\t\t\t\t\t\tresizeObserverRef as React.RefObject< HTMLDivElement >\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvirtualFocus\n\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t\taria-multiselectable={ isMultiselect }\n\t\t\t\t\t\taria-label={ itemListLabel }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\t\t\tlet posinset = isInfiniteScroll\n\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\t\t\tif ( ! isInfiniteScroll ) {\n\t\t\t\t\t\t\t\t// When infinite scroll isn't active, take pagination into account\n\t\t\t\t\t\t\t\t// when calculating the posinset.\n\t\t\t\t\t\t\t\tposinset =\n\t\t\t\t\t\t\t\t\t( currentPage - 1 ) * perPage + index + 1;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\tmultiselect={ isMultiselect }\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tregularFields={ regularFields }\n\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tposinset={ posinset }\n\t\t\t\t\t\t\t\t\tsetsize={ setSize }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Composite>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render empty state.\n\t\t\t\t! hasData && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isLoading ? (\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\tempty\n\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ViewPickerGrid;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","__experimentalHStack","HStack","__experimentalVStack","VStack","Spinner","Flex","FlexItem","privateApis","componentsPrivateApis","Composite","__","sprintf","useInstanceId","useContext","unlock","DataViewsSelectionCheckbox","DataViewsContext","useIsMultiselectPicker","GridItems","Badge","getDataByGroup","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","GridItem","view","multiselect","selection","onChangeSelection","getItemId","item","mediaField","titleField","descriptionField","regularFields","badgeFields","config","posinset","setsize","showTitle","showMedia","showDescription","id","isSelected","includes","renderedMediaField","render","field","renderedTitleField","Item","getValue","undefined","children","props","spacing","role","className","onClick","filter","itemId","newSelection","disabled","tabIndex","justify","length","wrap","alignment","map","gap","expanded","style","height","direction","header","maxHeight","GridGroup","groupName","groupField","headerId","label","ViewPickerGrid","actions","data","fields","isLoading","empty","_view$fields","_view$page","_view$perPage","resizeObserverRef","paginationInfo","itemListLabel","find","otherFields","reduce","accumulator","fieldId","f","key","layout","push","hasData","usedPreviewSize","previewSize","isMultiselect","size","groupByField","dataByGroup","isInfiniteScroll","infiniteScrollEnabled","currentPage","page","perPage","setSize","totalItems","virtualFocus","orientation","Array","from","entries","groupItems","gridTemplateColumns","ref","posInSet","indexOf","sizes","index"],"sources":["@wordpress/dataviews/src/dataviews-layouts/picker-grid/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tSpinner,\n\tFlex,\n\tFlexItem,\n\tprivateApis as componentsPrivateApis,\n\tComposite,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport DataViewsSelectionCheckbox from '../../components/dataviews-selection-checkbox';\nimport DataViewsContext from '../../components/dataviews-context';\nimport { useIsMultiselectPicker } from '../../components/dataviews-picker/footer';\nimport type {\n\tNormalizedField,\n\tViewPickerGrid as ViewPickerGridType,\n\tViewPickerGridProps,\n} from '../../types';\nimport type { SetSelection } from '../../private-types';\nimport { GridItems } from '../utils/grid-items';\nconst { Badge } = unlock( componentsPrivateApis );\nimport getDataByGroup from '../utils/get-data-by-group';\n\ninterface GridItemProps< Item > {\n\tview: ViewPickerGridType;\n\tmultiselect?: boolean;\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\titem: Item;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tregularFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\tconfig: {\n\t\tsizes: string;\n\t};\n\tposinset?: number;\n\tsetsize?: number;\n}\n\nfunction GridItem< Item >( {\n\tview,\n\tmultiselect,\n\tselection,\n\tonChangeSelection,\n\tgetItemId,\n\titem,\n\tmediaField,\n\ttitleField,\n\tdescriptionField,\n\tregularFields,\n\tbadgeFields,\n\tconfig,\n\tposinset,\n\tsetsize,\n}: GridItemProps< Item > ) {\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst id = getItemId( item );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render\n\t\t\titem={ item }\n\t\t\tfield={ mediaField }\n\t\t\tconfig={ config }\n\t\t/>\n\t) : null;\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\treturn (\n\t\t<Composite.Item\n\t\t\taria-label={\n\t\t\t\ttitleField\n\t\t\t\t\t? titleField.getValue( { item } ) || __( '(no title)' )\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tkey={ id }\n\t\t\trender={ ( { children, ...props } ) => (\n\t\t\t\t<VStack spacing={ 0 } children={ children } { ...props } />\n\t\t\t) }\n\t\t\trole=\"option\"\n\t\t\taria-posinset={ posinset }\n\t\t\taria-setsize={ setsize }\n\t\t\tclassName={ clsx( 'dataviews-view-picker-grid__card', {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t} ) }\n\t\t\taria-selected={ isSelected }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( isSelected ) {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst newSelection = multiselect\n\t\t\t\t\t\t? [ ...selection, id ]\n\t\t\t\t\t\t: [ id ];\n\t\t\t\t\tonChangeSelection( newSelection );\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ showMedia && renderedMediaField && (\n\t\t\t\t<div className=\"dataviews-view-picker-grid__media\">\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ showMedia && renderedMediaField && (\n\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\tdisabled={ false }\n\t\t\t\t\taria-hidden\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showTitle && (\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\tclassName=\"dataviews-view-picker-grid__title-actions\"\n\t\t\t\t>\n\t\t\t\t\t<div className=\"dataviews-view-picker-grid__title-field dataviews-title-field\">\n\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t</div>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__badge-fields\"\n\t\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\t\twrap\n\t\t\t\t\t\talignment=\"top\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field-value\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</HStack>\n\t\t\t\t) }\n\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__fields\"\n\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field\"\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<FlexItem className=\"dataviews-view-picker-grid__field-name\">\n\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field-value\"\n\t\t\t\t\t\t\t\t\t\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</VStack>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</Composite.Item>\n\t);\n}\n\nfunction GridGroup< Item >( {\n\tgroupName,\n\tgroupField,\n\tchildren,\n}: {\n\tgroupName: string;\n\tgroupField: NormalizedField< Item >;\n\tchildren: ReactNode;\n} ) {\n\tconst headerId = useInstanceId(\n\t\tGridGroup,\n\t\t'dataviews-view-picker-grid-group__header'\n\t);\n\treturn (\n\t\t<VStack\n\t\t\tkey={ groupName }\n\t\t\tspacing={ 2 }\n\t\t\trole=\"group\"\n\t\t\taria-labelledby={ headerId }\n\t\t>\n\t\t\t<h3\n\t\t\t\tclassName=\"dataviews-view-picker-grid-group__header\"\n\t\t\t\tid={ headerId }\n\t\t\t>\n\t\t\t\t{ sprintf(\n\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\tgroupField.label,\n\t\t\t\t\tgroupName\n\t\t\t\t) }\n\t\t\t</h3>\n\t\t\t{ children }\n\t\t</VStack>\n\t);\n}\n\nfunction ViewPickerGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tselection,\n\tview,\n\tclassName,\n\tempty,\n}: ViewPickerGridProps< Item > ) {\n\tconst { resizeObserverRef, paginationInfo, itemListLabel } =\n\t\tuseContext( DataViewsContext );\n\tconst titleField = fields.find(\n\t\t( field ) => field.id === view?.titleField\n\t);\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view?.mediaField\n\t);\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view?.descriptionField\n\t);\n\tconst otherFields = view.fields ?? [];\n\tconst { regularFields, badgeFields } = otherFields.reduce(\n\t\t(\n\t\t\taccumulator: Record< string, NormalizedField< Item >[] >,\n\t\t\tfieldId\n\t\t) => {\n\t\t\tconst field = fields.find( ( f ) => f.id === fieldId );\n\t\t\tif ( ! field ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\t\t\t// If the field is a badge field, add it to the badgeFields array\n\t\t\t// otherwise add it to the rest visibleFields array.\n\t\t\tconst key = view.layout?.badgeFields?.includes( fieldId )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'regularFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ regularFields: [], badgeFields: [] }\n\t);\n\tconst hasData = !! data?.length;\n\tconst usedPreviewSize = view.layout?.previewSize;\n\tconst isMultiselect = useIsMultiselectPicker( actions );\n\n\t/*\n\t * This is the maximum width that an image can achieve in the grid. The reasoning is:\n\t * The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).\n\t * Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.\n\t * So each image will never grow past 2*430px plus a little more to account for the gaps.\n\t */\n\tconst size = '900px';\n\n\tconst groupField = view.groupByField\n\t\t? fields.find( ( f ) => f.id === view.groupByField )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\n\tconst currentPage = view?.page ?? 1;\n\tconst perPage = view?.perPage ?? 0;\n\tconst setSize = isInfiniteScroll ? paginationInfo?.totalItems : undefined;\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render multiple groups.\n\t\t\t\thasData && groupField && dataByGroup && (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\tvirtualFocus\n\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t\taria-multiselectable={ isMultiselect }\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'dataviews-view-picker-grid',\n\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t) }\n\t\t\t\t\t\taria-label={ itemListLabel }\n\t\t\t\t\t\trender={ ( { children, ...props } ) => (\n\t\t\t\t\t\t\t<VStack\n\t\t\t\t\t\t\t\tspacing={ 4 }\n\t\t\t\t\t\t\t\tchildren={ children }\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t\t<GridGroup\n\t\t\t\t\t\t\t\t\tkey={ groupName }\n\t\t\t\t\t\t\t\t\tgroupName={ groupName }\n\t\t\t\t\t\t\t\t\tgroupField={ groupField }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<GridItems\n\t\t\t\t\t\t\t\t\t\tpreviewSize={ usedPreviewSize }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\tgridTemplateColumns:\n\t\t\t\t\t\t\t\t\t\t\t\tusedPreviewSize &&\n\t\t\t\t\t\t\t\t\t\t\t\t`repeat(auto-fill, minmax(${ usedPreviewSize }px, 1fr))`,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\t\t\tref={\n\t\t\t\t\t\t\t\t\t\t\tresizeObserverRef as React.RefObject< HTMLDivElement >\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\t\t\tconst posInSet =\n\t\t\t\t\t\t\t\t\t\t\t\t( currentPage - 1 ) * perPage +\n\t\t\t\t\t\t\t\t\t\t\t\tdata.indexOf( item ) +\n\t\t\t\t\t\t\t\t\t\t\t\t1;\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmultiselect={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisMultiselect\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\tposinset={ posInSet }\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetsize={ setSize }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</GridItems>\n\t\t\t\t\t\t\t\t</GridGroup>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Composite>\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t{\n\t\t\t\t// Render a single grid with all data.\n\t\t\t\thasData && ! dataByGroup && (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t<GridItems\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-picker-grid',\n\t\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tpreviewSize={ usedPreviewSize }\n\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\tref={\n\t\t\t\t\t\t\t\t\tresizeObserverRef as React.RefObject< HTMLDivElement >\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvirtualFocus\n\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t\taria-multiselectable={ isMultiselect }\n\t\t\t\t\t\taria-label={ itemListLabel }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\t\t\tlet posinset = isInfiniteScroll\n\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\t\t\tif ( ! isInfiniteScroll ) {\n\t\t\t\t\t\t\t\t// When infinite scroll isn't active, take pagination into account\n\t\t\t\t\t\t\t\t// when calculating the posinset.\n\t\t\t\t\t\t\t\tposinset =\n\t\t\t\t\t\t\t\t\t( currentPage - 1 ) * perPage + index + 1;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\tmultiselect={ isMultiselect }\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tregularFields={ regularFields }\n\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tposinset={ posinset }\n\t\t\t\t\t\t\t\t\tsetsize={ setSize }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Composite>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render empty state.\n\t\t\t\t! hasData && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isLoading ? (\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\tempty\n\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ViewPickerGrid;\n"],"mappings":"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","ignoreList":[]}
@@ -44,12 +44,6 @@ const arrayFieldType = {
44
44
  if (!value.every(v => typeof v === 'string')) {
45
45
  return __('Every value must be a string.');
46
46
  }
47
- if (field?.elements) {
48
- const validValues = field.elements.map(f => f.value);
49
- if (!value.every(v => validValues.includes(v))) {
50
- return __('Value must be one of the elements.');
51
- }
52
- }
53
47
  return null;
54
48
  }
55
49
  },
@@ -1 +1 @@
1
- {"version":3,"names":["__","OPERATOR_IS_ALL","OPERATOR_IS_ANY","OPERATOR_IS_NONE","OPERATOR_IS_NOT_ALL","sort","valueA","valueB","direction","arrA","Array","isArray","arrB","length","joinedA","join","joinedB","localeCompare","render","item","field","value","getValue","arrayFieldType","isValid","custom","undefined","includes","every","v","elements","validValues","map","f","Edit","enableSorting","filterBy","defaultOperators","validOperators"],"sources":["@wordpress/dataviews/src/field-types/array.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tFieldTypeDefinition,\n\tNormalizedField,\n} from '../types';\nimport {\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT_ALL,\n} from '../constants';\n\n// Sort arrays by length, then alphabetically by joined string\nfunction sort( valueA: any, valueB: any, direction: SortDirection ) {\n\tconst arrA = Array.isArray( valueA ) ? valueA : [];\n\tconst arrB = Array.isArray( valueB ) ? valueB : [];\n\tif ( arrA.length !== arrB.length ) {\n\t\treturn direction === 'asc'\n\t\t\t? arrA.length - arrB.length\n\t\t\t: arrB.length - arrA.length;\n\t}\n\n\tconst joinedA = arrA.join( ',' );\n\tconst joinedB = arrB.join( ',' );\n\treturn direction === 'asc'\n\t\t? joinedA.localeCompare( joinedB )\n\t\t: joinedB.localeCompare( joinedA );\n}\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\tconst value = field.getValue( { item } ) || [];\n\treturn value.join( ', ' );\n}\n\nconst arrayFieldType: FieldTypeDefinition< any > = {\n\tsort,\n\tisValid: {\n\t\tcustom: ( item: any, field: NormalizedField< any > ) => {\n\t\t\tconst value = field.getValue( { item } );\n\n\t\t\tif (\n\t\t\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t\t\t! Array.isArray( value )\n\t\t\t) {\n\t\t\t\treturn __( 'Value must be an array.' );\n\t\t\t}\n\n\t\t\t// Only allow strings for now. Can be extended to other types in the future.\n\t\t\tif ( ! value.every( ( v: any ) => typeof v === 'string' ) ) {\n\t\t\t\treturn __( 'Every value must be a string.' );\n\t\t\t}\n\n\t\t\tif ( field?.elements ) {\n\t\t\t\tconst validValues = field.elements.map( ( f ) => f.value );\n\t\t\t\tif (\n\t\t\t\t\t! value.every( ( v: any ) => validValues.includes( v ) )\n\t\t\t\t) {\n\t\t\t\t\treturn __( 'Value must be one of the elements.' );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t},\n\tEdit: 'array', // Use array control\n\trender,\n\tenableSorting: true,\n\tfilterBy: {\n\t\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\t\tvalidOperators: [\n\t\t\tOPERATOR_IS_ANY,\n\t\t\tOPERATOR_IS_NONE,\n\t\t\tOPERATOR_IS_ALL,\n\t\t\tOPERATOR_IS_NOT_ALL,\n\t\t],\n\t},\n};\n\nexport default arrayFieldType;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;;AAOA,SACCC,eAAe,EACfC,eAAe,EACfC,gBAAgB,EAChBC,mBAAmB,QACb,cAAc;;AAErB;AACA,SAASC,IAAIA,CAAEC,MAAW,EAAEC,MAAW,EAAEC,SAAwB,EAAG;EACnE,MAAMC,IAAI,GAAGC,KAAK,CAACC,OAAO,CAAEL,MAAO,CAAC,GAAGA,MAAM,GAAG,EAAE;EAClD,MAAMM,IAAI,GAAGF,KAAK,CAACC,OAAO,CAAEJ,MAAO,CAAC,GAAGA,MAAM,GAAG,EAAE;EAClD,IAAKE,IAAI,CAACI,MAAM,KAAKD,IAAI,CAACC,MAAM,EAAG;IAClC,OAAOL,SAAS,KAAK,KAAK,GACvBC,IAAI,CAACI,MAAM,GAAGD,IAAI,CAACC,MAAM,GACzBD,IAAI,CAACC,MAAM,GAAGJ,IAAI,CAACI,MAAM;EAC7B;EAEA,MAAMC,OAAO,GAAGL,IAAI,CAACM,IAAI,CAAE,GAAI,CAAC;EAChC,MAAMC,OAAO,GAAGJ,IAAI,CAACG,IAAI,CAAE,GAAI,CAAC;EAChC,OAAOP,SAAS,KAAK,KAAK,GACvBM,OAAO,CAACG,aAAa,CAAED,OAAQ,CAAC,GAChCA,OAAO,CAACC,aAAa,CAAEH,OAAQ,CAAC;AACpC;AAEA,SAASI,MAAMA,CAAE;EAAEC,IAAI;EAAEC;AAAuC,CAAC,EAAG;EACnE,MAAMC,KAAK,GAAGD,KAAK,CAACE,QAAQ,CAAE;IAAEH;EAAK,CAAE,CAAC,IAAI,EAAE;EAC9C,OAAOE,KAAK,CAACN,IAAI,CAAE,IAAK,CAAC;AAC1B;AAEA,MAAMQ,cAA0C,GAAG;EAClDlB,IAAI;EACJmB,OAAO,EAAE;IACRC,MAAM,EAAEA,CAAEN,IAAS,EAAEC,KAA6B,KAAM;MACvD,MAAMC,KAAK,GAAGD,KAAK,CAACE,QAAQ,CAAE;QAAEH;MAAK,CAAE,CAAC;MAExC,IACC,CAAE,CAAEO,SAAS,EAAE,EAAE,EAAE,IAAI,CAAE,CAACC,QAAQ,CAAEN,KAAM,CAAC,IAC3C,CAAEX,KAAK,CAACC,OAAO,CAAEU,KAAM,CAAC,EACvB;QACD,OAAOrB,EAAE,CAAE,yBAA0B,CAAC;MACvC;;MAEA;MACA,IAAK,CAAEqB,KAAK,CAACO,KAAK,CAAIC,CAAM,IAAM,OAAOA,CAAC,KAAK,QAAS,CAAC,EAAG;QAC3D,OAAO7B,EAAE,CAAE,+BAAgC,CAAC;MAC7C;MAEA,IAAKoB,KAAK,EAAEU,QAAQ,EAAG;QACtB,MAAMC,WAAW,GAAGX,KAAK,CAACU,QAAQ,CAACE,GAAG,CAAIC,CAAC,IAAMA,CAAC,CAACZ,KAAM,CAAC;QAC1D,IACC,CAAEA,KAAK,CAACO,KAAK,CAAIC,CAAM,IAAME,WAAW,CAACJ,QAAQ,CAAEE,CAAE,CAAE,CAAC,EACvD;UACD,OAAO7B,EAAE,CAAE,oCAAqC,CAAC;QAClD;MACD;MACA,OAAO,IAAI;IACZ;EACD,CAAC;EACDkC,IAAI,EAAE,OAAO;EAAE;EACfhB,MAAM;EACNiB,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;IACTC,gBAAgB,EAAE,CAAEnC,eAAe,EAAEC,gBAAgB,CAAE;IACvDmC,cAAc,EAAE,CACfpC,eAAe,EACfC,gBAAgB,EAChBF,eAAe,EACfG,mBAAmB;EAErB;AACD,CAAC;AAED,eAAemB,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["__","OPERATOR_IS_ALL","OPERATOR_IS_ANY","OPERATOR_IS_NONE","OPERATOR_IS_NOT_ALL","sort","valueA","valueB","direction","arrA","Array","isArray","arrB","length","joinedA","join","joinedB","localeCompare","render","item","field","value","getValue","arrayFieldType","isValid","custom","undefined","includes","every","v","Edit","enableSorting","filterBy","defaultOperators","validOperators"],"sources":["@wordpress/dataviews/src/field-types/array.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tSortDirection,\n\tFieldTypeDefinition,\n\tNormalizedField,\n} from '../types';\nimport {\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT_ALL,\n} from '../constants';\n\n// Sort arrays by length, then alphabetically by joined string\nfunction sort( valueA: any, valueB: any, direction: SortDirection ) {\n\tconst arrA = Array.isArray( valueA ) ? valueA : [];\n\tconst arrB = Array.isArray( valueB ) ? valueB : [];\n\tif ( arrA.length !== arrB.length ) {\n\t\treturn direction === 'asc'\n\t\t\t? arrA.length - arrB.length\n\t\t\t: arrB.length - arrA.length;\n\t}\n\n\tconst joinedA = arrA.join( ',' );\n\tconst joinedB = arrB.join( ',' );\n\treturn direction === 'asc'\n\t\t? joinedA.localeCompare( joinedB )\n\t\t: joinedB.localeCompare( joinedA );\n}\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\tconst value = field.getValue( { item } ) || [];\n\treturn value.join( ', ' );\n}\n\nconst arrayFieldType: FieldTypeDefinition< any > = {\n\tsort,\n\tisValid: {\n\t\tcustom: ( item: any, field: NormalizedField< any > ) => {\n\t\t\tconst value = field.getValue( { item } );\n\n\t\t\tif (\n\t\t\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t\t\t! Array.isArray( value )\n\t\t\t) {\n\t\t\t\treturn __( 'Value must be an array.' );\n\t\t\t}\n\n\t\t\t// Only allow strings for now. Can be extended to other types in the future.\n\t\t\tif ( ! value.every( ( v: any ) => typeof v === 'string' ) ) {\n\t\t\t\treturn __( 'Every value must be a string.' );\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\t},\n\tEdit: 'array', // Use array control\n\trender,\n\tenableSorting: true,\n\tfilterBy: {\n\t\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\t\tvalidOperators: [\n\t\t\tOPERATOR_IS_ANY,\n\t\t\tOPERATOR_IS_NONE,\n\t\t\tOPERATOR_IS_ALL,\n\t\t\tOPERATOR_IS_NOT_ALL,\n\t\t],\n\t},\n};\n\nexport default arrayFieldType;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;;AAOA,SACCC,eAAe,EACfC,eAAe,EACfC,gBAAgB,EAChBC,mBAAmB,QACb,cAAc;;AAErB;AACA,SAASC,IAAIA,CAAEC,MAAW,EAAEC,MAAW,EAAEC,SAAwB,EAAG;EACnE,MAAMC,IAAI,GAAGC,KAAK,CAACC,OAAO,CAAEL,MAAO,CAAC,GAAGA,MAAM,GAAG,EAAE;EAClD,MAAMM,IAAI,GAAGF,KAAK,CAACC,OAAO,CAAEJ,MAAO,CAAC,GAAGA,MAAM,GAAG,EAAE;EAClD,IAAKE,IAAI,CAACI,MAAM,KAAKD,IAAI,CAACC,MAAM,EAAG;IAClC,OAAOL,SAAS,KAAK,KAAK,GACvBC,IAAI,CAACI,MAAM,GAAGD,IAAI,CAACC,MAAM,GACzBD,IAAI,CAACC,MAAM,GAAGJ,IAAI,CAACI,MAAM;EAC7B;EAEA,MAAMC,OAAO,GAAGL,IAAI,CAACM,IAAI,CAAE,GAAI,CAAC;EAChC,MAAMC,OAAO,GAAGJ,IAAI,CAACG,IAAI,CAAE,GAAI,CAAC;EAChC,OAAOP,SAAS,KAAK,KAAK,GACvBM,OAAO,CAACG,aAAa,CAAED,OAAQ,CAAC,GAChCA,OAAO,CAACC,aAAa,CAAEH,OAAQ,CAAC;AACpC;AAEA,SAASI,MAAMA,CAAE;EAAEC,IAAI;EAAEC;AAAuC,CAAC,EAAG;EACnE,MAAMC,KAAK,GAAGD,KAAK,CAACE,QAAQ,CAAE;IAAEH;EAAK,CAAE,CAAC,IAAI,EAAE;EAC9C,OAAOE,KAAK,CAACN,IAAI,CAAE,IAAK,CAAC;AAC1B;AAEA,MAAMQ,cAA0C,GAAG;EAClDlB,IAAI;EACJmB,OAAO,EAAE;IACRC,MAAM,EAAEA,CAAEN,IAAS,EAAEC,KAA6B,KAAM;MACvD,MAAMC,KAAK,GAAGD,KAAK,CAACE,QAAQ,CAAE;QAAEH;MAAK,CAAE,CAAC;MAExC,IACC,CAAE,CAAEO,SAAS,EAAE,EAAE,EAAE,IAAI,CAAE,CAACC,QAAQ,CAAEN,KAAM,CAAC,IAC3C,CAAEX,KAAK,CAACC,OAAO,CAAEU,KAAM,CAAC,EACvB;QACD,OAAOrB,EAAE,CAAE,yBAA0B,CAAC;MACvC;;MAEA;MACA,IAAK,CAAEqB,KAAK,CAACO,KAAK,CAAIC,CAAM,IAAM,OAAOA,CAAC,KAAK,QAAS,CAAC,EAAG;QAC3D,OAAO7B,EAAE,CAAE,+BAAgC,CAAC;MAC7C;MAEA,OAAO,IAAI;IACZ;EACD,CAAC;EACD8B,IAAI,EAAE,OAAO;EAAE;EACfZ,MAAM;EACNa,aAAa,EAAE,IAAI;EACnBC,QAAQ,EAAE;IACTC,gBAAgB,EAAE,CAAE/B,eAAe,EAAEC,gBAAgB,CAAE;IACvD+B,cAAc,EAAE,CACfhC,eAAe,EACfC,gBAAgB,EAChBF,eAAe,EACfG,mBAAmB;EAErB;AACD,CAAC;AAED,eAAemB,cAAc","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  export { default as DataViews } from './components/dataviews';
2
+ export { default as DataViewsPicker } from './components/dataviews-picker';
2
3
  export { default as DataForm } from './components/dataform';
3
4
  export { VIEW_LAYOUTS } from './dataviews-layouts';
4
5
  export { filterSortAndPaginate } from './filter-and-sort-data-view';
@@ -1 +1 @@
1
- {"version":3,"names":["default","DataViews","DataForm","VIEW_LAYOUTS","filterSortAndPaginate","isItemValid"],"sources":["@wordpress/dataviews/src/index.ts"],"sourcesContent":["export { default as DataViews } from './components/dataviews';\nexport { default as DataForm } from './components/dataform';\nexport { VIEW_LAYOUTS } from './dataviews-layouts';\nexport { filterSortAndPaginate } from './filter-and-sort-data-view';\nexport type * from './types';\nexport { isItemValid } from './validation';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,SAAS,QAAQ,wBAAwB;AAC7D,SAASD,OAAO,IAAIE,QAAQ,QAAQ,uBAAuB;AAC3D,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,qBAAqB,QAAQ,6BAA6B;AAEnE,SAASC,WAAW,QAAQ,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["default","DataViews","DataViewsPicker","DataForm","VIEW_LAYOUTS","filterSortAndPaginate","isItemValid"],"sources":["@wordpress/dataviews/src/index.ts"],"sourcesContent":["export { default as DataViews } from './components/dataviews';\nexport { default as DataViewsPicker } from './components/dataviews-picker';\nexport { default as DataForm } from './components/dataform';\nexport { VIEW_LAYOUTS } from './dataviews-layouts';\nexport { filterSortAndPaginate } from './filter-and-sort-data-view';\nexport type * from './types';\nexport { isItemValid } from './validation';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,SAAS,QAAQ,wBAAwB;AAC7D,SAASD,OAAO,IAAIE,eAAe,QAAQ,+BAA+B;AAC1E,SAASF,OAAO,IAAIG,QAAQ,QAAQ,uBAAuB;AAC3D,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,qBAAqB,QAAQ,6BAA6B;AAEnE,SAASC,WAAW,QAAQ,cAAc","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["@wordpress/dataviews/src/types.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type {\n\tReactElement,\n\tReactNode,\n\tComponentType,\n\tComponentProps,\n} from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { SetSelection } from './private-types';\n\n/**\n * WordPress dependencies\n */\nimport type { useFocusOnMount } from '@wordpress/compose';\n\n/**\n * Utility type that makes all properties of T optional recursively.\n * Used by field setValue functions to allow partial item updates.\n */\nexport type DeepPartial< T > = {\n\t[ P in keyof T ]?: T[ P ] extends object ? DeepPartial< T[ P ] > : T[ P ];\n};\n\nexport type SortDirection = 'asc' | 'desc';\n\n/**\n * Generic option type.\n */\nexport interface Option< Value extends any = any > {\n\tvalue: Value;\n\tlabel: string;\n\tdescription?: string;\n}\n\nexport interface FilterByConfig {\n\t/**\n\t * The list of operators supported by the field.\n\t */\n\toperators?: Operator[];\n\n\t/**\n\t * Whether it is a primary filter.\n\t *\n\t * A primary filter is always visible and is not listed in the \"Add filter\" component,\n\t * except for the list layout where it behaves like a secondary filter.\n\t */\n\tisPrimary?: boolean;\n}\n\nexport interface NormalizedFilterByConfig {\n\t/**\n\t * The list of operators supported by the field.\n\t */\n\toperators: Operator[];\n\n\t/**\n\t * Whether it is a primary filter.\n\t *\n\t * A primary filter is always visible and is not listed in the \"Add filter\" component,\n\t * except for the list layout where it behaves like a secondary filter.\n\t */\n\tisPrimary?: boolean;\n}\n\ninterface FilterConfigForType {\n\t/**\n\t * What operators are used by default.\n\t */\n\tdefaultOperators: Operator[];\n\n\t/**\n\t * What operators are supported by the field.\n\t */\n\tvalidOperators: Operator[];\n}\n\nexport type Operator =\n\t| 'is'\n\t| 'isNot'\n\t| 'isAny'\n\t| 'isNone'\n\t| 'isAll'\n\t| 'isNotAll'\n\t| 'lessThan'\n\t| 'greaterThan'\n\t| 'lessThanOrEqual'\n\t| 'greaterThanOrEqual'\n\t| 'before'\n\t| 'after'\n\t| 'beforeInc'\n\t| 'afterInc'\n\t| 'contains'\n\t| 'notContains'\n\t| 'startsWith'\n\t| 'between'\n\t| 'on'\n\t| 'notOn'\n\t| 'inThePast'\n\t| 'over';\n\nexport type FieldType =\n\t| 'text'\n\t| 'integer'\n\t| 'datetime'\n\t| 'date'\n\t| 'media'\n\t| 'boolean'\n\t| 'email'\n\t| 'password'\n\t| 'telephone'\n\t| 'color'\n\t| 'url'\n\t| 'array';\n\n/**\n * An abstract interface for Field based on the field type.\n */\nexport type FieldTypeDefinition< Item > = {\n\t/**\n\t * Callback used to sort the field.\n\t */\n\tsort: ( a: Item, b: Item, direction: SortDirection ) => number;\n\n\t/**\n\t * Callback used to validate the field.\n\t */\n\tisValid: Rules< Item >;\n\n\t/**\n\t * Callback used to render an edit control for the field or control name.\n\t */\n\tEdit:\n\t\t| ComponentType< DataFormControlProps< Item > >\n\t\t| string\n\t\t| EditConfig\n\t\t| null;\n\n\t/**\n\t * Callback used to render the field.\n\t */\n\trender: ComponentType< DataViewRenderFieldProps< Item > >;\n\n\t/**\n\t * The filter config for the field.\n\t */\n\tfilterBy: FilterConfigForType | false;\n\n\t/**\n\t * Whether the field is readOnly.\n\t * If `true`, the value will be rendered using the `render` callback.\n\t */\n\treadOnly?: boolean;\n\n\t/**\n\t * Whether the field is sortable.\n\t */\n\tenableSorting: boolean;\n};\n\nexport type Rules< Item > = {\n\trequired?: boolean;\n\tcustom?: ( item: Item, field: NormalizedField< Item > ) => null | string;\n};\n\n/**\n * Edit configuration for textarea controls.\n */\nexport type EditConfigTextarea = {\n\tcontrol: 'textarea';\n\t/**\n\t * Number of rows for the textarea.\n\t */\n\trows?: number;\n};\n\n/**\n * Edit configuration for text controls.\n */\nexport type EditConfigText = {\n\tcontrol: 'text';\n\t/**\n\t * Prefix component to display before the input.\n\t */\n\tprefix?: React.ComponentType;\n\t/**\n\t * Suffix component to display after the input.\n\t */\n\tsuffix?: React.ComponentType;\n};\n\n/**\n * Edit configuration for other control types (excluding 'text' and 'textarea').\n */\nexport type EditConfigGeneric = {\n\tcontrol: Exclude< FieldType, 'text' | 'textarea' >;\n};\n\n/**\n * Edit configuration object with type-safe control options.\n * Each control type has its own specific configuration properties.\n */\nexport type EditConfig =\n\t| EditConfigTextarea\n\t| EditConfigText\n\t| EditConfigGeneric;\n\n/**\n * A dataview field for a specific property of a data type.\n */\nexport type Field< Item > = {\n\t/**\n\t * Type of the fields.\n\t */\n\ttype?: FieldType;\n\n\t/**\n\t * The unique identifier of the field.\n\t */\n\tid: string;\n\n\t/**\n\t * The label of the field. Defaults to the id.\n\t */\n\tlabel?: string;\n\n\t/**\n\t * The header of the field. Defaults to the label.\n\t * It allows the usage of a React Element to render the field labels.\n\t */\n\theader?: string | ReactElement;\n\n\t/**\n\t * A description of the field.\n\t */\n\tdescription?: string;\n\n\t/**\n\t * Placeholder for the field.\n\t */\n\tplaceholder?: string;\n\n\t/**\n\t * Callback used to render the field. Defaults to `field.getValue`.\n\t */\n\trender?: ComponentType< DataViewRenderFieldProps< Item > >;\n\n\t/**\n\t * Callback used to render an edit control for the field.\n\t */\n\tEdit?: ComponentType< DataFormControlProps< Item > > | string | EditConfig;\n\n\t/**\n\t * Callback used to sort the field.\n\t */\n\tsort?: ( a: Item, b: Item, direction: SortDirection ) => number;\n\n\t/**\n\t * Callback used to validate the field.\n\t */\n\tisValid?: Rules< Item >;\n\n\t/**\n\t * Callback used to decide if a field should be displayed.\n\t */\n\tisVisible?: ( item: Item ) => boolean;\n\n\t/**\n\t * Whether the field is sortable.\n\t */\n\tenableSorting?: boolean;\n\n\t/**\n\t * Whether the field is searchable.\n\t */\n\tenableGlobalSearch?: boolean;\n\n\t/**\n\t * Whether the field is filterable.\n\t */\n\tenableHiding?: boolean;\n\n\t/**\n\t * The list of options to pick from when using the field as a filter.\n\t */\n\telements?: Option[];\n\n\t/**\n\t * Filter config for the field.\n\t */\n\tfilterBy?: FilterByConfig | false;\n\n\t/**\n\t * Whether the field is readOnly.\n\t * If `true`, the value will be rendered using the `render` callback.\n\t */\n\treadOnly?: boolean;\n\n\t/**\n\t * Callback used to retrieve the value of the field from the item.\n\t * Defaults to `item[ field.id ]`.\n\t */\n\tgetValue?: ( args: { item: Item } ) => any;\n\n\t/**\n\t * Callback used to set the value of the field on the item.\n\t * Used for editing operations to update field values.\n\t */\n\tsetValue?: ( args: { item: Item; value: any } ) => DeepPartial< Item >;\n};\n\nexport type NormalizedField< Item > = Omit< Field< Item >, 'Edit' > & {\n\tlabel: string;\n\theader: string | ReactElement;\n\tgetValue: ( args: { item: Item } ) => any;\n\tsetValue: ( args: { item: Item; value: any } ) => DeepPartial< Item >;\n\trender: ComponentType< DataViewRenderFieldProps< Item > >;\n\tEdit: ComponentType< DataFormControlProps< Item > > | null;\n\tsort: ( a: Item, b: Item, direction: SortDirection ) => number;\n\tisValid: Rules< Item >;\n\tenableHiding: boolean;\n\tenableSorting: boolean;\n\tfilterBy: NormalizedFilterByConfig | false;\n\treadOnly: boolean;\n};\n\n/**\n * A collection of dataview fields for a data type.\n */\nexport type Fields< Item > = Field< Item >[];\n\nexport type Data< Item > = Item[];\n\nexport type DataFormControlProps< Item > = {\n\tdata: Item;\n\tfield: NormalizedField< Item >;\n\tonChange: ( value: DeepPartial< Item > ) => void;\n\thideLabelFromVision?: boolean;\n\t/**\n\t * The currently selected filter operator for this field.\n\t *\n\t * Used by DataViews filters to determine which control to render based on the operator type.\n\t */\n\toperator?: Operator;\n\t/**\n\t * Configuration object for the control.\n\t */\n\tconfig?: {\n\t\tprefix?: React.ComponentType;\n\t\tsuffix?: React.ComponentType;\n\t\trows?: number;\n\t};\n};\n\nexport type DataViewRenderFieldProps< Item > = {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n\tconfig?: {\n\t\tsizes: string;\n\t};\n};\n\n/**\n * The filters applied to the dataset.\n */\nexport interface Filter {\n\t/**\n\t * The field to filter by.\n\t */\n\tfield: string;\n\n\t/**\n\t * The operator to use.\n\t */\n\toperator: Operator;\n\n\t/**\n\t * The value to filter by.\n\t */\n\tvalue: any;\n\n\t/**\n\t * Whether the filter can be edited by the user.\n\t */\n\tisLocked?: boolean;\n}\n\nexport interface NormalizedFilter {\n\t/**\n\t * The field to filter by.\n\t */\n\tfield: string;\n\n\t/**\n\t * The field name.\n\t */\n\tname: string;\n\n\t/**\n\t * The list of options to pick from when using the field as a filter.\n\t */\n\telements: Option[];\n\n\t/**\n\t * Is a single selection filter.\n\t */\n\tsingleSelection: boolean;\n\n\t/**\n\t * The list of operators supported by the field.\n\t */\n\toperators: Operator[];\n\n\t/**\n\t * Whether the filter is visible.\n\t */\n\tisVisible: boolean;\n\n\t/**\n\t * Whether it is a primary filter.\n\t */\n\tisPrimary: boolean;\n\n\t/**\n\t * Whether the filter can be edited by the user.\n\t */\n\tisLocked: boolean;\n}\n\ninterface ViewBase {\n\t/**\n\t * The layout of the view.\n\t */\n\ttype: string;\n\n\t/**\n\t * The global search term.\n\t */\n\tsearch?: string;\n\n\t/**\n\t * The filters to apply.\n\t */\n\tfilters?: Filter[];\n\n\t/**\n\t * The sorting configuration.\n\t */\n\tsort?: {\n\t\t/**\n\t\t * The field to sort by.\n\t\t */\n\t\tfield: string;\n\n\t\t/**\n\t\t * The direction to sort by.\n\t\t */\n\t\tdirection: SortDirection;\n\t};\n\n\t/**\n\t * The active page\n\t */\n\tpage?: number;\n\n\t/**\n\t * The number of items per page\n\t */\n\tperPage?: number;\n\n\t/**\n\t * The fields to render\n\t */\n\tfields?: string[];\n\n\t/**\n\t * Title field\n\t */\n\ttitleField?: string;\n\n\t/**\n\t * Media field\n\t */\n\tmediaField?: string;\n\n\t/**\n\t * Description field\n\t */\n\tdescriptionField?: string;\n\n\t/**\n\t * Whether to show the title\n\t */\n\tshowTitle?: boolean;\n\n\t/**\n\t * Whether to show the media\n\t */\n\tshowMedia?: boolean;\n\n\t/**\n\t * Whether to show the description\n\t */\n\tshowDescription?: boolean;\n\n\t/**\n\t * Whether to show the hierarchical levels.\n\t */\n\tshowLevels?: boolean;\n\n\t/**\n\t * The field to group by.\n\t */\n\tgroupByField?: string;\n\n\t/**\n\t * Whether infinite scroll is enabled.\n\t */\n\tinfiniteScrollEnabled?: boolean;\n}\n\nexport interface ColumnStyle {\n\t/**\n\t * The width of the field column.\n\t */\n\twidth?: string | number;\n\n\t/**\n\t * The minimum width of the field column.\n\t */\n\tmaxWidth?: string | number;\n\n\t/**\n\t * The maximum width of the field column.\n\t */\n\tminWidth?: string | number;\n\n\t/**\n\t * The alignment of the field column, defaults to left.\n\t */\n\talign?: 'start' | 'center' | 'end';\n}\n\nexport type Density = 'compact' | 'balanced' | 'comfortable';\n\nexport interface ViewTable extends ViewBase {\n\ttype: 'table';\n\n\tlayout?: {\n\t\t/**\n\t\t * The styles for the columns.\n\t\t */\n\t\tstyles?: Record< string, ColumnStyle >;\n\n\t\t/**\n\t\t * The density of the view.\n\t\t */\n\t\tdensity?: Density;\n\n\t\t/**\n\t\t * Whether the view allows column moving.\n\t\t */\n\t\tenableMoving?: boolean;\n\t};\n}\n\nexport interface ViewList extends ViewBase {\n\ttype: 'list';\n}\n\nexport interface ViewGrid extends ViewBase {\n\ttype: 'grid';\n\n\tlayout?: {\n\t\t/**\n\t\t * The fields to use as badge fields.\n\t\t */\n\t\tbadgeFields?: string[];\n\n\t\t/**\n\t\t * The preview size of the grid.\n\t\t */\n\t\tpreviewSize?: number;\n\t};\n}\n\nexport interface ViewPickerGrid extends ViewBase {\n\ttype: 'pickerGrid';\n\n\tlayout?: {\n\t\t/**\n\t\t * The fields to use as badge fields.\n\t\t */\n\t\tbadgeFields?: string[];\n\n\t\t/**\n\t\t * The preview size of the grid.\n\t\t */\n\t\tpreviewSize?: number;\n\t};\n}\n\nexport type View = ViewList | ViewGrid | ViewTable | ViewPickerGrid;\n\ninterface ActionBase< Item > {\n\t/**\n\t * The unique identifier of the action.\n\t */\n\tid: string;\n\n\t/**\n\t * The label of the action.\n\t * In case we want to adjust the label based on the selected items,\n\t * a function can be provided.\n\t */\n\tlabel: string | ( ( items: Item[] ) => string );\n\n\t/**\n\t * The icon of the action. (Either a string or an SVG element)\n\t * This should be IconType from the components package\n\t * but that import is breaking typescript build for the moment.\n\t */\n\ticon?: any;\n\n\t/**\n\t * Whether the action is disabled.\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Whether the action is destructive.\n\t */\n\tisDestructive?: boolean;\n\n\t/**\n\t * Whether the action is a primary action.\n\t */\n\tisPrimary?: boolean;\n\n\t/**\n\t * Whether the item passed as an argument supports the current action.\n\t */\n\tisEligible?: ( item: Item ) => boolean;\n\n\t/**\n\t * Whether the action can be used as a bulk action.\n\t */\n\tsupportsBulk?: boolean;\n\n\t/**\n\t * The context in which the action is visible.\n\t * This is only a \"meta\" information for now.\n\t */\n\tcontext?: 'list' | 'single';\n}\n\nexport interface RenderModalProps< Item > {\n\titems: Item[];\n\tcloseModal?: () => void;\n\tonActionPerformed?: ( items: Item[] ) => void;\n}\n\nexport interface ActionModal< Item > extends ActionBase< Item > {\n\t/**\n\t * Modal to render when the action is triggered.\n\t */\n\tRenderModal: ( {\n\t\titems,\n\t\tcloseModal,\n\t\tonActionPerformed,\n\t}: RenderModalProps< Item > ) => ReactElement;\n\n\t/**\n\t * Whether to hide the modal header.\n\t */\n\thideModalHeader?: boolean;\n\n\t/**\n\t * The header of the modal.\n\t */\n\tmodalHeader?: string;\n\n\t/**\n\t * The size of the modal.\n\t *\n\t * @default 'medium'\n\t */\n\tmodalSize?: 'small' | 'medium' | 'large' | 'fill';\n\n\t/**\n\t * The focus on mount property of the modal.\n\t */\n\tmodalFocusOnMount?:\n\t\t| Parameters< typeof useFocusOnMount >[ 0 ]\n\t\t| 'firstContentElement';\n}\n\nexport interface ActionButton< Item > extends ActionBase< Item > {\n\t/**\n\t * The callback to execute when the action is triggered.\n\t */\n\tcallback: (\n\t\titems: Item[],\n\t\tcontext: {\n\t\t\tregistry: any;\n\t\t\tonActionPerformed?: ( items: Item[] ) => void;\n\t\t}\n\t) => void;\n}\n\nexport type Action< Item > = ActionModal< Item > | ActionButton< Item >;\n\nexport interface ViewBaseProps< Item > {\n\tclassName?: string;\n\tactions: Action< Item >[];\n\tdata: Item[];\n\tfields: NormalizedField< Item >[];\n\tgetItemId: ( item: Item ) => string;\n\tgetItemLevel?: ( item: Item ) => number;\n\tisLoading?: boolean;\n\tonChangeView: ( view: View ) => void;\n\tonChangeSelection: SetSelection;\n\tselection: string[];\n\tsetOpenedFilter: ( fieldId: string ) => void;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n\tview: View;\n\tempty: ReactNode;\n}\n\nexport type ViewPickerBaseProps< Item > = Omit<\n\tViewBaseProps< Item >,\n\t| 'view'\n\t| 'onChangeView'\n\t// The following props are not supported for pickers.\n\t| 'isItemClickable'\n\t| 'onClickItem'\n\t| 'renderItemLink'\n\t| 'getItemLevel'\n> & {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n};\n\nexport interface ViewTableProps< Item > extends ViewBaseProps< Item > {\n\tview: ViewTable;\n}\n\nexport interface ViewListProps< Item > extends ViewBaseProps< Item > {\n\tview: ViewList;\n}\n\nexport interface ViewGridProps< Item > extends ViewBaseProps< Item > {\n\tview: ViewGrid;\n}\n\nexport interface ViewPickerGridProps< Item >\n\textends Omit< ViewPickerBaseProps< Item >, 'view' > {\n\tview: ViewPickerGrid;\n}\n\nexport type ViewProps< Item > =\n\t| ViewTableProps< Item >\n\t| ViewGridProps< Item >\n\t| ViewListProps< Item >;\n\nexport type ViewPickerProps< Item > = ViewPickerGridProps< Item >;\n\nexport interface SupportedLayouts {\n\tlist?: Omit< ViewList, 'type' >;\n\tgrid?: Omit< ViewGrid, 'type' >;\n\ttable?: Omit< ViewTable, 'type' >;\n\tpickerGrid?: Omit< ViewPickerGrid, 'type' >;\n}\n\n/**\n * DataForm layouts.\n */\nexport type LayoutType = 'regular' | 'panel' | 'card' | 'row';\nexport type LabelPosition = 'top' | 'side' | 'none';\n\nexport type RegularLayout = {\n\ttype: 'regular';\n\tlabelPosition?: LabelPosition;\n};\nexport type NormalizedRegularLayout = {\n\ttype: 'regular';\n\tlabelPosition: LabelPosition;\n};\n\nexport type PanelLayout = {\n\ttype: 'panel';\n\tlabelPosition?: LabelPosition;\n\topenAs?: 'dropdown' | 'modal';\n};\nexport type NormalizedPanelLayout = {\n\ttype: 'panel';\n\tlabelPosition: LabelPosition;\n\topenAs: 'dropdown' | 'modal';\n};\n\nexport type CardLayout =\n\t| {\n\t\t\ttype: 'card';\n\t\t\twithHeader: false;\n\t\t\t// isOpened cannot be false if withHeader is false as well.\n\t\t\t// Otherwise, the card would not be visible.\n\t\t\tisOpened?: true;\n\t }\n\t| {\n\t\t\ttype: 'card';\n\t\t\twithHeader?: true | undefined;\n\t\t\tisOpened?: boolean;\n\t };\nexport type NormalizedCardLayout =\n\t| {\n\t\t\ttype: 'card';\n\t\t\twithHeader: false;\n\t\t\t// isOpened cannot be false if withHeader is false as well.\n\t\t\t// Otherwise, the card would not be visible.\n\t\t\tisOpened: true;\n\t }\n\t| {\n\t\t\ttype: 'card';\n\t\t\twithHeader: true;\n\t\t\tisOpened: boolean;\n\t };\n\nexport type RowLayout = {\n\ttype: 'row';\n\talignment?: 'start' | 'center' | 'end';\n};\nexport type NormalizedRowLayout = {\n\ttype: 'row';\n\talignment: 'start' | 'center' | 'end';\n};\n\nexport type Layout = RegularLayout | PanelLayout | CardLayout | RowLayout;\nexport type NormalizedLayout =\n\t| NormalizedRegularLayout\n\t| NormalizedPanelLayout\n\t| NormalizedCardLayout\n\t| NormalizedRowLayout;\n\nexport type SimpleFormField = {\n\tid: string;\n\tlayout?: Layout;\n};\n\nexport type CombinedFormField = {\n\tid: string;\n\tlabel?: string;\n\tdescription?: string;\n\tlayout?: Layout;\n\tchildren: Array< FormField | string >;\n\tsummary?: string | string[];\n};\n\nexport type FormField = SimpleFormField | CombinedFormField;\n\n/**\n * The form configuration.\n */\nexport type Form = {\n\tlayout?: Layout;\n\tfields?: Array< FormField | string >;\n};\n\nexport interface DataFormProps< Item > {\n\tdata: Item;\n\tfields: Field< Item >[];\n\tform: Form;\n\tonChange: ( value: Record< string, any > ) => void;\n}\n\nexport interface FieldLayoutProps< Item > {\n\tdata: Item;\n\tfield: FormField;\n\tonChange: ( value: any ) => void;\n\thideLabelFromVision?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["@wordpress/dataviews/src/types.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type {\n\tReactElement,\n\tReactNode,\n\tComponentType,\n\tComponentProps,\n} from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { SetSelection } from './private-types';\n\n/**\n * WordPress dependencies\n */\nimport type { useFocusOnMount } from '@wordpress/compose';\n\n/**\n * Utility type that makes all properties of T optional recursively.\n * Used by field setValue functions to allow partial item updates.\n */\nexport type DeepPartial< T > = {\n\t[ P in keyof T ]?: T[ P ] extends object ? DeepPartial< T[ P ] > : T[ P ];\n};\n\nexport type SortDirection = 'asc' | 'desc';\n\n/**\n * Generic option type.\n */\nexport interface Option< Value extends any = any > {\n\tvalue: Value;\n\tlabel: string;\n\tdescription?: string;\n}\n\nexport interface FilterByConfig {\n\t/**\n\t * The list of operators supported by the field.\n\t */\n\toperators?: Operator[];\n\n\t/**\n\t * Whether it is a primary filter.\n\t *\n\t * A primary filter is always visible and is not listed in the \"Add filter\" component,\n\t * except for the list layout where it behaves like a secondary filter.\n\t */\n\tisPrimary?: boolean;\n}\n\nexport interface NormalizedFilterByConfig {\n\t/**\n\t * The list of operators supported by the field.\n\t */\n\toperators: Operator[];\n\n\t/**\n\t * Whether it is a primary filter.\n\t *\n\t * A primary filter is always visible and is not listed in the \"Add filter\" component,\n\t * except for the list layout where it behaves like a secondary filter.\n\t */\n\tisPrimary?: boolean;\n}\n\ninterface FilterConfigForType {\n\t/**\n\t * What operators are used by default.\n\t */\n\tdefaultOperators: Operator[];\n\n\t/**\n\t * What operators are supported by the field.\n\t */\n\tvalidOperators: Operator[];\n}\n\nexport type Operator =\n\t| 'is'\n\t| 'isNot'\n\t| 'isAny'\n\t| 'isNone'\n\t| 'isAll'\n\t| 'isNotAll'\n\t| 'lessThan'\n\t| 'greaterThan'\n\t| 'lessThanOrEqual'\n\t| 'greaterThanOrEqual'\n\t| 'before'\n\t| 'after'\n\t| 'beforeInc'\n\t| 'afterInc'\n\t| 'contains'\n\t| 'notContains'\n\t| 'startsWith'\n\t| 'between'\n\t| 'on'\n\t| 'notOn'\n\t| 'inThePast'\n\t| 'over';\n\nexport type FieldType =\n\t| 'text'\n\t| 'integer'\n\t| 'datetime'\n\t| 'date'\n\t| 'media'\n\t| 'boolean'\n\t| 'email'\n\t| 'password'\n\t| 'telephone'\n\t| 'color'\n\t| 'url'\n\t| 'array';\n\n/**\n * An abstract interface for Field based on the field type.\n */\nexport type FieldTypeDefinition< Item > = {\n\t/**\n\t * Callback used to sort the field.\n\t */\n\tsort: ( a: Item, b: Item, direction: SortDirection ) => number;\n\n\t/**\n\t * Callback used to validate the field.\n\t */\n\tisValid: Rules< Item >;\n\n\t/**\n\t * Callback used to render an edit control for the field or control name.\n\t */\n\tEdit:\n\t\t| ComponentType< DataFormControlProps< Item > >\n\t\t| string\n\t\t| EditConfig\n\t\t| null;\n\n\t/**\n\t * Callback used to render the field.\n\t */\n\trender: ComponentType< DataViewRenderFieldProps< Item > >;\n\n\t/**\n\t * The filter config for the field.\n\t */\n\tfilterBy: FilterConfigForType | false;\n\n\t/**\n\t * Whether the field is readOnly.\n\t * If `true`, the value will be rendered using the `render` callback.\n\t */\n\treadOnly?: boolean;\n\n\t/**\n\t * Whether the field is sortable.\n\t */\n\tenableSorting: boolean;\n};\n\nexport type Rules< Item > = {\n\trequired?: boolean;\n\telements?: boolean;\n\tcustom?: ( item: Item, field: NormalizedField< Item > ) => null | string;\n};\n\n/**\n * Edit configuration for textarea controls.\n */\nexport type EditConfigTextarea = {\n\tcontrol: 'textarea';\n\t/**\n\t * Number of rows for the textarea.\n\t */\n\trows?: number;\n};\n\n/**\n * Edit configuration for text controls.\n */\nexport type EditConfigText = {\n\tcontrol: 'text';\n\t/**\n\t * Prefix component to display before the input.\n\t */\n\tprefix?: React.ComponentType;\n\t/**\n\t * Suffix component to display after the input.\n\t */\n\tsuffix?: React.ComponentType;\n};\n\n/**\n * Edit configuration for other control types (excluding 'text' and 'textarea').\n */\nexport type EditConfigGeneric = {\n\tcontrol: Exclude< FieldType, 'text' | 'textarea' >;\n};\n\n/**\n * Edit configuration object with type-safe control options.\n * Each control type has its own specific configuration properties.\n */\nexport type EditConfig =\n\t| EditConfigTextarea\n\t| EditConfigText\n\t| EditConfigGeneric;\n\n/**\n * A dataview field for a specific property of a data type.\n */\nexport type Field< Item > = {\n\t/**\n\t * Type of the fields.\n\t */\n\ttype?: FieldType;\n\n\t/**\n\t * The unique identifier of the field.\n\t */\n\tid: string;\n\n\t/**\n\t * The label of the field. Defaults to the id.\n\t */\n\tlabel?: string;\n\n\t/**\n\t * The header of the field. Defaults to the label.\n\t * It allows the usage of a React Element to render the field labels.\n\t */\n\theader?: string | ReactElement;\n\n\t/**\n\t * A description of the field.\n\t */\n\tdescription?: string;\n\n\t/**\n\t * Placeholder for the field.\n\t */\n\tplaceholder?: string;\n\n\t/**\n\t * Callback used to render the field. Defaults to `field.getValue`.\n\t */\n\trender?: ComponentType< DataViewRenderFieldProps< Item > >;\n\n\t/**\n\t * Callback used to render an edit control for the field.\n\t */\n\tEdit?: ComponentType< DataFormControlProps< Item > > | string | EditConfig;\n\n\t/**\n\t * Callback used to sort the field.\n\t */\n\tsort?: ( a: Item, b: Item, direction: SortDirection ) => number;\n\n\t/**\n\t * Callback used to validate the field.\n\t */\n\tisValid?: Rules< Item >;\n\n\t/**\n\t * Callback used to decide if a field should be displayed.\n\t */\n\tisVisible?: ( item: Item ) => boolean;\n\n\t/**\n\t * Whether the field is sortable.\n\t */\n\tenableSorting?: boolean;\n\n\t/**\n\t * Whether the field is searchable.\n\t */\n\tenableGlobalSearch?: boolean;\n\n\t/**\n\t * Whether the field can be hidden in the UI.\n\t */\n\tenableHiding?: boolean;\n\n\t/**\n\t * The list of options to pick from when using the field as a filter.\n\t */\n\telements?: Option[];\n\n\t/**\n\t * Filter config for the field.\n\t */\n\tfilterBy?: FilterByConfig | false;\n\n\t/**\n\t * Whether the field is readOnly.\n\t * If `true`, the value will be rendered using the `render` callback.\n\t */\n\treadOnly?: boolean;\n\n\t/**\n\t * Callback used to retrieve the value of the field from the item.\n\t * Defaults to `item[ field.id ]`.\n\t */\n\tgetValue?: ( args: { item: Item } ) => any;\n\n\t/**\n\t * Callback used to set the value of the field on the item.\n\t * Used for editing operations to update field values.\n\t */\n\tsetValue?: ( args: { item: Item; value: any } ) => DeepPartial< Item >;\n};\n\nexport type NormalizedField< Item > = Omit< Field< Item >, 'Edit' > & {\n\tlabel: string;\n\theader: string | ReactElement;\n\tgetValue: ( args: { item: Item } ) => any;\n\tsetValue: ( args: { item: Item; value: any } ) => DeepPartial< Item >;\n\trender: ComponentType< DataViewRenderFieldProps< Item > >;\n\tEdit: ComponentType< DataFormControlProps< Item > > | null;\n\tsort: ( a: Item, b: Item, direction: SortDirection ) => number;\n\tisValid: Rules< Item >;\n\tenableHiding: boolean;\n\tenableSorting: boolean;\n\tfilterBy: NormalizedFilterByConfig | false;\n\treadOnly: boolean;\n};\n\n/**\n * A collection of dataview fields for a data type.\n */\nexport type Fields< Item > = Field< Item >[];\n\nexport type Data< Item > = Item[];\n\nexport type DataFormControlProps< Item > = {\n\tdata: Item;\n\tfield: NormalizedField< Item >;\n\tonChange: ( value: DeepPartial< Item > ) => void;\n\thideLabelFromVision?: boolean;\n\t/**\n\t * The currently selected filter operator for this field.\n\t *\n\t * Used by DataViews filters to determine which control to render based on the operator type.\n\t */\n\toperator?: Operator;\n\t/**\n\t * Configuration object for the control.\n\t */\n\tconfig?: {\n\t\tprefix?: React.ComponentType;\n\t\tsuffix?: React.ComponentType;\n\t\trows?: number;\n\t};\n};\n\nexport type DataViewRenderFieldProps< Item > = {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n\tconfig?: {\n\t\tsizes: string;\n\t};\n};\n\n/**\n * The filters applied to the dataset.\n */\nexport interface Filter {\n\t/**\n\t * The field to filter by.\n\t */\n\tfield: string;\n\n\t/**\n\t * The operator to use.\n\t */\n\toperator: Operator;\n\n\t/**\n\t * The value to filter by.\n\t */\n\tvalue: any;\n\n\t/**\n\t * Whether the filter can be edited by the user.\n\t */\n\tisLocked?: boolean;\n}\n\nexport interface NormalizedFilter {\n\t/**\n\t * The field to filter by.\n\t */\n\tfield: string;\n\n\t/**\n\t * The field name.\n\t */\n\tname: string;\n\n\t/**\n\t * The list of options to pick from when using the field as a filter.\n\t */\n\telements: Option[];\n\n\t/**\n\t * Is a single selection filter.\n\t */\n\tsingleSelection: boolean;\n\n\t/**\n\t * The list of operators supported by the field.\n\t */\n\toperators: Operator[];\n\n\t/**\n\t * Whether the filter is visible.\n\t */\n\tisVisible: boolean;\n\n\t/**\n\t * Whether it is a primary filter.\n\t */\n\tisPrimary: boolean;\n\n\t/**\n\t * Whether the filter can be edited by the user.\n\t */\n\tisLocked: boolean;\n}\n\ninterface ViewBase {\n\t/**\n\t * The layout of the view.\n\t */\n\ttype: string;\n\n\t/**\n\t * The global search term.\n\t */\n\tsearch?: string;\n\n\t/**\n\t * The filters to apply.\n\t */\n\tfilters?: Filter[];\n\n\t/**\n\t * The sorting configuration.\n\t */\n\tsort?: {\n\t\t/**\n\t\t * The field to sort by.\n\t\t */\n\t\tfield: string;\n\n\t\t/**\n\t\t * The direction to sort by.\n\t\t */\n\t\tdirection: SortDirection;\n\t};\n\n\t/**\n\t * The active page\n\t */\n\tpage?: number;\n\n\t/**\n\t * The number of items per page\n\t */\n\tperPage?: number;\n\n\t/**\n\t * The fields to render\n\t */\n\tfields?: string[];\n\n\t/**\n\t * Title field\n\t */\n\ttitleField?: string;\n\n\t/**\n\t * Media field\n\t */\n\tmediaField?: string;\n\n\t/**\n\t * Description field\n\t */\n\tdescriptionField?: string;\n\n\t/**\n\t * Whether to show the title\n\t */\n\tshowTitle?: boolean;\n\n\t/**\n\t * Whether to show the media\n\t */\n\tshowMedia?: boolean;\n\n\t/**\n\t * Whether to show the description\n\t */\n\tshowDescription?: boolean;\n\n\t/**\n\t * Whether to show the hierarchical levels.\n\t */\n\tshowLevels?: boolean;\n\n\t/**\n\t * The field to group by.\n\t */\n\tgroupByField?: string;\n\n\t/**\n\t * Whether infinite scroll is enabled.\n\t */\n\tinfiniteScrollEnabled?: boolean;\n}\n\nexport interface ColumnStyle {\n\t/**\n\t * The width of the field column.\n\t */\n\twidth?: string | number;\n\n\t/**\n\t * The minimum width of the field column.\n\t */\n\tmaxWidth?: string | number;\n\n\t/**\n\t * The maximum width of the field column.\n\t */\n\tminWidth?: string | number;\n\n\t/**\n\t * The alignment of the field column, defaults to left.\n\t */\n\talign?: 'start' | 'center' | 'end';\n}\n\nexport type Density = 'compact' | 'balanced' | 'comfortable';\n\nexport interface ViewTable extends ViewBase {\n\ttype: 'table';\n\n\tlayout?: {\n\t\t/**\n\t\t * The styles for the columns.\n\t\t */\n\t\tstyles?: Record< string, ColumnStyle >;\n\n\t\t/**\n\t\t * The density of the view.\n\t\t */\n\t\tdensity?: Density;\n\n\t\t/**\n\t\t * Whether the view allows column moving.\n\t\t */\n\t\tenableMoving?: boolean;\n\t};\n}\n\nexport interface ViewList extends ViewBase {\n\ttype: 'list';\n}\n\nexport interface ViewGrid extends ViewBase {\n\ttype: 'grid';\n\n\tlayout?: {\n\t\t/**\n\t\t * The fields to use as badge fields.\n\t\t */\n\t\tbadgeFields?: string[];\n\n\t\t/**\n\t\t * The preview size of the grid.\n\t\t */\n\t\tpreviewSize?: number;\n\t};\n}\n\nexport interface ViewPickerGrid extends ViewBase {\n\ttype: 'pickerGrid';\n\n\tlayout?: {\n\t\t/**\n\t\t * The fields to use as badge fields.\n\t\t */\n\t\tbadgeFields?: string[];\n\n\t\t/**\n\t\t * The preview size of the grid.\n\t\t */\n\t\tpreviewSize?: number;\n\t};\n}\n\nexport type View = ViewList | ViewGrid | ViewTable | ViewPickerGrid;\n\ninterface ActionBase< Item > {\n\t/**\n\t * The unique identifier of the action.\n\t */\n\tid: string;\n\n\t/**\n\t * The label of the action.\n\t * In case we want to adjust the label based on the selected items,\n\t * a function can be provided.\n\t */\n\tlabel: string | ( ( items: Item[] ) => string );\n\n\t/**\n\t * The icon of the action. (Either a string or an SVG element)\n\t * This should be IconType from the components package\n\t * but that import is breaking typescript build for the moment.\n\t */\n\ticon?: any;\n\n\t/**\n\t * Whether the action is disabled.\n\t */\n\tdisabled?: boolean;\n\n\t/**\n\t * Whether the action is destructive.\n\t */\n\tisDestructive?: boolean;\n\n\t/**\n\t * Whether the action is a primary action.\n\t */\n\tisPrimary?: boolean;\n\n\t/**\n\t * Whether the item passed as an argument supports the current action.\n\t */\n\tisEligible?: ( item: Item ) => boolean;\n\n\t/**\n\t * Whether the action can be used as a bulk action.\n\t */\n\tsupportsBulk?: boolean;\n\n\t/**\n\t * The context in which the action is visible.\n\t * This is only a \"meta\" information for now.\n\t */\n\tcontext?: 'list' | 'single';\n}\n\nexport interface RenderModalProps< Item > {\n\titems: Item[];\n\tcloseModal?: () => void;\n\tonActionPerformed?: ( items: Item[] ) => void;\n}\n\nexport interface ActionModal< Item > extends ActionBase< Item > {\n\t/**\n\t * Modal to render when the action is triggered.\n\t */\n\tRenderModal: ( {\n\t\titems,\n\t\tcloseModal,\n\t\tonActionPerformed,\n\t}: RenderModalProps< Item > ) => ReactElement;\n\n\t/**\n\t * Whether to hide the modal header.\n\t */\n\thideModalHeader?: boolean;\n\n\t/**\n\t * The header of the modal.\n\t */\n\tmodalHeader?: string;\n\n\t/**\n\t * The size of the modal.\n\t *\n\t * @default 'medium'\n\t */\n\tmodalSize?: 'small' | 'medium' | 'large' | 'fill';\n\n\t/**\n\t * The focus on mount property of the modal.\n\t */\n\tmodalFocusOnMount?:\n\t\t| Parameters< typeof useFocusOnMount >[ 0 ]\n\t\t| 'firstContentElement';\n}\n\nexport interface ActionButton< Item > extends ActionBase< Item > {\n\t/**\n\t * The callback to execute when the action is triggered.\n\t */\n\tcallback: (\n\t\titems: Item[],\n\t\tcontext: {\n\t\t\tregistry: any;\n\t\t\tonActionPerformed?: ( items: Item[] ) => void;\n\t\t}\n\t) => void;\n}\n\nexport type Action< Item > = ActionModal< Item > | ActionButton< Item >;\n\nexport interface ViewBaseProps< Item > {\n\tclassName?: string;\n\tactions: Action< Item >[];\n\tdata: Item[];\n\tfields: NormalizedField< Item >[];\n\tgetItemId: ( item: Item ) => string;\n\tgetItemLevel?: ( item: Item ) => number;\n\tisLoading?: boolean;\n\tonChangeView: ( view: View ) => void;\n\tonChangeSelection: SetSelection;\n\tselection: string[];\n\tsetOpenedFilter: ( fieldId: string ) => void;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n\tview: View;\n\tempty: ReactNode;\n}\n\nexport type ViewPickerBaseProps< Item > = Omit<\n\tViewBaseProps< Item >,\n\t| 'view'\n\t| 'onChangeView'\n\t// The following props are not supported for pickers.\n\t| 'isItemClickable'\n\t| 'onClickItem'\n\t| 'renderItemLink'\n\t| 'getItemLevel'\n> & {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n};\n\nexport interface ViewTableProps< Item > extends ViewBaseProps< Item > {\n\tview: ViewTable;\n}\n\nexport interface ViewListProps< Item > extends ViewBaseProps< Item > {\n\tview: ViewList;\n}\n\nexport interface ViewGridProps< Item > extends ViewBaseProps< Item > {\n\tview: ViewGrid;\n}\n\nexport interface ViewPickerGridProps< Item >\n\textends Omit< ViewPickerBaseProps< Item >, 'view' > {\n\tview: ViewPickerGrid;\n}\n\nexport type ViewProps< Item > =\n\t| ViewTableProps< Item >\n\t| ViewGridProps< Item >\n\t| ViewListProps< Item >;\n\nexport type ViewPickerProps< Item > = ViewPickerGridProps< Item >;\n\nexport interface SupportedLayouts {\n\tlist?: Omit< ViewList, 'type' >;\n\tgrid?: Omit< ViewGrid, 'type' >;\n\ttable?: Omit< ViewTable, 'type' >;\n\tpickerGrid?: Omit< ViewPickerGrid, 'type' >;\n}\n\n/**\n * DataForm layouts.\n */\nexport type LayoutType = 'regular' | 'panel' | 'card' | 'row';\nexport type LabelPosition = 'top' | 'side' | 'none';\n\nexport type RegularLayout = {\n\ttype: 'regular';\n\tlabelPosition?: LabelPosition;\n};\nexport type NormalizedRegularLayout = {\n\ttype: 'regular';\n\tlabelPosition: LabelPosition;\n};\n\nexport type PanelLayout = {\n\ttype: 'panel';\n\tlabelPosition?: LabelPosition;\n\topenAs?: 'dropdown' | 'modal';\n};\nexport type NormalizedPanelLayout = {\n\ttype: 'panel';\n\tlabelPosition: LabelPosition;\n\topenAs: 'dropdown' | 'modal';\n};\n\nexport type CardLayout =\n\t| {\n\t\t\ttype: 'card';\n\t\t\twithHeader: false;\n\t\t\t// isOpened cannot be false if withHeader is false as well.\n\t\t\t// Otherwise, the card would not be visible.\n\t\t\tisOpened?: true;\n\t }\n\t| {\n\t\t\ttype: 'card';\n\t\t\twithHeader?: true | undefined;\n\t\t\tisOpened?: boolean;\n\t };\nexport type NormalizedCardLayout =\n\t| {\n\t\t\ttype: 'card';\n\t\t\twithHeader: false;\n\t\t\t// isOpened cannot be false if withHeader is false as well.\n\t\t\t// Otherwise, the card would not be visible.\n\t\t\tisOpened: true;\n\t }\n\t| {\n\t\t\ttype: 'card';\n\t\t\twithHeader: true;\n\t\t\tisOpened: boolean;\n\t };\n\nexport type RowLayout = {\n\ttype: 'row';\n\talignment?: 'start' | 'center' | 'end';\n};\nexport type NormalizedRowLayout = {\n\ttype: 'row';\n\talignment: 'start' | 'center' | 'end';\n};\n\nexport type Layout = RegularLayout | PanelLayout | CardLayout | RowLayout;\nexport type NormalizedLayout =\n\t| NormalizedRegularLayout\n\t| NormalizedPanelLayout\n\t| NormalizedCardLayout\n\t| NormalizedRowLayout;\n\nexport type SimpleFormField = {\n\tid: string;\n\tlayout?: Layout;\n};\n\nexport type CombinedFormField = {\n\tid: string;\n\tlabel?: string;\n\tdescription?: string;\n\tlayout?: Layout;\n\tchildren: Array< FormField | string >;\n\tsummary?: string | string[];\n};\n\nexport type FormField = SimpleFormField | CombinedFormField;\n\n/**\n * The form configuration.\n */\nexport type Form = {\n\tlayout?: Layout;\n\tfields?: Array< FormField | string >;\n};\n\nexport interface DataFormProps< Item > {\n\tdata: Item;\n\tfields: Field< Item >[];\n\tform: Form;\n\tonChange: ( value: Record< string, any > ) => void;\n}\n\nexport interface FieldLayoutProps< Item > {\n\tdata: Item;\n\tfield: FormField;\n\tonChange: ( value: any ) => void;\n\thideLabelFromVision?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
@@ -16,18 +16,35 @@ export function isItemValid(item, fields, form) {
16
16
  id
17
17
  }) => !!form.fields?.includes(id)));
18
18
  const isEmptyNullOrUndefined = value => [undefined, '', null].includes(value);
19
+ const isArrayOrElementsEmptyNullOrUndefined = value => {
20
+ return !Array.isArray(value) || value.length === 0 || value.every(element => isEmptyNullOrUndefined(element));
21
+ };
19
22
  return _fields.every(field => {
20
23
  const value = field.getValue({
21
24
  item
22
25
  });
23
26
  if (field.isValid.required) {
24
- if (field.type === 'text' && isEmptyNullOrUndefined(value) || field.type === 'email' && isEmptyNullOrUndefined(value) || field.type === 'url' && isEmptyNullOrUndefined(value) || field.type === 'telephone' && isEmptyNullOrUndefined(value) || field.type === 'password' && isEmptyNullOrUndefined(value) || field.type === 'integer' && isEmptyNullOrUndefined(value) || field.type === undefined && isEmptyNullOrUndefined(value)) {
27
+ if (field.type === 'text' && isEmptyNullOrUndefined(value) || field.type === 'email' && isEmptyNullOrUndefined(value) || field.type === 'url' && isEmptyNullOrUndefined(value) || field.type === 'telephone' && isEmptyNullOrUndefined(value) || field.type === 'password' && isEmptyNullOrUndefined(value) || field.type === 'integer' && isEmptyNullOrUndefined(value) || field.type === 'array' && isArrayOrElementsEmptyNullOrUndefined(value) || field.type === undefined && isEmptyNullOrUndefined(value)) {
25
28
  return false;
26
29
  }
27
30
  if (field.type === 'boolean' && value !== true) {
28
31
  return false;
29
32
  }
30
33
  }
34
+ if (field.isValid.elements) {
35
+ if (field.elements) {
36
+ const validValues = field.elements.map(element => element.value);
37
+ if (field.type === 'array') {
38
+ // For arrays, check if all values are valid elements
39
+ if (Array.isArray(value)) {
40
+ return value.every(arrayItem => validValues.includes(arrayItem));
41
+ }
42
+ return false;
43
+ }
44
+ // For single-value fields, check if the value is a valid element
45
+ return validValues.includes(value);
46
+ }
47
+ }
31
48
  if (typeof field.isValid.custom === 'function' && field.isValid.custom(item, field) !== null) {
32
49
  return false;
33
50
  }
@@ -1 +1 @@
1
- {"version":3,"names":["normalizeFields","isItemValid","item","fields","form","_fields","filter","id","includes","isEmptyNullOrUndefined","value","undefined","every","field","getValue","isValid","required","type","custom"],"sources":["@wordpress/dataviews/src/validation.ts"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport { normalizeFields } from './normalize-fields';\nimport type { Field, Form } from './types';\n\n/**\n * Whether or not the given item's value is valid according to the fields and form config.\n *\n * @param item The item to validate.\n * @param fields Fields config.\n * @param form Form config.\n *\n * @return A boolean indicating if the item is valid (true) or not (false).\n */\nexport function isItemValid< Item >(\n\titem: Item,\n\tfields: Field< Item >[],\n\tform: Form\n): boolean {\n\tconst _fields = normalizeFields(\n\t\tfields.filter( ( { id } ) => !! form.fields?.includes( id ) )\n\t);\n\n\tconst isEmptyNullOrUndefined = ( value: any ) =>\n\t\t[ undefined, '', null ].includes( value );\n\n\treturn _fields.every( ( field ) => {\n\t\tconst value = field.getValue( { item } );\n\n\t\tif ( field.isValid.required ) {\n\t\t\tif (\n\t\t\t\t( field.type === 'text' && isEmptyNullOrUndefined( value ) ) ||\n\t\t\t\t( field.type === 'email' && isEmptyNullOrUndefined( value ) ) ||\n\t\t\t\t( field.type === 'url' && isEmptyNullOrUndefined( value ) ) ||\n\t\t\t\t( field.type === 'telephone' &&\n\t\t\t\t\tisEmptyNullOrUndefined( value ) ) ||\n\t\t\t\t( field.type === 'password' &&\n\t\t\t\t\tisEmptyNullOrUndefined( value ) ) ||\n\t\t\t\t( field.type === 'integer' &&\n\t\t\t\t\tisEmptyNullOrUndefined( value ) ) ||\n\t\t\t\t( field.type === undefined && isEmptyNullOrUndefined( value ) )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( field.type === 'boolean' && value !== true ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\ttypeof field.isValid.custom === 'function' &&\n\t\t\tfield.isValid.custom( item, field ) !== null\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,eAAe,QAAQ,oBAAoB;AAGpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAC1BC,IAAU,EACVC,MAAuB,EACvBC,IAAU,EACA;EACV,MAAMC,OAAO,GAAGL,eAAe,CAC9BG,MAAM,CAACG,MAAM,CAAE,CAAE;IAAEC;EAAG,CAAC,KAAM,CAAC,CAAEH,IAAI,CAACD,MAAM,EAAEK,QAAQ,CAAED,EAAG,CAAE,CAC7D,CAAC;EAED,MAAME,sBAAsB,GAAKC,KAAU,IAC1C,CAAEC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAE,CAACH,QAAQ,CAAEE,KAAM,CAAC;EAE1C,OAAOL,OAAO,CAACO,KAAK,CAAIC,KAAK,IAAM;IAClC,MAAMH,KAAK,GAAGG,KAAK,CAACC,QAAQ,CAAE;MAAEZ;IAAK,CAAE,CAAC;IAExC,IAAKW,KAAK,CAACE,OAAO,CAACC,QAAQ,EAAG;MAC7B,IACGH,KAAK,CAACI,IAAI,KAAK,MAAM,IAAIR,sBAAsB,CAAEC,KAAM,CAAC,IACxDG,KAAK,CAACI,IAAI,KAAK,OAAO,IAAIR,sBAAsB,CAAEC,KAAM,CAAG,IAC3DG,KAAK,CAACI,IAAI,KAAK,KAAK,IAAIR,sBAAsB,CAAEC,KAAM,CAAG,IACzDG,KAAK,CAACI,IAAI,KAAK,WAAW,IAC3BR,sBAAsB,CAAEC,KAAM,CAAG,IAChCG,KAAK,CAACI,IAAI,KAAK,UAAU,IAC1BR,sBAAsB,CAAEC,KAAM,CAAG,IAChCG,KAAK,CAACI,IAAI,KAAK,SAAS,IACzBR,sBAAsB,CAAEC,KAAM,CAAG,IAChCG,KAAK,CAACI,IAAI,KAAKN,SAAS,IAAIF,sBAAsB,CAAEC,KAAM,CAAG,EAC9D;QACD,OAAO,KAAK;MACb;MAEA,IAAKG,KAAK,CAACI,IAAI,KAAK,SAAS,IAAIP,KAAK,KAAK,IAAI,EAAG;QACjD,OAAO,KAAK;MACb;IACD;IAEA,IACC,OAAOG,KAAK,CAACE,OAAO,CAACG,MAAM,KAAK,UAAU,IAC1CL,KAAK,CAACE,OAAO,CAACG,MAAM,CAAEhB,IAAI,EAAEW,KAAM,CAAC,KAAK,IAAI,EAC3C;MACD,OAAO,KAAK;IACb;IAEA,OAAO,IAAI;EACZ,CAAE,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["normalizeFields","isItemValid","item","fields","form","_fields","filter","id","includes","isEmptyNullOrUndefined","value","undefined","isArrayOrElementsEmptyNullOrUndefined","Array","isArray","length","every","element","field","getValue","isValid","required","type","elements","validValues","map","arrayItem","custom"],"sources":["@wordpress/dataviews/src/validation.ts"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport { normalizeFields } from './normalize-fields';\nimport type { Field, Form } from './types';\n\n/**\n * Whether or not the given item's value is valid according to the fields and form config.\n *\n * @param item The item to validate.\n * @param fields Fields config.\n * @param form Form config.\n *\n * @return A boolean indicating if the item is valid (true) or not (false).\n */\nexport function isItemValid< Item >(\n\titem: Item,\n\tfields: Field< Item >[],\n\tform: Form\n): boolean {\n\tconst _fields = normalizeFields(\n\t\tfields.filter( ( { id } ) => !! form.fields?.includes( id ) )\n\t);\n\n\tconst isEmptyNullOrUndefined = ( value: any ) =>\n\t\t[ undefined, '', null ].includes( value );\n\n\tconst isArrayOrElementsEmptyNullOrUndefined = ( value: any ) => {\n\t\treturn (\n\t\t\t! Array.isArray( value ) ||\n\t\t\tvalue.length === 0 ||\n\t\t\tvalue.every( ( element: any ) => isEmptyNullOrUndefined( element ) )\n\t\t);\n\t};\n\n\treturn _fields.every( ( field ) => {\n\t\tconst value = field.getValue( { item } );\n\n\t\tif ( field.isValid.required ) {\n\t\t\tif (\n\t\t\t\t( field.type === 'text' && isEmptyNullOrUndefined( value ) ) ||\n\t\t\t\t( field.type === 'email' && isEmptyNullOrUndefined( value ) ) ||\n\t\t\t\t( field.type === 'url' && isEmptyNullOrUndefined( value ) ) ||\n\t\t\t\t( field.type === 'telephone' &&\n\t\t\t\t\tisEmptyNullOrUndefined( value ) ) ||\n\t\t\t\t( field.type === 'password' &&\n\t\t\t\t\tisEmptyNullOrUndefined( value ) ) ||\n\t\t\t\t( field.type === 'integer' &&\n\t\t\t\t\tisEmptyNullOrUndefined( value ) ) ||\n\t\t\t\t( field.type === 'array' &&\n\t\t\t\t\tisArrayOrElementsEmptyNullOrUndefined( value ) ) ||\n\t\t\t\t( field.type === undefined && isEmptyNullOrUndefined( value ) )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( field.type === 'boolean' && value !== true ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif ( field.isValid.elements ) {\n\t\t\tif ( field.elements ) {\n\t\t\t\tconst validValues = field.elements.map(\n\t\t\t\t\t( element ) => element.value\n\t\t\t\t);\n\n\t\t\t\tif ( field.type === 'array' ) {\n\t\t\t\t\t// For arrays, check if all values are valid elements\n\t\t\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\t\t\treturn value.every( ( arrayItem ) =>\n\t\t\t\t\t\t\tvalidValues.includes( arrayItem )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// For single-value fields, check if the value is a valid element\n\t\t\t\treturn validValues.includes( value );\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\ttypeof field.isValid.custom === 'function' &&\n\t\t\tfield.isValid.custom( item, field ) !== null\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,eAAe,QAAQ,oBAAoB;AAGpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAC1BC,IAAU,EACVC,MAAuB,EACvBC,IAAU,EACA;EACV,MAAMC,OAAO,GAAGL,eAAe,CAC9BG,MAAM,CAACG,MAAM,CAAE,CAAE;IAAEC;EAAG,CAAC,KAAM,CAAC,CAAEH,IAAI,CAACD,MAAM,EAAEK,QAAQ,CAAED,EAAG,CAAE,CAC7D,CAAC;EAED,MAAME,sBAAsB,GAAKC,KAAU,IAC1C,CAAEC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAE,CAACH,QAAQ,CAAEE,KAAM,CAAC;EAE1C,MAAME,qCAAqC,GAAKF,KAAU,IAAM;IAC/D,OACC,CAAEG,KAAK,CAACC,OAAO,CAAEJ,KAAM,CAAC,IACxBA,KAAK,CAACK,MAAM,KAAK,CAAC,IAClBL,KAAK,CAACM,KAAK,CAAIC,OAAY,IAAMR,sBAAsB,CAAEQ,OAAQ,CAAE,CAAC;EAEtE,CAAC;EAED,OAAOZ,OAAO,CAACW,KAAK,CAAIE,KAAK,IAAM;IAClC,MAAMR,KAAK,GAAGQ,KAAK,CAACC,QAAQ,CAAE;MAAEjB;IAAK,CAAE,CAAC;IAExC,IAAKgB,KAAK,CAACE,OAAO,CAACC,QAAQ,EAAG;MAC7B,IACGH,KAAK,CAACI,IAAI,KAAK,MAAM,IAAIb,sBAAsB,CAAEC,KAAM,CAAC,IACxDQ,KAAK,CAACI,IAAI,KAAK,OAAO,IAAIb,sBAAsB,CAAEC,KAAM,CAAG,IAC3DQ,KAAK,CAACI,IAAI,KAAK,KAAK,IAAIb,sBAAsB,CAAEC,KAAM,CAAG,IACzDQ,KAAK,CAACI,IAAI,KAAK,WAAW,IAC3Bb,sBAAsB,CAAEC,KAAM,CAAG,IAChCQ,KAAK,CAACI,IAAI,KAAK,UAAU,IAC1Bb,sBAAsB,CAAEC,KAAM,CAAG,IAChCQ,KAAK,CAACI,IAAI,KAAK,SAAS,IACzBb,sBAAsB,CAAEC,KAAM,CAAG,IAChCQ,KAAK,CAACI,IAAI,KAAK,OAAO,IACvBV,qCAAqC,CAAEF,KAAM,CAAG,IAC/CQ,KAAK,CAACI,IAAI,KAAKX,SAAS,IAAIF,sBAAsB,CAAEC,KAAM,CAAG,EAC9D;QACD,OAAO,KAAK;MACb;MAEA,IAAKQ,KAAK,CAACI,IAAI,KAAK,SAAS,IAAIZ,KAAK,KAAK,IAAI,EAAG;QACjD,OAAO,KAAK;MACb;IACD;IAEA,IAAKQ,KAAK,CAACE,OAAO,CAACG,QAAQ,EAAG;MAC7B,IAAKL,KAAK,CAACK,QAAQ,EAAG;QACrB,MAAMC,WAAW,GAAGN,KAAK,CAACK,QAAQ,CAACE,GAAG,CACnCR,OAAO,IAAMA,OAAO,CAACP,KACxB,CAAC;QAED,IAAKQ,KAAK,CAACI,IAAI,KAAK,OAAO,EAAG;UAC7B;UACA,IAAKT,KAAK,CAACC,OAAO,CAAEJ,KAAM,CAAC,EAAG;YAC7B,OAAOA,KAAK,CAACM,KAAK,CAAIU,SAAS,IAC9BF,WAAW,CAAChB,QAAQ,CAAEkB,SAAU,CACjC,CAAC;UACF;UACA,OAAO,KAAK;QACb;QACA;QACA,OAAOF,WAAW,CAAChB,QAAQ,CAAEE,KAAM,CAAC;MACrC;IACD;IAEA,IACC,OAAOQ,KAAK,CAACE,OAAO,CAACO,MAAM,KAAK,UAAU,IAC1CT,KAAK,CAACE,OAAO,CAACO,MAAM,CAAEzB,IAAI,EAAEgB,KAAM,CAAC,KAAK,IAAI,EAC3C;MACD,OAAO,KAAK;IACb;IAEA,OAAO,IAAI;EACZ,CAAE,CAAC;AACJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.story.d.ts","sourceRoot":"","sources":["../../../../src/components/dataform/stories/index.story.tsx"],"names":[],"mappings":"AAeA;;GAEG;AACH,OAAO,QAAQ,MAAM,UAAU,CAAC;AA+1ChC,QAAA,MAAM,IAAI;;;CAGT,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,eAAO,MAAM,UAAU;6BAxfuB;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE;;;;;;;;;;;;CAmgBpE,CAAC;AAEF,eAAO,MAAM,WAAW;yCAtgCrB;QACF,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;QAC/C,aAAa,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;QACnD,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;KACzC;;;;;;;;;;;;;;;;;CAghCA,CAAC;AAEF,eAAO,MAAM,aAAa;iCAtoCvB;QACF,aAAa,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;KACnD;;;;;;;;;;CA6oCA,CAAC;AAEF,eAAO,MAAM,SAAS;6BA1VnB;QACF,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;KACtC;;;;;;;;;;;;;CAoWA,CAAC;AAEF,eAAO,MAAM,WAAW;;CAEvB,CAAC;AAEF,eAAO,MAAM,UAAU;0CAn7BpB;QACF,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;KAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;CAq8BA,CAAC;AAEF,eAAO,MAAM,UAAU;;CAEtB,CAAC;AA8MF,eAAO,MAAM,WAAW;;CAEvB,CAAC"}
1
+ {"version":3,"file":"index.story.d.ts","sourceRoot":"","sources":["../../../../src/components/dataform/stories/index.story.tsx"],"names":[],"mappings":"AAeA;;GAEG;AACH,OAAO,QAAQ,MAAM,UAAU,CAAC;AAu6ChC,QAAA,MAAM,IAAI;;;CAGT,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,eAAO,MAAM,UAAU;6BAxfuB;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE;;;;;;;;;;;;CAmgBpE,CAAC;AAEF,eAAO,MAAM,WAAW;yCA9kCrB;QACF,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;QAC/C,aAAa,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;QACnD,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;KACzC;;;;;;;;;;;;;;;;;CAwlCA,CAAC;AAEF,eAAO,MAAM,aAAa;iCA9sCvB;QACF,aAAa,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;KACnD;;;;;;;;;;CAqtCA,CAAC;AAEF,eAAO,MAAM,SAAS;6BA1VnB;QACF,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;KACtC;;;;;;;;;;;;;CAoWA,CAAC;AAEF,eAAO,MAAM,WAAW;;CAEvB,CAAC;AAEF,eAAO,MAAM,UAAU;0CA3/BpB;QACF,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;KAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6gCA,CAAC;AAEF,eAAO,MAAM,UAAU;;CAEtB,CAAC;AA8MF,eAAO,MAAM,WAAW;;CAEvB,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import type { ReactNode, ComponentProps, ReactElement } from 'react';
5
- import { default as DataViewsFilters, FiltersToggle } from '../dataviews-filters';
5
+ import { Filters, FiltersToggled, FiltersToggle } from '../dataviews-filters';
6
6
  import DataViewsLayout from '../dataviews-layout';
7
7
  import DataViewsFooter from '../dataviews-footer';
8
8
  import DataViewsSearch from '../dataviews-search';
@@ -50,8 +50,9 @@ type DataViewsProps<Item> = {
50
50
  declare function DataViews<Item>({ view, onChangeView, fields, search, searchLabel, actions, data, getItemId, getItemLevel, isLoading, paginationInfo, defaultLayouts: defaultLayoutsProperty, selection: selectionProperty, onChangeSelection, onClickItem, renderItemLink, isItemClickable, header, children, config, empty, }: DataViewsProps<Item>): import("react").JSX.Element | null;
51
51
  declare const DataViewsSubComponents: typeof DataViews & {
52
52
  BulkActionToolbar: typeof BulkActionsFooter;
53
- Filters: typeof DataViewsFilters;
53
+ Filters: typeof Filters;
54
54
  FiltersToggle: typeof FiltersToggle;
55
+ FiltersToggled: typeof FiltersToggled;
55
56
  Layout: typeof DataViewsLayout;
56
57
  LayoutSwitcher: typeof ViewTypeMenu;
57
58
  Pagination: typeof DataViewsPagination;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dataviews/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dataviews/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ declare function FiltersToggled(props: {
2
+ className?: string;
3
+ }): import("react").JSX.Element | null;
4
+ export default FiltersToggled;
5
+ //# sourceMappingURL=filters-toggled.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters-toggled.d.ts","sourceRoot":"","sources":["../../../src/components/dataviews-filters/filters-toggled.tsx"],"names":[],"mappings":"AAWA,iBAAS,cAAc,CAAE,KAAK,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,sCAMrD;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ declare function Filters({ className }: {
2
+ className?: string;
3
+ }): import("react").JSX.Element | null;
4
+ declare const _default: import("react").MemoExoticComponent<typeof Filters>;
5
+ export default _default;
6
+ //# sourceMappingURL=filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../src/components/dataviews-filters/filters.tsx"],"names":[],"mappings":"AAeA,iBAAS,OAAO,CAAE,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,sCAuDtD;;AAED,wBAA+B"}
@@ -1,9 +1,5 @@
1
- import type { NormalizedFilter, NormalizedField, View } from '../../types';
2
- export declare function useFilters(fields: NormalizedField<any>[], view: View): NormalizedFilter[];
3
- export declare function FiltersToggle(): import("react").JSX.Element | null;
4
- declare function Filters({ className }: {
5
- className?: string;
6
- }): import("react").JSX.Element | null;
7
- declare const _default: import("react").MemoExoticComponent<typeof Filters>;
8
- export default _default;
1
+ export { default as Filters } from './filters';
2
+ export { default as FiltersToggle } from './toggle';
3
+ export { default as useFilters } from './use-filters';
4
+ export { default as FiltersToggled } from './filters-toggled';
9
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dataviews-filters/index.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE3E,wBAAgB,UAAU,CAAE,MAAM,EAAE,eAAe,CAAE,GAAG,CAAE,EAAE,EAAE,IAAI,EAAE,IAAI,sBA2DvE;AAED,wBAAgB,aAAa,uCAwE5B;AA8BD,iBAAS,OAAO,CAAE,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,sCAuDtD;;AAED,wBAA+B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dataviews-filters/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare function FiltersToggle(): import("react").JSX.Element | null;
2
+ export default FiltersToggle;
3
+ //# sourceMappingURL=toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.d.ts","sourceRoot":"","sources":["../../../src/components/dataviews-filters/toggle.tsx"],"names":[],"mappings":"AAeA,iBAAS,aAAa,uCAwErB;AA8BD,eAAe,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { NormalizedFilter, NormalizedField, View } from '../../types';
2
+ declare function useFilters(fields: NormalizedField<any>[], view: View): NormalizedFilter[];
3
+ export default useFilters;
4
+ //# sourceMappingURL=use-filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-filters.d.ts","sourceRoot":"","sources":["../../../src/components/dataviews-filters/use-filters.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE3E,iBAAS,UAAU,CAAE,MAAM,EAAE,eAAe,CAAE,GAAG,CAAE,EAAE,EAAE,IAAI,EAAE,IAAI,sBA2DhE;AAED,eAAe,UAAU,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import type { ReactNode } from 'react';
5
- import { default as DataViewsFilters, FiltersToggle } from '../dataviews-filters';
5
+ import { Filters, FiltersToggled, FiltersToggle } from '../dataviews-filters';
6
6
  import DataViewsLayout from '../dataviews-layout';
7
7
  import { DataViewsPickerFooter } from './footer';
8
8
  import DataViewsSearch from '../dataviews-search';
@@ -43,7 +43,8 @@ type DataViewsPickerProps<Item> = {
43
43
  declare function DataViewsPicker<Item>({ view, onChangeView, fields, search, searchLabel, actions, data, getItemId, isLoading, paginationInfo, defaultLayouts: defaultLayoutsProperty, selection, onChangeSelection, children, config, itemListLabel, empty, }: DataViewsPickerProps<Item>): import("react").JSX.Element | null;
44
44
  declare const DataViewsPickerSubComponents: typeof DataViewsPicker & {
45
45
  BulkActionToolbar: typeof DataViewsPickerFooter;
46
- Filters: typeof DataViewsFilters;
46
+ Filters: typeof Filters;
47
+ FiltersToggled: typeof FiltersToggled;
47
48
  FiltersToggle: typeof FiltersToggle;
48
49
  Layout: typeof DataViewsLayout;
49
50
  LayoutSwitcher: typeof ViewTypeMenu;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dataviews-picker/index.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAoBvC,OAAO,EACN,OAAO,IAAI,gBAAgB,EAE3B,aAAa,EACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAA4B,EAC3B,2BAA2B,EAC3B,YAAY,EACZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/E,KAAK,UAAU,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAQjC,KAAK,oBAAoB,CAAE,IAAI,IAAK;IACnC,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,EAAE,CAAE,IAAI,EAAE,IAAI,KAAM,IAAI,CAAC;IACrC,MAAM,EAAE,KAAK,CAAE,IAAI,CAAE,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,YAAY,CAAE,IAAI,CAAE,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;KACnC,CAAC;IACF,cAAc,EAAE,gBAAgB,CAAC;IACjC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,iBAAiB,EAAE,CAAE,KAAK,EAAE,MAAM,EAAE,KAAM,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE;QACR,YAAY,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC;CAClB,GAAG,CAAE,IAAI,SAAS,UAAU,GAC1B;IAAE,SAAS,CAAC,EAAE,CAAE,IAAI,EAAE,IAAI,KAAM,MAAM,CAAA;CAAE,GACxC;IAAE,SAAS,EAAE,CAAE,IAAI,EAAE,IAAI,KAAM,MAAM,CAAA;CAAE,CAAE,CAAC;AAgD7C,iBAAS,eAAe,CAAE,IAAI,EAAI,EACjC,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,MAAa,EACb,WAAuB,EACvB,OAAqB,EACrB,IAAI,EACJ,SAA4B,EAC5B,SAAiB,EACjB,cAAc,EACd,cAAc,EAAE,sBAAsB,EACtC,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,MAA8C,EAC9C,aAAa,EACb,KAAK,GACL,EAAE,oBAAoB,CAAE,IAAI,CAAE,sCAyH9B;AAGD,QAAA,MAAM,4BAA4B,EACd,OAAO,eAAe,GAAG;IAC3C,iBAAiB,EAAE,OAAO,qBAAqB,CAAC;IAChD,OAAO,EAAE,OAAO,gBAAgB,CAAC;IACjC,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,cAAc,EAAE,OAAO,YAAY,CAAC;IACpC,UAAU,EAAE,OAAO,mBAAmB,CAAC;IACvC,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,UAAU,EAAE,OAAO,2BAA2B,CAAC;CAC/C,CAAC;AAWH,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dataviews-picker/index.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAcvC,OAAO,EACN,OAAO,EACP,cAAc,EAEd,aAAa,EACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAA4B,EAC3B,2BAA2B,EAC3B,YAAY,EACZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/E,KAAK,UAAU,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAQjC,KAAK,oBAAoB,CAAE,IAAI,IAAK;IACnC,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,EAAE,CAAE,IAAI,EAAE,IAAI,KAAM,IAAI,CAAC;IACrC,MAAM,EAAE,KAAK,CAAE,IAAI,CAAE,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,YAAY,CAAE,IAAI,CAAE,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;KACnC,CAAC;IACF,cAAc,EAAE,gBAAgB,CAAC;IACjC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,iBAAiB,EAAE,CAAE,KAAK,EAAE,MAAM,EAAE,KAAM,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE;QACR,YAAY,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC;CAClB,GAAG,CAAE,IAAI,SAAS,UAAU,GAC1B;IAAE,SAAS,CAAC,EAAE,CAAE,IAAI,EAAE,IAAI,KAAM,MAAM,CAAA;CAAE,GACxC;IAAE,SAAS,EAAE,CAAE,IAAI,EAAE,IAAI,KAAM,MAAM,CAAA;CAAE,CAAE,CAAC;AA6C7C,iBAAS,eAAe,CAAE,IAAI,EAAI,EACjC,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,MAAa,EACb,WAAuB,EACvB,OAAqB,EACrB,IAAI,EACJ,SAA4B,EAC5B,SAAiB,EACjB,cAAc,EACd,cAAc,EAAE,sBAAsB,EACtC,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,MAA8C,EAC9C,aAAa,EACb,KAAK,GACL,EAAE,oBAAoB,CAAE,IAAI,CAAE,sCAyH9B;AAGD,QAAA,MAAM,4BAA4B,EACd,OAAO,eAAe,GAAG;IAC3C,iBAAiB,EAAE,OAAO,qBAAqB,CAAC;IAChD,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,cAAc,EAAE,OAAO,YAAY,CAAC;IACpC,UAAU,EAAE,OAAO,mBAAmB,CAAC;IACvC,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,UAAU,EAAE,OAAO,2BAA2B,CAAC;CAC/C,CAAC;AAYH,eAAe,4BAA4B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dataviews-view-config/index.tsx"],"names":[],"mappings":"AA4DA,wBAAgB,YAAY,uCA8D3B;AAuoBD,wBAAgB,2BAA2B,gCAqD1C;AAED,iBAAS,oBAAoB,gCAO5B;AAED,QAAA,MAAM,mBAAmB,kEAA+B,CAAC;AAEzD,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dataviews-view-config/index.tsx"],"names":[],"mappings":"AA4DA,wBAAgB,YAAY,uCA8D3B;AAspBD,wBAAgB,2BAA2B,gCAqD1C;AAED,iBAAS,oBAAoB,gCAO5B;AAED,QAAA,MAAM,mBAAmB,kEAA+B,CAAC;AAEzD,eAAe,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/dataform-controls/array.tsx"],"names":[],"mappings":"AAMA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAErD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAE,IAAI,EAAI,EAC7C,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,mBAAmB,GACnB,EAAE,oBAAoB,CAAE,IAAI,CAAE,+BAkE9B"}
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/dataform-controls/array.tsx"],"names":[],"mappings":"AAYA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAKrD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAE,IAAI,EAAI,EAC7C,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,mBAAmB,GACnB,EAAE,oBAAoB,CAAE,IAAI,CAAE,+BA0J9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dataviews-layouts/picker-grid/index.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAGX,mBAAmB,EACnB,MAAM,aAAa,CAAC;AAqNrB,iBAAS,cAAc,CAAE,IAAI,EAAI,EAChC,OAAO,EACP,IAAI,EACJ,MAAM,EACN,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,IAAI,EACJ,SAAS,EACT,KAAK,GACL,EAAE,mBAAmB,CAAE,IAAI,CAAE,+BAkO7B;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dataviews-layouts/picker-grid/index.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAGX,mBAAmB,EACnB,MAAM,aAAa,CAAC;AA4NrB,iBAAS,cAAc,CAAE,IAAI,EAAI,EAChC,OAAO,EACP,IAAI,EACJ,MAAM,EACN,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,IAAI,EACJ,SAAS,EACT,KAAK,GACL,EAAE,mBAAmB,CAAE,IAAI,CAAE,+BAkO7B;AAED,eAAe,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/field-types/array.tsx"],"names":[],"mappings":"AAKA;;GAEG;AACH,OAAO,KAAK,EAGX,mBAAmB,EAEnB,MAAM,UAAU,CAAC;AA8BlB,QAAA,MAAM,cAAc,EAAE,mBAAmB,CAAE,GAAG,CAyC7C,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/field-types/array.tsx"],"names":[],"mappings":"AAKA;;GAEG;AACH,OAAO,KAAK,EAGX,mBAAmB,EAEnB,MAAM,UAAU,CAAC;AA8BlB,QAAA,MAAM,cAAc,EAAE,mBAAmB,CAAE,GAAG,CAiC7C,CAAC;AAEF,eAAe,cAAc,CAAC"}