xref: /plugin/combo/ComboStrap/TextColor.php (revision 4cadd4f8c541149bdda95f080e38a6d4e3a640ca)
137748cd8SNickeau<?php
237748cd8SNickeau
337748cd8SNickeau
437748cd8SNickeaunamespace ComboStrap;
537748cd8SNickeau
637748cd8SNickeau
737748cd8SNickeauclass TextColor
837748cd8SNickeau{
937748cd8SNickeau
1037748cd8SNickeau    const TEXT_COLOR_ATTRIBUTE = "text-color";
1137748cd8SNickeau    const CSS_ATTRIBUTE = "color";
1237748cd8SNickeau    const CANONICAL = self::TEXT_COLOR_ATTRIBUTE;
13*4cadd4f8SNickeau
1437748cd8SNickeau    const TEXT_COLORS = array(
1537748cd8SNickeau        'primary',
1637748cd8SNickeau        'secondary',
1737748cd8SNickeau        'success',
1837748cd8SNickeau        'danger',
1937748cd8SNickeau        'warning',
2037748cd8SNickeau        'info',
2137748cd8SNickeau        'light',
2237748cd8SNickeau        'dark',
2337748cd8SNickeau        'body',
2437748cd8SNickeau        'muted',
2537748cd8SNickeau        'white',
2637748cd8SNickeau        'black-50',
2737748cd8SNickeau        'white-50'
2837748cd8SNickeau    );
2937748cd8SNickeau
3037748cd8SNickeau    /**
3137748cd8SNickeau     * @param TagAttributes $attributes
3237748cd8SNickeau     */
3337748cd8SNickeau    public static function processTextColorAttribute(TagAttributes &$attributes)
3437748cd8SNickeau    {
3537748cd8SNickeau
3637748cd8SNickeau        $colorAttributes = [TextColor::CSS_ATTRIBUTE, TextColor::TEXT_COLOR_ATTRIBUTE];
3737748cd8SNickeau        foreach ($colorAttributes as $colorAttribute) {
3837748cd8SNickeau            if ($attributes->hasComponentAttribute($colorAttribute)) {
3937748cd8SNickeau                $colorValue = $attributes->getValueAndRemove($colorAttribute);
40*4cadd4f8SNickeau                $lowerCaseColorValue = strtolower($colorValue);
41*4cadd4f8SNickeau
42*4cadd4f8SNickeau                /**
43*4cadd4f8SNickeau                 * text is based in the text-colorname class
44*4cadd4f8SNickeau                 * Not yet on variable or color object
45*4cadd4f8SNickeau                 * We overwrite it here
46*4cadd4f8SNickeau                 */
47*4cadd4f8SNickeau                switch ($lowerCaseColorValue) {
48*4cadd4f8SNickeau                    case ColorRgb::PRIMARY_VALUE:
49*4cadd4f8SNickeau                        $primaryColor = Site::getPrimaryColor();
50*4cadd4f8SNickeau                        if ($primaryColor !== null) {
51*4cadd4f8SNickeau                            // important because we set the text-class below and they already have an important value
52*4cadd4f8SNickeau                            $attributes->addStyleDeclarationIfNotSet(TextColor::CSS_ATTRIBUTE, "{$primaryColor->toRgbHex()}!important");
53*4cadd4f8SNickeau                        }
54*4cadd4f8SNickeau                        break;
55*4cadd4f8SNickeau                    case ColorRgb::SECONDARY_VALUE:
56*4cadd4f8SNickeau                        $secondaryColor = Site::getSecondaryColor();
57*4cadd4f8SNickeau                        if ($secondaryColor !== null) {
58*4cadd4f8SNickeau                            // important because we set the text-class below and they already have an important value
59*4cadd4f8SNickeau                            $attributes->addStyleDeclarationIfNotSet(TextColor::CSS_ATTRIBUTE, "{$secondaryColor->toRgbHex()}!important");
60*4cadd4f8SNickeau                        }
61*4cadd4f8SNickeau                        break;
62*4cadd4f8SNickeau                }
63*4cadd4f8SNickeau
64*4cadd4f8SNickeau                if (in_array($lowerCaseColorValue, self::TEXT_COLORS)) {
6537748cd8SNickeau                    /**
6637748cd8SNickeau                     * The bootstrap text class
6737748cd8SNickeau                     * https://getbootstrap.com/docs/5.0/utilities/colors/#colors
6837748cd8SNickeau                     */
69*4cadd4f8SNickeau                    $attributes->addClassName("text-$lowerCaseColorValue");
7037748cd8SNickeau                } else {
7137748cd8SNickeau                    /**
7237748cd8SNickeau                     * Other Text Colors
7337748cd8SNickeau                     */
74*4cadd4f8SNickeau                    try {
75*4cadd4f8SNickeau                        $colorValue = ColorRgb::createFromString($colorValue)->toCssValue();
76*4cadd4f8SNickeau                    } catch (ExceptionCombo $e) {
77*4cadd4f8SNickeau                        LogUtility::msg("The text color value ($colorValue) is not a valid color. Error: {$e->getMessage()}");
78*4cadd4f8SNickeau                        return;
79*4cadd4f8SNickeau                    }
8037748cd8SNickeau                    if (!empty($colorValue)) {
8182a60d03SNickeau                        $attributes->addStyleDeclarationIfNotSet(TextColor::CSS_ATTRIBUTE, $colorValue);
8237748cd8SNickeau                    }
8337748cd8SNickeau                }
8437748cd8SNickeau                break;
8537748cd8SNickeau            }
8637748cd8SNickeau        }
8737748cd8SNickeau
8837748cd8SNickeau
8937748cd8SNickeau    }
9037748cd8SNickeau
9137748cd8SNickeau
9237748cd8SNickeau
9337748cd8SNickeau}
94