mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
- apply border correctly to 2 button mode in iOS - radio: position icon correctly (fixes #16295) - checkbox: position icon correctly - remove scrollbar with radio/checkbox - updates e2e test to include rtl https://screenshot.ionicframework.com/5447404/d8bad6a references #17012
113 lines
2.9 KiB
SCSS
113 lines
2.9 KiB
SCSS
|
|
// String Util Functions
|
|
// --------------------------------------------------
|
|
|
|
// String Replace Function
|
|
// --------------------------------------------------
|
|
|
|
@function str-replace($string, $search, $replace: "") {
|
|
$index: str-index($string, $search);
|
|
|
|
@if $index {
|
|
@return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
|
|
}
|
|
|
|
@return $string;
|
|
}
|
|
|
|
// String Split Function
|
|
// --------------------------------------------------
|
|
|
|
@function str-split($string, $separator) {
|
|
// empty array/list
|
|
$split-arr: ();
|
|
// first index of separator in string
|
|
$index: str-index($string, $separator);
|
|
// loop through string
|
|
@while $index != null {
|
|
// get the substring from the first character to the separator
|
|
$item: str-slice($string, 1, $index - 1);
|
|
// push item to array
|
|
$split-arr: append($split-arr, $item);
|
|
// remove item and separator from string
|
|
$string: str-slice($string, $index + 1);
|
|
// find new index of separator
|
|
$index: str-index($string, $separator);
|
|
}
|
|
// add the remaining string to list (the last item)
|
|
$split-arr: append($split-arr, $string);
|
|
|
|
@return $split-arr;
|
|
}
|
|
|
|
|
|
// Str Extract Function
|
|
// --------------------------------------------------
|
|
|
|
@function str-extract($string, $start, $end) {
|
|
$start-index: str-index($string, $start);
|
|
|
|
@if $start-index {
|
|
$post: str-slice($string, $start-index + str-length($start));
|
|
$end-index: str-index($post, $end);
|
|
|
|
@if $end-index {
|
|
@return str-slice($post, 1, $end-index - 1);
|
|
}
|
|
}
|
|
|
|
@return null;
|
|
}
|
|
|
|
|
|
// Str Contains Function
|
|
// --------------------------------------------------
|
|
|
|
@function str-contains($string, $needle) {
|
|
@if (type-of($string) == string) {
|
|
@return str-index($string, $needle) != null;
|
|
}
|
|
|
|
@return false;
|
|
}
|
|
|
|
|
|
// URL Encode Function
|
|
// --------------------------------------------------
|
|
|
|
@function url-encode($val) {
|
|
$spaces: str-replace($val, " ", "%20");
|
|
$encoded: str-replace($spaces, "#", "%23");
|
|
@return $encoded;
|
|
}
|
|
|
|
|
|
// Add Selector
|
|
// --------------------------------------------------
|
|
// Used to cleanly add selectors to :host and :host()
|
|
|
|
@function add-root-selector($root, $addHostSelector, $shadowDom: false) {
|
|
$selectors: str-split($root, ",");
|
|
|
|
$list: ();
|
|
|
|
@each $selector in $selectors {
|
|
@if str-contains($selector, ":host(") {
|
|
$updated-host: str-replace($selector, ":host(", ":host(#{$addHostSelector}");
|
|
$list: append($list, $updated-host, comma);
|
|
|
|
} @else if str-contains($selector, ":host") {
|
|
$list: append($list, ":host(#{$addHostSelector}) + b", comma);
|
|
|
|
} @else if $shadowDom == true {
|
|
$list: append($list, ":host(#{$addHostSelector}) #{$selector}", comma);
|
|
|
|
} @else {
|
|
// TODO host-context should be for scoped only
|
|
$list: append($list, ":host-context(#{$addHostSelector}) #{$selector}", comma);
|
|
}
|
|
}
|
|
|
|
@return $list;
|
|
}
|