angular-float-box 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.
@@ -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: []