angular-float-box 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 833d9d882ae73f5c135dd014b83b1d46693c9ec4
4
+ data.tar.gz: f22b98252a94467700b71617302f7e63f3add46b
5
+ SHA512:
6
+ metadata.gz: ab4eec874b0b6d59b517df0280d8709dee885ff336fd9ebf05d2eda59999e653b9191fc3fe51d08c07d909142c7cbe7754dabb5d8ff29be9e92d7914a762cae1
7
+ data.tar.gz: 74ae8492219458e2d75cdfe67710d0a89d58db82a5678f1e058ff0190e2634af39111fc72b23d6913326d0be35660bac0ae51bc206fd7148c03f1e1b0cf2469f
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.2.1
5
+ before_install: gem install bundler -v 1.12.3
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in angular-float-box.gemspec
4
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 Alexander Mcritchie
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,40 @@
1
+ # Angular::Float::Box
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/angular-float-box`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'angular-float-box'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install angular-float-box
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/angular-float-box.
36
+
37
+
38
+ ## License
39
+
40
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'angular-float-box/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "angular-float-box"
8
+ spec.version = AngularFloatBox::VERSION
9
+ spec.authors = ["Alexander Mcritchie"]
10
+ spec.email = ["amcritchie@gmail.com"]
11
+
12
+ spec.summary = %q{Angular CRUD container framework.}
13
+ spec.description = %q{Framework for building a mobile responsive angular CRUD container with layouts for create, read and update views as well as a handful of features for good UX.}
14
+ spec.homepage = "https://github.com/amcritchie/angular-float-box"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ if spec.respond_to?(:metadata)
20
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
21
+ # spec.metadata['allowed_push_host'] = "http://mygemserver.com"
22
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
23
+ else
24
+ raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
25
+ end
26
+
27
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
28
+ spec.bindir = "exe"
29
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
+ spec.require_paths = ["lib"]
31
+
32
+ spec.add_development_dependency "bundler", "~> 1.12"
33
+ spec.add_development_dependency "rake", "~> 10.0"
34
+ spec.add_development_dependency "rspec", "~> 3.0"
35
+ end
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "angular-float-box"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,5 @@
1
+ require "angular-float-box/version"
2
+
3
+ module AngularFloatBox
4
+ class Engine < ::Rails::Engine; end
5
+ end
@@ -0,0 +1,3 @@
1
+ module AngularFloatBox
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,128 @@
1
+ /**
2
+ * CRUD container framework for AngularJS
3
+ * @version v0.0.1 - 2013-04-06
4
+ * @link http://angular-ui.github.com/
5
+ * @license MIT License, http://www.opensource.org/licenses/MIT
6
+ */
7
+
8
+ (function (window, angular, undefined) {
9
+ /*jshint globalstrict:true*/
10
+ /*global angular:false*/
11
+ 'use strict';
12
+
13
+ angular.module('angular-float-box', [])
14
+
15
+ .service('floatBox', ['$timeout',
16
+ function($timeout) {
17
+
18
+ // Call floatBox.initializes in the controller to create listeners for scrolling and dragging float-box
19
+ this.initialize = function($scope) {
20
+ initialize_scroll($scope)
21
+ initialize_draggable($scope)
22
+ }
23
+
24
+ // Initializes float-box's scroll listener.
25
+ function initialize_scroll($scope) {
26
+ // How many pixels needed for scroll to shrink.
27
+ var shrink_treshold = 10;
28
+ // Variable needed to check direction of scroll.
29
+ var last_scroll_top = 0;
30
+ // Boolean to mark if a shrink is still in process or not.
31
+ var animation_complete = true;
32
+ // Setup float-box scroll listener.
33
+ $('#float-box-container').scroll(function(event){
34
+ var scroll_top = $(this).scrollTop();
35
+ var is_down_scroll = (scroll_top > last_scroll_top)
36
+ // Check direction of scroll.
37
+ if (scroll_top > last_scroll_top){
38
+ // Down scroll
39
+ if (this.scrollTop > shrink_treshold) {
40
+ // Within threshold for shrinking.
41
+ if (animation_complete && !$('.float-box-head').hasClass("smaller")) {
42
+ $('.float-box-head').addClass("smaller");
43
+ $('.float-box-space').addClass("smaller");
44
+ animation_complete = false
45
+ setTimeout(function(){ animation_complete = true }, 500);
46
+ }
47
+ }
48
+ } else {
49
+ // Up scroll
50
+ if (this.scrollTop <= shrink_treshold) {
51
+ // Outside of threshold for shrinking.
52
+ if (animation_complete) {
53
+ $('.float-box-head').removeClass("smaller");
54
+ $('.float-box-space').removeClass("smaller");
55
+ animation_complete = false
56
+ setTimeout(function(){ animation_complete = true; }, 500);
57
+ }
58
+ }
59
+ }
60
+ last_scroll_top = scroll_top;
61
+ });
62
+ };
63
+
64
+ // Initializes float-box's positionable listener.
65
+ function initialize_draggable($scope) {
66
+ $scope.draggable_on = function() {
67
+ $('#float-box').draggable('enable');
68
+ $scope.draggable_disabled = false;
69
+ }
70
+ $scope.draggable_off = function() {
71
+ $('#float-box').draggable('disable');
72
+ $('#float-box').css('top', '').css('left', '').css('right', '').css('bottom', '');
73
+ $scope.draggable_disabled = true;
74
+ }
75
+ $scope.draggable_disabled = true;
76
+ $('#float-box').draggable().draggable('disable');
77
+ };
78
+
79
+ // Normalize the font-size of the title so it doesn't take more than one line.
80
+ this.normalize_title = function(){
81
+ // Find float-box-title and it's text.
82
+ var title = $(".float-box-title");
83
+ var title_text = $(".float-box-title-text");
84
+ // Remove js generated font-size.
85
+ title_text.css("font-size", "")
86
+ // Let DOM load so the title_text is fully rendered
87
+ $timeout(function() {
88
+ // If title text is larger than the width of the title div, lower the font-size.
89
+ if ((title_text.width() > title.width())) {
90
+ // Set the font-size to the .smaller font-size
91
+ title_text.css("font-size", 20)
92
+ }
93
+ })
94
+ }
95
+
96
+ // Show float-box via slide in from the right.
97
+ this.slide_in = function() {
98
+ $( "#float-box" ).show( "drop", {direction: 'right'})
99
+ }
100
+
101
+ // Hide float-box via slide in from the right.
102
+ this.slide_out = function() {
103
+ if ($(window).width() < 768) {
104
+ $( "#float-box" ).hide( "drop", {direction: 'right'})
105
+ };
106
+ }
107
+
108
+ // Display float-box-create tab.
109
+ this.create = function() {
110
+ // Show float-box-create-tab if not already shown.
111
+ $('#float-box-create-tab').tab('show')
112
+ }
113
+
114
+ // Display float-box-read tab.
115
+ this.read = function() {
116
+ // Show float-box-read-tab if not already shown.
117
+ $('#float-box-read-tab').tab('show')
118
+ // Show default tab if the is one.
119
+ $('.float-box-read-default-tab').tab('show')
120
+ }
121
+
122
+ // Display float-box-update tab.
123
+ this.update = function() {
124
+ // Show float-box-update-tab if not already shown.
125
+ $('#float-box-update-tab').tab('show')
126
+ }
127
+ }]);
128
+ })(window, window.angular);
@@ -0,0 +1,16 @@
1
+ (function(window,angular,undefined){'use strict';angular.module('angular-float-box',[]).service('floatBox',['$timeout',function($timeout){this.initialize=function($scope){initialize_scroll($scope)
2
+ initialize_draggable($scope)}
3
+ function initialize_scroll($scope){var shrink_treshold=10;var last_scroll_top=0;var animation_complete=!0;$('#float-box-container').scroll(function(event){var scroll_top=$(this).scrollTop();var is_down_scroll=(scroll_top>last_scroll_top)
4
+ if(scroll_top>last_scroll_top){if(this.scrollTop>shrink_treshold){if(animation_complete&&!$('.float-box-head').hasClass("smaller")){$('.float-box-head').addClass("smaller");$('.float-box-space').addClass("smaller");animation_complete=!1
5
+ setTimeout(function(){animation_complete=!0},500)}}}else{if(this.scrollTop<=shrink_treshold){if(animation_complete){$('.float-box-head').removeClass("smaller");$('.float-box-space').removeClass("smaller");animation_complete=!1
6
+ setTimeout(function(){animation_complete=!0},500)}}}
7
+ last_scroll_top=scroll_top})};function initialize_draggable($scope){$scope.draggable_on=function(){$('#float-box').draggable('enable');$scope.draggable_disabled=!1}
8
+ $scope.draggable_off=function(){$('#float-box').draggable('disable');$('#float-box').css('top','').css('left','').css('right','').css('bottom','');$scope.draggable_disabled=!0}
9
+ $scope.draggable_disabled=!0;$('#float-box').draggable().draggable('disable')};this.normalize_title=function(){var title=$(".float-box-title");var title_text=$(".float-box-title-text");title_text.css("font-size","")
10
+ $timeout(function(){if((title_text.width()>title.width())){title_text.css("font-size",20)}})}
11
+ this.slide_in=function(){$("#float-box").show("drop",{direction:'right'})}
12
+ this.slide_out=function(){if($(window).width()<768){$("#float-box").hide("drop",{direction:'right'})}}
13
+ this.create=function(){$('#float-box-create-tab').tab('show')}
14
+ this.read=function(){$('#float-box-read-tab').tab('show')
15
+ $('.float-box-read-default-tab').tab('show')}
16
+ this.update=function(){$('#float-box-update-tab').tab('show')}}])})(window,window.angular)
@@ -0,0 +1,338 @@
1
+ // Float Box SCSS
2
+
3
+ // Minify SCSS file
4
+ // $ sass --watch vendor/assets/stylesheets/angular-float-box.css.scss:vendor/assets/stylesheets/angular-float-box.min.css --style compressed
5
+
6
+ // Specific float box widths
7
+ .vendor-float-box{ width: 457px; }
8
+ #employee-float-box{ width: 457px; }
9
+ #application-float-box{ width: 457px; }
10
+
11
+
12
+ // == float-box ================================================
13
+ #float-box {
14
+
15
+ overflow-y: scroll;
16
+ overflow-x: hidden;
17
+
18
+ // Basic style
19
+ z-index: 10;
20
+ margin-top: 30px;
21
+ position: relative;
22
+ background-color: white;
23
+ // Border of float-box
24
+ border-radius: 6px;
25
+ border: 1px solid rgba(0, 0, 0, 0.2);
26
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
27
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
28
+ // md, sm, xs
29
+ @media (max-width:1200px) {
30
+ position: fixed; // Fix float-box to right side.
31
+ right: 30px; // Position float-box 30px from right edge.
32
+ }
33
+ // Mobile Sizes - Once in mobile, float-box should fit the whole screen.
34
+ @media (max-width:767px) {
35
+ display: none; // Start hidden, if there is a focused record the controller will show the float-box.
36
+ bottom: 0; // Position mobile-float-box to bottom of screen. Height is inherited from the dynamicHeightService
37
+ right: 0; // Position mobile-float-box to right of screen to overwrite the float-box 30px margin.
38
+ width: 100% !important; // Once in mobile, float-box should fit the whole screen.
39
+ }
40
+ }
41
+
42
+ // The float-box-tabs are navigated via js so they are not visible.
43
+ #float-box #float-box-tabs{
44
+ display: none;
45
+ }
46
+
47
+
48
+ // ==== float-box-positioner ==============================
49
+ #float-box #float-box-positioner {
50
+ border-bottom: 1px solid rgba(0, 0, 0, 0.2);
51
+ padding: 4px 10px;
52
+ padding: 2px 10px;
53
+ padding: 0 6px;
54
+ padding: 1px 8px;
55
+ background-color: #eeeeee;
56
+ text-align: right;
57
+ height: 22px;
58
+ cursor: pointer;
59
+ cursor: -webkit-grab;
60
+ cursor: -moz-grab;
61
+ }
62
+ // Positioner.active | Styling
63
+ #float-box #float-box-positioner:active {
64
+ cursor: -webkit-grabbing;
65
+ cursor: -moz-grabbing;
66
+ }
67
+
68
+ #float-box #float-box-positioner .float-box-positioner-btn {
69
+ border: 1px solid rgba(0, 0, 0, 0.2);
70
+ width: 18px;
71
+ height: 18px;
72
+ font-size: 11px;
73
+ line-height: 0.1;
74
+ padding: 3px 1px 0 0;;
75
+ margin-bottom: 5px;
76
+ border-radius: 30px;
77
+ text-align: center;
78
+ }
79
+ // Positioner | Icon
80
+ // Locations Icon used to resemble revert float_box to default state.
81
+ .fa-location:before {
82
+ content: "\f124";
83
+ }
84
+
85
+ // ==== float-box-positioner ==============================
86
+ #float-box #float-box-container {
87
+ overflow-y: scroll;
88
+ overflow-x: hidden;
89
+ }
90
+
91
+ // ==== float-box-head ==============================
92
+ // Add transisiton for all browsers
93
+ @mixin transition($duration) {
94
+ -webkit-transition: all $duration ease;
95
+ -moz-transition: all $duration ease;
96
+ -o-transition: all $duration ease;
97
+ transition: all $duration ease;
98
+ }
99
+ // Makes element position absolute, but fixed on mobile.
100
+ @mixin float-box-fixed {
101
+ z-index: 20;
102
+ position: absolute;
103
+ background-color: white;
104
+ @media (max-width:767px) {
105
+ position: fixed;
106
+ }
107
+ }
108
+ // Makes element position absolute, but fixed on mobile.
109
+ @mixin float-box-row {
110
+ float: left;
111
+ width: 100%;
112
+ }
113
+ #float-box .float-box-head {
114
+ @include float-box-fixed;
115
+ left: 0;
116
+ width: 100%;
117
+ padding-top: 10px;
118
+ // On Mobile, the top position needs to be 0 to show the
119
+ @media (max-width:767px) { top: 0; }
120
+ }
121
+
122
+ // ====== float-box-links ======
123
+ #float-box .float-box-head .float-box-links {
124
+ width: 100%;
125
+ padding: 0 10px;
126
+ font-size: 20px;
127
+ text-decoration: none;
128
+ display: inline-block;
129
+ }
130
+ // float-box-grey-link
131
+ #float-box .float-box-head .float-box-links .float-box-grey-link {
132
+ color: grey;
133
+ cursor: default;
134
+ }
135
+ // float-box-grey-link:hover
136
+ #float-box .float-box-head .float-box-links .float-box-grey-link:hover {
137
+ }
138
+ // ====== float-box-image ======
139
+ #float-box .float-box-head .float-box-image {
140
+ text-align: center;
141
+ img{
142
+ @include transition(.5s);
143
+ width: 80px;
144
+ height: 80px;
145
+ }
146
+ }
147
+ // condensed
148
+ #float-box .float-box-head.smaller .float-box-image {
149
+ img{
150
+ width: 30px;
151
+ height: 30px;
152
+ }
153
+ }
154
+
155
+ // ====== float-box-title ======
156
+ #float-box .float-box-head .float-box-title {
157
+ @include transition(.5s);
158
+ text-align: center;
159
+ font-size: 40px;
160
+ }
161
+ #float-box .float-box-head .float-box-title .float-box-title-text {
162
+ display: inline;
163
+ white-space: nowrap;
164
+ }
165
+ // condensed
166
+ #float-box .float-box-head.smaller .float-box-title {
167
+ font-size: 20px;
168
+ }
169
+
170
+ // ====== float-box-actions ======
171
+ #float-box .float-box-head .float-box-actions {
172
+ @include float-box-row;
173
+ }
174
+
175
+ #float-box .float-box-head .float-box-actions .btn{
176
+ @include transition(.5s);
177
+ width: 40px;
178
+ height: 40px;
179
+ padding: 7px 9px;
180
+ font-size: 20px;
181
+ line-height: 1.33;
182
+ border-radius: 25px;
183
+ }
184
+
185
+ #float-box .float-box-head .float-box-actions p{
186
+ @include transition(.5s);
187
+ }
188
+ // condensed
189
+ #float-box .float-box-head.smaller .float-box-actions .btn{
190
+ width: 30px;
191
+ height: 30px;
192
+ padding: 4px 8px;
193
+ font-size: 12px;
194
+ }
195
+ #float-box .float-box-head.smaller .float-box-actions p{
196
+ font-size: 10px;
197
+ }
198
+
199
+ #float-box .float-box-head .float-box-actions .float-box-actions-container {
200
+ margin: 0;
201
+ padding: 0;
202
+ list-style: none;
203
+ display: flex;
204
+ display: -moz-box;
205
+ display: -webkit-box;
206
+ display: -ms-flexbox;
207
+ display: -webkit-flex;
208
+ -webkit-flex-flow: row wrap;
209
+ justify-content: space-around;
210
+ justify-content: center;
211
+ }
212
+ #float-box .float-box-head .float-box-actions .float-box-actions-container .float-box-action{
213
+ text-align: center;
214
+ padding: 10px;
215
+ }
216
+ #float-box .float-box-head .float-box-actions .float-box-actions-container .float-box-action a{
217
+ text-decoration: none;
218
+ }
219
+
220
+ // ====== float-box-tabs ======
221
+ #float-box .float-box-head .float-box-tabs {
222
+ font-size: 12px;
223
+ padding: 0 15px;
224
+ }
225
+ f
226
+ // ====== Space for float-box-head ======
227
+ #float-box .float-box-head-space {
228
+ @include transition(.5s);
229
+ }
230
+ // Float box head space. This is needed because the head is fixed and there are elements under the head.
231
+ #float-box #float-box-read .float-box-head-space{
232
+ height: 340px;
233
+ @media (min-width:767px) { height: 309px; } // Non Mobile Sizes - Once in mobile, float-box should fit the whole screen.
234
+ }
235
+ // condensed
236
+ #float-box #float-box-read .float-box-head-space.smaller{
237
+ height: 245px;
238
+ @media (min-width:767px) { height: 214px; } // Non Mobile Sizes - Once in mobile, float-box should fit the whole screen.
239
+ }
240
+ // Float box head space. This is needed because the head is fixed and there are elements under the head.
241
+ #float-box #float-box-create .float-box-head-space{
242
+ height: 200px;
243
+ @media (min-width:767px) { height: 140px; } // Non Mobile Sizes - Once in mobile, float-box should fit the whole screen.
244
+ }
245
+ // condensed
246
+ #float-box #float-box-create .float-box-head-space.smaller{
247
+ height: 150px;
248
+ @media (min-width:767px) { height: 100px; } // Non Mobile Sizes - Once in mobile, float-box should fit the whole screen.
249
+ }
250
+
251
+ // ==== float-box-body ==============================
252
+ // ====== float-box-index-tab ======
253
+ #float-box .float-box-body .float-box-index-tab .float-box-index-tab-head{
254
+ @include float-box-fixed;
255
+ width: 100%;
256
+ padding: 0 15px;
257
+ pointer-events: none; // This allows a user to scroll the body of the float-box even though this element is fixed.
258
+ .float-box-search-bar {
259
+ width: 220px;
260
+ pointer-events: auto; // Since we removed the pointer-events from parent, we need this to allow the scroll to be clicked on.
261
+ // Mobile Sizes - Once in mobile, float-box should fit the whole screen.
262
+ @media (max-width:767px) {
263
+ width: 180px
264
+ }
265
+ }
266
+ .float-box-new-btn {
267
+ pointer-events: auto; // Since we removed the pointer-events from parent, we need this to allow the scroll to be clicked on.
268
+ }
269
+ }
270
+ // Head of an index tab in the float box.
271
+ #float-box .float-box-body .float-box-index-tab .float-box-index-table-head {
272
+ @include float-box-fixed;
273
+ width: 100%;
274
+ padding: 0 15px;
275
+ pointer-events: none; // This allows a user to scroll the body of the float-box even though this element is fixed.
276
+ a {
277
+ color: black;
278
+ text-decoration: none;
279
+ pointer-events: auto; // Since we removed the pointer-events from parent, we need this to allow the scroll to be clicked on.
280
+ }
281
+ }
282
+ // Table of an index tab in the float box.
283
+ #float-box .float-box-body .float-box-index-tab .float-box-index-table {
284
+ padding: 0 15px;
285
+ }
286
+ // Head of an index tab in the float box.
287
+ #float-box .float-box-body .float-box-index-tab .float-box-index-row {
288
+ img {
289
+ width: 40px;
290
+ height: 40px;
291
+ }
292
+ h4 {
293
+ margin-bottom: 0;
294
+ }
295
+ h6 {
296
+ margin-top: 0;
297
+ }
298
+ }
299
+ // ====== float-box-info-tab ======
300
+ #float-box .float-box-body .float-box-info-tab .float-box-info-row {
301
+ border-bottom: 1px solid lightgrey;
302
+ padding: 5px 15px;
303
+ font-size: 18px;
304
+ h3{
305
+ margin-bottom: 0;
306
+ }
307
+ }
308
+
309
+ // ====== Space for float-box-body ======
310
+ // Index Tab Head | Space
311
+ #float-box .float-box-index-tab-head-space{
312
+ @include transition(.5s);
313
+ height: 60px;
314
+ }
315
+ // Space needed for head of an index tab in the float box.
316
+ #float-box .float-box-index-table-head-space{
317
+ @include transition(.5s);
318
+ height: 32px;
319
+ }
320
+
321
+ // This will potentially be used as the float box head if we need it any thinner.
322
+ #float-box .float-box-small-head{
323
+ img{
324
+ width: 50px;
325
+ height: 50px;
326
+ }
327
+ .btn{
328
+ width: 30px;
329
+ height: 30px;
330
+ padding: 4px 8px;
331
+ font-size: 12px;
332
+ line-height: 1.33;
333
+ border-radius: 25px;
334
+ }
335
+ p{
336
+ font-size: 10px;
337
+ }
338
+ }
@@ -0,0 +1,2 @@
1
+ .vendor-float-box{width:457px}#employee-float-box{width:457px}#application-float-box{width:457px}#float-box{overflow-y:scroll;overflow-x:hidden;z-index:10;margin-top:30px;position:relative;background-color:white;border-radius:6px;border:1px solid rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2)}@media (max-width: 1200px){#float-box{position:fixed;right:30px}}@media (max-width: 767px){#float-box{display:none;bottom:0;right:0;width:100% !important}}#float-box #float-box-tabs{display:none}#float-box #float-box-positioner{border-bottom:1px solid rgba(0,0,0,0.2);padding:4px 10px;padding:2px 10px;padding:0 6px;padding:1px 8px;background-color:#eeeeee;text-align:right;height:22px;cursor:pointer;cursor:-webkit-grab;cursor:-moz-grab}#float-box #float-box-positioner:active{cursor:-webkit-grabbing;cursor:-moz-grabbing}#float-box #float-box-positioner .float-box-positioner-btn{border:1px solid rgba(0,0,0,0.2);width:18px;height:18px;font-size:11px;line-height:0.1;padding:3px 1px 0 0;margin-bottom:5px;border-radius:30px;text-align:center}.fa-location:before{content:"\f124"}#float-box #float-box-container{overflow-y:scroll;overflow-x:hidden}#float-box .float-box-head{z-index:20;position:absolute;background-color:white;left:0;width:100%;padding-top:10px}@media (max-width: 767px){#float-box .float-box-head{position:fixed}}@media (max-width: 767px){#float-box .float-box-head{top:0}}#float-box .float-box-head .float-box-links{width:100%;padding:0 10px;font-size:20px;text-decoration:none;display:inline-block}#float-box .float-box-head .float-box-links .float-box-grey-link{color:grey;cursor:default}#float-box .float-box-head .float-box-image{text-align:center}#float-box .float-box-head .float-box-image img{-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease;width:80px;height:80px}#float-box .float-box-head.smaller .float-box-image img{width:30px;height:30px}#float-box .float-box-head .float-box-title{-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease;text-align:center;font-size:40px}#float-box .float-box-head .float-box-title .float-box-title-text{display:inline;white-space:nowrap}#float-box .float-box-head.smaller .float-box-title{font-size:20px}#float-box .float-box-head .float-box-actions{float:left;width:100%}#float-box .float-box-head .float-box-actions .btn{-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease;width:40px;height:40px;padding:7px 9px;font-size:20px;line-height:1.33;border-radius:25px}#float-box .float-box-head .float-box-actions p{-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease}#float-box .float-box-head.smaller .float-box-actions .btn{width:30px;height:30px;padding:4px 8px;font-size:12px}#float-box .float-box-head.smaller .float-box-actions p{font-size:10px}#float-box .float-box-head .float-box-actions .float-box-actions-container{margin:0;padding:0;list-style:none;display:flex;display:-moz-box;display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;-webkit-flex-flow:row wrap;justify-content:space-around;justify-content:center}#float-box .float-box-head .float-box-actions .float-box-actions-container .float-box-action{text-align:center;padding:10px}#float-box .float-box-head .float-box-actions .float-box-actions-container .float-box-action a{text-decoration:none}#float-box .float-box-head .float-box-tabs{font-size:12px;padding:0 15px}f #float-box .float-box-head-space{-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease}#float-box #float-box-read .float-box-head-space{height:340px}@media (min-width: 767px){#float-box #float-box-read .float-box-head-space{height:309px}}#float-box #float-box-read .float-box-head-space.smaller{height:245px}@media (min-width: 767px){#float-box #float-box-read .float-box-head-space.smaller{height:214px}}#float-box #float-box-create .float-box-head-space{height:200px}@media (min-width: 767px){#float-box #float-box-create .float-box-head-space{height:140px}}#float-box #float-box-create .float-box-head-space.smaller{height:150px}@media (min-width: 767px){#float-box #float-box-create .float-box-head-space.smaller{height:100px}}#float-box .float-box-body .float-box-index-tab .float-box-index-tab-head{z-index:20;position:absolute;background-color:white;width:100%;padding:0 15px;pointer-events:none}@media (max-width: 767px){#float-box .float-box-body .float-box-index-tab .float-box-index-tab-head{position:fixed}}#float-box .float-box-body .float-box-index-tab .float-box-index-tab-head .float-box-search-bar{width:220px;pointer-events:auto}@media (max-width: 767px){#float-box .float-box-body .float-box-index-tab .float-box-index-tab-head .float-box-search-bar{width:180px}}#float-box .float-box-body .float-box-index-tab .float-box-index-tab-head .float-box-new-btn{pointer-events:auto}#float-box .float-box-body .float-box-index-tab .float-box-index-table-head{z-index:20;position:absolute;background-color:white;width:100%;padding:0 15px;pointer-events:none}@media (max-width: 767px){#float-box .float-box-body .float-box-index-tab .float-box-index-table-head{position:fixed}}#float-box .float-box-body .float-box-index-tab .float-box-index-table-head a{color:black;text-decoration:none;pointer-events:auto}#float-box .float-box-body .float-box-index-tab .float-box-index-table{padding:0 15px}#float-box .float-box-body .float-box-index-tab .float-box-index-row img{width:40px;height:40px}#float-box .float-box-body .float-box-index-tab .float-box-index-row h4{margin-bottom:0}#float-box .float-box-body .float-box-index-tab .float-box-index-row h6{margin-top:0}#float-box .float-box-body .float-box-info-tab .float-box-info-row{border-bottom:1px solid lightgrey;padding:5px 15px;font-size:18px}#float-box .float-box-body .float-box-info-tab .float-box-info-row h3{margin-bottom:0}#float-box .float-box-index-tab-head-space{-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease;height:60px}#float-box .float-box-index-table-head-space{-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease;height:32px}#float-box .float-box-small-head img{width:50px;height:50px}#float-box .float-box-small-head .btn{width:30px;height:30px;padding:4px 8px;font-size:12px;line-height:1.33;border-radius:25px}#float-box .float-box-small-head p{font-size:10px}
2
+ /*# sourceMappingURL=angular-float-box.min.css.map */
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "mappings": "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",
4
+ "sources": ["angular-float-box.css.scss"],
5
+ "names": [],
6
+ "file": "angular-float-box.min.css"
7
+ }
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: angular-float-box
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Alexander Mcritchie
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-06-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.12'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.12'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: Framework for building a mobile responsive angular CRUD container with
56
+ layouts for create, read and update views as well as a handful of features for good
57
+ UX.
58
+ email:
59
+ - amcritchie@gmail.com
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - ".gitignore"
65
+ - ".rspec"
66
+ - ".sass-cache/57b3601a17f3b68a34229d713831e0d6fc4b15a6/angular-float-box.css.scssc"
67
+ - ".travis.yml"
68
+ - Gemfile
69
+ - LICENSE.txt
70
+ - README.md
71
+ - Rakefile
72
+ - angular-float-box.gemspec
73
+ - bin/console
74
+ - bin/setup
75
+ - lib/angular-float-box.rb
76
+ - lib/angular-float-box/version.rb
77
+ - vendor/assets/javascripts/angular-float-box.js
78
+ - vendor/assets/javascripts/angular-float-box.min.js
79
+ - vendor/assets/stylesheets/angular-float-box.css.scss
80
+ - vendor/assets/stylesheets/angular-float-box.min.css
81
+ - vendor/assets/stylesheets/angular-float-box.min.css.map
82
+ homepage: https://github.com/amcritchie/angular-float-box
83
+ licenses:
84
+ - MIT
85
+ metadata:
86
+ allowed_push_host: https://rubygems.org
87
+ post_install_message:
88
+ rdoc_options: []
89
+ require_paths:
90
+ - lib
91
+ required_ruby_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ requirements: []
102
+ rubyforge_project:
103
+ rubygems_version: 2.4.5
104
+ signing_key:
105
+ specification_version: 4
106
+ summary: Angular CRUD container framework.
107
+ test_files: []