xref: /plugin/combo/ComboStrap/LineSpacing.php (revision 37748cd8654635afbeca80942126742f0f4cc346)
1*37748cd8SNickeau<?php
2*37748cd8SNickeau
3*37748cd8SNickeau
4*37748cd8SNickeaunamespace ComboStrap;
5*37748cd8SNickeau
6*37748cd8SNickeau
7*37748cd8SNickeauuse syntax_plugin_combo_text;
8*37748cd8SNickeau
9*37748cd8SNickeauclass LineSpacing
10*37748cd8SNickeau{
11*37748cd8SNickeau
12*37748cd8SNickeau    const CANONICAL = syntax_plugin_combo_text::TAG;
13*37748cd8SNickeau
14*37748cd8SNickeau
15*37748cd8SNickeau    /**
16*37748cd8SNickeau     * Process the line-spacing attribute
17*37748cd8SNickeau     * https://getbootstrap.com/docs/5.0/utilities/text/#line-height
18*37748cd8SNickeau     * @param TagAttributes $attributes
19*37748cd8SNickeau     */
20*37748cd8SNickeau    public static function processLineSpacingAttributes(&$attributes)
21*37748cd8SNickeau    {
22*37748cd8SNickeau
23*37748cd8SNickeau        // Spacing is just a class
24*37748cd8SNickeau        $lineSpacing = "line-spacing";
25*37748cd8SNickeau        if ($attributes->hasComponentAttribute($lineSpacing)) {
26*37748cd8SNickeau
27*37748cd8SNickeau            $bootstrapVersion = Bootstrap::getBootStrapMajorVersion();
28*37748cd8SNickeau            if ($bootstrapVersion != Bootstrap::BootStrapFiveMajorVersion) {
29*37748cd8SNickeau                LogUtility::msg("The line-spacing attribute is only implemented with Bootstrap 5. If you want to use this attribute, you should " . PluginUtility::getUrl(Bootstrap::CANONICAL, "change the Bootstrap version") . ".", self::CANONICAL);
30*37748cd8SNickeau                return;
31*37748cd8SNickeau            }
32*37748cd8SNickeau
33*37748cd8SNickeau            $lineSpacingValue = trim(strtolower($attributes->getValueAndRemove($lineSpacing)));
34*37748cd8SNickeau            switch ($lineSpacingValue) {
35*37748cd8SNickeau                case "xs":
36*37748cd8SNickeau                case "extra-small":
37*37748cd8SNickeau                    $attributes->addClassName("lh-1");
38*37748cd8SNickeau                    break;
39*37748cd8SNickeau                case "sm":
40*37748cd8SNickeau                case "small":
41*37748cd8SNickeau                    $attributes->addClassName("lh-sm");
42*37748cd8SNickeau                    break;
43*37748cd8SNickeau                case "md":
44*37748cd8SNickeau                case "medium":
45*37748cd8SNickeau                    $attributes->addClassName("lh-base");
46*37748cd8SNickeau                    break;
47*37748cd8SNickeau                case "lg":
48*37748cd8SNickeau                case "large":
49*37748cd8SNickeau                    $attributes->addClassName("lh-lg");
50*37748cd8SNickeau                    break;
51*37748cd8SNickeau                default:
52*37748cd8SNickeau                    LogUtility::msg("The line-spacing value ($lineSpacingValue) is not a valid value.", LogUtility::LVL_MSG_ERROR, self::CANONICAL);
53*37748cd8SNickeau                    break;
54*37748cd8SNickeau            }
55*37748cd8SNickeau        }
56*37748cd8SNickeau    }
57*37748cd8SNickeau
58*37748cd8SNickeau}
59