@wordpress/dataviews 4.2.0 → 4.3.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 (123) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +47 -7
  3. package/build/components/dataviews/index.js +3 -5
  4. package/build/components/dataviews/index.js.map +1 -1
  5. package/build/components/dataviews-bulk-actions/index.js +145 -141
  6. package/build/components/dataviews-bulk-actions/index.js.map +1 -1
  7. package/build/components/dataviews-filters/add-filter.js +4 -6
  8. package/build/components/dataviews-filters/add-filter.js.map +1 -1
  9. package/build/components/dataviews-filters/search-widget.js +28 -18
  10. package/build/components/dataviews-filters/search-widget.js.map +1 -1
  11. package/build/components/dataviews-footer/index.js +45 -0
  12. package/build/components/dataviews-footer/index.js.map +1 -0
  13. package/build/components/dataviews-item-actions/index.js +5 -8
  14. package/build/components/dataviews-item-actions/index.js.map +1 -1
  15. package/build/components/dataviews-pagination/index.js +4 -4
  16. package/build/components/dataviews-pagination/index.js.map +1 -1
  17. package/build/components/dataviews-view-config/index.js +171 -32
  18. package/build/components/dataviews-view-config/index.js.map +1 -1
  19. package/build/dataforms-layouts/panel/index.js +4 -1
  20. package/build/dataforms-layouts/panel/index.js.map +1 -1
  21. package/build/dataviews-layouts/index.js +48 -2
  22. package/build/dataviews-layouts/index.js.map +1 -1
  23. package/build/dataviews-layouts/list/index.js +124 -84
  24. package/build/dataviews-layouts/list/index.js.map +1 -1
  25. package/build/dataviews-layouts/table/column-header-menu.js +52 -54
  26. package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
  27. package/build/dataviews-layouts/table/index.js +7 -35
  28. package/build/dataviews-layouts/table/index.js.map +1 -1
  29. package/build/normalize-fields.js +4 -2
  30. package/build/normalize-fields.js.map +1 -1
  31. package/build/types.js.map +1 -1
  32. package/build-module/components/dataviews/index.js +3 -5
  33. package/build-module/components/dataviews/index.js.map +1 -1
  34. package/build-module/components/dataviews-bulk-actions/index.js +145 -143
  35. package/build-module/components/dataviews-bulk-actions/index.js.map +1 -1
  36. package/build-module/components/dataviews-filters/add-filter.js +4 -6
  37. package/build-module/components/dataviews-filters/add-filter.js.map +1 -1
  38. package/build-module/components/dataviews-filters/search-widget.js +28 -18
  39. package/build-module/components/dataviews-filters/search-widget.js.map +1 -1
  40. package/build-module/components/dataviews-footer/index.js +38 -0
  41. package/build-module/components/dataviews-footer/index.js.map +1 -0
  42. package/build-module/components/dataviews-item-actions/index.js +5 -8
  43. package/build-module/components/dataviews-item-actions/index.js.map +1 -1
  44. package/build-module/components/dataviews-pagination/index.js +5 -5
  45. package/build-module/components/dataviews-pagination/index.js.map +1 -1
  46. package/build-module/components/dataviews-view-config/index.js +177 -38
  47. package/build-module/components/dataviews-view-config/index.js.map +1 -1
  48. package/build-module/dataforms-layouts/panel/index.js +4 -1
  49. package/build-module/dataforms-layouts/panel/index.js.map +1 -1
  50. package/build-module/dataviews-layouts/index.js +45 -1
  51. package/build-module/dataviews-layouts/index.js.map +1 -1
  52. package/build-module/dataviews-layouts/list/index.js +125 -83
  53. package/build-module/dataviews-layouts/list/index.js.map +1 -1
  54. package/build-module/dataviews-layouts/table/column-header-menu.js +52 -54
  55. package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
  56. package/build-module/dataviews-layouts/table/index.js +9 -37
  57. package/build-module/dataviews-layouts/table/index.js.map +1 -1
  58. package/build-module/normalize-fields.js +4 -2
  59. package/build-module/normalize-fields.js.map +1 -1
  60. package/build-module/types.js.map +1 -1
  61. package/build-style/style-rtl.css +79 -63
  62. package/build-style/style.css +79 -63
  63. package/build-types/components/dataviews/index.d.ts.map +1 -1
  64. package/build-types/components/dataviews/stories/fixtures.d.ts +27 -131
  65. package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
  66. package/build-types/components/dataviews/stories/index.story.d.ts +12 -53
  67. package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
  68. package/build-types/components/dataviews-bulk-actions/index.d.ts +11 -1
  69. package/build-types/components/dataviews-bulk-actions/index.d.ts.map +1 -1
  70. package/build-types/components/dataviews-filters/add-filter.d.ts.map +1 -1
  71. package/build-types/components/dataviews-filters/search-widget.d.ts.map +1 -1
  72. package/build-types/components/dataviews-footer/index.d.ts +2 -0
  73. package/build-types/components/dataviews-footer/index.d.ts.map +1 -0
  74. package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
  75. package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
  76. package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
  77. package/build-types/dataviews-layouts/index.d.ts +4 -2
  78. package/build-types/dataviews-layouts/index.d.ts.map +1 -1
  79. package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
  80. package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
  81. package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
  82. package/build-types/normalize-fields.d.ts.map +1 -1
  83. package/build-types/types.d.ts +2 -0
  84. package/build-types/types.d.ts.map +1 -1
  85. package/package.json +11 -11
  86. package/src/components/dataviews/index.tsx +2 -6
  87. package/src/components/dataviews/stories/fixtures.tsx +690 -0
  88. package/src/components/dataviews/stories/index.story.tsx +164 -0
  89. package/src/components/dataviews/style.scss +2 -0
  90. package/src/components/dataviews-bulk-actions/index.tsx +264 -213
  91. package/src/components/dataviews-bulk-actions/style.scss +9 -4
  92. package/src/components/dataviews-filters/add-filter.tsx +7 -11
  93. package/src/components/dataviews-filters/search-widget.tsx +45 -17
  94. package/src/components/dataviews-filters/style.scss +12 -2
  95. package/src/components/dataviews-footer/index.tsx +50 -0
  96. package/src/components/dataviews-footer/style.scss +40 -0
  97. package/src/components/dataviews-item-actions/index.tsx +8 -14
  98. package/src/components/dataviews-pagination/index.tsx +5 -5
  99. package/src/components/dataviews-pagination/style.scss +0 -19
  100. package/src/components/dataviews-view-config/index.tsx +252 -53
  101. package/src/components/dataviews-view-config/style.scss +25 -0
  102. package/src/dataforms-layouts/panel/index.tsx +2 -0
  103. package/src/dataviews-layouts/grid/style.scss +1 -1
  104. package/src/dataviews-layouts/index.ts +63 -2
  105. package/src/dataviews-layouts/list/index.tsx +199 -127
  106. package/src/dataviews-layouts/list/style.scss +10 -4
  107. package/src/dataviews-layouts/table/column-header-menu.tsx +85 -87
  108. package/src/dataviews-layouts/table/index.tsx +8 -65
  109. package/src/dataviews-layouts/table/style.scss +0 -5
  110. package/src/normalize-fields.ts +2 -0
  111. package/src/style.scss +1 -1
  112. package/src/types.ts +2 -0
  113. package/tsconfig.tsbuildinfo +1 -1
  114. package/build/components/dataviews-bulk-actions-toolbar/index.js +0 -207
  115. package/build/components/dataviews-bulk-actions-toolbar/index.js.map +0 -1
  116. package/build-module/components/dataviews-bulk-actions-toolbar/index.js +0 -201
  117. package/build-module/components/dataviews-bulk-actions-toolbar/index.js.map +0 -1
  118. package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts +0 -2
  119. package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts.map +0 -1
  120. package/src/components/dataviews/stories/fixtures.js +0 -250
  121. package/src/components/dataviews/stories/index.story.js +0 -71
  122. package/src/components/dataviews-bulk-actions-toolbar/index.tsx +0 -288
  123. package/src/components/dataviews-bulk-actions-toolbar/style.scss +0 -45
