UNPKG

@wordpress/block-library

Version:
8 lines (7 loc) 6.86 kB
{ "version": 3, "sources": ["../../src/column/edit.js"], "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tInnerBlocks,\n\tBlockControls,\n\tBlockVerticalAlignmentToolbar,\n\tInspectorControls,\n\tuseBlockProps,\n\tuseSettings,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { sprintf, __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nfunction ColumnInspectorControls( { width, setAttributes } ) {\n\tconst [ availableUnits ] = useSettings( 'spacing.units' );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits || [ '%', 'px', 'em', 'rem', 'vw' ],\n\t} );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Settings' ) }\n\t\t\tresetAll={ () => {\n\t\t\t\tsetAttributes( { width: undefined } );\n\t\t\t} }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t<ToolsPanelItem\n\t\t\t\thasValue={ () => width !== undefined }\n\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\tonDeselect={ () => setAttributes( { width: undefined } ) }\n\t\t\t\tisShownByDefault\n\t\t\t>\n\t\t\t\t<UnitControl\n\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\t__unstableInputWidth=\"calc(50% - 8px)\"\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tvalue={ width || '' }\n\t\t\t\t\tonChange={ ( nextWidth ) => {\n\t\t\t\t\t\tnextWidth =\n\t\t\t\t\t\t\t0 > parseFloat( nextWidth ) ? '0' : nextWidth;\n\t\t\t\t\t\tsetAttributes( { width: nextWidth } );\n\t\t\t\t\t} }\n\t\t\t\t\tunits={ units }\n\t\t\t\t/>\n\t\t\t</ToolsPanelItem>\n\t\t</ToolsPanel>\n\t);\n}\n\nfunction ColumnEdit( {\n\tattributes: { verticalAlignment, width, templateLock, allowedBlocks },\n\tsetAttributes,\n\tclientId,\n} ) {\n\tconst classes = clsx( 'block-core-columns', {\n\t\t[ `is-vertically-aligned-${ verticalAlignment }` ]: verticalAlignment,\n\t} );\n\tconst { columnsIds, hasChildBlocks, rootClientId } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockOrder, getBlockRootClientId } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst rootId = getBlockRootClientId( clientId );\n\n\t\t\treturn {\n\t\t\t\thasChildBlocks: getBlockOrder( clientId ).length > 0,\n\t\t\t\trootClientId: rootId,\n\t\t\t\tcolumnsIds: getBlockOrder( rootId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tconst updateAlignment = ( value ) => {\n\t\t// Update own alignment.\n\t\tsetAttributes( { verticalAlignment: value } );\n\t\t// Reset parent Columns block.\n\t\tupdateBlockAttributes( rootClientId, {\n\t\t\tverticalAlignment: null,\n\t\t} );\n\t};\n\n\tconst widthWithUnit = Number.isFinite( width ) ? width + '%' : width;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t\tstyle: widthWithUnit ? { flexBasis: widthWithUnit } : undefined,\n\t} );\n\n\tconst columnsCount = columnsIds.length;\n\tconst currentColumnPosition = columnsIds.indexOf( clientId ) + 1;\n\n\tconst label = sprintf(\n\t\t/* translators: 1: Block label (i.e. \"Block: Column\"), 2: Position of the selected block, 3: Total number of sibling blocks of the same type */\n\t\t__( '%1$s (%2$d of %3$d)' ),\n\t\tblockProps[ 'aria-label' ],\n\t\tcurrentColumnPosition,\n\t\tcolumnsCount\n\t);\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{ ...blockProps, 'aria-label': label },\n\t\t{\n\t\t\ttemplateLock,\n\t\t\tallowedBlocks,\n\t\t\trenderAppender: hasChildBlocks\n\t\t\t\t? undefined\n\t\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t\t}\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<BlockVerticalAlignmentToolbar\n\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\tvalue={ verticalAlignment }\n\t\t\t\t\tcontrols={ [ 'top', 'center', 'bottom', 'stretch' ] }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<ColumnInspectorControls\n\t\t\t\t\twidth={ width }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n\nexport default ColumnEdit;\n"], "mappings": "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", "names": ["useCustomUnits", "ToolsPanel", "ToolsPanelItem", "UnitControl", "clsx", "blockEditorStore"] }