Skip to content

Commit

Permalink
feat(rtl): support flipped svg background images on rtl (#11945)
Browse files Browse the repository at this point in the history
* feat(svg-background-image): support flipped on rtl

* feat(svg-background-image): add rtl for needed icons

* revert(svg-background-image): no need to flip clear

* fix(svg-background-image): translate to place

* fix(svg-background-image): add support for line and polygon
  • Loading branch information
AmitMY authored and brandyscarney committed Jun 9, 2017
1 parent 20c9dd7 commit f4452b5
Show file tree
Hide file tree
Showing 8 changed files with 53 additions and 14 deletions.
2 changes: 1 addition & 1 deletion src/components/item/item.ios.scss
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ $item-ios-sliding-content-background: $list-ios-background-color !default;
.item-ios[detail-push] .item-inner,
button.item-ios:not([detail-none]) .item-inner,
a.item-ios:not([detail-none]) .item-inner {
@include svg-background-image($item-ios-detail-push-svg);
@include svg-background-image($item-ios-detail-push-svg, true);
@include padding-horizontal(null, 32px);
@include background-position(end, $item-ios-padding-end - 2, center);

Expand Down
2 changes: 1 addition & 1 deletion src/components/item/item.md.scss
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ $item-md-sliding-content-background: $list-md-background-color !default;
.item-md[detail-push] .item-inner,
button.item-md:not([detail-none]) .item-inner,
a.item-md:not([detail-none]) .item-inner {
@include svg-background-image($item-md-detail-push-svg);
@include svg-background-image($item-md-detail-push-svg, true);
@include padding-horizontal(null, 32px);
@include background-position(end, $item-md-padding-end - 2, center);

Expand Down
2 changes: 1 addition & 1 deletion src/components/item/item.wp.scss
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ $item-wp-sliding-content-background: $list-wp-background-color !default;
.item-wp[detail-push] .item-inner,
button.item-wp:not([detail-none]) .item-inner,
a.item-wp:not([detail-none]) .item-inner {
@include svg-background-image($item-wp-detail-push-svg);
@include svg-background-image($item-wp-detail-push-svg, true);
@include padding-horizontal(null, 32px);
@include background-position(end, $item-wp-padding-end - 2, center);

Expand Down
2 changes: 1 addition & 1 deletion src/components/searchbar/searchbar.ios.scss
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ $searchbar-ios-toolbar-input-background: rgba(0, 0, 0, .08) !default;

@mixin ios-searchbar-icon($svg-icon, $fg-color) {
$svg: str-replace($svg-icon, 'fg-color', $fg-color);
@include svg-background-image($svg);
@include svg-background-image($svg, true);
}


Expand Down
2 changes: 1 addition & 1 deletion src/components/searchbar/searchbar.md.scss
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ $searchbar-md-input-clear-icon-size: 22px !default;

.searchbar-md .searchbar-search-icon {
@include position(11px, null, null, 16px);
@include svg-background-image($searchbar-md-input-search-icon-svg);
@include svg-background-image($searchbar-md-input-search-icon-svg, true);

width: $searchbar-md-input-search-icon-size + 1;
height: $searchbar-md-input-search-icon-size + 1;
Expand Down
2 changes: 1 addition & 1 deletion src/components/searchbar/searchbar.wp.scss
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ $searchbar-wp-input-clear-icon-size: 22px !default;

.searchbar-wp .searchbar-search-icon {
@include position(5px, $searchbar-wp-input-padding-horizontal, null, null);
@include svg-background-image($searchbar-wp-input-search-icon-svg);
@include svg-background-image($searchbar-wp-input-search-icon-svg, true);

position: absolute;

Expand Down
19 changes: 19 additions & 0 deletions src/themes/ionic.functions.scss
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,25 @@
}


// Str extract between start and end
// --------------------------------------------------

@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;
}


// URL Encode Function
// --------------------------------------------------

Expand Down
36 changes: 28 additions & 8 deletions src/themes/ionic.mixins.scss
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,6 @@
}
}

// SVG Background Image Mixin
// --------------------------------------------------

@mixin svg-background-image($svg) {
$url: url-encode($svg);
background-image: url("data:image/svg+xml;charset=utf-8,#{$url}");
}

// Check that the given map values are in ascending order
// ---------------------------------------------------------------------------------

Expand Down Expand Up @@ -202,6 +194,34 @@
}
}

// SVG Background Image Mixin
// @param {string} $svg
// ----------------------------------------------------------
@mixin svg-background-image($svg, $flip-rtl: false) {
$url: url-encode($svg);
$viewBox: str-split(str-extract($svg, "viewBox='", "'"), " ");

@if $flip-rtl != true or $viewBox == null {
@include multi-dir() {
background-image: url("data:image/svg+xml;charset=utf-8,#{$url}");
}
} @else {
$transform: "transform='translate(#{nth($viewBox, 3)}, 0) scale(-1, 1)'";
$flipped-url: $svg;
$flipped-url: str-replace($flipped-url, "<path", "<path #{$transform}");
$flipped-url: str-replace($flipped-url, "<line", "<line #{$transform}");
$flipped-url: str-replace($flipped-url, "<polygon", "<polygon #{$transform}");
$flipped-url: url-encode($flipped-url);

@include ltr () {
background-image: url("data:image/svg+xml;charset=utf-8,#{$url}");
}
@include rtl() {
background-image: url("data:image/svg+xml;charset=utf-8,#{$flipped-url}");
}
}
}

// Add property horizontal
// @param {string} $start
// @param {string} $end
Expand Down

0 comments on commit f4452b5

Please sign in to comment.