doggystyle 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +16 -0
- data/.hound.yml +5 -0
- data/.npmignore +18 -0
- data/.ruby-version +1 -0
- data/.scss-lint.yml +243 -0
- data/.travis.yml +5 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +40 -0
- data/RELEASING.md +1 -0
- data/Rakefile +9 -0
- data/bin/doggystyle +5 -0
- data/bower.json +38 -0
- data/circle.yml +13 -0
- data/core/_imports.scss +229 -0
- data/core/animations/_jump.scss +7 -0
- data/core/animations/_shake.scss +24 -0
- data/core/animations/_wobble.scss +8 -0
- data/core/functions/_mobile-first.scss +3 -0
- data/core/functions/_opposite-direction.scss +45 -0
- data/core/functions/casts/_to-bool.scss +19 -0
- data/core/functions/casts/_to-color.scss +74 -0
- data/core/functions/casts/_to-list.scss +38 -0
- data/core/functions/casts/_to-map.scss +27 -0
- data/core/functions/casts/_to-null.scss +15 -0
- data/core/functions/casts/_to-number.scss +66 -0
- data/core/functions/casts/_to-string.scss +15 -0
- data/core/functions/colours/_colour-contrast.scss +61 -0
- data/core/functions/colours/_colour.scss +69 -0
- data/core/functions/colours/_random-colour.scss +78 -0
- data/core/functions/lists/_contains.scss +62 -0
- data/core/functions/lists/_first.scss +19 -0
- data/core/functions/lists/_insert-nth.scss +37 -0
- data/core/functions/lists/_last.scss +11 -0
- data/core/functions/lists/_merge.scss +30 -0
- data/core/functions/lists/_prepend.scss +11 -0
- data/core/functions/lists/_remove-nth.scss +53 -0
- data/core/functions/lists/_remove.scss +30 -0
- data/core/functions/lists/_replace-nth.scss +55 -0
- data/core/functions/lists/_replace.scss +36 -0
- data/core/functions/lists/_reverse.scss +31 -0
- data/core/functions/lists/_second.scss +19 -0
- data/core/functions/lists/_shift.scss +24 -0
- data/core/functions/lists/_slice.scss +52 -0
- data/core/functions/lists/_sort.scss +51 -0
- data/core/functions/maps/_map-deep-get.scss +51 -0
- data/core/functions/maps/_map-deep-set.scss +34 -0
- data/core/functions/maps/_map-depth.scss +23 -0
- data/core/functions/maps/_map-extend.scss +47 -0
- data/core/functions/maps/_map-has-keys.scss +23 -0
- data/core/functions/maps/_map-has-nested-keys.scss +24 -0
- data/core/functions/maps/_map-set.scss +4 -0
- data/core/functions/maps/_map-zip.scss +50 -0
- data/core/functions/numbers/_add-unit.scss +54 -0
- data/core/functions/numbers/_pad.scss +16 -0
- data/core/functions/numbers/_spacer.scss +16 -0
- data/core/functions/numbers/_strip.scss +29 -0
- data/core/functions/numbers/_units.scss +17 -0
- data/core/functions/svg/_dots.scss +84 -0
- data/core/functions/svg/_fake-radius.scss +131 -0
- data/core/functions/svg/_lines.scss +76 -0
- data/core/functions/svg/_svg.scss +12 -0
- data/core/functions/text/_smart-lineheight.scss +13 -0
- data/core/functions/text/_string-explode.scss +45 -0
- data/core/functions/text/_string-replace.scss +38 -0
- data/core/helpers/_custom-elements.scss +114 -0
- data/core/helpers/_eases.scss +44 -0
- data/core/helpers/_reset.scss +282 -0
- data/core/helpers/_show-breakpoints.scss +25 -0
- data/core/helpers/_strings.scss +648 -0
- data/core/helpers/_warnings.scss +3 -0
- data/core/helpers/checks/_check.scss +69 -0
- data/core/helpers/checks/_is-absolute-length.scss +25 -0
- data/core/helpers/checks/_is-angel.scss +25 -0
- data/core/helpers/checks/_is-arglist.scss +11 -0
- data/core/helpers/checks/_is-bool.scss +23 -0
- data/core/helpers/checks/_is-calc.scss +11 -0
- data/core/helpers/checks/_is-colour.scss +23 -0
- data/core/helpers/checks/_is-dark.scss +14 -0
- data/core/helpers/checks/_is-duration.scss +15 -0
- data/core/helpers/checks/_is-false.scss +13 -0
- data/core/helpers/checks/_is-first-character.scss +11 -0
- data/core/helpers/checks/_is-frequency.scss +15 -0
- data/core/helpers/checks/_is-function.scss +44 -0
- data/core/helpers/checks/_is-integer.scss +15 -0
- data/core/helpers/checks/_is-length.scss +16 -0
- data/core/helpers/checks/_is-light.scss +14 -0
- data/core/helpers/checks/_is-list.scss +11 -0
- data/core/helpers/checks/_is-map.scss +11 -0
- data/core/helpers/checks/_is-null.scss +11 -0
- data/core/helpers/checks/_is-number.scss +19 -0
- data/core/helpers/checks/_is-percentage.scss +13 -0
- data/core/helpers/checks/_is-position.scss +16 -0
- data/core/helpers/checks/_is-pseudo.scss +24 -0
- data/core/helpers/checks/_is-relative-length.scss +25 -0
- data/core/helpers/checks/_is-resolution.scss +15 -0
- data/core/helpers/checks/_is-selector.scss +3 -0
- data/core/helpers/checks/_is-string.scss +11 -0
- data/core/helpers/checks/_is-time.scss +15 -0
- data/core/helpers/checks/_is-unit.scss +16 -0
- data/core/helpers/private/_arglist-to-list.scss +36 -0
- data/core/helpers/private/_brightness.scss +13 -0
- data/core/helpers/private/_find-digits.scss +41 -0
- data/core/helpers/private/_find-integer.scss +40 -0
- data/core/helpers/private/_from-hex.scss +48 -0
- data/core/helpers/private/_from-hsl.scss +55 -0
- data/core/helpers/private/_from-rgb.scss +55 -0
- data/core/helpers/private/_get-color-value.scss +26 -0
- data/core/helpers/private/_hash-fix.scss +15 -0
- data/core/helpers/private/_hex-to-dec.scss +28 -0
- data/core/helpers/private/_length.scss +26 -0
- data/core/helpers/private/_lightness.scss +15 -0
- data/core/helpers/private/_list-items-to-strings.scss +8 -0
- data/core/helpers/private/_min-max-number.scss +12 -0
- data/core/helpers/private/_pow.scss +29 -0
- data/core/helpers/private/_string-compare.scss +38 -0
- data/core/helpers/private/_string-explode.scss +43 -0
- data/core/helpers/private/_sudo.scss +23 -0
- data/core/helpers/symbols/_arrows.scss +337 -0
- data/core/helpers/symbols/_block.scss +97 -0
- data/core/helpers/symbols/_box.scss +385 -0
- data/core/helpers/symbols/_common.scss +101 -0
- data/core/helpers/symbols/_currency.scss +82 -0
- data/core/helpers/symbols/_dingbats.scss +565 -0
- data/core/helpers/symbols/_geometric.scss +289 -0
- data/core/helpers/symbols/_letterlike.scss +235 -0
- data/core/helpers/symbols/_misc.scss +568 -0
- data/core/helpers/symbols/_operators.scss +766 -0
- data/core/helpers/symbols/_punctuation.scss +214 -0
- data/core/mixins/_align.scss +15 -0
- data/core/mixins/_animate.scss +16 -0
- data/core/mixins/_aspect-ratio.scss +86 -0
- data/core/mixins/_backface-visibility.scss +7 -0
- data/core/mixins/_background-image.scss +13 -0
- data/core/mixins/_blend.scss +10 -0
- data/core/mixins/_blendmodes.scss +24 -0
- data/core/mixins/_border-radius.scss +105 -0
- data/core/mixins/_browsers.scss +155 -0
- data/core/mixins/_bulletpoint.scss +12 -0
- data/core/mixins/_center.scss +3 -0
- data/core/mixins/_clearfix.scss +7 -0
- data/core/mixins/_columns.scss +22 -0
- data/core/mixins/_custom-property.scss +15 -0
- data/core/mixins/_devices.scss +97 -0
- data/core/mixins/_dropdown.scss +38 -0
- data/core/mixins/_fake-radius.scss +99 -0
- data/core/mixins/_filters.scss +163 -0
- data/core/mixins/_flip.scss +11 -0
- data/core/mixins/_font-face.scss +11 -0
- data/core/mixins/_fontsize.scss +126 -0
- data/core/mixins/_gallery.scss +134 -0
- data/core/mixins/_gradient.scss +72 -0
- data/core/mixins/_image-size.scss +18 -0
- data/core/mixins/_image.scss +12 -0
- data/core/mixins/_inputs.scss +18 -0
- data/core/mixins/_keyframes.scss +8 -0
- data/core/mixins/_last.scss +5 -0
- data/core/mixins/_nth-last.scss +7 -0
- data/core/mixins/_nth.scss +10 -0
- data/core/mixins/_placeholder.scss +15 -0
- data/core/mixins/_prefixer.scss +55 -0
- data/core/mixins/_selection.scss +15 -0
- data/core/mixins/_shadow.scss +7 -0
- data/core/mixins/_size.scss +13 -0
- data/core/mixins/_smart-horizontal.scss +21 -0
- data/core/mixins/_sudo-image.scss +12 -0
- data/core/mixins/_text-shadow.scss +30 -0
- data/core/mixins/_transforms.scss +264 -0
- data/core/mixins/_transition.scss +189 -0
- data/core/mixins/_triangle-classic.scss +170 -0
- data/core/mixins/_triangle.scss +250 -0
- data/core/mixins/_unwrap.scss +5 -0
- data/core/mixins/_user-select.scss +5 -0
- data/core/mixins/_vertical.scss +10 -0
- data/core/mixins/columns/_columns.scss +92 -0
- data/core/mixins/flexbox/_flex-container.scss +201 -0
- data/core/mixins/flexbox/_flex-grid.scss +235 -0
- data/core/mixins/flexbox/_flex-items.scss +140 -0
- data/core/mixins/flexbox/_flex-remove.scss +12 -0
- data/core/mixins/grid/_break-between.scss +6 -0
- data/core/mixins/grid/_grid.scss +150 -0
- data/core/mixins/svg/_svg-size.scss +4 -0
- data/core/mixins/svg/_svg.scss +9 -0
- data/core/placeholders/_clear.scss +27 -0
- data/core/placeholders/_cursor.scss +35 -0
- data/core/placeholders/_misc.scss +20 -0
- data/core/placeholders/_rendering.scss +21 -0
- data/core/placeholders/_text.scss +41 -0
- data/core/settings/_colours.scss +30 -0
- data/core/settings/_directories.scss +7 -0
- data/core/settings/_global.scss +14 -0
- data/core/settings/_grid.scss +24 -0
- data/core/settings/_padding.scss +8 -0
- data/core/settings/_spacing.scss +8 -0
- data/core/settings/_text.scss +13 -0
- data/doggystyle.gemspec +29 -0
- data/eyeglass-exports.js +7 -0
- data/features/install.feature +29 -0
- data/features/step_definitions/doggystyle_steps.rb +31 -0
- data/features/support/bourbon_support.rb +19 -0
- data/features/support/env.rb +1 -0
- data/features/update.feature +30 -0
- data/features/version.feature +5 -0
- data/index.js +7 -0
- data/lib/doggystyle.rb +7 -0
- data/lib/doggystyle/generator.rb +81 -0
- data/lib/doggystyle/version.rb +3 -0
- data/package.json +33 -0
- data/spec/doggystyle/library/border_color_spec.rb +51 -0
- data/spec/doggystyle/library/border_radius_spec.rb +25 -0
- data/spec/doggystyle/library/border_style_spec.rb +51 -0
- data/spec/doggystyle/library/border_width_spec.rb +51 -0
- data/spec/doggystyle/library/buttons_spec.rb +53 -0
- data/spec/doggystyle/library/clearfix_spec.rb +18 -0
- data/spec/doggystyle/library/contrast_switch_spec.rb +23 -0
- data/spec/doggystyle/library/ellipsis_spec.rb +20 -0
- data/spec/doggystyle/library/font_face_spec_1.rb +16 -0
- data/spec/doggystyle/library/font_face_spec_2.rb +21 -0
- data/spec/doggystyle/library/font_face_spec_3.rb +16 -0
- data/spec/doggystyle/library/font_face_spec_4.rb +17 -0
- data/spec/doggystyle/library/font_stacks_spec.rb +40 -0
- data/spec/doggystyle/library/hide_text_spec.rb +17 -0
- data/spec/doggystyle/library/hide_visually_spec.rb +35 -0
- data/spec/doggystyle/library/margin_spec.rb +51 -0
- data/spec/doggystyle/library/modular_scale_spec.rb +43 -0
- data/spec/doggystyle/library/padding_spec.rb +51 -0
- data/spec/doggystyle/library/position_spec.rb +67 -0
- data/spec/doggystyle/library/prefixer_spec.rb +34 -0
- data/spec/doggystyle/library/shade_spec.rb +31 -0
- data/spec/doggystyle/library/size_spec.rb +31 -0
- data/spec/doggystyle/library/strip_unit_spec.rb +31 -0
- data/spec/doggystyle/library/text_inputs_spec.rb +75 -0
- data/spec/doggystyle/library/tint_spec.rb +31 -0
- data/spec/doggystyle/library/triangle_spec.rb +31 -0
- data/spec/doggystyle/library/word_wrap_spec.rb +29 -0
- data/spec/doggystyle/utilities/assign_inputs_spec.rb +50 -0
- data/spec/doggystyle/utilities/collapse_directionals.rb +25 -0
- data/spec/doggystyle/utilities/directional_values_spec.rb +21 -0
- data/spec/doggystyle/utilities/font_source_declaration_spec.rb +29 -0
- data/spec/doggystyle/utilities/retrieve_bourbon_setting_spec.rb +31 -0
- data/spec/doggystyle/utilities/unpack_spec.rb +32 -0
- data/spec/doggystyle/validators/contains_spec.rb +27 -0
- data/spec/doggystyle/validators/is_length_spec.rb +49 -0
- data/spec/doggystyle/validators/is_light_spec.rb +37 -0
- data/spec/doggystyle/validators/is_number_spec.rb +43 -0
- data/spec/doggystyle/validators/is_size_spec.rb +43 -0
- data/spec/fixtures/_setup.scss +1 -0
- data/spec/fixtures/library/border-color.scss +26 -0
- data/spec/fixtures/library/border-radius.scss +17 -0
- data/spec/fixtures/library/border-style.scss +21 -0
- data/spec/fixtures/library/border-width.scss +21 -0
- data/spec/fixtures/library/buttons.scss +17 -0
- data/spec/fixtures/library/clearfix.scss +5 -0
- data/spec/fixtures/library/contrast-switch.scss +9 -0
- data/spec/fixtures/library/ellipsis.scss +5 -0
- data/spec/fixtures/library/font-face-1.scss +6 -0
- data/spec/fixtures/library/font-face-2.scss +10 -0
- data/spec/fixtures/library/font-face-3.scss +8 -0
- data/spec/fixtures/library/font-face-4.scss +7 -0
- data/spec/fixtures/library/font-stacks.scss +41 -0
- data/spec/fixtures/library/hide-text.scss +5 -0
- data/spec/fixtures/library/hide-visually.scss +9 -0
- data/spec/fixtures/library/margin.scss +21 -0
- data/spec/fixtures/library/modular-scale.scss +29 -0
- data/spec/fixtures/library/padding.scss +21 -0
- data/spec/fixtures/library/position.scss +25 -0
- data/spec/fixtures/library/prefixer.scss +13 -0
- data/spec/fixtures/library/shade.scss +17 -0
- data/spec/fixtures/library/size.scss +13 -0
- data/spec/fixtures/library/strip-unit.scss +17 -0
- data/spec/fixtures/library/text-inputs.scss +21 -0
- data/spec/fixtures/library/tint.scss +17 -0
- data/spec/fixtures/library/triangle.scss +9 -0
- data/spec/fixtures/library/word-wrap.scss +9 -0
- data/spec/fixtures/utilities/assign-inputs.scss +19 -0
- data/spec/fixtures/utilities/collapse-directionals.scss +17 -0
- data/spec/fixtures/utilities/directional-values.scss +13 -0
- data/spec/fixtures/utilities/font-source-declaration.scss +11 -0
- data/spec/fixtures/utilities/retrieve-bourbon-setting.scss +16 -0
- data/spec/fixtures/utilities/unpack.scss +17 -0
- data/spec/fixtures/validators/contains.scss +28 -0
- data/spec/fixtures/validators/is-length.scss +35 -0
- data/spec/fixtures/validators/is-light.scss +29 -0
- data/spec/fixtures/validators/is-number.scss +31 -0
- data/spec/fixtures/validators/is-size.scss +31 -0
- data/spec/spec_helper.rb +22 -0
- data/spec/support/matchers/have_rule.rb +35 -0
- data/spec/support/matchers/have_ruleset.rb +20 -0
- data/spec/support/matchers/have_value.rb +17 -0
- data/spec/support/parser_support.rb +16 -0
- data/spec/support/sass_support.rb +10 -0
- metadata +527 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/// Transition mixin handles animation for any number of transitions in any format/order
|
|
2
|
+
///
|
|
3
|
+
/// @author Mark Notton
|
|
4
|
+
///
|
|
5
|
+
/// @access public
|
|
6
|
+
///
|
|
7
|
+
/// @todo Stagger option. Make it so each transition happens one after the other, regardless of delay
|
|
8
|
+
///
|
|
9
|
+
/// @param {arglist} $args - Pass in the following transtion settings, in any order.
|
|
10
|
+
/// [property] - width, margin, rotate, skew, color, etc...
|
|
11
|
+
/// [delay] - delay times are always calculated in seconds (not miliseconds). You do not have to define the 's'
|
|
12
|
+
/// [ease-type] - ease-in, ease-in-out etc... You can also refer to the eases variables. $easeInSine, $easeInOutBack
|
|
13
|
+
/// [duration] - duration times are always calculated in seconds (not miliseconds). You do not have to define the 's'
|
|
14
|
+
/// [direction] - forwards, default, backwards, reverse. direction should be in it's own argment, not part of a list of transition settings. It can however be in the same argument as 'stagger'.
|
|
15
|
+
/// Directions can be backwards or forwards (default). Setting it backwards will reverse the order
|
|
16
|
+
/// of the delays if more than one argument has been made.
|
|
17
|
+
/// [stagger] - stagger should be in it's own argment, not part of a list of transition settings. It can however be in the same argument as 'direction'.
|
|
18
|
+
/// Stagger can be defined just by passing the string 'stagger'. This will add previous transition delays and directions to the current
|
|
19
|
+
/// transtion so each argument is called one after the other.
|
|
20
|
+
/// [off] - passing off within any argument will ignore everything and set the transition to 'initial'. Essentially disabling all transitions
|
|
21
|
+
///
|
|
22
|
+
/// @require {Mixin} contains
|
|
23
|
+
/// @require {Mixin} prepend
|
|
24
|
+
/// @require {Mixin} prefixer
|
|
25
|
+
/// @require {Variables} eases - optional
|
|
26
|
+
///
|
|
27
|
+
/// @example scss - Usage
|
|
28
|
+
/// .foo {
|
|
29
|
+
/// @include transition(
|
|
30
|
+
/// background-color 0 ease-in,
|
|
31
|
+
/// border-radius 0.5 ease-out,
|
|
32
|
+
/// rotate 1 1 $easeInOutBack,
|
|
33
|
+
/// reverse
|
|
34
|
+
/// );
|
|
35
|
+
/// }
|
|
36
|
+
///
|
|
37
|
+
/// @example css - CSS output
|
|
38
|
+
/// .foo {
|
|
39
|
+
/// -webkit-transition: background-color 0.2s ease-in 0s, border-radius 0.2s ease-out 0.5s, -webkit-transform 1s cubic-bezier(0.68, -0.55, 0.265, 1.55) 1s;
|
|
40
|
+
/// transition: background-color 0.2s ease-in 0s, border-radius 0.2s ease-out 0.5s, transform 1s cubic-bezier(0.68, -0.55, 0.265, 1.55) 1s; }
|
|
41
|
+
/// }
|
|
42
|
+
///
|
|
43
|
+
|
|
44
|
+
@mixin transition($settings...) {
|
|
45
|
+
|
|
46
|
+
// Default Settings
|
|
47
|
+
$direction : forwards;
|
|
48
|
+
$stagger : false;
|
|
49
|
+
|
|
50
|
+
// Private Settings
|
|
51
|
+
$transitions : ();
|
|
52
|
+
$transitions-webkit : ();
|
|
53
|
+
$animations : ();
|
|
54
|
+
$delays : ();
|
|
55
|
+
$eases : ();
|
|
56
|
+
$durations : ();
|
|
57
|
+
$off : false;
|
|
58
|
+
|
|
59
|
+
// Quick check to make sure anything at all has been passed.
|
|
60
|
+
// If not, set 'all' as the default transition
|
|
61
|
+
// $args: if(length($args) > 0, $args, all);
|
|
62
|
+
|
|
63
|
+
$settings-list : _arglist-to-list($settings);
|
|
64
|
+
|
|
65
|
+
// Loop through and check all arguments for any special options
|
|
66
|
+
@each $settings in $settings-list {
|
|
67
|
+
@if contains($settings, forwards default backwards reverse) {
|
|
68
|
+
$direction : $settings;
|
|
69
|
+
} @elseif contains($settings, stagger) {
|
|
70
|
+
$stagger : true;
|
|
71
|
+
} @elseif contains($settings, off) {
|
|
72
|
+
$off : true;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@if $off == true {
|
|
77
|
+
@include prefixer(transition, initial);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Loop through and set all the necessary settings for each animation set
|
|
81
|
+
@each $settings in $settings-list {
|
|
82
|
+
|
|
83
|
+
// Default Settings
|
|
84
|
+
$animation : ();
|
|
85
|
+
$duration : 0.2;
|
|
86
|
+
$ease : ease-in-out;
|
|
87
|
+
$delay : 0;
|
|
88
|
+
|
|
89
|
+
// Private Settings
|
|
90
|
+
$excluded : false;
|
|
91
|
+
$value-counter : 0;
|
|
92
|
+
|
|
93
|
+
@each $setting in $settings {
|
|
94
|
+
// Check a range of special rules. Exclude this transition if this is true.
|
|
95
|
+
@if contains($setting, forwards default backwards reverse stagger) {
|
|
96
|
+
$excluded : true;
|
|
97
|
+
} @else {
|
|
98
|
+
// Checks for 'strings'
|
|
99
|
+
@if type-of($setting) == string {
|
|
100
|
+
@if contains(str-slice(#{$setting}, 0, 4), ease line step cubi init) {
|
|
101
|
+
// If the first 4 characters of the string match the first 4 characters
|
|
102
|
+
// of a ease type, update the ease variable
|
|
103
|
+
$ease : $setting;
|
|
104
|
+
} @elseif contains($setting, transform matrix translate translateX translateY scale scaleX scaleY rotate skew skewX skewY matrix3d translate3d translateZ scale3d scaleZ rotate3d rotateX rotateY rotateZ perspective) {
|
|
105
|
+
// If the string mataches a transform type, define the animation as a transform
|
|
106
|
+
$animation : append($animation, transform);
|
|
107
|
+
} @else {
|
|
108
|
+
$animation : append($animation, $setting);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Checks for 'numbers'
|
|
112
|
+
@if type-of($setting) == number {
|
|
113
|
+
@if $value-counter < 1 {
|
|
114
|
+
// Add the first instance of a number as the delay
|
|
115
|
+
$delay : $setting;
|
|
116
|
+
$value-counter : $value-counter + 1;
|
|
117
|
+
} @elseif $value-counter >= 1 {
|
|
118
|
+
// Add the second instance of a number as the duration
|
|
119
|
+
$duration : $setting;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
@if not $excluded {
|
|
126
|
+
// Quick check to make sure animation has a fallback if none were defined
|
|
127
|
+
$animations : if(length($animation) == 0, append($animations, all), append($animations, $animation));
|
|
128
|
+
// Quick check for the direction rule. If backwards or reversed, add delays the the start of the $delays list
|
|
129
|
+
$delays : if(contains($direction, backwards reverse), prepend($delays, $delay), append($delays, $delay));
|
|
130
|
+
$eases : append($eases, $ease);
|
|
131
|
+
$durations : append($durations, $duration);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Loop through all the animations and add the transition to the overall transitions list
|
|
136
|
+
@for $i from 1 through length($animations) {
|
|
137
|
+
$animation : nth($animations, $i);
|
|
138
|
+
$duration : nth($durations, $i);
|
|
139
|
+
$ease : nth($eases, $i);
|
|
140
|
+
$delay : nth($delays, $i);
|
|
141
|
+
@each $ani in $animation {
|
|
142
|
+
$transition : ($ani #{$duration + 's'} $ease #{$delay + 's'});
|
|
143
|
+
$transitions : append($transitions, $transition, comma);
|
|
144
|
+
|
|
145
|
+
$transition-webkit : (if($ani == transform, -#{webkit}-#{$ani}, $ani) #{$duration + 's'} $ease #{$delay + 's'});
|
|
146
|
+
$transitions-webkit : append($transitions-webkit, $transition-webkit, comma);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@include prefixer(transition, $transitions-webkit, webkit only);
|
|
151
|
+
@include prefixer(transition, $transitions, null);
|
|
152
|
+
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
@mixin transition-remove() {
|
|
156
|
+
@include prefixer(transition, initial, webkit);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
/// @alias transition-delay
|
|
161
|
+
///
|
|
162
|
+
/// @access public
|
|
163
|
+
///
|
|
164
|
+
/// @require {mixin} transition-delay
|
|
165
|
+
///
|
|
166
|
+
/// @return
|
|
167
|
+
|
|
168
|
+
@mixin ani-remove() {
|
|
169
|
+
@include transition-remove();
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/// @alias transition
|
|
173
|
+
@mixin ani($settings...) { @include transition($settings...); }
|
|
174
|
+
|
|
175
|
+
@mixin transition-delay($time) {
|
|
176
|
+
@include prefixer(transition-delay, addUnit($time, s), webkit);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/// @alias transition-delay
|
|
180
|
+
///
|
|
181
|
+
/// @access public
|
|
182
|
+
///
|
|
183
|
+
/// @require {mixin} transition-delay
|
|
184
|
+
///
|
|
185
|
+
/// @return
|
|
186
|
+
|
|
187
|
+
@mixin dalay($time) {
|
|
188
|
+
@include transition-delay($time);
|
|
189
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/// Create a triangle/carrat/arrow
|
|
2
|
+
///
|
|
3
|
+
/// @param {list} $args
|
|
4
|
+
/// In any order and without comma delimination, add any of the follwing arrow settings
|
|
5
|
+
/// Colour { color } - Hex or RGBA
|
|
6
|
+
/// Width { int } - First intiger is used as the width. 'px' units are used by defualt if not specified.
|
|
7
|
+
/// Height { int } - Second intiger is used as the height. 'px' units are used by defualt if not specified. Width is used if second unit is not found.
|
|
8
|
+
/// Direction { string } - top-left, up, top-right, left, right, bottom-left, down, bottom-right.
|
|
9
|
+
/// Center { string } - In addition to the direction, you can add the unquote string 'center' to center the arrow
|
|
10
|
+
/// Sudo { string } - Use an unquote string 'before' or 'after' to distinguish what sudo element to use
|
|
11
|
+
///
|
|
12
|
+
/// @param {bool} $position
|
|
13
|
+
/// Determines wether the arrow should be positioned at all
|
|
14
|
+
///
|
|
15
|
+
/// @require {map} triangle-settings
|
|
16
|
+
/// @require {function} random-color
|
|
17
|
+
/// @require {function} map-fetch
|
|
18
|
+
/// @require {function} is-calc
|
|
19
|
+
///
|
|
20
|
+
///
|
|
21
|
+
/// @example {scss} - Usage
|
|
22
|
+
/// @include triangle-classic(50% 20 purple right);
|
|
23
|
+
/// @include triangle-classic(100 100 green up center after);
|
|
24
|
+
///
|
|
25
|
+
/// @return {sudo}
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@mixin triangle-classic($args...) {
|
|
29
|
+
|
|
30
|
+
// Deafult Triangle Settings
|
|
31
|
+
$size : ();
|
|
32
|
+
$sudo : before;
|
|
33
|
+
$colour : random-colour();
|
|
34
|
+
$direction : right;
|
|
35
|
+
$center : false;
|
|
36
|
+
$triangle : map-fetch($triangle-settings, $direction, points);
|
|
37
|
+
|
|
38
|
+
// Deafult Position Settings
|
|
39
|
+
$position : true;
|
|
40
|
+
$x-pos : nth(map-fetch($triangle-settings, $direction, x), 1);
|
|
41
|
+
$x-amount : nth(map-fetch($triangle-settings, $direction, x), 2);
|
|
42
|
+
$y-pos : nth(map-fetch($triangle-settings, $direction, y), 1);
|
|
43
|
+
$y-amount : nth(map-fetch($triangle-settings, $direction, y), 2);
|
|
44
|
+
|
|
45
|
+
$args: if(length($args) > 0, $args, null);
|
|
46
|
+
|
|
47
|
+
// Loop through and check all arguments for any special options.
|
|
48
|
+
|
|
49
|
+
@for $i from 1 through length($args) {
|
|
50
|
+
@each $option in nth($args, $i) {
|
|
51
|
+
// If there is an arugment, with just one value, and it's set to true or false.
|
|
52
|
+
// Assume this is the position condition.
|
|
53
|
+
@if type-of($option) == bool and length(nth($args, $i)) == 1 {
|
|
54
|
+
$position : $option;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Check Triangle Settings
|
|
60
|
+
@each $rule in nth($args, 1) {
|
|
61
|
+
|
|
62
|
+
@if type-of($rule) == number or is-calc($rule) and length($size) < 2 {
|
|
63
|
+
$size : append($size, $rule);
|
|
64
|
+
}
|
|
65
|
+
@elseif type-of($rule) == color {
|
|
66
|
+
$colour : $rule;
|
|
67
|
+
}
|
|
68
|
+
@elseif type-of($rule) == string {
|
|
69
|
+
@if $rule == before or $rule == after {
|
|
70
|
+
$sudo : unquote($rule);
|
|
71
|
+
}
|
|
72
|
+
@elseif $rule == center {
|
|
73
|
+
$center : true;
|
|
74
|
+
}
|
|
75
|
+
@elseif map-has-key($triangle-settings, $rule) {
|
|
76
|
+
$direction: $rule;
|
|
77
|
+
|
|
78
|
+
$x:map-fetch($triangle-settings, $direction, x);
|
|
79
|
+
$x-pos:nth($x, 1);
|
|
80
|
+
$x-amount:nth($x, 2);
|
|
81
|
+
|
|
82
|
+
$y:map-fetch($triangle-settings, $direction, y);
|
|
83
|
+
$y-pos:nth($y, 1);
|
|
84
|
+
$y-amount:nth($y, 2);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Deafult size set if it remains empty
|
|
90
|
+
$size : if(length($size) == 0, 50, $size);
|
|
91
|
+
|
|
92
|
+
// Define width and height
|
|
93
|
+
$width : nth($size, 1);
|
|
94
|
+
$height : if(length($size) == 1, $width, nth($size, 2));
|
|
95
|
+
|
|
96
|
+
// Define all settings with strings
|
|
97
|
+
|
|
98
|
+
&#{_sudo($sudo)} {
|
|
99
|
+
content:"";
|
|
100
|
+
position:absolute;
|
|
101
|
+
height:0;
|
|
102
|
+
width:0;
|
|
103
|
+
border-style:solid;
|
|
104
|
+
border-color:transparent;
|
|
105
|
+
border-width:0;
|
|
106
|
+
pointer-events:none;
|
|
107
|
+
|
|
108
|
+
@if $center {
|
|
109
|
+
top:calc(50% - #{addUnit($height)}/2); left:calc(50% - #{addUnit($width)}/2);
|
|
110
|
+
} @elseif ($position) {
|
|
111
|
+
@if $direction == up or $direction == down {
|
|
112
|
+
#{$y-pos}:calc(#{$y-amount} - #{addUnit($width)}/2);
|
|
113
|
+
#{$x-pos}:$x-amount;
|
|
114
|
+
}
|
|
115
|
+
@elseif $direction == left {
|
|
116
|
+
#{$y-pos}:$y-amount;
|
|
117
|
+
#{$x-pos}:calc(#{$x-amount} - #{addUnit($height)}/2);
|
|
118
|
+
}
|
|
119
|
+
@elseif $direction == right {
|
|
120
|
+
#{$y-pos}:calc(#{$y-amount} - #{addUnit($height)}/2);
|
|
121
|
+
#{$x-pos}:$x-amount;
|
|
122
|
+
}
|
|
123
|
+
@else {
|
|
124
|
+
#{$y-pos}:$y-amount;
|
|
125
|
+
#{$x-pos}:$x-amount;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Directions
|
|
130
|
+
@if $direction == left {
|
|
131
|
+
border-width:addUnit($height/2) addUnit($width) addUnit($height/2) 0;
|
|
132
|
+
}
|
|
133
|
+
@elseif $direction == right {
|
|
134
|
+
border-width:addUnit($height/2) 0 addUnit($height/2) addUnit($width);
|
|
135
|
+
}
|
|
136
|
+
@elseif $direction == up {
|
|
137
|
+
border-width:0 addUnit($width/2) addUnit($height) addUnit($width/2);
|
|
138
|
+
}
|
|
139
|
+
@elseif $direction == down {
|
|
140
|
+
border-width:addUnit($height) addUnit($width/2) 0 addUnit($width/2);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
@if contains(left right up down, $direction) {
|
|
144
|
+
border-#{opposite-direction($direction)}-color:$colour;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@if $direction == top-left {
|
|
148
|
+
border-width:addUnit($height) addUnit($width) 0 0;
|
|
149
|
+
border-top-color:$colour;
|
|
150
|
+
}
|
|
151
|
+
@elseif $direction == top-right {
|
|
152
|
+
border-width:0 addUnit($width) addUnit($height) 0;
|
|
153
|
+
border-right-color:$colour;
|
|
154
|
+
}
|
|
155
|
+
@elseif $direction == bottom-left {
|
|
156
|
+
border-width:addUnit($height) 0 0 addUnit($width);
|
|
157
|
+
border-left-color:$colour;
|
|
158
|
+
}
|
|
159
|
+
@elseif $direction == bottom-right {
|
|
160
|
+
border-width:0 0 addUnit($height) addUnit($width);
|
|
161
|
+
border-bottom-color:$colour;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
@if $direction == up { $direction : top; }
|
|
165
|
+
@if $direction == down { $direction : bottom; }
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
@content;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/// Triangle Settings
|
|
2
|
+
///
|
|
3
|
+
/// @author Mark Notton
|
|
4
|
+
///
|
|
5
|
+
/// @type variables
|
|
6
|
+
|
|
7
|
+
$triangle-settings: (
|
|
8
|
+
top-left : (
|
|
9
|
+
points : "0,100 0,0 100,0",
|
|
10
|
+
y : ( left , 0 ),
|
|
11
|
+
x : ( top , 0 )
|
|
12
|
+
),
|
|
13
|
+
up : (
|
|
14
|
+
points : "100,100 0,100 50,0",
|
|
15
|
+
y : ( left , 50% ),
|
|
16
|
+
x : ( bottom , 100% )
|
|
17
|
+
),
|
|
18
|
+
top-right : (
|
|
19
|
+
points : "100,100 0,0 100,0",
|
|
20
|
+
y : ( right , 0 ),
|
|
21
|
+
x : ( top , 0 )
|
|
22
|
+
),
|
|
23
|
+
left : (
|
|
24
|
+
points : "100,100 0,50 100,0",
|
|
25
|
+
y : ( right , 100% ),
|
|
26
|
+
x : ( top , 50% )
|
|
27
|
+
),
|
|
28
|
+
right : (
|
|
29
|
+
points : "0,100 0,0 100,50",
|
|
30
|
+
y : ( top , 50% ),
|
|
31
|
+
x : ( left , 100% )
|
|
32
|
+
),
|
|
33
|
+
bottom-left : (
|
|
34
|
+
points : "100,100 0,100 0,0",
|
|
35
|
+
y : ( left , 0 ),
|
|
36
|
+
x : ( bottom , 0 )
|
|
37
|
+
),
|
|
38
|
+
down : (
|
|
39
|
+
points : "0,0 100,0 50,100",
|
|
40
|
+
y : ( left , 50% ),
|
|
41
|
+
x : ( top , 100% )
|
|
42
|
+
),
|
|
43
|
+
bottom-right : (
|
|
44
|
+
points : "0,100 100,0 100,100",
|
|
45
|
+
y : ( bottom , 0 ),
|
|
46
|
+
x : ( right , 0 )
|
|
47
|
+
),
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
/// Create a triangle/carrat/arrow
|
|
52
|
+
///
|
|
53
|
+
/// @todo Figure a way to animate the fill colour of the svg background
|
|
54
|
+
/// @todo Get Stroke Alignment to work "inner".
|
|
55
|
+
///
|
|
56
|
+
/// @param {list} $args
|
|
57
|
+
/// In any order and without comma delimination, add any of the follwing arrow settings
|
|
58
|
+
/// Colour { color } - Hex or RGBA
|
|
59
|
+
/// Width { int } - First intiger is used as the width. 'px' units are used by defualt if not specified.
|
|
60
|
+
/// Height { int } - Second intiger is used as the height. 'px' units are used by defualt if not specified. Width is used if second unit is not found.
|
|
61
|
+
/// Direction { string } - top-left, up, top-right, left, right, bottom-left, down, bottom-right.
|
|
62
|
+
/// Center { string } - In addition to the direction, you can add the unquote string 'center' to center the arrow
|
|
63
|
+
/// Sudo { string } - Use an unquote string 'before' or 'after' to distinguish what sudo element to use
|
|
64
|
+
///
|
|
65
|
+
/// @param {bool} $position
|
|
66
|
+
/// Determines wether the arrow should be positioned at all
|
|
67
|
+
///
|
|
68
|
+
/// @require {map} triangle-settings
|
|
69
|
+
/// @require {function} random-color
|
|
70
|
+
/// @require {function} map-fetch
|
|
71
|
+
/// @require {function} is-calc
|
|
72
|
+
///
|
|
73
|
+
///
|
|
74
|
+
/// @example {scss} - Usage
|
|
75
|
+
/// @include arrow(50% 20 purple right);
|
|
76
|
+
/// @include arrow(100 100 green up center after);
|
|
77
|
+
///
|
|
78
|
+
/// @return {sudo}
|
|
79
|
+
|
|
80
|
+
@mixin triangle($args...) {
|
|
81
|
+
|
|
82
|
+
// Deafult Triangle Settings
|
|
83
|
+
$size : ();
|
|
84
|
+
$sudo : before;
|
|
85
|
+
$colour : random-colour();
|
|
86
|
+
$direction : right;
|
|
87
|
+
$center : false;
|
|
88
|
+
$triangle : map-fetch($triangle-settings, $direction, points);
|
|
89
|
+
|
|
90
|
+
// Deafult Position Settings
|
|
91
|
+
$position : true;
|
|
92
|
+
$x-pos : nth(map-fetch($triangle-settings, $direction, x), 1);
|
|
93
|
+
$x-amount : nth(map-fetch($triangle-settings, $direction, x), 2);
|
|
94
|
+
$y-pos : nth(map-fetch($triangle-settings, $direction, y), 1);
|
|
95
|
+
$y-amount : nth(map-fetch($triangle-settings, $direction, y), 2);
|
|
96
|
+
|
|
97
|
+
// Deafult Stroke Settings
|
|
98
|
+
$stroke : false;
|
|
99
|
+
$s-colour : random-colour();
|
|
100
|
+
$s-width : 5;
|
|
101
|
+
$s-linecap : round;
|
|
102
|
+
$s-linejoin : round;
|
|
103
|
+
$s-dasharray : null;
|
|
104
|
+
|
|
105
|
+
$args: if(length($args) > 0, $args, null);
|
|
106
|
+
$value-counter : 0;
|
|
107
|
+
|
|
108
|
+
// Loop through and check all arguments for any special options
|
|
109
|
+
@for $i from 1 through length($args) {
|
|
110
|
+
@each $option in nth($args, $i) {
|
|
111
|
+
@if type-of($option) == bool and length(nth($args, $i)) == 1 {
|
|
112
|
+
$position : $option;
|
|
113
|
+
} @elseif length($args) > 1 {
|
|
114
|
+
$stroke : nth($args, $i);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Check Triangle Settings
|
|
120
|
+
@each $rule in nth($args, 1) {
|
|
121
|
+
|
|
122
|
+
@if type-of($rule) == number or is-calc($rule) and length($size) < 2 {
|
|
123
|
+
$size : append($size, $rule);
|
|
124
|
+
}
|
|
125
|
+
@elseif type-of($rule) == color {
|
|
126
|
+
$colour : $rule;
|
|
127
|
+
}
|
|
128
|
+
@elseif type-of($rule) == string {
|
|
129
|
+
@if $rule == before or $rule == after {
|
|
130
|
+
$sudo : unquote($rule);
|
|
131
|
+
}
|
|
132
|
+
@elseif $rule == center {
|
|
133
|
+
$center : true;
|
|
134
|
+
}
|
|
135
|
+
@elseif map-has-key($triangle-settings, $rule) {
|
|
136
|
+
$direction: $rule;
|
|
137
|
+
$triangle: map-fetch($triangle-settings, $direction, points);
|
|
138
|
+
|
|
139
|
+
$x:map-fetch($triangle-settings, $direction, x);
|
|
140
|
+
$x-pos:nth($x, 1);
|
|
141
|
+
$x-amount:nth($x, 2);
|
|
142
|
+
|
|
143
|
+
$y:map-fetch($triangle-settings, $direction, y);
|
|
144
|
+
$y-pos:nth($y, 1);
|
|
145
|
+
$y-amount:nth($y, 2);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// Check Stroke Settings
|
|
151
|
+
@if $stroke {
|
|
152
|
+
@each $rule in $stroke {
|
|
153
|
+
@if type-of($rule) == string {
|
|
154
|
+
@if index((butt round square), $rule) {
|
|
155
|
+
$s-linecap : $rule;
|
|
156
|
+
}
|
|
157
|
+
@if index((miter miter-clip round bevel arcs), $rule) {
|
|
158
|
+
$s-linejoin : $rule;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
@elseif type-of($rule) == list {
|
|
162
|
+
@each $dash in $rule {
|
|
163
|
+
$s-dasharray: append($s-dasharray, $dash, comma);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
@elseif type-of($rule) == color {
|
|
167
|
+
$s-colour : $rule;
|
|
168
|
+
}
|
|
169
|
+
@elseif type-of($rule) == number {
|
|
170
|
+
@if $value-counter < 1 {
|
|
171
|
+
$s-width : $rule;
|
|
172
|
+
$value-counter : $value-counter + 1;
|
|
173
|
+
} @elseif $value-counter >= 1 {
|
|
174
|
+
$s-dasharray : ($rule, $rule);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Deafult size set if it remains empty
|
|
181
|
+
$size : if(length($size) == 0, 50, $size);
|
|
182
|
+
|
|
183
|
+
// Define width and height
|
|
184
|
+
$width : nth($size, 1);
|
|
185
|
+
$height : if(length($size) == 1, $width, nth($size, 2));
|
|
186
|
+
|
|
187
|
+
// Define all settings with strings
|
|
188
|
+
$fill : "' fill='" + _hash-fix($colour);
|
|
189
|
+
|
|
190
|
+
@if $stroke {
|
|
191
|
+
$s-colour : "' stroke='" + _hash-fix($s-colour);
|
|
192
|
+
$s-width : "' stroke-width='" + strip($s-width);
|
|
193
|
+
$s-alignment : "' stroke-alignment='inner";
|
|
194
|
+
$s-linecap : if($s-linecap, "' stroke-linecap='" + $s-linecap, '');
|
|
195
|
+
$s-linejoin : if($s-linejoin, "' stroke-linejoin='" + $s-linejoin, '');
|
|
196
|
+
$s-dasharray : if($s-dasharray, "' stroke-dasharray='" + $s-dasharray, '');
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
&#{_sudo($sudo)} {
|
|
200
|
+
content:"";
|
|
201
|
+
@include size($width $height);
|
|
202
|
+
position:absolute;
|
|
203
|
+
pointer-events:none;
|
|
204
|
+
background-image:svg("<svg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none' viewBox='0 0 100 100'><polygon points='" + $triangle + $fill + if($stroke, $s-colour + $s-linecap + $s-linejoin + $s-width + $s-alignment + $s-dasharray,'') + "'/></svg>");
|
|
205
|
+
background-size:100% 100%;
|
|
206
|
+
background-repeat:no-repeat;
|
|
207
|
+
@if $center {
|
|
208
|
+
top:calc(50% - #{addUnit($height)}/2); left:calc(50% - #{addUnit($width)}/2);
|
|
209
|
+
} @elseif ($position) {
|
|
210
|
+
@if $direction == up or $direction == down {
|
|
211
|
+
#{$y-pos}:calc(#{$y-amount} - #{addUnit($width)}/2);
|
|
212
|
+
#{$x-pos}:$x-amount;
|
|
213
|
+
}
|
|
214
|
+
@elseif $direction == left {
|
|
215
|
+
#{$y-pos}:$y-amount;
|
|
216
|
+
#{$x-pos}:calc(#{$x-amount} - #{addUnit($height)}/2);
|
|
217
|
+
}
|
|
218
|
+
@elseif $direction == right {
|
|
219
|
+
#{$y-pos}:calc(#{$y-amount} - #{addUnit($height)}/2);
|
|
220
|
+
#{$x-pos}:$x-amount;
|
|
221
|
+
}
|
|
222
|
+
@else {
|
|
223
|
+
#{$y-pos}:$y-amount;
|
|
224
|
+
#{$x-pos}:$x-amount;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
@content;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
@include ie {
|
|
232
|
+
@include triangle-classic($width $height $colour $direction $sudo) { background-image:none $imp; @content };
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
/// @alias triangle
|
|
238
|
+
///
|
|
239
|
+
/// @access public
|
|
240
|
+
///
|
|
241
|
+
/// @require {mixin} triangle
|
|
242
|
+
///
|
|
243
|
+
/// @return {*}
|
|
244
|
+
|
|
245
|
+
@mixin arrow($args...) {
|
|
246
|
+
@include triangle($args...) {
|
|
247
|
+
@content
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|