@@ -1 +1 @@
1
- {"version":3,"names":["Button","Popover","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalToggleGroupControlOptionIcon","ToggleGroupControlOptionIcon","SelectControl","__experimentalItemGroup","ItemGroup","__experimentalItem","Item","__experimentalGrid","Grid","__experimentalVStack","VStack","__experimentalHStack","HStack","__experimentalHeading","Heading","__experimentalText","Text","privateApis","componentsPrivateApis","__","_x","memo","useContext","useState","useMemo","cog","seen","unseen","warning","SORTING_DIRECTIONS","LAYOUT_GRID","sortIcons","sortLabels","VIEW_LAYOUTS","getMandatoryFields","DataViewsContext","unlock","DensityPicker","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DropdownMenuV2","DropdownMenu","DropdownMenuRadioItemV2","DropdownMenuRadioItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","ViewTypeMenu","defaultLayouts","list","grid","table","view","onChangeView","availableLayouts","Object","keys","length","activeView","find","v","type","trigger","size","icon","label","children","map","layout","config","value","name","checked","hideOnClick","onChange","e","target","globalThis","SCRIPT_DEBUG","SortFieldControl","fields","orderOptions","sortableFields","filter","field","enableSorting","id","__nextHasNoMarginBottom","__next40pxDefaultSize","sort","options","direction","SortDirectionControl","className","isBlock","newDirection","PAGE_SIZE_VALUES","ItemsPerPageControl","perPage","disabled","newItemsPerPage","newItemsPerPageNumber","undefined","parseInt","page","toString","FieldControl","mandatoryFields","hidableFields","enableHiding","includes","viewFields","isBordered","isSeparated","isVisible","expanded","onClick","SettingsSection","title","description","columns","gap","level","variant","DataviewsViewConfigContent","density","setDensity","spacing","_DataViewsViewConfig","isShowingViewPopover","setIsShowingViewPopover","placement","onClose","focusOnMount","DataViewsViewConfig"],"sources":["@wordpress/dataviews/src/components/dataviews-view-config/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ChangeEvent } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tPopover,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,\n\tSelectControl,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalGrid as Grid,\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { memo, useContext, useState, useMemo } from '@wordpress/element';\nimport { cog, seen, unseen } from '@wordpress/icons';\nimport warning from '@wordpress/warning';\n\n/**\n * Internal dependencies\n */\nimport {\n\tSORTING_DIRECTIONS,\n\tLAYOUT_GRID,\n\tsortIcons,\n\tsortLabels,\n} from '../../constants';\nimport { VIEW_LAYOUTS, getMandatoryFields } from '../../dataviews-layouts';\nimport type { SupportedLayouts } from '../../types';\nimport DataViewsContext from '../dataviews-context';\nimport { unlock } from '../../lock-unlock';\nimport DensityPicker from '../../dataviews-layouts/grid/density-picker';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuRadioItemV2: DropdownMenuRadioItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n} = unlock( componentsPrivateApis );\n\ninterface ViewTypeMenuProps {\n\tdefaultLayouts?: SupportedLayouts;\n}\n\nfunction ViewTypeMenu( {\n\tdefaultLayouts = { list: {}, grid: {}, table: {} },\n}: ViewTypeMenuProps ) {\n\tconst { view, onChangeView } = useContext( DataViewsContext );\n\tconst availableLayouts = Object.keys( defaultLayouts );\n\tif ( availableLayouts.length <= 1 ) {\n\t\treturn null;\n\t}\n\tconst activeView = VIEW_LAYOUTS.find( ( v ) => view.type === v.type );\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\ticon={ activeView?.icon }\n\t\t\t\t\tlabel={ __( 'Layout' ) }\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t{ availableLayouts.map( ( layout ) => {\n\t\t\t\tconst config = VIEW_LAYOUTS.find( ( v ) => v.type === layout );\n\t\t\t\tif ( ! config ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuRadioItem\n\t\t\t\t\t\tkey={ layout }\n\t\t\t\t\t\tvalue={ layout }\n\t\t\t\t\t\tname=\"view-actions-available-view\"\n\t\t\t\t\t\tchecked={ layout === view.type }\n\t\t\t\t\t\thideOnClick\n\t\t\t\t\t\tonChange={ ( e: ChangeEvent< HTMLInputElement > ) => {\n\t\t\t\t\t\t\tswitch ( e.target.value ) {\n\t\t\t\t\t\t\t\tcase 'list':\n\t\t\t\t\t\t\t\tcase 'grid':\n\t\t\t\t\t\t\t\tcase 'table':\n\t\t\t\t\t\t\t\t\treturn onChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\ttype: e.target.value,\n\t\t\t\t\t\t\t\t\t\t...defaultLayouts[ e.target.value ],\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twarning( 'Invalid dataview' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DropdownMenuItemLabel>\n\t\t\t\t\t\t\t{ config.label }\n\t\t\t\t\t\t</DropdownMenuItemLabel>\n\t\t\t\t\t</DropdownMenuRadioItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction SortFieldControl() {\n\tconst { view, fields, onChangeView } = useContext( DataViewsContext );\n\tconst orderOptions = useMemo( () => {\n\t\tconst sortableFields = fields.filter(\n\t\t\t( field ) => field.enableSorting !== false\n\t\t);\n\t\treturn sortableFields.map( ( field ) => {\n\t\t\treturn {\n\t\t\t\tlabel: field.label,\n\t\t\t\tvalue: field.id,\n\t\t\t};\n\t\t} );\n\t}, [ fields ] );\n\n\treturn (\n\t\t<SelectControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\t__next40pxDefaultSize\n\t\t\tlabel={ __( 'Sort by' ) }\n\t\t\tvalue={ view.sort?.field }\n\t\t\toptions={ orderOptions }\n\t\t\tonChange={ ( value: string ) => {\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tsort: {\n\t\t\t\t\t\tdirection: view?.sort?.direction || 'desc',\n\t\t\t\t\t\tfield: value,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nfunction SortDirectionControl() {\n\tconst { view, fields, onChangeView } = useContext( DataViewsContext );\n\tlet value = view.sort?.direction;\n\tif ( ! value && view.sort?.field ) {\n\t\tvalue = 'desc';\n\t}\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\tclassName=\"dataviews-view-config__sort-direction\"\n\t\t\t__nextHasNoMarginBottom\n\t\t\t__next40pxDefaultSize\n\t\t\tisBlock\n\t\t\tlabel={ __( 'Order' ) }\n\t\t\tvalue={ value }\n\t\t\tonChange={ ( newDirection ) => {\n\t\t\t\tif ( newDirection === 'asc' || newDirection === 'desc' ) {\n\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t...view,\n\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\tdirection: newDirection,\n\t\t\t\t\t\t\tfield:\n\t\t\t\t\t\t\t\tview.sort?.field ||\n\t\t\t\t\t\t\t\t// If there is no field assigned as the sorting field assign the first sortable field.\n\t\t\t\t\t\t\t\tfields.find(\n\t\t\t\t\t\t\t\t\t( field ) => field.enableSorting !== false\n\t\t\t\t\t\t\t\t)?.id ||\n\t\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\treturn;\n\t\t\t\t}\n\t\t\t\twarning( 'Invalid direction' );\n\t\t\t} }\n\t\t>\n\t\t\t{ SORTING_DIRECTIONS.map( ( direction ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ToggleGroupControlOptionIcon\n\t\t\t\t\t\tkey={ direction }\n\t\t\t\t\t\tvalue={ direction }\n\t\t\t\t\t\ticon={ sortIcons[ direction ] }\n\t\t\t\t\t\tlabel={ sortLabels[ direction ] }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ToggleGroupControl>\n\t);\n}\n\nconst PAGE_SIZE_VALUES = [ 10, 20, 50, 100 ];\nfunction ItemsPerPageControl() {\n\tconst { view, onChangeView } = useContext( DataViewsContext );\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\t__next40pxDefaultSize\n\t\t\tisBlock\n\t\t\tlabel={ __( 'Items per page' ) }\n\t\t\tvalue={ view.perPage || 10 }\n\t\t\tdisabled={ ! view?.sort?.field }\n\t\t\tonChange={ ( newItemsPerPage ) => {\n\t\t\t\tconst newItemsPerPageNumber =\n\t\t\t\t\ttypeof newItemsPerPage === 'number' ||\n\t\t\t\t\tnewItemsPerPage === undefined\n\t\t\t\t\t\t? newItemsPerPage\n\t\t\t\t\t\t: parseInt( newItemsPerPage, 10 );\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tperPage: newItemsPerPageNumber,\n\t\t\t\t\tpage: 1,\n\t\t\t\t} );\n\t\t\t} }\n\t\t>\n\t\t\t{ PAGE_SIZE_VALUES.map( ( value ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tlabel={ value.toString() }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ToggleGroupControl>\n\t);\n}\n\nfunction FieldControl() {\n\tconst { view, fields, onChangeView } = useContext( DataViewsContext );\n\tconst mandatoryFields = getMandatoryFields( view );\n\tconst hidableFields = fields.filter(\n\t\t( field ) =>\n\t\t\tfield.enableHiding !== false &&\n\t\t\t! mandatoryFields.includes( field.id )\n\t);\n\tconst viewFields = view.fields || fields.map( ( field ) => field.id );\n\tif ( ! hidableFields?.length ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<ItemGroup isBordered isSeparated>\n\t\t\t{ hidableFields?.map( ( field ) => {\n\t\t\t\tconst isVisible = viewFields.includes( field.id );\n\t\t\t\treturn (\n\t\t\t\t\t<Item key={ field.id }>\n\t\t\t\t\t\t<HStack expanded>\n\t\t\t\t\t\t\t<span>{ field.label }</span>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\tfields: isVisible\n\t\t\t\t\t\t\t\t\t\t\t? viewFields.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t( id ) => id !== field.id\n\t\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t\t: [ ...viewFields, field.id ],\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ticon={ isVisible ? seen : unseen }\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\tisVisible\n\t\t\t\t\t\t\t\t\t\t? __( 'Hide field' )\n\t\t\t\t\t\t\t\t\t\t: __( 'Show field' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</Item>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ItemGroup>\n\t);\n}\n\nfunction SettingsSection( {\n\ttitle,\n\tdescription,\n\tchildren,\n}: {\n\ttitle: string;\n\tdescription?: string;\n\tchildren: React.ReactNode;\n} ) {\n\treturn (\n\t\t<Grid columns={ 12 } className=\"dataviews-settings-section\" gap={ 4 }>\n\t\t\t<div className=\"dataviews-settings-section__sidebar\">\n\t\t\t\t<Heading\n\t\t\t\t\tlevel={ 2 }\n\t\t\t\t\tclassName=\"dataviews-settings-section__title\"\n\t\t\t\t>\n\t\t\t\t\t{ title }\n\t\t\t\t</Heading>\n\t\t\t\t{ description && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\tclassName=\"dataviews-settings-section__description\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ description }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t<Grid\n\t\t\t\tcolumns={ 8 }\n\t\t\t\tgap={ 4 }\n\t\t\t\tclassName=\"dataviews-settings-section__content\"\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n}\n\nfunction DataviewsViewConfigContent( {\n\tdensity,\n\tsetDensity,\n}: {\n\tdensity: number;\n\tsetDensity: React.Dispatch< React.SetStateAction< number > >;\n} ) {\n\tconst { view } = useContext( DataViewsContext );\n\treturn (\n\t\t<VStack className=\"dataviews-view-config\" spacing={ 6 }>\n\t\t\t<SettingsSection title={ __( 'Appearance' ) }>\n\t\t\t\t<HStack expanded className=\"is-divided-in-two\">\n\t\t\t\t\t<SortFieldControl />\n\t\t\t\t\t<SortDirectionControl />\n\t\t\t\t</HStack>\n\t\t\t\t{ view.type === LAYOUT_GRID && (\n\t\t\t\t\t<DensityPicker\n\t\t\t\t\t\tdensity={ density }\n\t\t\t\t\t\tsetDensity={ setDensity }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<ItemsPerPageControl />\n\t\t\t</SettingsSection>\n\t\t\t<SettingsSection title={ __( 'Properties' ) }>\n\t\t\t\t<FieldControl />\n\t\t\t</SettingsSection>\n\t\t</VStack>\n\t);\n}\n\nfunction _DataViewsViewConfig( {\n\tdensity,\n\tsetDensity,\n\tdefaultLayouts = { list: {}, grid: {}, table: {} },\n}: {\n\tdensity: number;\n\tsetDensity: React.Dispatch< React.SetStateAction< number > >;\n\tdefaultLayouts?: SupportedLayouts;\n} ) {\n\tconst [ isShowingViewPopover, setIsShowingViewPopover ] =\n\t\tuseState< boolean >( false );\n\n\treturn (\n\t\t<>\n\t\t\t<ViewTypeMenu defaultLayouts={ defaultLayouts } />\n\t\t\t<div>\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\ticon={ cog }\n\t\t\t\t\tlabel={ _x( 'View options', 'View is used as a noun' ) }\n\t\t\t\t\tonClick={ () => setIsShowingViewPopover( true ) }\n\t\t\t\t/>\n\t\t\t\t{ isShowingViewPopover && (\n\t\t\t\t\t<Popover\n\t\t\t\t\t\tplacement=\"bottom-end\"\n\t\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\t\tsetIsShowingViewPopover( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tfocusOnMount\n\t\t\t\t\t>\n\t\t\t\t\t\t<DataviewsViewConfigContent\n\t\t\t\t\t\t\tdensity={ density }\n\t\t\t\t\t\t\tsetDensity={ setDensity }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Popover>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nconst DataViewsViewConfig = memo( _DataViewsViewConfig );\n\nexport default DataViewsViewConfig;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Button","Popover","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalToggleGroupControlOptionIcon","ToggleGroupControlOptionIcon","SelectControl","__experimentalItemGroup","ItemGroup","__experimentalItem","Item","__experimentalGrid","Grid","__experimentalVStack","VStack","__experimentalHStack","HStack","__experimentalHeading","Heading","__experimentalText","Text","privateApis","componentsPrivateApis","BaseControl","__","_x","sprintf","memo","useContext","useState","useMemo","chevronDown","chevronUp","cog","seen","unseen","warning","SORTING_DIRECTIONS","LAYOUT_GRID","LAYOUT_TABLE","sortIcons","sortLabels","VIEW_LAYOUTS","getNotHidableFieldIds","getVisibleFieldIds","getHiddenFieldIds","DataViewsContext","unlock","DensityPicker","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","DropdownMenuV2","ViewTypeMenu","defaultLayouts","list","grid","table","view","onChangeView","availableLayouts","Object","keys","length","activeView","find","v","type","trigger","size","icon","label","children","map","layout","config","RadioItem","value","name","checked","hideOnClick","onChange","e","target","globalThis","SCRIPT_DEBUG","ItemLabel","SortFieldControl","fields","orderOptions","sortableFields","filter","field","enableSorting","id","__nextHasNoMarginBottom","__next40pxDefaultSize","sort","options","direction","SortDirectionControl","className","isBlock","newDirection","PAGE_SIZE_VALUES","ItemsPerPageControl","perPage","disabled","newItemsPerPage","newItemsPerPageNumber","undefined","parseInt","page","toString","FieldItem","index","isVisible","isHidable","visibleFieldIds","expanded","justify","accessibleWhenDisabled","onClick","_visibleFieldIds$slic","slice","_visibleFieldIds$slic2","fieldId","setTimeout","element","document","querySelector","HTMLElement","focus","FieldControl","hiddenFieldIds","notHidableFieldIds","visibleFields","includes","enableHiding","indexOf","combinedFields","forEach","push","a","b","hiddenFields","spacing","isBordered","isSeparated","VisualLabel","style","margin","SettingsSection","title","description","columns","gap","level","variant","DataviewsViewConfigContent","density","setDensity","_DataViewsViewConfig","isShowingViewPopover","setIsShowingViewPopover","placement","onClose","focusOnMount","DataViewsViewConfig"],"sources":["@wordpress/dataviews/src/components/dataviews-view-config/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ChangeEvent } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tPopover,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,\n\tSelectControl,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalGrid as Grid,\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n\tprivateApis as componentsPrivateApis,\n\tBaseControl,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { memo, useContext, useState, useMemo } from '@wordpress/element';\nimport { chevronDown, chevronUp, cog, seen, unseen } from '@wordpress/icons';\nimport warning from '@wordpress/warning';\n\n/**\n * Internal dependencies\n */\nimport {\n\tSORTING_DIRECTIONS,\n\tLAYOUT_GRID,\n\tLAYOUT_TABLE,\n\tsortIcons,\n\tsortLabels,\n} from '../../constants';\nimport {\n\tVIEW_LAYOUTS,\n\tgetNotHidableFieldIds,\n\tgetVisibleFieldIds,\n\tgetHiddenFieldIds,\n} from '../../dataviews-layouts';\nimport type { SupportedLayouts, View, Field } from '../../types';\nimport DataViewsContext from '../dataviews-context';\nimport { unlock } from '../../lock-unlock';\nimport DensityPicker from '../../dataviews-layouts/grid/density-picker';\n\nconst { DropdownMenuV2 } = unlock( componentsPrivateApis );\n\ninterface ViewTypeMenuProps {\n\tdefaultLayouts?: SupportedLayouts;\n}\n\nfunction ViewTypeMenu( {\n\tdefaultLayouts = { list: {}, grid: {}, table: {} },\n}: ViewTypeMenuProps ) {\n\tconst { view, onChangeView } = useContext( DataViewsContext );\n\tconst availableLayouts = Object.keys( defaultLayouts );\n\tif ( availableLayouts.length <= 1 ) {\n\t\treturn null;\n\t}\n\tconst activeView = VIEW_LAYOUTS.find( ( v ) => view.type === v.type );\n\treturn (\n\t\t<DropdownMenuV2\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\ticon={ activeView?.icon }\n\t\t\t\t\tlabel={ __( 'Layout' ) }\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t{ availableLayouts.map( ( layout ) => {\n\t\t\t\tconst config = VIEW_LAYOUTS.find( ( v ) => v.type === layout );\n\t\t\t\tif ( ! config ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuV2.RadioItem\n\t\t\t\t\t\tkey={ layout }\n\t\t\t\t\t\tvalue={ layout }\n\t\t\t\t\t\tname=\"view-actions-available-view\"\n\t\t\t\t\t\tchecked={ layout === view.type }\n\t\t\t\t\t\thideOnClick\n\t\t\t\t\t\tonChange={ ( e: ChangeEvent< HTMLInputElement > ) => {\n\t\t\t\t\t\t\tswitch ( e.target.value ) {\n\t\t\t\t\t\t\t\tcase 'list':\n\t\t\t\t\t\t\t\tcase 'grid':\n\t\t\t\t\t\t\t\tcase 'table':\n\t\t\t\t\t\t\t\t\treturn onChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\ttype: e.target.value,\n\t\t\t\t\t\t\t\t\t\t...defaultLayouts[ e.target.value ],\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twarning( 'Invalid dataview' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DropdownMenuV2.ItemLabel>\n\t\t\t\t\t\t\t{ config.label }\n\t\t\t\t\t\t</DropdownMenuV2.ItemLabel>\n\t\t\t\t\t</DropdownMenuV2.RadioItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenuV2>\n\t);\n}\n\nfunction SortFieldControl() {\n\tconst { view, fields, onChangeView } = useContext( DataViewsContext );\n\tconst orderOptions = useMemo( () => {\n\t\tconst sortableFields = fields.filter(\n\t\t\t( field ) => field.enableSorting !== false\n\t\t);\n\t\treturn sortableFields.map( ( field ) => {\n\t\t\treturn {\n\t\t\t\tlabel: field.label,\n\t\t\t\tvalue: field.id,\n\t\t\t};\n\t\t} );\n\t}, [ fields ] );\n\n\treturn (\n\t\t<SelectControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\t__next40pxDefaultSize\n\t\t\tlabel={ __( 'Sort by' ) }\n\t\t\tvalue={ view.sort?.field }\n\t\t\toptions={ orderOptions }\n\t\t\tonChange={ ( value: string ) => {\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tsort: {\n\t\t\t\t\t\tdirection: view?.sort?.direction || 'desc',\n\t\t\t\t\t\tfield: value,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nfunction SortDirectionControl() {\n\tconst { view, fields, onChangeView } = useContext( DataViewsContext );\n\n\tconst sortableFields = fields.filter(\n\t\t( field ) => field.enableSorting !== false\n\t);\n\tif ( sortableFields.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tlet value = view.sort?.direction;\n\tif ( ! value && view.sort?.field ) {\n\t\tvalue = 'desc';\n\t}\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\tclassName=\"dataviews-view-config__sort-direction\"\n\t\t\t__nextHasNoMarginBottom\n\t\t\t__next40pxDefaultSize\n\t\t\tisBlock\n\t\t\tlabel={ __( 'Order' ) }\n\t\t\tvalue={ value }\n\t\t\tonChange={ ( newDirection ) => {\n\t\t\t\tif ( newDirection === 'asc' || newDirection === 'desc' ) {\n\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t...view,\n\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\tdirection: newDirection,\n\t\t\t\t\t\t\tfield:\n\t\t\t\t\t\t\t\tview.sort?.field ||\n\t\t\t\t\t\t\t\t// If there is no field assigned as the sorting field assign the first sortable field.\n\t\t\t\t\t\t\t\tfields.find(\n\t\t\t\t\t\t\t\t\t( field ) => field.enableSorting !== false\n\t\t\t\t\t\t\t\t)?.id ||\n\t\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\treturn;\n\t\t\t\t}\n\t\t\t\twarning( 'Invalid direction' );\n\t\t\t} }\n\t\t>\n\t\t\t{ SORTING_DIRECTIONS.map( ( direction ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ToggleGroupControlOptionIcon\n\t\t\t\t\t\tkey={ direction }\n\t\t\t\t\t\tvalue={ direction }\n\t\t\t\t\t\ticon={ sortIcons[ direction ] }\n\t\t\t\t\t\tlabel={ sortLabels[ direction ] }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ToggleGroupControl>\n\t);\n}\n\nconst PAGE_SIZE_VALUES = [ 10, 20, 50, 100 ];\nfunction ItemsPerPageControl() {\n\tconst { view, onChangeView } = useContext( DataViewsContext );\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\t__next40pxDefaultSize\n\t\t\tisBlock\n\t\t\tlabel={ __( 'Items per page' ) }\n\t\t\tvalue={ view.perPage || 10 }\n\t\t\tdisabled={ ! view?.sort?.field }\n\t\t\tonChange={ ( newItemsPerPage ) => {\n\t\t\t\tconst newItemsPerPageNumber =\n\t\t\t\t\ttypeof newItemsPerPage === 'number' ||\n\t\t\t\t\tnewItemsPerPage === undefined\n\t\t\t\t\t\t? newItemsPerPage\n\t\t\t\t\t\t: parseInt( newItemsPerPage, 10 );\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tperPage: newItemsPerPageNumber,\n\t\t\t\t\tpage: 1,\n\t\t\t\t} );\n\t\t\t} }\n\t\t>\n\t\t\t{ PAGE_SIZE_VALUES.map( ( value ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tlabel={ value.toString() }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ToggleGroupControl>\n\t);\n}\n\ninterface FieldItemProps {\n\tid: any;\n\tlabel: string;\n\tindex: number;\n\tisVisible: boolean;\n\tisHidable: boolean;\n}\n\nfunction FieldItem( {\n\tfield: { id, label, index, isVisible, isHidable },\n\tfields,\n\tview,\n\tonChangeView,\n}: {\n\tfield: FieldItemProps;\n\tfields: Field< any >[];\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n} ) {\n\tconst visibleFieldIds = getVisibleFieldIds( view, fields );\n\n\treturn (\n\t\t<Item key={ id }>\n\t\t\t<HStack\n\t\t\t\texpanded\n\t\t\t\tclassName={ `dataviews-field-control__field dataviews-field-control__field-${ id }` }\n\t\t\t>\n\t\t\t\t<span>{ label }</span>\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t\tclassName=\"dataviews-field-control__actions\"\n\t\t\t\t>\n\t\t\t\t\t{ view.type === LAYOUT_TABLE && isVisible && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tdisabled={ index < 1 }\n\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t\t\t...( visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\tindex - 1\n\t\t\t\t\t\t\t\t\t\t\t) ?? [] ),\n\t\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t\tvisibleFieldIds[ index - 1 ],\n\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\tindex + 1\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} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\ticon={ chevronUp }\n\t\t\t\t\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: field label */\n\t\t\t\t\t\t\t\t\t__( 'Move %s up' ),\n\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tdisabled={ index >= visibleFieldIds.length - 1 }\n\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t\t\t...( visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t\t\t\t) ?? [] ),\n\t\t\t\t\t\t\t\t\t\t\tvisibleFieldIds[ index + 1 ],\n\t\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\tindex + 2\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} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\ticon={ chevronDown }\n\t\t\t\t\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: field label */\n\t\t\t\t\t\t\t\t\t__( 'Move %s down' ),\n\t\t\t\t\t\t\t\t\tlabel\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) }\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"dataviews-field-control__field-visibility-button\"\n\t\t\t\t\t\tdisabled={ ! isHidable }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\tfields: isVisible\n\t\t\t\t\t\t\t\t\t? visibleFieldIds.filter(\n\t\t\t\t\t\t\t\t\t\t\t( fieldId ) => fieldId !== id\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: [ ...visibleFieldIds, id ],\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t// Focus the visibility button to avoid focus loss.\n\t\t\t\t\t\t\t// Our code is safe against the component being unmounted, so we don't need to worry about cleaning the timeout.\n\t\t\t\t\t\t\t// eslint-disable-next-line @wordpress/react-no-unsafe-timeout\n\t\t\t\t\t\t\tsetTimeout( () => {\n\t\t\t\t\t\t\t\tconst element = document.querySelector(\n\t\t\t\t\t\t\t\t\t`.dataviews-field-control__field-${ id } .dataviews-field-control__field-visibility-button`\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif ( element instanceof HTMLElement ) {\n\t\t\t\t\t\t\t\t\telement.focus();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, 50 );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={ isVisible ? seen : unseen }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tisVisible\n\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: field label */\n\t\t\t\t\t\t\t\t\t\t__( 'Hide %s' ),\n\t\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: field label */\n\t\t\t\t\t\t\t\t\t\t__( 'Show %s' ),\n\t\t\t\t\t\t\t\t\t\tlabel\n\t\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</HStack>\n\t\t\t</HStack>\n\t\t</Item>\n\t);\n}\n\nfunction FieldControl() {\n\tconst { view, fields, onChangeView } = useContext( DataViewsContext );\n\n\tconst visibleFieldIds = useMemo(\n\t\t() => getVisibleFieldIds( view, fields ),\n\t\t[ view, fields ]\n\t);\n\tconst hiddenFieldIds = useMemo(\n\t\t() => getHiddenFieldIds( view, fields ),\n\t\t[ view, fields ]\n\t);\n\tconst notHidableFieldIds = useMemo(\n\t\t() => getNotHidableFieldIds( view ),\n\t\t[ view ]\n\t);\n\n\tconst visibleFields = fields\n\t\t.filter( ( { id } ) => visibleFieldIds.includes( id ) )\n\t\t.map( ( { id, label, enableHiding } ) => {\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\tlabel,\n\t\t\t\tindex: visibleFieldIds.indexOf( id ),\n\t\t\t\tisVisible: true,\n\t\t\t\tisHidable: notHidableFieldIds.includes( id )\n\t\t\t\t\t? false\n\t\t\t\t\t: enableHiding,\n\t\t\t};\n\t\t} );\n\tif ( view.type === LAYOUT_TABLE && view.layout?.combinedFields ) {\n\t\tview.layout.combinedFields.forEach( ( { id, label } ) => {\n\t\t\tvisibleFields.push( {\n\t\t\t\tid,\n\t\t\t\tlabel,\n\t\t\t\tindex: visibleFieldIds.indexOf( id ),\n\t\t\t\tisVisible: true,\n\t\t\t\tisHidable: notHidableFieldIds.includes( id ),\n\t\t\t} );\n\t\t} );\n\t}\n\tvisibleFields.sort( ( a, b ) => a.index - b.index );\n\n\tconst hiddenFields = fields\n\t\t.filter( ( { id } ) => hiddenFieldIds.includes( id ) )\n\t\t.map( ( { id, label, enableHiding }, index ) => {\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\tlabel,\n\t\t\t\tindex,\n\t\t\t\tisVisible: false,\n\t\t\t\tisHidable: enableHiding,\n\t\t\t};\n\t\t} );\n\n\tif ( ! visibleFields?.length && ! hiddenFields?.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<VStack spacing={ 6 } className=\"dataviews-field-control\">\n\t\t\t{ !! visibleFields?.length && (\n\t\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t<FieldItem\n\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</ItemGroup>\n\t\t\t) }\n\t\t\t{ !! hiddenFields?.length && (\n\t\t\t\t<>\n\t\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t\t<BaseControl.VisualLabel style={ { margin: 0 } }>\n\t\t\t\t\t\t\t{ __( 'Hidden' ) }\n\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t\t\t\t{ hiddenFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t<FieldItem\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</VStack>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nfunction SettingsSection( {\n\ttitle,\n\tdescription,\n\tchildren,\n}: {\n\ttitle: string;\n\tdescription?: string;\n\tchildren: React.ReactNode;\n} ) {\n\treturn (\n\t\t<Grid columns={ 12 } className=\"dataviews-settings-section\" gap={ 4 }>\n\t\t\t<div className=\"dataviews-settings-section__sidebar\">\n\t\t\t\t<Heading\n\t\t\t\t\tlevel={ 2 }\n\t\t\t\t\tclassName=\"dataviews-settings-section__title\"\n\t\t\t\t>\n\t\t\t\t\t{ title }\n\t\t\t\t</Heading>\n\t\t\t\t{ description && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\tclassName=\"dataviews-settings-section__description\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ description }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t<Grid\n\t\t\t\tcolumns={ 8 }\n\t\t\t\tgap={ 4 }\n\t\t\t\tclassName=\"dataviews-settings-section__content\"\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n}\n\nfunction DataviewsViewConfigContent( {\n\tdensity,\n\tsetDensity,\n}: {\n\tdensity: number;\n\tsetDensity: React.Dispatch< React.SetStateAction< number > >;\n} ) {\n\tconst { view } = useContext( DataViewsContext );\n\treturn (\n\t\t<VStack className=\"dataviews-view-config\" spacing={ 6 }>\n\t\t\t<SettingsSection title={ __( 'Appearance' ) }>\n\t\t\t\t<HStack expanded className=\"is-divided-in-two\">\n\t\t\t\t\t<SortFieldControl />\n\t\t\t\t\t<SortDirectionControl />\n\t\t\t\t</HStack>\n\t\t\t\t{ view.type === LAYOUT_GRID && (\n\t\t\t\t\t<DensityPicker\n\t\t\t\t\t\tdensity={ density }\n\t\t\t\t\t\tsetDensity={ setDensity }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<ItemsPerPageControl />\n\t\t\t</SettingsSection>\n\t\t\t<SettingsSection title={ __( 'Properties' ) }>\n\t\t\t\t<FieldControl />\n\t\t\t</SettingsSection>\n\t\t</VStack>\n\t);\n}\n\nfunction _DataViewsViewConfig( {\n\tdensity,\n\tsetDensity,\n\tdefaultLayouts = { list: {}, grid: {}, table: {} },\n}: {\n\tdensity: number;\n\tsetDensity: React.Dispatch< React.SetStateAction< number > >;\n\tdefaultLayouts?: SupportedLayouts;\n} ) {\n\tconst [ isShowingViewPopover, setIsShowingViewPopover ] =\n\t\tuseState< boolean >( false );\n\n\treturn (\n\t\t<>\n\t\t\t<ViewTypeMenu defaultLayouts={ defaultLayouts } />\n\t\t\t<div>\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\ticon={ cog }\n\t\t\t\t\tlabel={ _x( 'View options', 'View is used as a noun' ) }\n\t\t\t\t\tonClick={ () => setIsShowingViewPopover( true ) }\n\t\t\t\t/>\n\t\t\t\t{ isShowingViewPopover && (\n\t\t\t\t\t<Popover\n\t\t\t\t\t\tplacement=\"bottom-end\"\n\t\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\t\tsetIsShowingViewPopover( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tfocusOnMount\n\t\t\t\t\t>\n\t\t\t\t\t\t<DataviewsViewConfigContent\n\t\t\t\t\t\t\tdensity={ density }\n\t\t\t\t\t\t\tsetDensity={ setDensity }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Popover>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nconst DataViewsViewConfig = memo( _DataViewsViewConfig );\n\nexport default DataViewsViewConfig;\n"],"mappings":"AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA,SACCA,MAAM,EACNC,OAAO,EACPC,gCAAgC,IAAIC,kBAAkB,EACtDC,sCAAsC,IAAIC,wBAAwB,EAClEC,0CAA0C,IAAIC,4BAA4B,EAC1EC,aAAa,EACbC,uBAAuB,IAAIC,SAAS,EACpCC,kBAAkB,IAAIC,IAAI,EAC1BC,kBAAkB,IAAIC,IAAI,EAC1BC,oBAAoB,IAAIC,MAAM,EAC9BC,oBAAoB,IAAIC,MAAM,EAC9BC,qBAAqB,IAAIC,OAAO,EAChCC,kBAAkB,IAAIC,IAAI,EAC1BC,WAAW,IAAIC,qBAAqB,EACpCC,WAAW,QACL,uBAAuB;AAC9B,SAASC,EAAE,EAAEC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AACjD,SAASC,IAAI,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,OAAO,QAAQ,oBAAoB;AACxE,SAASC,WAAW,EAAEC,SAAS,EAAEC,GAAG,EAAEC,IAAI,EAAEC,MAAM,QAAQ,kBAAkB;AAC5E,OAAOC,OAAO,MAAM,oBAAoB;;AAExC;AACA;AACA;AACA,SACCC,kBAAkB,EAClBC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,UAAU,QACJ,iBAAiB;AACxB,SACCC,YAAY,EACZC,qBAAqB,EACrBC,kBAAkB,EAClBC,iBAAiB,QACX,yBAAyB;AAEhC,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,OAAOC,aAAa,MAAM,6CAA6C;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAExE,MAAM;EAAEC;AAAe,CAAC,GAAGR,MAAM,CAAEzB,qBAAsB,CAAC;AAM1D,SAASkC,YAAYA,CAAE;EACtBC,cAAc,GAAG;IAAEC,IAAI,EAAE,CAAC,CAAC;IAAEC,IAAI,EAAE,CAAC,CAAC;IAAEC,KAAK,EAAE,CAAC;EAAE;AAC/B,CAAC,EAAG;EACtB,MAAM;IAAEC,IAAI;IAAEC;EAAa,CAAC,GAAGlC,UAAU,CAAEkB,gBAAiB,CAAC;EAC7D,MAAMiB,gBAAgB,GAAGC,MAAM,CAACC,IAAI,CAAER,cAAe,CAAC;EACtD,IAAKM,gBAAgB,CAACG,MAAM,IAAI,CAAC,EAAG;IACnC,OAAO,IAAI;EACZ;EACA,MAAMC,UAAU,GAAGzB,YAAY,CAAC0B,IAAI,CAAIC,CAAC,IAAMR,IAAI,CAACS,IAAI,KAAKD,CAAC,CAACC,IAAK,CAAC;EACrE,oBACCpB,IAAA,CAACK,cAAc;IACdgB,OAAO,eACNrB,IAAA,CAACpD,MAAM;MACN0E,IAAI,EAAC,SAAS;MACdC,IAAI,EAAGN,UAAU,EAAEM,IAAM;MACzBC,KAAK,EAAGlD,EAAE,CAAE,QAAS;IAAG,CACxB,CACD;IAAAmD,QAAA,EAECZ,gBAAgB,CAACa,GAAG,CAAIC,MAAM,IAAM;MACrC,MAAMC,MAAM,GAAGpC,YAAY,CAAC0B,IAAI,CAAIC,CAAC,IAAMA,CAAC,CAACC,IAAI,KAAKO,MAAO,CAAC;MAC9D,IAAK,CAAEC,MAAM,EAAG;QACf,OAAO,IAAI;MACZ;MACA,oBACC5B,IAAA,CAACK,cAAc,CAACwB,SAAS;QAExBC,KAAK,EAAGH,MAAQ;QAChBI,IAAI,EAAC,6BAA6B;QAClCC,OAAO,EAAGL,MAAM,KAAKhB,IAAI,CAACS,IAAM;QAChCa,WAAW;QACXC,QAAQ,EAAKC,CAAkC,IAAM;UACpD,QAASA,CAAC,CAACC,MAAM,CAACN,KAAK;YACtB,KAAK,MAAM;YACX,KAAK,MAAM;YACX,KAAK,OAAO;cACX,OAAOlB,YAAY,CAAE;gBACpB,GAAGD,IAAI;gBACPS,IAAI,EAAEe,CAAC,CAACC,MAAM,CAACN,KAAK;gBACpB,GAAGvB,cAAc,CAAE4B,CAAC,CAACC,MAAM,CAACN,KAAK;cAClC,CAAE,CAAC;UACL;UACAO,UAAA,CAAAC,YAAA,YAAApD,OAAO,CAAE,kBAAmB,CAAC;QAC9B,CAAG;QAAAuC,QAAA,eAEHzB,IAAA,CAACK,cAAc,CAACkC,SAAS;UAAAd,QAAA,EACtBG,MAAM,CAACJ;QAAK,CACW;MAAC,GArBrBG,MAsBmB,CAAC;IAE7B,CAAE;EAAC,CACY,CAAC;AAEnB;AAEA,SAASa,gBAAgBA,CAAA,EAAG;EAC3B,MAAM;IAAE7B,IAAI;IAAE8B,MAAM;IAAE7B;EAAa,CAAC,GAAGlC,UAAU,CAAEkB,gBAAiB,CAAC;EACrE,MAAM8C,YAAY,GAAG9D,OAAO,CAAE,MAAM;IACnC,MAAM+D,cAAc,GAAGF,MAAM,CAACG,MAAM,CACjCC,KAAK,IAAMA,KAAK,CAACC,aAAa,KAAK,KACtC,CAAC;IACD,OAAOH,cAAc,CAACjB,GAAG,CAAImB,KAAK,IAAM;MACvC,OAAO;QACNrB,KAAK,EAAEqB,KAAK,CAACrB,KAAK;QAClBM,KAAK,EAAEe,KAAK,CAACE;MACd,CAAC;IACF,CAAE,CAAC;EACJ,CAAC,EAAE,CAAEN,MAAM,CAAG,CAAC;EAEf,oBACCzC,IAAA,CAAC5C,aAAa;IACb4F,uBAAuB;IACvBC,qBAAqB;IACrBzB,KAAK,EAAGlD,EAAE,CAAE,SAAU,CAAG;IACzBwD,KAAK,EAAGnB,IAAI,CAACuC,IAAI,EAAEL,KAAO;IAC1BM,OAAO,EAAGT,YAAc;IACxBR,QAAQ,EAAKJ,KAAa,IAAM;MAC/BlB,YAAY,CAAE;QACb,GAAGD,IAAI;QACPuC,IAAI,EAAE;UACLE,SAAS,EAAEzC,IAAI,EAAEuC,IAAI,EAAEE,SAAS,IAAI,MAAM;UAC1CP,KAAK,EAAEf;QACR;MACD,CAAE,CAAC;IACJ;EAAG,CACH,CAAC;AAEJ;AAEA,SAASuB,oBAAoBA,CAAA,EAAG;EAC/B,MAAM;IAAE1C,IAAI;IAAE8B,MAAM;IAAE7B;EAAa,CAAC,GAAGlC,UAAU,CAAEkB,gBAAiB,CAAC;EAErE,MAAM+C,cAAc,GAAGF,MAAM,CAACG,MAAM,CACjCC,KAAK,IAAMA,KAAK,CAACC,aAAa,KAAK,KACtC,CAAC;EACD,IAAKH,cAAc,CAAC3B,MAAM,KAAK,CAAC,EAAG;IAClC,OAAO,IAAI;EACZ;EAEA,IAAIc,KAAK,GAAGnB,IAAI,CAACuC,IAAI,EAAEE,SAAS;EAChC,IAAK,CAAEtB,KAAK,IAAInB,IAAI,CAACuC,IAAI,EAAEL,KAAK,EAAG;IAClCf,KAAK,GAAG,MAAM;EACf;EACA,oBACC9B,IAAA,CAACjD,kBAAkB;IAClBuG,SAAS,EAAC,uCAAuC;IACjDN,uBAAuB;IACvBC,qBAAqB;IACrBM,OAAO;IACP/B,KAAK,EAAGlD,EAAE,CAAE,OAAQ,CAAG;IACvBwD,KAAK,EAAGA,KAAO;IACfI,QAAQ,EAAKsB,YAAY,IAAM;MAC9B,IAAKA,YAAY,KAAK,KAAK,IAAIA,YAAY,KAAK,MAAM,EAAG;QACxD5C,YAAY,CAAE;UACb,GAAGD,IAAI;UACPuC,IAAI,EAAE;YACLE,SAAS,EAAEI,YAAY;YACvBX,KAAK,EACJlC,IAAI,CAACuC,IAAI,EAAEL,KAAK;YAChB;YACAJ,MAAM,CAACvB,IAAI,CACR2B,KAAK,IAAMA,KAAK,CAACC,aAAa,KAAK,KACtC,CAAC,EAAEC,EAAE,IACL;UACF;QACD,CAAE,CAAC;QACH;MACD;MACAV,UAAA,CAAAC,YAAA,YAAApD,OAAO,CAAE,mBAAoB,CAAC;IAC/B,CAAG;IAAAuC,QAAA,EAEDtC,kBAAkB,CAACuC,GAAG,CAAI0B,SAAS,IAAM;MAC1C,oBACCpD,IAAA,CAAC7C,4BAA4B;QAE5B2E,KAAK,EAAGsB,SAAW;QACnB7B,IAAI,EAAGjC,SAAS,CAAE8D,SAAS,CAAI;QAC/B5B,KAAK,EAAGjC,UAAU,CAAE6D,SAAS;MAAI,GAH3BA,SAIN,CAAC;IAEJ,CAAE;EAAC,CACgB,CAAC;AAEvB;AAEA,MAAMK,gBAAgB,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE;AAC5C,SAASC,mBAAmBA,CAAA,EAAG;EAC9B,MAAM;IAAE/C,IAAI;IAAEC;EAAa,CAAC,GAAGlC,UAAU,CAAEkB,gBAAiB,CAAC;EAC7D,oBACCI,IAAA,CAACjD,kBAAkB;IAClBiG,uBAAuB;IACvBC,qBAAqB;IACrBM,OAAO;IACP/B,KAAK,EAAGlD,EAAE,CAAE,gBAAiB,CAAG;IAChCwD,KAAK,EAAGnB,IAAI,CAACgD,OAAO,IAAI,EAAI;IAC5BC,QAAQ,EAAG,CAAEjD,IAAI,EAAEuC,IAAI,EAAEL,KAAO;IAChCX,QAAQ,EAAK2B,eAAe,IAAM;MACjC,MAAMC,qBAAqB,GAC1B,OAAOD,eAAe,KAAK,QAAQ,IACnCA,eAAe,KAAKE,SAAS,GAC1BF,eAAe,GACfG,QAAQ,CAAEH,eAAe,EAAE,EAAG,CAAC;MACnCjD,YAAY,CAAE;QACb,GAAGD,IAAI;QACPgD,OAAO,EAAEG,qBAAqB;QAC9BG,IAAI,EAAE;MACP,CAAE,CAAC;IACJ,CAAG;IAAAxC,QAAA,EAEDgC,gBAAgB,CAAC/B,GAAG,CAAII,KAAK,IAAM;MACpC,oBACC9B,IAAA,CAAC/C,wBAAwB;QAExB6E,KAAK,EAAGA,KAAO;QACfN,KAAK,EAAGM,KAAK,CAACoC,QAAQ,CAAC;MAAG,GAFpBpC,KAGN,CAAC;IAEJ,CAAE;EAAC,CACgB,CAAC;AAEvB;AAUA,SAASqC,SAASA,CAAE;EACnBtB,KAAK,EAAE;IAAEE,EAAE;IAAEvB,KAAK;IAAE4C,KAAK;IAAEC,SAAS;IAAEC;EAAU,CAAC;EACjD7B,MAAM;EACN9B,IAAI;EACJC;AAMD,CAAC,EAAG;EACH,MAAM2D,eAAe,GAAG7E,kBAAkB,CAAEiB,IAAI,EAAE8B,MAAO,CAAC;EAE1D,oBACCzC,IAAA,CAACxC,IAAI;IAAAiE,QAAA,eACJrB,KAAA,CAACtC,MAAM;MACN0G,QAAQ;MACRlB,SAAS,EAAI,iEAAiEP,EAAI,EAAG;MAAAtB,QAAA,gBAErFzB,IAAA;QAAAyB,QAAA,EAAQD;MAAK,CAAQ,CAAC,eACtBpB,KAAA,CAACtC,MAAM;QACN2G,OAAO,EAAC,UAAU;QAClBD,QAAQ,EAAG,KAAO;QAClBlB,SAAS,EAAC,kCAAkC;QAAA7B,QAAA,GAE1Cd,IAAI,CAACS,IAAI,KAAK/B,YAAY,IAAIgF,SAAS,iBACxCjE,KAAA,CAAAF,SAAA;UAAAuB,QAAA,gBACCzB,IAAA,CAACpD,MAAM;YACNgH,QAAQ,EAAGQ,KAAK,GAAG,CAAG;YACtBM,sBAAsB;YACtBpD,IAAI,EAAC,SAAS;YACdqD,OAAO,EAAGA,CAAA,KAAM;cAAA,IAAAC,qBAAA;cACfhE,YAAY,CAAE;gBACb,GAAGD,IAAI;gBACP8B,MAAM,EAAE,CACP,KAAAmC,qBAAA,GAAKL,eAAe,CAACM,KAAK,CACzB,CAAC,EACDT,KAAK,GAAG,CACT,CAAC,cAAAQ,qBAAA,cAAAA,qBAAA,GAAI,EAAE,CAAE,EACT7B,EAAE,EACFwB,eAAe,CAAEH,KAAK,GAAG,CAAC,CAAE,EAC5B,GAAGG,eAAe,CAACM,KAAK,CACvBT,KAAK,GAAG,CACT,CAAC;cAEH,CAAE,CAAC;YACJ,CAAG;YACH7C,IAAI,EAAGzC,SAAW;YAClB0C,KAAK,EAAGhD,OAAO,EACd;YACAF,EAAE,CAAE,YAAa,CAAC,EAClBkD,KACD;UAAG,CACH,CAAC,eACFxB,IAAA,CAACpD,MAAM;YACNgH,QAAQ,EAAGQ,KAAK,IAAIG,eAAe,CAACvD,MAAM,GAAG,CAAG;YAChD0D,sBAAsB;YACtBpD,IAAI,EAAC,SAAS;YACdqD,OAAO,EAAGA,CAAA,KAAM;cAAA,IAAAG,sBAAA;cACflE,YAAY,CAAE;gBACb,GAAGD,IAAI;gBACP8B,MAAM,EAAE,CACP,KAAAqC,sBAAA,GAAKP,eAAe,CAACM,KAAK,CACzB,CAAC,EACDT,KACD,CAAC,cAAAU,sBAAA,cAAAA,sBAAA,GAAI,EAAE,CAAE,EACTP,eAAe,CAAEH,KAAK,GAAG,CAAC,CAAE,EAC5BrB,EAAE,EACF,GAAGwB,eAAe,CAACM,KAAK,CACvBT,KAAK,GAAG,CACT,CAAC;cAEH,CAAE,CAAC;YACJ,CAAG;YACH7C,IAAI,EAAG1C,WAAa;YACpB2C,KAAK,EAAGhD,OAAO,EACd;YACAF,EAAE,CAAE,cAAe,CAAC,EACpBkD,KACD;UAAG,CACH,CAAC,EAAE,GAAG;QAAA,CACN,CACF,eACDxB,IAAA,CAACpD,MAAM;UACN0G,SAAS,EAAC,kDAAkD;UAC5DM,QAAQ,EAAG,CAAEU,SAAW;UACxBI,sBAAsB;UACtBpD,IAAI,EAAC,SAAS;UACdqD,OAAO,EAAGA,CAAA,KAAM;YACf/D,YAAY,CAAE;cACb,GAAGD,IAAI;cACP8B,MAAM,EAAE4B,SAAS,GACdE,eAAe,CAAC3B,MAAM,CACpBmC,OAAO,IAAMA,OAAO,KAAKhC,EAC3B,CAAC,GACD,CAAE,GAAGwB,eAAe,EAAExB,EAAE;YAC5B,CAAE,CAAC;YACH;YACA;YACA;YACAiC,UAAU,CAAE,MAAM;cACjB,MAAMC,OAAO,GAAGC,QAAQ,CAACC,aAAa,CACpC,mCAAmCpC,EAAI,oDACzC,CAAC;cACD,IAAKkC,OAAO,YAAYG,WAAW,EAAG;gBACrCH,OAAO,CAACI,KAAK,CAAC,CAAC;cAChB;YACD,CAAC,EAAE,EAAG,CAAC;UACR,CAAG;UACH9D,IAAI,EAAG8C,SAAS,GAAGrF,IAAI,GAAGC,MAAQ;UAClCuC,KAAK,EACJ6C,SAAS,GACN7F,OAAO,EACP;UACAF,EAAE,CAAE,SAAU,CAAC,EACfkD,KACA,CAAC,GACDhD,OAAO,EACP;UACAF,EAAE,CAAE,SAAU,CAAC,EACfkD,KACA;QACH,CACD,CAAC;MAAA,CACK,CAAC;IAAA,CACF;EAAC,GA/GEuB,EAgHN,CAAC;AAET;AAEA,SAASuC,YAAYA,CAAA,EAAG;EACvB,MAAM;IAAE3E,IAAI;IAAE8B,MAAM;IAAE7B;EAAa,CAAC,GAAGlC,UAAU,CAAEkB,gBAAiB,CAAC;EAErE,MAAM2E,eAAe,GAAG3F,OAAO,CAC9B,MAAMc,kBAAkB,CAAEiB,IAAI,EAAE8B,MAAO,CAAC,EACxC,CAAE9B,IAAI,EAAE8B,MAAM,CACf,CAAC;EACD,MAAM8C,cAAc,GAAG3G,OAAO,CAC7B,MAAMe,iBAAiB,CAAEgB,IAAI,EAAE8B,MAAO,CAAC,EACvC,CAAE9B,IAAI,EAAE8B,MAAM,CACf,CAAC;EACD,MAAM+C,kBAAkB,GAAG5G,OAAO,CACjC,MAAMa,qBAAqB,CAAEkB,IAAK,CAAC,EACnC,CAAEA,IAAI,CACP,CAAC;EAED,MAAM8E,aAAa,GAAGhD,MAAM,CAC1BG,MAAM,CAAE,CAAE;IAAEG;EAAG,CAAC,KAAMwB,eAAe,CAACmB,QAAQ,CAAE3C,EAAG,CAAE,CAAC,CACtDrB,GAAG,CAAE,CAAE;IAAEqB,EAAE;IAAEvB,KAAK;IAAEmE;EAAa,CAAC,KAAM;IACxC,OAAO;MACN5C,EAAE;MACFvB,KAAK;MACL4C,KAAK,EAAEG,eAAe,CAACqB,OAAO,CAAE7C,EAAG,CAAC;MACpCsB,SAAS,EAAE,IAAI;MACfC,SAAS,EAAEkB,kBAAkB,CAACE,QAAQ,CAAE3C,EAAG,CAAC,GACzC,KAAK,GACL4C;IACJ,CAAC;EACF,CAAE,CAAC;EACJ,IAAKhF,IAAI,CAACS,IAAI,KAAK/B,YAAY,IAAIsB,IAAI,CAACgB,MAAM,EAAEkE,cAAc,EAAG;IAChElF,IAAI,CAACgB,MAAM,CAACkE,cAAc,CAACC,OAAO,CAAE,CAAE;MAAE/C,EAAE;MAAEvB;IAAM,CAAC,KAAM;MACxDiE,aAAa,CAACM,IAAI,CAAE;QACnBhD,EAAE;QACFvB,KAAK;QACL4C,KAAK,EAAEG,eAAe,CAACqB,OAAO,CAAE7C,EAAG,CAAC;QACpCsB,SAAS,EAAE,IAAI;QACfC,SAAS,EAAEkB,kBAAkB,CAACE,QAAQ,CAAE3C,EAAG;MAC5C,CAAE,CAAC;IACJ,CAAE,CAAC;EACJ;EACA0C,aAAa,CAACvC,IAAI,CAAE,CAAE8C,CAAC,EAAEC,CAAC,KAAMD,CAAC,CAAC5B,KAAK,GAAG6B,CAAC,CAAC7B,KAAM,CAAC;EAEnD,MAAM8B,YAAY,GAAGzD,MAAM,CACzBG,MAAM,CAAE,CAAE;IAAEG;EAAG,CAAC,KAAMwC,cAAc,CAACG,QAAQ,CAAE3C,EAAG,CAAE,CAAC,CACrDrB,GAAG,CAAE,CAAE;IAAEqB,EAAE;IAAEvB,KAAK;IAAEmE;EAAa,CAAC,EAAEvB,KAAK,KAAM;IAC/C,OAAO;MACNrB,EAAE;MACFvB,KAAK;MACL4C,KAAK;MACLC,SAAS,EAAE,KAAK;MAChBC,SAAS,EAAEqB;IACZ,CAAC;EACF,CAAE,CAAC;EAEJ,IAAK,CAAEF,aAAa,EAAEzE,MAAM,IAAI,CAAEkF,YAAY,EAAElF,MAAM,EAAG;IACxD,OAAO,IAAI;EACZ;EAEA,oBACCZ,KAAA,CAACxC,MAAM;IAACuI,OAAO,EAAG,CAAG;IAAC7C,SAAS,EAAC,yBAAyB;IAAA7B,QAAA,GACtD,CAAC,CAAEgE,aAAa,EAAEzE,MAAM,iBACzBhB,IAAA,CAAC1C,SAAS;MAAC8I,UAAU;MAACC,WAAW;MAAA5E,QAAA,EAC9BgE,aAAa,CAAC/D,GAAG,CAAImB,KAAK,iBAC3B7C,IAAA,CAACmE,SAAS;QAETtB,KAAK,EAAGA,KAAO;QACfJ,MAAM,EAAGA,MAAQ;QACjB9B,IAAI,EAAGA,IAAM;QACbC,YAAY,EAAGA;MAAc,GAJvBiC,KAAK,CAACE,EAKZ,CACA;IAAC,CACO,CACX,EACC,CAAC,CAAEmD,YAAY,EAAElF,MAAM,iBACxBhB,IAAA,CAAAE,SAAA;MAAAuB,QAAA,eACCrB,KAAA,CAACxC,MAAM;QAACuI,OAAO,EAAG,CAAG;QAAA1E,QAAA,gBACpBzB,IAAA,CAAC3B,WAAW,CAACiI,WAAW;UAACC,KAAK,EAAG;YAAEC,MAAM,EAAE;UAAE,CAAG;UAAA/E,QAAA,EAC7CnD,EAAE,CAAE,QAAS;QAAC,CACQ,CAAC,eAC1B0B,IAAA,CAAC1C,SAAS;UAAC8I,UAAU;UAACC,WAAW;UAAA5E,QAAA,EAC9ByE,YAAY,CAACxE,GAAG,CAAImB,KAAK,iBAC1B7C,IAAA,CAACmE,SAAS;YAETtB,KAAK,EAAGA,KAAO;YACfJ,MAAM,EAAGA,MAAQ;YACjB9B,IAAI,EAAGA,IAAM;YACbC,YAAY,EAAGA;UAAc,GAJvBiC,KAAK,CAACE,EAKZ,CACA;QAAC,CACO,CAAC;MAAA,CACL;IAAC,CACR,CACF;EAAA,CACM,CAAC;AAEX;AAEA,SAAS0D,eAAeA,CAAE;EACzBC,KAAK;EACLC,WAAW;EACXlF;AAKD,CAAC,EAAG;EACH,oBACCrB,KAAA,CAAC1C,IAAI;IAACkJ,OAAO,EAAG,EAAI;IAACtD,SAAS,EAAC,4BAA4B;IAACuD,GAAG,EAAG,CAAG;IAAApF,QAAA,gBACpErB,KAAA;MAAKkD,SAAS,EAAC,qCAAqC;MAAA7B,QAAA,gBACnDzB,IAAA,CAAChC,OAAO;QACP8I,KAAK,EAAG,CAAG;QACXxD,SAAS,EAAC,mCAAmC;QAAA7B,QAAA,EAE3CiF;MAAK,CACC,CAAC,EACRC,WAAW,iBACZ3G,IAAA,CAAC9B,IAAI;QACJ6I,OAAO,EAAC,OAAO;QACfzD,SAAS,EAAC,yCAAyC;QAAA7B,QAAA,EAEjDkF;MAAW,CACR,CACN;IAAA,CACG,CAAC,eACN3G,IAAA,CAACtC,IAAI;MACJkJ,OAAO,EAAG,CAAG;MACbC,GAAG,EAAG,CAAG;MACTvD,SAAS,EAAC,qCAAqC;MAAA7B,QAAA,EAE7CA;IAAQ,CACL,CAAC;EAAA,CACF,CAAC;AAET;AAEA,SAASuF,0BAA0BA,CAAE;EACpCC,OAAO;EACPC;AAID,CAAC,EAAG;EACH,MAAM;IAAEvG;EAAK,CAAC,GAAGjC,UAAU,CAAEkB,gBAAiB,CAAC;EAC/C,oBACCQ,KAAA,CAACxC,MAAM;IAAC0F,SAAS,EAAC,uBAAuB;IAAC6C,OAAO,EAAG,CAAG;IAAA1E,QAAA,gBACtDrB,KAAA,CAACqG,eAAe;MAACC,KAAK,EAAGpI,EAAE,CAAE,YAAa,CAAG;MAAAmD,QAAA,gBAC5CrB,KAAA,CAACtC,MAAM;QAAC0G,QAAQ;QAAClB,SAAS,EAAC,mBAAmB;QAAA7B,QAAA,gBAC7CzB,IAAA,CAACwC,gBAAgB,IAAE,CAAC,eACpBxC,IAAA,CAACqD,oBAAoB,IAAE,CAAC;MAAA,CACjB,CAAC,EACP1C,IAAI,CAACS,IAAI,KAAKhC,WAAW,iBAC1BY,IAAA,CAACF,aAAa;QACbmH,OAAO,EAAGA,OAAS;QACnBC,UAAU,EAAGA;MAAY,CACzB,CACD,eACDlH,IAAA,CAAC0D,mBAAmB,IAAE,CAAC;IAAA,CACP,CAAC,eAClB1D,IAAA,CAACyG,eAAe;MAACC,KAAK,EAAGpI,EAAE,CAAE,YAAa,CAAG;MAAAmD,QAAA,eAC5CzB,IAAA,CAACsF,YAAY,IAAE;IAAC,CACA,CAAC;EAAA,CACX,CAAC;AAEX;AAEA,SAAS6B,oBAAoBA,CAAE;EAC9BF,OAAO;EACPC,UAAU;EACV3G,cAAc,GAAG;IAAEC,IAAI,EAAE,CAAC,CAAC;IAAEC,IAAI,EAAE,CAAC,CAAC;IAAEC,KAAK,EAAE,CAAC;EAAE;AAKlD,CAAC,EAAG;EACH,MAAM,CAAE0G,oBAAoB,EAAEC,uBAAuB,CAAE,GACtD1I,QAAQ,CAAa,KAAM,CAAC;EAE7B,oBACCyB,KAAA,CAAAF,SAAA;IAAAuB,QAAA,gBACCzB,IAAA,CAACM,YAAY;MAACC,cAAc,EAAGA;IAAgB,CAAE,CAAC,eAClDH,KAAA;MAAAqB,QAAA,gBACCzB,IAAA,CAACpD,MAAM;QACN0E,IAAI,EAAC,SAAS;QACdC,IAAI,EAAGxC,GAAK;QACZyC,KAAK,EAAGjD,EAAE,CAAE,cAAc,EAAE,wBAAyB,CAAG;QACxDoG,OAAO,EAAGA,CAAA,KAAM0C,uBAAuB,CAAE,IAAK;MAAG,CACjD,CAAC,EACAD,oBAAoB,iBACrBpH,IAAA,CAACnD,OAAO;QACPyK,SAAS,EAAC,YAAY;QACtBC,OAAO,EAAGA,CAAA,KAAM;UACfF,uBAAuB,CAAE,KAAM,CAAC;QACjC,CAAG;QACHG,YAAY;QAAA/F,QAAA,eAEZzB,IAAA,CAACgH,0BAA0B;UAC1BC,OAAO,EAAGA,OAAS;UACnBC,UAAU,EAAGA;QAAY,CACzB;MAAC,CACM,CACT;IAAA,CACG,CAAC;EAAA,CACL,CAAC;AAEL;AAEA,MAAMO,mBAAmB,GAAGhJ,IAAI,CAAE0I,oBAAqB,CAAC;AAExD,eAAeM,mBAAmB","ignoreList":[]}
@@ -26,7 +26,10 @@ function DropdownHeader({
26
26
  level: 2,
27
27
  size: 13,
28
28
  children: title
29
- }), /*#__PURE__*/_jsx(Spacer, {}), onClose && /*#__PURE__*/_jsx(Button, {
29
+ }), /*#__PURE__*/_jsx(Spacer, {}), onClose && /*#__PURE__*/_jsx(Button
30
+ // TODO: Switch to `true` (40px size) if possible
31
+ , {
32
+ __next40pxDefaultSize: false,
30
33
  className: "dataforms-layouts-panel__dropdown-header-action",
31
34
  label: __('Close'),
32
35
  icon: closeSmall,
@@ -1 +1 @@
1
- {"version":3,"names":["__experimentalVStack","VStack","__experimentalHStack","HStack","__experimentalHeading","Heading","__experimentalSpacer","Spacer","Dropdown","Button","useState","useMemo","sprintf","__","closeSmall","normalizeFields","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DropdownHeader","title","onClose","className","spacing","children","alignment","level","size","label","icon","onClick","FormField","data","field","onChange","popoverAnchor","setPopoverAnchor","popoverProps","anchor","placement","offset","shift","ref","contentClassName","focusOnMount","toggleProps","variant","tooltipPosition","renderToggle","isOpen","onToggle","render","item","renderContent","Edit","hideLabelFromVision","id","FormPanel","fields","form","visibleFields","_form$fields","map","fieldId","find","filter"],"sources":["@wordpress/dataviews/src/dataforms-layouts/panel/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\t__experimentalHeading as Heading,\n\t__experimentalSpacer as Spacer,\n\tDropdown,\n\tButton,\n} from '@wordpress/components';\nimport { useState, useMemo } from '@wordpress/element';\nimport { sprintf, __ } from '@wordpress/i18n';\nimport { closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { normalizeFields } from '../../normalize-fields';\nimport type { DataFormProps, NormalizedField, Field } from '../../types';\n\ninterface FormFieldProps< Item > {\n\tdata: Item;\n\tfield: NormalizedField< Item >;\n\tonChange: ( value: any ) => void;\n}\n\nfunction DropdownHeader( {\n\ttitle,\n\tonClose,\n}: {\n\ttitle: string;\n\tonClose: () => void;\n} ) {\n\treturn (\n\t\t<VStack\n\t\t\tclassName=\"dataforms-layouts-panel__dropdown-header\"\n\t\t\tspacing={ 4 }\n\t\t>\n\t\t\t<HStack alignment=\"center\">\n\t\t\t\t<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t{ title }\n\t\t\t\t</Heading>\n\t\t\t\t<Spacer />\n\t\t\t\t{ onClose && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"dataforms-layouts-panel__dropdown-header-action\"\n\t\t\t\t\t\tlabel={ __( 'Close' ) }\n\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nfunction FormField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n}: FormFieldProps< Item > ) {\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState< HTMLElement | null >(\n\t\tnull\n\t);\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( {\n\t\t\t// Anchor the popover to the middle of the entire row so that it doesn't\n\t\t\t// move around when the label changes.\n\t\t\tanchor: popoverAnchor,\n\t\t\tplacement: 'left-start',\n\t\t\toffset: 36,\n\t\t\tshift: true,\n\t\t} ),\n\t\t[ popoverAnchor ]\n\t);\n\n\treturn (\n\t\t<HStack\n\t\t\tref={ setPopoverAnchor }\n\t\t\tclassName=\"dataforms-layouts-panel__field\"\n\t\t>\n\t\t\t<div className=\"dataforms-layouts-panel__field-label\">\n\t\t\t\t{ field.label }\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<Dropdown\n\t\t\t\t\tcontentClassName=\"dataforms-layouts-panel__field-dropdown\"\n\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\tfocusOnMount\n\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\tsize: 'compact',\n\t\t\t\t\t\tvariant: 'tertiary',\n\t\t\t\t\t\ttooltipPosition: 'middle left',\n\t\t\t\t\t} }\n\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"dataforms-layouts-panel__field-control\"\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Field name.\n\t\t\t\t\t\t\t\t__( 'Edit %s' ),\n\t\t\t\t\t\t\t\tfield.label\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<field.render item={ data } />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<DropdownHeader\n\t\t\t\t\t\t\t\ttitle={ field.label }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<field.Edit\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\thideLabelFromVision\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/>\n\t\t\t</div>\n\t\t</HStack>\n\t);\n}\n\nexport default function FormPanel< Item >( {\n\tdata,\n\tfields,\n\tform,\n\tonChange,\n}: DataFormProps< Item > ) {\n\tconst visibleFields = useMemo(\n\t\t() =>\n\t\t\tnormalizeFields(\n\t\t\t\t( form.fields ?? [] )\n\t\t\t\t\t.map( ( fieldId ) =>\n\t\t\t\t\t\tfields.find( ( { id } ) => id === fieldId )\n\t\t\t\t\t)\n\t\t\t\t\t.filter( ( field ): field is Field< Item > => !! field )\n\t\t\t),\n\t\t[ fields, form.fields ]\n\t);\n\n\treturn (\n\t\t<VStack spacing={ 2 }>\n\t\t\t{ visibleFields.map( ( field ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<FormField\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</VStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__experimentalVStack","VStack","__experimentalHStack","HStack","__experimentalHeading","Heading","__experimentalSpacer","Spacer","Dropdown","Button","useState","useMemo","sprintf","__","closeSmall","normalizeFields","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DropdownHeader","title","onClose","className","spacing","children","alignment","level","size","__next40pxDefaultSize","label","icon","onClick","FormField","data","field","onChange","popoverAnchor","setPopoverAnchor","popoverProps","anchor","placement","offset","shift","ref","contentClassName","focusOnMount","toggleProps","variant","tooltipPosition","renderToggle","isOpen","onToggle","render","item","renderContent","Edit","hideLabelFromVision","id","FormPanel","fields","form","visibleFields","_form$fields","map","fieldId","find","filter"],"sources":["@wordpress/dataviews/src/dataforms-layouts/panel/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\t__experimentalHeading as Heading,\n\t__experimentalSpacer as Spacer,\n\tDropdown,\n\tButton,\n} from '@wordpress/components';\nimport { useState, useMemo } from '@wordpress/element';\nimport { sprintf, __ } from '@wordpress/i18n';\nimport { closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { normalizeFields } from '../../normalize-fields';\nimport type { DataFormProps, NormalizedField, Field } from '../../types';\n\ninterface FormFieldProps< Item > {\n\tdata: Item;\n\tfield: NormalizedField< Item >;\n\tonChange: ( value: any ) => void;\n}\n\nfunction DropdownHeader( {\n\ttitle,\n\tonClose,\n}: {\n\ttitle: string;\n\tonClose: () => void;\n} ) {\n\treturn (\n\t\t<VStack\n\t\t\tclassName=\"dataforms-layouts-panel__dropdown-header\"\n\t\t\tspacing={ 4 }\n\t\t>\n\t\t\t<HStack alignment=\"center\">\n\t\t\t\t<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t{ title }\n\t\t\t\t</Heading>\n\t\t\t\t<Spacer />\n\t\t\t\t{ onClose && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\t\t\tclassName=\"dataforms-layouts-panel__dropdown-header-action\"\n\t\t\t\t\t\tlabel={ __( 'Close' ) }\n\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nfunction FormField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n}: FormFieldProps< Item > ) {\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState< HTMLElement | null >(\n\t\tnull\n\t);\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( {\n\t\t\t// Anchor the popover to the middle of the entire row so that it doesn't\n\t\t\t// move around when the label changes.\n\t\t\tanchor: popoverAnchor,\n\t\t\tplacement: 'left-start',\n\t\t\toffset: 36,\n\t\t\tshift: true,\n\t\t} ),\n\t\t[ popoverAnchor ]\n\t);\n\n\treturn (\n\t\t<HStack\n\t\t\tref={ setPopoverAnchor }\n\t\t\tclassName=\"dataforms-layouts-panel__field\"\n\t\t>\n\t\t\t<div className=\"dataforms-layouts-panel__field-label\">\n\t\t\t\t{ field.label }\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<Dropdown\n\t\t\t\t\tcontentClassName=\"dataforms-layouts-panel__field-dropdown\"\n\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\tfocusOnMount\n\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\tsize: 'compact',\n\t\t\t\t\t\tvariant: 'tertiary',\n\t\t\t\t\t\ttooltipPosition: 'middle left',\n\t\t\t\t\t} }\n\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"dataforms-layouts-panel__field-control\"\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Field name.\n\t\t\t\t\t\t\t\t__( 'Edit %s' ),\n\t\t\t\t\t\t\t\tfield.label\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<field.render item={ data } />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<DropdownHeader\n\t\t\t\t\t\t\t\ttitle={ field.label }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<field.Edit\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\thideLabelFromVision\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/>\n\t\t\t</div>\n\t\t</HStack>\n\t);\n}\n\nexport default function FormPanel< Item >( {\n\tdata,\n\tfields,\n\tform,\n\tonChange,\n}: DataFormProps< Item > ) {\n\tconst visibleFields = useMemo(\n\t\t() =>\n\t\t\tnormalizeFields(\n\t\t\t\t( form.fields ?? [] )\n\t\t\t\t\t.map( ( fieldId ) =>\n\t\t\t\t\t\tfields.find( ( { id } ) => id === fieldId )\n\t\t\t\t\t)\n\t\t\t\t\t.filter( ( field ): field is Field< Item > => !! field )\n\t\t\t),\n\t\t[ fields, form.fields ]\n\t);\n\n\treturn (\n\t\t<VStack spacing={ 2 }>\n\t\t\t{ visibleFields.map( ( field ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<FormField\n\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</VStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -27,7 +27,7 @@ export const VIEW_LAYOUTS = [{
27
27
  component: ViewList,
28
28
  icon: isRTL() ? formatListBulletsRTL : formatListBullets
29
29
  }];
30
- export function getMandatoryFields(view) {
30
+ export function getNotHidableFieldIds(view) {
31
31
  if (view.type === 'table') {
32
32
  var _view$layout$combined;
33
33
  return [view.layout?.primaryField].concat((_view$layout$combined = view.layout?.combinedFields?.flatMap(field => field.children)) !== null && _view$layout$combined !== void 0 ? _view$layout$combined : []).filter(item => !!item);
@@ -40,4 +40,48 @@ export function getMandatoryFields(view) {
40
40
  }
41
41
  return [];
42
42
  }
43
+ function getCombinedFieldIds(view) {
44
+ const combinedFields = [];
45
+ if (view.type === LAYOUT_TABLE && view.layout?.combinedFields) {
46
+ view.layout.combinedFields.forEach(combination => {
47
+ combinedFields.push(...combination.children);
48
+ });
49
+ }
50
+ return combinedFields;
51
+ }
52
+ export function getVisibleFieldIds(view, fields) {
53
+ const fieldsToExclude = getCombinedFieldIds(view);
54
+ if (view.fields) {
55
+ return view.fields.filter(id => !fieldsToExclude.includes(id));
56
+ }
57
+ const visibleFields = [];
58
+ if (view.type === LAYOUT_TABLE && view.layout?.combinedFields) {
59
+ visibleFields.push(...view.layout.combinedFields.map(({
60
+ id
61
+ }) => id));
62
+ }
63
+ visibleFields.push(...fields.filter(({
64
+ id
65
+ }) => !fieldsToExclude.includes(id)).map(({
66
+ id
67
+ }) => id));
68
+ return visibleFields;
69
+ }
70
+ export function getHiddenFieldIds(view, fields) {
71
+ const fieldsToExclude = [...getCombinedFieldIds(view), ...getVisibleFieldIds(view, fields)];
72
+
73
+ // The media field does not need to be in the view.fields to be displayed.
74
+ if (view.type === LAYOUT_GRID && view.layout?.mediaField) {
75
+ fieldsToExclude.push(view.layout?.mediaField);
76
+ }
77
+ if (view.type === LAYOUT_LIST && view.layout?.mediaField) {
78
+ fieldsToExclude.push(view.layout?.mediaField);
79
+ }
80
+ return fields.filter(({
81
+ id,
82
+ enableHiding
83
+ }) => !fieldsToExclude.includes(id) && enableHiding).map(({
84
+ id
85
+ }) => id);
86
+ }
43
87
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__","isRTL","blockTable","category","formatListBullets","formatListBulletsRTL","ViewTable","ViewGrid","ViewList","LAYOUT_GRID","LAYOUT_LIST","LAYOUT_TABLE","VIEW_LAYOUTS","type","label","component","icon","getMandatoryFields","view","_view$layout$combined","layout","primaryField","concat","combinedFields","flatMap","field","children","filter","item","mediaField"],"sources":["@wordpress/dataviews/src/dataviews-layouts/index.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './table';\nimport ViewGrid from './grid';\nimport ViewList from './list';\nimport { LAYOUT_GRID, LAYOUT_LIST, LAYOUT_TABLE } from '../constants';\nimport type { View } from '../types';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n];\n\nexport function getMandatoryFields( view: View ): string[] {\n\tif ( view.type === 'table' ) {\n\t\treturn [ view.layout?.primaryField ]\n\t\t\t.concat(\n\t\t\t\tview.layout?.combinedFields?.flatMap(\n\t\t\t\t\t( field ) => field.children\n\t\t\t\t) ?? []\n\t\t\t)\n\t\t\t.filter( ( item ): item is string => !! item );\n\t}\n\n\tif ( view.type === 'grid' ) {\n\t\treturn [ view.layout?.primaryField, view.layout?.mediaField ].filter(\n\t\t\t( item ): item is string => !! item\n\t\t);\n\t}\n\n\tif ( view.type === 'list' ) {\n\t\treturn [ view.layout?.primaryField, view.layout?.mediaField ].filter(\n\t\t\t( item ): item is string => !! item\n\t\t);\n\t}\n\n\treturn [];\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,EAAEC,KAAK,QAAQ,iBAAiB;AAC3C,SACCC,UAAU,EACVC,QAAQ,EACRC,iBAAiB,EACjBC,oBAAoB,QACd,kBAAkB;;AAEzB;AACA;AACA;AACA,OAAOC,SAAS,MAAM,SAAS;AAC/B,OAAOC,QAAQ,MAAM,QAAQ;AAC7B,OAAOC,QAAQ,MAAM,QAAQ;AAC7B,SAASC,WAAW,EAAEC,WAAW,EAAEC,YAAY,QAAQ,cAAc;AAGrE,OAAO,MAAMC,YAAY,GAAG,CAC3B;EACCC,IAAI,EAAEF,YAAY;EAClBG,KAAK,EAAEd,EAAE,CAAE,OAAQ,CAAC;EACpBe,SAAS,EAAET,SAAS;EACpBU,IAAI,EAAEd;AACP,CAAC,EACD;EACCW,IAAI,EAAEJ,WAAW;EACjBK,KAAK,EAAEd,EAAE,CAAE,MAAO,CAAC;EACnBe,SAAS,EAAER,QAAQ;EACnBS,IAAI,EAAEb;AACP,CAAC,EACD;EACCU,IAAI,EAAEH,WAAW;EACjBI,KAAK,EAAEd,EAAE,CAAE,MAAO,CAAC;EACnBe,SAAS,EAAEP,QAAQ;EACnBQ,IAAI,EAAEf,KAAK,CAAC,CAAC,GAAGI,oBAAoB,GAAGD;AACxC,CAAC,CACD;AAED,OAAO,SAASa,kBAAkBA,CAAEC,IAAU,EAAa;EAC1D,IAAKA,IAAI,CAACL,IAAI,KAAK,OAAO,EAAG;IAAA,IAAAM,qBAAA;IAC5B,OAAO,CAAED,IAAI,CAACE,MAAM,EAAEC,YAAY,CAAE,CAClCC,MAAM,EAAAH,qBAAA,GACND,IAAI,CAACE,MAAM,EAAEG,cAAc,EAAEC,OAAO,CACjCC,KAAK,IAAMA,KAAK,CAACC,QACpB,CAAC,cAAAP,qBAAA,cAAAA,qBAAA,GAAI,EACN,CAAC,CACAQ,MAAM,CAAIC,IAAI,IAAsB,CAAC,CAAEA,IAAK,CAAC;EAChD;EAEA,IAAKV,IAAI,CAACL,IAAI,KAAK,MAAM,EAAG;IAC3B,OAAO,CAAEK,IAAI,CAACE,MAAM,EAAEC,YAAY,EAAEH,IAAI,CAACE,MAAM,EAAES,UAAU,CAAE,CAACF,MAAM,CACjEC,IAAI,IAAsB,CAAC,CAAEA,IAChC,CAAC;EACF;EAEA,IAAKV,IAAI,CAACL,IAAI,KAAK,MAAM,EAAG;IAC3B,OAAO,CAAEK,IAAI,CAACE,MAAM,EAAEC,YAAY,EAAEH,IAAI,CAACE,MAAM,EAAES,UAAU,CAAE,CAACF,MAAM,CACjEC,IAAI,IAAsB,CAAC,CAAEA,IAChC,CAAC;EACF;EAEA,OAAO,EAAE;AACV","ignoreList":[]}
1
+ {"version":3,"names":["__","isRTL","blockTable","category","formatListBullets","formatListBulletsRTL","ViewTable","ViewGrid","ViewList","LAYOUT_GRID","LAYOUT_LIST","LAYOUT_TABLE","VIEW_LAYOUTS","type","label","component","icon","getNotHidableFieldIds","view","_view$layout$combined","layout","primaryField","concat","combinedFields","flatMap","field","children","filter","item","mediaField","getCombinedFieldIds","forEach","combination","push","getVisibleFieldIds","fields","fieldsToExclude","id","includes","visibleFields","map","getHiddenFieldIds","enableHiding"],"sources":["@wordpress/dataviews/src/dataviews-layouts/index.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './table';\nimport ViewGrid from './grid';\nimport ViewList from './list';\nimport { LAYOUT_GRID, LAYOUT_LIST, LAYOUT_TABLE } from '../constants';\nimport type { View, Field } from '../types';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n];\n\nexport function getNotHidableFieldIds( view: View ): string[] {\n\tif ( view.type === 'table' ) {\n\t\treturn [ view.layout?.primaryField ]\n\t\t\t.concat(\n\t\t\t\tview.layout?.combinedFields?.flatMap(\n\t\t\t\t\t( field ) => field.children\n\t\t\t\t) ?? []\n\t\t\t)\n\t\t\t.filter( ( item ): item is string => !! item );\n\t}\n\n\tif ( view.type === 'grid' ) {\n\t\treturn [ view.layout?.primaryField, view.layout?.mediaField ].filter(\n\t\t\t( item ): item is string => !! item\n\t\t);\n\t}\n\n\tif ( view.type === 'list' ) {\n\t\treturn [ view.layout?.primaryField, view.layout?.mediaField ].filter(\n\t\t\t( item ): item is string => !! item\n\t\t);\n\t}\n\n\treturn [];\n}\n\nfunction getCombinedFieldIds( view: View ): string[] {\n\tconst combinedFields: string[] = [];\n\tif ( view.type === LAYOUT_TABLE && view.layout?.combinedFields ) {\n\t\tview.layout.combinedFields.forEach( ( combination ) => {\n\t\t\tcombinedFields.push( ...combination.children );\n\t\t} );\n\t}\n\treturn combinedFields;\n}\n\nexport function getVisibleFieldIds(\n\tview: View,\n\tfields: Field< any >[]\n): string[] {\n\tconst fieldsToExclude = getCombinedFieldIds( view );\n\n\tif ( view.fields ) {\n\t\treturn view.fields.filter( ( id ) => ! fieldsToExclude.includes( id ) );\n\t}\n\n\tconst visibleFields = [];\n\tif ( view.type === LAYOUT_TABLE && view.layout?.combinedFields ) {\n\t\tvisibleFields.push(\n\t\t\t...view.layout.combinedFields.map( ( { id } ) => id )\n\t\t);\n\t}\n\tvisibleFields.push(\n\t\t...fields\n\t\t\t.filter( ( { id } ) => ! fieldsToExclude.includes( id ) )\n\t\t\t.map( ( { id } ) => id )\n\t);\n\n\treturn visibleFields;\n}\n\nexport function getHiddenFieldIds(\n\tview: View,\n\tfields: Field< any >[]\n): string[] {\n\tconst fieldsToExclude = [\n\t\t...getCombinedFieldIds( view ),\n\t\t...getVisibleFieldIds( view, fields ),\n\t];\n\n\t// The media field does not need to be in the view.fields to be displayed.\n\tif ( view.type === LAYOUT_GRID && view.layout?.mediaField ) {\n\t\tfieldsToExclude.push( view.layout?.mediaField );\n\t}\n\n\tif ( view.type === LAYOUT_LIST && view.layout?.mediaField ) {\n\t\tfieldsToExclude.push( view.layout?.mediaField );\n\t}\n\n\treturn fields\n\t\t.filter(\n\t\t\t( { id, enableHiding } ) =>\n\t\t\t\t! fieldsToExclude.includes( id ) && enableHiding\n\t\t)\n\t\t.map( ( { id } ) => id );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -2,16 +2,11 @@
2
2
  * External dependencies
3
3
  */
4
4
  import clsx from 'clsx';
5
- // TODO: use the @wordpress/components one once public
6
- // eslint-disable-next-line no-restricted-imports
7
- import { useStoreState } from '@ariakit/react';
8
- // Import CompositeStore type, which is not exported from @wordpress/components.
9
- // eslint-disable-next-line no-restricted-imports
10
5
 
11
6
  /**
12
7
  * WordPress dependencies
13
8
  */
14
- import { useInstanceId } from '@wordpress/compose';
9
+ import { useInstanceId, usePrevious } from '@wordpress/compose';
15
10
  import { __experimentalHStack as HStack, __experimentalVStack as VStack, Button, privateApis as componentsPrivateApis, Spinner, VisuallyHidden } from '@wordpress/components';
16
11
  import { useCallback, useEffect, useMemo, useRef, useState } from '@wordpress/element';
17
12
  import { __ } from '@wordpress/i18n';
@@ -26,27 +21,78 @@ import { ActionsDropdownMenuGroup, ActionModal } from '../../components/dataview
26
21
  import { jsx as _jsx } from "react/jsx-runtime";
27
22
  import { jsxs as _jsxs } from "react/jsx-runtime";
28
23
  const {
29
- useCompositeStoreV2: useCompositeStore,
30
24
  CompositeV2: Composite,
31
25
  CompositeItemV2: CompositeItem,
32
26
  CompositeRowV2: CompositeRow,
33
27
  DropdownMenuV2: DropdownMenu
34
28
  } = unlock(componentsPrivateApis);
29
+ function generateItemWrapperCompositeId(idPrefix) {
30
+ return `${idPrefix}-item-wrapper`;
31
+ }
32
+ function generatePrimaryActionCompositeId(idPrefix, primaryActionId) {
33
+ return `${idPrefix}-primary-action-${primaryActionId}`;
34
+ }
35
+ function generateDropdownTriggerCompositeId(idPrefix) {
36
+ return `${idPrefix}-dropdown`;
37
+ }
38
+ function PrimaryActionGridCell({
39
+ idPrefix,
40
+ primaryAction,
41
+ item
42
+ }) {
43
+ const registry = useRegistry();
44
+ const [isModalOpen, setIsModalOpen] = useState(false);
45
+ const compositeItemId = generatePrimaryActionCompositeId(idPrefix, primaryAction.id);
46
+ const label = typeof primaryAction.label === 'string' ? primaryAction.label : primaryAction.label([item]);
47
+ return 'RenderModal' in primaryAction ? /*#__PURE__*/_jsx("div", {
48
+ role: "gridcell",
49
+ children: /*#__PURE__*/_jsx(CompositeItem, {
50
+ id: compositeItemId,
51
+ render: /*#__PURE__*/_jsx(Button, {
52
+ label: label,
53
+ icon: primaryAction.icon,
54
+ isDestructive: primaryAction.isDestructive,
55
+ size: "small",
56
+ onClick: () => setIsModalOpen(true)
57
+ }),
58
+ children: isModalOpen && /*#__PURE__*/_jsx(ActionModal, {
59
+ action: primaryAction,
60
+ items: [item],
61
+ closeModal: () => setIsModalOpen(false)
62
+ })
63
+ })
64
+ }, primaryAction.id) : /*#__PURE__*/_jsx("div", {
65
+ role: "gridcell",
66
+ children: /*#__PURE__*/_jsx(CompositeItem, {
67
+ id: compositeItemId,
68
+ render: /*#__PURE__*/_jsx(Button, {
69
+ label: label,
70
+ icon: primaryAction.icon,
71
+ isDestructive: primaryAction.isDestructive,
72
+ size: "small",
73
+ onClick: () => {
74
+ primaryAction.callback([item], {
75
+ registry
76
+ });
77
+ }
78
+ })
79
+ })
80
+ }, primaryAction.id);
81
+ }
35
82
  function ListItem({
36
83
  actions,
37
- id,
84
+ idPrefix,
38
85
  isSelected,
39
86
  item,
40
87
  mediaField,
41
88
  onSelect,
42
89
  primaryField,
43
- store,
44
- visibleFields
90
+ visibleFields,
91
+ onDropdownTriggerKeyDown
45
92
  }) {
46
- const registry = useRegistry();
47
93
  const itemRef = useRef(null);
48
- const labelId = `${id}-label`;
49
- const descriptionId = `${id}-description`;
94
+ const labelId = `${idPrefix}-label`;
95
+ const descriptionId = `${idPrefix}-description`;
50
96
  const [isHovered, setIsHovered] = useState(false);
51
97
  const handleMouseEnter = () => {
52
98
  setIsHovered(true);
@@ -76,8 +122,6 @@ function ListItem({
76
122
  eligibleActions: _eligibleActions
77
123
  };
78
124
  }, [actions, item]);
79
- const [isModalOpen, setIsModalOpen] = useState(false);
80
- const primaryActionLabel = primaryAction && (typeof primaryAction.label === 'string' ? primaryAction.label : primaryAction.label([item]));
81
125
  const renderedMediaField = mediaField?.render ? /*#__PURE__*/_jsx(mediaField.render, {
82
126
  item: item
83
127
  }) : /*#__PURE__*/_jsx("div", {
@@ -103,10 +147,9 @@ function ListItem({
103
147
  children: [/*#__PURE__*/_jsx("div", {
104
148
  role: "gridcell",
105
149
  children: /*#__PURE__*/_jsx(CompositeItem, {
106
- store: store,
107
150
  render: /*#__PURE__*/_jsx("div", {}),
108
151
  role: "button",
109
- id: id,
152
+ id: generateItemWrapperCompositeId(idPrefix),
110
153
  "aria-pressed": isSelected,
111
154
  "aria-labelledby": labelId,
112
155
  "aria-describedby": descriptionId,
@@ -154,62 +197,22 @@ function ListItem({
154
197
  flexShrink: '0',
155
198
  width: 'auto'
156
199
  },
157
- children: [primaryAction && 'RenderModal' in primaryAction && /*#__PURE__*/_jsx("div", {
158
- role: "gridcell",
159
- children: /*#__PURE__*/_jsx(CompositeItem, {
160
- store: store,
161
- render: /*#__PURE__*/_jsx(Button, {
162
- label: primaryActionLabel,
163
- icon: primaryAction.icon,
164
- isDestructive: primaryAction.isDestructive,
165
- size: "small",
166
- onClick: () => setIsModalOpen(true)
167
- }),
168
- children: isModalOpen && /*#__PURE__*/_jsx(ActionModal, {
169
- action: primaryAction,
170
- items: [item],
171
- closeModal: () => setIsModalOpen(false)
172
- })
173
- })
174
- }), primaryAction && !('RenderModal' in primaryAction) && /*#__PURE__*/_jsx("div", {
175
- role: "gridcell",
176
- children: /*#__PURE__*/_jsx(CompositeItem, {
177
- store: store,
178
- render: /*#__PURE__*/_jsx(Button, {
179
- label: primaryActionLabel,
180
- icon: primaryAction.icon,
181
- isDestructive: primaryAction.isDestructive,
182
- size: "small",
183
- onClick: () => {
184
- primaryAction.callback([item], {
185
- registry
186
- });
187
- }
188
- })
189
- })
190
- }, primaryAction.id), /*#__PURE__*/_jsx("div", {
200
+ children: [primaryAction && /*#__PURE__*/_jsx(PrimaryActionGridCell, {
201
+ idPrefix: idPrefix,
202
+ primaryAction: primaryAction,
203
+ item: item
204
+ }), /*#__PURE__*/_jsx("div", {
191
205
  role: "gridcell",
192
206
  children: /*#__PURE__*/_jsx(DropdownMenu, {
193
207
  trigger: /*#__PURE__*/_jsx(CompositeItem, {
194
- store: store,
208
+ id: generateDropdownTriggerCompositeId(idPrefix),
195
209
  render: /*#__PURE__*/_jsx(Button, {
196
210
  size: "small",
197
211
  icon: moreVertical,
198
212
  label: __('Actions'),
199
213
  accessibleWhenDisabled: true,
200
214
  disabled: !actions.length,
201
- onKeyDown: event => {
202
- if (event.key === 'ArrowDown') {
203
- // Prevent the default behaviour (open dropdown menu) and go down.
204
- event.preventDefault();
205
- store.move(store.down());
206
- }
207
- if (event.key === 'ArrowUp') {
208
- // Prevent the default behavior (open dropdown menu) and go up.
209
- event.preventDefault();
210
- store.move(store.up());
211
- }
212
- }
215
+ onKeyDown: onDropdownTriggerKeyDown
213
216
  })
214
217
  }),
215
218
  placement: "bottom-end",
@@ -241,23 +244,61 @@ export default function ViewList(props) {
241
244
  const viewFields = view.fields || fields.map(field => field.id);
242
245
  const visibleFields = fields.filter(field => viewFields.includes(field.id) && ![view.layout?.primaryField, view.layout?.mediaField].includes(field.id));
243
246
  const onSelect = item => onChangeSelection([getItemId(item)]);
244
- const getItemDomId = useCallback(item => item ? `${baseId}-${getItemId(item)}` : undefined, [baseId, getItemId]);
245
- const store = useCompositeStore({
246
- defaultActiveId: getItemDomId(selectedItem)
247
- }); // TODO, remove once composite APIs are public
247
+ const generateCompositeItemIdPrefix = useCallback(item => `${baseId}-${getItemId(item)}`, [baseId, getItemId]);
248
+ const isActiveCompositeItem = useCallback((item, idToCheck) => {
249
+ // All composite items use the same prefix in their IDs.
250
+ return idToCheck.startsWith(generateCompositeItemIdPrefix(item));
251
+ }, [generateCompositeItemIdPrefix]);
248
252
 
249
- // Manage focused item, when the active one is removed from the list.
250
- const isActiveIdInList = useStoreState(store, state => state.items.some(item => item.id === state.activeId));
253
+ // Controlled state for the active composite item.
254
+ const [activeCompositeId, setActiveCompositeId] = useState(undefined);
255
+
256
+ // Update the active composite item when the selected item changes.
257
+ useEffect(() => {
258
+ if (selectedItem) {
259
+ setActiveCompositeId(generateItemWrapperCompositeId(generateCompositeItemIdPrefix(selectedItem)));
260
+ }
261
+ }, [selectedItem, generateCompositeItemIdPrefix]);
262
+ const activeItemIndex = data.findIndex(item => isActiveCompositeItem(item, activeCompositeId !== null && activeCompositeId !== void 0 ? activeCompositeId : ''));
263
+ const previousActiveItemIndex = usePrevious(activeItemIndex);
264
+ const isActiveIdInList = activeItemIndex !== -1;
265
+ const selectCompositeItem = useCallback((targetIndex, generateCompositeId) => {
266
+ // Clamping between 0 and data.length - 1 to avoid out of bounds.
267
+ const clampedIndex = Math.min(data.length - 1, Math.max(0, targetIndex));
268
+ const itemIdPrefix = generateCompositeItemIdPrefix(data[clampedIndex]);
269
+ const targetCompositeItemId = generateCompositeId(itemIdPrefix);
270
+ setActiveCompositeId(targetCompositeItemId);
271
+ document.getElementById(targetCompositeItemId)?.focus();
272
+ }, [data, generateCompositeItemIdPrefix]);
273
+
274
+ // Select a new active composite item when the current active item
275
+ // is removed from the list.
251
276
  useEffect(() => {
252
- if (!isActiveIdInList) {
253
- // Prefer going down, except if there is no item below (last item), then go up (last item in list).
254
- if (store.down()) {
255
- store.move(store.down());
256
- } else if (store.up()) {
257
- store.move(store.up());
258
- }
277
+ const wasActiveIdInList = previousActiveItemIndex !== undefined && previousActiveItemIndex !== -1;
278
+ if (!isActiveIdInList && wasActiveIdInList) {
279
+ // By picking `previousActiveItemIndex` as the next item index, we are
280
+ // basically picking the item that would have been after the deleted one.
281
+ // If the previously active (and removed) item was the last of the list,
282
+ // we will select the item before it — which is the new last item.
283
+ selectCompositeItem(previousActiveItemIndex, generateItemWrapperCompositeId);
284
+ }
285
+ }, [isActiveIdInList, selectCompositeItem, previousActiveItemIndex]);
286
+
287
+ // Prevent the default behavior (open dropdown menu) and instead select the
288
+ // dropdown menu trigger on the previous/next row.
289
+ // https://github.com/ariakit/ariakit/issues/3768
290
+ const onDropdownTriggerKeyDown = useCallback(event => {
291
+ if (event.key === 'ArrowDown') {
292
+ // Select the dropdown menu trigger item in the next row.
293
+ event.preventDefault();
294
+ selectCompositeItem(activeItemIndex + 1, generateDropdownTriggerCompositeId);
295
+ }
296
+ if (event.key === 'ArrowUp') {
297
+ // Select the dropdown menu trigger item in the previous row.
298
+ event.preventDefault();
299
+ selectCompositeItem(activeItemIndex - 1, generateDropdownTriggerCompositeId);
259
300
  }
260
- }, [isActiveIdInList]);
301
+ }, [selectCompositeItem, activeItemIndex]);
261
302
  const hasData = data?.length;
262
303
  if (!hasData) {
263
304
  return /*#__PURE__*/_jsx("div", {
@@ -275,19 +316,20 @@ export default function ViewList(props) {
275
316
  render: /*#__PURE__*/_jsx("ul", {}),
276
317
  className: "dataviews-view-list",
277
318
  role: "grid",
278
- store: store,
319
+ activeId: activeCompositeId,
320
+ setActiveId: setActiveCompositeId,
279
321
  children: data.map(item => {
280
- const id = getItemDomId(item);
322
+ const id = generateCompositeItemIdPrefix(item);
281
323
  return /*#__PURE__*/_jsx(ListItem, {
282
- id: id,
324
+ idPrefix: id,
283
325
  actions: actions,
284
326
  item: item,
285
327
  isSelected: item === selectedItem,
286
328
  onSelect: onSelect,
287
329
  mediaField: mediaField,
288
330
  primaryField: primaryField,
289
- store: store,
290
- visibleFields: visibleFields
331
+ visibleFields: visibleFields,
332
+ onDropdownTriggerKeyDown: onDropdownTriggerKeyDown
291
333
  }, id);
292
334
  })
293
335
  });