index.php
59 lines
| 1 | <?php |
| 2 | |
| 3 | namespace Kubio\Blocks; |
| 4 | |
| 5 | use Kubio\Core\Registry; |
| 6 | |
| 7 | class HeroBlock extends SectionBlock { |
| 8 | const INLINE_SCRIPT = 'inlineScript'; |
| 9 | |
| 10 | public function mapPropsToElements() { |
| 11 | $map = parent::mapPropsToElements(); |
| 12 | |
| 13 | $map[ self::INLINE_SCRIPT ] = array( |
| 14 | 'innerHTML' => $this->getOverlapScript(), |
| 15 | ); |
| 16 | |
| 17 | return $map; |
| 18 | } |
| 19 | |
| 20 | public function getOverlapScript() { |
| 21 | ob_start(); |
| 22 | ?> |
| 23 | <script type='text/javascript'> |
| 24 | (function () { |
| 25 | // forEach polyfill |
| 26 | if (!NodeList.prototype.forEach) { |
| 27 | NodeList.prototype.forEach = function (callback) { |
| 28 | for (var i = 0; i < this.length; i++) { |
| 29 | callback.call(this, this.item(i)); |
| 30 | } |
| 31 | } |
| 32 | } |
| 33 | var navigation = document.querySelector('[data-colibri-navigation-overlap="true"], .h-navigation_overlap'); |
| 34 | if (navigation) { |
| 35 | |
| 36 | var els = document |
| 37 | .querySelectorAll('.h-navigation-padding'); |
| 38 | if (els.length) { |
| 39 | els.forEach(function (item) { |
| 40 | item.style.paddingTop = navigation.offsetHeight + "px"; |
| 41 | }); |
| 42 | } |
| 43 | } |
| 44 | })(); |
| 45 | </script> |
| 46 | <?php |
| 47 | return ob_get_clean(); |
| 48 | } |
| 49 | } |
| 50 | |
| 51 | Registry::registerBlock( |
| 52 | __DIR__, |
| 53 | HeroBlock::class, |
| 54 | array( |
| 55 | 'metadata' => '../section/block.json', |
| 56 | 'metadata_mixins' => array( 'block.json' ), |
| 57 | ) |
| 58 | ); |
| 59 |