express_ui 0.1.0.rc1

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.
Files changed (107) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +38 -0
  4. data/Rakefile +37 -0
  5. data/app/assets/config/express_ui_manifest.js +2 -0
  6. data/app/assets/javascripts/express_ui/application.js +1 -0
  7. data/app/assets/javascripts/express_ui/copy_code.js +63 -0
  8. data/app/assets/javascripts/express_ui/search.js +103 -0
  9. data/app/assets/javascripts/express_ui/styleguide.js +90 -0
  10. data/app/assets/stylesheets/express_ui/atoms/_animations.sass +35 -0
  11. data/app/assets/stylesheets/express_ui/atoms/_buttons.sass +119 -0
  12. data/app/assets/stylesheets/express_ui/atoms/_headings.sass +51 -0
  13. data/app/assets/stylesheets/express_ui/atoms/_icons.sass +3 -0
  14. data/app/assets/stylesheets/express_ui/atoms/_images.sass +37 -0
  15. data/app/assets/stylesheets/express_ui/atoms/_media_queries.sass +27 -0
  16. data/app/assets/stylesheets/express_ui/atoms/_mixins.sass +33 -0
  17. data/app/assets/stylesheets/express_ui/atoms/_reset.sass +11 -0
  18. data/app/assets/stylesheets/express_ui/atoms/_typography.sass +167 -0
  19. data/app/assets/stylesheets/express_ui/atoms/_variables.sass +52 -0
  20. data/app/assets/stylesheets/express_ui/molecules/_button_group.sass +54 -0
  21. data/app/assets/stylesheets/express_ui/molecules/_container.sass +29 -0
  22. data/app/assets/stylesheets/express_ui/molecules/_flash_messages.sass +56 -0
  23. data/app/assets/stylesheets/express_ui/molecules/_form_groups.sass +96 -0
  24. data/app/assets/stylesheets/express_ui/molecules/_forms.sass +159 -0
  25. data/app/assets/stylesheets/express_ui/molecules/_lists.sass +56 -0
  26. data/app/assets/stylesheets/express_ui/molecules/_nav.sass +85 -0
  27. data/app/assets/stylesheets/express_ui/molecules/_tables.sass +77 -0
  28. data/app/assets/stylesheets/express_ui/molecules/_tabs.sass +23 -0
  29. data/app/assets/stylesheets/express_ui/organisms/_header.sass +29 -0
  30. data/app/assets/stylesheets/express_ui/organisms/_sidebar.sass +113 -0
  31. data/app/assets/stylesheets/express_ui/style.sass +31 -0
  32. data/app/assets/stylesheets/express_ui/styleguide.sass +200 -0
  33. data/app/assets/stylesheets/express_ui/templates/_content_sidebar.sass +31 -0
  34. data/app/assets/stylesheets/express_ui/templates/_full_width.sass +5 -0
  35. data/app/assets/stylesheets/express_ui/templates/_half_width.sass +8 -0
  36. data/app/assets/stylesheets/express_ui/templates/_master_detail.sass +50 -0
  37. data/app/components/code_demo.rb +31 -0
  38. data/app/controllers/express_ui/about_controller.rb +10 -0
  39. data/app/controllers/express_ui/application_controller.rb +5 -0
  40. data/app/controllers/express_ui/styleguide_controller.rb +10 -0
  41. data/app/controllers/express_ui/templates_controller.rb +26 -0
  42. data/app/controllers/express_ui/uicomponents_controller.rb +26 -0
  43. data/app/helpers/express_ui/application_helper.rb +28 -0
  44. data/app/jobs/express_ui/application_job.rb +4 -0
  45. data/app/mailers/express_ui/application_mailer.rb +6 -0
  46. data/app/models/express_ui/application_record.rb +5 -0
  47. data/app/views/express_ui/atoms/_animations.html.erb +33 -0
  48. data/app/views/express_ui/atoms/_buttons.html.erb +129 -0
  49. data/app/views/express_ui/atoms/_headings.html.erb +3 -0
  50. data/app/views/express_ui/atoms/_icons.html.erb +13 -0
  51. data/app/views/express_ui/atoms/_mixins.html.erb +6 -0
  52. data/app/views/express_ui/atoms/_typography.html.erb +201 -0
  53. data/app/views/express_ui/atoms/_variables.html.erb +50 -0
  54. data/app/views/express_ui/molecules/_button_group.html.erb +90 -0
  55. data/app/views/express_ui/molecules/_container.html.erb +32 -0
  56. data/app/views/express_ui/molecules/_flash_messages.html.erb +49 -0
  57. data/app/views/express_ui/molecules/_form_group_horizontal.html.erb +14 -0
  58. data/app/views/express_ui/molecules/_form_group_inline.html.erb +1 -0
  59. data/app/views/express_ui/molecules/_form_group_single_line.html.erb +9 -0
  60. data/app/views/express_ui/molecules/_form_groups.html.erb +69 -0
  61. data/app/views/express_ui/molecules/_forms.html.erb +209 -0
  62. data/app/views/express_ui/molecules/_forms_checkbox.html.erb +20 -0
  63. data/app/views/express_ui/molecules/_forms_radio.html.erb +12 -0
  64. data/app/views/express_ui/molecules/_forms_select.html.erb +11 -0
  65. data/app/views/express_ui/molecules/_nav.html.erb +11 -0
  66. data/app/views/express_ui/molecules/_nav_mega_menu.html.erb +74 -0
  67. data/app/views/express_ui/molecules/_table.html.erb +93 -0
  68. data/app/views/express_ui/molecules/_table_with_filtering.html.erb +55 -0
  69. data/app/views/express_ui/organisms/_header.html.erb +24 -0
  70. data/app/views/express_ui/shared/_header.html.erb +10 -0
  71. data/app/views/express_ui/shared/_search_box.html.erb +6 -0
  72. data/app/views/express_ui/shared/_sidebar_left.html.erb +4 -0
  73. data/app/views/express_ui/shared/_sidebar_right.html.erb +5 -0
  74. data/app/views/express_ui/styleguide/about.html.erb +22 -0
  75. data/app/views/express_ui/styleguide/index.html.erb +79 -0
  76. data/app/views/express_ui/templates/_header.html.erb +15 -0
  77. data/app/views/express_ui/templates/_templates.html.erb +57 -0
  78. data/app/views/express_ui/templates/content_and_sidebar.html.erb +32 -0
  79. data/app/views/express_ui/templates/content_and_sidebar_fixed.html.erb +34 -0
  80. data/app/views/express_ui/templates/full_width.html.erb +25 -0
  81. data/app/views/express_ui/templates/half_width.html.erb +25 -0
  82. data/app/views/express_ui/templates/master_detail.html.erb +41 -0
  83. data/app/views/express_ui/templates/master_detail_fixed.html.erb +36 -0
  84. data/app/views/express_ui/uicomponents/_buttons.html.et +10 -0
  85. data/app/views/express_ui/uicomponents/_flash_message.html.et +19 -0
  86. data/app/views/express_ui/uicomponents/_forms.html.et +118 -0
  87. data/app/views/express_ui/uicomponents/_heading.html.et +24 -0
  88. data/app/views/express_ui/uicomponents/_icons.html.et +35 -0
  89. data/app/views/express_ui/uicomponents/_layout.html.et +47 -0
  90. data/app/views/express_ui/uicomponents/_lists.html.et +9 -0
  91. data/app/views/express_ui/uicomponents/_login.html.erb +15 -0
  92. data/app/views/express_ui/uicomponents/_nav.html.et +18 -0
  93. data/app/views/express_ui/uicomponents/_pages.html.et +22 -0
  94. data/app/views/express_ui/uicomponents/_panel.html.et +33 -0
  95. data/app/views/express_ui/uicomponents/_popup.html.et +19 -0
  96. data/app/views/express_ui/uicomponents/_register.html.erb +14 -0
  97. data/app/views/express_ui/uicomponents/_sidebar.html.et +8 -0
  98. data/app/views/express_ui/uicomponents/_table.html.et +29 -0
  99. data/app/views/express_ui/uicomponents/_widget_box.html.et +14 -0
  100. data/app/views/express_ui/uicomponents/index.html.erb +55 -0
  101. data/app/views/layouts/express_ui/styleguide.html.erb +20 -0
  102. data/config/routes.rb +12 -0
  103. data/lib/express_ui.rb +5 -0
  104. data/lib/express_ui/engine.rb +12 -0
  105. data/lib/express_ui/version.rb +3 -0
  106. data/lib/tasks/express_ui_tasks.rake +4 -0
  107. metadata +251 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3aba4d25bce3a9b4dad5029c100a38467f15c305
