diff --git a/composer.json b/composer.json index 0dac661..05354f9 100644 --- a/composer.json +++ b/composer.json @@ -47,7 +47,7 @@ }, "extra":{ "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "3.1.x-dev" }, "contao-manager-plugin": "Oveleon\\ContaoComponentStyleManager\\ContaoManager\\Plugin" } diff --git a/docs/CONFIGURATION.md b/docs/CONFIGURATION.md index 6ab2065..0da8a7f 100644 --- a/docs/CONFIGURATION.md +++ b/docs/CONFIGURATION.md @@ -42,3 +42,13 @@ A special feature is that CSS groups can also be used as template variables via ### Example css group: ![Manage Groups: Image 1](https://www.oveleon.de/share/github-assets/contao-component-style-manager/2.0/groups-edit.png) + +# Hide group titles +Since version 3.1, the group titles will be shown above the StyleManager widget + +To disabled showing the group title, you can use the following configuration: +```yaml +# config.yaml +contao_component_style_manager: + show_group_title: false +``` diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index aeb2196..2224260 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -26,6 +26,9 @@ public function getConfigTreeBuilder() ->booleanNode('strict') ->defaultFalse() ->end() + ->booleanNode('show_group_title') + ->defaultTrue() + ->end() ->end() ; diff --git a/src/DependencyInjection/ContaoComponentStyleManagerExtension.php b/src/DependencyInjection/ContaoComponentStyleManagerExtension.php index 29d2c13..dadb9fa 100644 --- a/src/DependencyInjection/ContaoComponentStyleManagerExtension.php +++ b/src/DependencyInjection/ContaoComponentStyleManagerExtension.php @@ -24,5 +24,6 @@ public function load(array $configs, ContainerBuilder $container) $container->setParameter('contao_component_style_manager.use_bundle_config', $config['use_bundle_config']); $container->setParameter('contao_component_style_manager.strict', $config['strict']); + $container->setParameter('contao_component_style_manager.show_group_title', $config['show_group_title']); } } diff --git a/src/Resources/public/stylemanager.css b/src/Resources/public/stylemanager.css index fa46559..8fad1bf 100644 --- a/src/Resources/public/stylemanager.css +++ b/src/Resources/public/stylemanager.css @@ -10,6 +10,10 @@ .widget.stylemanager > h3 { margin-bottom: 15px; } +.widget.stylemanager .sm-group-title { + margin-top: 1rem; + padding-bottom: 0.5rem; +} .widget.stylemanager .no_styles { min-height: auto; } diff --git a/src/Resources/public/stylemanager.css.map b/src/Resources/public/stylemanager.css.map index ad2389e..751ba33 100644 --- a/src/Resources/public/stylemanager.css.map +++ b/src/Resources/public/stylemanager.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["stylemanager.scss"],"names":[],"mappings":"AAMM;EACE;;;AAQN;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;EACD;EACA;;AAIH;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EA0BE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAOJ;EACE;;;AAMF;EACE;;;AAIJ;EAOQ;IACE;IACA;;EAEA;IACE;;;AAQZ;EACE;IACE;;EAEA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAGF;IACE;;;AAKN;EAOQ;IACE;IACA;;EAEA;IACE","file":"stylemanager.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["stylemanager.scss"],"names":[],"mappings":"AAMM;EACE;;;AAQN;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;EACD;EACA;;AAIH;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EA0BE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAOJ;EACE;;;AAMF;EACE;;;AAIJ;EAOQ;IACE;IACA;;EAEA;IACE;;;AAQZ;EACE;IACE;;EAEA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAGF;IACE;;;AAKN;EAOQ;IACE;IACA;;EAEA;IACE","file":"stylemanager.css"} \ No newline at end of file diff --git a/src/Resources/public/stylemanager.scss b/src/Resources/public/stylemanager.scss index 77ddc9a..9030631 100644 --- a/src/Resources/public/stylemanager.scss +++ b/src/Resources/public/stylemanager.scss @@ -22,6 +22,11 @@ margin-bottom: 15px; } + .sm-group-title { + margin-top: 1rem; + padding-bottom: .5rem; + } + .no_styles{ min-height: auto; diff --git a/src/StyleManager/Styles.php b/src/StyleManager/Styles.php index 0421eca..5b924d0 100644 --- a/src/StyleManager/Styles.php +++ b/src/StyleManager/Styles.php @@ -26,6 +26,11 @@ class Styles */ private ?array $currGroups = null; + /** + * Excluded groups + */ + private ?array $exclGroups = null; + /** * Initialize the object */ @@ -55,6 +60,11 @@ public function get($identifier, $arrGroups=null): string { $collection = array(); + if(null !== $this->exclGroups) + { + $this->removeExcludedGroups($arrGroups); + } + foreach ($arrGroups as $groupAlias) { if($value = $this->getGroupValue($this->styles[ $identifier ][ $groupAlias ] ?? null)) @@ -75,7 +85,17 @@ public function get($identifier, $arrGroups=null): string public function prepare($identifier, $arrGroups=null): Styles { $this->currIdentifier = $identifier; - $this->currGroups = $arrGroups; + $this->currGroups = $arrGroups; + + return $this; + } + + /** + * Exclude css classes + */ + public function exclude(?array $exclGroups=null): Styles + { + $this->exclGroups = $exclGroups; return $this; } @@ -118,6 +138,11 @@ public function format(string $format, string $method=''): string } } + if(null !== $this->exclGroups) + { + $arrValues = array_diff($arrValues, $this->exclGroups); + } + if($arrValues !== null && $jsonValue = json_encode($arrValues)) { return sprintf($format, $jsonValue); @@ -151,6 +176,11 @@ private function getCategoryValues($arrVariables): array { $arrValues = []; + if(null !== $this->exclGroups) + { + $this->removeExcludedGroups($arrVariables); + } + foreach ($arrVariables as $alias => $arrVariable) { $arrValues[] = $this->getGroupValue($arrVariable); @@ -187,4 +217,23 @@ private function parseValueType($strValue) return $strValue; } + + /** + * Removes excluded groups + */ + private function removeExcludedGroups(array &$currGroups): void + { + foreach ($this->exclGroups as $exclude) + { + if (array_key_exists($exclude, $currGroups)) + { + unset($currGroups[$exclude]); + } + // in case the excluded group is a value -> when a group was passed + else if (in_array($exclude, $currGroups)) + { + $currGroups = array_diff($currGroups, [$exclude]); + } + } + } } diff --git a/src/Widget/ComponentStyleSelect.php b/src/Widget/ComponentStyleSelect.php index 015c5f4..ca56c17 100644 --- a/src/Widget/ComponentStyleSelect.php +++ b/src/Widget/ComponentStyleSelect.php @@ -80,6 +80,9 @@ public function generate() // Restore default values $this->varValue = StyleManager::deserializeValues($this->varValue); + // Show group title + $blnShowGroupTitle = System::getContainer()->getParameter('contao_component_style_manager.show_group_title'); + // Prepare group fields foreach($arrObjStyleGroups as $objStyleGroup) { @@ -201,10 +204,11 @@ public function generate() if(!in_array($collectionAlias, array_keys($arrCollection))) { $arrCollection[ $collectionAlias ] = array( - 'label' => $arrArchives[ $objStyleGroup->pid ]['title'], - 'desc' => $arrArchives[ $objStyleGroup->pid ]['desc'], - 'group' => $groupAlias, - 'fields' => array() + 'label' => $arrArchives[ $objStyleGroup->pid ]['title'], + 'desc' => $arrArchives[ $objStyleGroup->pid ]['desc'], + 'group' => $groupAlias, + 'groupTitle' => $arrArchives[ $objStyleGroup->pid ]['group'] ?? null, + 'fields' => array() ); } @@ -250,6 +254,7 @@ public function generate() { $arrNavigation = array(); $arrContent = array(); + $groupTitle = null; $i = 0; @@ -282,6 +287,12 @@ public function generate() implode("", $group['fields']) ); + // Set group title if it exists + if ($blnShowGroupTitle && null !== $group['groupTitle']) + { + $groupTitle = '

' . $group['groupTitle'] . '

'; + } + $i++; } @@ -291,7 +302,7 @@ public function generate() $arrNavigation[0] = str_replace(">' . implode("", $arrNavigation) . implode("", $arrContent) . ''; + $arrSections[] = '
' . $groupTitle . implode("", $arrNavigation) . implode("", $arrContent) . '
'; } return implode("", $arrSections);