@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.
- package/CHANGELOG.md +2 -0
- package/README.md +47 -7
- package/build/components/dataviews/index.js +3 -5
- package/build/components/dataviews/index.js.map +1 -1
- package/build/components/dataviews-bulk-actions/index.js +145 -141
- package/build/components/dataviews-bulk-actions/index.js.map +1 -1
- package/build/components/dataviews-filters/add-filter.js +4 -6
- package/build/components/dataviews-filters/add-filter.js.map +1 -1
- package/build/components/dataviews-filters/search-widget.js +28 -18
- package/build/components/dataviews-filters/search-widget.js.map +1 -1
- package/build/components/dataviews-footer/index.js +45 -0
- package/build/components/dataviews-footer/index.js.map +1 -0
- package/build/components/dataviews-item-actions/index.js +5 -8
- package/build/components/dataviews-item-actions/index.js.map +1 -1
- package/build/components/dataviews-pagination/index.js +4 -4
- package/build/components/dataviews-pagination/index.js.map +1 -1
- package/build/components/dataviews-view-config/index.js +171 -32
- package/build/components/dataviews-view-config/index.js.map +1 -1
- package/build/dataforms-layouts/panel/index.js +4 -1
- package/build/dataforms-layouts/panel/index.js.map +1 -1
- package/build/dataviews-layouts/index.js +48 -2
- package/build/dataviews-layouts/index.js.map +1 -1
- package/build/dataviews-layouts/list/index.js +124 -84
- package/build/dataviews-layouts/list/index.js.map +1 -1
- package/build/dataviews-layouts/table/column-header-menu.js +52 -54
- package/build/dataviews-layouts/table/column-header-menu.js.map +1 -1
- package/build/dataviews-layouts/table/index.js +7 -35
- package/build/dataviews-layouts/table/index.js.map +1 -1
- package/build/normalize-fields.js +4 -2
- package/build/normalize-fields.js.map +1 -1
- package/build/types.js.map +1 -1
- package/build-module/components/dataviews/index.js +3 -5
- package/build-module/components/dataviews/index.js.map +1 -1
- package/build-module/components/dataviews-bulk-actions/index.js +145 -143
- package/build-module/components/dataviews-bulk-actions/index.js.map +1 -1
- package/build-module/components/dataviews-filters/add-filter.js +4 -6
- package/build-module/components/dataviews-filters/add-filter.js.map +1 -1
- package/build-module/components/dataviews-filters/search-widget.js +28 -18
- package/build-module/components/dataviews-filters/search-widget.js.map +1 -1
- package/build-module/components/dataviews-footer/index.js +38 -0
- package/build-module/components/dataviews-footer/index.js.map +1 -0
- package/build-module/components/dataviews-item-actions/index.js +5 -8
- package/build-module/components/dataviews-item-actions/index.js.map +1 -1
- package/build-module/components/dataviews-pagination/index.js +5 -5
- package/build-module/components/dataviews-pagination/index.js.map +1 -1
- package/build-module/components/dataviews-view-config/index.js +177 -38
- package/build-module/components/dataviews-view-config/index.js.map +1 -1
- package/build-module/dataforms-layouts/panel/index.js +4 -1
- package/build-module/dataforms-layouts/panel/index.js.map +1 -1
- package/build-module/dataviews-layouts/index.js +45 -1
- package/build-module/dataviews-layouts/index.js.map +1 -1
- package/build-module/dataviews-layouts/list/index.js +125 -83
- package/build-module/dataviews-layouts/list/index.js.map +1 -1
- package/build-module/dataviews-layouts/table/column-header-menu.js +52 -54
- package/build-module/dataviews-layouts/table/column-header-menu.js.map +1 -1
- package/build-module/dataviews-layouts/table/index.js +9 -37
- package/build-module/dataviews-layouts/table/index.js.map +1 -1
- package/build-module/normalize-fields.js +4 -2
- package/build-module/normalize-fields.js.map +1 -1
- package/build-module/types.js.map +1 -1
- package/build-style/style-rtl.css +79 -63
- package/build-style/style.css +79 -63
- package/build-types/components/dataviews/index.d.ts.map +1 -1
- package/build-types/components/dataviews/stories/fixtures.d.ts +27 -131
- package/build-types/components/dataviews/stories/fixtures.d.ts.map +1 -1
- package/build-types/components/dataviews/stories/index.story.d.ts +12 -53
- package/build-types/components/dataviews/stories/index.story.d.ts.map +1 -1
- package/build-types/components/dataviews-bulk-actions/index.d.ts +11 -1
- package/build-types/components/dataviews-bulk-actions/index.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/add-filter.d.ts.map +1 -1
- package/build-types/components/dataviews-filters/search-widget.d.ts.map +1 -1
- package/build-types/components/dataviews-footer/index.d.ts +2 -0
- package/build-types/components/dataviews-footer/index.d.ts.map +1 -0
- package/build-types/components/dataviews-item-actions/index.d.ts.map +1 -1
- package/build-types/components/dataviews-view-config/index.d.ts.map +1 -1
- package/build-types/dataforms-layouts/panel/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/index.d.ts +4 -2
- package/build-types/dataviews-layouts/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/list/index.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/column-header-menu.d.ts.map +1 -1
- package/build-types/dataviews-layouts/table/index.d.ts.map +1 -1
- package/build-types/normalize-fields.d.ts.map +1 -1
- package/build-types/types.d.ts +2 -0
- package/build-types/types.d.ts.map +1 -1
- package/package.json +11 -11
- package/src/components/dataviews/index.tsx +2 -6
- package/src/components/dataviews/stories/fixtures.tsx +690 -0
- package/src/components/dataviews/stories/index.story.tsx +164 -0
- package/src/components/dataviews/style.scss +2 -0
- package/src/components/dataviews-bulk-actions/index.tsx +264 -213
- package/src/components/dataviews-bulk-actions/style.scss +9 -4
- package/src/components/dataviews-filters/add-filter.tsx +7 -11
- package/src/components/dataviews-filters/search-widget.tsx +45 -17
- package/src/components/dataviews-filters/style.scss +12 -2
- package/src/components/dataviews-footer/index.tsx +50 -0
- package/src/components/dataviews-footer/style.scss +40 -0
- package/src/components/dataviews-item-actions/index.tsx +8 -14
- package/src/components/dataviews-pagination/index.tsx +5 -5
- package/src/components/dataviews-pagination/style.scss +0 -19
- package/src/components/dataviews-view-config/index.tsx +252 -53
- package/src/components/dataviews-view-config/style.scss +25 -0
- package/src/dataforms-layouts/panel/index.tsx +2 -0
- package/src/dataviews-layouts/grid/style.scss +1 -1
- package/src/dataviews-layouts/index.ts +63 -2
- package/src/dataviews-layouts/list/index.tsx +199 -127
- package/src/dataviews-layouts/list/style.scss +10 -4
- package/src/dataviews-layouts/table/column-header-menu.tsx +85 -87
- package/src/dataviews-layouts/table/index.tsx +8 -65
- package/src/dataviews-layouts/table/style.scss +0 -5
- package/src/normalize-fields.ts +2 -0
- package/src/style.scss +1 -1
- package/src/types.ts +2 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/dataviews-bulk-actions-toolbar/index.js +0 -207
- package/build/components/dataviews-bulk-actions-toolbar/index.js.map +0 -1
- package/build-module/components/dataviews-bulk-actions-toolbar/index.js +0 -201
- package/build-module/components/dataviews-bulk-actions-toolbar/index.js.map +0 -1
- package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts +0 -2
- package/build-types/components/dataviews-bulk-actions-toolbar/index.d.ts.map +0 -1
- package/src/components/dataviews/stories/fixtures.js +0 -250
- package/src/components/dataviews/stories/index.story.js +0 -71
- package/src/components/dataviews-bulk-actions-toolbar/index.tsx +0 -288
- package/src/components/dataviews-bulk-actions-toolbar/style.scss +0 -45
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Ariakit","removeAccents","__","sprintf","useState","useMemo","useDeferredValue","VisuallyHidden","Icon","privateApis","componentsPrivateApis","search","check","SVG","Circle","unlock","jsx","_jsx","jsxs","_jsxs","CompositeV2","Composite","CompositeItemV2","CompositeItem","useCompositeStoreV2","useCompositeStore","radioCheck","xmlns","viewBox","children","cx","cy","r","normalizeSearchInput","input","trim","toLowerCase","EMPTY_ARRAY","getCurrentValue","filterDefinition","currentFilter","singleSelection","value","Array","isArray","getNewValue","includes","filter","v","ListBox","view","onChangeView","compositeStore","virtualFocus","focusLoop","defaultActiveId","operators","length","undefined","filters","find","f","field","currentValue","store","role","className","name","onFocusVisible","getState","activeId","move","first","render","CompositeTypeahead","elements","map","element","CompositeHover","label","onClick","_view$filters","_view$filters2","newFilters","_filter","operator","page","icon","ComboboxList","searchValue","setSearchValue","deferredSearchValue","matches","normalizedSearch","item","ComboboxProvider","resetValueOnSelect","selectedValue","setSelectedValue","_view$filters3","_view$filters4","setValue","ComboboxLabel","Combobox","autoSelect","placeholder","alwaysVisible","ComboboxItem","hideOnClick","setValueOnClick","focusOnHover","ComboboxItemValue","description","SearchWidget","props","Widget"],"sources":["@wordpress/dataviews/src/components/dataviews-filters/search-widget.tsx"],"sourcesContent":["/**\n * External dependencies\n */\n// eslint-disable-next-line no-restricted-imports\nimport * as Ariakit from '@ariakit/react';\nimport removeAccents from 'remove-accents';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useState, useMemo, useDeferredValue } from '@wordpress/element';\nimport {\n\tVisuallyHidden,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { search, check } from '@wordpress/icons';\nimport { SVG, Circle } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport type { Filter, NormalizedFilter, View } from '../../types';\n\nconst {\n\tCompositeV2: Composite,\n\tCompositeItemV2: CompositeItem,\n\tuseCompositeStoreV2: useCompositeStore,\n} = unlock( componentsPrivateApis );\n\ninterface SearchWidgetProps {\n\tview: View;\n\tfilter: NormalizedFilter;\n\tonChangeView: ( view: View ) => void;\n}\n\nconst radioCheck = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Circle cx={ 12 } cy={ 12 } r={ 3 }></Circle>\n\t</SVG>\n);\n\nfunction normalizeSearchInput( input = '' ) {\n\treturn removeAccents( input.trim().toLowerCase() );\n}\n\nconst EMPTY_ARRAY: [] = [];\nconst getCurrentValue = (\n\tfilterDefinition: NormalizedFilter,\n\tcurrentFilter?: Filter\n) => {\n\tif ( filterDefinition.singleSelection ) {\n\t\treturn currentFilter?.value;\n\t}\n\n\tif ( Array.isArray( currentFilter?.value ) ) {\n\t\treturn currentFilter.value;\n\t}\n\n\tif ( ! Array.isArray( currentFilter?.value ) && !! currentFilter?.value ) {\n\t\treturn [ currentFilter.value ];\n\t}\n\n\treturn EMPTY_ARRAY;\n};\n\nconst getNewValue = (\n\tfilterDefinition: NormalizedFilter,\n\tcurrentFilter: Filter | undefined,\n\tvalue: any\n) => {\n\tif ( filterDefinition.singleSelection ) {\n\t\treturn value;\n\t}\n\n\tif ( Array.isArray( currentFilter?.value ) ) {\n\t\treturn currentFilter.value.includes( value )\n\t\t\t? currentFilter.value.filter( ( v ) => v !== value )\n\t\t\t: [ ...currentFilter.value, value ];\n\t}\n\n\treturn [ value ];\n};\n\nfunction ListBox( { view, filter, onChangeView }: SearchWidgetProps ) {\n\tconst compositeStore = useCompositeStore( {\n\t\tvirtualFocus: true,\n\t\tfocusLoop: true,\n\t\t// When we have no or just one operator, we can set the first item as active.\n\t\t// We do that by passing `undefined` to `defaultActiveId`. Otherwise, we set it to `null`,\n\t\t// so the first item is not selected, since the focus is on the operators control.\n\t\tdefaultActiveId: filter.operators?.length === 1 ? undefined : null,\n\t} );\n\tconst currentFilter = view.filters?.find(\n\t\t( f ) => f.field === filter.field\n\t);\n\tconst currentValue = getCurrentValue( filter, currentFilter );\n\treturn (\n\t\t<Composite\n\t\t\tstore={ compositeStore }\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"dataviews-filters__search-widget-listbox\"\n\t\t\taria-label={ sprintf(\n\t\t\t\t/* translators: List of items for a filter. 1: Filter name. e.g.: \"List of: Author\". */\n\t\t\t\t__( 'List of: %1$s' ),\n\t\t\t\tfilter.name\n\t\t\t) }\n\t\t\tonFocusVisible={ () => {\n\t\t\t\tif ( ! compositeStore.getState().activeId ) {\n\t\t\t\t\tcompositeStore.move( compositeStore.first() );\n\t\t\t\t}\n\t\t\t} }\n\t\t\trender={ <Ariakit.CompositeTypeahead store={ compositeStore } /> }\n\t\t>\n\t\t\t{ filter.elements.map( ( element ) => (\n\t\t\t\t<Ariakit.CompositeHover\n\t\t\t\t\tstore={ compositeStore }\n\t\t\t\t\tkey={ element.value }\n\t\t\t\t\trender={\n\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\taria-label={ element.label }\n\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-filters__search-widget-listitem\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ).map(\n\t\t\t\t\t\t\t\t\t\t\t\t( _filter ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_filter.field ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter.field\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\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter.operator ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: getNewValue(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement.value\n\t\t\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\t\t};\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\treturn _filter;\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 ]\n\t\t\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ),\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: getNewValue(\n\t\t\t\t\t\t\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\telement.value\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 ];\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: newFilters,\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>\n\t\t\t\t\t<span className=\"dataviews-filters__search-widget-listitem-check\">\n\t\t\t\t\t\t{ filter.singleSelection &&\n\t\t\t\t\t\t\tcurrentValue === element.value && (\n\t\t\t\t\t\t\t\t<Icon icon={ radioCheck } />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! filter.singleSelection &&\n\t\t\t\t\t\t\tcurrentValue.includes( element.value ) && (\n\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>{ element.label }</span>\n\t\t\t\t</Ariakit.CompositeHover>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n\nfunction ComboboxList( { view, filter, onChangeView }: SearchWidgetProps ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst deferredSearchValue = useDeferredValue( searchValue );\n\tconst currentFilter = view.filters?.find(\n\t\t( _filter ) => _filter.field === filter.field\n\t);\n\tconst currentValue = getCurrentValue( filter, currentFilter );\n\tconst matches = useMemo( () => {\n\t\tconst normalizedSearch = normalizeSearchInput( deferredSearchValue );\n\t\treturn filter.elements.filter( ( item ) =>\n\t\t\tnormalizeSearchInput( item.label ).includes( normalizedSearch )\n\t\t);\n\t}, [ filter.elements, deferredSearchValue ] );\n\treturn (\n\t\t<Ariakit.ComboboxProvider\n\t\t\tresetValueOnSelect={ false }\n\t\t\tselectedValue={ currentValue }\n\t\t\tsetSelectedValue={ ( value ) => {\n\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t...( view.filters ?? [] ).map( ( _filter ) => {\n\t\t\t\t\t\t\t\tif ( _filter.field === filter.field ) {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\tcurrentFilter.operator ||\n\t\t\t\t\t\t\t\t\t\t\tfilter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\tvalue,\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\treturn _filter;\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t ]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t...( view.filters ?? [] ),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ];\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tpage: 1,\n\t\t\t\t\tfilters: newFilters,\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tsetValue={ setSearchValue }\n\t\t>\n\t\t\t<div className=\"dataviews-filters__search-widget-filter-combobox__wrapper\">\n\t\t\t\t<Ariakit.ComboboxLabel\n\t\t\t\t\trender={\n\t\t\t\t\t\t<VisuallyHidden>\n\t\t\t\t\t\t\t{ __( 'Search items' ) }\n\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Search items' ) }\n\t\t\t\t</Ariakit.ComboboxLabel>\n\t\t\t\t<Ariakit.Combobox\n\t\t\t\t\tautoSelect=\"always\"\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t\tclassName=\"dataviews-filters__search-widget-filter-combobox__input\"\n\t\t\t\t/>\n\t\t\t\t<div className=\"dataviews-filters__search-widget-filter-combobox__icon\">\n\t\t\t\t\t<Icon icon={ search } />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<Ariakit.ComboboxList\n\t\t\t\tclassName=\"dataviews-filters__search-widget-filter-combobox-list\"\n\t\t\t\talwaysVisible\n\t\t\t>\n\t\t\t\t{ matches.map( ( element ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Ariakit.ComboboxItem\n\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\tvalue={ element.value }\n\t\t\t\t\t\t\tclassName=\"dataviews-filters__search-widget-listitem\"\n\t\t\t\t\t\t\thideOnClick={ false }\n\t\t\t\t\t\t\tsetValueOnClick={ false }\n\t\t\t\t\t\t\tfocusOnHover\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"dataviews-filters__search-widget-listitem-check\">\n\t\t\t\t\t\t\t\t{ filter.singleSelection &&\n\t\t\t\t\t\t\t\t\tcurrentValue === element.value && (\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ radioCheck } />\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ ! filter.singleSelection &&\n\t\t\t\t\t\t\t\t\tcurrentValue.includes( element.value ) && (\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<Ariakit.ComboboxItemValue\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-filters__search-widget-filter-combobox-item-value\"\n\t\t\t\t\t\t\t\t\tvalue={ element.label }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ !! element.description && (\n\t\t\t\t\t\t\t\t\t<span className=\"dataviews-filters__search-widget-listitem-description\">\n\t\t\t\t\t\t\t\t\t\t{ element.description }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</Ariakit.ComboboxItem>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t\t{ ! matches.length && <p>{ __( 'No results found' ) }</p> }\n\t\t\t</Ariakit.ComboboxList>\n\t\t</Ariakit.ComboboxProvider>\n\t);\n}\n\nexport default function SearchWidget( props: SearchWidgetProps ) {\n\tconst Widget = props.filter.elements.length > 10 ? ComboboxList : ListBox;\n\treturn <Widget { ...props } />;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Ariakit","removeAccents","useInstanceId","__","sprintf","useState","useMemo","useDeferredValue","VisuallyHidden","Icon","privateApis","componentsPrivateApis","search","check","SVG","Circle","unlock","jsx","_jsx","jsxs","_jsxs","CompositeV2","Composite","CompositeItemV2","CompositeItem","CompositeHoverV2","CompositeHover","CompositeTypeaheadV2","CompositeTypeahead","radioCheck","xmlns","viewBox","children","cx","cy","r","normalizeSearchInput","input","trim","toLowerCase","EMPTY_ARRAY","getCurrentValue","filterDefinition","currentFilter","singleSelection","value","Array","isArray","getNewValue","includes","filter","v","generateFilterElementCompositeItemId","prefix","filterElementValue","ListBox","view","onChangeView","baseId","activeCompositeId","setActiveCompositeId","operators","length","undefined","filters","find","f","field","currentValue","virtualFocus","focusLoop","activeId","setActiveId","role","className","name","onFocusVisible","elements","render","map","element","id","label","onClick","_view$filters","_view$filters2","newFilters","_filter","operator","page","icon","ComboboxList","searchValue","setSearchValue","deferredSearchValue","matches","normalizedSearch","item","ComboboxProvider","selectedValue","setSelectedValue","_view$filters3","_view$filters4","setValue","ComboboxLabel","Combobox","autoSelect","placeholder","alwaysVisible","ComboboxItem","resetValueOnSelect","hideOnClick","setValueOnClick","focusOnHover","ComboboxItemValue","description","SearchWidget","props","Widget"],"sources":["@wordpress/dataviews/src/components/dataviews-filters/search-widget.tsx"],"sourcesContent":["/**\n * External dependencies\n */\n// eslint-disable-next-line no-restricted-imports\nimport * as Ariakit from '@ariakit/react';\nimport removeAccents from 'remove-accents';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useState, useMemo, useDeferredValue } from '@wordpress/element';\nimport {\n\tVisuallyHidden,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { search, check } from '@wordpress/icons';\nimport { SVG, Circle } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport type { Filter, NormalizedFilter, View } from '../../types';\n\nconst {\n\tCompositeV2: Composite,\n\tCompositeItemV2: CompositeItem,\n\tCompositeHoverV2: CompositeHover,\n\tCompositeTypeaheadV2: CompositeTypeahead,\n} = unlock( componentsPrivateApis );\n\ninterface SearchWidgetProps {\n\tview: View;\n\tfilter: NormalizedFilter;\n\tonChangeView: ( view: View ) => void;\n}\n\nconst radioCheck = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Circle cx={ 12 } cy={ 12 } r={ 3 }></Circle>\n\t</SVG>\n);\n\nfunction normalizeSearchInput( input = '' ) {\n\treturn removeAccents( input.trim().toLowerCase() );\n}\n\nconst EMPTY_ARRAY: [] = [];\nconst getCurrentValue = (\n\tfilterDefinition: NormalizedFilter,\n\tcurrentFilter?: Filter\n) => {\n\tif ( filterDefinition.singleSelection ) {\n\t\treturn currentFilter?.value;\n\t}\n\n\tif ( Array.isArray( currentFilter?.value ) ) {\n\t\treturn currentFilter.value;\n\t}\n\n\tif ( ! Array.isArray( currentFilter?.value ) && !! currentFilter?.value ) {\n\t\treturn [ currentFilter.value ];\n\t}\n\n\treturn EMPTY_ARRAY;\n};\n\nconst getNewValue = (\n\tfilterDefinition: NormalizedFilter,\n\tcurrentFilter: Filter | undefined,\n\tvalue: any\n) => {\n\tif ( filterDefinition.singleSelection ) {\n\t\treturn value;\n\t}\n\n\tif ( Array.isArray( currentFilter?.value ) ) {\n\t\treturn currentFilter.value.includes( value )\n\t\t\t? currentFilter.value.filter( ( v ) => v !== value )\n\t\t\t: [ ...currentFilter.value, value ];\n\t}\n\n\treturn [ value ];\n};\n\nfunction generateFilterElementCompositeItemId(\n\tprefix: string,\n\tfilterElementValue: string\n) {\n\treturn `${ prefix }-${ filterElementValue }`;\n}\n\nfunction ListBox( { view, filter, onChangeView }: SearchWidgetProps ) {\n\tconst baseId = useInstanceId( ListBox, 'dataviews-filter-list-box' );\n\n\tconst [ activeCompositeId, setActiveCompositeId ] = useState<\n\t\tstring | null | undefined\n\t>(\n\t\t// When there are one or less operators, the first item is set as active\n\t\t// (by setting the initial `activeId` to `undefined`).\n\t\t// With 2 or more operators, the focus is moved on the operators control\n\t\t// (by setting the initial `activeId` to `null`), meaning that there won't\n\t\t// be an active item initially. Focus is then managed via the\n\t\t// `onFocusVisible` callback.\n\t\tfilter.operators?.length === 1 ? undefined : null\n\t);\n\tconst currentFilter = view.filters?.find(\n\t\t( f ) => f.field === filter.field\n\t);\n\tconst currentValue = getCurrentValue( filter, currentFilter );\n\treturn (\n\t\t<Composite\n\t\t\tvirtualFocus\n\t\t\tfocusLoop\n\t\t\tactiveId={ activeCompositeId }\n\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"dataviews-filters__search-widget-listbox\"\n\t\t\taria-label={ sprintf(\n\t\t\t\t/* translators: List of items for a filter. 1: Filter name. e.g.: \"List of: Author\". */\n\t\t\t\t__( 'List of: %1$s' ),\n\t\t\t\tfilter.name\n\t\t\t) }\n\t\t\tonFocusVisible={ () => {\n\t\t\t\t// `onFocusVisible` needs the `Composite` component to be focusable,\n\t\t\t\t// which is implicitly achieved via the `virtualFocus: true` option\n\t\t\t\t// in the `useCompositeStore` hook.\n\t\t\t\tif ( ! activeCompositeId && filter.elements.length ) {\n\t\t\t\t\tsetActiveCompositeId(\n\t\t\t\t\t\tgenerateFilterElementCompositeItemId(\n\t\t\t\t\t\t\tbaseId,\n\t\t\t\t\t\t\tfilter.elements[ 0 ].value\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t\trender={ <CompositeTypeahead /> }\n\t\t>\n\t\t\t{ filter.elements.map( ( element ) => (\n\t\t\t\t<CompositeHover\n\t\t\t\t\tkey={ element.value }\n\t\t\t\t\trender={\n\t\t\t\t\t\t<CompositeItem\n\t\t\t\t\t\t\tid={ generateFilterElementCompositeItemId(\n\t\t\t\t\t\t\t\tbaseId,\n\t\t\t\t\t\t\t\telement.value\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\taria-label={ element.label }\n\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-filters__search-widget-listitem\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ).map(\n\t\t\t\t\t\t\t\t\t\t\t\t( _filter ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_filter.field ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter.field\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\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter.operator ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: getNewValue(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement.value\n\t\t\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\t\t};\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\treturn _filter;\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 ]\n\t\t\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ),\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: getNewValue(\n\t\t\t\t\t\t\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\telement.value\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 ];\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: newFilters,\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>\n\t\t\t\t\t<span className=\"dataviews-filters__search-widget-listitem-check\">\n\t\t\t\t\t\t{ filter.singleSelection &&\n\t\t\t\t\t\t\tcurrentValue === element.value && (\n\t\t\t\t\t\t\t\t<Icon icon={ radioCheck } />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! filter.singleSelection &&\n\t\t\t\t\t\t\tcurrentValue.includes( element.value ) && (\n\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>{ element.label }</span>\n\t\t\t\t</CompositeHover>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n\nfunction ComboboxList( { view, filter, onChangeView }: SearchWidgetProps ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst deferredSearchValue = useDeferredValue( searchValue );\n\tconst currentFilter = view.filters?.find(\n\t\t( _filter ) => _filter.field === filter.field\n\t);\n\tconst currentValue = getCurrentValue( filter, currentFilter );\n\tconst matches = useMemo( () => {\n\t\tconst normalizedSearch = normalizeSearchInput( deferredSearchValue );\n\t\treturn filter.elements.filter( ( item ) =>\n\t\t\tnormalizeSearchInput( item.label ).includes( normalizedSearch )\n\t\t);\n\t}, [ filter.elements, deferredSearchValue ] );\n\treturn (\n\t\t<Ariakit.ComboboxProvider\n\t\t\tselectedValue={ currentValue }\n\t\t\tsetSelectedValue={ ( value ) => {\n\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t...( view.filters ?? [] ).map( ( _filter ) => {\n\t\t\t\t\t\t\t\tif ( _filter.field === filter.field ) {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\tcurrentFilter.operator ||\n\t\t\t\t\t\t\t\t\t\t\tfilter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\tvalue,\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\treturn _filter;\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t ]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t...( view.filters ?? [] ),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ];\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tpage: 1,\n\t\t\t\t\tfilters: newFilters,\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tsetValue={ setSearchValue }\n\t\t>\n\t\t\t<div className=\"dataviews-filters__search-widget-filter-combobox__wrapper\">\n\t\t\t\t<Ariakit.ComboboxLabel\n\t\t\t\t\trender={\n\t\t\t\t\t\t<VisuallyHidden>\n\t\t\t\t\t\t\t{ __( 'Search items' ) }\n\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Search items' ) }\n\t\t\t\t</Ariakit.ComboboxLabel>\n\t\t\t\t<Ariakit.Combobox\n\t\t\t\t\tautoSelect=\"always\"\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t\tclassName=\"dataviews-filters__search-widget-filter-combobox__input\"\n\t\t\t\t/>\n\t\t\t\t<div className=\"dataviews-filters__search-widget-filter-combobox__icon\">\n\t\t\t\t\t<Icon icon={ search } />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<Ariakit.ComboboxList\n\t\t\t\tclassName=\"dataviews-filters__search-widget-filter-combobox-list\"\n\t\t\t\talwaysVisible\n\t\t\t>\n\t\t\t\t{ matches.map( ( element ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Ariakit.ComboboxItem\n\t\t\t\t\t\t\tresetValueOnSelect={ false }\n\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\tvalue={ element.value }\n\t\t\t\t\t\t\tclassName=\"dataviews-filters__search-widget-listitem\"\n\t\t\t\t\t\t\thideOnClick={ false }\n\t\t\t\t\t\t\tsetValueOnClick={ false }\n\t\t\t\t\t\t\tfocusOnHover\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"dataviews-filters__search-widget-listitem-check\">\n\t\t\t\t\t\t\t\t{ filter.singleSelection &&\n\t\t\t\t\t\t\t\t\tcurrentValue === element.value && (\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ radioCheck } />\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ ! filter.singleSelection &&\n\t\t\t\t\t\t\t\t\tcurrentValue.includes( element.value ) && (\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<Ariakit.ComboboxItemValue\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-filters__search-widget-filter-combobox-item-value\"\n\t\t\t\t\t\t\t\t\tvalue={ element.label }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ !! element.description && (\n\t\t\t\t\t\t\t\t\t<span className=\"dataviews-filters__search-widget-listitem-description\">\n\t\t\t\t\t\t\t\t\t\t{ element.description }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</Ariakit.ComboboxItem>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t\t{ ! matches.length && <p>{ __( 'No results found' ) }</p> }\n\t\t\t</Ariakit.ComboboxList>\n\t\t</Ariakit.ComboboxProvider>\n\t);\n}\n\nexport default function SearchWidget( props: SearchWidgetProps ) {\n\tconst Widget = props.filter.elements.length > 10 ? ComboboxList : ListBox;\n\treturn <Widget { ...props } />;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { __experimentalHStack as HStack } from '@wordpress/components';
|
|
5
|
+
import { useContext } from '@wordpress/element';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
import DataViewsContext from '../dataviews-context';
|
|
11
|
+
import DataViewsPagination from '../dataviews-pagination';
|
|
12
|
+
import { BulkActionsFooter, useSomeItemHasAPossibleBulkAction } from '../dataviews-bulk-actions';
|
|
13
|
+
import { LAYOUT_GRID, LAYOUT_TABLE } from '../../constants';
|
|
14
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
|
+
const EMPTY_ARRAY = [];
|
|
17
|
+
export default function DataViewsFooter() {
|
|
18
|
+
const {
|
|
19
|
+
view,
|
|
20
|
+
paginationInfo: {
|
|
21
|
+
totalItems = 0,
|
|
22
|
+
totalPages
|
|
23
|
+
},
|
|
24
|
+
data,
|
|
25
|
+
actions = EMPTY_ARRAY
|
|
26
|
+
} = useContext(DataViewsContext);
|
|
27
|
+
const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data) && [LAYOUT_TABLE, LAYOUT_GRID].includes(view.type);
|
|
28
|
+
if (!totalItems || !totalPages || totalPages <= 1 && !hasBulkActions) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return !!totalItems && /*#__PURE__*/_jsxs(HStack, {
|
|
32
|
+
expanded: false,
|
|
33
|
+
justify: "end",
|
|
34
|
+
className: "dataviews-footer",
|
|
35
|
+
children: [hasBulkActions && /*#__PURE__*/_jsx(BulkActionsFooter, {}), /*#__PURE__*/_jsx(DataViewsPagination, {})]
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__experimentalHStack","HStack","useContext","DataViewsContext","DataViewsPagination","BulkActionsFooter","useSomeItemHasAPossibleBulkAction","LAYOUT_GRID","LAYOUT_TABLE","jsx","_jsx","jsxs","_jsxs","EMPTY_ARRAY","DataViewsFooter","view","paginationInfo","totalItems","totalPages","data","actions","hasBulkActions","includes","type","expanded","justify","className","children"],"sources":["@wordpress/dataviews/src/components/dataviews-footer/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport DataViewsPagination from '../dataviews-pagination';\nimport {\n\tBulkActionsFooter,\n\tuseSomeItemHasAPossibleBulkAction,\n} from '../dataviews-bulk-actions';\nimport { LAYOUT_GRID, LAYOUT_TABLE } from '../../constants';\n\nconst EMPTY_ARRAY: [] = [];\n\nexport default function DataViewsFooter() {\n\tconst {\n\t\tview,\n\t\tpaginationInfo: { totalItems = 0, totalPages },\n\t\tdata,\n\t\tactions = EMPTY_ARRAY,\n\t} = useContext( DataViewsContext );\n\tconst hasBulkActions =\n\t\tuseSomeItemHasAPossibleBulkAction( actions, data ) &&\n\t\t[ LAYOUT_TABLE, LAYOUT_GRID ].includes( view.type );\n\n\tif (\n\t\t! totalItems ||\n\t\t! totalPages ||\n\t\t( totalPages <= 1 && ! hasBulkActions )\n\t) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t!! totalItems && (\n\t\t\t<HStack\n\t\t\t\texpanded={ false }\n\t\t\t\tjustify=\"end\"\n\t\t\t\tclassName=\"dataviews-footer\"\n\t\t\t>\n\t\t\t\t{ hasBulkActions && <BulkActionsFooter /> }\n\t\t\t\t<DataViewsPagination />\n\t\t\t</HStack>\n\t\t)\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,oBAAoB,IAAIC,MAAM,QAAQ,uBAAuB;AACtE,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,OAAOC,mBAAmB,MAAM,yBAAyB;AACzD,SACCC,iBAAiB,EACjBC,iCAAiC,QAC3B,2BAA2B;AAClC,SAASC,WAAW,EAAEC,YAAY,QAAQ,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAE5D,MAAMC,WAAe,GAAG,EAAE;AAE1B,eAAe,SAASC,eAAeA,CAAA,EAAG;EACzC,MAAM;IACLC,IAAI;IACJC,cAAc,EAAE;MAAEC,UAAU,GAAG,CAAC;MAAEC;IAAW,CAAC;IAC9CC,IAAI;IACJC,OAAO,GAAGP;EACX,CAAC,GAAGX,UAAU,CAAEC,gBAAiB,CAAC;EAClC,MAAMkB,cAAc,GACnBf,iCAAiC,CAAEc,OAAO,EAAED,IAAK,CAAC,IAClD,CAAEX,YAAY,EAAED,WAAW,CAAE,CAACe,QAAQ,CAAEP,IAAI,CAACQ,IAAK,CAAC;EAEpD,IACC,CAAEN,UAAU,IACZ,CAAEC,UAAU,IACVA,UAAU,IAAI,CAAC,IAAI,CAAEG,cAAgB,EACtC;IACD,OAAO,IAAI;EACZ;EACA,OACC,CAAC,CAAEJ,UAAU,iBACZL,KAAA,CAACX,MAAM;IACNuB,QAAQ,EAAG,KAAO;IAClBC,OAAO,EAAC,KAAK;IACbC,SAAS,EAAC,kBAAkB;IAAAC,QAAA,GAE1BN,cAAc,iBAAIX,IAAA,CAACL,iBAAiB,IAAE,CAAC,eACzCK,IAAA,CAACN,mBAAmB,IAAE,CAAC;EAAA,CAChB,CACR;AAEH","ignoreList":[]}
|
|
@@ -19,10 +19,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
19
19
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
20
20
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
21
21
|
const {
|
|
22
|
-
DropdownMenuV2
|
|
23
|
-
DropdownMenuGroupV2: DropdownMenuGroup,
|
|
24
|
-
DropdownMenuItemV2: DropdownMenuItem,
|
|
25
|
-
DropdownMenuItemLabelV2: DropdownMenuItemLabel,
|
|
22
|
+
DropdownMenuV2,
|
|
26
23
|
kebabCase
|
|
27
24
|
} = unlock(componentsPrivateApis);
|
|
28
25
|
function ButtonTrigger({
|
|
@@ -45,10 +42,10 @@ function DropdownMenuItemTrigger({
|
|
|
45
42
|
items
|
|
46
43
|
}) {
|
|
47
44
|
const label = typeof action.label === 'string' ? action.label : action.label(items);
|
|
48
|
-
return /*#__PURE__*/_jsx(
|
|
45
|
+
return /*#__PURE__*/_jsx(DropdownMenuV2.Item, {
|
|
49
46
|
onClick: onClick,
|
|
50
47
|
hideOnClick: !('RenderModal' in action),
|
|
51
|
-
children: /*#__PURE__*/_jsx(
|
|
48
|
+
children: /*#__PURE__*/_jsx(DropdownMenuV2.ItemLabel, {
|
|
52
49
|
children: label
|
|
53
50
|
})
|
|
54
51
|
});
|
|
@@ -102,7 +99,7 @@ export function ActionsDropdownMenuGroup({
|
|
|
102
99
|
item
|
|
103
100
|
}) {
|
|
104
101
|
const registry = useRegistry();
|
|
105
|
-
return /*#__PURE__*/_jsx(
|
|
102
|
+
return /*#__PURE__*/_jsx(DropdownMenuV2.Group, {
|
|
106
103
|
children: actions.map(action => {
|
|
107
104
|
if ('RenderModal' in action) {
|
|
108
105
|
return /*#__PURE__*/_jsx(ActionWithModal, {
|
|
@@ -183,7 +180,7 @@ function CompactItemActions({
|
|
|
183
180
|
item,
|
|
184
181
|
actions
|
|
185
182
|
}) {
|
|
186
|
-
return /*#__PURE__*/_jsx(
|
|
183
|
+
return /*#__PURE__*/_jsx(DropdownMenuV2, {
|
|
187
184
|
trigger: /*#__PURE__*/_jsx(Button, {
|
|
188
185
|
size: "compact",
|
|
189
186
|
icon: moreVertical,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Button","Modal","__experimentalHStack","HStack","privateApis","componentsPrivateApis","__","useMemo","useState","moreVertical","useRegistry","unlock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuItemLabelV2","DropdownMenuItemLabel","kebabCase","ButtonTrigger","action","onClick","items","label","icon","isDestructive","size","DropdownMenuItemTrigger","hideOnClick","children","ActionModal","closeModal","title","modalHeader","__experimentalHideHeader","hideModalHeader","onRequestClose","focusOnMount","overlayClassName","id","RenderModal","ActionWithModal","ActionTrigger","isBusy","isModalOpen","setIsModalOpen","actionTriggerProps","ActionsDropdownMenuGroup","actions","item","registry","map","callback","ItemActions","isCompact","primaryActions","eligibleActions","_eligibleActions","filter","isEligible","_primaryActions","isPrimary","CompactItemActions","spacing","justify","className","style","flexShrink","width","length","trigger","accessibleWhenDisabled","disabled","placement"],"sources":["@wordpress/dataviews/src/components/dataviews-item-actions/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { MouseEventHandler, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\t__experimentalHStack as HStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { moreVertical } from '@wordpress/icons';\nimport { useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport type { Action, ActionModal as ActionModalType } from '../../types';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuItemLabelV2: DropdownMenuItemLabel,\n\tkebabCase,\n} = unlock( componentsPrivateApis );\n\nexport interface ActionTriggerProps< Item > {\n\taction: Action< Item >;\n\tonClick: MouseEventHandler;\n\tisBusy?: boolean;\n\titems: Item[];\n}\n\ninterface ActionModalProps< Item > {\n\taction: ActionModalType< Item >;\n\titems: Item[];\n\tcloseModal?: () => void;\n}\n\ninterface ActionWithModalProps< Item > extends ActionModalProps< Item > {\n\tActionTrigger: ( props: ActionTriggerProps< Item > ) => ReactElement;\n\tisBusy?: boolean;\n}\n\ninterface ActionsDropdownMenuGroupProps< Item > {\n\tactions: Action< Item >[];\n\titem: Item;\n}\n\ninterface ItemActionsProps< Item > {\n\titem: Item;\n\tactions: Action< Item >[];\n\tisCompact?: boolean;\n}\n\ninterface CompactItemActionsProps< Item > {\n\titem: Item;\n\tactions: Action< Item >[];\n}\n\nfunction ButtonTrigger< Item >( {\n\taction,\n\tonClick,\n\titems,\n}: ActionTriggerProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<Button\n\t\t\tlabel={ label }\n\t\t\ticon={ action.icon }\n\t\t\tisDestructive={ action.isDestructive }\n\t\t\tsize=\"compact\"\n\t\t\tonClick={ onClick }\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuItemTrigger< Item >( {\n\taction,\n\tonClick,\n\titems,\n}: ActionTriggerProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<DropdownMenuItem\n\t\t\tonClick={ onClick }\n\t\t\thideOnClick={ ! ( 'RenderModal' in action ) }\n\t\t>\n\t\t\t<DropdownMenuItemLabel>{ label }</DropdownMenuItemLabel>\n\t\t</DropdownMenuItem>\n\t);\n}\n\nexport function ActionModal< Item >( {\n\taction,\n\titems,\n\tcloseModal,\n}: ActionModalProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ action.modalHeader || label }\n\t\t\t__experimentalHideHeader={ !! action.hideModalHeader }\n\t\t\tonRequestClose={ closeModal ?? ( () => {} ) }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t\toverlayClassName={ `dataviews-action-modal dataviews-action-modal__${ kebabCase(\n\t\t\t\taction.id\n\t\t\t) }` }\n\t\t>\n\t\t\t<action.RenderModal items={ items } closeModal={ closeModal } />\n\t\t</Modal>\n\t);\n}\n\nexport function ActionWithModal< Item >( {\n\taction,\n\titems,\n\tActionTrigger,\n\tisBusy,\n}: ActionWithModalProps< Item > ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst actionTriggerProps = {\n\t\taction,\n\t\tonClick: () => {\n\t\t\tsetIsModalOpen( true );\n\t\t},\n\t\titems,\n\t\tisBusy,\n\t};\n\treturn (\n\t\t<>\n\t\t\t<ActionTrigger { ...actionTriggerProps } />\n\t\t\t{ isModalOpen && (\n\t\t\t\t<ActionModal\n\t\t\t\t\taction={ action }\n\t\t\t\t\titems={ items }\n\t\t\t\t\tcloseModal={ () => setIsModalOpen( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport function ActionsDropdownMenuGroup< Item >( {\n\tactions,\n\titem,\n}: ActionsDropdownMenuGroupProps< Item > ) {\n\tconst registry = useRegistry();\n\treturn (\n\t\t<DropdownMenuGroup>\n\t\t\t{ actions.map( ( action ) => {\n\t\t\t\tif ( 'RenderModal' in action ) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ActionWithModal\n\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\tActionTrigger={ DropdownMenuItemTrigger }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuItemTrigger\n\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\taction.callback( [ item ], { registry } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenuGroup>\n\t);\n}\n\nexport default function ItemActions< Item >( {\n\titem,\n\tactions,\n\tisCompact,\n}: ItemActionsProps< Item > ) {\n\tconst registry = useRegistry();\n\tconst { primaryActions, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary && !! action.icon\n\t\t);\n\t\treturn {\n\t\t\tprimaryActions: _primaryActions,\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\tif ( isCompact ) {\n\t\treturn <CompactItemActions item={ item } actions={ eligibleActions } />;\n\t}\n\treturn (\n\t\t<HStack\n\t\t\tspacing={ 1 }\n\t\t\tjustify=\"flex-end\"\n\t\t\tclassName=\"dataviews-item-actions\"\n\t\t\tstyle={ {\n\t\t\t\tflexShrink: '0',\n\t\t\t\twidth: 'auto',\n\t\t\t} }\n\t\t>\n\t\t\t{ !! primaryActions.length &&\n\t\t\t\tprimaryActions.map( ( action ) => {\n\t\t\t\t\tif ( 'RenderModal' in action ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ActionWithModal\n\t\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\t\tActionTrigger={ ButtonTrigger }\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\treturn (\n\t\t\t\t\t\t<ButtonTrigger\n\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\taction.callback( [ item ], { registry } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t<CompactItemActions item={ item } actions={ eligibleActions } />\n\t\t</HStack>\n\t);\n}\n\nfunction CompactItemActions< Item >( {\n\titem,\n\tactions,\n}: CompactItemActionsProps< Item > ) {\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={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\tclassName=\"dataviews-all-actions-button\"\n\t\t\t\t/>\n\t\t\t}\n\t\t\tplacement=\"bottom-end\"\n\t\t>\n\t\t\t<ActionsDropdownMenuGroup actions={ actions } item={ item } />\n\t\t</DropdownMenu>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Button","Modal","__experimentalHStack","HStack","privateApis","componentsPrivateApis","__","useMemo","useState","moreVertical","useRegistry","unlock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","DropdownMenuV2","kebabCase","ButtonTrigger","action","onClick","items","label","icon","isDestructive","size","DropdownMenuItemTrigger","Item","hideOnClick","children","ItemLabel","ActionModal","closeModal","title","modalHeader","__experimentalHideHeader","hideModalHeader","onRequestClose","focusOnMount","overlayClassName","id","RenderModal","ActionWithModal","ActionTrigger","isBusy","isModalOpen","setIsModalOpen","actionTriggerProps","ActionsDropdownMenuGroup","actions","item","registry","Group","map","callback","ItemActions","isCompact","primaryActions","eligibleActions","_eligibleActions","filter","isEligible","_primaryActions","isPrimary","CompactItemActions","spacing","justify","className","style","flexShrink","width","length","trigger","accessibleWhenDisabled","disabled","placement"],"sources":["@wordpress/dataviews/src/components/dataviews-item-actions/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { MouseEventHandler, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\t__experimentalHStack as HStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { moreVertical } from '@wordpress/icons';\nimport { useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport type { Action, ActionModal as ActionModalType } from '../../types';\n\nconst { DropdownMenuV2, kebabCase } = unlock( componentsPrivateApis );\n\nexport interface ActionTriggerProps< Item > {\n\taction: Action< Item >;\n\tonClick: MouseEventHandler;\n\tisBusy?: boolean;\n\titems: Item[];\n}\n\ninterface ActionModalProps< Item > {\n\taction: ActionModalType< Item >;\n\titems: Item[];\n\tcloseModal?: () => void;\n}\n\ninterface ActionWithModalProps< Item > extends ActionModalProps< Item > {\n\tActionTrigger: ( props: ActionTriggerProps< Item > ) => ReactElement;\n\tisBusy?: boolean;\n}\n\ninterface ActionsDropdownMenuGroupProps< Item > {\n\tactions: Action< Item >[];\n\titem: Item;\n}\n\ninterface ItemActionsProps< Item > {\n\titem: Item;\n\tactions: Action< Item >[];\n\tisCompact?: boolean;\n}\n\ninterface CompactItemActionsProps< Item > {\n\titem: Item;\n\tactions: Action< Item >[];\n}\n\nfunction ButtonTrigger< Item >( {\n\taction,\n\tonClick,\n\titems,\n}: ActionTriggerProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<Button\n\t\t\tlabel={ label }\n\t\t\ticon={ action.icon }\n\t\t\tisDestructive={ action.isDestructive }\n\t\t\tsize=\"compact\"\n\t\t\tonClick={ onClick }\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuItemTrigger< Item >( {\n\taction,\n\tonClick,\n\titems,\n}: ActionTriggerProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<DropdownMenuV2.Item\n\t\t\tonClick={ onClick }\n\t\t\thideOnClick={ ! ( 'RenderModal' in action ) }\n\t\t>\n\t\t\t<DropdownMenuV2.ItemLabel>{ label }</DropdownMenuV2.ItemLabel>\n\t\t</DropdownMenuV2.Item>\n\t);\n}\n\nexport function ActionModal< Item >( {\n\taction,\n\titems,\n\tcloseModal,\n}: ActionModalProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ action.modalHeader || label }\n\t\t\t__experimentalHideHeader={ !! action.hideModalHeader }\n\t\t\tonRequestClose={ closeModal ?? ( () => {} ) }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t\toverlayClassName={ `dataviews-action-modal dataviews-action-modal__${ kebabCase(\n\t\t\t\taction.id\n\t\t\t) }` }\n\t\t>\n\t\t\t<action.RenderModal items={ items } closeModal={ closeModal } />\n\t\t</Modal>\n\t);\n}\n\nexport function ActionWithModal< Item >( {\n\taction,\n\titems,\n\tActionTrigger,\n\tisBusy,\n}: ActionWithModalProps< Item > ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst actionTriggerProps = {\n\t\taction,\n\t\tonClick: () => {\n\t\t\tsetIsModalOpen( true );\n\t\t},\n\t\titems,\n\t\tisBusy,\n\t};\n\treturn (\n\t\t<>\n\t\t\t<ActionTrigger { ...actionTriggerProps } />\n\t\t\t{ isModalOpen && (\n\t\t\t\t<ActionModal\n\t\t\t\t\taction={ action }\n\t\t\t\t\titems={ items }\n\t\t\t\t\tcloseModal={ () => setIsModalOpen( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport function ActionsDropdownMenuGroup< Item >( {\n\tactions,\n\titem,\n}: ActionsDropdownMenuGroupProps< Item > ) {\n\tconst registry = useRegistry();\n\treturn (\n\t\t<DropdownMenuV2.Group>\n\t\t\t{ actions.map( ( action ) => {\n\t\t\t\tif ( 'RenderModal' in action ) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ActionWithModal\n\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\tActionTrigger={ DropdownMenuItemTrigger }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenuItemTrigger\n\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\taction.callback( [ item ], { registry } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenuV2.Group>\n\t);\n}\n\nexport default function ItemActions< Item >( {\n\titem,\n\tactions,\n\tisCompact,\n}: ItemActionsProps< Item > ) {\n\tconst registry = useRegistry();\n\tconst { primaryActions, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary && !! action.icon\n\t\t);\n\t\treturn {\n\t\t\tprimaryActions: _primaryActions,\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\tif ( isCompact ) {\n\t\treturn <CompactItemActions item={ item } actions={ eligibleActions } />;\n\t}\n\treturn (\n\t\t<HStack\n\t\t\tspacing={ 1 }\n\t\t\tjustify=\"flex-end\"\n\t\t\tclassName=\"dataviews-item-actions\"\n\t\t\tstyle={ {\n\t\t\t\tflexShrink: '0',\n\t\t\t\twidth: 'auto',\n\t\t\t} }\n\t\t>\n\t\t\t{ !! primaryActions.length &&\n\t\t\t\tprimaryActions.map( ( action ) => {\n\t\t\t\t\tif ( 'RenderModal' in action ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ActionWithModal\n\t\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\t\tActionTrigger={ ButtonTrigger }\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\treturn (\n\t\t\t\t\t\t<ButtonTrigger\n\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\taction.callback( [ item ], { registry } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t<CompactItemActions item={ item } actions={ eligibleActions } />\n\t\t</HStack>\n\t);\n}\n\nfunction CompactItemActions< Item >( {\n\titem,\n\tactions,\n}: CompactItemActionsProps< Item > ) {\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={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\tclassName=\"dataviews-all-actions-button\"\n\t\t\t\t/>\n\t\t\t}\n\t\t\tplacement=\"bottom-end\"\n\t\t>\n\t\t\t<ActionsDropdownMenuGroup actions={ actions } item={ item } />\n\t\t</DropdownMenuV2>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { Button, __experimentalHStack as HStack, SelectControl } from '@wordpress/components';
|
|
5
5
|
import { createInterpolateElement, memo, useContext } from '@wordpress/element';
|
|
6
|
-
import { sprintf, __, _x } from '@wordpress/i18n';
|
|
6
|
+
import { sprintf, __, _x, isRTL } from '@wordpress/i18n';
|
|
7
7
|
import { next, previous } from '@wordpress/icons';
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -38,9 +38,9 @@ function DataViewsPagination() {
|
|
|
38
38
|
});
|
|
39
39
|
return !!totalItems && totalPages !== 1 && /*#__PURE__*/_jsxs(HStack, {
|
|
40
40
|
expanded: false,
|
|
41
|
-
spacing: 6,
|
|
42
|
-
justify: "end",
|
|
43
41
|
className: "dataviews-pagination",
|
|
42
|
+
justify: "end",
|
|
43
|
+
spacing: 6,
|
|
44
44
|
children: [/*#__PURE__*/_jsx(HStack, {
|
|
45
45
|
justify: "flex-start",
|
|
46
46
|
expanded: false,
|
|
@@ -78,7 +78,7 @@ function DataViewsPagination() {
|
|
|
78
78
|
disabled: currentPage === 1,
|
|
79
79
|
accessibleWhenDisabled: true,
|
|
80
80
|
label: __('Previous page'),
|
|
81
|
-
icon: previous,
|
|
81
|
+
icon: isRTL() ? next : previous,
|
|
82
82
|
showTooltip: true,
|
|
83
83
|
size: "compact",
|
|
84
84
|
tooltipPosition: "top"
|
|
@@ -90,7 +90,7 @@ function DataViewsPagination() {
|
|
|
90
90
|
disabled: currentPage >= totalPages,
|
|
91
91
|
accessibleWhenDisabled: true,
|
|
92
92
|
label: __('Next page'),
|
|
93
|
-
icon: next,
|
|
93
|
+
icon: isRTL() ? previous : next,
|
|
94
94
|
showTooltip: true,
|
|
95
95
|
size: "compact",
|
|
96
96
|
tooltipPosition: "top"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Button","__experimentalHStack","HStack","SelectControl","createInterpolateElement","memo","useContext","sprintf","__","_x","next","previous","DataViewsContext","jsx","_jsx","jsxs","_jsxs","DataViewsPagination","_view$page","view","onChangeView","paginationInfo","totalItems","totalPages","currentPage","page","pageSelectOptions","Array","from","map","_","i","value","toString","label","expanded","
|
|
1
|
+
{"version":3,"names":["Button","__experimentalHStack","HStack","SelectControl","createInterpolateElement","memo","useContext","sprintf","__","_x","isRTL","next","previous","DataViewsContext","jsx","_jsx","jsxs","_jsxs","DataViewsPagination","_view$page","view","onChangeView","paginationInfo","totalItems","totalPages","currentPage","page","pageSelectOptions","Array","from","map","_","i","value","toString","label","expanded","className","justify","spacing","children","div","CurrentPage","options","onChange","newValue","size","__nextHasNoMarginBottom","variant","onClick","disabled","accessibleWhenDisabled","icon","showTooltip","tooltipPosition"],"sources":["@wordpress/dataviews/src/components/dataviews-pagination/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\t__experimentalHStack as HStack,\n\tSelectControl,\n} from '@wordpress/components';\nimport { createInterpolateElement, memo, useContext } from '@wordpress/element';\nimport { sprintf, __, _x, isRTL } from '@wordpress/i18n';\nimport { next, previous } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\n\nfunction DataViewsPagination() {\n\tconst {\n\t\tview,\n\t\tonChangeView,\n\t\tpaginationInfo: { totalItems = 0, totalPages },\n\t} = useContext( DataViewsContext );\n\n\tif ( ! totalItems || ! totalPages ) {\n\t\treturn null;\n\t}\n\n\tconst currentPage = view.page ?? 1;\n\tconst pageSelectOptions = Array.from( Array( totalPages ) ).map(\n\t\t( _, i ) => {\n\t\t\tconst page = i + 1;\n\t\t\treturn {\n\t\t\t\tvalue: page.toString(),\n\t\t\t\tlabel: page.toString(),\n\t\t\t\t'aria-label':\n\t\t\t\t\tcurrentPage === page\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: Current page number in total number of pages\n\t\t\t\t\t\t\t\t__( 'Page %1$s of %2$s' ),\n\t\t\t\t\t\t\t\tcurrentPage,\n\t\t\t\t\t\t\t\ttotalPages\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: page.toString(),\n\t\t\t};\n\t\t}\n\t);\n\n\treturn (\n\t\t!! totalItems &&\n\t\ttotalPages !== 1 && (\n\t\t\t<HStack\n\t\t\t\texpanded={ false }\n\t\t\t\tclassName=\"dataviews-pagination\"\n\t\t\t\tjustify=\"end\"\n\t\t\t\tspacing={ 6 }\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\tclassName=\"dataviews-pagination__page-select\"\n\t\t\t\t>\n\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t// translators: 1: Current page number, 2: Total number of pages.\n\t\t\t\t\t\t\t_x(\n\t\t\t\t\t\t\t\t'<div>Page</div>%1$s<div>of %2$s</div>',\n\t\t\t\t\t\t\t\t'paging'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t'<CurrentPage />',\n\t\t\t\t\t\t\ttotalPages\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdiv: <div aria-hidden />,\n\t\t\t\t\t\t\tCurrentPage: (\n\t\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t\taria-label={ __( 'Current page' ) }\n\t\t\t\t\t\t\t\t\tvalue={ currentPage.toString() }\n\t\t\t\t\t\t\t\t\toptions={ pageSelectOptions }\n\t\t\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tpage: +newValue,\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\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\tvariant=\"minimal\"\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</HStack>\n\t\t\t\t<HStack expanded={ false } spacing={ 1 }>\n\t\t\t\t\t<Button\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\tpage: currentPage - 1,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={ currentPage === 1 }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tlabel={ __( 'Previous page' ) }\n\t\t\t\t\t\ticon={ isRTL() ? next : previous }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tonChangeView( { ...view, page: currentPage + 1 } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={ currentPage >= totalPages }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tlabel={ __( 'Next page' ) }\n\t\t\t\t\t\ticon={ isRTL() ? previous : next }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t</HStack>\n\t\t)\n\t);\n}\n\nexport default memo( DataViewsPagination );\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,27 +5,25 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* WordPress dependencies
|
|
7
7
|
*/
|
|
8
|
-
import { Button, Popover, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, __experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon, SelectControl, __experimentalItemGroup as ItemGroup, __experimentalItem as Item, __experimentalGrid as Grid, __experimentalVStack as VStack, __experimentalHStack as HStack, __experimentalHeading as Heading, __experimentalText as Text, privateApis as componentsPrivateApis } from '@wordpress/components';
|
|
9
|
-
import { __, _x } from '@wordpress/i18n';
|
|
8
|
+
import { Button, Popover, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, __experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon, SelectControl, __experimentalItemGroup as ItemGroup, __experimentalItem as Item, __experimentalGrid as Grid, __experimentalVStack as VStack, __experimentalHStack as HStack, __experimentalHeading as Heading, __experimentalText as Text, privateApis as componentsPrivateApis, BaseControl } from '@wordpress/components';
|
|
9
|
+
import { __, _x, sprintf } from '@wordpress/i18n';
|
|
10
10
|
import { memo, useContext, useState, useMemo } from '@wordpress/element';
|
|
11
|
-
import { cog, seen, unseen } from '@wordpress/icons';
|
|
11
|
+
import { chevronDown, chevronUp, cog, seen, unseen } from '@wordpress/icons';
|
|
12
12
|
import warning from '@wordpress/warning';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Internal dependencies
|
|
16
16
|
*/
|
|
17
|
-
import { SORTING_DIRECTIONS, LAYOUT_GRID, sortIcons, sortLabels } from '../../constants';
|
|
18
|
-
import { VIEW_LAYOUTS,
|
|
17
|
+
import { SORTING_DIRECTIONS, LAYOUT_GRID, LAYOUT_TABLE, sortIcons, sortLabels } from '../../constants';
|
|
18
|
+
import { VIEW_LAYOUTS, getNotHidableFieldIds, getVisibleFieldIds, getHiddenFieldIds } from '../../dataviews-layouts';
|
|
19
19
|
import DataViewsContext from '../dataviews-context';
|
|
20
20
|
import { unlock } from '../../lock-unlock';
|
|
21
21
|
import DensityPicker from '../../dataviews-layouts/grid/density-picker';
|
|
22
22
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
23
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
23
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
24
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
25
|
const {
|
|
26
|
-
DropdownMenuV2
|
|
27
|
-
DropdownMenuRadioItemV2: DropdownMenuRadioItem,
|
|
28
|
-
DropdownMenuItemLabelV2: DropdownMenuItemLabel
|
|
26
|
+
DropdownMenuV2
|
|
29
27
|
} = unlock(componentsPrivateApis);
|
|
30
28
|
function ViewTypeMenu({
|
|
31
29
|
defaultLayouts = {
|
|
@@ -43,7 +41,7 @@ function ViewTypeMenu({
|
|
|
43
41
|
return null;
|
|
44
42
|
}
|
|
45
43
|
const activeView = VIEW_LAYOUTS.find(v => view.type === v.type);
|
|
46
|
-
return /*#__PURE__*/_jsx(
|
|
44
|
+
return /*#__PURE__*/_jsx(DropdownMenuV2, {
|
|
47
45
|
trigger: /*#__PURE__*/_jsx(Button, {
|
|
48
46
|
size: "compact",
|
|
49
47
|
icon: activeView?.icon,
|
|
@@ -54,7 +52,7 @@ function ViewTypeMenu({
|
|
|
54
52
|
if (!config) {
|
|
55
53
|
return null;
|
|
56
54
|
}
|
|
57
|
-
return /*#__PURE__*/_jsx(
|
|
55
|
+
return /*#__PURE__*/_jsx(DropdownMenuV2.RadioItem, {
|
|
58
56
|
value: layout,
|
|
59
57
|
name: "view-actions-available-view",
|
|
60
58
|
checked: layout === view.type,
|
|
@@ -72,7 +70,7 @@ function ViewTypeMenu({
|
|
|
72
70
|
}
|
|
73
71
|
globalThis.SCRIPT_DEBUG === true ? warning('Invalid dataview') : void 0;
|
|
74
72
|
},
|
|
75
|
-
children: /*#__PURE__*/_jsx(
|
|
73
|
+
children: /*#__PURE__*/_jsx(DropdownMenuV2.ItemLabel, {
|
|
76
74
|
children: config.label
|
|
77
75
|
})
|
|
78
76
|
}, layout);
|
|
@@ -117,6 +115,10 @@ function SortDirectionControl() {
|
|
|
117
115
|
fields,
|
|
118
116
|
onChangeView
|
|
119
117
|
} = useContext(DataViewsContext);
|
|
118
|
+
const sortableFields = fields.filter(field => field.enableSorting !== false);
|
|
119
|
+
if (sortableFields.length === 0) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
120
122
|
let value = view.sort?.direction;
|
|
121
123
|
if (!value && view.sort?.field) {
|
|
122
124
|
value = 'desc';
|
|
@@ -181,40 +183,177 @@ function ItemsPerPageControl() {
|
|
|
181
183
|
})
|
|
182
184
|
});
|
|
183
185
|
}
|
|
186
|
+
function FieldItem({
|
|
187
|
+
field: {
|
|
188
|
+
id,
|
|
189
|
+
label,
|
|
190
|
+
index,
|
|
191
|
+
isVisible,
|
|
192
|
+
isHidable
|
|
193
|
+
},
|
|
194
|
+
fields,
|
|
195
|
+
view,
|
|
196
|
+
onChangeView
|
|
197
|
+
}) {
|
|
198
|
+
const visibleFieldIds = getVisibleFieldIds(view, fields);
|
|
199
|
+
return /*#__PURE__*/_jsx(Item, {
|
|
200
|
+
children: /*#__PURE__*/_jsxs(HStack, {
|
|
201
|
+
expanded: true,
|
|
202
|
+
className: `dataviews-field-control__field dataviews-field-control__field-${id}`,
|
|
203
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
204
|
+
children: label
|
|
205
|
+
}), /*#__PURE__*/_jsxs(HStack, {
|
|
206
|
+
justify: "flex-end",
|
|
207
|
+
expanded: false,
|
|
208
|
+
className: "dataviews-field-control__actions",
|
|
209
|
+
children: [view.type === LAYOUT_TABLE && isVisible && /*#__PURE__*/_jsxs(_Fragment, {
|
|
210
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
|
211
|
+
disabled: index < 1,
|
|
212
|
+
accessibleWhenDisabled: true,
|
|
213
|
+
size: "compact",
|
|
214
|
+
onClick: () => {
|
|
215
|
+
var _visibleFieldIds$slic;
|
|
216
|
+
onChangeView({
|
|
217
|
+
...view,
|
|
218
|
+
fields: [...((_visibleFieldIds$slic = visibleFieldIds.slice(0, index - 1)) !== null && _visibleFieldIds$slic !== void 0 ? _visibleFieldIds$slic : []), id, visibleFieldIds[index - 1], ...visibleFieldIds.slice(index + 1)]
|
|
219
|
+
});
|
|
220
|
+
},
|
|
221
|
+
icon: chevronUp,
|
|
222
|
+
label: sprintf( /* translators: %s: field label */
|
|
223
|
+
__('Move %s up'), label)
|
|
224
|
+
}), /*#__PURE__*/_jsx(Button, {
|
|
225
|
+
disabled: index >= visibleFieldIds.length - 1,
|
|
226
|
+
accessibleWhenDisabled: true,
|
|
227
|
+
size: "compact",
|
|
228
|
+
onClick: () => {
|
|
229
|
+
var _visibleFieldIds$slic2;
|
|
230
|
+
onChangeView({
|
|
231
|
+
...view,
|
|
232
|
+
fields: [...((_visibleFieldIds$slic2 = visibleFieldIds.slice(0, index)) !== null && _visibleFieldIds$slic2 !== void 0 ? _visibleFieldIds$slic2 : []), visibleFieldIds[index + 1], id, ...visibleFieldIds.slice(index + 2)]
|
|
233
|
+
});
|
|
234
|
+
},
|
|
235
|
+
icon: chevronDown,
|
|
236
|
+
label: sprintf( /* translators: %s: field label */
|
|
237
|
+
__('Move %s down'), label)
|
|
238
|
+
}), ' ']
|
|
239
|
+
}), /*#__PURE__*/_jsx(Button, {
|
|
240
|
+
className: "dataviews-field-control__field-visibility-button",
|
|
241
|
+
disabled: !isHidable,
|
|
242
|
+
accessibleWhenDisabled: true,
|
|
243
|
+
size: "compact",
|
|
244
|
+
onClick: () => {
|
|
245
|
+
onChangeView({
|
|
246
|
+
...view,
|
|
247
|
+
fields: isVisible ? visibleFieldIds.filter(fieldId => fieldId !== id) : [...visibleFieldIds, id]
|
|
248
|
+
});
|
|
249
|
+
// Focus the visibility button to avoid focus loss.
|
|
250
|
+
// Our code is safe against the component being unmounted, so we don't need to worry about cleaning the timeout.
|
|
251
|
+
// eslint-disable-next-line @wordpress/react-no-unsafe-timeout
|
|
252
|
+
setTimeout(() => {
|
|
253
|
+
const element = document.querySelector(`.dataviews-field-control__field-${id} .dataviews-field-control__field-visibility-button`);
|
|
254
|
+
if (element instanceof HTMLElement) {
|
|
255
|
+
element.focus();
|
|
256
|
+
}
|
|
257
|
+
}, 50);
|
|
258
|
+
},
|
|
259
|
+
icon: isVisible ? seen : unseen,
|
|
260
|
+
label: isVisible ? sprintf( /* translators: %s: field label */
|
|
261
|
+
__('Hide %s'), label) : sprintf( /* translators: %s: field label */
|
|
262
|
+
__('Show %s'), label)
|
|
263
|
+
})]
|
|
264
|
+
})]
|
|
265
|
+
})
|
|
266
|
+
}, id);
|
|
267
|
+
}
|
|
184
268
|
function FieldControl() {
|
|
185
269
|
const {
|
|
186
270
|
view,
|
|
187
271
|
fields,
|
|
188
272
|
onChangeView
|
|
189
273
|
} = useContext(DataViewsContext);
|
|
190
|
-
const
|
|
191
|
-
const
|
|
192
|
-
const
|
|
193
|
-
|
|
274
|
+
const visibleFieldIds = useMemo(() => getVisibleFieldIds(view, fields), [view, fields]);
|
|
275
|
+
const hiddenFieldIds = useMemo(() => getHiddenFieldIds(view, fields), [view, fields]);
|
|
276
|
+
const notHidableFieldIds = useMemo(() => getNotHidableFieldIds(view), [view]);
|
|
277
|
+
const visibleFields = fields.filter(({
|
|
278
|
+
id
|
|
279
|
+
}) => visibleFieldIds.includes(id)).map(({
|
|
280
|
+
id,
|
|
281
|
+
label,
|
|
282
|
+
enableHiding
|
|
283
|
+
}) => {
|
|
284
|
+
return {
|
|
285
|
+
id,
|
|
286
|
+
label,
|
|
287
|
+
index: visibleFieldIds.indexOf(id),
|
|
288
|
+
isVisible: true,
|
|
289
|
+
isHidable: notHidableFieldIds.includes(id) ? false : enableHiding
|
|
290
|
+
};
|
|
291
|
+
});
|
|
292
|
+
if (view.type === LAYOUT_TABLE && view.layout?.combinedFields) {
|
|
293
|
+
view.layout.combinedFields.forEach(({
|
|
294
|
+
id,
|
|
295
|
+
label
|
|
296
|
+
}) => {
|
|
297
|
+
visibleFields.push({
|
|
298
|
+
id,
|
|
299
|
+
label,
|
|
300
|
+
index: visibleFieldIds.indexOf(id),
|
|
301
|
+
isVisible: true,
|
|
302
|
+
isHidable: notHidableFieldIds.includes(id)
|
|
303
|
+
});
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
visibleFields.sort((a, b) => a.index - b.index);
|
|
307
|
+
const hiddenFields = fields.filter(({
|
|
308
|
+
id
|
|
309
|
+
}) => hiddenFieldIds.includes(id)).map(({
|
|
310
|
+
id,
|
|
311
|
+
label,
|
|
312
|
+
enableHiding
|
|
313
|
+
}, index) => {
|
|
314
|
+
return {
|
|
315
|
+
id,
|
|
316
|
+
label,
|
|
317
|
+
index,
|
|
318
|
+
isVisible: false,
|
|
319
|
+
isHidable: enableHiding
|
|
320
|
+
};
|
|
321
|
+
});
|
|
322
|
+
if (!visibleFields?.length && !hiddenFields?.length) {
|
|
194
323
|
return null;
|
|
195
324
|
}
|
|
196
|
-
return /*#__PURE__*/
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
children:
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
325
|
+
return /*#__PURE__*/_jsxs(VStack, {
|
|
326
|
+
spacing: 6,
|
|
327
|
+
className: "dataviews-field-control",
|
|
328
|
+
children: [!!visibleFields?.length && /*#__PURE__*/_jsx(ItemGroup, {
|
|
329
|
+
isBordered: true,
|
|
330
|
+
isSeparated: true,
|
|
331
|
+
children: visibleFields.map(field => /*#__PURE__*/_jsx(FieldItem, {
|
|
332
|
+
field: field,
|
|
333
|
+
fields: fields,
|
|
334
|
+
view: view,
|
|
335
|
+
onChangeView: onChangeView
|
|
336
|
+
}, field.id))
|
|
337
|
+
}), !!hiddenFields?.length && /*#__PURE__*/_jsx(_Fragment, {
|
|
338
|
+
children: /*#__PURE__*/_jsxs(VStack, {
|
|
339
|
+
spacing: 4,
|
|
340
|
+
children: [/*#__PURE__*/_jsx(BaseControl.VisualLabel, {
|
|
341
|
+
style: {
|
|
342
|
+
margin: 0
|
|
343
|
+
},
|
|
344
|
+
children: __('Hidden')
|
|
345
|
+
}), /*#__PURE__*/_jsx(ItemGroup, {
|
|
346
|
+
isBordered: true,
|
|
347
|
+
isSeparated: true,
|
|
348
|
+
children: hiddenFields.map(field => /*#__PURE__*/_jsx(FieldItem, {
|
|
349
|
+
field: field,
|
|
350
|
+
fields: fields,
|
|
351
|
+
view: view,
|
|
352
|
+
onChangeView: onChangeView
|
|
353
|
+
}, field.id))
|
|
354
|
+
})]
|
|
355
|
+
})
|
|
356
|
+
})]
|
|
218
357
|
});
|
|
219
358
|
}
|
|
220
359
|
function SettingsSection({
|