1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeau 4*04fd306cSNickeaunamespace ComboStrap; 5*04fd306cSNickeau 6*04fd306cSNickeau 7*04fd306cSNickeauuse ComboStrap\TagAttribute\Vertical; 8*04fd306cSNickeau 9*04fd306cSNickeauclass Horizontal 10*04fd306cSNickeau{ 11*04fd306cSNickeau 12*04fd306cSNickeau 13*04fd306cSNickeau public const HORIZONTAL_ATTRIBUTE = "horizontal"; 14*04fd306cSNickeau const CANONICAL = self::HORIZONTAL_ATTRIBUTE; 15*04fd306cSNickeau 16*04fd306cSNickeau const VALUES = [ 17*04fd306cSNickeau "start-items", 18*04fd306cSNickeau "end", 19*04fd306cSNickeau "center-children", 20*04fd306cSNickeau "between", 21*04fd306cSNickeau "around", 22*04fd306cSNickeau "evenly" 23*04fd306cSNickeau ]; 24*04fd306cSNickeau 25*04fd306cSNickeau public static function processHorizontal(TagAttributes &$tagAttributes) 26*04fd306cSNickeau { 27*04fd306cSNickeau 28*04fd306cSNickeau self::processFlexAttribute(self::HORIZONTAL_ATTRIBUTE, $tagAttributes); 29*04fd306cSNickeau 30*04fd306cSNickeau } 31*04fd306cSNickeau 32*04fd306cSNickeau static function processFlexAttribute(string $attributeName, $tagAttributes) 33*04fd306cSNickeau { 34*04fd306cSNickeau 35*04fd306cSNickeau $value = $tagAttributes->getValueAndRemove($attributeName); 36*04fd306cSNickeau if ($value === null) { 37*04fd306cSNickeau return; 38*04fd306cSNickeau } 39*04fd306cSNickeau 40*04fd306cSNickeau $logicalTag = $tagAttributes->getLogicalTag(); 41*04fd306cSNickeau 42*04fd306cSNickeau if (!in_array($logicalTag, Vertical::COMPONENTS)) { 43*04fd306cSNickeau LogUtility::warning("The $attributeName attribute is only meant to be used on the following component " . implode(", ", Vertical::COMPONENTS), self::CANONICAL); 44*04fd306cSNickeau } 45*04fd306cSNickeau try { 46*04fd306cSNickeau $conditionalValue = ConditionalValue::createFrom($value); 47*04fd306cSNickeau } catch (ExceptionBadSyntax $e) { 48*04fd306cSNickeau LogUtility::error("The $attributeName attribute value is not valid. Error: {$e->getMessage()}", self::CANONICAL); 49*04fd306cSNickeau return; 50*04fd306cSNickeau } 51*04fd306cSNickeau $valueWithoutBreakpoint = $conditionalValue->getValue(); 52*04fd306cSNickeau if ($attributeName === self::HORIZONTAL_ATTRIBUTE) { 53*04fd306cSNickeau $possibleValues = self::VALUES; 54*04fd306cSNickeau } else { 55*04fd306cSNickeau $possibleValues = Horizontal::VALUES; 56*04fd306cSNickeau } 57*04fd306cSNickeau if (!in_array($valueWithoutBreakpoint, $possibleValues)) { 58*04fd306cSNickeau LogUtility::error("The $attributeName attribute value ($valueWithoutBreakpoint) is not good. It should be one of: " . implode(", ", $possibleValues), self::CANONICAL); 59*04fd306cSNickeau return; 60*04fd306cSNickeau } 61*04fd306cSNickeau $breakpoint = $conditionalValue->getBreakpoint(); 62*04fd306cSNickeau if ($attributeName === self::HORIZONTAL_ATTRIBUTE) { 63*04fd306cSNickeau $classPrefix = "justify-content"; 64*04fd306cSNickeau } else { 65*04fd306cSNickeau $classPrefix = "align-items"; 66*04fd306cSNickeau } 67*04fd306cSNickeau if ($breakpoint !== null) { 68*04fd306cSNickeau $class = "$classPrefix-$breakpoint-$valueWithoutBreakpoint"; 69*04fd306cSNickeau } else { 70*04fd306cSNickeau $class = "$classPrefix-$valueWithoutBreakpoint"; 71*04fd306cSNickeau } 72*04fd306cSNickeau $tagAttributes->addClassName($class); 73*04fd306cSNickeau 74*04fd306cSNickeau // works only on flex items 75*04fd306cSNickeau // row is a flex item 76*04fd306cSNickeau if ($logicalTag !== GridTag::TAG) { 77*04fd306cSNickeau $tagAttributes->addClassName(\syntax_plugin_combo_cell::FLEX_CLASS); 78*04fd306cSNickeau } 79*04fd306cSNickeau 80*04fd306cSNickeau } 81*04fd306cSNickeau 82*04fd306cSNickeau} 83