From dfc3c810032576f3cc57fdb30c48922440974624 Mon Sep 17 00:00:00 2001 From: Benjamin Kott <benjamin.kott@outlook.com> Date: Tue, 25 Feb 2020 10:08:39 +0100 Subject: [PATCH] [BUGFIX] Only render widget footer if defined and correct styling issues Widget footer is now only rendered if the optional footer section for widgets is used and contains content. In addition, minor styling issues were resolved. Templates were cleaned up again. Some extra conditions were added to prevent empty tags. Resolves: #90530 Releases: master Change-Id: Idb4a6858395622a62448041fec3d510bec6fb271 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/63410 Tested-by: Daniel Goerz <daniel.goerz@posteo.de> Tested-by: TYPO3com <noreply@typo3.com> Tested-by: Oliver Bartsch <bo@cedev.de> Tested-by: Oliver Hader <oliver.hader@typo3.org> Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de> Reviewed-by: Oliver Bartsch <bo@cedev.de> Reviewed-by: Oliver Hader <oliver.hader@typo3.org> --- Build/Sources/Sass/dashboard/_widget.scss | 1 - .../Sass/dashboard/_widget_number.scss | 7 ++++- .../Private/Layouts/Widget/Widget.html | 9 ++++-- .../Private/Templates/Widget/ChartWidget.html | 6 ++-- .../Private/Templates/Widget/CtaWidget.html | 24 ++++++++------- .../Private/Templates/Widget/ListWidget.html | 12 ++++---- .../Widget/NumberWithIconWidget.html | 29 ++++++++++--------- .../Private/Templates/Widget/RssWidget.html | 2 +- .../Widget/T3GeneralInformation.html | 18 +++++++----- .../Resources/Public/Css/dashboard.css | 2 +- 10 files changed, 65 insertions(+), 45 deletions(-) diff --git a/Build/Sources/Sass/dashboard/_widget.scss b/Build/Sources/Sass/dashboard/_widget.scss index f61bf4a9b8d8..20423a586bfe 100644 --- a/Build/Sources/Sass/dashboard/_widget.scss +++ b/Build/Sources/Sass/dashboard/_widget.scss @@ -39,7 +39,6 @@ } .widget-content-main { - display: flex; flex-grow: 1; overflow-y: auto; padding: $widget-padding; diff --git a/Build/Sources/Sass/dashboard/_widget_number.scss b/Build/Sources/Sass/dashboard/_widget_number.scss index 84e3324a8bbf..3d5ce6c14273 100644 --- a/Build/Sources/Sass/dashboard/_widget_number.scss +++ b/Build/Sources/Sass/dashboard/_widget_number.scss @@ -1,6 +1,11 @@ +.widget-number { + height: 100%; + display: flex; + align-items: center; +} + .widget-number-icon { display: flex; - justify-content: center; align-items: center; width: 42px; margin-right: 20px; diff --git a/typo3/sysext/dashboard/Resources/Private/Layouts/Widget/Widget.html b/typo3/sysext/dashboard/Resources/Private/Layouts/Widget/Widget.html index 17a56c2b045c..d18e1f94d012 100644 --- a/typo3/sysext/dashboard/Resources/Private/Layouts/Widget/Widget.html +++ b/typo3/sysext/dashboard/Resources/Private/Layouts/Widget/Widget.html @@ -3,7 +3,10 @@ <div class="widget-content-main"> <f:render section="main" optional="true" /> </div> - <div class="widget-content-footer"> - <f:render section="footer" optional="true" /> - </div> + <f:variable name="footer" value="{f:render(section:'footer', optional: 'true')}" /> + <f:if condition="{footer -> f:spaceless()}"> + <div class="widget-content-footer"> + {footer -> f:format.raw()} + </div> + </f:if> </html> diff --git a/typo3/sysext/dashboard/Resources/Private/Templates/Widget/ChartWidget.html b/typo3/sysext/dashboard/Resources/Private/Templates/Widget/ChartWidget.html index 9c24d403d576..4e753d334fe8 100644 --- a/typo3/sysext/dashboard/Resources/Private/Templates/Widget/ChartWidget.html +++ b/typo3/sysext/dashboard/Resources/Private/Templates/Widget/ChartWidget.html @@ -1,15 +1,17 @@ <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true"> <f:layout name="Widget/Widget" /> - <f:section name="main"> + <div class="widget-chart"> <canvas></canvas> </div> -</f:section> +</f:section> <f:section name="footer"> + <f:if condition="{button}"> <a href="{button.link}" target="{button.target}" class="widget-cta">{button.text}</a> </f:if> + </f:section> </html> diff --git a/typo3/sysext/dashboard/Resources/Private/Templates/Widget/CtaWidget.html b/typo3/sysext/dashboard/Resources/Private/Templates/Widget/CtaWidget.html index 5c1283db9cb6..5f86147458f4 100644 --- a/typo3/sysext/dashboard/Resources/Private/Templates/Widget/CtaWidget.html +++ b/typo3/sysext/dashboard/Resources/Private/Templates/Widget/CtaWidget.html @@ -1,22 +1,26 @@ <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers" data-namespace-typo3-fluid="true"> <f:layout name="Widget/Widget"/> <f:section name="main"> + <f:if condition="{text}"> {text} </f:if> + </f:section> <f:section name="footer"> - <f:link.external uri="{link}" target="_blank" class="widget-cta"> - <f:if condition="{icon}"> - <div class="widget-cta-icon"> - <core:icon identifier="{icon}" size="large" alternativeMarkupIdentifier="inline" /> - </div> - </f:if> - <f:if condition="{label}"> - <f:translate key="{label}" default="{label}"/> - </f:if> - </f:link.external> + <f:if condition="{link}"> + <f:link.external uri="{link}" target="_blank" class="widget-cta"> + <f:if condition="{icon}"> + <div class="widget-cta-icon"> + <core:icon identifier="{icon}" size="large" alternativeMarkupIdentifier="inline" /> + </div> + </f:if> + <f:if condition="{label}"> + <f:translate key="{label}" default="{label}"/> + </f:if> + </f:link.external> + </f:if> </f:section> </html> diff --git a/typo3/sysext/dashboard/Resources/Private/Templates/Widget/ListWidget.html b/typo3/sysext/dashboard/Resources/Private/Templates/Widget/ListWidget.html index db01cc54428e..bbbac6ee9667 100644 --- a/typo3/sysext/dashboard/Resources/Private/Templates/Widget/ListWidget.html +++ b/typo3/sysext/dashboard/Resources/Private/Templates/Widget/ListWidget.html @@ -2,10 +2,12 @@ <f:layout name="Widget/Widget" /> <f:section name="main"> - <ul> - <f:for each="{items}" as="item"> - <li><f:link.typolink parameter="{item.link}">{item.title}</f:link.typolink></li> - </f:for> - </ul> + <f:if condition="{items}"> + <ul> + <f:for each="{items}" as="item"> + <li><f:link.typolink parameter="{item.link}">{item.title}</f:link.typolink></li> + </f:for> + </ul> + </f:if> </f:section> diff --git a/typo3/sysext/dashboard/Resources/Private/Templates/Widget/NumberWithIconWidget.html b/typo3/sysext/dashboard/Resources/Private/Templates/Widget/NumberWithIconWidget.html index a21421906595..99c210653e29 100644 --- a/typo3/sysext/dashboard/Resources/Private/Templates/Widget/NumberWithIconWidget.html +++ b/typo3/sysext/dashboard/Resources/Private/Templates/Widget/NumberWithIconWidget.html @@ -1,17 +1,20 @@ <html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers" data-namespace-typo3-fluid="true"> +<f:layout name="Widget/Widget" /> +<f:section name="main"> -<div class="widget-content-main"> - <f:if condition="{icon}"> - <div class="widget-number-icon"> - <core:icon identifier="{icon}" size="large" alternativeMarkupIdentifier="inline" /> - </div> - </f:if> - <div class="widget-number-content"> - <div class="widget-number-title">{title}</div> - <f:if condition="{subtitle}"> - <div class="widget-number-subtitle"><small>{subtitle}</small></div> + <div class="widget-number"> + <f:if condition="{icon}"> + <div class="widget-number-icon"> + <core:icon identifier="{icon}" size="large" alternativeMarkupIdentifier="inline" /> + </div> </f:if> - <div class="widget-number-number">{number}</div> + <div class="widget-number-content"> + <div class="widget-number-title">{title}</div> + <f:if condition="{subtitle}"> + <div class="widget-number-subtitle"><small>{subtitle}</small></div> + </f:if> + <div class="widget-number-number">{number}</div> + </div> </div> -</div> -</html> + +</f:section> diff --git a/typo3/sysext/dashboard/Resources/Private/Templates/Widget/RssWidget.html b/typo3/sysext/dashboard/Resources/Private/Templates/Widget/RssWidget.html index b367a3fc797a..5dd79fb931a1 100644 --- a/typo3/sysext/dashboard/Resources/Private/Templates/Widget/RssWidget.html +++ b/typo3/sysext/dashboard/Resources/Private/Templates/Widget/RssWidget.html @@ -19,7 +19,7 @@ </f:section> <f:section name="footer"> - <f:if condition="moreItemsLink"> + <f:if condition="{moreItemsLink}"> <f:link.typolink parameter="{moreItemsLink}" target="_blank" class="widget-cta"> <f:translate key="{moreItemsText}" default="{moreItemsText}"/> </f:link.typolink> diff --git a/typo3/sysext/dashboard/Resources/Private/Templates/Widget/T3GeneralInformation.html b/typo3/sysext/dashboard/Resources/Private/Templates/Widget/T3GeneralInformation.html index 83a8b1d40d7f..1f41afa2f135 100644 --- a/typo3/sysext/dashboard/Resources/Private/Templates/Widget/T3GeneralInformation.html +++ b/typo3/sysext/dashboard/Resources/Private/Templates/Widget/T3GeneralInformation.html @@ -4,14 +4,16 @@ <div class="row"> <div class="col-sm-8"> - <p> - {f:translate(key: 'LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:cms_description', - arguments: '{ - 0: currentVersion, - 1: "© {copyrightYear}", - 2: "Kasper Skårhøj" - }') -> f:format.raw()} - </p> + <f:if condition="{currentVersion} && {copyrightYear}"> + <p> + {f:translate(key: 'LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:cms_description', + arguments: '{ + 0: currentVersion, + 1: "© {copyrightYear}", + 2: "Kasper Skårhøj" + }') -> f:format.raw()} + </p> + </f:if> </div> <div class="col-sm-4"> <img src="{f:uri.resource(path: 'Images/typo3_orange.svg', extensionName: 'backend')}" diff --git a/typo3/sysext/dashboard/Resources/Public/Css/dashboard.css b/typo3/sysext/dashboard/Resources/Public/Css/dashboard.css index d906339b077b..8d79f154f43c 100644 --- a/typo3/sysext/dashboard/Resources/Public/Css/dashboard.css +++ b/typo3/sysext/dashboard/Resources/Public/Css/dashboard.css @@ -10,4 +10,4 @@ * * The TYPO3 project - inspiring people to share! */ -.module.module{background-color:#eaeaea}.module.module h1{line-height:calc(48 / 32);margin-bottom:20px;font-weight:900;font-size:32px}.dashboard-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;margin:-24px -24px 24px;padding:24px 24px 0;background:#dadada;border-bottom:1px solid #cdcdcd}.dashboard-tabs{display:flex;flex-wrap:wrap;align-items:center}.dashboard-tab{border-radius:5px 5px 0 0;display:inline-block;padding:12px;margin-right:2px;background:#bababa;color:#000}.dashboard-tab:focus,.dashboard-tab:hover{text-decoration:none;background:#adadad;color:#000}.dashboard-tab--active{background:#ff8700;color:#fff}.dashboard-tab--active:focus,.dashboard-tab--active:hover{text-decoration:none;background:#e67a00;color:#f2f2f2}.dashboard-button-tab-add{margin:5px}.dashboard-configuration{padding:10px 0}.dashboard-configuration-button{margin-left:10px;color:#737373;text-decoration:none}.dashboard-configuration-button:focus,.dashboard-configuration-button:hover{color:#ff8700;text-decoration:none}.dashboard-configuration-button:active{color:#000;text-decoration:none}.dashboard-empty{position:relative}.dashboard-empty-content{background-color:rgba(0,0,0,.05);border:2px dashed rgba(0,0,0,.15);padding:2.5em;text-align:center}.dashboard-empty-content h3{font-size:1.5em;margin-bottom:.5em}.dashboard-empty-content p{font-size:1.25em;margin-bottom:1em}.dashboard-empty-content>:first-child{margin-top:0}.dashboard-empty-content>:last-child{margin-bottom:0}.dashboard-grid{position:relative;margin-right:-10px;margin-left:-10px}.dashboard-item{position:absolute;z-index:1;padding:10px;width:100%;height:auto}@media screen and (min-width:750px){.dashboard-item{width:50%;height:200px}}@media screen and (min-width:1285px){.dashboard-item{width:25%}}.dashboard-item.muuri-item-positioning{z-index:2}.dashboard-item.muuri-item-positioning .widget-remove{display:none}.dashboard-item.muuri-item-placeholder{z-index:2;margin:0;opacity:.5}.dashboard-item.muuri-item-placeholder .widget{border:1px dashed #737373}.dashboard-item.muuri-item-placeholder .widget-remove{display:none}.dashboard-item.muuri-item-dragging,.dashboard-item.muuri-item-releasing{z-index:9999}.dashboard-item.muuri-item-releasing .widget-remove{display:none}.dashboard-item.muuri-item-dragging{cursor:move}.dashboard-item.muuri-item-hidden{z-index:0}.dashboard-item.widget-waiting{line-height:200px}.dashboard-item--enableSelect{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}@media screen and (min-width:750px){.dashboard-item--h4{height:400px}}@media screen and (min-width:750px){.dashboard-item--h6{height:600px}}.dashboard-item--w4{width:100%}@media screen and (min-width:1285px){.dashboard-item--w4{width:50%}}.dashboard-item-content{position:relative;width:100%;height:100%}.dashboard-button{display:inline-flex;align-items:center;border-radius:3px;background:#313131;color:#fff;padding:8px;text-decoration:none}.dashboard-button:focus,.dashboard-button:hover{text-decoration:none;background:#ff8700;color:#fff}.dashboard-button .dashboard-button-icon .icon{display:block}.dashboard-button .dashboard-button-icon+.dashboard-button-text{margin-left:.25em;margin-right:.25em}.dashboard-button-add{position:fixed;padding:16px;right:24px;bottom:24px;z-index:2}.widget{height:100%;border-radius:2px;overflow:hidden;background-color:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,.15);color:#000}.widget:hover .widget-actions{opacity:1}.widget-content{display:flex;flex-direction:column;height:100%}.widget-content-title{padding:10px 20px;padding-right:76px;border-bottom:1px solid #d7d7d7;font-family:"Source Sans Pro",sans-serif;font-size:16px;font-weight:700;line-height:1.25}.widget-content-title span{overflow:hidden;display:block;white-space:nowrap;text-overflow:ellipsis}.widget-content-main{display:flex;flex-grow:1;overflow-y:auto;padding:20px}.widget-content-footer{padding:20px;padding-top:0}.widget-actions{position:absolute;display:flex;top:calc(((16px * 1.25)/ 2) + (20px / 2));right:10px;transform:translate(0,-50%);opacity:0;transition:opacity .2s ease-in-out}.widget-action{width:28px;height:28px;position:relative;color:#737373;text-align:center}.widget-action:focus,.widget-action:hover{color:#ff8700}.widget-action .icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.widget-action-move{cursor:-webkit-grab;cursor:grab}.widget-waiting{position:absolute;top:50%;left:50%;line-height:300px;margin-right:-50%;transform:translate(-50%,-50%)}.widget-error{padding:20px;position:absolute;top:50%;text-align:center;transform:translateY(-50%);color:#c83c3c}.widget-chart{width:100%;height:100%}.widget-edit{width:45px;text-align:center}.widget-editIcon{color:#000}.widget-editIcon:focus,.widget-editIcon:hover{color:#ff8700}.widget-table{width:100%;color:#000}.widget-table thead tr{background-color:transparent}.widget-table tr:nth-child(odd){background-color:transparent}.widget-table tr:nth-child(even){background-color:#f2f2f2}.widget-table tbody td,.widget-table tbody th{border-top:1px solid #e0e0e0}.widget-table tbody:first-child tr:first-child td,.widget-table tbody:first-child tr:first-child th{border-top:none}.widget-table td,.widget-table th{padding:10px}.widget-table td>:first-child,.widget-table th>:first-child{margin-top:0}.widget-table td>:last-child,.widget-table th>:last-child{margin-bottom:0}.widget-table th{font-weight:700}.widget-content-main .widget-table-wrapper{margin-top:-10px;margin-left:-20px;margin-right:-20px}.widget-content-main .widget-table-wrapper td:first-child,.widget-content-main .widget-table-wrapper th:first-child{padding-left:20px}.widget-content-main .widget-table-wrapper td:last-child,.widget-content-main .widget-table-wrapper th:last-child{padding-right:20px}.widget-cta{display:flex;justify-content:center;align-items:center;background-color:#313131;color:#fff;border-radius:3px;padding:8px}.widget-cta:focus,.widget-cta:hover{text-decoration:none;background:#ff8700;color:#fff}.widget-cta-icon{display:flex;justify-content:center;align-items:center;width:18px;height:18px;margin-right:12px;color:#fff}.widget-doughnut--value{line-height:1.3;font-weight:900;font-size:36px;text-align:center}.widget-doughnut--meta{margin-top:10px;font-style:italic;color:#737373;text-align:center}.widget-number-icon{display:flex;justify-content:center;align-items:center;width:42px;margin-right:20px;color:#000}.widget-number-content{display:flex;flex-direction:column;justify-content:center}.widget-number-title{line-height:1.3;margin-bottom:5px;font-size:16px;color:#000}.widget-number-number{line-height:1.3;font-weight:900;font-size:24px} \ No newline at end of file +.module.module{background-color:#eaeaea}.module.module h1{line-height:calc(48 / 32);margin-bottom:20px;font-weight:900;font-size:32px}.dashboard-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;margin:-24px -24px 24px;padding:24px 24px 0;background:#dadada;border-bottom:1px solid #cdcdcd}.dashboard-tabs{display:flex;flex-wrap:wrap;align-items:center}.dashboard-tab{border-radius:5px 5px 0 0;display:inline-block;padding:12px;margin-right:2px;background:#bababa;color:#000}.dashboard-tab:focus,.dashboard-tab:hover{text-decoration:none;background:#adadad;color:#000}.dashboard-tab--active{background:#ff8700;color:#fff}.dashboard-tab--active:focus,.dashboard-tab--active:hover{text-decoration:none;background:#e67a00;color:#f2f2f2}.dashboard-button-tab-add{margin:5px}.dashboard-configuration{padding:10px 0}.dashboard-configuration-button{margin-left:10px;color:#737373;text-decoration:none}.dashboard-configuration-button:focus,.dashboard-configuration-button:hover{color:#ff8700;text-decoration:none}.dashboard-configuration-button:active{color:#000;text-decoration:none}.dashboard-empty{position:relative}.dashboard-empty-content{background-color:rgba(0,0,0,.05);border:2px dashed rgba(0,0,0,.15);padding:2.5em;text-align:center}.dashboard-empty-content h3{font-size:1.5em;margin-bottom:.5em}.dashboard-empty-content p{font-size:1.25em;margin-bottom:1em}.dashboard-empty-content>:first-child{margin-top:0}.dashboard-empty-content>:last-child{margin-bottom:0}.dashboard-grid{position:relative;margin-right:-10px;margin-left:-10px}.dashboard-item{position:absolute;z-index:1;padding:10px;width:100%;height:auto}@media screen and (min-width:750px){.dashboard-item{width:50%;height:200px}}@media screen and (min-width:1285px){.dashboard-item{width:25%}}.dashboard-item.muuri-item-positioning{z-index:2}.dashboard-item.muuri-item-positioning .widget-remove{display:none}.dashboard-item.muuri-item-placeholder{z-index:2;margin:0;opacity:.5}.dashboard-item.muuri-item-placeholder .widget{border:1px dashed #737373}.dashboard-item.muuri-item-placeholder .widget-remove{display:none}.dashboard-item.muuri-item-dragging,.dashboard-item.muuri-item-releasing{z-index:9999}.dashboard-item.muuri-item-releasing .widget-remove{display:none}.dashboard-item.muuri-item-dragging{cursor:move}.dashboard-item.muuri-item-hidden{z-index:0}.dashboard-item.widget-waiting{line-height:200px}.dashboard-item--enableSelect{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}@media screen and (min-width:750px){.dashboard-item--h4{height:400px}}@media screen and (min-width:750px){.dashboard-item--h6{height:600px}}.dashboard-item--w4{width:100%}@media screen and (min-width:1285px){.dashboard-item--w4{width:50%}}.dashboard-item-content{position:relative;width:100%;height:100%}.dashboard-button{display:inline-flex;align-items:center;border-radius:3px;background:#313131;color:#fff;padding:8px;text-decoration:none}.dashboard-button:focus,.dashboard-button:hover{text-decoration:none;background:#ff8700;color:#fff}.dashboard-button .dashboard-button-icon .icon{display:block}.dashboard-button .dashboard-button-icon+.dashboard-button-text{margin-left:.25em;margin-right:.25em}.dashboard-button-add{position:fixed;padding:16px;right:24px;bottom:24px;z-index:2}.widget{height:100%;border-radius:2px;overflow:hidden;background-color:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,.15);color:#000}.widget:hover .widget-actions{opacity:1}.widget-content{display:flex;flex-direction:column;height:100%}.widget-content-title{padding:10px 20px;padding-right:76px;border-bottom:1px solid #d7d7d7;font-family:"Source Sans Pro",sans-serif;font-size:16px;font-weight:700;line-height:1.25}.widget-content-title span{overflow:hidden;display:block;white-space:nowrap;text-overflow:ellipsis}.widget-content-main{flex-grow:1;overflow-y:auto;padding:20px}.widget-content-footer{padding:20px;padding-top:0}.widget-actions{position:absolute;display:flex;top:calc(((16px * 1.25)/ 2) + (20px / 2));right:10px;transform:translate(0,-50%);opacity:0;transition:opacity .2s ease-in-out}.widget-action{width:28px;height:28px;position:relative;color:#737373;text-align:center}.widget-action:focus,.widget-action:hover{color:#ff8700}.widget-action .icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.widget-action-move{cursor:-webkit-grab;cursor:grab}.widget-waiting{position:absolute;top:50%;left:50%;line-height:300px;margin-right:-50%;transform:translate(-50%,-50%)}.widget-error{padding:20px;position:absolute;top:50%;text-align:center;transform:translateY(-50%);color:#c83c3c}.widget-chart{width:100%;height:100%}.widget-edit{width:45px;text-align:center}.widget-editIcon{color:#000}.widget-editIcon:focus,.widget-editIcon:hover{color:#ff8700}.widget-table{width:100%;color:#000}.widget-table thead tr{background-color:transparent}.widget-table tr:nth-child(odd){background-color:transparent}.widget-table tr:nth-child(even){background-color:#f2f2f2}.widget-table tbody td,.widget-table tbody th{border-top:1px solid #e0e0e0}.widget-table tbody:first-child tr:first-child td,.widget-table tbody:first-child tr:first-child th{border-top:none}.widget-table td,.widget-table th{padding:10px}.widget-table td>:first-child,.widget-table th>:first-child{margin-top:0}.widget-table td>:last-child,.widget-table th>:last-child{margin-bottom:0}.widget-table th{font-weight:700}.widget-content-main .widget-table-wrapper{margin-top:-10px;margin-left:-20px;margin-right:-20px}.widget-content-main .widget-table-wrapper td:first-child,.widget-content-main .widget-table-wrapper th:first-child{padding-left:20px}.widget-content-main .widget-table-wrapper td:last-child,.widget-content-main .widget-table-wrapper th:last-child{padding-right:20px}.widget-cta{display:flex;justify-content:center;align-items:center;background-color:#313131;color:#fff;border-radius:3px;padding:8px}.widget-cta:focus,.widget-cta:hover{text-decoration:none;background:#ff8700;color:#fff}.widget-cta-icon{display:flex;justify-content:center;align-items:center;width:18px;height:18px;margin-right:12px;color:#fff}.widget-doughnut--value{line-height:1.3;font-weight:900;font-size:36px;text-align:center}.widget-doughnut--meta{margin-top:10px;font-style:italic;color:#737373;text-align:center}.widget-number{height:100%;display:flex;align-items:center}.widget-number-icon{display:flex;align-items:center;width:42px;margin-right:20px;color:#000}.widget-number-content{display:flex;flex-direction:column;justify-content:center}.widget-number-title{line-height:1.3;margin-bottom:5px;font-size:16px;color:#000}.widget-number-number{line-height:1.3;font-weight:900;font-size:24px} \ No newline at end of file -- GitLab