├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
├── angular-confirm.png
├── animations.html
├── app.js
├── bower.json
├── callback.html
├── css
├── angular-confirm.css
└── angular-confirm.less
├── demo
├── demo.css
├── demo.js
├── libs
│ ├── bundled.css
│ ├── bundled.js
│ └── fonts
│ │ ├── FontAwesome.otf
│ │ ├── fontawesome-webfont.eot
│ │ ├── fontawesome-webfont.svg
│ │ ├── fontawesome-webfont.ttf
│ │ ├── fontawesome-webfont.woff
│ │ └── fontawesome-webfont.woff2
└── logo-name.svg
├── dist
├── angular-confirm.min.css
└── angular-confirm.min.js
├── form.html
├── index.html
├── js
└── angular-confirm.js
├── package.json
├── table.html
├── text.txt
├── themelayout.png
├── themelayout.psd
├── themes.html
└── themes_popup.html
/.gitattributes:
--------------------------------------------------------------------------------
1 | * linguist-vendored
2 | *.js linguist-vendored=false
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /nbproject/private/
2 | /nbproject
3 | /.idea
4 | /themelayout.psd
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Boniface Pereira
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 all
13 | 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 THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ### 
2 | *alerts, confirms and dialogs in* ***one.***
3 |
4 | v1.1.0
5 |
6 | Angular-confirm targets to make it really easy to use confirm dialogs with angular.
7 | With angular-confirm you can harness the angular two-way data binding to update the content as well as make changes to the model in runtime.
8 |
9 | A re-write of the jquery-confirm v3 plugin with all features.
10 |
11 | * Define multiple buttons
12 | * Trigger buttons on key up events
13 | * Beautiful themes and animations
14 | * All modal properties are two-way binded.
15 | * Do things the angular way
16 |
17 | View detailed features here [Documentation & Examples](http://craftpip.github.io/angular-confirm)
18 |
19 | ## Installation
20 |
21 | Download the latest release [here](https://github.com/craftpip/jquery-confirm/archive/master.zip) and use the files within the `dist` directory
22 |
23 | via Bower:
24 | `$ bower install angular-confirm1`
25 |
26 | via NPM:
27 | `$ npm install angular-confirm1`
28 |
29 | ##Basic usage
30 |
31 | The snippet below shows the most commonly used properties, there are more to find in the docs.
32 | ```js
33 | angular.module('myApp', ['cp.ngConfirm'])
34 | .controller('myController', function($scope, $ngConfirm){
35 | $scope.hey = 'Hello there!';
36 | $ngConfirm({
37 | title: 'What is up?',
38 | content: 'Here goes a little content, {{hey}} ',
39 | contentUrl: 'template.html', // if contentUrl is provided, 'content' is ignored.
40 | scope: $scope,
41 | buttons: {
42 | // long hand button definition
43 | ok: {
44 | text: "ok!",
45 | btnClass: 'btn-primary',
46 | keys: ['enter'], // will trigger when enter is pressed
47 | action: function(scope){
48 | $ngConfirm('the user clicked ok');
49 | }
50 | },
51 | // short hand button definition
52 | close: function(scope){
53 | $ngConfirm('the user clicked close');
54 | }
55 | },
56 | });
57 | });
58 | ```
59 |
60 | ## Demo and Documentation
61 |
62 | See Detailed Docs + Example [here](http://craftpip.github.io/angular-confirm).
63 |
64 | ## Issues
65 |
66 | Please post issues and feature request here [Github issues](https://github.com/craftpip/angular-confirm/issues)
67 |
68 | ## Version changes
69 |
70 | (coming in 1.11.0)
71 | * remove jquery as dependency
72 |
73 | (new in 1.1.0)
74 | * Major performance fixes
75 | * Fix memory leaks
76 | * Removed ngAnimate and ngSanitize as dependencies
77 | * added set methods to modal
78 | * watchInterval property removed, content watch is now done with $digest
79 | * button functions added
80 | * theme fixes
81 | * onScopeReady callback added
82 |
83 | (new in 1.0.1)
84 | * Added project to bower
85 |
86 |
87 | ## Copyright and license
88 |
89 | Copyright (C) 2016 angular-confirm
90 |
91 | Licensed under [the MIT license](LICENSE).
92 |
93 |
--------------------------------------------------------------------------------
/angular-confirm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/craftpip/angular-confirm/0283ef1ce55b263f7db71d3d1ced357b9b3ef3c7/angular-confirm.png
--------------------------------------------------------------------------------
/animations.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | angular-confirm.js | The multipurpose alert & confirm
7 |
9 |
12 |
14 |
16 |
19 |
21 |
23 |
25 |
27 |
30 |
33 |
36 |
39 |
41 |
43 |
45 |
47 |
49 |
51 |
53 |
54 |
56 |
57 |
58 |
60 |
61 |
62 |
63 |
66 |
67 |
68 |
69 |
72 |
74 |
75 |
76 |
77 |
79 |
136 |
151 |
153 |
154 |
155 |
156 |
195 |
196 |
197 |
198 |
199 | back to
200 | Main Docs
201 |
202 |
203 |
204 |
209 |
212 |
213 |
214 | Open/Close Animations
215 |
216 |
217 | Impression lies in what we see.
218 | Different animations can be set for open and close events.
219 |
220 |
221 |
2D animations:
222 |
right
223 |
left
224 |
bottom
225 |
top
226 |
Rotate
227 |
none
228 |
opacity
229 |
230 |
3D animations:
231 |
scale (default)
232 |
zoom
233 |
scaleY
234 |
scaleX
235 |
RotateY
236 |
RotateYR
237 |
RotateX
238 |
RotateXR
239 |
240 |
241 | You can also create/define your own animations
242 |
243 |
$ngConfirm({
244 | animation: 'zoom',
245 | closeAnimation: 'scale'
246 | });
247 | // Available animations:
248 | // right, left, bottom, top, rotate, none, opacity, scale, zoom,
249 | // scaleY, scaleX, rotateY, rotateYR (reverse), rotateX, rotateXR (reverse)
250 |
251 |
252 | Animation bounce
253 |
254 |
255 |
Some eye candy thats in fashion.
256 |
No bounce
257 |
1.5 bounce
258 |
2 bounce
259 |
2.5 bounce
260 |
261 |
$ngConfirm({
262 | animationBounce: 1.5, // default is 1.2 whereas 1 is no bounce.
263 | });
264 |
265 |
266 | Animation speed
267 |
268 |
269 |
Adjust the duration of animation.
270 |
I'm too Late
271 |
I'm too Quick
272 |
273 |
$.confirm({
274 | animationSpeed: 2000 // 2 seconds
275 | });
276 | $.confirm({
277 | animationSpeed: 200 // 0.2 seconds
278 | });
279 |
280 |
281 |
282 |
283 | Define your custom animations
284 |
285 | Defining your custom animations lets you match your existing user interface.
286 |
287 |
288 |
Example for a newsflash animation. These animations are define the starting point of the
289 | openAnimation and ending point of the closeAnimation
290 |
Custom animation
291 |
292 |
297 |
298 |
299 |
300 |
.ng-confirm .ng-confirm-box.ng-confirm-animation-news{
301 | transform: rotate(400deg) scale(0);
302 | }
303 |
304 |
305 |
$ngConfirm({
306 | animation: 'news',
307 | closeAnimation: 'news',
308 | });
309 |
310 |
311 |
312 | The animation name should be lowercase, or they wont work.
313 |
314 |
315 |
316 | .ng-confirm-animation-animation-name
translates to 'animation-name'
317 |
318 |
319 | .ng-confirm-animation-animationhere
translates to 'animationhere'
320 |
321 |
322 |
323 |
324 |
325 | Background dismiss animation
326 |
327 | This animation takes place when backgroundDismiss is false, or returns a falsy value.
328 |
329 |
330 |
Example for a newsflash animation. These animations are define the starting point of the
331 | openAnimation and ending point of the closeAnimation
332 |
Custom animation
333 |
334 |
356 |
357 |
358 |
359 |
.ng-confirm .ng-confirm-box.ng-confirm-hilight.ng-confirm-hilight-random {
360 | /*the animation name is bob*/
361 | transform: translate3d(0, 0, 0);
362 | animation: random 1s;
363 | }
364 |
365 | @keyframes random {
366 | 10%, 90% {
367 | transform: rotate(-2deg);
368 | }
369 | 20%, 80% {
370 | transform: rotate(4deg);
371 | }
372 | 30%, 50%, 70% {
373 | transform: rotate(-8deg);
374 | }
375 | 40%, 60% {
376 | transform: rotate(8deg);
377 | }
378 | }
379 |
380 |
381 |
$ngConfirm({
382 | backgroundDismissAnimation: 'random',
383 | });
384 |
385 |
386 |
387 | The animation name should be lowercase, or they wont work.
388 |
389 |
390 |
391 |
404 |
405 |
406 |
407 |
408 |
410 |
411 |
413 |
414 |
430 |
431 |
435 |
450 |
451 |
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-confirm1",
3 | "version": "1.1.0",
4 | "homepage": "https://github.com/craftpip/angular-confirm",
5 | "authors": [
6 | "boniface pereira "
7 | ],
8 | "description": "A multipurpose alert and confirm plugin",
9 | "main": [
10 | "css/angular-confirm.css",
11 | "js/angular-confirm.js"
12 | ],
13 | "keywords": [
14 | "angular-plugin",
15 | "javascript",
16 | "confirm",
17 | "alert",
18 | "dialog",
19 | "angular"
20 | ],
21 | "license": "MIT",
22 | "ignore": [
23 | "**/.*",
24 | "node_modules",
25 | "bower_components",
26 | "test",
27 | "tests"
28 | ],
29 | "dependencies": {
30 | "bootstrap": "3.*",
31 | "jquery": ">=1.6"
32 | }
33 | }
--------------------------------------------------------------------------------
/callback.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Your name
4 |
5 |
6 |
Put value in input
7 |
8 | Click on the above button to enable the "ok" button
9 |
10 |
11 |
--------------------------------------------------------------------------------
/css/angular-confirm.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * angular-confirm v1.1.0 (http://craftpip.github.io/angular-confirm/)
3 | * Author: boniface pereira
4 | * Website: www.craftpip.com
5 | * Contact: hey@craftpip.com
6 | *
7 | * Copyright 2016-2017 angular-confirm
8 | * Licensed under MIT (https://github.com/craftpip/angular-confirm/blob/master/LICENSE)
9 | */
10 | @-webkit-keyframes ng-confirm-spin {
11 | from {
12 | -webkit-transform: rotate(0deg);
13 | transform: rotate(0deg);
14 | }
15 | to {
16 | -webkit-transform: rotate(360deg);
17 | transform: rotate(360deg);
18 | }
19 | }
20 | @keyframes ng-confirm-spin {
21 | from {
22 | -webkit-transform: rotate(0deg);
23 | transform: rotate(0deg);
24 | }
25 | to {
26 | -webkit-transform: rotate(360deg);
27 | transform: rotate(360deg);
28 | }
29 | }
30 | body[class*=ng-confirm-no-scroll-] {
31 | overflow: hidden !important;
32 | }
33 | .ng-confirm {
34 | position: fixed;
35 | top: 0;
36 | left: 0;
37 | right: 0;
38 | bottom: 0;
39 | z-index: 99999999;
40 | font-family: inherit;
41 | overflow: hidden;
42 | }
43 | .ng-confirm .ng-confirm-bg {
44 | position: fixed;
45 | top: 0;
46 | left: 0;
47 | right: 0;
48 | bottom: 0;
49 | -webkit-transition: opacity .4s, background .4s;
50 | transition: opacity .4s, background .4s;
51 | }
52 | .ng-confirm .ng-confirm-bg.ng-confirm-bg-h {
53 | opacity: 0 !important;
54 | }
55 | .ng-confirm .ng-confirm-scrollpane {
56 | position: fixed;
57 | top: 0;
58 | left: 0;
59 | right: 0;
60 | bottom: 0;
61 | overflow-y: auto;
62 | -webkit-perspective: 500px;
63 | perspective: 500px;
64 | -webkit-perspective-origin: center;
65 | perspective-origin: center;
66 | -webkit-user-select: none;
67 | -moz-user-select: none;
68 | -ms-user-select: none;
69 | user-select: none;
70 | }
71 | .ng-confirm .ng-confirm-box {
72 | background: white;
73 | border-radius: 4px;
74 | position: relative;
75 | outline: none;
76 | padding: 15px 15px 0;
77 | overflow: hidden;
78 | margin-left: auto;
79 | margin-right: auto;
80 | }
81 | .ng-confirm .ng-confirm-box.ng-confirm-loading {
82 | min-height: 120px;
83 | }
84 | .ng-confirm .ng-confirm-box.ng-confirm-loading:before {
85 | content: '';
86 | position: absolute;
87 | left: 0;
88 | background: white;
89 | right: 0;
90 | top: 0;
91 | bottom: 0;
92 | border-radius: 10px;
93 | z-index: 1;
94 | }
95 | .ng-confirm .ng-confirm-box.ng-confirm-loading:after {
96 | opacity: 0.6;
97 | content: '';
98 | height: 30px;
99 | width: 30px;
100 | border: solid 3px transparent;
101 | position: absolute;
102 | left: 50%;
103 | margin-left: -15px;
104 | border-radius: 50%;
105 | -webkit-animation: ng-confirm-spin 1s infinite linear;
106 | animation: ng-confirm-spin 1s infinite linear;
107 | border-bottom-color: dodgerblue;
108 | top: 50%;
109 | margin-top: -15px;
110 | z-index: 2;
111 | }
112 | .ng-confirm .ng-confirm-box div.ng-confirm-closeIcon {
113 | height: 20px;
114 | width: 20px;
115 | position: absolute;
116 | top: 5px;
117 | right: 5px;
118 | cursor: pointer;
119 | opacity: .6;
120 | text-align: center;
121 | -webkit-transition: opacity 0.3s ease-in;
122 | transition: opacity 0.3s ease-in;
123 | font-size: 27px !important;
124 | line-height: 14px;
125 | font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
126 | }
127 | .ng-confirm .ng-confirm-box div.ng-confirm-closeIcon:empty {
128 | display: none;
129 | }
130 | .ng-confirm .ng-confirm-box div.ng-confirm-closeIcon .fa,
131 | .ng-confirm .ng-confirm-box div.ng-confirm-closeIcon .glyphicon,
132 | .ng-confirm .ng-confirm-box div.ng-confirm-closeIcon .zmdi {
133 | font-size: 16px;
134 | line-height: 25px;
135 | vertical-align: bottom;
136 | }
137 | .ng-confirm .ng-confirm-box div.ng-confirm-closeIcon:hover {
138 | opacity: 1;
139 | }
140 | .ng-confirm .ng-confirm-box div.ng-confirm-title-c {
141 | display: block;
142 | font-size: 22px;
143 | line-height: 20px;
144 | padding-bottom: 15px;
145 | }
146 | .ng-confirm .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c {
147 | font-size: inherit;
148 | display: inline-block;
149 | vertical-align: top;
150 | }
151 | .ng-confirm .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c i {
152 | vertical-align: middle;
153 | }
154 | .ng-confirm .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c:empty {
155 | display: none;
156 | }
157 | .ng-confirm .ng-confirm-box div.ng-confirm-title-c .ng-confirm-title {
158 | font-size: inherit;
159 | font-family: inherit;
160 | display: inline-block;
161 | vertical-align: middle;
162 | -webkit-user-select: initial;
163 | -moz-user-select: initial;
164 | -ms-user-select: initial;
165 | user-select: initial;
166 | }
167 | .ng-confirm .ng-confirm-box div.ng-confirm-title-c .ng-confirm-title:empty {
168 | display: none;
169 | }
170 | .ng-confirm .ng-confirm-box div.ng-confirm-content-pane {
171 | margin-bottom: 15px;
172 | height: 0px;
173 | display: inline-block;
174 | width: 100%;
175 | position: relative;
176 | overflow: hidden;
177 | }
178 | .ng-confirm .ng-confirm-box div.ng-confirm-content-pane .ng-confirm-content {
179 | width: 100%;
180 | height: auto;
181 | -webkit-user-select: initial;
182 | -moz-user-select: initial;
183 | -ms-user-select: initial;
184 | user-select: initial;
185 | }
186 | .ng-confirm .ng-confirm-box div.ng-confirm-content-pane .ng-confirm-content img {
187 | width: 100%;
188 | height: auto;
189 | }
190 | .ng-confirm .ng-confirm-box div.ng-confirm-content-pane .ng-confirm-content:empty {
191 | display: none;
192 | }
193 | .ng-confirm .ng-confirm-box .ng-confirm-buttons {
194 | padding-bottom: 11px;
195 | }
196 | .ng-confirm .ng-confirm-box .ng-confirm-buttons > button {
197 | margin-bottom: 4px;
198 | margin-left: 2px;
199 | margin-right: 2px;
200 | }
201 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button {
202 | display: inline-block;
203 | padding: 6px 12px;
204 | font-size: 14px;
205 | font-weight: 400;
206 | line-height: 1.42857143;
207 | text-align: center;
208 | white-space: nowrap;
209 | vertical-align: middle;
210 | -ms-touch-action: manipulation;
211 | touch-action: manipulation;
212 | cursor: pointer;
213 | -webkit-user-select: none;
214 | -moz-user-select: none;
215 | -ms-user-select: none;
216 | user-select: none;
217 | border-radius: 4px;
218 | min-height: 1em;
219 | outline: 0;
220 | -webkit-transition: opacity 0.1s ease, background-color 0.1s ease, color 0.1s ease, box-shadow 0.1s ease, background 0.1s ease;
221 | transition: opacity 0.1s ease, background-color 0.1s ease, color 0.1s ease, box-shadow 0.1s ease, background 0.1s ease;
222 | -webkit-tap-highlight-color: transparent;
223 | border: none;
224 | background-image: none;
225 | }
226 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-blue {
227 | background-color: #3498db;
228 | color: #FFF;
229 | text-shadow: none;
230 | -webkit-transition: background .2s;
231 | transition: background .2s;
232 | }
233 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-blue:hover {
234 | background-color: #2980b9;
235 | color: #FFF;
236 | }
237 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-green {
238 | background-color: #2ecc71;
239 | color: #FFF;
240 | text-shadow: none;
241 | -webkit-transition: background .2s;
242 | transition: background .2s;
243 | }
244 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-green:hover {
245 | background-color: #27ae60;
246 | color: #FFF;
247 | }
248 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-red {
249 | background-color: #e74c3c;
250 | color: #FFF;
251 | text-shadow: none;
252 | -webkit-transition: background .2s;
253 | transition: background .2s;
254 | }
255 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-red:hover {
256 | background-color: #c0392b;
257 | color: #FFF;
258 | }
259 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-orange {
260 | background-color: #f1c40f;
261 | color: #FFF;
262 | text-shadow: none;
263 | -webkit-transition: background .2s;
264 | transition: background .2s;
265 | }
266 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-orange:hover {
267 | background-color: #f39c12;
268 | color: #FFF;
269 | }
270 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-default {
271 | background-color: #ecf0f1;
272 | color: #000;
273 | text-shadow: none;
274 | -webkit-transition: background .2s;
275 | transition: background .2s;
276 | }
277 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-default:hover {
278 | background-color: #bdc3c7;
279 | color: #000;
280 | }
281 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-purple {
282 | background-color: #9b59b6;
283 | color: #FFF;
284 | text-shadow: none;
285 | -webkit-transition: background .2s;
286 | transition: background .2s;
287 | }
288 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-purple:hover {
289 | background-color: #8e44ad;
290 | color: #FFF;
291 | }
292 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-dark {
293 | background-color: #34495e;
294 | color: #FFF;
295 | text-shadow: none;
296 | -webkit-transition: background .2s;
297 | transition: background .2s;
298 | }
299 | .ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-dark:hover {
300 | background-color: #2c3e50;
301 | color: #FFF;
302 | }
303 | @-webkit-keyframes type-blue {
304 | 1%,
305 | 100% {
306 | border-color: #3498db;
307 | }
308 | 50% {
309 | border-color: #5faee3;
310 | }
311 | }
312 | @keyframes type-blue {
313 | 1%,
314 | 100% {
315 | border-color: #3498db;
316 | }
317 | 50% {
318 | border-color: #5faee3;
319 | }
320 | }
321 | @-webkit-keyframes type-green {
322 | 1%,
323 | 100% {
324 | border-color: #2ecc71;
325 | }
326 | 50% {
327 | border-color: #54d98c;
328 | }
329 | }
330 | @keyframes type-green {
331 | 1%,
332 | 100% {
333 | border-color: #2ecc71;
334 | }
335 | 50% {
336 | border-color: #54d98c;
337 | }
338 | }
339 | @-webkit-keyframes type-red {
340 | 1%,
341 | 100% {
342 | border-color: #e74c3c;
343 | }
344 | 50% {
345 | border-color: #ed7669;
346 | }
347 | }
348 | @keyframes type-red {
349 | 1%,
350 | 100% {
351 | border-color: #e74c3c;
352 | }
353 | 50% {
354 | border-color: #ed7669;
355 | }
356 | }
357 | @-webkit-keyframes type-orange {
358 | 1%,
359 | 100% {
360 | border-color: #f1c40f;
361 | }
362 | 50% {
363 | border-color: #f4d03f;
364 | }
365 | }
366 | @keyframes type-orange {
367 | 1%,
368 | 100% {
369 | border-color: #f1c40f;
370 | }
371 | 50% {
372 | border-color: #f4d03f;
373 | }
374 | }
375 | @-webkit-keyframes type-purple {
376 | 1%,
377 | 100% {
378 | border-color: #9b59b6;
379 | }
380 | 50% {
381 | border-color: #b07cc6;
382 | }
383 | }
384 | @keyframes type-purple {
385 | 1%,
386 | 100% {
387 | border-color: #9b59b6;
388 | }
389 | 50% {
390 | border-color: #b07cc6;
391 | }
392 | }
393 | @-webkit-keyframes type-dark {
394 | 1%,
395 | 100% {
396 | border-color: #34495e;
397 | }
398 | 50% {
399 | border-color: #46627f;
400 | }
401 | }
402 | @keyframes type-dark {
403 | 1%,
404 | 100% {
405 | border-color: #34495e;
406 | }
407 | 50% {
408 | border-color: #46627f;
409 | }
410 | }
411 | .ng-confirm.ng-confirm-type-animated .ng-confirm-box {
412 | -webkit-animation-duration: 2s;
413 | animation-duration: 2s;
414 | -webkit-animation-iteration-count: infinite;
415 | animation-iteration-count: infinite;
416 | }
417 | .ng-confirm.ng-confirm-type-blue .ng-confirm-box {
418 | border-top: solid 7px #3498db;
419 | -webkit-animation-name: type-blue;
420 | animation-name: type-blue;
421 | }
422 | .ng-confirm.ng-confirm-type-green .ng-confirm-box {
423 | border-top: solid 7px #2ecc71;
424 | -webkit-animation-name: type-green;
425 | animation-name: type-green;
426 | }
427 | .ng-confirm.ng-confirm-type-red .ng-confirm-box {
428 | border-top: solid 7px #e74c3c;
429 | -webkit-animation-name: type-red;
430 | animation-name: type-red;
431 | }
432 | .ng-confirm.ng-confirm-type-orange .ng-confirm-box {
433 | border-top: solid 7px #f1c40f;
434 | -webkit-animation-name: type-orange;
435 | animation-name: type-orange;
436 | }
437 | .ng-confirm.ng-confirm-type-purple .ng-confirm-box {
438 | border-top: solid 7px #9b59b6;
439 | -webkit-animation-name: type-purple;
440 | animation-name: type-purple;
441 | }
442 | .ng-confirm.ng-confirm-type-dark .ng-confirm-box {
443 | border-top: solid 7px #34495e;
444 | -webkit-animation-name: type-dark;
445 | animation-name: type-dark;
446 | }
447 | .ng-confirm .ng-confirm-clear {
448 | clear: both;
449 | }
450 | .ng-confirm.ng-confirm-rtl {
451 | direction: rtl;
452 | }
453 | .ng-confirm .ng-confirm-box.ng-confirm-hilight.ng-confirm-hilight-shake {
454 | -webkit-animation: shake 0.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
455 | animation: shake 0.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
456 | -webkit-transform: translate3d(0, 0, 0);
457 | transform: translate3d(0, 0, 0);
458 | }
459 | .ng-confirm .ng-confirm-box.ng-confirm-hilight.ng-confirm-hilight-glow {
460 | -webkit-animation: glow 0.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
461 | animation: glow 0.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
462 | -webkit-transform: translate3d(0, 0, 0);
463 | transform: translate3d(0, 0, 0);
464 | }
465 | @-webkit-keyframes shake {
466 | 10%,
467 | 90% {
468 | -webkit-transform: translate3d(-2px, 0, 0);
469 | transform: translate3d(-2px, 0, 0);
470 | }
471 | 20%,
472 | 80% {
473 | -webkit-transform: translate3d(4px, 0, 0);
474 | transform: translate3d(4px, 0, 0);
475 | }
476 | 30%,
477 | 50%,
478 | 70% {
479 | -webkit-transform: translate3d(-8px, 0, 0);
480 | transform: translate3d(-8px, 0, 0);
481 | }
482 | 40%,
483 | 60% {
484 | -webkit-transform: translate3d(8px, 0, 0);
485 | transform: translate3d(8px, 0, 0);
486 | }
487 | }
488 | @keyframes shake {
489 | 10%,
490 | 90% {
491 | -webkit-transform: translate3d(-2px, 0, 0);
492 | transform: translate3d(-2px, 0, 0);
493 | }
494 | 20%,
495 | 80% {
496 | -webkit-transform: translate3d(4px, 0, 0);
497 | transform: translate3d(4px, 0, 0);
498 | }
499 | 30%,
500 | 50%,
501 | 70% {
502 | -webkit-transform: translate3d(-8px, 0, 0);
503 | transform: translate3d(-8px, 0, 0);
504 | }
505 | 40%,
506 | 60% {
507 | -webkit-transform: translate3d(8px, 0, 0);
508 | transform: translate3d(8px, 0, 0);
509 | }
510 | }
511 | @-webkit-keyframes glow {
512 | 0%,
513 | 100% {
514 | box-shadow: 0 0 3px red;
515 | }
516 | 50% {
517 | box-shadow: 0 0 30px red;
518 | }
519 | }
520 | @keyframes glow {
521 | 0%,
522 | 100% {
523 | box-shadow: 0 0 3px red;
524 | }
525 | 50% {
526 | box-shadow: 0 0 30px red;
527 | }
528 | }
529 | /*Transition rules*/
530 | .ng-confirm {
531 | -webkit-perspective: 400px;
532 | perspective: 400px;
533 | }
534 | .ng-confirm .ng-confirm-box {
535 | opacity: 1;
536 | }
537 | .ng-confirm .ng-confirm-box.ng-confirm-animation-top,
538 | .ng-confirm .ng-confirm-box.ng-confirm-animation-left,
539 | .ng-confirm .ng-confirm-box.ng-confirm-animation-right,
540 | .ng-confirm .ng-confirm-box.ng-confirm-animation-bottom,
541 | .ng-confirm .ng-confirm-box.ng-confirm-animation-opacity,
542 | .ng-confirm .ng-confirm-box.ng-confirm-animation-zoom,
543 | .ng-confirm .ng-confirm-box.ng-confirm-animation-scale,
544 | .ng-confirm .ng-confirm-box.ng-confirm-animation-none,
545 | .ng-confirm .ng-confirm-box.ng-confirm-animation-rotate,
546 | .ng-confirm .ng-confirm-box.ng-confirm-animation-rotatex,
547 | .ng-confirm .ng-confirm-box.ng-confirm-animation-rotatey,
548 | .ng-confirm .ng-confirm-box.ng-confirm-animation-scaley,
549 | .ng-confirm .ng-confirm-box.ng-confirm-animation-scalex {
550 | opacity: 0;
551 | }
552 | .ng-confirm .ng-confirm-box.ng-confirm-animation-rotate {
553 | -webkit-transform: rotate(90deg);
554 | -ms-transform: rotate(90deg);
555 | transform: rotate(90deg);
556 | }
557 | .ng-confirm .ng-confirm-box.ng-confirm-animation-rotatex {
558 | -webkit-transform: rotateX(90deg);
559 | transform: rotateX(90deg);
560 | -webkit-transform-origin: center;
561 | -ms-transform-origin: center;
562 | transform-origin: center;
563 | }
564 | .ng-confirm .ng-confirm-box.ng-confirm-animation-rotatexr {
565 | -webkit-transform: rotateX(-90deg);
566 | transform: rotateX(-90deg);
567 | -webkit-transform-origin: center;
568 | -ms-transform-origin: center;
569 | transform-origin: center;
570 | }
571 | .ng-confirm .ng-confirm-box.ng-confirm-animation-rotatey {
572 | -webkit-transform: rotatey(90deg);
573 | -ms-transform: rotatey(90deg);
574 | transform: rotatey(90deg);
575 | -webkit-transform-origin: center;
576 | -ms-transform-origin: center;
577 | transform-origin: center;
578 | }
579 | .ng-confirm .ng-confirm-box.ng-confirm-animation-rotateyr {
580 | -webkit-transform: rotatey(-90deg);
581 | -ms-transform: rotatey(-90deg);
582 | transform: rotatey(-90deg);
583 | -webkit-transform-origin: center;
584 | -ms-transform-origin: center;
585 | transform-origin: center;
586 | }
587 | .ng-confirm .ng-confirm-box.ng-confirm-animation-scaley {
588 | -webkit-transform: scaley(1.5);
589 | -ms-transform: scaley(1.5);
590 | transform: scaley(1.5);
591 | -webkit-transform-origin: center;
592 | -ms-transform-origin: center;
593 | transform-origin: center;
594 | }
595 | .ng-confirm .ng-confirm-box.ng-confirm-animation-scalex {
596 | -webkit-transform: scalex(1.5);
597 | -ms-transform: scalex(1.5);
598 | transform: scalex(1.5);
599 | -webkit-transform-origin: center;
600 | -ms-transform-origin: center;
601 | transform-origin: center;
602 | }
603 | .ng-confirm .ng-confirm-box.ng-confirm-animation-top {
604 | -webkit-transform: translate(0px, -100px);
605 | -ms-transform: translate(0px, -100px);
606 | transform: translate(0px, -100px);
607 | }
608 | .ng-confirm .ng-confirm-box.ng-confirm-animation-left {
609 | -webkit-transform: translate(-100px, 0px);
610 | -ms-transform: translate(-100px, 0px);
611 | transform: translate(-100px, 0px);
612 | }
613 | .ng-confirm .ng-confirm-box.ng-confirm-animation-right {
614 | -webkit-transform: translate(100px, 0px);
615 | -ms-transform: translate(100px, 0px);
616 | transform: translate(100px, 0px);
617 | }
618 | .ng-confirm .ng-confirm-box.ng-confirm-animation-bottom {
619 | -webkit-transform: translate(0px, 100px);
620 | -ms-transform: translate(0px, 100px);
621 | transform: translate(0px, 100px);
622 | }
623 | .ng-confirm .ng-confirm-box.ng-confirm-animation-zoom {
624 | -webkit-transform: scale(1.2);
625 | -ms-transform: scale(1.2);
626 | transform: scale(1.2);
627 | }
628 | .ng-confirm .ng-confirm-box.ng-confirm-animation-scale {
629 | -webkit-transform: scale(0.5);
630 | -ms-transform: scale(0.5);
631 | transform: scale(0.5);
632 | }
633 | .ng-confirm .ng-confirm-box.ng-confirm-animation-none {
634 | visibility: hidden;
635 | }
636 | .ng-confirm.ng-confirm-light .ng-confirm-bg,
637 | .ng-confirm.ng-confirm-white .ng-confirm-bg {
638 | background-color: #444;
639 | opacity: .2;
640 | }
641 | .ng-confirm.ng-confirm-light .ng-confirm-icon-c,
642 | .ng-confirm.ng-confirm-white .ng-confirm-icon-c {
643 | margin-right: 8px;
644 | }
645 | .ng-confirm.ng-confirm-light.ng-confirm-rtl .ng-confirm-closeIcon,
646 | .ng-confirm.ng-confirm-white.ng-confirm-rtl .ng-confirm-closeIcon {
647 | left: 5px !important;
648 | right: auto !important;
649 | }
650 | .ng-confirm.ng-confirm-light.ng-confirm-rtl .ng-confirm-icon-c,
651 | .ng-confirm.ng-confirm-white.ng-confirm-rtl .ng-confirm-icon-c {
652 | margin-right: 0;
653 | margin-left: 8px;
654 | }
655 | .ng-confirm.ng-confirm-light .ng-confirm-box,
656 | .ng-confirm.ng-confirm-white .ng-confirm-box {
657 | box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
658 | border-radius: 5px;
659 | }
660 | .ng-confirm.ng-confirm-light .ng-confirm-box .ng-confirm-closeIcon,
661 | .ng-confirm.ng-confirm-white .ng-confirm-box .ng-confirm-closeIcon {
662 | line-height: 20px;
663 | }
664 | .ng-confirm.ng-confirm-light .ng-confirm-box .ng-confirm-buttons,
665 | .ng-confirm.ng-confirm-white .ng-confirm-box .ng-confirm-buttons {
666 | float: right;
667 | }
668 | .ng-confirm.ng-confirm-light .ng-confirm-box .ng-confirm-buttons button,
669 | .ng-confirm.ng-confirm-white .ng-confirm-box .ng-confirm-buttons button {
670 | border: none;
671 | background-image: none;
672 | text-transform: uppercase;
673 | font-size: 14px;
674 | font-weight: bold;
675 | text-shadow: none;
676 | -webkit-transition: background .1s;
677 | transition: background .1s;
678 | color: white;
679 | }
680 | .ng-confirm.ng-confirm-light .ng-confirm-box .ng-confirm-buttons button.btn-default,
681 | .ng-confirm.ng-confirm-white .ng-confirm-box .ng-confirm-buttons button.btn-default {
682 | box-shadow: none;
683 | color: #333;
684 | }
685 | .ng-confirm.ng-confirm-light .ng-confirm-box .ng-confirm-buttons button.btn-default:hover,
686 | .ng-confirm.ng-confirm-white .ng-confirm-box .ng-confirm-buttons button.btn-default:hover {
687 | background: #ddd;
688 | }
689 | .ng-confirm.ng-confirm-dark .ng-confirm-bg,
690 | .ng-confirm.ng-confirm-black .ng-confirm-bg {
691 | background-color: darkslategray;
692 | opacity: .4;
693 | }
694 | .ng-confirm.ng-confirm-dark .ng-confirm-icon-c,
695 | .ng-confirm.ng-confirm-black .ng-confirm-icon-c {
696 | margin-right: 8px;
697 | }
698 | .ng-confirm.ng-confirm-dark.ng-confirm-rtl .ng-confirm-closeIcon,
699 | .ng-confirm.ng-confirm-black.ng-confirm-rtl .ng-confirm-closeIcon {
700 | left: 5px !important;
701 | right: auto !important;
702 | }
703 | .ng-confirm.ng-confirm-dark.ng-confirm-rtl .ng-confirm-icon-c,
704 | .ng-confirm.ng-confirm-black.ng-confirm-rtl .ng-confirm-icon-c {
705 | margin-right: 0;
706 | margin-left: 8px;
707 | }
708 | .ng-confirm.ng-confirm-dark .ng-confirm-box,
709 | .ng-confirm.ng-confirm-black .ng-confirm-box {
710 | box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
711 | background: #444;
712 | border-radius: 5px;
713 | }
714 | .ng-confirm.ng-confirm-dark .ng-confirm-box .ng-confirm-closeIcon,
715 | .ng-confirm.ng-confirm-black .ng-confirm-box .ng-confirm-closeIcon {
716 | line-height: 20px;
717 | }
718 | .ng-confirm.ng-confirm-dark .ng-confirm-box.ng-confirm-loading:before,
719 | .ng-confirm.ng-confirm-black .ng-confirm-box.ng-confirm-loading:before {
720 | background: #444;
721 | }
722 | .ng-confirm.ng-confirm-dark .ng-confirm-box.ng-confirm-loading:after,
723 | .ng-confirm.ng-confirm-black .ng-confirm-box.ng-confirm-loading:after {
724 | border-bottom-color: deepskyblue;
725 | }
726 | .ng-confirm.ng-confirm-dark .ng-confirm-box *:not(input):not(textarea):not(select):not(option),
727 | .ng-confirm.ng-confirm-black .ng-confirm-box *:not(input):not(textarea):not(select):not(option) {
728 | color: white;
729 | }
730 | .ng-confirm.ng-confirm-dark .ng-confirm-box input,
731 | .ng-confirm.ng-confirm-black .ng-confirm-box input,
732 | .ng-confirm.ng-confirm-dark .ng-confirm-box textarea,
733 | .ng-confirm.ng-confirm-black .ng-confirm-box textarea,
734 | .ng-confirm.ng-confirm-dark .ng-confirm-box select,
735 | .ng-confirm.ng-confirm-black .ng-confirm-box select,
736 | .ng-confirm.ng-confirm-dark .ng-confirm-box option,
737 | .ng-confirm.ng-confirm-black .ng-confirm-box option {
738 | color: initial;
739 | }
740 | .ng-confirm.ng-confirm-dark .ng-confirm-box .ng-confirm-buttons,
741 | .ng-confirm.ng-confirm-black .ng-confirm-box .ng-confirm-buttons {
742 | float: right;
743 | }
744 | .ng-confirm.ng-confirm-dark .ng-confirm-box .ng-confirm-buttons button,
745 | .ng-confirm.ng-confirm-black .ng-confirm-box .ng-confirm-buttons button {
746 | border: none;
747 | background-image: none;
748 | text-transform: uppercase;
749 | font-size: 14px;
750 | font-weight: bold;
751 | text-shadow: none;
752 | -webkit-transition: background .1s;
753 | transition: background .1s;
754 | color: white;
755 | }
756 | .ng-confirm.ng-confirm-dark .ng-confirm-box .ng-confirm-buttons button.btn-default,
757 | .ng-confirm.ng-confirm-black .ng-confirm-box .ng-confirm-buttons button.btn-default {
758 | box-shadow: none;
759 | color: #fff;
760 | background: none;
761 | }
762 | .ng-confirm.ng-confirm-dark .ng-confirm-box .ng-confirm-buttons button.btn-default:hover,
763 | .ng-confirm.ng-confirm-black .ng-confirm-box .ng-confirm-buttons button.btn-default:hover {
764 | background: #666;
765 | }
766 | .ng-confirm.ng-confirm-supervan .ng-confirm-bg {
767 | background: #36465D;
768 | opacity: 0.99;
769 | }
770 | .ng-confirm.ng-confirm-supervan.ng-confirm-type-blue .ng-confirm-box {
771 | border: none;
772 | }
773 | .ng-confirm.ng-confirm-supervan.ng-confirm-type-blue .ng-confirm-bg {
774 | background: #217dbb;
775 | }
776 | .ng-confirm.ng-confirm-supervan.ng-confirm-type-green .ng-confirm-box {
777 | border: none;
778 | }
779 | .ng-confirm.ng-confirm-supervan.ng-confirm-type-green .ng-confirm-bg {
780 | background: #25a25a;
781 | }
782 | .ng-confirm.ng-confirm-supervan.ng-confirm-type-red .ng-confirm-box {
783 | border: none;
784 | }
785 | .ng-confirm.ng-confirm-supervan.ng-confirm-type-red .ng-confirm-bg {
786 | background: #d62c1a;
787 | }
788 | .ng-confirm.ng-confirm-supervan.ng-confirm-type-orange .ng-confirm-box {
789 | border: none;
790 | }
791 | .ng-confirm.ng-confirm-supervan.ng-confirm-type-orange .ng-confirm-bg {
792 | background: #c29d0b;
793 | }
794 | .ng-confirm.ng-confirm-supervan.ng-confirm-type-purple .ng-confirm-box {
795 | border: none;
796 | }
797 | .ng-confirm.ng-confirm-supervan.ng-confirm-type-purple .ng-confirm-bg {
798 | background: #804399;
799 | }
800 | .ng-confirm.ng-confirm-supervan.ng-confirm-type-dark .ng-confirm-box {
801 | border: none;
802 | }
803 | .ng-confirm.ng-confirm-supervan.ng-confirm-type-dark .ng-confirm-bg {
804 | background: #222f3d;
805 | }
806 | .ng-confirm.ng-confirm-supervan .ng-confirm-box {
807 | background-color: transparent;
808 | }
809 | .ng-confirm.ng-confirm-supervan .ng-confirm-box.ng-confirm-loading:before {
810 | background: transparent;
811 | }
812 | .ng-confirm.ng-confirm-supervan .ng-confirm-box.ng-confirm-loading:after {
813 | border-bottom-color: transparent;
814 | }
815 | .ng-confirm.ng-confirm-supervan .ng-confirm-box div.ng-confirm-closeIcon {
816 | color: white;
817 | border-radius: 50px;
818 | height: 26px;
819 | width: 26px;
820 | line-height: 26px;
821 | top: 2px;
822 | right: 2px;
823 | box-shadow: 0 0 0 2px #ddd;
824 | }
825 | .ng-confirm.ng-confirm-supervan .ng-confirm-box *:not(input):not(textarea):not(select):not(option) {
826 | color: white;
827 | }
828 | .ng-confirm.ng-confirm-supervan .ng-confirm-box input,
829 | .ng-confirm.ng-confirm-supervan .ng-confirm-box textarea,
830 | .ng-confirm.ng-confirm-supervan .ng-confirm-box select,
831 | .ng-confirm.ng-confirm-supervan .ng-confirm-box option {
832 | color: initial;
833 | }
834 | .ng-confirm.ng-confirm-supervan .ng-confirm-box div.ng-confirm-closeIcon {
835 | color: white;
836 | }
837 | .ng-confirm.ng-confirm-supervan .ng-confirm-box div.ng-confirm-title-c {
838 | text-align: center;
839 | font-size: 28px;
840 | font-weight: normal;
841 | padding-bottom: 25px;
842 | }
843 | .ng-confirm.ng-confirm-supervan .ng-confirm-box div.ng-confirm-title-c > * {
844 | display: block;
845 | }
846 | .ng-confirm.ng-confirm-supervan .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c {
847 | margin: 0 0 20px;
848 | font-size: 50px;
849 | }
850 | .ng-confirm.ng-confirm-supervan .ng-confirm-box div.ng-confirm-content-pane {
851 | margin-bottom: 25px;
852 | }
853 | .ng-confirm.ng-confirm-supervan .ng-confirm-box div.ng-confirm-content {
854 | text-align: center;
855 | }
856 | .ng-confirm.ng-confirm-supervan .ng-confirm-box .ng-confirm-buttons {
857 | text-align: center;
858 | }
859 | .ng-confirm.ng-confirm-supervan .ng-confirm-box .ng-confirm-buttons button {
860 | font-size: 16px;
861 | border-radius: 2px;
862 | text-shadow: none;
863 | border: none;
864 | color: white;
865 | padding: 10px;
866 | min-width: 100px;
867 | }
868 | .ng-confirm.ng-confirm-supervan .ng-confirm-box .ng-confirm-buttons button.btn-default {
869 | background: #303f53;
870 | }
871 | .ng-confirm.ng-confirm-supervan .ng-confirm-box .ng-confirm-buttons button.btn-default:hover {
872 | background: #2f3c50;
873 | color: white;
874 | }
875 | .ng-confirm.ng-confirm-material .ng-confirm-bg {
876 | background: dimgray;
877 | opacity: .6;
878 | }
879 | .ng-confirm.ng-confirm-material .ng-confirm-icon-c {
880 | margin-right: 8px;
881 | }
882 | .ng-confirm.ng-confirm-material .ng-confirm-box {
883 | background-color: white;
884 | box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 13px 19px 2px rgba(0, 0, 0, 0.14), 0 5px 24px 4px rgba(0, 0, 0, 0.12);
885 | padding: 30px 25px 10px 25px;
886 | }
887 | .ng-confirm.ng-confirm-material .ng-confirm-box div.ng-confirm-closeIcon {
888 | color: rgba(0, 0, 0, 0.87);
889 | line-height: 20px;
890 | top: 15px;
891 | right: 15px;
892 | }
893 | .ng-confirm.ng-confirm-material .ng-confirm-box div.ng-confirm-title-c {
894 | color: rgba(0, 0, 0, 0.87);
895 | font-size: 22px;
896 | font-weight: bold;
897 | }
898 | .ng-confirm.ng-confirm-material .ng-confirm-box div.ng-confirm-content {
899 | text-align: left;
900 | color: rgba(0, 0, 0, 0.87);
901 | }
902 | .ng-confirm.ng-confirm-material .ng-confirm-box .ng-confirm-buttons {
903 | text-align: right;
904 | }
905 | .ng-confirm.ng-confirm-material .ng-confirm-box .ng-confirm-buttons button {
906 | text-transform: uppercase;
907 | font-weight: 500;
908 | }
909 | .ng-confirm.ng-confirm-material.ng-confirm-rtl .ng-confirm-closeIcon {
910 | left: 15px !important;
911 | right: auto !important;
912 | }
913 | .ng-confirm.ng-confirm-material.ng-confirm-rtl .ng-confirm-icon-c {
914 | margin-right: 0;
915 | margin-left: 8px;
916 | }
917 | .ng-confirm.ng-confirm-bootstrap .ng-confirm-bg {
918 | background-color: rgba(0, 0, 0, 0.21);
919 | }
920 | .ng-confirm.ng-confirm-bootstrap .ng-confirm-icon-c {
921 | margin-right: 8px;
922 | }
923 | .ng-confirm.ng-confirm-bootstrap .ng-confirm-box {
924 | background-color: white;
925 | box-shadow: 0 3px 8px 0px rgba(0, 0, 0, 0.2);
926 | border: solid 1px rgba(0, 0, 0, 0.4);
927 | padding: 15px 0 0;
928 | border-radius: 6px;
929 | }
930 | .ng-confirm.ng-confirm-bootstrap .ng-confirm-box div.ng-confirm-closeIcon {
931 | color: rgba(0, 0, 0, 0.87);
932 | line-height: 20px;
933 | }
934 | .ng-confirm.ng-confirm-bootstrap .ng-confirm-box div.ng-confirm-title-c {
935 | color: rgba(0, 0, 0, 0.87);
936 | font-size: 22px;
937 | font-weight: bold;
938 | padding-left: 15px;
939 | padding-right: 15px;
940 | }
941 | .ng-confirm.ng-confirm-bootstrap .ng-confirm-box div.ng-confirm-content {
942 | text-align: left;
943 | color: rgba(0, 0, 0, 0.87);
944 | padding: 0px 15px;
945 | }
946 | .ng-confirm.ng-confirm-bootstrap .ng-confirm-box .ng-confirm-buttons {
947 | text-align: right;
948 | padding: 15px;
949 | margin: -5px 0 0px;
950 | border-top: solid 1px #ddd;
951 | overflow: hidden;
952 | border-radius: 0 0 4px 4px;
953 | }
954 | .ng-confirm.ng-confirm-bootstrap .ng-confirm-box .ng-confirm-buttons button {
955 | font-weight: 500;
956 | border-radius: 0px;
957 | margin: 0;
958 | }
959 | .ng-confirm.ng-confirm-bootstrap .ng-confirm-box .ng-confirm-buttons button:first-child {
960 | border-radius: 4px 0 0 4px;
961 | }
962 | .ng-confirm.ng-confirm-bootstrap .ng-confirm-box .ng-confirm-buttons button:last-child {
963 | border-radius: 0 4px 4px 0;
964 | }
965 | .ng-confirm.ng-confirm-bootstrap.ng-confirm-rtl .ng-confirm-closeIcon {
966 | left: 5px !important;
967 | right: auto !important;
968 | }
969 | .ng-confirm.ng-confirm-bootstrap.ng-confirm-rtl .ng-confirm-icon-c {
970 | margin-right: 0;
971 | margin-left: 8px;
972 | }
973 | .ng-confirm.ng-confirm-modern .ng-confirm-bg {
974 | background-color: slategray;
975 | opacity: .6;
976 | }
977 | .ng-confirm.ng-confirm-modern .ng-confirm-icon-c {
978 | margin-right: 8px;
979 | }
980 | .ng-confirm.ng-confirm-modern .ng-confirm-box {
981 | background-color: white;
982 | box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 13px 19px 2px rgba(0, 0, 0, 0.14), 0 5px 24px 4px rgba(0, 0, 0, 0.12);
983 | padding: 25px 25px 10px 25px;
984 | }
985 | .ng-confirm.ng-confirm-modern .ng-confirm-box div.ng-confirm-closeIcon {
986 | color: rgba(0, 0, 0, 0.87);
987 | border-radius: 50px;
988 | height: 25px;
989 | width: 25px;
990 | line-height: 25px !important;
991 | top: 10px;
992 | right: 10px;
993 | box-shadow: 0 0 0 2px #ddd;
994 | }
995 | .ng-confirm.ng-confirm-modern .ng-confirm-box div.ng-confirm-title-c {
996 | color: rgba(0, 0, 0, 0.87);
997 | font-size: 24px;
998 | font-weight: bold;
999 | text-align: center;
1000 | margin-bottom: 10px;
1001 | }
1002 | .ng-confirm.ng-confirm-modern .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c {
1003 | display: block;
1004 | margin-right: 0px;
1005 | margin-left: 0px;
1006 | margin-bottom: 10px;
1007 | font-size: 69px;
1008 | color: #aaa;
1009 | }
1010 | .ng-confirm.ng-confirm-modern .ng-confirm-box div.ng-confirm-content {
1011 | font-size: 15px;
1012 | color: #777;
1013 | margin-bottom: 25px;
1014 | }
1015 | .ng-confirm.ng-confirm-modern .ng-confirm-box .ng-confirm-buttons {
1016 | text-align: center;
1017 | }
1018 | .ng-confirm.ng-confirm-modern .ng-confirm-box .ng-confirm-buttons button {
1019 | font-weight: bold;
1020 | text-transform: uppercase;
1021 | -webkit-transition: background .1s;
1022 | transition: background .1s;
1023 | }
1024 | .ng-confirm.ng-confirm-modern .ng-confirm-box .ng-confirm-buttons button + button {
1025 | margin-left: 4px;
1026 | }
1027 | .ng-confirm.ng-confirm-seamless .ng-confirm-bg {
1028 | background-color: rgba(255, 255, 255, 0.5);
1029 | }
1030 | .ng-confirm.ng-confirm-seamless .ng-confirm-bg:before {
1031 | border-bottom-color: dodgerblue;
1032 | }
1033 | .ng-confirm.ng-confirm-seamless .ng-confirm-icon-c {
1034 | margin-right: 8px;
1035 | }
1036 | .ng-confirm.ng-confirm-seamless .ng-confirm-box {
1037 | background-color: white;
1038 | box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 13px 19px 2px rgba(0, 0, 0, 0.14), 0 5px 24px 4px rgba(0, 0, 0, 0.12);
1039 | padding: 20px 0 10px 0;
1040 | }
1041 | .ng-confirm.ng-confirm-seamless .ng-confirm-box div.ng-confirm-closeIcon {
1042 | color: rgba(0, 0, 0, 0.87);
1043 | border-radius: 50px;
1044 | height: 25px;
1045 | width: 25px;
1046 | line-height: 25px !important;
1047 | top: 10px;
1048 | right: 10px;
1049 | box-shadow: 0 0 0 2px #ddd;
1050 | }
1051 | .ng-confirm.ng-confirm-seamless .ng-confirm-box div.ng-confirm-title-c {
1052 | color: rgba(0, 0, 0, 0.87);
1053 | font-size: 24px;
1054 | text-align: center;
1055 | }
1056 | .ng-confirm.ng-confirm-seamless .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c {
1057 | color: #aaa;
1058 | }
1059 | .ng-confirm.ng-confirm-seamless .ng-confirm-box div.ng-confirm-title-c .ng-confirm-title {
1060 | font-weight: bold;
1061 | }
1062 | .ng-confirm.ng-confirm-seamless .ng-confirm-box div.ng-confirm-content {
1063 | text-align: center;
1064 | font-size: 15px;
1065 | color: #464646;
1066 | margin-bottom: 25px;
1067 | }
1068 | .ng-confirm.ng-confirm-seamless .ng-confirm-box .ng-confirm-buttons {
1069 | text-align: center;
1070 | }
1071 | .ng-confirm.ng-confirm-seamless .ng-confirm-box .ng-confirm-buttons button {
1072 | font-size: 16px;
1073 | font-weight: bold;
1074 | }
1075 | .ng-confirm.ng-confirm-seamless .ng-confirm-box .ng-confirm-buttons button + button {
1076 | margin-left: 4px;
1077 | }
1078 | .ng-confirm-el-hide {
1079 | display: none !important;
1080 | }
1081 |
--------------------------------------------------------------------------------
/css/angular-confirm.less:
--------------------------------------------------------------------------------
1 | /*!
2 | * angular-confirm v1.1.0 (http://craftpip.github.io/angular-confirm/)
3 | * Author: boniface pereira
4 | * Website: www.craftpip.com
5 | * Contact: hey@craftpip.com
6 | *
7 | * Copyright 2016-2017 angular-confirm
8 | * Licensed under MIT (https://github.com/craftpip/angular-confirm/blob/master/LICENSE)
9 | */
10 | @blue: #3498db;
11 | @blueHover: #2980b9;
12 | @green: #2ecc71;
13 | @greenHover: #27ae60;
14 | @red: #e74c3c;
15 | @redHover: #c0392b;
16 | @orange: #f1c40f;
17 | @orangeHover: #f39c12;
18 | @purple: #9b59b6;
19 | @purpleHover: #8e44ad;
20 | @default: #ecf0f1;
21 | @defaultHover: #bdc3c7;
22 | @dark: #34495e;
23 | @darkHover: #2c3e50;
24 |
25 | @keyframes ng-confirm-spin {
26 | from {
27 | transform: rotate(0deg);
28 | }
29 | to {
30 | transform: rotate(360deg);
31 | }
32 | }
33 |
34 | body[class*=ng-confirm-no-scroll-] {
35 | overflow: hidden !important;
36 | }
37 |
38 | .ng-confirm {
39 | position: fixed;
40 | top: 0;
41 | left: 0;
42 | right: 0;
43 | bottom: 0;
44 | z-index: 99999999;
45 | font-family: inherit;
46 | overflow: hidden;
47 |
48 | .ng-confirm-bg {
49 | position: fixed;
50 | top: 0;
51 | left: 0;
52 | right: 0;
53 | bottom: 0;
54 | transition: opacity .4s, background .4s;
55 |
56 | &.ng-confirm-bg-h {
57 | opacity: 0 !important;
58 | }
59 | }
60 | .ng-confirm-scrollpane {
61 | position: fixed;
62 | top: 0;
63 | left: 0;
64 | right: 0;
65 | bottom: 0;
66 | overflow-y: auto;
67 | perspective: 500px;
68 | perspective-origin: center;
69 | user-select: none;
70 | }
71 | .ng-confirm-box {
72 | background: white;
73 | border-radius: 4px;
74 | position: relative;
75 | outline: none;
76 | padding: 15px 15px 0;
77 | overflow: hidden;
78 | margin-left: auto;
79 | margin-right: auto;
80 |
81 | &.ng-confirm-loading {
82 | min-height: 120px;
83 |
84 | &:before {
85 | content: '';
86 | position: absolute;
87 | left: 0;
88 | background: white;
89 | right: 0;
90 | top: 0;
91 | bottom: 0;
92 | border-radius: 10px;
93 | z-index: 1;
94 | }
95 | &:after {
96 | opacity: 0.6;
97 | content: '';
98 | height: 30px;
99 | width: 30px;
100 | border: solid 3px transparent;
101 | position: absolute;
102 | left: 50%;
103 | margin-left: -15px;
104 | border-radius: 50%;
105 | animation: ng-confirm-spin 1s infinite linear;
106 | border-bottom-color: dodgerblue;
107 | top: 50%;
108 | margin-top: -15px;
109 | z-index: 2;
110 | }
111 | }
112 |
113 | div.ng-confirm-closeIcon {
114 | height: 20px;
115 | width: 20px;
116 | position: absolute;
117 | top: 5px;
118 | right: 5px;
119 | cursor: pointer;
120 | opacity: .6;
121 | text-align: center;
122 | transition: opacity .3s ease-in;
123 | font-size: 27px !important;
124 | line-height: 14px;
125 | font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
126 |
127 | &:empty {
128 | display: none;
129 | }
130 |
131 | .fa, .glyphicon, .zmdi {
132 | font-size: 16px;
133 | line-height: 25px;
134 | vertical-align: bottom;
135 | }
136 |
137 | &:hover {
138 | opacity: 1;
139 | }
140 | }
141 | div.ng-confirm-title-c {
142 | display: block;
143 | font-size: 22px;
144 | line-height: 20px;
145 | padding-bottom: 15px;
146 |
147 | .ng-confirm-icon-c {
148 | font-size: inherit;
149 | display: inline-block;
150 | vertical-align: top;
151 |
152 | i {
153 | vertical-align: middle;
154 | }
155 | &:empty {
156 | display: none;
157 | }
158 | }
159 | .ng-confirm-title {
160 | font-size: inherit;
161 | font-family: inherit;
162 | display: inline-block;
163 | vertical-align: middle;
164 | user-select: initial;
165 |
166 | &:empty {
167 | display: none;
168 | }
169 | }
170 | }
171 | div.ng-confirm-content-pane {
172 | margin-bottom: 15px;
173 | height: 0px;
174 | display: inline-block;
175 | width: 100%;
176 | position: relative;
177 | overflow: hidden;
178 |
179 | .ng-confirm-content {
180 | width: 100%;
181 | height: auto;
182 | user-select: initial;
183 |
184 | img {
185 | width: 100%;
186 | height: auto;
187 | }
188 | &:empty {
189 | display: none;
190 | }
191 | }
192 | }
193 | .ng-confirm-buttons {
194 | padding-bottom: 11px;
195 | > button {
196 | margin-bottom: 4px;
197 | margin-left: 2px;
198 | margin-right: 2px;
199 | }
200 |
201 | button {
202 | display: inline-block;
203 | padding: 6px 12px;
204 | font-size: 14px;
205 | font-weight: 400;
206 | line-height: 1.42857143;
207 | text-align: center;
208 | white-space: nowrap;
209 | vertical-align: middle;
210 | -ms-touch-action: manipulation;
211 | touch-action: manipulation;
212 | cursor: pointer;
213 | -webkit-user-select: none;
214 | -moz-user-select: none;
215 | -ms-user-select: none;
216 | user-select: none;
217 | border-radius: 4px;
218 | min-height: 1em;
219 | outline: 0;
220 | transition: opacity .1s ease, background-color .1s ease, color .1s ease, box-shadow .1s ease, background .1s ease;
221 | -webkit-tap-highlight-color: transparent;
222 | border: none;
223 | background-image: none;
224 |
225 | &.btn-blue {
226 | background-color: @blue;
227 | color: #FFF;
228 | text-shadow: none;
229 | transition: background .2s;
230 | &:hover {
231 | background-color: @blueHover;
232 | color: #FFF;
233 | }
234 | }
235 |
236 | &.btn-green {
237 | background-color: @green;
238 | color: #FFF;
239 | text-shadow: none;
240 | transition: background .2s;
241 | &:hover {
242 | background-color: @greenHover;
243 | color: #FFF;
244 | }
245 | }
246 |
247 | &.btn-red {
248 | background-color: @red;
249 | color: #FFF;
250 | text-shadow: none;
251 | transition: background .2s;
252 | &:hover {
253 | background-color: @redHover;
254 | color: #FFF;
255 | }
256 | }
257 |
258 | &.btn-orange {
259 | background-color: @orange;
260 | color: #FFF;
261 | text-shadow: none;
262 | transition: background .2s;
263 | &:hover {
264 | background-color: @orangeHover;
265 | color: #FFF;
266 | }
267 | }
268 |
269 | &.btn-default {
270 | background-color: @default;
271 | color: #000;
272 | text-shadow: none;
273 | transition: background .2s;
274 | &:hover {
275 | background-color: @defaultHover;
276 | color: #000;
277 | }
278 | }
279 |
280 | &.btn-purple {
281 | background-color: @purple;
282 | color: #FFF;
283 | text-shadow: none;
284 | transition: background .2s;
285 | &:hover {
286 | background-color: @purpleHover;
287 | color: #FFF;
288 | }
289 | }
290 |
291 | &.btn-dark {
292 | background-color: @dark;
293 | color: #FFF;
294 | text-shadow: none;
295 | transition: background .2s;
296 | &:hover {
297 | background-color: @darkHover;
298 | color: #FFF;
299 | }
300 | }
301 | }
302 | }
303 | }
304 |
305 | @keyframes type-blue {
306 | 1%, 100% {
307 | border-color: @blue;
308 | }
309 | 50% {
310 | border-color: lighten(@blue, 10%);
311 | }
312 | }
313 | @keyframes type-green {
314 | 1%, 100% {
315 | border-color: @green;
316 | }
317 | 50% {
318 | border-color: lighten(@green, 10%);
319 | }
320 | }
321 | @keyframes type-red {
322 | 1%, 100% {
323 | border-color: @red;
324 | }
325 | 50% {
326 | border-color: lighten(@red, 10%);
327 | }
328 | }
329 | @keyframes type-orange {
330 | 1%, 100% {
331 | border-color: @orange;
332 | }
333 | 50% {
334 | border-color: lighten(@orange, 10%);
335 | }
336 | }
337 | @keyframes type-purple {
338 | 1%, 100% {
339 | border-color: @purple;
340 | }
341 | 50% {
342 | border-color: lighten(@purple, 10%);
343 | }
344 | }
345 | @keyframes type-dark {
346 | 1%, 100% {
347 | border-color: @dark;
348 | }
349 | 50% {
350 | border-color: lighten(@dark, 10%);
351 | }
352 | }
353 | &.ng-confirm-type-animated .ng-confirm-box {
354 | animation-duration: 2s;
355 | animation-iteration-count: infinite;
356 | }
357 | &.ng-confirm-type-blue .ng-confirm-box {
358 | border-top: solid 7px @blue;
359 | animation-name: type-blue;
360 | }
361 | &.ng-confirm-type-green .ng-confirm-box {
362 | border-top: solid 7px @green;
363 | animation-name: type-green;
364 | }
365 | &.ng-confirm-type-red .ng-confirm-box {
366 | border-top: solid 7px @red;
367 | animation-name: type-red;
368 | }
369 | &.ng-confirm-type-orange .ng-confirm-box {
370 | border-top: solid 7px @orange;
371 | animation-name: type-orange;
372 | }
373 | &.ng-confirm-type-purple .ng-confirm-box {
374 | border-top: solid 7px @purple;
375 | animation-name: type-purple;
376 | }
377 | &.ng-confirm-type-dark .ng-confirm-box {
378 | border-top: solid 7px @dark;
379 | animation-name: type-dark;
380 | }
381 |
382 | .ng-confirm-clear {
383 | clear: both;
384 | }
385 |
386 | &.ng-confirm-rtl {
387 | direction: rtl;
388 | }
389 |
390 | .ng-confirm-box.ng-confirm-hilight {
391 | &.ng-confirm-hilight-shake {
392 | animation: shake 0.82s cubic-bezier(.36, .07, .19, .97) both;
393 | transform: translate3d(0, 0, 0);
394 | }
395 | &.ng-confirm-hilight-glow {
396 | animation: glow 0.82s cubic-bezier(.36, .07, .19, .97) both;
397 | transform: translate3d(0, 0, 0);
398 | }
399 | }
400 | }
401 |
402 | @keyframes shake {
403 | 10%, 90% {
404 | transform: translate3d(-2px, 0, 0);
405 | }
406 | 20%, 80% {
407 | transform: translate3d(4px, 0, 0);
408 | }
409 | 30%, 50%, 70% {
410 | transform: translate3d(-8px, 0, 0);
411 | }
412 | 40%, 60% {
413 | transform: translate3d(8px, 0, 0);
414 | }
415 | }
416 |
417 | @keyframes glow {
418 | 0%, 100% {
419 | box-shadow: 0 0 3px red;
420 | }
421 | 50% {
422 | box-shadow: 0 0 30px red;
423 | }
424 | }
425 |
426 | /*Transition rules*/
427 | .ng-confirm {
428 | perspective: 400px;
429 |
430 | .ng-confirm-box {
431 | opacity: 1;
432 | //transition-property: all;
433 |
434 | &.ng-confirm-animation-top, &.ng-confirm-animation-left, &.ng-confirm-animation-right, &.ng-confirm-animation-bottom, &.ng-confirm-animation-opacity, &.ng-confirm-animation-zoom, &.ng-confirm-animation-scale, &.ng-confirm-animation-none, &.ng-confirm-animation-rotate, &.ng-confirm-animation-rotatex, &.ng-confirm-animation-rotatey, &.ng-confirm-animation-scaley, &.ng-confirm-animation-scalex {
435 | opacity: 0;
436 | }
437 | &.ng-confirm-animation-rotate {
438 | transform: rotate(90deg);
439 | }
440 | &.ng-confirm-animation-rotatex {
441 | transform: rotateX(90deg);
442 | transform-origin: center;
443 | }
444 | &.ng-confirm-animation-rotatexr {
445 | transform: rotateX(-90deg);
446 | transform-origin: center;
447 | }
448 | &.ng-confirm-animation-rotatey {
449 | transform: rotatey(90deg);
450 | transform-origin: center;
451 | }
452 | &.ng-confirm-animation-rotateyr {
453 | transform: rotatey(-90deg);
454 | transform-origin: center;
455 | }
456 | &.ng-confirm-animation-scaley {
457 | transform: scaley(1.5);
458 | transform-origin: center;
459 | }
460 | &.ng-confirm-animation-scalex {
461 | transform: scalex(1.5);
462 | transform-origin: center;
463 | }
464 | &.ng-confirm-animation-top {
465 | transform: translate(0px, -100px);
466 | }
467 | &.ng-confirm-animation-left {
468 | transform: translate(-100px, 0px);
469 | }
470 | &.ng-confirm-animation-right {
471 | transform: translate(100px, 0px);
472 | }
473 | &.ng-confirm-animation-bottom {
474 | transform: translate(0px, 100px);
475 | }
476 | &.ng-confirm-animation-opacity {
477 |
478 | }
479 | &.ng-confirm-animation-zoom {
480 | transform: scale(1.2);
481 | }
482 | &.ng-confirm-animation-scale {
483 | transform: scale(0.5);
484 | }
485 | &.ng-confirm-animation-none {
486 | visibility: hidden;
487 | }
488 | }
489 | }
490 |
491 | // themes
492 | .ng-confirm {
493 |
494 | &.ng-confirm-light, &.ng-confirm-white {
495 | .ng-confirm-bg {
496 | background-color: #444;
497 | opacity: .2;
498 | }
499 | .ng-confirm-icon-c {
500 | margin-right: 8px;
501 | }
502 | &.ng-confirm-rtl {
503 | .ng-confirm-closeIcon {
504 | left: 5px !important;
505 | right: auto !important;
506 | }
507 | .ng-confirm-icon-c {
508 | margin-right: 0;
509 | margin-left: 8px;
510 | }
511 | }
512 | .ng-confirm-box {
513 | box-shadow: 0 2px 6px rgba(0, 0, 0, .2);
514 | border-radius: 5px;
515 |
516 | .ng-confirm-closeIcon {
517 | line-height: 20px;
518 | }
519 |
520 | .ng-confirm-buttons {
521 | float: right;
522 |
523 | button {
524 | border: none;
525 | background-image: none;
526 | text-transform: uppercase;
527 | font-size: 14px;
528 | font-weight: bold;
529 | text-shadow: none;
530 | transition: background .1s;
531 | color: white;
532 | }
533 | button.btn-default {
534 | box-shadow: none;
535 | color: #333;
536 |
537 | &:hover {
538 | background: #ddd;
539 | }
540 | }
541 | }
542 | }
543 | }
544 |
545 | &.ng-confirm-dark, &.ng-confirm-black {
546 | .ng-confirm-bg {
547 | background-color: darkslategray;
548 | opacity: .4;
549 | }
550 | .ng-confirm-icon-c {
551 | margin-right: 8px;
552 | }
553 | &.ng-confirm-rtl {
554 | .ng-confirm-closeIcon {
555 | left: 5px !important;
556 | right: auto !important;
557 | }
558 | .ng-confirm-icon-c {
559 | margin-right: 0;
560 | margin-left: 8px;
561 | }
562 | }
563 | .ng-confirm-box {
564 | box-shadow: 0 2px 6px rgba(0, 0, 0, .2);
565 | background: #444;
566 | border-radius: 5px;
567 |
568 | .ng-confirm-closeIcon {
569 | line-height: 20px;
570 | }
571 |
572 | &.ng-confirm-loading {
573 | &:before {
574 | background: #444;
575 | }
576 | &:after {
577 | border-bottom-color: deepskyblue;
578 | }
579 | }
580 |
581 | *:not(input):not(textarea):not(select):not(option) {
582 | color: white;
583 | }
584 | input, textarea, select, option {
585 | color: initial;
586 | }
587 |
588 | .ng-confirm-buttons {
589 | float: right;
590 |
591 | button {
592 | border: none;
593 | background-image: none;
594 | text-transform: uppercase;
595 | font-size: 14px;
596 | font-weight: bold;
597 | text-shadow: none;
598 | transition: background .1s;
599 | color: white;
600 | }
601 | button.btn-default {
602 | box-shadow: none;
603 | color: #fff;
604 | background: none;
605 |
606 | &:hover {
607 | background: #666;
608 | }
609 | }
610 | }
611 | }
612 | }
613 | }
614 |
615 | .ng-confirm.ng-confirm-supervan {
616 | .ng-confirm-bg {
617 | background: #36465D;
618 | opacity: 0.99;
619 | }
620 |
621 | &.ng-confirm-type-blue .ng-confirm-box {
622 | border: none;
623 | }
624 | &.ng-confirm-type-blue .ng-confirm-bg {
625 | background: darken(@blue, 10%);
626 | }
627 | &.ng-confirm-type-green .ng-confirm-box {
628 | border: none;
629 | }
630 | &.ng-confirm-type-green .ng-confirm-bg {
631 | background: darken(@green, 10%);
632 | }
633 | &.ng-confirm-type-red .ng-confirm-box {
634 | border: none;
635 | }
636 | &.ng-confirm-type-red .ng-confirm-bg {
637 | background: darken(@red, 10%);
638 | }
639 | &.ng-confirm-type-orange .ng-confirm-box {
640 | border: none;
641 | }
642 | &.ng-confirm-type-orange .ng-confirm-bg {
643 | background: darken(@orange, 10%);
644 | }
645 | &.ng-confirm-type-purple .ng-confirm-box {
646 | border: none;
647 | }
648 | &.ng-confirm-type-purple .ng-confirm-bg {
649 | background: darken(@purple, 10%);
650 | }
651 | &.ng-confirm-type-dark .ng-confirm-box {
652 | border: none;
653 | }
654 | &.ng-confirm-type-dark .ng-confirm-bg {
655 | background: darken(@dark, 10%);
656 | }
657 |
658 | .ng-confirm-box {
659 | background-color: transparent;
660 |
661 | &.ng-confirm-loading {
662 | &:before {
663 | background: transparent;
664 | }
665 | &:after {
666 | border-bottom-color: transparent;
667 | }
668 | }
669 |
670 | div.ng-confirm-closeIcon {
671 | color: white;
672 | border-radius: 50px;
673 | height: 26px;
674 | width: 26px;
675 | line-height: 26px;
676 | top: 2px;
677 | right: 2px;
678 | box-shadow: 0 0 0 2px #ddd;
679 | }
680 |
681 | *:not(input):not(textarea):not(select):not(option) {
682 | color: white;
683 | }
684 |
685 | input, textarea, select, option {
686 | color: initial;
687 | }
688 |
689 | div.ng-confirm-closeIcon {
690 | color: white;
691 | }
692 |
693 | div.ng-confirm-title-c {
694 | text-align: center;
695 | font-size: 28px;
696 | font-weight: normal;
697 | padding-bottom: 25px;
698 | > * {
699 | display: block;
700 | }
701 | .ng-confirm-icon-c {
702 | margin: 0 0 20px;
703 | font-size: 50px;
704 | }
705 | }
706 | div.ng-confirm-content-pane {
707 | margin-bottom: 25px;
708 | }
709 | div.ng-confirm-content {
710 | text-align: center;
711 |
712 | &:empty {
713 | &:before {
714 |
715 | }
716 | &:after {
717 |
718 | }
719 | }
720 | }
721 | .ng-confirm-buttons {
722 | text-align: center;
723 |
724 | button {
725 | font-size: 16px;
726 | border-radius: 2px;
727 | text-shadow: none;
728 | border: none;
729 | color: white;
730 | padding: 10px;
731 | min-width: 100px;
732 | }
733 | button.btn-default {
734 | background: darken(#36465D, 3%);
735 | }
736 | button.btn-default:hover {
737 | background: darken(#36465D, 4%);
738 | color: white;
739 | }
740 | }
741 | }
742 | }
743 |
744 | .ng-confirm.ng-confirm-material {
745 | .ng-confirm-bg {
746 | background: dimgray;
747 | opacity: .6;
748 | }
749 | .ng-confirm-icon-c {
750 | margin-right: 8px;
751 | }
752 | .ng-confirm-box {
753 | background-color: white;
754 | box-shadow: 0 7px 8px -4px rgba(0, 0, 0, .2), 0 13px 19px 2px rgba(0, 0, 0, .14), 0 5px 24px 4px rgba(0, 0, 0, .12);
755 | padding: 30px 25px 10px 25px;
756 |
757 | div.ng-confirm-closeIcon {
758 | color: rgba(0, 0, 0, .87);
759 | line-height: 20px;
760 | top: 15px;
761 | right: 15px;
762 | }
763 |
764 | div.ng-confirm-title-c {
765 | color: rgba(0, 0, 0, .87);
766 | font-size: 22px;
767 | font-weight: bold;
768 | }
769 | div.ng-confirm-content {
770 | text-align: left;
771 | color: rgba(0, 0, 0, .87);
772 |
773 | &:empty {
774 | &:before {
775 |
776 | }
777 | &:after {
778 |
779 | }
780 | }
781 | }
782 | .ng-confirm-buttons {
783 | text-align: right;
784 |
785 | button {
786 | text-transform: uppercase;
787 | font-weight: 500;
788 | }
789 | button + button {
790 |
791 | }
792 | }
793 | }
794 |
795 | &.ng-confirm-rtl {
796 | .ng-confirm-closeIcon {
797 | left: 15px !important;
798 | right: auto !important;
799 | }
800 | .ng-confirm-icon-c {
801 | margin-right: 0;
802 | margin-left: 8px;
803 | }
804 | }
805 | }
806 |
807 | .ng-confirm.ng-confirm-bootstrap {
808 | .ng-confirm-bg {
809 | background-color: rgba(0, 0, 0, .21);
810 | }
811 |
812 | .ng-confirm-icon-c {
813 | margin-right: 8px;
814 | }
815 |
816 | .ng-confirm-box {
817 | background-color: white;
818 | box-shadow: 0 3px 8px 0px rgba(0, 0, 0, 0.2);
819 | border: solid 1px rgba(0, 0, 0, 0.4);
820 | padding: 15px 0 0;
821 | border-radius: 6px;
822 |
823 | div.ng-confirm-closeIcon {
824 | color: rgba(0, 0, 0, 0.87);
825 | line-height: 20px;
826 | }
827 |
828 | div.ng-confirm-title-c {
829 | color: rgba(0, 0, 0, 0.87);
830 | font-size: 22px;
831 | font-weight: bold;
832 | padding-left: 15px;
833 | padding-right: 15px;
834 | }
835 | div.ng-confirm-content-pane {
836 |
837 | }
838 | div.ng-confirm-content {
839 | text-align: left;
840 | color: rgba(0, 0, 0, 0.87);
841 | padding: 0px 15px;
842 |
843 | &:empty {
844 | &:before {
845 |
846 | }
847 | &:after {
848 |
849 | }
850 | }
851 | }
852 |
853 | .ng-confirm-buttons {
854 | text-align: right;
855 | padding: 15px;
856 | margin: -5px 0 0px;
857 | border-top: solid 1px #ddd;
858 | overflow: hidden;
859 | border-radius: 0 0 4px 4px;
860 |
861 | button {
862 | font-weight: 500;
863 | border-radius: 0px;
864 | margin: 0;
865 | }
866 | button:first-child {
867 | border-radius: 4px 0 0 4px;
868 | }
869 | button:last-child {
870 | border-radius: 0 4px 4px 0;
871 | }
872 | }
873 | }
874 |
875 | &.ng-confirm-rtl {
876 | .ng-confirm-closeIcon {
877 | left: 5px !important;
878 | right: auto !important;
879 | }
880 | .ng-confirm-icon-c {
881 | margin-right: 0;
882 | margin-left: 8px;
883 | }
884 | }
885 | }
886 |
887 | .ng-confirm.ng-confirm-modern {
888 | .ng-confirm-bg {
889 | background-color: slategray;
890 | opacity: .6;
891 | }
892 |
893 | .ng-confirm-icon-c {
894 | margin-right: 8px;
895 | }
896 |
897 | .ng-confirm-box {
898 | background-color: white;
899 | box-shadow: 0 7px 8px -4px rgba(0, 0, 0, .2), 0 13px 19px 2px rgba(0, 0, 0, .14), 0 5px 24px 4px rgba(0, 0, 0, .12);
900 | padding: 25px 25px 10px 25px;
901 |
902 | div.ng-confirm-closeIcon {
903 | color: rgba(0, 0, 0, 0.87);
904 | border-radius: 50px;
905 | height: 25px;
906 | width: 25px;
907 | line-height: 25px !important;
908 | top: 10px;
909 | right: 10px;
910 | box-shadow: 0 0 0 2px #ddd;
911 | }
912 |
913 | div.ng-confirm-title-c {
914 | color: rgba(0, 0, 0, .87);
915 | font-size: 24px;
916 | font-weight: bold;
917 | text-align: center;
918 | margin-bottom: 10px;
919 |
920 | .ng-confirm-icon-c {
921 | display: block;
922 | margin-right: 0px;
923 | margin-left: 0px;
924 | margin-bottom: 10px;
925 | font-size: 69px;
926 | color: #aaa;
927 | }
928 | }
929 |
930 | div.ng-confirm-content {
931 | //text-align: center;
932 | font-size: 15px;
933 | color: #777;
934 | margin-bottom: 25px;
935 |
936 | &:empty {
937 | &:before {
938 |
939 | }
940 | &:after {
941 |
942 | }
943 | }
944 | }
945 | .ng-confirm-buttons {
946 | text-align: center;
947 |
948 | button {
949 | font-weight: bold;
950 | text-transform: uppercase;
951 | transition: background .1s;
952 |
953 | &.btn-success {
954 |
955 | }
956 | }
957 | button + button {
958 | margin-left: 4px;
959 | }
960 | }
961 | }
962 | }
963 |
964 | .ng-confirm.ng-confirm-seamless {
965 | .ng-confirm-bg {
966 | background-color: rgba(255, 255, 255, .5);
967 | &:before {
968 | border-bottom-color: dodgerblue;
969 | }
970 | }
971 |
972 | .ng-confirm-icon-c {
973 | margin-right: 8px;
974 | }
975 |
976 | .ng-confirm-box {
977 | background-color: white;
978 | box-shadow: 0 7px 8px -4px rgba(0, 0, 0, .2), 0 13px 19px 2px rgba(0, 0, 0, .14), 0 5px 24px 4px rgba(0, 0, 0, .12);
979 | padding: 20px 0 10px 0;
980 |
981 | div.ng-confirm-closeIcon {
982 | color: rgba(0, 0, 0, 0.87);
983 | border-radius: 50px;
984 | height: 25px;
985 | width: 25px;
986 | line-height: 25px !important;
987 | top: 10px;
988 | right: 10px;
989 | box-shadow: 0 0 0 2px #ddd;
990 | }
991 |
992 | div.ng-confirm-title-c {
993 | color: rgba(0, 0, 0, .87);
994 | font-size: 24px;
995 | text-align: center;
996 |
997 | .ng-confirm-icon-c {
998 | color: #aaa;
999 | }
1000 | .ng-confirm-title {
1001 | font-weight: bold;
1002 | }
1003 | }
1004 |
1005 | div.ng-confirm-content {
1006 | text-align: center;
1007 | font-size: 15px;
1008 | color: #464646;
1009 | margin-bottom: 25px;
1010 |
1011 | &:empty {
1012 | &:before {
1013 |
1014 | }
1015 | &:after {
1016 |
1017 | }
1018 | }
1019 | }
1020 | .ng-confirm-buttons {
1021 | text-align: center;
1022 |
1023 | button {
1024 | font-size: 16px;
1025 | font-weight: bold;
1026 | &.btn-success {
1027 |
1028 | }
1029 | }
1030 | button + button {
1031 | margin-left: 4px;
1032 | }
1033 | }
1034 | }
1035 | }
1036 |
1037 | .ng-confirm-el-hide {
1038 | display: none !important;
1039 | }
--------------------------------------------------------------------------------
/demo/demo.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #fff;
3 | }
4 |
5 | .navbar-right iframe {
6 | margin: 11px 10px 0 10px;
7 | }
8 |
9 | .affix {
10 | position: fixed;
11 | top: 0;
12 | width: 100%
13 | }
14 |
15 | .aconfirm-logo {
16 | background-image: url('../angular-confirm.png');
17 | background-size: contain;
18 | background-position: center;
19 | background-repeat: no-repeat;
20 | width: 152px;
21 | }
22 |
23 | .download-btns .btn{
24 | background: white;
25 | color: crimson;
26 | border-radius: 4px;
27 | }
28 |
29 | kbd.blue {
30 | background-color: #2980b9;
31 | font-family: inherit;
32 | padding-left: 10px;
33 | padding-right: 10px
34 | }
35 |
36 | .section {
37 | border-left: solid 1px #ddd;
38 | padding-left: 15px;
39 | }
40 |
41 | .spacer15 {
42 | height: 15px
43 | }
44 |
45 | pre ol {
46 | margin: 0 !important
47 | }
48 |
49 | .btn {
50 | /*background-image: none;*/
51 | /*border: 0*/
52 | outline: none;
53 | }
54 |
55 | .com {
56 | color: #93a1a1
57 | }
58 |
59 | .lit {
60 | color: #195f91
61 | }
62 |
63 | .clo, .opn, .pun {
64 | color: #93a1a1
65 | }
66 |
67 | .fun {
68 | color: #dc322f
69 | }
70 |
71 | .atv, .str {
72 | color: #D14
73 | }
74 |
75 | .kwd, .prettyprint .tag {
76 | color: #1e347b
77 | }
78 |
79 | .atn, .dec, .typ, .var {
80 | color: teal
81 | }
82 |
83 | .pln {
84 | color: #48484c
85 | }
86 |
87 | .prettyprint {
88 | padding: 8px;
89 | background-color: #FBFBFC;
90 | border: 1px solid #e1e1e8
91 | }
92 |
93 | .prettyprint.linenums {
94 | -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
95 | box-shadow: inset 48px 0 0 #fbfbfc, inset 48px 0 0 #FFFFFF;
96 | }
97 |
98 | ol.linenums {
99 | margin: 0 0 0 33px
100 | }
101 |
102 | ol.linenums li {
103 | padding-left: 12px;
104 | color: #bebec5;
105 | line-height: 20px;
106 | text-shadow: 0 1px 0 #fff
107 | }
108 |
109 | .special {
110 | font-style: italic;
111 | font-weight: 700 !important;
112 | color: #bc0000 !important;
113 | background: #000
114 | }
115 |
116 | ul.nav.nav-list li a {
117 | text-align: left;
118 | }
119 | ul.nav.nav-list li > a {
120 | color: #444;
121 | padding: 5px 10px;
122 | box-shadow: -1px 0px 0 -0px #ddd;
123 | }
124 | ul.nav.nav-list li > a:hover {
125 | box-shadow: -7px 0px 0 -5px black;
126 | background: transparent;
127 | }
128 | ul.nav.nav-list li li a {
129 | color: #444;
130 | padding: 0px 20px;
131 | box-shadow: -1px 0px 0 -0px #ddd;
132 | }
133 | ul.nav.nav-list li li:last-child a {
134 | margin-bottom: 5px;
135 | }
136 | ul.nav.nav-list li.active > a {
137 | color: #3498DB;
138 | font-weight: bold;
139 | box-shadow: -7px 0px 0 -5px #3498DB;
140 | }
141 | ul.nav.nav-list li ul {
142 | display: none;
143 | }
144 | ul.nav.nav-list li.active ul {
145 | display: block;
146 | }
147 | ul.nav.nav-list li.no-b-l a{
148 | box-shadow: none;
149 | }
150 | .navheader{
151 | margin-bottom: 0px;
152 | background: white;
153 | }
154 | .header{
155 | position: relative;
156 | padding: 30px 0;
157 | color: #cdbfe3;
158 | text-align: center;
159 | text-shadow: 0 1px 0 rgba(0,0,0,.1);
160 | background-color: #E23337;
161 | background-image: -webkit-gradient(linear,left top,left bottom,from(#B63032),to(#E23337));
162 | background-image: -webkit-linear-gradient(top,#B63032 0,#E23337 100%);
163 | background-image: -o-linear-gradient(top,#B63032 0,#E23337 100%);
164 | background-image: linear-gradient(to bottom,#B63032 0,#E23337 100%);
165 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#B63032', endColorstr='#E23337', GradientType=0);
166 | background-repeat: repeat-x;
167 | color: white;
168 | }
169 | .header p{
170 | color: #f8f8f8;
171 | font-size: 24px;
172 | }
173 | .header img{
174 | max-width: 400px;
175 | }
176 | @media all and (max-width: 500px){
177 | .header img{
178 | max-width: none;
179 | width: 100%;
180 | }
181 | .header .btn{
182 | display: block;
183 | }
184 | .header .btn + .btn{
185 | margin-top: 5px;
186 | }
187 | }
188 | .v{
189 | vertical-align: text-top;
190 | }
191 |
192 | .space10 {
193 | height: 10px;
194 | }
195 | body {
196 | font-family: Segoe UI, Frutiger, Frutiger Linotype, Dejavu Sans, Helvetica Neue, Arial, sans-serif;
197 | position: relative;
198 | }
199 |
200 | @media all and (max-width: 992px) {
201 | #my-nav-sticky-wrapper{
202 | display: none;
203 | }
204 | }
--------------------------------------------------------------------------------
/demo/demo.js:
--------------------------------------------------------------------------------
1 | if (typeof jQuery == "undefined") {throw new Error("Documentation needs the jQuery library to function.")};
2 | $('body').scrollspy({
3 | target: '#my-nav',
4 | offset: 100
5 | });
6 | var bs = $('.footer').outerHeight()+10;
7 | $("#my-nav").sticky({topSpacing:20, bottomSpacing: bs});
8 | $("span.version").html(version || "");
9 |
10 | $(document).ready(function () {
11 | prettyPrint();
12 | $("span.version").html(version || "");
13 | });
14 | function rs(){
15 |
16 | }
17 | $(window).resize(function(){
18 | rs();
19 | })
20 | rs();
--------------------------------------------------------------------------------
/demo/libs/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/craftpip/angular-confirm/0283ef1ce55b263f7db71d3d1ced357b9b3ef3c7/demo/libs/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/demo/libs/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/craftpip/angular-confirm/0283ef1ce55b263f7db71d3d1ced357b9b3ef3c7/demo/libs/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/demo/libs/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/craftpip/angular-confirm/0283ef1ce55b263f7db71d3d1ced357b9b3ef3c7/demo/libs/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/demo/libs/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/craftpip/angular-confirm/0283ef1ce55b263f7db71d3d1ced357b9b3ef3c7/demo/libs/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/demo/libs/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/craftpip/angular-confirm/0283ef1ce55b263f7db71d3d1ced357b9b3ef3c7/demo/libs/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/demo/logo-name.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
14 |
16 |
26 |
37 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/dist/angular-confirm.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * angular-confirm v1.1.0 (http://craftpip.github.io/angular-confirm/)
3 | * Author: boniface pereira
4 | * Website: www.craftpip.com
5 | * Contact: hey@craftpip.com
6 | *
7 | * Copyright 2016-2017 angular-confirm
8 | * Licensed under MIT (https://github.com/craftpip/angular-confirm/blob/master/LICENSE)
9 | */@-webkit-keyframes ng-confirm-spin{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ng-confirm-spin{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}body[class*=ng-confirm-no-scroll-]{overflow:hidden!important}.ng-confirm{position:fixed;top:0;left:0;right:0;bottom:0;z-index:99999999;font-family:inherit;overflow:hidden}.ng-confirm .ng-confirm-bg{position:fixed;top:0;left:0;right:0;bottom:0;-webkit-transition:opacity .4s,background .4s;transition:opacity .4s,background .4s}.ng-confirm .ng-confirm-bg.ng-confirm-bg-h{opacity:0!important}.ng-confirm .ng-confirm-scrollpane{position:fixed;top:0;left:0;right:0;bottom:0;overflow-y:auto;-webkit-perspective:500px;perspective:500px;-webkit-perspective-origin:center;perspective-origin:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-confirm .ng-confirm-box{background:white;border-radius:4px;position:relative;outline:0;padding:15px 15px 0;overflow:hidden;margin-left:auto;margin-right:auto}.ng-confirm .ng-confirm-box.ng-confirm-loading{min-height:120px}.ng-confirm .ng-confirm-box.ng-confirm-loading:before{content:'';position:absolute;left:0;background:white;right:0;top:0;bottom:0;border-radius:10px;z-index:1}.ng-confirm .ng-confirm-box.ng-confirm-loading:after{opacity:.6;content:'';height:30px;width:30px;border:solid 3px transparent;position:absolute;left:50%;margin-left:-15px;border-radius:50%;-webkit-animation:ng-confirm-spin 1s infinite linear;animation:ng-confirm-spin 1s infinite linear;border-bottom-color:dodgerblue;top:50%;margin-top:-15px;z-index:2}.ng-confirm .ng-confirm-box div.ng-confirm-closeIcon{height:20px;width:20px;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.6;text-align:center;-webkit-transition:opacity .3s ease-in;transition:opacity .3s ease-in;font-size:27px!important;line-height:14px;font-family:Arial,"Helvetica Neue",Helvetica,sans-serif}.ng-confirm .ng-confirm-box div.ng-confirm-closeIcon:empty{display:none}.ng-confirm .ng-confirm-box div.ng-confirm-closeIcon .fa,.ng-confirm .ng-confirm-box div.ng-confirm-closeIcon .glyphicon,.ng-confirm .ng-confirm-box div.ng-confirm-closeIcon .zmdi{font-size:16px;line-height:25px;vertical-align:bottom}.ng-confirm .ng-confirm-box div.ng-confirm-closeIcon:hover{opacity:1}.ng-confirm .ng-confirm-box div.ng-confirm-title-c{display:block;font-size:22px;line-height:20px;padding-bottom:15px}.ng-confirm .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c{font-size:inherit;display:inline-block;vertical-align:top}.ng-confirm .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c i{vertical-align:middle}.ng-confirm .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c:empty{display:none}.ng-confirm .ng-confirm-box div.ng-confirm-title-c .ng-confirm-title{font-size:inherit;font-family:inherit;display:inline-block;vertical-align:middle;-webkit-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.ng-confirm .ng-confirm-box div.ng-confirm-title-c .ng-confirm-title:empty{display:none}.ng-confirm .ng-confirm-box div.ng-confirm-content-pane{margin-bottom:15px;height:0;display:inline-block;width:100%;position:relative;overflow:hidden}.ng-confirm .ng-confirm-box div.ng-confirm-content-pane .ng-confirm-content{width:100%;height:auto;-webkit-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.ng-confirm .ng-confirm-box div.ng-confirm-content-pane .ng-confirm-content img{width:100%;height:auto}.ng-confirm .ng-confirm-box div.ng-confirm-content-pane .ng-confirm-content:empty{display:none}.ng-confirm .ng-confirm-box .ng-confirm-buttons{padding-bottom:11px}.ng-confirm .ng-confirm-box .ng-confirm-buttons>button{margin-bottom:4px;margin-left:2px;margin-right:2px}.ng-confirm .ng-confirm-box .ng-confirm-buttons button{display:inline-block;padding:6px 12px;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:4px;min-height:1em;outline:0;-webkit-transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;-webkit-tap-highlight-color:transparent;border:0;background-image:none}.ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-blue{background-color:#3498db;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-blue:hover{background-color:#2980b9;color:#FFF}.ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-green{background-color:#2ecc71;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-green:hover{background-color:#27ae60;color:#FFF}.ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-red{background-color:#e74c3c;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-red:hover{background-color:#c0392b;color:#FFF}.ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-orange{background-color:#f1c40f;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-orange:hover{background-color:#f39c12;color:#FFF}.ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-default{background-color:#ecf0f1;color:#000;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-default:hover{background-color:#bdc3c7;color:#000}.ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-purple{background-color:#9b59b6;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-purple:hover{background-color:#8e44ad;color:#FFF}.ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-dark{background-color:#34495e;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.ng-confirm .ng-confirm-box .ng-confirm-buttons button.btn-dark:hover{background-color:#2c3e50;color:#FFF}@-webkit-keyframes type-blue{1%,100%{border-color:#3498db}50%{border-color:#5faee3}}@keyframes type-blue{1%,100%{border-color:#3498db}50%{border-color:#5faee3}}@-webkit-keyframes type-green{1%,100%{border-color:#2ecc71}50%{border-color:#54d98c}}@keyframes type-green{1%,100%{border-color:#2ecc71}50%{border-color:#54d98c}}@-webkit-keyframes type-red{1%,100%{border-color:#e74c3c}50%{border-color:#ed7669}}@keyframes type-red{1%,100%{border-color:#e74c3c}50%{border-color:#ed7669}}@-webkit-keyframes type-orange{1%,100%{border-color:#f1c40f}50%{border-color:#f4d03f}}@keyframes type-orange{1%,100%{border-color:#f1c40f}50%{border-color:#f4d03f}}@-webkit-keyframes type-purple{1%,100%{border-color:#9b59b6}50%{border-color:#b07cc6}}@keyframes type-purple{1%,100%{border-color:#9b59b6}50%{border-color:#b07cc6}}@-webkit-keyframes type-dark{1%,100%{border-color:#34495e}50%{border-color:#46627f}}@keyframes type-dark{1%,100%{border-color:#34495e}50%{border-color:#46627f}}.ng-confirm.ng-confirm-type-animated .ng-confirm-box{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.ng-confirm.ng-confirm-type-blue .ng-confirm-box{border-top:solid 7px #3498db;-webkit-animation-name:type-blue;animation-name:type-blue}.ng-confirm.ng-confirm-type-green .ng-confirm-box{border-top:solid 7px #2ecc71;-webkit-animation-name:type-green;animation-name:type-green}.ng-confirm.ng-confirm-type-red .ng-confirm-box{border-top:solid 7px #e74c3c;-webkit-animation-name:type-red;animation-name:type-red}.ng-confirm.ng-confirm-type-orange .ng-confirm-box{border-top:solid 7px #f1c40f;-webkit-animation-name:type-orange;animation-name:type-orange}.ng-confirm.ng-confirm-type-purple .ng-confirm-box{border-top:solid 7px #9b59b6;-webkit-animation-name:type-purple;animation-name:type-purple}.ng-confirm.ng-confirm-type-dark .ng-confirm-box{border-top:solid 7px #34495e;-webkit-animation-name:type-dark;animation-name:type-dark}.ng-confirm .ng-confirm-clear{clear:both}.ng-confirm.ng-confirm-rtl{direction:rtl}.ng-confirm .ng-confirm-box.ng-confirm-hilight.ng-confirm-hilight-shake{-webkit-animation:shake .82s cubic-bezier(0.36,0.07,0.19,0.97) both;animation:shake .82s cubic-bezier(0.36,0.07,0.19,0.97) both;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ng-confirm .ng-confirm-box.ng-confirm-hilight.ng-confirm-hilight-glow{-webkit-animation:glow .82s cubic-bezier(0.36,0.07,0.19,0.97) both;animation:glow .82s cubic-bezier(0.36,0.07,0.19,0.97) both;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-webkit-keyframes shake{10%,90%{-webkit-transform:translate3d(-2px,0,0);transform:translate3d(-2px,0,0)}20%,80%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-8px,0,0);transform:translate3d(-8px,0,0)}40%,60%{-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}}@keyframes shake{10%,90%{-webkit-transform:translate3d(-2px,0,0);transform:translate3d(-2px,0,0)}20%,80%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-8px,0,0);transform:translate3d(-8px,0,0)}40%,60%{-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}}@-webkit-keyframes glow{0%,100%{box-shadow:0 0 3px red}50%{box-shadow:0 0 30px red}}@keyframes glow{0%,100%{box-shadow:0 0 3px red}50%{box-shadow:0 0 30px red}}.ng-confirm{-webkit-perspective:400px;perspective:400px}.ng-confirm .ng-confirm-box{opacity:1}.ng-confirm .ng-confirm-box.ng-confirm-animation-top,.ng-confirm .ng-confirm-box.ng-confirm-animation-left,.ng-confirm .ng-confirm-box.ng-confirm-animation-right,.ng-confirm .ng-confirm-box.ng-confirm-animation-bottom,.ng-confirm .ng-confirm-box.ng-confirm-animation-opacity,.ng-confirm .ng-confirm-box.ng-confirm-animation-zoom,.ng-confirm .ng-confirm-box.ng-confirm-animation-scale,.ng-confirm .ng-confirm-box.ng-confirm-animation-none,.ng-confirm .ng-confirm-box.ng-confirm-animation-rotate,.ng-confirm .ng-confirm-box.ng-confirm-animation-rotatex,.ng-confirm .ng-confirm-box.ng-confirm-animation-rotatey,.ng-confirm .ng-confirm-box.ng-confirm-animation-scaley,.ng-confirm .ng-confirm-box.ng-confirm-animation-scalex{opacity:0}.ng-confirm .ng-confirm-box.ng-confirm-animation-rotate{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.ng-confirm .ng-confirm-box.ng-confirm-animation-rotatex{-webkit-transform:rotateX(90deg);transform:rotateX(90deg);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.ng-confirm .ng-confirm-box.ng-confirm-animation-rotatexr{-webkit-transform:rotateX(-90deg);transform:rotateX(-90deg);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.ng-confirm .ng-confirm-box.ng-confirm-animation-rotatey{-webkit-transform:rotatey(90deg);-ms-transform:rotatey(90deg);transform:rotatey(90deg);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.ng-confirm .ng-confirm-box.ng-confirm-animation-rotateyr{-webkit-transform:rotatey(-90deg);-ms-transform:rotatey(-90deg);transform:rotatey(-90deg);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.ng-confirm .ng-confirm-box.ng-confirm-animation-scaley{-webkit-transform:scaley(1.5);-ms-transform:scaley(1.5);transform:scaley(1.5);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.ng-confirm .ng-confirm-box.ng-confirm-animation-scalex{-webkit-transform:scalex(1.5);-ms-transform:scalex(1.5);transform:scalex(1.5);-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.ng-confirm .ng-confirm-box.ng-confirm-animation-top{-webkit-transform:translate(0px,-100px);-ms-transform:translate(0px,-100px);transform:translate(0px,-100px)}.ng-confirm .ng-confirm-box.ng-confirm-animation-left{-webkit-transform:translate(-100px,0px);-ms-transform:translate(-100px,0px);transform:translate(-100px,0px)}.ng-confirm .ng-confirm-box.ng-confirm-animation-right{-webkit-transform:translate(100px,0px);-ms-transform:translate(100px,0px);transform:translate(100px,0px)}.ng-confirm .ng-confirm-box.ng-confirm-animation-bottom{-webkit-transform:translate(0px,100px);-ms-transform:translate(0px,100px);transform:translate(0px,100px)}.ng-confirm .ng-confirm-box.ng-confirm-animation-zoom{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.ng-confirm .ng-confirm-box.ng-confirm-animation-scale{-webkit-transform:scale(0.5);-ms-transform:scale(0.5);transform:scale(0.5)}.ng-confirm .ng-confirm-box.ng-confirm-animation-none{visibility:hidden}.ng-confirm.ng-confirm-light .ng-confirm-bg,.ng-confirm.ng-confirm-white .ng-confirm-bg{background-color:#444;opacity:.2}.ng-confirm.ng-confirm-light .ng-confirm-icon-c,.ng-confirm.ng-confirm-white .ng-confirm-icon-c{margin-right:8px}.ng-confirm.ng-confirm-light.ng-confirm-rtl .ng-confirm-closeIcon,.ng-confirm.ng-confirm-white.ng-confirm-rtl .ng-confirm-closeIcon{left:5px!important;right:auto!important}.ng-confirm.ng-confirm-light.ng-confirm-rtl .ng-confirm-icon-c,.ng-confirm.ng-confirm-white.ng-confirm-rtl .ng-confirm-icon-c{margin-right:0;margin-left:8px}.ng-confirm.ng-confirm-light .ng-confirm-box,.ng-confirm.ng-confirm-white .ng-confirm-box{box-shadow:0 2px 6px rgba(0,0,0,0.2);border-radius:5px}.ng-confirm.ng-confirm-light .ng-confirm-box .ng-confirm-closeIcon,.ng-confirm.ng-confirm-white .ng-confirm-box .ng-confirm-closeIcon{line-height:20px}.ng-confirm.ng-confirm-light .ng-confirm-box .ng-confirm-buttons,.ng-confirm.ng-confirm-white .ng-confirm-box .ng-confirm-buttons{float:right}.ng-confirm.ng-confirm-light .ng-confirm-box .ng-confirm-buttons button,.ng-confirm.ng-confirm-white .ng-confirm-box .ng-confirm-buttons button{border:0;background-image:none;text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none;-webkit-transition:background .1s;transition:background .1s;color:white}.ng-confirm.ng-confirm-light .ng-confirm-box .ng-confirm-buttons button.btn-default,.ng-confirm.ng-confirm-white .ng-confirm-box .ng-confirm-buttons button.btn-default{box-shadow:none;color:#333}.ng-confirm.ng-confirm-light .ng-confirm-box .ng-confirm-buttons button.btn-default:hover,.ng-confirm.ng-confirm-white .ng-confirm-box .ng-confirm-buttons button.btn-default:hover{background:#ddd}.ng-confirm.ng-confirm-dark .ng-confirm-bg,.ng-confirm.ng-confirm-black .ng-confirm-bg{background-color:darkslategray;opacity:.4}.ng-confirm.ng-confirm-dark .ng-confirm-icon-c,.ng-confirm.ng-confirm-black .ng-confirm-icon-c{margin-right:8px}.ng-confirm.ng-confirm-dark.ng-confirm-rtl .ng-confirm-closeIcon,.ng-confirm.ng-confirm-black.ng-confirm-rtl .ng-confirm-closeIcon{left:5px!important;right:auto!important}.ng-confirm.ng-confirm-dark.ng-confirm-rtl .ng-confirm-icon-c,.ng-confirm.ng-confirm-black.ng-confirm-rtl .ng-confirm-icon-c{margin-right:0;margin-left:8px}.ng-confirm.ng-confirm-dark .ng-confirm-box,.ng-confirm.ng-confirm-black .ng-confirm-box{box-shadow:0 2px 6px rgba(0,0,0,0.2);background:#444;border-radius:5px}.ng-confirm.ng-confirm-dark .ng-confirm-box .ng-confirm-closeIcon,.ng-confirm.ng-confirm-black .ng-confirm-box .ng-confirm-closeIcon{line-height:20px}.ng-confirm.ng-confirm-dark .ng-confirm-box.ng-confirm-loading:before,.ng-confirm.ng-confirm-black .ng-confirm-box.ng-confirm-loading:before{background:#444}.ng-confirm.ng-confirm-dark .ng-confirm-box.ng-confirm-loading:after,.ng-confirm.ng-confirm-black .ng-confirm-box.ng-confirm-loading:after{border-bottom-color:deepskyblue}.ng-confirm.ng-confirm-dark .ng-confirm-box *:not(input):not(textarea):not(select):not(option),.ng-confirm.ng-confirm-black .ng-confirm-box *:not(input):not(textarea):not(select):not(option){color:white}.ng-confirm.ng-confirm-dark .ng-confirm-box input,.ng-confirm.ng-confirm-black .ng-confirm-box input,.ng-confirm.ng-confirm-dark .ng-confirm-box textarea,.ng-confirm.ng-confirm-black .ng-confirm-box textarea,.ng-confirm.ng-confirm-dark .ng-confirm-box select,.ng-confirm.ng-confirm-black .ng-confirm-box select,.ng-confirm.ng-confirm-dark .ng-confirm-box option,.ng-confirm.ng-confirm-black .ng-confirm-box option{color:initial}.ng-confirm.ng-confirm-dark .ng-confirm-box .ng-confirm-buttons,.ng-confirm.ng-confirm-black .ng-confirm-box .ng-confirm-buttons{float:right}.ng-confirm.ng-confirm-dark .ng-confirm-box .ng-confirm-buttons button,.ng-confirm.ng-confirm-black .ng-confirm-box .ng-confirm-buttons button{border:0;background-image:none;text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none;-webkit-transition:background .1s;transition:background .1s;color:white}.ng-confirm.ng-confirm-dark .ng-confirm-box .ng-confirm-buttons button.btn-default,.ng-confirm.ng-confirm-black .ng-confirm-box .ng-confirm-buttons button.btn-default{box-shadow:none;color:#fff;background:0}.ng-confirm.ng-confirm-dark .ng-confirm-box .ng-confirm-buttons button.btn-default:hover,.ng-confirm.ng-confirm-black .ng-confirm-box .ng-confirm-buttons button.btn-default:hover{background:#666}.ng-confirm.ng-confirm-supervan .ng-confirm-bg{background:#36465d;opacity:.99}.ng-confirm.ng-confirm-supervan.ng-confirm-type-blue .ng-confirm-box{border:0}.ng-confirm.ng-confirm-supervan.ng-confirm-type-blue .ng-confirm-bg{background:#217dbb}.ng-confirm.ng-confirm-supervan.ng-confirm-type-green .ng-confirm-box{border:0}.ng-confirm.ng-confirm-supervan.ng-confirm-type-green .ng-confirm-bg{background:#25a25a}.ng-confirm.ng-confirm-supervan.ng-confirm-type-red .ng-confirm-box{border:0}.ng-confirm.ng-confirm-supervan.ng-confirm-type-red .ng-confirm-bg{background:#d62c1a}.ng-confirm.ng-confirm-supervan.ng-confirm-type-orange .ng-confirm-box{border:0}.ng-confirm.ng-confirm-supervan.ng-confirm-type-orange .ng-confirm-bg{background:#c29d0b}.ng-confirm.ng-confirm-supervan.ng-confirm-type-purple .ng-confirm-box{border:0}.ng-confirm.ng-confirm-supervan.ng-confirm-type-purple .ng-confirm-bg{background:#804399}.ng-confirm.ng-confirm-supervan.ng-confirm-type-dark .ng-confirm-box{border:0}.ng-confirm.ng-confirm-supervan.ng-confirm-type-dark .ng-confirm-bg{background:#222f3d}.ng-confirm.ng-confirm-supervan .ng-confirm-box{background-color:transparent}.ng-confirm.ng-confirm-supervan .ng-confirm-box.ng-confirm-loading:before{background:transparent}.ng-confirm.ng-confirm-supervan .ng-confirm-box.ng-confirm-loading:after{border-bottom-color:transparent}.ng-confirm.ng-confirm-supervan .ng-confirm-box div.ng-confirm-closeIcon{color:white;border-radius:50px;height:26px;width:26px;line-height:26px;top:2px;right:2px;box-shadow:0 0 0 2px #ddd}.ng-confirm.ng-confirm-supervan .ng-confirm-box *:not(input):not(textarea):not(select):not(option){color:white}.ng-confirm.ng-confirm-supervan .ng-confirm-box input,.ng-confirm.ng-confirm-supervan .ng-confirm-box textarea,.ng-confirm.ng-confirm-supervan .ng-confirm-box select,.ng-confirm.ng-confirm-supervan .ng-confirm-box option{color:initial}.ng-confirm.ng-confirm-supervan .ng-confirm-box div.ng-confirm-closeIcon{color:white}.ng-confirm.ng-confirm-supervan .ng-confirm-box div.ng-confirm-title-c{text-align:center;font-size:28px;font-weight:normal;padding-bottom:25px}.ng-confirm.ng-confirm-supervan .ng-confirm-box div.ng-confirm-title-c>*{display:block}.ng-confirm.ng-confirm-supervan .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c{margin:0 0 20px;font-size:50px}.ng-confirm.ng-confirm-supervan .ng-confirm-box div.ng-confirm-content-pane{margin-bottom:25px}.ng-confirm.ng-confirm-supervan .ng-confirm-box div.ng-confirm-content{text-align:center}.ng-confirm.ng-confirm-supervan .ng-confirm-box .ng-confirm-buttons{text-align:center}.ng-confirm.ng-confirm-supervan .ng-confirm-box .ng-confirm-buttons button{font-size:16px;border-radius:2px;text-shadow:none;border:0;color:white;padding:10px;min-width:100px}.ng-confirm.ng-confirm-supervan .ng-confirm-box .ng-confirm-buttons button.btn-default{background:#303f53}.ng-confirm.ng-confirm-supervan .ng-confirm-box .ng-confirm-buttons button.btn-default:hover{background:#2f3c50;color:white}.ng-confirm.ng-confirm-material .ng-confirm-bg{background:dimgray;opacity:.6}.ng-confirm.ng-confirm-material .ng-confirm-icon-c{margin-right:8px}.ng-confirm.ng-confirm-material .ng-confirm-box{background-color:white;box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:30px 25px 10px 25px}.ng-confirm.ng-confirm-material .ng-confirm-box div.ng-confirm-closeIcon{color:rgba(0,0,0,0.87);line-height:20px;top:15px;right:15px}.ng-confirm.ng-confirm-material .ng-confirm-box div.ng-confirm-title-c{color:rgba(0,0,0,0.87);font-size:22px;font-weight:bold}.ng-confirm.ng-confirm-material .ng-confirm-box div.ng-confirm-content{text-align:left;color:rgba(0,0,0,0.87)}.ng-confirm.ng-confirm-material .ng-confirm-box .ng-confirm-buttons{text-align:right}.ng-confirm.ng-confirm-material .ng-confirm-box .ng-confirm-buttons button{text-transform:uppercase;font-weight:500}.ng-confirm.ng-confirm-material.ng-confirm-rtl .ng-confirm-closeIcon{left:15px!important;right:auto!important}.ng-confirm.ng-confirm-material.ng-confirm-rtl .ng-confirm-icon-c{margin-right:0;margin-left:8px}.ng-confirm.ng-confirm-bootstrap .ng-confirm-bg{background-color:rgba(0,0,0,0.21)}.ng-confirm.ng-confirm-bootstrap .ng-confirm-icon-c{margin-right:8px}.ng-confirm.ng-confirm-bootstrap .ng-confirm-box{background-color:white;box-shadow:0 3px 8px 0 rgba(0,0,0,0.2);border:solid 1px rgba(0,0,0,0.4);padding:15px 0 0;border-radius:6px}.ng-confirm.ng-confirm-bootstrap .ng-confirm-box div.ng-confirm-closeIcon{color:rgba(0,0,0,0.87);line-height:20px}.ng-confirm.ng-confirm-bootstrap .ng-confirm-box div.ng-confirm-title-c{color:rgba(0,0,0,0.87);font-size:22px;font-weight:bold;padding-left:15px;padding-right:15px}.ng-confirm.ng-confirm-bootstrap .ng-confirm-box div.ng-confirm-content{text-align:left;color:rgba(0,0,0,0.87);padding:0 15px}.ng-confirm.ng-confirm-bootstrap .ng-confirm-box .ng-confirm-buttons{text-align:right;padding:15px;margin:-5px 0 0;border-top:solid 1px #ddd;overflow:hidden;border-radius:0 0 4px 4px}.ng-confirm.ng-confirm-bootstrap .ng-confirm-box .ng-confirm-buttons button{font-weight:500;border-radius:0;margin:0}.ng-confirm.ng-confirm-bootstrap .ng-confirm-box .ng-confirm-buttons button:first-child{border-radius:4px 0 0 4px}.ng-confirm.ng-confirm-bootstrap .ng-confirm-box .ng-confirm-buttons button:last-child{border-radius:0 4px 4px 0}.ng-confirm.ng-confirm-bootstrap.ng-confirm-rtl .ng-confirm-closeIcon{left:5px!important;right:auto!important}.ng-confirm.ng-confirm-bootstrap.ng-confirm-rtl .ng-confirm-icon-c{margin-right:0;margin-left:8px}.ng-confirm.ng-confirm-modern .ng-confirm-bg{background-color:slategray;opacity:.6}.ng-confirm.ng-confirm-modern .ng-confirm-icon-c{margin-right:8px}.ng-confirm.ng-confirm-modern .ng-confirm-box{background-color:white;box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:25px 25px 10px 25px}.ng-confirm.ng-confirm-modern .ng-confirm-box div.ng-confirm-closeIcon{color:rgba(0,0,0,0.87);border-radius:50px;height:25px;width:25px;line-height:25px!important;top:10px;right:10px;box-shadow:0 0 0 2px #ddd}.ng-confirm.ng-confirm-modern .ng-confirm-box div.ng-confirm-title-c{color:rgba(0,0,0,0.87);font-size:24px;font-weight:bold;text-align:center;margin-bottom:10px}.ng-confirm.ng-confirm-modern .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c{display:block;margin-right:0;margin-left:0;margin-bottom:10px;font-size:69px;color:#aaa}.ng-confirm.ng-confirm-modern .ng-confirm-box div.ng-confirm-content{font-size:15px;color:#777;margin-bottom:25px}.ng-confirm.ng-confirm-modern .ng-confirm-box .ng-confirm-buttons{text-align:center}.ng-confirm.ng-confirm-modern .ng-confirm-box .ng-confirm-buttons button{font-weight:bold;text-transform:uppercase;-webkit-transition:background .1s;transition:background .1s}.ng-confirm.ng-confirm-modern .ng-confirm-box .ng-confirm-buttons button+button{margin-left:4px}.ng-confirm.ng-confirm-seamless .ng-confirm-bg{background-color:rgba(255,255,255,0.5)}.ng-confirm.ng-confirm-seamless .ng-confirm-bg:before{border-bottom-color:dodgerblue}.ng-confirm.ng-confirm-seamless .ng-confirm-icon-c{margin-right:8px}.ng-confirm.ng-confirm-seamless .ng-confirm-box{background-color:white;box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:20px 0 10px 0}.ng-confirm.ng-confirm-seamless .ng-confirm-box div.ng-confirm-closeIcon{color:rgba(0,0,0,0.87);border-radius:50px;height:25px;width:25px;line-height:25px!important;top:10px;right:10px;box-shadow:0 0 0 2px #ddd}.ng-confirm.ng-confirm-seamless .ng-confirm-box div.ng-confirm-title-c{color:rgba(0,0,0,0.87);font-size:24px;text-align:center}.ng-confirm.ng-confirm-seamless .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c{color:#aaa}.ng-confirm.ng-confirm-seamless .ng-confirm-box div.ng-confirm-title-c .ng-confirm-title{font-weight:bold}.ng-confirm.ng-confirm-seamless .ng-confirm-box div.ng-confirm-content{text-align:center;font-size:15px;color:#464646;margin-bottom:25px}.ng-confirm.ng-confirm-seamless .ng-confirm-box .ng-confirm-buttons{text-align:center}.ng-confirm.ng-confirm-seamless .ng-confirm-box .ng-confirm-buttons button{font-size:16px;font-weight:bold}.ng-confirm.ng-confirm-seamless .ng-confirm-box .ng-confirm-buttons button+button{margin-left:4px}.ng-confirm-el-hide{display:none!important}
--------------------------------------------------------------------------------
/dist/angular-confirm.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * angular-confirm v1.1.0 (http://craftpip.github.io/angular-confirm/)
3 | * Author: Boniface Pereira
4 | * Website: www.craftpip.com
5 | * Contact: hey@craftpip.com
6 | *
7 | * Copyright 2016-2017 angular-confirm
8 | * Licensed under MIT (https://github.com/craftpip/angular-confirm/blob/master/LICENSE)
9 | */"use strict";if("undefined"==typeof jQuery)throw new Error("angular-confirm requires jQuery");if("undefined"==typeof angular)throw new Error("angular-confirm requires Angular");angular.module("cp.ngConfirm",[]).service("$ngConfirmTemplate",function(){this.default=''}).service("$ngConfirmDefaults",function(){return{title:"Hello",titleClass:"",type:"default",typeAnimated:!0,content:"Are you sure to continue?",contentUrl:!1,defaultButtons:{ok:function(){}},icon:"",theme:"white",bgOpacity:null,animation:"zoom",closeAnimation:"scale",animationSpeed:400,animationBounce:1.2,scope:!1,escapeKey:!1,rtl:!1,buttons:{},container:"body",containerFluid:!1,backgroundDismiss:!1,backgroundDismissAnimation:"shake",alignMiddle:!0,offsetTop:50,offsetBottom:50,autoClose:!1,closeIcon:null,closeIconClass:!1,columnClass:"small",boxWidth:"50%",useBootstrap:!0,bootstrapClasses:{container:"container",containerFluid:"container-fluid",row:"row"},onScopeReady:function(){},onReady:function(){},onOpenBefore:function(){},onOpen:function(){},onClose:function(){},onDestroy:function(){},onAction:function(){}}}).service("$ngConfirm",["$rootScope","$ngConfirmDefaults","$ngConfirmBase",function(a,b,c){return function(a,d,e){return"string"==typeof a&&(a={content:a,buttons:b.defaultButtons},"string"==typeof d?a.title=d||!1:a.title=!1,"object"==typeof d&&(a.scope=d),"object"==typeof e&&(a.scope=e)),"undefined"==typeof a&&(a={}),a=angular.extend({},b,a),new c(a)}}]).factory("$ngConfirmBase",["$rootScope","$ngConfirmDefaults","$timeout","$compile","$ngConfirmTemplate","$interval","$templateRequest","$log","$q",function(a,b,c,d,e,f,g,h,i){var j=function(a){angular.extend(this,a),this._init()};return j.prototype={_init:function(){this._lastFocused=angular.element("body").find(":focus"),this._id=Math.round(999999*Math.random()),this.open()},_providedScope:!1,_prepare:function(){var b=this;this.$el=angular.element(e.default),b.scope?this._providedScope=!0:(this._providedScope=!1,b.scope=a.$new()),"function"==typeof this.onScopeReady&&this.onScopeReady.apply(this,[this.scope]),this.$confirmBox=this.$el.find(".ng-confirm-box"),this.$confirmBoxParent=this.$el.find(".ng-confirm-box-p"),this.$titleContainer=this.$el.find(".ng-confirm-title-c"),this.$title=this.$el.find(".ng-confirm-title"),this.$icon=this.$el.find(".ng-confirm-icon-c"),this.$content=this.$el.find(".ng-confirm-content"),this.$confirmBg=this.$el.find(".ng-confirm-bg"),this.$contentPane=this.$el.find(".ng-confirm-content-pane"),this.$closeIcon=this.$el.find(".ng-confirm-closeIcon"),this.$bs3Container=this.$el.find(".ng-bs3-container"),this.$buttonContainer=this.$el.find(".ng-confirm-buttons"),this.$scrollPane=this.$el.find(".ng-confirm-scrollpane");var c="ng-confirm-box"+this._id;if(this.$confirmBox.attr("aria-labelledby",c),this.$content.attr("id",c),this._setAnimationClass(this.animation),this.setDismissAnimation(this.backgroundDismissAnimation),this.setTheme(this.theme),this.setType(this.type),this._setButtons(this.buttons),this.setCloseIcon(this.closeIcon),this.setCloseIconClass(this.closeIconClass),this.setTypeAnimated(this.typeAnimated),this.useBootstrap?(this.setColumnClass(this.columnClass),this.$el.find(".ng-bs3-row").addClass(this.bootstrapClasses.row).addClass("justify-content-md-center justify-content-sm-center justify-content-xs-center justify-content-lg-center"),this.setContainerFluid(this.containerFluid)):this.setBoxWidth(this.boxWidth),this.setTitleClass(this.titleClass),this.setTitle(this.title),this.setIcon(this.icon),this.setBgOpacity(this.bgOpacity),this.setRtl(this.rtl),this._contentReady=i.defer(),this._modalReady=i.defer(),i.all([this._contentReady.promise,this._modalReady.promise]).then(function(){b.isAjax&&(b.setContent(b.content),b.loading(!1)),"function"==typeof b.onReady&&b.onReady.apply(b,[b.scope])}),this.contentUrl){this.loading(!0),this.isAjax=!0;var d=this.contentUrl;"function"==typeof this.contentUrl&&(d=this.contentUrl()),this.isAjaxLoading=!0,g(d).then(function(a){b.content=a,b._contentReady.resolve(),b.isAjaxLoading=!1},function(){b.content="",b._contentReady.resolve(),b.isAjaxLoading=!1})}else{var f=this.content;"function"==typeof this.content&&(f=this.content()),this.content=f,this.setContent(this.content),this._contentReady.resolve()}"none"==this.animation&&(this.animationSpeed=1,this.animationBounce=1),this.$confirmBg.css(this._getCSS(this.animationSpeed,1))},isAjax:!1,isAjaxLoading:!1,isLoading:!1,_hideClass:"ng-confirm-el-hide",_loadingClass:"ng-confirm-loading",loading:function(a){this.isLoading=a,a?this.$confirmBox.addClass(this._loadingClass):this.$confirmBox.removeClass(this._loadingClass)},setContent:function(a){if(!this.$content)return void h.error("Attempted to set content before $content is defined");a=""+a+"
";var b=d(a)(this.scope);this.$content.append(b)},_typeList:["default","blue","green","red","orange","purple","dark"],_typePrefix:"ng-confirm-type-",_pSetType:"",setType:function(a){if(this._typeList.indexOf(a.toLowerCase())==-1)return h.warn("Invalid dialog type: "+a),!1;var b=this._typePrefix+a;this.$el.removeClass(this._pSetType).addClass(b),this._pSetType=b},_setTypeAnimatedClass:"ng-confirm-type-animated",setTypeAnimated:function(a){a?this.$confirmBox.addClass(this._setTypeAnimatedClass):this.$confirmBox.removeClass(this._setTypeAnimatedClass)},_pTitleClass:"",setTitleClass:function(a){this.$titleContainer.removeClass(this._pTitleClass).addClass(a),this._pTitleClass=a},setBoxWidth:function(a){return this.useBootstrap?void h.warn("Cannot set boxWidth as useBootstrap is set to true. use columnClass instead."):void this.$confirmBox.css("width",a)},setContainerFluid:function(a){return this.useBootstrap?(a?this.$bs3Container.removeClass(this.bootstrapClasses.container).addClass(this.bootstrapClasses.containerFluid):this.$bs3Container.removeClass(this.bootstrapClasses.containerFluid).addClass(this.bootstrapClasses.container),void(this.containerFluid=a)):void h.warn("Cannot set containerFluid as useBootstrap is set to false.")},_pSetColumnClass:"",setColumnClass:function(a){if(!this.useBootstrap)return void h.warn("Cannot set columnClass as useBootstrap is set to false, use bixWidth instead");a=a.toLowerCase();var b;switch(a){case"xl":case"xlarge":b="col-md-12";break;case"l":case"large":b="col-md-8 col-md-offset-2";break;case"m":case"medium":b="col-md-6 col-md-offset-3";break;case"s":case"small":b="col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3 col-xs-10 col-xs-offset-1";break;case"xs":case"xsmall":b="col-md-2 col-md-offset-5";break;default:b=a}this.$confirmBoxParent.removeClass(this._pSetColumnClass).addClass(b),this._pSetColumnClass=b},setIcon:function(a){"function"==typeof a&&(a=a()),a?(this.$icon.html(angular.element(" ").addClass(a)),this.$icon.removeClass(this._hideClass)):this.$icon.addClass(this._hideClass),this.icon||this.title?this.$titleContainer.removeClass(this._hideClass):this.$titleContainer.addClass(this._hideClass),this.icon=a},setTitle:function(a){"function"==typeof a&&(a=a()),a?(this.$title.html(a),this.$title.removeClass(this._hideClass)):this.$title.addClass(this._hideClass),this.icon||this.title?this.$titleContainer.removeClass(this._hideClass):this.$titleContainer.addClass(this._hideClass),this.title=a},setCloseIcon:function(a){0==this._buttonCount&&null==a&&(a=!0),a?this.$closeIcon.removeClass(this._hideClass):this.$closeIcon.addClass(this._hideClass),this.closeIcon=a},setCloseIconClass:function(a){var b;b=a?angular.element(" ").addClass(this.closeIconClass):angular.element("× ").addClass(this.closeIconClass),this.$closeIcon.html(b),this.closeIconClass=a},_animationPrefix:"ng-confirm-animation-",_pSetAnimation:"",_setAnimationClass:function(a){var b=this._prefixThis(a,this._animationPrefix);this.$confirmBox.removeClass(this._pSetAnimation).addClass(b),this._pSetAnimation=b},_removeAnimationClass:function(){this.$confirmBox.removeClass(this._pSetAnimation),this._pSetAnimation=""},_bgDismissPrefix:"ng-confirm-hilight-",_pSetDismissAnimation:"",setDismissAnimation:function(a){var b=this._prefixThis(a,this._bgDismissPrefix);this.$confirmBox.removeClass(this._pSetDismissAnimation).addClass(b),this._pSetDismissAnimation=b},_prefixThis:function(a,b){return a=a.split(","),angular.forEach(a,function(c,d){c.indexOf(b)==-1&&(a[d]=b+c.trim())}),a.join(" ").toLowerCase()},_setButtons:function(a){var b=this;"object"!=typeof a&&(a={}),angular.forEach(a,function(c,d){"function"==typeof c&&(a[d]=c={action:c}),a[d].text=c.text||d,a[d].btnClass=c.btnClass||"btn-default",a[d].action=c.action||angular.noop,a[d].keys=c.keys||[],a[d].disabled=c.disabled||!1,"undefined"==typeof c.show&&(c.show=!0),a[d].show=c.show,angular.forEach(a[d].keys,function(b,c){a[d].keys[c]=b.toLowerCase()});var e=angular.element(' ');a[d].setText=function(a){e.find(".ng-confirm-btn-text").html(a)},a[d].setBtnClass=function(b){e.removeClass(a[d].btnClass).addClass(b),a[d].btnClass=b},a[d].setDisabled=function(b){b?e.attr("disabled","disabled"):e.removeAttr("disabled"),a[d].disabled=b},a[d].setShow=function(c){c?e.removeClass(b._hideClass):e.addClass(b._hideClass),a[d].show=c},a[d].setText(a[d].text),a[d].setBtnClass(a[d].btnClass),a[d].setDisabled(a[d].disabled),a[d].setShow(a[d].show),e.click(function(a){a.preventDefault(),b.triggerButton(d)}),a[d].el=e,b.$buttonContainer.append(e)}),this.buttons=a,this._buttonCount=Object.keys(a).length},_buttonCount:0,_themePrefix:"ng-confirm-",_pSetTheme:"",setTheme:function(a){var b=this._prefixThis(a,this._themePrefix);this.$el.removeClass(this._pSetTheme).addClass(b),this._pSetTheme=b},_rtlClass:"ng-confirm-rtl",setRtl:function(a){a?this.$el.addClass(this._rtlClass):this.$el.removeClass(this._rtlClass),this.rtl=a},setBgOpacity:function(a){this.$confirmBg.css("opacity",a),this.bgOpacity=a},_cubic_bezier:"0.36, 0.55, 0.19",_getCSS:function(a,b){return{"-webkit-transition-duration":a/1e3+"s","transition-duration":a/1e3+"s","-webkit-transition-timing-function":"cubic-bezier("+this._cubic_bezier+", "+b+")","transition-timing-function":"cubic-bezier("+this._cubic_bezier+", "+b+")"}},_hash:function(a){var b=a.toString(),c=0;if(0==b.length)return c;for(var d=0;dg-j||!this.alignMiddle?(k={"margin-top":this.offsetTop,"margin-bottom":this.offsetBottom},angular.element("body").addClass("ng-confirm-no-scroll-"+this._id)):(k={"margin-top":(g-i)/2,"margin-bottom":0},angular.element("body").removeClass("ng-confirm-no-scroll-"+this._id)),this.$contentPane.css({height:c}).scrollTop(0),this.$confirmBox.css(k)}},_getKey:function(a){switch(a){case 192:return"tilde";case 13:return"enter";case 16:return"shift";case 9:return"tab";case 20:return"capslock";case 17:return"ctrl";case 91:return"win";case 18:return"alt";case 27:return"esc"}var b=String.fromCharCode(a);return!!/^[A-z0-9]+$/.test(b)&&b.toLowerCase()},open:function(){var a=this;return this._prepare(),c(function(){a._open()},100),!0},_open:function(){var a=this;"function"==typeof this.onOpenBefore&&this.onOpenBefore.apply(this,[this.scope]),angular.element(this.container).append(this.$el),a.setDialogCenter("_open"),setTimeout(function(){a.$contentPane.css(a._getCSS(a.animationSpeed,1)),a.$confirmBox.css(a._getCSS(a.animationSpeed,a.animationBounce)),a._removeAnimationClass(),a.$confirmBg.removeClass("ng-confirm-bg-h"),a.$confirmBox.focus(),setTimeout(function(){a._bindEvents(),a.$confirmBox.css(a._getCSS(a.animationSpeed,1)),a._modalReady.resolve(),"function"==typeof a.onOpen&&a.onOpen.apply(a,[a.scope]),a._startCountDown()},a.animationSpeed)},100)},_autoCloseKey:!1,_autoCloseInterval:0,_startCountDown:function(){var a=this;if("string"==typeof this.autoClose){var b=this.autoClose.split("|");if(2!=b.length)return void h.error("Invalid option for autoClose. example 'close|10000'");this._autoCloseKey=b[0];var c=b[1],d=c/1e3;if(!angular.isDefined(this.buttons[this._autoCloseKey]))return void h.error('Auto close button "'+a._autoCloseKey+'" not defined.');var e=angular.element(' ');this.buttons[this._autoCloseKey].el.append(e),this._autoCloseInterval=setInterval(function(){var b=d?" ("+--d+")":"";e.html(b),d<1&&(a._stopCountDown(),a._buttonClick(a._autoCloseKey))},1e3)}},_stopCountDown:function(){this._autoCloseInterval&&clearInterval(this._autoCloseInterval)},closed:!1,isClosed:function(){return this.closed},isOpen:function(){return!this.closed},close:function(){var a=this;"function"==typeof this.onClose&&this.onClose.apply(this,[this.scope]),this._unBindEvents(),this._stopCountDown(),this._setAnimationClass(this.closeAnimation),this.$confirmBg.addClass("ng-confirm-bg-h");var b=.4*this.animationSpeed;return setTimeout(function(){a.$el.remove(),a.closed=!0,a._providedScope||a.scope.$destroy(),"function"==typeof a.onDestroy&&a.onDestroy.apply(a,[a.scope]),angular.element("body").removeClass("ng-confirm-no-scroll-"+a._id),a._lastFocused.focus(),a=void 0},b),!0}},j}]);
--------------------------------------------------------------------------------
/form.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Your name
4 |
5 |
6 |
7 | This form form.html was called $templateRequest.
8 |
9 |
--------------------------------------------------------------------------------
/js/angular-confirm.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * angular-confirm v1.1.0 (http://craftpip.github.io/angular-confirm/)
3 | * Author: Boniface Pereira
4 | * Website: www.craftpip.com
5 | * Contact: hey@craftpip.com
6 | *
7 | * Copyright 2016-2017 angular-confirm
8 | * Licensed under MIT (https://github.com/craftpip/angular-confirm/blob/master/LICENSE)
9 | */
10 |
11 | "use strict";
12 |
13 | if (typeof jQuery === 'undefined')
14 | throw new Error('angular-confirm requires jQuery');
15 | if (typeof angular === 'undefined')
16 | throw new Error('angular-confirm requires Angular');
17 |
18 | angular.module('cp.ngConfirm', [])
19 | .service('$ngConfirmTemplate', function () {
20 | this.default = '' +
21 | '
' +
22 | '
' +
44 | '
' +
45 | '';
46 | })
47 | .service('$ngConfirmDefaults', function () {
48 | return {
49 | title: 'Hello',
50 | titleClass: '',
51 | type: 'default',
52 | typeAnimated: true,
53 | content: 'Are you sure to continue?',
54 | contentUrl: false,
55 | defaultButtons: {
56 | ok: function () {
57 |
58 | },
59 | },
60 | icon: '',
61 | theme: 'white',
62 | bgOpacity: null,
63 | animation: 'zoom',
64 | closeAnimation: 'scale',
65 | animationSpeed: 400,
66 | animationBounce: 1.2,
67 | scope: false,
68 | escapeKey: false,
69 | rtl: false,
70 | buttons: {},
71 | container: 'body',
72 | containerFluid: false,
73 | backgroundDismiss: false,
74 | backgroundDismissAnimation: 'shake',
75 | alignMiddle: true,
76 | offsetTop: 50,
77 | offsetBottom: 50,
78 | autoClose: false,
79 | closeIcon: null,
80 | closeIconClass: false,
81 | columnClass: 'small',
82 | boxWidth: '50%',
83 | useBootstrap: true,
84 | bootstrapClasses: {
85 | container: 'container',
86 | containerFluid: 'container-fluid',
87 | row: 'row',
88 | },
89 | onScopeReady: function () {
90 |
91 | },
92 | onReady: function () {
93 |
94 | },
95 | onOpenBefore: function () {
96 |
97 | },
98 | onOpen: function () {
99 |
100 | },
101 | onClose: function () {
102 |
103 | },
104 | onDestroy: function () {
105 |
106 | },
107 | onAction: function () {
108 |
109 | }
110 |
111 | };
112 | })
113 | .service('$ngConfirm', [
114 | '$rootScope',
115 | '$ngConfirmDefaults',
116 | '$ngConfirmBase',
117 | function ($rootScope, $ngConfirmDefaults, $ngConfirmBase) {
118 | return function (options, options2, option3) {
119 | if (typeof options == 'string') {
120 | options = {
121 | content: options,
122 | buttons: $ngConfirmDefaults.defaultButtons
123 | };
124 | if (typeof options2 == 'string')
125 | options['title'] = options2 || false;
126 | else
127 | options['title'] = false;
128 | if (typeof options2 == 'object')
129 | options['scope'] = options2;
130 | if (typeof option3 == 'object')
131 | options['scope'] = option3;
132 | }
133 |
134 | if (typeof options === 'undefined') options = {};
135 |
136 | /*
137 | * merge options with plugin defaults.
138 | */
139 | options = angular.extend({}, $ngConfirmDefaults, options);
140 |
141 | return new $ngConfirmBase(options);
142 | };
143 | }
144 | ])
145 | .factory('$ngConfirmBase', [
146 | '$rootScope',
147 | '$ngConfirmDefaults',
148 | '$timeout',
149 | '$compile',
150 | '$ngConfirmTemplate',
151 | '$interval',
152 | '$templateRequest',
153 | '$log',
154 | '$q',
155 | function ($rootScope, $ngConfirmDefaults, $timeout, $compile, $ngConfirmTemplate, $interval, $templateRequest, $log, $q) {
156 | var ngConfirmBase = function (options) {
157 | angular.extend(this, options);
158 | this._init();
159 | };
160 |
161 | ngConfirmBase.prototype = {
162 | _init: function () {
163 | this._lastFocused = angular.element('body').find(':focus');
164 | this._id = Math.round(Math.random() * 999999);
165 | this.open();
166 | },
167 | _providedScope: false, // has the user provided a scope.
168 | _prepare: function () {
169 | var that = this;
170 |
171 | this.$el = angular.element($ngConfirmTemplate['default']);
172 |
173 | // Has the user provided us with the scope.
174 | if (that.scope) {
175 | this._providedScope = true;
176 | } else {
177 | this._providedScope = false;
178 | that.scope = $rootScope.$new();
179 | }
180 |
181 | // scope is ready.
182 | if (typeof this.onScopeReady == 'function')
183 | this.onScopeReady.apply(this, [this.scope]);
184 |
185 | // Dom elements
186 | this.$confirmBox = this.$el.find('.ng-confirm-box');
187 | this.$confirmBoxParent = this.$el.find('.ng-confirm-box-p');
188 | this.$titleContainer = this.$el.find('.ng-confirm-title-c');
189 | this.$title = this.$el.find('.ng-confirm-title');
190 | this.$icon = this.$el.find('.ng-confirm-icon-c');
191 | this.$content = this.$el.find('.ng-confirm-content');
192 | this.$confirmBg = this.$el.find('.ng-confirm-bg');
193 | this.$contentPane = this.$el.find('.ng-confirm-content-pane');
194 | this.$closeIcon = this.$el.find('.ng-confirm-closeIcon');
195 | this.$bs3Container = this.$el.find('.ng-bs3-container');
196 | this.$buttonContainer = this.$el.find('.ng-confirm-buttons');
197 | this.$scrollPane = this.$el.find('.ng-confirm-scrollpane');
198 |
199 | var ariaLabel = 'ng-confirm-box' + this._id;
200 | this.$confirmBox.attr('aria-labelledby', ariaLabel);
201 | this.$content.attr('id', ariaLabel);
202 |
203 | this._setAnimationClass(this.animation);
204 | this.setDismissAnimation(this.backgroundDismissAnimation);
205 | this.setTheme(this.theme);
206 | this.setType(this.type);
207 | this._setButtons(this.buttons);
208 | this.setCloseIcon(this.closeIcon);
209 | this.setCloseIconClass(this.closeIconClass);
210 |
211 | this.setTypeAnimated(this.typeAnimated);
212 | if (this.useBootstrap) {
213 | this.setColumnClass(this.columnClass);
214 | this.$el.find('.ng-bs3-row').addClass(this.bootstrapClasses.row)
215 | .addClass('justify-content-md-center justify-content-sm-center justify-content-xs-center justify-content-lg-center');
216 |
217 | this.setContainerFluid(this.containerFluid);
218 | } else {
219 | this.setBoxWidth(this.boxWidth);
220 | }
221 | this.setTitleClass(this.titleClass);
222 | this.setTitle(this.title);
223 | this.setIcon(this.icon);
224 | this.setBgOpacity(this.bgOpacity);
225 | this.setRtl(this.rtl);
226 |
227 | this._contentReady = $q.defer();
228 | this._modalReady = $q.defer();
229 |
230 | $q.all([this._contentReady.promise, this._modalReady.promise]).then(function () {
231 | if (that.isAjax) {
232 | that.setContent(that.content);
233 | that.loading(false);
234 | }
235 | if (typeof that.onReady == 'function') {
236 | that.onReady.apply(that, [that.scope]);
237 | }
238 | });
239 |
240 | if (this.contentUrl) {
241 | this.loading(true);
242 | this.isAjax = true;
243 | var contentUrl = this.contentUrl;
244 | if (typeof this.contentUrl == 'function')
245 | contentUrl = this.contentUrl();
246 |
247 | this.isAjaxLoading = true;
248 | $templateRequest(contentUrl).then(function (html) {
249 | that.content = html;
250 | that._contentReady.resolve();
251 | that.isAjaxLoading = false;
252 | }, function () {
253 | that.content = '';
254 | that._contentReady.resolve();
255 | that.isAjaxLoading = false;
256 | });
257 | } else {
258 | var content = this.content;
259 | if (typeof this.content == 'function')
260 | content = this.content();
261 |
262 | this.content = content;
263 | this.setContent(this.content);
264 | this._contentReady.resolve();
265 | }
266 |
267 | // this._watchContent();
268 |
269 | if (this.animation == 'none') {
270 | this.animationSpeed = 1;
271 | this.animationBounce = 1;
272 | }
273 |
274 | this.$confirmBg.css(this._getCSS(this.animationSpeed, 1));
275 | },
276 | isAjax: false,
277 | isAjaxLoading: false,
278 | isLoading: false,
279 | _hideClass: 'ng-confirm-el-hide',
280 | _loadingClass: 'ng-confirm-loading',
281 | /**
282 | * Shows the loading spinner
283 | * @param show
284 | */
285 | loading: function (show) {
286 | this.isLoading = show;
287 | if (show)
288 | this.$confirmBox.addClass(this._loadingClass);
289 | else
290 | this.$confirmBox.removeClass(this._loadingClass);
291 | },
292 | /**
293 | * Set content to DOM.
294 | * @param contentHtml
295 | * @private
296 | */
297 | setContent: function (contentHtml) {
298 | if (!this.$content) {
299 | $log.error('Attempted to set content before $content is defined');
300 | return;
301 | }
302 | contentHtml = "" + contentHtml + "
";
303 | var compiledHtml = $compile(contentHtml)(this.scope);
304 | this.$content.append(compiledHtml);
305 | },
306 | _typeList: ['default', 'blue', 'green', 'red', 'orange', 'purple', 'dark'],
307 | _typePrefix: 'ng-confirm-type-',
308 | _pSetType: '',
309 | /**
310 | * Set the type class
311 | * @param type
312 | * @returns {boolean}
313 | */
314 | setType: function (type) {
315 | if (this._typeList.indexOf(type.toLowerCase()) == -1) {
316 | $log.warn('Invalid dialog type: ' + type);
317 | return false;
318 | } else {
319 | var c = this._typePrefix + type;
320 | this.$el.removeClass(this._pSetType).addClass(c);
321 | this._pSetType = c;
322 | }
323 | },
324 | _setTypeAnimatedClass: 'ng-confirm-type-animated',
325 | /**
326 | * Adds or removes the type animated class
327 | * @param state
328 | */
329 | setTypeAnimated: function (state) {
330 | if (state)
331 | this.$confirmBox.addClass(this._setTypeAnimatedClass);
332 | else
333 | this.$confirmBox.removeClass(this._setTypeAnimatedClass);
334 | },
335 | _pTitleClass: '',
336 | /**
337 | * Sets the title class or classes
338 | * @param str
339 | */
340 | setTitleClass: function (str) {
341 | this.$titleContainer.removeClass(this._pTitleClass).addClass(str);
342 | this._pTitleClass = str;
343 | },
344 | /**
345 | * Sets box width,
346 | * requires useBootstrap to be false.
347 | * @param units
348 | */
349 | setBoxWidth: function (units) {
350 | if (this.useBootstrap) {
351 | $log.warn('Cannot set boxWidth as useBootstrap is set to true. use columnClass instead.');
352 | return;
353 | }
354 |
355 | this.$confirmBox.css('width', units);
356 | },
357 | /**
358 | * Set the container class as fluid or not.
359 | * requires useBootstrap to be true
360 | * @param state
361 | */
362 | setContainerFluid: function (state) {
363 | if (!this.useBootstrap) {
364 | $log.warn('Cannot set containerFluid as useBootstrap is set to false.');
365 | return;
366 | }
367 |
368 | if (state) {
369 | this.$bs3Container.removeClass(this.bootstrapClasses.container)
370 | .addClass(this.bootstrapClasses.containerFluid);
371 | } else {
372 | this.$bs3Container.removeClass(this.bootstrapClasses.containerFluid)
373 | .addClass(this.bootstrapClasses.container);
374 | }
375 |
376 | this.containerFluid = state;
377 | },
378 | _pSetColumnClass: '',
379 | /**
380 | * Sets the columnClass class
381 | * requires useBootstrap to be true
382 | * @param colClass
383 | */
384 | setColumnClass: function (colClass) {
385 | if (!this.useBootstrap) {
386 | $log.warn('Cannot set columnClass as useBootstrap is set to false, use bixWidth instead');
387 | return;
388 | }
389 |
390 | colClass = colClass.toLowerCase();
391 | var p;
392 | switch (colClass) {
393 | case 'xl':
394 | case 'xlarge':
395 | p = 'col-md-12';
396 | break;
397 | case 'l':
398 | case 'large':
399 | p = 'col-md-8 col-md-offset-2';
400 | break;
401 | case 'm':
402 | case 'medium':
403 | p = 'col-md-6 col-md-offset-3';
404 | break;
405 | case 's':
406 | case 'small':
407 | p = 'col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3 col-xs-10 col-xs-offset-1';
408 | break;
409 | case 'xs':
410 | case 'xsmall':
411 | p = 'col-md-2 col-md-offset-5';
412 | break;
413 | default:
414 | p = colClass;
415 | }
416 |
417 | this.$confirmBoxParent.removeClass(this._pSetColumnClass).addClass(p);
418 | this._pSetColumnClass = p;
419 | },
420 | /**
421 | * Set icon for the modal.
422 | * @param iconClass
423 | */
424 | setIcon: function (iconClass) {
425 | if (typeof iconClass == 'function')
426 | iconClass = iconClass();
427 |
428 | if (iconClass) {
429 | this.$icon.html(angular.element(' ').addClass(iconClass));
430 | this.$icon.removeClass(this._hideClass);
431 | } else {
432 | this.$icon.addClass(this._hideClass);
433 | }
434 |
435 | if (this.icon || this.title) {
436 | this.$titleContainer.removeClass(this._hideClass);
437 | } else {
438 | this.$titleContainer.addClass(this._hideClass);
439 | }
440 |
441 | this.icon = iconClass;
442 | },
443 | /**
444 | * set the title of the modal
445 | * @param str
446 | */
447 | setTitle: function (str) {
448 | if (typeof str == 'function')
449 | str = str();
450 |
451 | if (str) {
452 | this.$title.html(str);
453 | this.$title.removeClass(this._hideClass);
454 | } else {
455 | this.$title.addClass(this._hideClass);
456 | }
457 |
458 | if (this.icon || this.title) {
459 | this.$titleContainer.removeClass(this._hideClass);
460 | } else {
461 | this.$titleContainer.addClass(this._hideClass);
462 | }
463 |
464 | this.title = str;
465 | },
466 | /**
467 | * Set the visibility of the close icon
468 | * Will be visible if button count is 0 and closeIcon is null
469 | * @param strFunc
470 | */
471 | setCloseIcon: function (strFunc) {
472 | if (this._buttonCount == 0 && strFunc == null)
473 | strFunc = true;
474 |
475 | if (!!strFunc)
476 | this.$closeIcon.removeClass(this._hideClass);
477 | else
478 | this.$closeIcon.addClass(this._hideClass);
479 |
480 | this.closeIcon = strFunc;
481 | },
482 | setCloseIconClass: function (iconClass) {
483 | var iconEl;
484 | if (iconClass) {
485 | iconEl = angular.element(' ').addClass(this.closeIconClass);
486 | } else {
487 | iconEl = angular.element('× ').addClass(this.closeIconClass);
488 | }
489 | this.$closeIcon.html(iconEl);
490 | this.closeIconClass = iconClass;
491 | },
492 | _animationPrefix: 'ng-confirm-animation-',
493 | _pSetAnimation: '',
494 | /**
495 | * Set the start and end animations
496 | * @param animation
497 | * @private
498 | */
499 | _setAnimationClass: function (animation) {
500 | var c = this._prefixThis(animation, this._animationPrefix);
501 | // remove the previously set animation and add the new one.
502 | this.$confirmBox.removeClass(this._pSetAnimation).addClass(c);
503 | this._pSetAnimation = c;
504 | },
505 | _removeAnimationClass: function () {
506 | this.$confirmBox.removeClass(this._pSetAnimation);
507 | this._pSetAnimation = '';
508 | },
509 | _bgDismissPrefix: 'ng-confirm-hilight-',
510 | _pSetDismissAnimation: '',
511 | /**
512 | * Set the dismiss animations class
513 | * @param animation
514 | */
515 | setDismissAnimation: function (animation) {
516 | var c = this._prefixThis(animation, this._bgDismissPrefix);
517 | this.$confirmBox.removeClass(this._pSetDismissAnimation)
518 | .addClass(c);
519 | this._pSetDismissAnimation = c;
520 | },
521 | /**
522 | * Prefix the strings with the given prefix,
523 | * make no changes if its already prefixed.
524 | * @param str
525 | * @param pr
526 | * @returns {string}
527 | * @private
528 | */
529 | _prefixThis: function (str, pr) {
530 | str = str.split(',');
531 | angular.forEach(str, function (a, k) {
532 | if (a.indexOf(pr) == -1)
533 | str[k] = pr + a.trim();
534 | });
535 | return str.join(' ').toLowerCase();
536 | },
537 | /**
538 | * Parses the buttons and sets in the ngConfirm _scope.
539 | * PLACED IN NG CONFIRM SCOPE.
540 | *
541 | * Setting buttons
542 | * The user cannot add or remove buttons in run time.
543 | * The user can however change the buttons properties.
544 | *
545 | * @param buttons
546 | * @private
547 | */
548 | _setButtons: function (buttons) {
549 | var self = this;
550 | if (typeof buttons != 'object')
551 | buttons = {};
552 |
553 | angular.forEach(buttons, function (button, key) {
554 | if (typeof button === 'function') {
555 | buttons[key] = button = {
556 | action: button
557 | };
558 | }
559 |
560 | buttons[key].text = button.text || key;
561 | buttons[key].btnClass = button.btnClass || 'btn-default';
562 | buttons[key].action = button.action || angular.noop;
563 | buttons[key].keys = button.keys || [];
564 | buttons[key].disabled = button.disabled || false;
565 | if (typeof button.show == 'undefined')
566 | button.show = true;
567 | buttons[key].show = button.show;
568 |
569 | angular.forEach(buttons[key].keys, function (a, i) {
570 | buttons[key].keys[i] = a.toLowerCase();
571 | });
572 |
573 | var button_el = angular.element(' ');
574 |
575 |
576 | buttons[key].setText = function (text) {
577 | button_el.find('.ng-confirm-btn-text').html(text);
578 | };
579 | buttons[key].setBtnClass = function (btnClass) {
580 | button_el.removeClass(buttons[key].btnClass).addClass(btnClass);
581 | buttons[key].btnClass = btnClass;
582 | };
583 | buttons[key].setDisabled = function (state) {
584 | if (state)
585 | button_el.attr('disabled', 'disabled');
586 | else
587 | button_el.removeAttr('disabled');
588 | buttons[key].disabled = state;
589 | };
590 | buttons[key].setShow = function (state) {
591 | if (state)
592 | button_el.removeClass(self._hideClass);
593 | else
594 | button_el.addClass(self._hideClass);
595 |
596 | buttons[key].show = state;
597 | };
598 |
599 | buttons[key].setText(buttons[key].text);
600 | buttons[key].setBtnClass(buttons[key].btnClass);
601 | buttons[key].setDisabled(buttons[key].disabled);
602 | buttons[key].setShow(buttons[key].show);
603 |
604 | button_el.click(function (e) {
605 | e.preventDefault();
606 | self.triggerButton(key);
607 | });
608 |
609 | buttons[key].el = button_el;
610 |
611 | self.$buttonContainer.append(button_el);
612 | });
613 |
614 | this.buttons = buttons;
615 | this._buttonCount = Object.keys(buttons).length;
616 | },
617 | /**
618 | * Buttons in the model.
619 | */
620 | _buttonCount: 0,
621 | _themePrefix: 'ng-confirm-',
622 | _pSetTheme: '',
623 | /**
624 | * sets the theme class
625 | * @param theme
626 | * @returns {string}
627 | */
628 | setTheme: function (theme) {
629 | var c = this._prefixThis(theme, this._themePrefix);
630 | this.$el.removeClass(this._pSetTheme).addClass(c);
631 | this._pSetTheme = c;
632 | },
633 | _rtlClass: 'ng-confirm-rtl',
634 | /**
635 | * sets and removes the Right to left class
636 | * @param state
637 | */
638 | setRtl: function (state) {
639 | if (state)
640 | this.$el.addClass(this._rtlClass);
641 | else
642 | this.$el.removeClass(this._rtlClass);
643 |
644 | this.rtl = state;
645 | },
646 | /**
647 | * Sets the background opacity.
648 | * @param opacity
649 | */
650 | setBgOpacity: function (opacity) {
651 | this.$confirmBg.css('opacity', opacity);
652 | this.bgOpacity = opacity;
653 | },
654 | _cubic_bezier: '0.36, 0.55, 0.19',
655 | _getCSS: function (speed, bounce) {
656 | return {
657 | '-webkit-transition-duration': speed / 1000 + 's',
658 | 'transition-duration': speed / 1000 + 's',
659 | '-webkit-transition-timing-function': 'cubic-bezier(' + this._cubic_bezier + ', ' + bounce + ')',
660 | 'transition-timing-function': 'cubic-bezier(' + this._cubic_bezier + ', ' + bounce + ')'
661 | }
662 | },
663 | _hash: function (str) {
664 | var string = str.toString();
665 | var hash = 0;
666 | if (string.length == 0) return hash;
667 | for (var i = 0; i < string.length; i++) {
668 | var char = string.toString().charCodeAt(i);
669 | hash = ((hash << 5) - hash) + char;
670 | hash = hash & hash; // Convert to 32bit integer
671 | }
672 | return hash;
673 | },
674 | _digestWatchUnRegister: false,
675 | /**
676 | * Bind all events.
677 | *
678 | * @returns {boolean}
679 | * @private
680 | */
681 | _bindEvents: function () {
682 | var self = this;
683 | // bind to scope digest
684 | this._digestWatchUnRegister = this.scope.$watch(function () {
685 | self.setDialogCenter('Digest watcher');
686 | });
687 | this.$closeIcon.on('click.' + self._id, function () {
688 | self._closeClick();
689 | });
690 | angular.element(window).on('resize.' + self._id, function () {
691 | self.setDialogCenter('Window Resize');
692 | });
693 | angular.element(window).on('keyup.' + self._id, function (e) {
694 | self._reactOnKey(e);
695 | });
696 | this.$scrollPane.on('click', function () {
697 | self._scrollPaneClick();
698 | });
699 | this.$confirmBox.on('click', function () {
700 | self.boxClicked = true;
701 | });
702 | },
703 | _unBindEvents: function () {
704 | angular.element(window).off('resize.' + this._id);
705 | angular.element(window).off('keyup.' + this._id);
706 | this.$closeIcon.off('click.' + this._id);
707 | if (this._digestWatchUnRegister)
708 | this._digestWatchUnRegister();
709 | },
710 | _reactOnKey: function (e) {
711 | var that = this;
712 |
713 | var openedModals = angular.element('.ng-confirm');
714 | if (openedModals.eq(openedModals.length - 1)[0] !== this.$el[0]) {
715 | // if the event is called, and this modal is not the top most one, abort
716 | return false;
717 | }
718 |
719 | var key = e.which;
720 |
721 | if ($(this.$el).find(':input').is(':focus') && /13|32/.test(key)) {
722 | return;
723 | }
724 |
725 | var keyChar = this._getKey(key);
726 |
727 | if (keyChar === 'esc' && this.escapeKey) {
728 | if (this.escapeKey == true) {
729 | this._scrollPaneClick();
730 | }
731 | else if (typeof this.escapeKey == 'string' || typeof this.escapeKey == 'function') {
732 | var buttonName = false;
733 | if (typeof this.escapeKey == 'function') {
734 | buttonName = this.escapeKey();
735 | } else {
736 | buttonName = this.escapeKey;
737 | }
738 |
739 | if (buttonName) {
740 | if (!angular.isDefined(this.buttons[buttonName])) {
741 | $log.warn('Invalid escapeKey, no buttons found with name ' + buttonName);
742 | } else {
743 | this._buttonClick(buttonName);
744 | }
745 | }
746 | }
747 | }
748 |
749 | angular.forEach(this.buttons, function (button, key) {
750 | if (button.keys.indexOf(keyChar) != -1)
751 | that._buttonClick(key);
752 | });
753 | },
754 | _scrollPaneClick: function () {
755 | if (this.boxClicked) {
756 | this.boxClicked = false;
757 | return false;
758 | }
759 |
760 | var buttonName = false;
761 | var shouldClose = false;
762 | var str;
763 |
764 | if (typeof this.backgroundDismiss == 'function')
765 | str = this.backgroundDismiss();
766 | else
767 | str = this.backgroundDismiss;
768 |
769 | if (typeof str == 'string' && angular.isDefined(this.buttons[str])) {
770 | buttonName = str;
771 | shouldClose = false;
772 | } else if (typeof str == 'undefined' || !!(str) == true) {
773 | shouldClose = true;
774 | } else {
775 | shouldClose = false;
776 | }
777 |
778 | if (buttonName) {
779 | var btnResponse = this.buttons[buttonName].action.apply(this, [this.scope, this.buttons[buttonName]]);
780 | shouldClose = (typeof btnResponse == 'undefined') || !!(btnResponse);
781 | }
782 |
783 | if (shouldClose)
784 | this.close();
785 | else
786 | this.hiLightModal();
787 | },
788 | /**
789 | * Called when close button is clicked.
790 | * @private
791 | */
792 | _closeClick: function () {
793 | var buttonName = false;
794 | var shouldClose = false;
795 | var str;
796 |
797 | if (typeof this.closeIcon == 'function') {
798 | str = this.closeIcon();
799 | } else {
800 | str = this.closeIcon;
801 | }
802 |
803 | if (typeof str == 'string' && angular.isDefined(this.buttons[str])) {
804 | buttonName = str;
805 | shouldClose = false;
806 | } else if (typeof str == 'undefined' || !!(str) == true) {
807 | shouldClose = true;
808 | } else {
809 | shouldClose = false;
810 | }
811 |
812 | if (buttonName) {
813 | var btnResponse = this.buttons[buttonName].action.apply(this, [this.scope, this.buttons[buttonName]]);
814 | shouldClose = (typeof btnResponse == 'undefined' || !!(btnResponse) == true);
815 | }
816 | if (shouldClose) {
817 | this.close();
818 | }
819 | },
820 | _hilightAnimating: false,
821 | _hilightClass: 'ng-confirm-hilight',
822 | /**
823 | * Hilight the modal.
824 | * Whatever animation that is given to it.
825 | */
826 | hiLightModal: function () {
827 | var self = this;
828 | if (this._hilightAnimating)
829 | return;
830 |
831 | this._hilightAnimating = true;
832 | this.$confirmBox.addClass(this._hilightClass);
833 | setTimeout(function () {
834 | self._hilightAnimating = false;
835 | self.$confirmBox.removeClass(self._hilightClass);
836 | }, this.animationSpeed);
837 | },
838 | /**
839 | * Button click function
840 | *
841 | * @param buttonKey
842 | * @returns {*}
843 | * @private
844 | */
845 | _buttonClick: function (buttonKey) {
846 | var res = this.buttons[buttonKey].action.apply(this, [this.scope, this.buttons[buttonKey]]);
847 | if (typeof this.onAction === 'function')
848 | this.onAction.apply(this, [this.scope, buttonKey]);
849 |
850 | if (typeof res === 'undefined' || res)
851 | this.close();
852 | else
853 | this.scope.$apply(); // if there are changes in the scope. apply it
854 |
855 |
856 | return res;
857 | },
858 | /**
859 | * Alias for _buttonClick
860 | * Available for triggering buttons.
861 | *
862 | * @param buttonKey
863 | * @returns {*}
864 | */
865 | triggerButton: function (buttonKey) {
866 | return this._buttonClick(buttonKey);
867 | },
868 | setDialogCenter: function (where) {
869 | where = where || 'n/a'; // for debug
870 | var $content = this.$content;
871 | var contentHeight = $content.outerHeight();
872 | var contentPaneHeight = this.$contentPane.outerHeight();
873 |
874 | var children = $content.children();
875 | if (children.length != 0) {
876 | // angular jq css will only return inline css.
877 | var marginTopChild = parseInt(children.eq(0).css('margin-top'));
878 | if (marginTopChild)
879 | contentHeight += marginTopChild;
880 | }
881 |
882 | var windowHeight = angular.element(window).height();
883 |
884 | var confirmBoxHeight = this.$confirmBox.outerHeight();
885 | if (confirmBoxHeight == 0) {
886 | // console.log(where, confirmBoxHeight);
887 | return;
888 | }
889 | var boxHeight = (confirmBoxHeight - contentPaneHeight) + contentHeight;
890 | var totalOffset = (this.offsetTop) + this.offsetBottom;
891 | var style;
892 | if (boxHeight > (windowHeight - totalOffset) || !this.alignMiddle) {
893 | style = {
894 | 'margin-top': this.offsetTop,
895 | 'margin-bottom': this.offsetBottom,
896 | };
897 | angular.element('body').addClass('ng-confirm-no-scroll-' + this._id);
898 | } else {
899 | style = {
900 | 'margin-top': (windowHeight - boxHeight) / 2,
901 | 'margin-bottom': 0,
902 | };
903 | angular.element('body').removeClass('ng-confirm-no-scroll-' + this._id);
904 | }
905 |
906 | this.$contentPane.css({
907 | 'height': contentHeight,
908 | }).scrollTop(0);
909 | this.$confirmBox.css(style);
910 | },
911 | _getKey: function (key) {
912 | // special keys.
913 | switch (key) {
914 | case 192:
915 | return 'tilde';
916 | case 13:
917 | return 'enter';
918 | case 16:
919 | return 'shift';
920 | case 9:
921 | return 'tab';
922 | case 20:
923 | return 'capslock';
924 | case 17:
925 | return 'ctrl';
926 | case 91:
927 | return 'win';
928 | case 18:
929 | return 'alt';
930 | case 27:
931 | return 'esc';
932 | }
933 |
934 | // only trust alphabets with this.
935 | var initial = String.fromCharCode(key);
936 | if (/^[A-z0-9]+$/.test(initial))
937 | return initial.toLowerCase();
938 | else
939 | return false;
940 | },
941 | open: function () {
942 | var that = this;
943 | this._prepare();
944 | $timeout(function () {
945 | that._open();
946 | }, 100);
947 |
948 | return true;
949 | },
950 | _open: function () {
951 | var self = this;
952 |
953 | if (typeof this.onOpenBefore == 'function')
954 | this.onOpenBefore.apply(this, [this.scope]);
955 |
956 | angular.element(this.container).append(this.$el);
957 | self.setDialogCenter('_open');
958 |
959 | setTimeout(function () {
960 | // console.log(self.$el.html());
961 | self.$contentPane.css(self._getCSS(self.animationSpeed, 1));
962 | self.$confirmBox.css(self._getCSS(self.animationSpeed, self.animationBounce));
963 | self._removeAnimationClass();
964 | self.$confirmBg.removeClass('ng-confirm-bg-h');
965 | self.$confirmBox.focus();
966 |
967 | setTimeout(function () {
968 | self._bindEvents();
969 | self.$confirmBox.css(self._getCSS(self.animationSpeed, 1));
970 | self._modalReady.resolve();
971 |
972 | if (typeof self.onOpen === 'function')
973 | self.onOpen.apply(self, [self.scope]);
974 |
975 | self._startCountDown();
976 | }, self.animationSpeed);
977 | }, 100);
978 | },
979 | _autoCloseKey: false,
980 | _autoCloseInterval: 0,
981 | _startCountDown: function () {
982 | var self = this;
983 | if (typeof this.autoClose != 'string') return;
984 | var opt = this.autoClose.split('|');
985 | if (opt.length != 2) {
986 | $log.error("Invalid option for autoClose. example 'close|10000'");
987 | return;
988 | }
989 |
990 | this._autoCloseKey = opt[0];
991 | var time = opt[1];
992 | var sec = time / 1000;
993 |
994 | if (!angular.isDefined(this.buttons[this._autoCloseKey])) {
995 | $log.error('Auto close button "' + self._autoCloseKey + '" not defined.');
996 | return;
997 | }
998 |
999 | var timer_el = angular.element(' ');
1000 | this.buttons[this._autoCloseKey].el.append(timer_el);
1001 |
1002 | this._autoCloseInterval = setInterval(function () {
1003 | var s = sec ? " (" + (--sec) + ")" : "";
1004 | timer_el.html(s);
1005 | if (sec < 1) {
1006 | self._stopCountDown();
1007 | self._buttonClick(self._autoCloseKey);
1008 | }
1009 | }, 1000);
1010 | },
1011 | _stopCountDown: function () {
1012 | if (this._autoCloseInterval) {
1013 | clearInterval(this._autoCloseInterval);
1014 | }
1015 | },
1016 | closed: false,
1017 | isClosed: function () {
1018 | return this.closed;
1019 | },
1020 | isOpen: function () {
1021 | return !this.closed;
1022 | },
1023 | close: function () {
1024 | var self = this;
1025 | if (typeof this.onClose === 'function')
1026 | this.onClose.apply(this, [this.scope]);
1027 |
1028 | this._unBindEvents();
1029 | this._stopCountDown();
1030 |
1031 | this._setAnimationClass(this.closeAnimation);
1032 | this.$confirmBg.addClass('ng-confirm-bg-h');
1033 | var closeTimer = this.animationSpeed * .4;
1034 |
1035 | setTimeout(function () {
1036 | self.$el.remove();
1037 | self.closed = true;
1038 | if (!self._providedScope)
1039 | self.scope.$destroy();
1040 |
1041 | if (typeof self.onDestroy == 'function')
1042 | self.onDestroy.apply(self, [self.scope]);
1043 |
1044 | angular.element('body').removeClass('ng-confirm-no-scroll-' + self._id);
1045 | self._lastFocused.focus();
1046 | self = undefined;
1047 | }, closeTimer);
1048 |
1049 | return true;
1050 | }
1051 | };
1052 |
1053 | return ngConfirmBase;
1054 | }
1055 | ]);
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-confirm1",
3 | "version": "1.1.0",
4 | "title": "angular-confirm.js | A multipurpose alert and confirm plugin",
5 | "description": "A angular plugin that provides great set of features like, Auto-close, Ajax-loading, background-dismiss, themes and more.",
6 | "homepage": "http://craftpip.github.io/angular-confirm/",
7 | "author": "Boniface Periera (http://github.com/craftpip/)",
8 | "licenses": [
9 | {
10 | "type": "MIT",
11 | "url": "https://github.com/craftpip/angular-confirm/blob/master/LICENSE"
12 | }
13 | ],
14 | "repository": {
15 | "type": "git",
16 | "url": "https://github.com/craftpip/angular-confirm.git"
17 | },
18 | "main": "dist/angular-confirm.min.js",
19 | "dependencies": {},
20 | "bugs": {
21 | "url": "https://github.com/craftpip/angular-confirm/issues"
22 | },
23 | "scripts": {
24 | "test": "echo \"Error: no test specified\" && exit 1"
25 | },
26 | "keywords": [
27 | "angular-plugin",
28 | "angular",
29 | "confirm",
30 | "alert",
31 | "dialog"
32 | ],
33 | "license": "MIT"
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/table.html:
--------------------------------------------------------------------------------
1 |
2 | Loading content asynchronously! (Lazy loading content)
3 | You can preview this file table.html
4 |
5 |
6 |
7 | Name
8 | City
9 | Company
10 |
11 |
12 | Adara
13 | Arquata del Tronto
14 | At Nisi Cum LLP
15 |
16 |
17 | Heather
18 | Springfield
19 | Lorem Ipsum Dolor Associates
20 |
21 |
22 | Jenna
23 | Milton Keynes
24 | Pharetra Nam Ac Institute
25 |
26 |
27 | Iris
28 | Belgaum
29 | Ultrices Vivamus LLC
30 |
31 |
32 | Karleigh
33 | Pelago
34 | Purus Maecenas Libero LLC
35 |
36 |
37 | Charles
38 | Nizip
39 | Sit Amet Corp.
40 |
41 |
42 | Brody
43 | Dworp
44 | Ac Mattis Limited
45 |
46 |
47 | Ralph
48 | Zevekote
49 | Faucibus Orci Associates
50 |
51 |
52 | Kaitlin
53 | Roveredo in Piano
54 | Massa Suspendisse Incorporated
55 |
56 |
57 | Barry
58 | Montrose
59 | Molestie PC
60 |
61 |
62 | Harper
63 | Borgomaro
64 | Nibh Company
65 |
66 |
67 | Jessamine
68 | Aydın
69 | Molestie In Tempus LLP
70 |
71 |
72 | Fiona
73 | Weelde
74 | Donec Non Limited
75 |
76 |
77 | Jasper
78 | Trogn�e
79 | Nascetur Ridiculus LLC
80 |
81 |
82 | Yetta
83 | Kukatpalle
84 | Montes Nascetur Ridiculus Inc.
85 |
86 |
87 | Malik
88 | Buggenhout
89 | Eu Eros Nam Foundation
90 |
91 |
92 | Sierra
93 | Bilaspur
94 | Nascetur LLP
95 |
96 |
97 | Solomon
98 | Torgny
99 | Eu Incorporated
100 |
101 |
102 | Halee
103 | Oostkamp
104 | Erat Vel Inc.
105 |
106 |
107 | Cathleen
108 | Beaumaris
109 | Tempor Arcu Vestibulum Company
110 |
111 |
112 | Orli
113 | Söke
114 | Lorem Ipsum Consulting
115 |
116 |
117 | Imani
118 | Thuin
119 | In Nec Limited
120 |
121 |
122 | Evan
123 | Oudenaken
124 | Fames LLP
125 |
126 |
127 | Quamar
128 | New Westminster
129 | Congue Turpis In Company
130 |
131 |
132 | Dakota
133 | Brucargo
134 | Tempus Corp.
135 |
136 |
137 | Chanda
138 | Belvedere Ostrense
139 | Neque Morbi Corp.
140 |
141 |
142 | Mara
143 | Salice Salentino
144 | Adipiscing Lacus Ut Incorporated
145 |
146 |
147 | Hadassah
148 | Roxboro
149 | Suspendisse Tristique Neque LLC
150 |
151 |
152 | Moana
153 | Elbląg
154 | Rutrum Lorem Ac Foundation
155 |
156 |
157 | Macy
158 | Pangnirtung
159 | Euismod Ac LLC
160 |
161 |
162 | Celeste
163 | Peterhead
164 | Nulla Facilisis Foundation
165 |
166 |
167 | Rebecca
168 | Selkirk
169 | Enim Consequat Inc.
170 |
171 |
172 | Paloma
173 | Gondiya
174 | Nunc Inc.
175 |
176 |
177 | Arsenio
178 | Pontarlier
179 | Pede LLC
180 |
181 |
182 | Nicholas
183 | Herentals
184 | Duis Institute
185 |
186 |
187 | Lionel
188 | Brisbane
189 | Sagittis Duis Gravida Incorporated
190 |
191 |
192 | Ifeoma
193 | Gulfport
194 | Et Magna PC
195 |
196 |
197 | Lewis
198 | Norderstedt
199 | Accumsan Laoreet Associates
200 |
201 |
202 | Hall
203 | Monteleone di Spoleto
204 | Vitae Posuere Associates
205 |
206 |
207 | Quentin
208 | Picton
209 | Non Leo Ltd
210 |
211 |
212 | Hedwig
213 | Ingraj Bazar
214 | At Libero Ltd
215 |
216 |
217 | Clarke
218 | Ukkel
219 | In Faucibus Morbi Industries
220 |
221 |
222 | Oliver
223 | Saharanpur
224 | Ornare LLC
225 |
226 |
227 | Nolan
228 | Mysore
229 | Mollis Incorporated
230 |
231 |
232 | Imani
233 | Beverlo
234 | Lorem Institute
235 |
236 |
237 | Barry
238 | Guna
239 | Eleifend Vitae Limited
240 |
241 |
242 | Ciara
243 | Stratford-upon-Avon
244 | Pellentesque LLC
245 |
246 |
247 | Mufutau
248 | Sint-Kruis-Winkel
249 | Urna Inc.
250 |
251 |
252 | Kibo
253 | Dubuisson
254 | Bibendum Fermentum Metus Company
255 |
256 |
257 | Emma
258 | Neum�nster
259 | Ultrices Corporation
260 |
261 |
262 | Ethan
263 | Mattersburg
264 | Consequat Nec Incorporated
265 |
266 |
267 | Fredericka
268 | Penrith
269 | Ante Nunc Mauris LLC
270 |
271 |
272 | Sylvia
273 | Brussel
274 | Donec Egestas Duis LLC
275 |
276 |
277 | Julian
278 | Mei�en
279 | Vel Consulting
280 |
281 |
282 | Nicholas
283 | Mandasor
284 | Suscipit Est Company
285 |
286 |
287 | Deirdre
288 | Kirkland
289 | Non Inc.
290 |
291 |
292 | Jonah
293 | Henley-on-Thames
294 | Odio Foundation
295 |
296 |
297 | Fallon
298 | Dabgram
299 | Nascetur Ridiculus Ltd
300 |
301 |
302 | Ursa
303 | Franeker
304 | Rutrum Institute
305 |
306 |
307 | Aquila
308 | Malbaie
309 | Nostra Company
310 |
311 |
312 | Devin
313 | Bevilacqua
314 | Placerat Industries
315 |
316 |
317 | Shana
318 | Imphal
319 | Lorem Eget LLC
320 |
321 |
322 | Amanda
323 | Roux-Miroir
324 | Iaculis Nec Eleifend Company
325 |
326 |
327 | Britanney
328 | Bihar Sharif
329 | Rutrum Ltd
330 |
331 |
332 | Austin
333 | Carlisle
334 | Amet PC
335 |
336 |
--------------------------------------------------------------------------------
/text.txt:
--------------------------------------------------------------------------------
1 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
2 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
3 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
4 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
5 | cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
6 | proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
7 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
8 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo aliqua. Ut enim ad minim veniam,
--------------------------------------------------------------------------------
/themelayout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/craftpip/angular-confirm/0283ef1ce55b263f7db71d3d1ced357b9b3ef3c7/themelayout.png
--------------------------------------------------------------------------------
/themelayout.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/craftpip/angular-confirm/0283ef1ce55b263f7db71d3d1ced357b9b3ef3c7/themelayout.psd
--------------------------------------------------------------------------------
/themes.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | angular-confirm.js | The multipurpose alert & confirm
7 |
9 |
12 |
14 |
16 |
19 |
21 |
23 |
25 |
27 |
30 |
33 |
36 |
39 |
41 |
43 |
45 |
47 |
49 |
51 |
53 |
54 |
56 |
57 |
58 |
60 |
61 |
62 |
63 |
66 |
67 |
68 |
69 |
72 |
74 |
75 |
76 |
77 |
79 |
136 |
151 |
153 |
154 |
155 |
156 |
181 |
182 |
183 |
184 | back to
185 | Main Docs
186 |
187 |
188 |
189 |
194 |
197 |
198 |
199 | Themes
200 |
201 |
202 | The Light & Dark themes that suit any website design,
203 |
204 |
205 |
206 |
207 |
Light theme
208 |
Dark theme
209 |
Supervan
210 |
Material
211 |
Bootstrap
212 |
Modern
213 |
Seamless
214 |
215 |
$ngConfirm({
216 | theme: 'light'
217 | });
218 | $.confirm({
219 | theme: 'dark'
220 | });
221 | $.confirm({
222 | theme: 'supervan' // 'material', 'bootstrap'
223 | });
224 |
225 |
226 |
227 |
228 | Make your own themes
229 |
230 |
231 | Why not? A unique design must have a unique confirm box
232 |
233 |
234 |
235 |
236 |
237 |
238 | This is a CSS boilerplate for defining a theme.
239 |
240 |
241 | LESS
242 | CSS
243 |
244 |
245 |
.ng-confirm.ng-confirm-my-theme {
246 | .ng-confirm-bg {
247 | &.ng-confirm-bg-h {
248 | }
249 | }
250 | .ng-confirm-scrollpane {
251 | }
252 | .ng-confirm-box {
253 | &.ng-confirm-loading {
254 | &:before {
255 | }
256 | &:after {
257 | }
258 | }
259 | div.ng-confirm-closeIcon {
260 | &:empty {
261 | }
262 | .fa, .glyphicon, .zmdi {
263 | }
264 | &:hover {
265 | }
266 | }
267 | div.ng-confirm-title-c {
268 | .ng-confirm-icon-c {
269 | i {
270 | }
271 | &:empty {
272 | }
273 | }
274 | .ng-confirm-title {
275 | &:empty {
276 | }
277 | }
278 | }
279 | div.ng-confirm-content-pane {
280 | .ng-confirm-content {
281 | img {
282 | }
283 | &:empty {
284 | }
285 | }
286 | }
287 | .ng-confirm-buttons {
288 | button{
289 | }
290 | }
291 | }
292 | .ng-confirm-clear {
293 | }
294 | &.ng-confirm-rtl {
295 | .ng-confirm-closeIcon {
296 | }
297 | }
298 | }
299 |
.ng-confirm.ng-confirm-my-theme {
300 | }
301 | .ng-confirm.ng-confirm-my-theme .ng-confirm-bg {
302 | }
303 | .ng-confirm.ng-confirm-my-theme .ng-confirm-bg.ng-confirm-bg-h {
304 | }
305 | .ng-confirm.ng-confirm-my-theme .ng-confirm-scrollpane {
306 | }
307 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box {
308 | }
309 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box.ng-confirm-loading {
310 | }
311 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box.ng-confirm-loading:before {
312 | }
313 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box.ng-confirm-loading:after {
314 | }
315 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-closeIcon {
316 | }
317 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-closeIcon:empty {
318 | }
319 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-closeIcon .fa,
320 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-closeIcon .glyphicon,
321 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-closeIcon .zmdi {
322 | }
323 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-closeIcon:hover {
324 | }
325 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-title-c {
326 | }
327 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c {
328 | }
329 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c i {
330 | }
331 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-title-c .ng-confirm-icon-c:empty {
332 | }
333 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-title-c .ng-confirm-title {
334 | }
335 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-title-c .ng-confirm-title:empty {
336 | }
337 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-content-pane {
338 | }
339 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-content-pane .ng-confirm-content {
340 | }
341 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-content-pane .ng-confirm-content img {
342 | }
343 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box div.ng-confirm-content-pane .ng-confirm-content:empty {
344 | }
345 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box .ng-confirm-buttons {
346 | }
347 | .ng-confirm.ng-confirm-my-theme .ng-confirm-box .ng-confirm-buttons button {
348 | }
349 | .ng-confirm.ng-confirm-my-theme .ng-confirm-clear {
350 | }
351 | .ng-confirm.ng-confirm-my-theme.ng-confirm-rtl {
352 | }
353 | .ng-confirm.ng-confirm-my-theme.ng-confirm-rtl .ng-confirm-closeIcon {
354 | }
355 |
356 |
357 |
358 | JS part of it
359 |
360 |
$ngConfirm({
361 | theme: 'my-theme'
362 | });
363 |
364 |
365 |
366 |
367 |
368 |
369 | Layout
370 |
371 | This visualizes the layout for quicker understanding for creating themes.
372 |
373 |
374 |
375 |
376 |
389 |
390 |
391 |
392 |
393 |
395 |
396 |
398 |
399 |
415 |
416 |
420 |
435 |
436 |
--------------------------------------------------------------------------------
/themes_popup.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Change the below fields to see the changes.
4 |
5 |
6 |
7 | Modal type
8 |
11 | default
12 | blue
13 | orange
14 | green
15 | purple
16 | dark
17 |
18 |
19 |
20 |
21 | Theme
22 |
25 | light
26 | dark
27 | supervan
28 | modern
29 | seamless
30 | material
31 | bootstrap
32 |
33 |
34 |
35 |
36 | Icon
37 |
38 |
39 |
40 |
41 |
42 | Title
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | Close icon
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 | Rtl
59 |
60 |
61 |
62 |
63 |
64 | Close icon class
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------