Files
starface-outlook-sync-addin/node_modules/@fluentui/react/dist/sass/mixins/_General.Mixins.scss
T
Stefan Hacker 37ad745546 first commit
2026-04-03 09:38:48 +02:00

223 lines
6.1 KiB
SCSS

// Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE in the project root for license information.
//
// Office UI Fabric
// --------------------------------------------------
// Vendor-prefixed mixins
// Border radius.
@mixin ms-border-radius($radius: 5px) {
border-radius: $radius;
background-clip: padding-box;
}
// Drop shadow.
@mixin ms-drop-shadow($x-offset: 0, $y-offset: 0, $blur: 5px, $spread: 0, $alpha: 0.4) {
@include ms-box-shadow($x-offset, $y-offset $blur $spread rgba(0, 0, 0, $alpha));
}
// Background gradient.
@mixin ms-background-gradient($origin: left, $start: #000, $start-location: 0%, $stop: #FFF, $stop-location: 100%) {
// To maintain compatibility with the old arguments, reverse
// the $origin direction and set it as $destination.
$destination: null;
@if $origin == top {
$destination: bottom;
}
@if $origin == right {
$destination: left;
}
@if $origin == bottom {
$destination: top;
}
@if $origin == left {
$destination: right;
}
background-color: $start;
background-image: linear-gradient(to $destination, $start $start-location, $stop $stop-location);
}
// Rotation.
@mixin ms-rotate($degrees) {
@include ms-transform-rotate($degrees);
}
// Prevents user selection of text elements.
@mixin ms-user-select ($val) {
-webkit-touch-callout: $val;
-webkit-user-select: $val;
-khtml-user-select: $val;
-moz-user-select: $val;
-ms-user-select: $val;
user-select: $val;
}
// Prevents the text within a block element from wrapping to second line.
@mixin ms-no-wrap() {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
// Flexbox
@mixin ms-flex-box() {
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
}
@mixin ms-alignItems($mode) {
-webkit-box-align: $mode;
-moz-box-align: $mode;
-ms-flex-align: $mode;
-webkit-align-items: $mode;
align-items: $mode;
}
// Base/wrapper component to set typography throughout the app.
@mixin ms-Fabric {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
@include ms-inherit-font-family();
color: $ms-color-neutralPrimary;
font-family: $ms-font-family-west-european;
font-size: $ms-font-size-m;
}
// Set the font-family to 'inherit' for elements where the browser
// styles commonly conflict with the font-family that we want.
@mixin ms-inherit-font-family() {
button,
input,
textarea {
font-family: inherit;
}
}
// Overrides the browser's default focus outline style.
@mixin ms-focus-outline($inset: 0, $color: $ms-focus-border-color) {
// Only do this when it's a child of ms-Fabric in a focusVisible state.
.ms-Fabric.is-focusVisible &:focus {
outline: $ms-focus-border-width $ms-focus-border-style $color;
outline-offset: -$inset;
}
}
// Simulates a focus outline using an absolutely-positioned pseudo-element.
@mixin ms-focus-border($inset: 0, $color: $ms-focus-border-color) {
// Clear browser-specific focus styles and use 'transparent' as placeholder for focus style.
outline: transparent;
// Requirement because pseudo-element is absolutely positioned.
position: relative;
// Clear the focus border in Firefox.
// Reference: http://stackoverflow.com/a/199319/1436671
&::-moz-focus-inner {
border: 0;
}
// When the element that uses this mixin is in a :focus state, add a pseudo-element to
// create a border. Only do this when it's a child of ms-Fabric in a focusVisible state.
.ms-Fabric.is-focusVisible &:focus::after {
// Wrap the parent element with $padding.
content: '';
position: absolute;
top: $inset;
right: $inset;
bottom: $inset;
left: $inset;
// Add focus border of specified $color.
border: $ms-focus-border-width $ms-focus-border-style $color;
// Make the content not respond to mouse/touch events.
// Reference: https://css-tricks.com/almanac/properties/p/pointer-events/
pointer-events: none;
}
}
// The best box is a border box.
@mixin ms-borderBox {
box-sizing: border-box;
}
// For setting the border base width
@mixin ms-borderBase {
border: 1px solid;
}
// Ensures the block expands to the full height to enclose its floated childen.
@mixin ms-clearfix {
zoom: 1;
&::before,
&::after {
display: table;
content: '';
line-height: 0;
}
&::after {
clear: both;
}
}
// Basic border-box, margin, and padding reset.
@mixin ms-normalize {
@include ms-borderBox;
box-shadow: none;
margin: 0;
padding: 0;
}
// Generate text alignment classes, such as .ms-textAlignLeft
// @param [variable list] $alignments
@mixin ms-textAlign($alignments...) {
@warn 'The ms-textAlign mixin has been deprecated and will be removed in a future release of Fabric Core.';
@each $align in $alignments {
$alignStr: inspect($align);
.ms-textAlign#{to-upper-case(str-slice($alignStr, 1, 1)) + str-slice($alignStr, 2)} {
@include ms-text-align($align);
}
}
}
// To hide content while still making it readable by screen readers (Accessibility)
@mixin ms-screenReaderOnly {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0,0,0,0);
border: 0;
}
// To add truncation with ellipsis
@mixin ms-textTruncate {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-wrap: normal; // Fix for IE 8/9 in case 'word-wrap: break-word' is set on parent nodes
}
// To disable text wrapping
@mixin ms-noWrap {
white-space: nowrap;
}
// Replace or remove a portion of a string.
// Thanks to https://www.sassmeister.com/gist/1b4f2da5527830088e4d
@function ms-string-replace($string, $search, $replace: '') {
$index: str-index($string, $search);
@if $index {
@return str-slice($string, 1, $index - 1) + $replace + ms-string-replace(str-slice($string, $index + str-length($search)), $search, $replace);
}
@return $string;
}