Download plugins/CoreVisualizations/vue/src/MetricsPicker/MetricsPicker.less from Leon4gr45/matomo: direct link, hf CLI and curl.
- Browser
- Download file 6.7 kB
-
https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/CoreVisualizations/vue/src/MetricsPicker/MetricsPicker.less
- Command line
-
hf download hf://spaces/Leon4gr45/matomo/plugins/CoreVisualizations/vue/src/MetricsPicker/MetricsPicker.less
-
curl -L -o MetricsPicker.less https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/CoreVisualizations/vue/src/MetricsPicker/MetricsPicker.less
6.7 kB
| .metrics-picker { | |
| // Declared inside the selector so they stay scoped to .metrics-picker. | |
| @_dropdown-shadow: ~"0 10px 40px 0 #A5B1CA4D, 0 0 3px 0 #A5B1CA4D"; | |
| @_dropdown-shadow-dark: ~"0 10px 40px 0 #00000080, 0 0 3px 0 #00000080"; | |
| // 1px solid — shared by the toggle/dropdown/checkbox borders and the focus outline | |
| @_border-stroke: ~"1px solid"; | |
| @_border: ~"@{_border-stroke} @{theme-color-border-alternative}"; | |
| // hover, and focus states | |
| @_accent-color: @theme-color-focus-ring; | |
| @_option-hover-bg: @theme-color-background-base; | |
| // checked state | |
| @_checked-color: @theme-color-new-brand; | |
| @_border-radius: 8px; | |
| @_checkbox-size: 18px; | |
| @_checkbox-border-radius: 6px; | |
| @_text-size: 14px; | |
| @_text-line-height: 20px; | |
| display: inline-block; | |
| position: relative; | |
| // In a narrow legend footer the picker stacks onto its own full-width row, so the | |
| // component stretches to fill it. The inline-block wrapper around this component is | |
| // widened separately in dataTableVisualizations.less (it lives outside this component). | |
| .jqplot-legend-footer.is-narrow & { | |
| width: 100%; | |
| } | |
| .metrics-picker__toggle { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 10px 16px; | |
| background: @theme-color-background-contrast; | |
| color: @theme-color-text; | |
| border: @_border; | |
| border-radius: @_border-radius; | |
| font-size: @_text-size; | |
| line-height: @_text-line-height; | |
| cursor: pointer; | |
| height: 38px; | |
| &:hover, &:focus-visible { | |
| border-color: @_accent-color; | |
| } | |
| &:focus-visible { | |
| outline: @_border-stroke @_accent-color; | |
| } | |
| &:focus, &:hover { | |
| outline: none; | |
| } | |
| // In a narrow legend footer the toggle fills its full-width row and centres its label. | |
| .jqplot-legend-footer.is-narrow & { | |
| width: 100%; | |
| justify-content: center; | |
| } | |
| } | |
| .metrics-picker__toggle-label { | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| min-width: 0; // the important one — see below | |
| } | |
| .metrics-picker__chevron { | |
| font-size: 12px; | |
| transition: transform .15s ease; | |
| flex: none; // keep the chevron from being squashed | |
| } | |
| &.expanded .metrics-picker__chevron { | |
| transform: rotate(180deg); | |
| } | |
| .metrics-picker__dropdown { | |
| display: none; | |
| position: absolute; | |
| top: 100%; | |
| margin-top: 8px; | |
| left: 0; | |
| z-index: 1010; /* must be above ui dialog, matches series picker popover */ | |
| overflow-y: auto; | |
| padding: 8px; | |
| /* the legend footer lives inside .dataTableFeatures (text-align: center) - | |
| reset so the metric checkboxes align to the left */ | |
| text-align: left; | |
| background: @theme-color-background-contrast; | |
| border: @_border; | |
| border-radius: @_border-radius; | |
| box-shadow: @_dropdown-shadow; | |
| .inDarkMode({ | |
| box-shadow: @_dropdown-shadow-dark; | |
| }) | |
| } | |
| &.expanded .metrics-picker__dropdown { | |
| display: block; | |
| width: 254px; | |
| } | |
| .metrics-picker__column, | |
| .metrics-picker__row { | |
| padding: 2px 8px; | |
| cursor: pointer; | |
| } | |
| .metrics-picker__label { | |
| display: flex; | |
| align-items: flex-start; | |
| min-height: 32px; | |
| color: @theme-color-text-lighter; | |
| border-radius: 5px; | |
| } | |
| // hover just tints the option's background | |
| .metrics-picker__label:hover { | |
| background-color: @_option-hover-bg; | |
| } | |
| // keyboard navigation also draws a focus ring (the real radio/checkbox is visually | |
| // hidden by .filled-in, so the affordance lives on the option itself) | |
| .metrics-picker__label:has(input:focus-visible) { | |
| background-color: @_option-hover-bg; | |
| outline: 2px solid @_accent-color; | |
| outline-offset: 0; | |
| } | |
| // Materialize gives both the checkbox and radio "+ span" a padding-left: 35px; reset it | |
| // to a compact box so the marker sits tight against the title in either select mode. | |
| [type="checkbox"] + span:not(.lever), | |
| [type="radio"] + span:not(.lever) { | |
| width: @_checkbox-size; | |
| height: @_checkbox-size; | |
| padding: 0; | |
| margin-top: 4px; | |
| } | |
| .metrics-picker__title { | |
| font-size: @_text-size; | |
| line-height: @_text-line-height; | |
| margin-left: 8px; | |
| overflow-wrap: anywhere; | |
| word-break: break-word; | |
| margin-top: 3px; | |
| } | |
| [type="checkbox"].filled-in:checked + span:not(.lever)::after { | |
| border-color: @_checked-color; | |
| background-color: @_checked-color; | |
| } | |
| // The check | |
| [type="checkbox"].filled-in:checked + span:not(.lever)::before { | |
| border-right-color: @color-white; | |
| border-bottom-color: @color-white; | |
| width: 7px; | |
| height: 10px; | |
| } | |
| [type="checkbox"].filled-in:not(:checked) + span:not(.lever)::after { | |
| border: @_border; | |
| } | |
| /* compact 18px box with rounded corners (Materialize defaults to 20px / 2px) */ | |
| [type="checkbox"].filled-in:checked + span:not(.lever)::after, | |
| [type="checkbox"].filled-in:not(:checked) + span:not(.lever)::after { | |
| width: @_checkbox-size; | |
| height: @_checkbox-size; | |
| border-radius: @_checkbox-border-radius; | |
| } | |
| // Radio marker — match the checkbox box: a 18px circle aligned to the same top-left | |
| // origin (Materialize insets the circle by margin: 4px and sizes it 16px), with the | |
| // same border colour when empty and accent fill when selected. | |
| [type="radio"] + span:not(.lever)::before, | |
| [type="radio"] + span:not(.lever)::after { | |
| margin: 0; | |
| width: @_checkbox-size; | |
| height: @_checkbox-size; | |
| } | |
| [type="radio"]:not(:checked) + span:not(.lever)::before { | |
| border: @_border; | |
| } | |
| [type="radio"]:checked + span:not(.lever)::after { | |
| border-color: @_checked-color; | |
| background-color: @_checked-color; | |
| } | |
| // The option's focus affordance is the label outline (see | |
| // .metrics-picker__label:has(input:focus-visible)). Neutralise Materialize's per-marker | |
| // focus styling — the 10px halo, grey/secondary fill and squared corners it adds on | |
| // .tabbed:focus — so the box/circle looks identical whether focused or not. | |
| [type="checkbox"].filled-in.tabbed:focus + span:not(.lever)::after, | |
| [type="radio"].tabbed:focus + span:not(.lever)::before { | |
| box-shadow: none; | |
| } | |
| [type="checkbox"].filled-in:not(:checked).tabbed:focus + span:not(.lever)::after { | |
| border: @_border; | |
| border-radius: @_checkbox-border-radius; | |
| background-color: transparent; | |
| } | |
| [type="checkbox"].filled-in:checked.tabbed:focus + span:not(.lever)::after { | |
| border-color: @_checked-color; | |
| background-color: @_checked-color; | |
| border-radius: @_checkbox-border-radius; | |
| } | |
| .metrics-picker__headline { | |
| margin: 0; // reset the default <p> margin | |
| padding: 10px 16px 4px; | |
| font-weight: bold; | |
| font-size: 12px; | |
| color: @theme-color-text-light; | |
| } | |
| } | |