4
+ data.tar.gz: d99847094ecdb814e7a25718cbd09e23b265f7fc
5
+ SHA512:
6
+ metadata.gz: '0362895f696cd259db5f153335668a32af3cd688a0d2a76c5ab402f05696b60b7a92a65593842fa62ea00596d0745d799bf1f5c146e6e335362b6ad1f3db2ba0'
7
+ data.tar.gz: 485aeecd0951c2ee20a9d67e129480a4e95ba072263e27cc7c1270c6d05f53db3af040087772cc0d20d3c93d570518a5fa01f72d2af105988bfb3c181504cfb5
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2017 Steven Talcott Smith
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,38 @@
1
+ Express UI
2
+ ==========
3
+
4
+ User interface library for AppExpress components.
5
+
6
+ ## Installation
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'express_ui'
11
+ ```
12
+
13
+ And then execute:
14
+ ```bash
15
+ $ bundle
16
+ ```
17
+
18
+ Or install it yourself as:
19
+ ```bash
20
+ $ gem install express_ui
21
+ ```
22
+
23
+ ## Usage
24
+
25
+ Start the dummy Rails app:
26
+
27
+ ```
28
+ cd test/dummy
29
+ bin/rails s
30
+ ```
31
+
32
+ Visit `http://localhost:3000/express_ui`.
33
+
34
+ ## Contributing
35
+ Contribution directions go here.
36
+
37
+ ## License
38
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,37 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'ExpressUi'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.md')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
18
+ load 'rails/tasks/engine.rake'
19
+
20
+
21
+ load 'rails/tasks/statistics.rake'
22
+
23
+
24
+
25
+ require 'bundler/gem_tasks'
26
+
27
+ require 'rake/testtask'
28
+
29
+ Rake::TestTask.new(:test) do |t|
30
+ t.libs << 'lib'
31
+ t.libs << 'test'
32
+ t.pattern = 'test/**/*_test.rb'
33
+ t.verbose = false
34
+ end
35
+
36
+
37
+ task default: :test
@@ -0,0 +1,2 @@
1
+ //= link_directory ../javascripts/express_ui .js
2
+ //= link_directory ../stylesheets/express_ui .css
@@ -0,0 +1 @@
1
+ //= require_tree .
@@ -0,0 +1,63 @@
1
+ function testCopyComand() {
2
+ try {
3
+ document.execCommand("copy")
4
+ return true
5
+ }
6
+ catch (error) {
7
+ return false
8
+ }
9
+ }
10
+
11
+ function addClickToCopyButton(codeBlocks) {
12
+ codeBlocks.map(function(codeBlock, index){
13
+ var clickToCopyButton = createButton()
14
+ codeBlock.appendChild(clickToCopyButton)
15
+ clickToCopyButton.addEventListener('click', function(e) {
16
+ selectElementRange(this.parentNode)
17
+ })
18
+ })
19
+ }
20
+
21
+ function selectElementRange(copyElementSelect) {
22
+ var range = document.createRange()
23
+ range.selectNode(copyElementSelect)
24
+ window.getSelection().removeAllRanges()
25
+ window.getSelection().addRange(range)
26
+ document.execCommand("copy")
27
+ window.getSelection().removeAllRanges()
28
+ }
29
+
30
+ function createButton() {
31
+ var copyButton = document.createElement('button')
32
+ copyButton.className = 'ae-btn ae-btn-primary click-to-copy'
33
+ copyButton.data = 'Click to copy'
34
+ var clipboard = document.createElement('i')
35
+ clipboard.className = 'fa fa-clipboard'
36
+ copyButton.appendChild(clipboard)
37
+ return copyButton
38
+ }
39
+
40
+ function addClickToCopyText() {
41
+ var codeBlockButtons = Array.prototype.slice.call(document.querySelectorAll('.ae-code-block .ae-btn'))
42
+
43
+ codeBlockButtons.map(function(button, index) {
44
+ var pre = button.closest('pre')
45
+ button.setAttribute('data-tooltip', 'Click to copy')
46
+ button.addEventListener('click', function(e){
47
+ button.setAttribute('data-tooltip', 'Copied!')
48
+ setTimeout(function(){
49
+ button.setAttribute('data-tooltip', 'Click to copy')},
50
+ 500)
51
+ })
52
+ })
53
+ }
54
+
55
+ document.addEventListener("DOMContentLoaded", function() {
56
+ if (testCopyComand()) {
57
+ var codeBlocks = Array.prototype.slice.call(document.querySelectorAll(".ae-code-block"))
58
+
59
+ addClickToCopyButton(codeBlocks)
60
+ addClickToCopyText()
61
+ }
62
+ })
63
+
@@ -0,0 +1,103 @@
1
+ function hasClass(element, cls) {
2
+ return element.classList.contains(cls)
3
+ }
4
+
5
+ function addMatch(matchedElements, node) {
6
+ if (node.nodeType !== Node.TEXT_NODE) {
7
+ if (matchedElements.includes(node) == false){
8
+ matchedElements.push(node)
9
+ }
10
+ }
11
+ }
12
+
13
+ function addNextElements(elements, matchedElements) {
14
+ elements.map(function(index, item){
15
+ if (matchedElements.includes(item) == false){
16
+ matchSubElements(item, matchedElements, null)
17
+ }
18
+ })
19
+ }
20
+
21
+ function checkItemIsHeader($item) {
22
+ return $item.is(':header') //h1, h2, h3, etc
23
+ }
24
+
25
+ function matchSubElements(element, matchedElements, header, isHeader) {
26
+ var $subElements = $(element.children)
27
+
28
+ if (isHeader) {
29
+ matchedElements.push($subElements[0])
30
+ } else {
31
+ $subElements.map(function(index, item){
32
+ var itemIsHeader = checkItemIsHeader($(item)) ? true : false
33
+ matchSubElements(item, matchedElements, header, itemIsHeader)
34
+ })
35
+ }
36
+
37
+ matchedElements.push(element)
38
+ }
39
+
40
+ function matchHeader(header, matchedElements) {
41
+ matchSubElements(header, matchedElements, null, true)
42
+ }
43
+
44
+ function matchElement(header, matchedElements, regexp){
45
+ var directSibElement = $(header).nextUntil(header.tagName)[0]
46
+ var $elements = []
47
+
48
+ if (directSibElement){
49
+ $elements = $(directSibElement.children)
50
+ }
51
+
52
+ if (header.textContent.match(regexp)){
53
+ matchHeader(header, matchedElements)
54
+
55
+ if (directSibElement) {addMatch(matchedElements, directSibElement) }
56
+
57
+ addNextElements($elements, matchedElements)
58
+ } else {
59
+ if (!!$elements.length) {
60
+ for (var i = 0; i < $elements.length; i++){
61
+ if ($elements[i].textContent.match(regexp)){
62
+ matchSubElements($elements[i], matchedElements, header)
63
+ addMatch(matchedElements, directSibElement)
64
+ matchHeader(header, matchedElements)
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+
71
+ document.addEventListener("DOMContentLoaded", function() {
72
+
73
+ if (!document.querySelector('#ae-search-box')) { return; }
74
+ document.querySelector("#ae-search-box").addEventListener("input", function(event) {
75
+
76
+ var searchTerm = this.value
77
+ var headers = Array.prototype.slice.call(document.querySelector('.js-anchorific-content').querySelectorAll("h2"))
78
+ var regexp = new RegExp(searchTerm, "igm")
79
+ var allElements = document.querySelector('.js-anchorific-content').querySelectorAll('*')
80
+ var allElementsArray = Array.prototype.slice.call(allElements)
81
+ var matchedElements = []
82
+ var unmatchedElements = []
83
+
84
+ for (var i = 0; i < headers.length; i++) {
85
+ if (matchedElements.includes(headers[i]) == false){
86
+ matchElement(headers[i], matchedElements, regexp)
87
+ }
88
+ }
89
+
90
+ unmatchedElements = allElementsArray.filter(function(element, index) {
91
+ return matchedElements.indexOf(element) === -1
92
+ })
93
+
94
+ unmatchedElements.map(function(item, index) {
95
+ item.style.display = "none"
96
+ })
97
+
98
+ matchedElements.map(function(item, index) {
99
+ item.style.display = ""
100
+ })
101
+ })
102
+ })
103
+
@@ -0,0 +1,90 @@
1
+ //= require jquery
2
+ //= require jquery_ujs
3
+ //= require anchorific
4
+ //= require resizable
5
+
6
+ $(function() {
7
+
8
+ $('.ae-sidebar-right').resizable({
9
+ handles: 'w',
10
+ minWidth: 100,
11
+ maxWidth: $('.ae-sidebar-right').parent().width() * 0.4,
12
+ containment: '.ae-template-master-detail-fixed',
13
+ resize: function(event, ui){
14
+ var siblingMain = ui.element.siblings('.ae-content')
15
+ var siblingSidebar = ui.element.siblings('.ae-sidebar')
16
+ var parent = ui.element.parent()
17
+ ui.size.height = ui.originalSize.height
18
+ siblingMain.width(parent.width() - (siblingSidebar.width() + ui.size.width) - 100)
19
+ },
20
+ stop: function(event, ui){
21
+ ui.element.css('left', '')
22
+ }
23
+ })
24
+
25
+ var rightCaretIcon = "<i class='fa fa-caret-right'></i>"
26
+
27
+ $(".js-anchorific-content").anchorific({
28
+ headers: ':header:not(.ae-demo-container :header)'
29
+ });
30
+
31
+ $(".anchorific ul > li").each(function(index, item) {
32
+ $(item).has("ul").children("a").prepend(rightCaretIcon)
33
+ });
34
+
35
+ $('.anchorific a').on('click', function(e){
36
+ $(e.target).closest('li[data-tag]').children('ul').toggle()
37
+ $(e.target).find('i').toggleClass('fa-caret-right fa-caret-down')
38
+
39
+ $('html, body').animate({
40
+ scrollTop: $('[id="' + $.attr($(e.target).closest('a')[0], 'href').substr(1) + '"]').offset().top
41
+ }, 500);
42
+ return false;
43
+ });
44
+
45
+ $('body').append("<a href='#' class='ae-btn ae-btn-secondary ae-btn-sm back-to-top'>Back to top &nbsp;<i class='fa fa-long-arrow-up'></i></a>");
46
+ $('.back-to-top').css('display', 'none')
47
+
48
+ // Freeze body when scrolling over sidebar
49
+ // $(".ae-sidebar-overlay").on("mouseover", function() {
50
+ // $("body").css("overflow-y", "hidden");
51
+ // $(this).css('z-index', '-1');
52
+ // });
53
+
54
+ // $(".js-ae-sidebar").on("mouseleave", function() {
55
+ // $("body").css("overflow-y", "auto");
56
+ // $(this).css('z-index', '1');
57
+ // });
58
+
59
+ $(window).scroll(function() {
60
+ if ($(this).scrollTop() >= 100) { // If page is scrolled more than 100px
61
+ $('.back-to-top').fadeIn(200); // Fade in the arrow
62
+ } else {
63
+ $('.back-to-top').fadeOut(100); // Else fade out the arrow
64
+ }
65
+ });
66
+
67
+ $('.back-to-top').click(function() {
68
+ $("html, body").animate({ scrollTop: 0 }, "slow");
69
+ return false;
70
+ });
71
+
72
+
73
+ //demo tabs
74
+ $('.ae-demo-container').on('click', '.ae-tab', function(e){
75
+ $clickedTab = $(this)
76
+ $parentContainer = $clickedTab.parents('.ae-demo-container')
77
+ tabContent = $clickedTab.data('tab')
78
+
79
+ $parentContainer.find('.ae-tab.active-tab').removeClass('active-tab')
80
+ $clickedTab.addClass('active-tab')
81
+ $parentContainer.find('.ae-tab-content.active-tab').removeClass('active-tab')
82
+ $parentContainer.find('#' + tabContent).addClass('active-tab')
83
+ });
84
+ });
85
+
86
+ $( document ).ready(function() {
87
+ $("ul li[data-tag='2']").children("ul").css("display", "none");
88
+ });
89
+
90
+
@@ -0,0 +1,35 @@
1
+ @mixin easeInOut
2
+ -moz-transition: all 0.3s ease-in-out
3
+ -o-transition: all 0.3s ease-in-out
4
+ -webkit-transition: all 0.3s ease-in-out
5
+ transition: all 0.3s ease-in-out
6
+
7
+ @mixin animate($n)
8
+ transition: all $n ease-out
9
+
10
+ @mixin scale
11
+ transform: scale(1.1)
12
+
13
+ .ae-fade-in
14
+ &:hover
15
+ animation: fadeIn 1s linear
16
+
17
+ .ae-fade-out
18
+ &:hover
19
+ animation: fadeOut 1s linear
20
+
21
+ .ae-ease-in-out
22
+ &:hover
23
+ @include easeInOut
24
+
25
+ @keyframes fadeIn
26
+ 0%
27
+ opacity: 0
28
+ 100%
29
+ opacity: 1
30
+
31
+ @keyframes fadeOut
32
+ 0%
33
+ opacity: 1
34
+ 100%
35
+ opacity: 0
@@ -0,0 +1,119 @@
1
+ @mixin button
2
+ @include border-radius(3px !important)
3
+ padding: 0.5em
4
+ margin: 0.25em 0.25em 0 0
5
+ border: 0
6
+ cursor: pointer
7
+
8
+ .ae-btn
9
+ @include easeInOut
10
+ @include button
11
+ display: inline-block
12
+ text-decoration: none
13
+ text-transform: uppercase
14
+ box-shadow: none
15
+ vertical-align: middle
16
+ @include body-font
17
+
18
+ &:hover, &-hover
19
+ @include box-shadow(0, 0px, 5px, 0, $border-dark)
20
+
21
+ &:active, &-active
22
+ @include box-shadow(inset, 2px, 2px, 2px, darken($secondary-color, 5%))
23
+
24
+ &:focus, &-focus
25
+ @include box-shadow(inset, 2px, 2px, 2px, darken($secondary-color, 5%))
26
+ outline-color: $primary-color
27
+
28
+
29
+ .ae-btn-default
30
+ background: $secondary-color
31
+ border: 1px solid $secondary-color
32
+ color: $icon-color !important
33
+
34
+ &:active, &:focus
35
+ @include box-shadow(inset, 2px, 2px, 2px, darken($secondary-color, 20%))
36
+
37
+ .ae-btn-primary
38
+ background: $primary-color
39
+ border: 1px solid $primary-color
40
+ color: #fff !important
41
+
42
+ *
43
+ color: #fff !important
44
+
45
+ &.ae-btn-border
46
+ color: $primary-color !important
47
+
48
+
49
+ &:active, &:focus
50
+ @include box-shadow(inset, 2px, 2px, 2px, darken($primary-color, 20%))
51
+
52
+ .ae-btn-secondary
53
+ background: $secondary-color
54
+ border: 1px solid $secondary-color
55
+ color: #fff !important
56
+
57
+ *
58
+ color: #fff !important
59
+
60
+ &.ae-btn-border
61
+ color: $secondary-color !important
62
+
63
+ &:active, &:focus
64
+ @include box-shadow(inset, 2px, 2px, 2px, darken($secondary-color, 5%))
65
+
66
+ .ae-btn-success
67
+ background: $success
68
+ border: 1px solid $success
69
+ color: #fff !important
70
+
71
+ *
72
+ color: #fff !important
73
+
74
+ &:active, &:focus
75
+ @include box-shadow(inset, 2px, 2px, 2px, darken($success, 20%))
76
+
77
+ .ae-btn-danger
78
+ background: $cancelled
79
+ border: 1px solid $cancelled
80
+ color: #fff !important
81
+
82
+ *
83
+ color: #fff !important
84
+
85
+ &:active, &:focus
86
+ @include box-shadow(inset, 2px, 2px, 2px, darken($cancelled, 20%))
87
+
88
+
89
+ .ae-btn-sm
90
+ padding-top: 0.25em
91
+ padding-bottom: 0.25em
92
+ @include h6
93
+
94
+ .ae-btn-md
95
+ padding-top: 0.45em
96
+ padding-bottom: 0.45em
97
+ @include h5
98
+
99
+ .ae-btn-lg
100
+ padding-top: 0.5em
101
+ padding-bottom: 0.5em
102
+ @include h4
103
+
104
+ .ae-btn-border
105
+ border-style: solid
106
+ border-width: 1px
107
+ background: none
108
+
109
+ &:active
110
+ @include box-shadow(inset, 2px, 2px, 2px, lighten($secondary-color, 15%))
111
+
112
+ .ae-btn-disabled, button:disabled
113
+ background: lighten($secondary-color, 30%)
114
+ color: #ccc
115
+ cursor: not-allowed
116
+ border-color: lighten($secondary-color, 30%)
117
+
118
+ &:hover
119
+ box-shadow: none