UNPKG

@jupyter/web-components

Version:

A component library for building extensions in Jupyter frontends.

182 lines (176 loc) 5.83 kB
// Copyright (c) Jupyter Development Team. // Copyright (c) Microsoft Corporation. // Distributed under the terms of the Modified BSD License. import { css } from '@microsoft/fast-element'; import { disabledCursor, display, focusVisible, forcedColorsStylesheetBehavior } from '@microsoft/fast-foundation'; import { SystemColors } from '@microsoft/fast-web-utilities'; import { accentFillFocus, accentForegroundRest, controlCornerRadius, designUnit, disabledOpacity, errorFillFocus, errorFillRest, fillColor, focusStrokeWidth, neutralForegroundRest, neutralStrokeHover, neutralStrokeRest } from '../design-tokens.js'; import { DirectionalStyleSheetBehavior, heightNumber } from '../styles/index.js'; const ltr = css ` .track-start { left: 0; } `; const rtl = css ` .track-start { right: 0; } `; /** * Styles for Slider * @public */ export const sliderStyles = (context, definition) => css ` :host([hidden]) { display: none; } ${display('inline-grid')} :host { --thumb-size: calc(${heightNumber} * 0.5 - ${designUnit}); --thumb-translate: calc( var(--thumb-size) * -0.5 + var(--track-width) / 2 ); --track-overhang: calc((${designUnit} / 2) * -1); --track-width: ${designUnit}; --jp-slider-height: calc(var(--thumb-size) * 10); align-items: center; width: 100%; margin: calc(${designUnit} * 1px) 0; user-select: none; box-sizing: border-box; border-radius: calc(${controlCornerRadius} * 1px); outline: none; cursor: pointer; } :host([orientation='horizontal']) .positioning-region { position: relative; margin: 0 8px; display: grid; grid-template-rows: calc(var(--thumb-size) * 1px) 1fr; } :host([orientation='vertical']) .positioning-region { position: relative; margin: 0 8px; display: grid; height: 100%; grid-template-columns: calc(var(--thumb-size) * 1px) 1fr; } :host(:${focusVisible}) .thumb-cursor { box-shadow: 0 0 0 2px ${fillColor}, 0 0 0 calc((2 + ${focusStrokeWidth}) * 1px) ${accentFillFocus}; } :host([aria-invalid='true']:${focusVisible}) .thumb-cursor { box-shadow: 0 0 0 2px ${fillColor}, 0 0 0 calc((2 + ${focusStrokeWidth}) * 1px) ${errorFillFocus}; } .thumb-container { position: absolute; height: calc(var(--thumb-size) * 1px); width: calc(var(--thumb-size) * 1px); transition: all 0.2s ease; color: ${neutralForegroundRest}; fill: currentcolor; } .thumb-cursor { border: none; width: calc(var(--thumb-size) * 1px); height: calc(var(--thumb-size) * 1px); background: ${neutralForegroundRest}; border-radius: calc(${controlCornerRadius} * 1px); } .thumb-cursor:hover { background: ${neutralForegroundRest}; border-color: ${neutralStrokeHover}; } .thumb-cursor:active { background: ${neutralForegroundRest}; } .track-start { background: ${accentForegroundRest}; position: absolute; height: 100%; left: 0; border-radius: calc(${controlCornerRadius} * 1px); } :host([aria-invalid='true']) .track-start { background-color: ${errorFillRest}; } :host([orientation='horizontal']) .thumb-container { transform: translateX(calc(var(--thumb-size) * 0.5px)) translateY(calc(var(--thumb-translate) * 1px)); } :host([orientation='vertical']) .thumb-container { transform: translateX(calc(var(--thumb-translate) * 1px)) translateY(calc(var(--thumb-size) * 0.5px)); } :host([orientation='horizontal']) { min-width: calc(var(--thumb-size) * 1px); } :host([orientation='horizontal']) .track { right: calc(var(--track-overhang) * 1px); left: calc(var(--track-overhang) * 1px); align-self: start; height: calc(var(--track-width) * 1px); } :host([orientation='vertical']) .track { top: calc(var(--track-overhang) * 1px); bottom: calc(var(--track-overhang) * 1px); width: calc(var(--track-width) * 1px); height: 100%; } .track { background: ${neutralStrokeRest}; position: absolute; border-radius: calc(${controlCornerRadius} * 1px); } :host([orientation='vertical']) { height: calc(var(--fast-slider-height) * 1px); min-height: calc(var(--thumb-size) * 1px); min-width: calc(${designUnit} * 20px); } :host([orientation='vertical']) .track-start { height: auto; width: 100%; top: 0; } :host([disabled]), :host([readonly]) { cursor: ${disabledCursor}; } :host([disabled]) { opacity: ${disabledOpacity}; } `.withBehaviors(new DirectionalStyleSheetBehavior(ltr, rtl), forcedColorsStylesheetBehavior(css ` .thumb-cursor { forced-color-adjust: none; border-color: ${SystemColors.FieldText}; background: ${SystemColors.FieldText}; } .thumb-cursor:hover, .thumb-cursor:active { background: ${SystemColors.Highlight}; } .track { forced-color-adjust: none; background: ${SystemColors.FieldText}; } :host(:${focusVisible}) .thumb-cursor { border-color: ${SystemColors.Highlight}; } :host([disabled]) { opacity: 1; } :host([disabled]) .track, :host([disabled]) .thumb-cursor { forced-color-adjust: none; background: ${SystemColors.GrayText}; } :host(:${focusVisible}) .thumb-cursor { background: ${SystemColors.Highlight}; border-color: ${SystemColors.Highlight}; box-shadow: 0 0 0 2px ${SystemColors.Field}, 0 0 0 4px ${SystemColors.FieldText}; } `));