diff --git a/assets/linting.css b/assets/linting.css index c399c6a..9d87f3b 100644 --- a/assets/linting.css +++ b/assets/linting.css @@ -36,4 +36,68 @@ .cl-icon-info { --icon-bg-color: var(--cl-color-info); +} + +.cl-overlay { + z-index: 500; +} + +.cl-overlay:hover { + z-index: 1000; +} + +.cl-dropdown { + position: relative; +} + +.cl-dropdown-menu { + position: absolute; + top: 18px; + left: 5px; + padding: 5px; +} + +.cl-dropdown-menu { + display: none; +} + +.cl-dropdown:hover .cl-dropdown-menu, +.cl-dropdown.open .cl-dropdown-menu { + display: block; +} + +.cl-reports { + padding: 8px; + margin: 0; + list-style: none; + + color: var(--cl-font-color); + font-family: var(--cl-font-family); + font-size: var(--cl-font-size); + background: var(--color-grey-225-10-97); + border: solid 1px var(--color-grey-225-10-75); + border-radius: 2px; + + width: max-content; + max-width: 300px; +} + +.cl-report { + display: flex; + align-items: flex-start; + justify-items: stretch; +} + +.cl-report .cl-icon { + flex: none; + + margin-top: .095em; + margin-right: .5em; + + height: 1em; + width: 1em; + + color: var(--icon-bg-color); + background: transparent; + border: none; } \ No newline at end of file diff --git a/lib/modeler/LintingAnnotations.js b/lib/modeler/LintingAnnotations.js index 9275df8..4528dba 100644 --- a/lib/modeler/LintingAnnotations.js +++ b/lib/modeler/LintingAnnotations.js @@ -44,8 +44,8 @@ export default class LintingAnnotations { renderOverlay(html, { reports, - onClick: () => { - this._eventBus.fire('lintingAnnotations.click', { report: reports[ 0 ] }); + onClick: (report) => { + this._eventBus.fire('lintingAnnotations.click', { report }); } }); diff --git a/lib/modeler/OverlayComponent.js b/lib/modeler/OverlayComponent.js index 2308d03..d16e513 100644 --- a/lib/modeler/OverlayComponent.js +++ b/lib/modeler/OverlayComponent.js @@ -46,16 +46,47 @@ export function OverlayComponent(props) { : 'info'; return html` -
- ${ icons[category] } +
+
+ ${ icons[category] } +
+ +
+
    + ${ reports.map(report => html`<${ReportComponent} report=${ report } onClick=${ onClick } />`) } +
+
`; } +export function ReportComponent(props) { + + const { + report, + onClick + } = props; + + const { + category, + rule, + message + } = report; + + const handleClick = (event) => onClick(report); + + return html` +
  • +
    ${ icons[category] }
    + ${ message } +
  • + `; +} + export function renderOverlay(el, props) { return renderComponent(html`<${OverlayComponent} ...${props} />`, el); } \ No newline at end of file