index.php
77 lines
| 1 | <?php |
| 2 | |
| 3 | namespace Kubio\Blocks; |
| 4 | |
| 5 | use Kubio\Core\Blocks\BlockContainerBase; |
| 6 | use Kubio\Core\Layout\LayoutHelper; |
| 7 | use Kubio\Core\LodashBasic; |
| 8 | use Kubio\Core\Registry; |
| 9 | use Kubio\Core\StyleManager\DynamicStyles; |
| 10 | |
| 11 | |
| 12 | class ColumnBlock extends BlockContainerBase { |
| 13 | |
| 14 | |
| 15 | const CONTAINER = 'container'; |
| 16 | const INNER = 'inner'; |
| 17 | const ALIGN = 'align'; |
| 18 | const VSPACE = 'v-space'; |
| 19 | |
| 20 | |
| 21 | public function mapDynamicStyleToElements() { |
| 22 | $dynamicStyles = array(); |
| 23 | $spaceByMedia = $this->getPropByMedia( |
| 24 | 'layout.vSpace', |
| 25 | array() |
| 26 | ); |
| 27 | |
| 28 | $dynamicStyles[ self::VSPACE ] = DynamicStyles::vSpace( $spaceByMedia ); |
| 29 | |
| 30 | return $dynamicStyles; |
| 31 | } |
| 32 | |
| 33 | public function mapPropsToElements() { |
| 34 | $row_block = Registry::getInstance()->getLastBlockOfName( 'kubio/row' ); |
| 35 | |
| 36 | $columnWidthByMedia = $this->getStyleByMedia( |
| 37 | 'columnWidth', |
| 38 | array(), |
| 39 | array( |
| 40 | 'styledComponent' => self::CONTAINER, |
| 41 | 'local' => true, |
| 42 | ) |
| 43 | ); |
| 44 | |
| 45 | $layoutByMedia = $this->getPropByMedia( 'layout' ); |
| 46 | $rowLayoutByMedia = $row_block ? $row_block->getPropByMedia( 'layout' ) : array(); |
| 47 | |
| 48 | $columnWidth = $columnWidthByMedia['desktop']; |
| 49 | $layoutHelper = new LayoutHelper( $layoutByMedia, $rowLayoutByMedia ); |
| 50 | |
| 51 | $container_cls = LodashBasic::concat( |
| 52 | $layoutHelper->getColumnLayoutClasses( $columnWidthByMedia ), |
| 53 | $layoutHelper->getInheritedColumnVAlignClasses() |
| 54 | ); |
| 55 | |
| 56 | $equalWidth = LodashBasic::get( $rowLayoutByMedia, 'desktop.equalWidth', false ); |
| 57 | |
| 58 | $align_cls = LodashBasic::concat( |
| 59 | $layoutHelper->getColumnContentFlexBasis( $equalWidth, $columnWidth ), |
| 60 | $layoutHelper->getSelfVAlignClasses() |
| 61 | ); |
| 62 | |
| 63 | $inner = $layoutHelper->getColumnInnerGapsClasses(); |
| 64 | |
| 65 | $map = array(); |
| 66 | $map[ self::CONTAINER ] = array( 'className' => $container_cls ); |
| 67 | $map[ self::INNER ] = array( 'className' => $inner ); |
| 68 | $map[ self::ALIGN ] = array( 'className' => $align_cls ); |
| 69 | return $map; |
| 70 | } |
| 71 | } |
| 72 | |
| 73 | Registry::registerBlock( |
| 74 | __DIR__, |
| 75 | ColumnBlock::class |
| 76 | ); |
| 77 |