From 3bcc551ddfdd66b1ddd44656dd716aa59307c74a Mon Sep 17 00:00:00 2001 From: Kartik Visweswaran Date: Sun, 24 Sep 2017 11:41:58 +0530 Subject: [PATCH] Updates to release v4.4.5 fixes #1086 fixes #1087 --- CHANGE.md | 9 + README.md | 2 +- bower.json | 2 +- css/fileinput-rtl.css | 17 +- css/fileinput-rtl.min.css | 4 +- css/fileinput.css | 34 +- css/fileinput.min.css | 4 +- examples/index.html | 2 +- js/fileinput.js | 100 +++-- js/fileinput.min.js | 8 +- js/locales/LANG.js | 1 + js/locales/ar.js | 1 + js/locales/az.js | 1 + js/locales/bg.js | 1 + js/locales/ca.js | 1 + js/locales/cr.js | 1 + js/locales/cz.js | 1 + js/locales/da.js | 1 + js/locales/de.js | 1 + js/locales/el.js | 1 + js/locales/es.js | 1 + js/locales/et.js | 1 + js/locales/fa.js | 1 + js/locales/fr.js | 1 + js/locales/gl.js | 1 + js/locales/hu.js | 1 + js/locales/id.js | 1 + js/locales/it.js | 1 + js/locales/ja.js | 1 + js/locales/kr.js | 1 + js/locales/kz.js | 1 + js/locales/lt.js | 1 + js/locales/nl.js | 1 + js/locales/no.js | 1 + js/locales/pl.js | 1 + js/locales/pt-BR.js | 1 + js/locales/pt.js | 1 + js/locales/ro.js | 1 + js/locales/ru.js | 1 + js/locales/sk.js | 1 + js/locales/sl.js | 1 + js/locales/sv.js | 1 + js/locales/th.js | 1 + js/locales/tr.js | 1 + js/locales/uk.js | 1 + js/locales/vi.js | 1 + js/locales/zh-TW.js | 1 + js/locales/zh.js | 1 + nuget/Package.nuspec | 2 +- package.json | 2 +- sass/fileinput-rtl.scss | 101 +++++ sass/fileinput.scss | 688 +++++++++++++---------------- sass/themes/explorer-fa/theme.scss | 168 +++++++ sass/themes/explorer/theme.scss | 168 +++++++ themes/explorer-fa/theme.css | 2 +- themes/explorer-fa/theme.js | 2 +- themes/explorer-fa/theme.min.css | 2 +- themes/explorer-fa/theme.min.js | 2 +- themes/explorer/theme.css | 2 +- themes/explorer/theme.js | 2 +- themes/explorer/theme.min.css | 2 +- themes/explorer/theme.min.js | 2 +- themes/fa/theme.js | 2 +- themes/fa/theme.min.js | 2 +- themes/gly/theme.js | 2 +- themes/gly/theme.min.js | 2 +- 66 files changed, 922 insertions(+), 451 deletions(-) create mode 100644 sass/fileinput-rtl.scss create mode 100644 sass/themes/explorer-fa/theme.scss create mode 100644 sass/themes/explorer/theme.scss diff --git a/CHANGE.md b/CHANGE.md index 8f5e23a7..517d3c54 100755 --- a/CHANGE.md +++ b/CHANGE.md @@ -1,6 +1,15 @@ Change Log: `bootstrap-fileinput` ================================= +## version 4.4.5 (_under development_) + +**Date:** 24-Sep-2017 + +- (enh #1087): Enhance SCSS/SASS styling configurations. +- (enh #1086): New placeholder property and various caption rendering enhancements. +- (enh #1085): Update Slovak Translations. +- (enh #1084): Update Czech Translations. + ## version 4.4.4 **Date:** 21-Sep-2017 diff --git a/README.md b/README.md index 85810b85..d9411d15 100755 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ View the [plugin documentation](http://plugins.krajee.com/file-input) and [plugi 4. With release 4.0, AJAX uploads are supported. AJAX uploads require that the browser support HTML5 FormData and XHR2 (XMLHttpRequest 2). Most modern browsers support FormData and XHR2. The plugin will automatically degrade to normal form based submission for browsers not supporting AJAX uploads > NOTE: -> - The latest version of the plugin is v4.4.4. Bootstrap 4.x is supported in addition to Bootstrap 3.x since release v4.4.4. Refer the [CHANGE LOG](https://github.com/kartik-v/bootstrap-fileinput/blob/master/CHANGE.md) for details. +> - The latest version of the plugin is v4.4.5. Bootstrap 4.x is supported in addition to Bootstrap 3.x since release v4.4.4. Refer the [CHANGE LOG](https://github.com/kartik-v/bootstrap-fileinput/blob/master/CHANGE.md) for details. > - You can use the [sass branch](https://github.com/kartik-v/bootstrap-fileinput/tree/sass) for installation using `bootstrap-sass` dependency. The [master branch](https://github.com/kartik-v/bootstrap-fileinput/tree/master) can be used for installation using plain `bootstrap` dependency. diff --git a/bower.json b/bower.json index cd819e44..b5cb442e 100755 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "bootstrap-fileinput", - "version": "4.4.4", + "version": "4.4.5", "homepage": "https://github.com/kartik-v/bootstrap-fileinput", "authors": [ "Kartik Visweswaran " diff --git a/css/fileinput-rtl.css b/css/fileinput-rtl.css index 7bc9189f..f05a52ed 100644 --- a/css/fileinput-rtl.css +++ b/css/fileinput-rtl.css @@ -1,5 +1,5 @@ /*! - * bootstrap-fileinput v4.4.4 + * bootstrap-fileinput v4.4.5 * http://plugins.krajee.com/file-input * * Krajee RTL (Right To Left) default styling for bootstrap-fileinput. @@ -19,6 +19,21 @@ margin-right: 3px; } +.kv-rtl .file-caption-icon { + left: auto; + right: 10px; + margin: 0 0 0 10px; +} + +.kv-rtl .file-caption.icon-visible .file-caption-name { + padding-left: 0; + padding-right: 30px; +} + +.kv-rtl .file-caption.icon-visible .input-group-lg .file-caption-name { + padding-right: 34px; +} + .kv-rtl .close { float: left; } diff --git a/css/fileinput-rtl.min.css b/css/fileinput-rtl.min.css index f79c3fa7..09121038 100644 --- a/css/fileinput-rtl.min.css +++ b/css/fileinput-rtl.min.css @@ -1,5 +1,5 @@ /*! - * bootstrap-fileinput v4.4.4 + * bootstrap-fileinput v4.4.5 * http://plugins.krajee.com/file-input * * Krajee RTL (Right To Left) default styling for bootstrap-fileinput. @@ -9,4 +9,4 @@ * * Licensed under the BSD 3-Clause * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md - */.kv-rtl{direction:rtl}.kv-rtl .floating-buttons .btn-kv,.kv-rtl .kv-zoom-actions .btn-kv{margin-left:0;margin-right:3px}.kv-rtl .close{float:left}.kv-rtl .input-group-btn:last-child>.btn{border-radius:4px 0 0 4px}.kv-rtl .input-group .form-control:first-child{border-radius:0 4px 4px 0}.kv-rtl .btn-file input[type=file]{right:auto;left:0;text-align:left;background:100% 0 none}.kv-rtl .file-error-message pre,.kv-rtl .file-error-message ul,.kv-rtl .file-zoom-dialog{text-align:right}.kv-rtl .file-drop-zone{margin:12px 12px 12px 15px}.kv-rtl .floating-buttons{left:10px;right:auto}.kv-rtl .btn-prev{right:1px;left:auto}.kv-rtl .btn-next{left:1px;right:auto}.kv-rtl .pull-right{float:left!important}.kv-rtl .pull-left{float:right!important}.kv-rtl .float-right{float:left!important}.kv-rtl .float-left{float:right!important}.kv-rtl .kv-zoom-title{direction:ltr}.kv-rtl .krajee-default.file-preview-frame{box-shadow:-1px 1px 5px 0 #a2958a;float:right}.kv-rtl .krajee-default.file-preview-frame:not(.file-preview-error):hover{box-shadow:-3px 3px 5px 0 #333}.kv-rtl .krajee-default .file-actions,.kv-rtl .krajee-default .file-other-error{float:left}.kv-rtl .krajee-default .file-drag-handle,.kv-rtl .krajee-default .file-upload-indicator{float:right} \ No newline at end of file + */.kv-rtl{direction:rtl}.kv-rtl .floating-buttons .btn-kv,.kv-rtl .kv-zoom-actions .btn-kv{margin-left:0;margin-right:3px}.kv-rtl .file-caption-icon{left:auto;right:10px;margin:0 0 0 10px}.kv-rtl .file-caption.icon-visible .file-caption-name{padding-left:0;padding-right:30px}.kv-rtl .file-caption.icon-visible .input-group-lg .file-caption-name{padding-right:34px}.kv-rtl .close{float:left}.kv-rtl .input-group-btn:last-child>.btn{border-radius:4px 0 0 4px}.kv-rtl .input-group .form-control:first-child{border-radius:0 4px 4px 0}.kv-rtl .btn-file input[type=file]{right:auto;left:0;text-align:left;background:100% 0 none}.kv-rtl .file-error-message pre,.kv-rtl .file-error-message ul,.kv-rtl .file-zoom-dialog{text-align:right}.kv-rtl .file-drop-zone{margin:12px 12px 12px 15px}.kv-rtl .floating-buttons{left:10px;right:auto}.kv-rtl .btn-prev{right:1px;left:auto}.kv-rtl .btn-next{left:1px;right:auto}.kv-rtl .pull-right{float:left!important}.kv-rtl .pull-left{float:right!important}.kv-rtl .float-right{float:left!important}.kv-rtl .float-left{float:right!important}.kv-rtl .kv-zoom-title{direction:ltr}.kv-rtl .krajee-default.file-preview-frame{box-shadow:-1px 1px 5px 0 #a2958a;float:right}.kv-rtl .krajee-default.file-preview-frame:not(.file-preview-error):hover{box-shadow:-3px 3px 5px 0 #333}.kv-rtl .krajee-default .file-actions,.kv-rtl .krajee-default .file-other-error{float:left}.kv-rtl .krajee-default .file-drag-handle,.kv-rtl .krajee-default .file-upload-indicator{float:right} \ No newline at end of file diff --git a/css/fileinput.css b/css/fileinput.css index 298ac170..8f7cd837 100755 --- a/css/fileinput.css +++ b/css/fileinput.css @@ -1,5 +1,5 @@ /*! - * bootstrap-fileinput v4.4.4 + * bootstrap-fileinput v4.4.5 * http://plugins.krajee.com/file-input * * Krajee default styling for bootstrap-fileinput. @@ -90,15 +90,34 @@ input[type=file].file-loading, .file-loading input[type=file] { display: block; } -.file-caption-name { +.file-caption { + position: relative; +} + +.file-caption-icon { + display: none; + position: absolute; + top: 24%; + left: 10px; + z-index: 10; + margin-right: 10px; +} + +.file-caption.icon-visible .file-caption-icon { display: inline-block; - overflow: hidden; - height: 20px; - word-break: break-all; } -.input-group-lg .file-caption-name { - height: 25px; +.file-caption-icon.icon-lg { + font-size: 1.2em; + margin-right: 12px; +} + +.file-caption.icon-visible .file-caption-name { + padding-left: 30px; +} + +.file-caption.icon-visible .input-group-lg .file-caption-name { + padding-left: 34px; } .file-error-message { @@ -546,6 +565,7 @@ input[type=file].file-loading, .file-loading input[type=file] { text-overflow: ellipsis; } + @media screen and (max-width: 767px) { .file-preview-thumbnails { display: flex; diff --git a/css/fileinput.min.css b/css/fileinput.min.css index 886ba45e..0bb0e91c 100755 --- a/css/fileinput.min.css +++ b/css/fileinput.min.css @@ -1,5 +1,5 @@ /*! - * bootstrap-fileinput v4.4.4 + * bootstrap-fileinput v4.4.5 * http://plugins.krajee.com/file-input * * Krajee default styling for bootstrap-fileinput. @@ -9,4 +9,4 @@ * * Licensed under the BSD 3-Clause * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md - */.kv-hidden{display:none}.rotate-2{transform:rotateY(180deg)}.rotate-3{transform:rotate(180deg)}.rotate-4{transform:rotate(180deg) rotateY(180deg)}.rotate-5{transform:rotate(270deg) rotateY(180deg)}.rotate-6{transform:rotate(90deg)}.rotate-7{transform:rotate(90deg) rotateY(180deg)}.rotate-8{transform:rotate(270deg)}.file-loading input[type=file],input[type=file].file-loading{width:0;height:0}.file-loading:before{content:" Loading...";display:inline-block;position:relative;padding-left:20px;line-height:16px;font-size:13px;font-variant:small-caps;color:#999;background:url(../img/loading.gif) top left no-repeat}.file-loading[dir=rtl]:before{background:url(../img/loading.gif) top right no-repeat;padding-left:0;padding-right:20px}.file-object{margin:0 0 -5px;padding:0}.btn-file{position:relative;overflow:hidden}.btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;text-align:right;opacity:0;background:none;cursor:inherit;display:block}.file-caption-name{display:inline-block;overflow:hidden;height:20px;word-break:break-all}.input-group-lg .file-caption-name{height:25px}.file-error-message{color:#a94442;background-color:#f2dede;margin:5px;border:1px solid #ebccd1;border-radius:4px;padding:15px}.file-error-message pre,.file-error-message ul{margin:0;text-align:left}.file-error-message pre{margin:5px 0}.file-caption-disabled{background-color:#eee;cursor:not-allowed;opacity:1}.file-preview{border-radius:5px;border:1px solid #ddd;padding:8px;width:100%;margin-bottom:5px;position:relative}.file-preview .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.file-preview .fileinput-remove{position:absolute;top:1px;right:1px;line-height:10px}.file-preview-image{font:40px Impact,Charcoal,sans-serif;color:green}.krajee-default.file-preview-frame{position:relative;margin:8px;border:1px solid #ddd;box-shadow:1px 1px 5px 0 #a2958a;padding:6px;float:left;text-align:center}.krajee-default.file-preview-frame:not(.file-preview-error):hover{box-shadow:3px 3px 5px 0 #333}.krajee-default.file-preview-frame .kv-file-content{width:213px;height:160px}.krajee-default.file-preview-frame .file-thumbnail-footer{height:70px}.krajee-default .file-preview-text{display:block;color:#428bca;border:1px solid #ddd;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;outline:0;padding:8px;resize:none}.krajee-default .file-preview-html{border:1px solid #ddd;padding:8px;overflow:auto}.krajee-default .file-preview-other:hover{opacity:.8}.krajee-default .file-actions,.krajee-default .file-other-error{text-align:left}.krajee-default .file-other-icon{font-size:6em}.krajee-default .file-footer-buttons{float:right}.krajee-default .file-footer-caption{display:block;text-align:center;padding-top:4px;font-size:11px;color:#777;margin-bottom:15px}.krajee-default .file-preview-error{opacity:.65;box-shadow:none}.krajee-default .file-preview-frame:not(.file-preview-error) .file-footer-caption:hover{color:#000}.krajee-default .file-drag-handle,.krajee-default .file-upload-indicator{float:left;margin:5px 0 -5px;width:16px;height:16px}.krajee-default .file-thumb-progress .progress,.krajee-default .file-thumb-progress .progress-bar{height:11px;font-size:9px;line-height:10px}.krajee-default .file-thumbnail-footer{position:relative}.krajee-default .file-thumb-progress{height:11px;position:absolute;top:37px;left:0;right:0}.krajee-default .file-caption-info,.krajee-default .file-size-info{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:160px;height:15px;margin:auto}.file-input-ajax-new .fileinput-remove-button,.file-input-ajax-new .fileinput-upload-button,.file-input-ajax-new .no-browse .input-group-btn,.file-input-new .close,.file-input-new .file-preview,.file-input-new .fileinput-remove-button,.file-input-new .fileinput-upload-button,.file-input-new .glyphicon-file,.file-input-new .no-browse .input-group-btn{display:none}.krajee-default.kvsortable-ghost{background:#e1edf7;border:2px solid #a1abff}.kv-upload-progress .progress,.kv-upload-progress .progress-bar{height:20px;line-height:20px}.kv-upload-progress .progress{margin:10px 0;overflow:hidden}.file-zoom-dialog .file-other-icon{font-size:22em;font-size:50vmin}.file-caption-main{width:100%}.file-input-ajax-new .no-browse .form-control,.file-input-new .no-browse .form-control{border-top-right-radius:4px;border-bottom-right-radius:4px}.file-thumb-loading{background:url(../img/loading.gif) center center no-repeat content-box!important}.file-sortable .file-drag-handle{cursor:move;cursor:-webkit-grabbing;opacity:1}.file-sortable .file-drag-handle:hover{opacity:.7}.file-drop-zone{border:1px dashed #aaa;border-radius:4px;height:100%;text-align:center;vertical-align:middle;margin:12px 15px 12px 12px;padding:5px}.file-drop-zone-title{color:#aaa;font-size:1.6em;padding:85px 10px;cursor:default}.clickable .file-drop-zone-title,.file-preview .clickable{cursor:pointer}.file-drop-zone.clickable:hover{border:2px dashed #999}.file-drop-zone.clickable:focus{border:2px solid #5acde2}.file-drop-zone .file-preview-thumbnails{cursor:default}.file-highlighted{border:2px dashed #999!important;background-color:#f0f0f0}.file-uploading{background:url(../img/loading-sm.gif) center bottom 10px no-repeat;opacity:.65}.file-zoom-dialog .modal-dialog{position:relative;width:auto}.file-zoom-dialog .modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.file-zoom-dialog .modal-header:after,.file-zoom-dialog .modal-header:before{display:none}@media (min-width:576px){.file-zoom-dialog .modal-dialog{max-width:500px}}@media (min-width:992px){.file-zoom-dialog .modal-lg{max-width:800px}}.file-zoom-fullscreen.modal{position:fixed;top:0;right:0;bottom:0;left:0}.file-zoom-fullscreen .modal-dialog{position:fixed;margin:0;width:100%;height:100%;max-width:100%;max-height:100%;padding:0}.file-zoom-fullscreen .modal-content{border-radius:0;box-shadow:none}.file-zoom-fullscreen .modal-body{overflow-y:auto}.file-zoom-dialog .btn-navigate{position:absolute;padding:0;margin:0;background:0 0;text-decoration:none;outline:0;opacity:.7;top:45%;font-size:4em;color:#1c94c4}.file-zoom-dialog .floating-buttons{position:absolute;top:5px;right:10px}.btn-kv{display:inline-block;text-align:center;width:30px;height:30px;line-height:30px;padding:0;font-size:.875rem;border-radius:.2rem}.floating-buttons .btn-kv,.kv-zoom-actions .btn-kv{margin-left:3px}.floating-buttons,.floating-buttons .btn-kv{z-index:3000}.file-zoom-dialog .btn-navigate:not([disabled]):hover{outline:0;box-shadow:none;opacity:.6}.file-zoom-dialog .btn-navigate[disabled]{opacity:.3}.file-zoom-dialog .btn-prev{left:1px}.file-zoom-dialog .btn-next{right:1px}.file-zoom-content{height:480px;text-align:center}.file-zoom-content .file-preview-image,.file-zoom-content .file-preview-video{max-height:100%}.file-zoom-content>.file-object.type-image{width:auto;height:auto;min-height:inherit;max-width:100%;max-height:100%}.file-zoom-content>.file-object.type-flash,.file-zoom-content>.file-object.type-video{width:auto;height:100%;max-width:100%;max-height:100%}.file-zoom-content>.file-object.type-audio{width:auto;height:30px}.file-zoom-content>.file-object.type-default,.file-zoom-content>.file-object.type-html,.file-zoom-content>.file-object.type-pdf,.file-zoom-content>.file-object.type-text{width:100%}.file-preview-initial.sortable-chosen{background-color:#d9edf7}.hide-content .kv-file-content{display:none}.btn-file ::-ms-browse{font-size:10000px;width:100%;height:100%}.file-zoom-content .is-portrait-gt4{margin-top:60px}.file-zoom-dialog .kv-zoom-title{font-weight:300;color:#999;max-width:50%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media screen and (max-width:767px){.file-preview-thumbnails{display:flex;justify-content:center;align-items:center;flex-direction:column}.file-zoom-dialog .modal-header{flex-direction:column}}@media screen and (max-width:350px){.krajee-default.file-preview-frame .kv-file-content{width:160px}} \ No newline at end of file + */.kv-hidden{display:none}.rotate-2{transform:rotateY(180deg)}.rotate-3{transform:rotate(180deg)}.rotate-4{transform:rotate(180deg) rotateY(180deg)}.rotate-5{transform:rotate(270deg) rotateY(180deg)}.rotate-6{transform:rotate(90deg)}.rotate-7{transform:rotate(90deg) rotateY(180deg)}.rotate-8{transform:rotate(270deg)}.file-loading input[type=file],input[type=file].file-loading{width:0;height:0}.file-loading:before{content:" Loading...";display:inline-block;position:relative;padding-left:20px;line-height:16px;font-size:13px;font-variant:small-caps;color:#999;background:url(../img/loading.gif) top left no-repeat}.file-loading[dir=rtl]:before{background:url(../img/loading.gif) top right no-repeat;padding-left:0;padding-right:20px}.file-object{margin:0 0 -5px;padding:0}.btn-file{position:relative;overflow:hidden}.btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;text-align:right;opacity:0;background:none;cursor:inherit;display:block}.file-caption{position:relative}.file-caption-icon{display:none;position:absolute;top:24%;left:10px;z-index:10;margin-right:10px}.file-caption.icon-visible .file-caption-icon{display:inline-block}.file-caption-icon.icon-lg{font-size:1.2em;margin-right:12px}.file-caption.icon-visible .file-caption-name{padding-left:30px}.file-caption.icon-visible .input-group-lg .file-caption-name{padding-left:34px}.file-error-message{color:#a94442;background-color:#f2dede;margin:5px;border:1px solid #ebccd1;border-radius:4px;padding:15px}.file-error-message pre,.file-error-message ul{margin:0;text-align:left}.file-error-message pre{margin:5px 0}.file-caption-disabled{background-color:#eee;cursor:not-allowed;opacity:1}.file-preview{border-radius:5px;border:1px solid #ddd;padding:8px;width:100%;margin-bottom:5px;position:relative}.file-preview .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.file-preview .fileinput-remove{position:absolute;top:1px;right:1px;line-height:10px}.file-preview-image{font:40px Impact,Charcoal,sans-serif;color:green}.krajee-default.file-preview-frame{position:relative;margin:8px;border:1px solid #ddd;box-shadow:1px 1px 5px 0 #a2958a;padding:6px;float:left;text-align:center}.krajee-default.file-preview-frame:not(.file-preview-error):hover{box-shadow:3px 3px 5px 0 #333}.krajee-default.file-preview-frame .kv-file-content{width:213px;height:160px}.krajee-default.file-preview-frame .file-thumbnail-footer{height:70px}.krajee-default .file-preview-text{display:block;color:#428bca;border:1px solid #ddd;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;outline:0;padding:8px;resize:none}.krajee-default .file-preview-html{border:1px solid #ddd;padding:8px;overflow:auto}.krajee-default .file-preview-other:hover{opacity:.8}.krajee-default .file-actions,.krajee-default .file-other-error{text-align:left}.krajee-default .file-other-icon{font-size:6em}.krajee-default .file-footer-buttons{float:right}.krajee-default .file-footer-caption{display:block;text-align:center;padding-top:4px;font-size:11px;color:#777;margin-bottom:15px}.krajee-default .file-preview-error{opacity:.65;box-shadow:none}.krajee-default .file-preview-frame:not(.file-preview-error) .file-footer-caption:hover{color:#000}.krajee-default .file-drag-handle,.krajee-default .file-upload-indicator{float:left;margin:5px 0 -5px;width:16px;height:16px}.krajee-default .file-thumb-progress .progress,.krajee-default .file-thumb-progress .progress-bar{height:11px;font-size:9px;line-height:10px}.krajee-default .file-thumbnail-footer{position:relative}.krajee-default .file-thumb-progress{height:11px;position:absolute;top:37px;left:0;right:0}.krajee-default .file-caption-info,.krajee-default .file-size-info{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:160px;height:15px;margin:auto}.file-input-ajax-new .fileinput-remove-button,.file-input-ajax-new .fileinput-upload-button,.file-input-ajax-new .no-browse .input-group-btn,.file-input-new .close,.file-input-new .file-preview,.file-input-new .fileinput-remove-button,.file-input-new .fileinput-upload-button,.file-input-new .glyphicon-file,.file-input-new .no-browse .input-group-btn{display:none}.krajee-default.kvsortable-ghost{background:#e1edf7;border:2px solid #a1abff}.kv-upload-progress .progress,.kv-upload-progress .progress-bar{height:20px;line-height:20px}.kv-upload-progress .progress{margin:10px 0;overflow:hidden}.file-zoom-dialog .file-other-icon{font-size:22em;font-size:50vmin}.file-caption-main{width:100%}.file-input-ajax-new .no-browse .form-control,.file-input-new .no-browse .form-control{border-top-right-radius:4px;border-bottom-right-radius:4px}.file-thumb-loading{background:url(../img/loading.gif) center center no-repeat content-box!important}.file-sortable .file-drag-handle{cursor:move;cursor:-webkit-grabbing;opacity:1}.file-sortable .file-drag-handle:hover{opacity:.7}.file-drop-zone{border:1px dashed #aaa;border-radius:4px;height:100%;text-align:center;vertical-align:middle;margin:12px 15px 12px 12px;padding:5px}.file-drop-zone-title{color:#aaa;font-size:1.6em;padding:85px 10px;cursor:default}.clickable .file-drop-zone-title,.file-preview .clickable{cursor:pointer}.file-drop-zone.clickable:hover{border:2px dashed #999}.file-drop-zone.clickable:focus{border:2px solid #5acde2}.file-drop-zone .file-preview-thumbnails{cursor:default}.file-highlighted{border:2px dashed #999!important;background-color:#f0f0f0}.file-uploading{background:url(../img/loading-sm.gif) center bottom 10px no-repeat;opacity:.65}.file-zoom-dialog .modal-dialog{position:relative;width:auto}.file-zoom-dialog .modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.file-zoom-dialog .modal-header:after,.file-zoom-dialog .modal-header:before{display:none}@media (min-width:576px){.file-zoom-dialog .modal-dialog{max-width:500px}}@media (min-width:992px){.file-zoom-dialog .modal-lg{max-width:800px}}.file-zoom-fullscreen.modal{position:fixed;top:0;right:0;bottom:0;left:0}.file-zoom-fullscreen .modal-dialog{position:fixed;margin:0;width:100%;height:100%;max-width:100%;max-height:100%;padding:0}.file-zoom-fullscreen .modal-content{border-radius:0;box-shadow:none}.file-zoom-fullscreen .modal-body{overflow-y:auto}.file-zoom-dialog .btn-navigate{position:absolute;padding:0;margin:0;background:0 0;text-decoration:none;outline:0;opacity:.7;top:45%;font-size:4em;color:#1c94c4}.file-zoom-dialog .floating-buttons{position:absolute;top:5px;right:10px}.btn-kv{display:inline-block;text-align:center;width:30px;height:30px;line-height:30px;padding:0;font-size:.875rem;border-radius:.2rem}.floating-buttons .btn-kv,.kv-zoom-actions .btn-kv{margin-left:3px}.floating-buttons,.floating-buttons .btn-kv{z-index:3000}.file-zoom-dialog .btn-navigate:not([disabled]):hover{outline:0;box-shadow:none;opacity:.6}.file-zoom-dialog .btn-navigate[disabled]{opacity:.3}.file-zoom-dialog .btn-prev{left:1px}.file-zoom-dialog .btn-next{right:1px}.file-zoom-content{height:480px;text-align:center}.file-zoom-content .file-preview-image,.file-zoom-content .file-preview-video{max-height:100%}.file-zoom-content>.file-object.type-image{width:auto;height:auto;min-height:inherit;max-width:100%;max-height:100%}.file-zoom-content>.file-object.type-flash,.file-zoom-content>.file-object.type-video{width:auto;height:100%;max-width:100%;max-height:100%}.file-zoom-content>.file-object.type-audio{width:auto;height:30px}.file-zoom-content>.file-object.type-default,.file-zoom-content>.file-object.type-html,.file-zoom-content>.file-object.type-pdf,.file-zoom-content>.file-object.type-text{width:100%}.file-preview-initial.sortable-chosen{background-color:#d9edf7}.hide-content .kv-file-content{display:none}.btn-file ::-ms-browse{font-size:10000px;width:100%;height:100%}.file-zoom-content .is-portrait-gt4{margin-top:60px}.file-zoom-dialog .kv-zoom-title{font-weight:300;color:#999;max-width:50%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media screen and (max-width:767px){.file-preview-thumbnails{display:flex;justify-content:center;align-items:center;flex-direction:column}.file-zoom-dialog .modal-header{flex-direction:column}}@media screen and (max-width:350px){.krajee-default.file-preview-frame .kv-file-content{width:160px}} \ No newline at end of file diff --git a/examples/index.html b/examples/index.html index 5a363308..b6fe49f5 100755 --- a/examples/index.html +++ b/examples/index.html @@ -1,5 +1,5 @@ - + diff --git a/js/fileinput.js b/js/fileinput.js index 2e62f4ac..0b904b62 100755 --- a/js/fileinput.js +++ b/js/fileinput.js @@ -1,5 +1,5 @@ /*! - * bootstrap-fileinput v4.4.4 + * bootstrap-fileinput v4.4.5 * http://plugins.krajee.com/file-input * * Author: Kartik Visweswaran @@ -374,7 +374,7 @@ self.cancelling = false; }, _init: function (options, refreshMode) { - var self = this, $el = self.$element, $cont, t, tmp; + var self = this, f, $el = self.$element, $cont, t, tmp; self.options = options; $.each(options, function (key, value) { switch (key) { @@ -445,11 +445,22 @@ self.$btnUpload = $cont.find('.fileinput-upload'); self.$captionContainer = $h.getElement(options, 'elCaptionContainer', $cont.find('.file-caption')); self.$caption = $h.getElement(options, 'elCaptionText', $cont.find('.file-caption-name')); + if (!$h.isEmpty(self.msgPlaceholder)) { + f = $el.attr('multiple') ? self.filePlural : self.fileSingle; + self.$caption.attr('placeholder', self.msgPlaceholder.replace('{files}', f)); + } + self.$captionIcon = self.$captionContainer.find('.file-caption-icon'); + if (self.mainClass.indexOf('input-group-lg') > -1) { + $h.addCss(self.$captionIcon, 'icon-lg'); + } else { + self.$captionIcon.removeClass('icon-lg'); + } self.$previewContainer = $h.getElement(options, 'elPreviewContainer', $cont.find('.file-preview')); self.$preview = $h.getElement(options, 'elPreviewImage', $cont.find('.file-preview-thumbnails')); self.$previewStatus = $h.getElement(options, 'elPreviewStatus', $cont.find('.file-preview-status')); self.$errorContainer = $h.getElement(options, 'elErrorContainer', self.$previewContainer.find('.kv-fileinput-error')); + self._validateDisabled(); if (!$h.isEmpty(self.msgErrorClass)) { $h.addCss(self.$errorContainer, self.msgErrorClass); } @@ -480,14 +491,17 @@ tText, tVideo, tAudio, tFlash, tObject, tPdf, tOther, tZoomCache, vDefaultDim; tMain1 = '{preview}\n' + '
\n' + - '
\n' + - ' {caption}\n' + - '
\n' + - ' {remove}\n' + - ' {cancel}\n' + - ' {upload}\n' + - ' {browse}\n' + - '
\n' + + '
\n' + + ' \n' + + '
\n' + + ' {caption}\n' + + '
\n' + + ' {remove}\n' + + ' {cancel}\n' + + ' {upload}\n' + + ' {browse}\n' + + '
\n' + + '
\n' + '
'; tMain2 = '{preview}\n
\n
\n{remove}\n{cancel}\n{upload}\n{browse}\n'; tPreview = '
\n' + @@ -501,10 +515,8 @@ '
\n' + '
'; tClose = '\n'; - tFileIcon = ''; - tCaption = '
\n' + - '
\n' + - '
\n'; + tFileIcon = ''; + tCaption = ''; //noinspection HtmlUnknownAttribute tBtnDefault = ''; @@ -996,10 +1008,17 @@ }); } }, + _setValidationError: function(css) { + var self = this; + css = (css ? css + ' ' : '') + 'has-error'; + self.$container.removeClass(css).addClass('has-error'); + $h.addCss(self.$caption, 'is-invalid'); + }, _resetErrors: function (fade) { var self = this, $error = self.$errorContainer; self.isError = false; self.$container.removeClass('has-error'); + self.$caption.removeClass('is-invalid'); $error.html(''); if (fade) { $error.fadeOut('slow'); @@ -1014,7 +1033,7 @@ } msg = self.msgFoldersNotAllowed.replace('{n}', folders); self._addError(msg); - $h.addCss(self.$container, 'has-error'); + self._setValidationError(); $error.fadeIn(800); self._raise('filefoldererror', [folders, msg]); }, @@ -1028,8 +1047,7 @@ } $error.fadeIn(800); self._raise(ev, [params, msg]); - self.$container.removeClass('file-input-new'); - $h.addCss(self.$container, 'has-error'); + self._setValidationError('file-input-new'); return true; }, _showError: function (msg, params, event) { @@ -1042,8 +1060,7 @@ if (!self.isAjaxUpload) { self._clearFileInput(); } - self.$container.removeClass('file-input-new'); - $h.addCss(self.$container, 'has-error'); + self._setValidationError('file-input-new'); self.$btnUpload.attr('disabled', true); return true; }, @@ -1057,7 +1074,7 @@ $error.fadeIn(800); self._raise('fileerror', [params, msg]); self._clearFileInput(); - $h.addCss(self.$container, 'has-error'); + self._setValidationError(); }, _parseError: function (operation, jqXHR, errorThrown, fileName) { /** @namespace jqXHR.responseJSON */ @@ -2498,12 +2515,14 @@ }); }, _hideFileIcon: function () { - if (this.overwriteInitial) { - this.$captionContainer.find('.kv-caption-icon').hide(); + var self = this; + if (self.overwriteInitial) { + self.$captionContainer.removeClass('icon-visible'); } }, _showFileIcon: function () { - this.$captionContainer.find('.kv-caption-icon').show(); + var self = this; + $h.addCss(self.$captionContainer, 'icon-visible'); }, _getSize: function (bytes) { var self = this, size = parseFloat(bytes), i, func = self.fileSizeGetter, sizes, out; @@ -2875,7 +2894,7 @@ if (self.isError) { self.$previewContainer.removeClass('file-thumb-loading'); self.$previewStatus.html(''); - self.$captionContainer.find('.kv-caption-icon').hide(); + self.$captionContainer.removeClass('icon-visible'); } else { self._showFileIcon(); } @@ -3189,17 +3208,18 @@ _initCaption: function () { var self = this, cap = self.initialCaption || ''; if (self.overwriteInitial || $h.isEmpty(cap)) { - self.$caption.html(''); + self.$caption.val(''); return false; } self._setCaption(cap); return true; }, _setCaption: function (content, isError) { - var self = this, title, out, n, cap, stack = self.getFileStack(); + var self = this, title, out, icon, n, cap, stack = self.getFileStack(); if (!self.$caption.length) { return; } + self.$captionContainer.removeClass('icon-visible'); if (isError) { title = $('
' + self.msgValidationError + '
').text(); n = stack.length; @@ -3208,18 +3228,19 @@ } else { cap = self._getMsgSelected(self.msgNo); } - out = '' + self.msgValidationErrorIcon + - ($h.isEmpty(content) ? cap : content) + ''; + out = $h.isEmpty(content) ? cap : content; + icon = '' + self.msgValidationErrorIcon + ''; } else { if ($h.isEmpty(content)) { return; } title = $('
' + content + '
').text(); - out = self._getLayoutTemplate('fileIcon') + title; + out = title; + icon = self._getLayoutTemplate('fileIcon'); } - self.$caption.html(out); - self.$caption.attr('title', title); - self.$captionContainer.find('.file-caption-ellipsis').attr('title', title); + self.$captionContainer.addClass('icon-visible'); + self.$caption.attr('title', title).val(out); + self.$captionIcon.html(icon); }, _createContainer: function () { var self = this, attribs = {"class": 'file-input file-input-new' + (self.rtl ? ' kv-rtl' : '')}, @@ -3236,6 +3257,13 @@ $container.before(self.$element); $container.html(self._renderMain()); self._initBrowse($container); + self._validateDisabled(); + }, + _validateDisabled: function() { + var self = this; + if (self.isDisabled && self.$caption && self.$caption.length) { + self.$caption.attr('readonly', true); + } }, _renderMain: function () { var self = this, @@ -3478,7 +3506,7 @@ n = (self.autoReplace && len > self.maxFileCount) ? len : total; msg = self.msgFilesTooMany.replace('{m}', self.maxFileCount).replace('{n}', n); self.isError = throwError(msg, null, null, null); - self.$captionContainer.find('.kv-caption-icon').hide(); + self.$captionContainer.removeClass('icon-visible'); self._setCaption('', true); self.$container.removeClass('file-input-new file-input-ajax-new'); return; @@ -3665,14 +3693,13 @@ } self.$preview.html(''); cap = (!self.overwriteInitial && self.initialCaption.length > 0) ? self.initialCaption : ''; - self.$caption.html(cap); - self.$caption.attr('title', ''); + self.$caption.attr('title', '').val(cap); $h.addCss(self.$container, 'file-input-new'); self._validateDefaultPreview(); } if (self.$container.find($h.FRAMES).length === 0) { if (!self._initCaption()) { - self.$captionContainer.find('.kv-caption-icon').hide(); + self.$captionContainer.removeClass('icon-visible'); } } self._hideFileIcon(); @@ -4004,6 +4031,7 @@ msgNo: 'No', msgNoFilesSelected: 'No files selected', msgCancelled: 'Cancelled', + msgPlaceholder: 'Select {files}...', msgZoomModalHeading: 'Detailed Preview', msgFileRequired: 'You must select a file to upload.', msgSizeTooSmall: 'File "{name}" ({size} KB) is too small and must be larger than {minSize} KB.', diff --git a/js/fileinput.min.js b/js/fileinput.min.js index 2362a173..d4efa98e 100755 --- a/js/fileinput.min.js +++ b/js/fileinput.min.js @@ -1,5 +1,5 @@ /*! - * bootstrap-fileinput v4.4.4 + * bootstrap-fileinput v4.4.5 * http://plugins.krajee.com/file-input * * Author: Kartik Visweswaran @@ -7,6 +7,6 @@ * * Licensed under the BSD 3-Clause * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md - */!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&module.exports?module.exports=e(require("jquery")):e(window.jQuery)}(function(e){"use strict";e.fn.fileinputLocales={},e.fn.fileinputThemes={},String.prototype.setTokens=function(e){var t,i,a=this.toString();for(t in e)e.hasOwnProperty(t)&&(i=new RegExp("{"+t+"}","g"),a=a.replace(i,e[t]));return a};var t,i;t={FRAMES:".kv-preview-thumb",SORT_CSS:"file-sortable",OBJECT_PARAMS:'\n\n\n\n\n\n',DEFAULT_PREVIEW:'
\n{previewFileIcon}\n
',MODAL_ID:"kvFileinputModal",MODAL_EVENTS:["show","shown","hide","hidden","loaded"],objUrl:window.URL||window.webkitURL,compare:function(e,t,i){return void 0!==e&&(i?e===t:e.match(t))},isIE:function(e){if("Microsoft Internet Explorer"!==navigator.appName)return!1;if(10===e)return new RegExp("msie\\s"+e,"i").test(navigator.userAgent);var t,i=document.createElement("div");return i.innerHTML="",t=i.getElementsByTagName("i").length,document.body.appendChild(i),i.parentNode.removeChild(i),t},initModal:function(t){var i=e("body");i.length&&t.appendTo(i)},isEmpty:function(t,i){return void 0===t||null===t||0===t.length||i&&""===e.trim(t)},isArray:function(e){return Array.isArray(e)||"[object Array]"===Object.prototype.toString.call(e)},ifSet:function(e,t,i){return i=i||"",t&&"object"==typeof t&&e in t?t[e]:i},cleanArray:function(e){return e instanceof Array||(e=[]),e.filter(function(e){return void 0!==e&&null!==e})},spliceArray:function(e,t){var i,a=0,n=[];if(!(e instanceof Array))return[];for(i=0;i=0?atob(e.split(",")[1]):decodeURIComponent(e.split(",")[1]),a=new ArrayBuffer(i.length),n=new Uint8Array(a),r=0;r/g,">").replace(/"/g,""").replace(/'/g,"'")},replaceTags:function(t,i){var a=t;return i?(e.each(i,function(e,t){"function"==typeof t&&(t=t()),a=a.split(e).join(t)}),a):a},cleanMemory:function(e){var i=e.is("img")?e.attr("src"):e.find("source").attr("src");t.objUrl.revokeObjectURL(i)},findFileName:function(e){var t=e.lastIndexOf("/");return-1===t&&(t=e.lastIndexOf("\\")),e.split(e.substring(t,t+1)).pop()},checkFullScreen:function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement},toggleFullScreen:function(e){var i=document,a=i.documentElement;a&&e&&!t.checkFullScreen()?a.requestFullscreen?a.requestFullscreen():a.msRequestFullscreen?a.msRequestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.webkitRequestFullscreen&&a.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT):i.exitFullscreen?i.exitFullscreen():i.msExitFullscreen?i.msExitFullscreen():i.mozCancelFullScreen?i.mozCancelFullScreen():i.webkitExitFullscreen&&i.webkitExitFullscreen()},moveArray:function(e,t,i){if(i>=e.length)for(var a=i-e.length;a--+1;)e.push(void 0);return e.splice(i,0,e.splice(t,1)[0]),e},cleanZoomCache:function(e){var t=e.closest(".kv-zoom-cache-theme");t.length||(t=e.closest(".kv-zoom-cache")),t.remove()},setOrientation:function(e,t){var i,a,n,r=new DataView(e),o=0,l=1;if(65496!==r.getUint16(o)||e.length<2)return void(t&&t());for(o+=2,i=r.byteLength;i-2>o;)switch(a=r.getUint16(o),o+=2,a){case 65505:n=r.getUint16(o),i=n-o,o+=2;break;case 274:l=r.getUint16(o+6,!1),i=0}t&&t(l)},validateOrientation:function(e,i){if(window.FileReader&&window.DataView){var a,n=new FileReader;n.onloadend=function(){a=n.result,t.setOrientation(a,i)},n.readAsArrayBuffer(e)}},adjustOrientedImage:function(e,t){var i,a,n;if(e.hasClass("is-portrait-gt4")){if(t)return void e.css({width:e.parent().height()});e.css({height:"auto",width:e.height()}),i=e.parent().offset().top,a=e.offset().top,n=i-a,e.css("margin-top",n)}}},i=function(i,a){var n=this;n.$element=e(i),n.$parent=n.$element.parent(),n._validate()&&(n.isPreviewable=t.hasFileAPISupport(),n.isIE9=t.isIE(9),n.isIE10=t.isIE(10),(n.isPreviewable||n.isIE9)&&(n._init(a),n._listen()),n.$element.removeClass("file-loading"))},i.prototype={constructor:i,_cleanup:function(){var e=this;e.reader=null,e.formdata={},e.uploadCount=0,e.uploadStatus={},e.uploadLog=[],e.uploadAsyncCount=0,e.loadedImages=[],e.totalImagesCount=0,e.ajaxRequests=[],e.clearStack(),e.fileInputCleared=!1,e.fileBatchCompleted=!0,e.isPreviewable||(e.showPreview=!1),e.isError=!1,e.ajaxAborted=!1,e.cancelling=!1},_init:function(i,a){var n,r,o,l=this,s=l.$element;l.options=i,e.each(i,function(e,i){switch(e){case"minFileCount":case"maxFileCount":case"minFileSize":case"maxFileSize":case"maxFilePreviewSize":case"resizeImageQuality":case"resizeIfSizeMoreThan":case"progressUploadThreshold":case"initialPreviewCount":case"zoomModalHeight":case"minImageHeight":case"maxImageHeight":case"minImageWidth":case"maxImageWidth":l[e]=t.getNum(i);break;default:l[e]=i}}),l.rtl&&(o=l.previewZoomButtonIcons.prev,l.previewZoomButtonIcons.prev=l.previewZoomButtonIcons.next,l.previewZoomButtonIcons.next=o),a||l._cleanup(),l.$form=s.closest("form"),l._initTemplateDefaults(),l.uploadFileAttr=t.isEmpty(s.attr("name"))?"file_data":s.attr("name"),r=l._getLayoutTemplate("progress"),l.progressTemplate=r.replace("{class}",l.progressClass),l.progressCompleteTemplate=r.replace("{class}",l.progressCompleteClass),l.progressErrorTemplate=r.replace("{class}",l.progressErrorClass),l.dropZoneEnabled=t.hasDragDropSupport()&&l.dropZoneEnabled,l.isDisabled=s.attr("disabled")||s.attr("readonly"),l.isDisabled&&s.attr("disabled",!0),l.isAjaxUpload=t.hasFileUploadSupport()&&!t.isEmpty(l.uploadUrl),l.isClickable=l.browseOnZoneClick&&l.showPreview&&(l.isAjaxUpload&&l.dropZoneEnabled||!t.isEmpty(l.defaultPreviewContent)),l.slug="function"==typeof i.slugCallback?i.slugCallback:l._slugDefault,l.mainTemplate=l.showCaption?l._getLayoutTemplate("main1"):l._getLayoutTemplate("main2"),l.captionTemplate=l._getLayoutTemplate("caption"),l.previewGenericTemplate=l._getPreviewTemplate("generic"),!l.imageCanvas&&l.resizeImage&&(l.maxImageWidth||l.maxImageHeight)&&(l.imageCanvas=document.createElement("canvas"),l.imageCanvasContext=l.imageCanvas.getContext("2d")),t.isEmpty(s.attr("id"))&&s.attr("id",t.uniqId()),l.namespace=".fileinput_"+s.attr("id").replace(/-/g,"_"),void 0===l.$container?l.$container=l._createContainer():l._refreshContainer(),n=l.$container,l.$dropZone=n.find(".file-drop-zone"),l.$progress=n.find(".kv-upload-progress"),l.$btnUpload=n.find(".fileinput-upload"),l.$captionContainer=t.getElement(i,"elCaptionContainer",n.find(".file-caption")),l.$caption=t.getElement(i,"elCaptionText",n.find(".file-caption-name")),l.$previewContainer=t.getElement(i,"elPreviewContainer",n.find(".file-preview")),l.$preview=t.getElement(i,"elPreviewImage",n.find(".file-preview-thumbnails")),l.$previewStatus=t.getElement(i,"elPreviewStatus",n.find(".file-preview-status")),l.$errorContainer=t.getElement(i,"elErrorContainer",l.$previewContainer.find(".kv-fileinput-error")),t.isEmpty(l.msgErrorClass)||t.addCss(l.$errorContainer,l.msgErrorClass),a||(l.$errorContainer.hide(),l.previewInitId="preview-"+t.uniqId(),l._initPreviewCache(),l._initPreview(!0),l._initPreviewActions(),l._setFileDropZoneTitle(),l.$parent.hasClass("file-loading")&&(l.$container.insertBefore(l.$parent),l.$parent.remove())),s.attr("disabled")&&l.disable(),l._initZoom(),l.hideThumbnailContent&&t.addCss(l.$preview,"hide-content")},_initTemplateDefaults:function(){var i,a,n,r,o,l,s,d,c,u,p,f,m,v,g,h,w,_,b,C,y,x,T,E,S,k,F,I,P,A,z,D,$,j,U,B,R,O=this;i='{preview}\n
\n
\n {caption}\n
\n {remove}\n {cancel}\n {upload}\n {browse}\n
\n
',a='{preview}\n
\n
\n{remove}\n{cancel}\n{upload}\n{browse}\n',n='
\n {close}
\n
\n
\n
\n
\n
\n
',o='\n',r='',l='
\n
\n
\n',s='',d='{icon} {label}',c='
{icon} {label}
',u='',p='\n',f='
\n
\n {status}\n
\n
',m=" ({sizeText})",v='',g='
\n \n
\n{drag}\n
',h='\n',w='',_='{downloadIcon}',b='',C='{dragIcon}',y='
{indicator}
',x='
\n',E=x+' title="{caption}">
\n',S="
{footer}\n
\n",k="{content}\n",F='
{data}
\n',I='{caption}\n',P='\n',A='\n",z='\n",D='\n'+t.OBJECT_PARAMS+" "+t.DEFAULT_PREVIEW+"\n\n",$='\n\n'+t.OBJECT_PARAMS+" "+t.DEFAULT_PREVIEW+"\n\n",j='\n',U='
\n'+t.DEFAULT_PREVIEW+"\n
\n",B='',R={width:"100%",height:"100%","min-height":"480px"},O.defaults={layoutTemplates:{main1:i,main2:a,preview:n,close:o,fileIcon:r,caption:l,modalMain:u,modal:p,progress:f,size:m,footer:v,indicator:y,actions:g,actionDelete:h,actionUpload:w,actionDownload:_,actionZoom:b,actionDrag:C,btnDefault:s,btnLink:d,btnBrowse:c,zoomCache:B},previewMarkupTags:{tagBefore1:T,tagBefore2:E,tagAfter:S},previewContentTemplates:{generic:k,html:F,image:I,text:P,video:A,audio:z,flash:D,object:$,pdf:j,other:U},allowedPreviewTypes:["image","html","text","video","audio","flash","pdf","object"],previewTemplates:{},previewSettings:{image:{width:"auto",height:"auto","max-width":"100%","max-height":"100%"},html:{width:"213px",height:"160px"},text:{width:"213px",height:"160px"},video:{width:"213px",height:"160px"},audio:{width:"100%",height:"30px"},flash:{width:"213px",height:"160px"},object:{width:"213px",height:"160px"},pdf:{width:"213px",height:"160px"},other:{width:"213px",height:"160px"}},previewSettingsSmall:{image:{width:"auto",height:"auto","max-width":"100%","max-height":"100%"},html:{width:"100%",height:"160px"},text:{width:"100%",height:"160px"},video:{width:"100%",height:"auto"},audio:{width:"100%",height:"30px"},flash:{width:"100%",height:"auto"},object:{width:"100%",height:"auto"},pdf:{width:"100%",height:"160px"},other:{width:"100%",height:"160px"}},previewZoomSettings:{image:{width:"auto",height:"auto","max-width":"100%","max-height":"100%"},html:R,text:R,video:{width:"auto",height:"100%","max-width":"100%"},audio:{width:"100%",height:"30px"},flash:{width:"auto",height:"480px"},object:{width:"auto",height:"100%","max-width":"100%","min-height":"480px"},pdf:R,other:{width:"auto",height:"100%","min-height":"480px"}},fileTypeSettings:{image:function(e,i){return t.compare(e,"image.*")||t.compare(i,/\.(gif|png|jpe?g)$/i)},html:function(e,i){return t.compare(e,"text/html")||t.compare(i,/\.(htm|html)$/i)},text:function(e,i){return t.compare(e,"text.*")||t.compare(i,/\.(xml|javascript)$/i)||t.compare(i,/\.(txt|md|csv|nfo|ini|json|php|js|css)$/i)},video:function(e,i){return t.compare(e,"video.*")&&(t.compare(e,/(ogg|mp4|mp?g|mov|webm|3gp)$/i)||t.compare(i,/\.(og?|mp4|webm|mp?g|mov|3gp)$/i))},audio:function(e,i){return t.compare(e,"audio.*")&&(t.compare(i,/(ogg|mp3|mp?g|wav)$/i)||t.compare(i,/\.(og?|mp3|mp?g|wav)$/i))},flash:function(e,i){return t.compare(e,"application/x-shockwave-flash",!0)||t.compare(i,/\.(swf)$/i)},pdf:function(e,i){return t.compare(e,"application/pdf",!0)||t.compare(i,/\.(pdf)$/i)},object:function(){return!0},other:function(){return!0}},fileActionSettings:{showRemove:!0,showUpload:!0,showDownload:!0,showZoom:!0,showDrag:!0,removeIcon:'',removeClass:"btn btn-kv btn-default btn-outline-secondary",removeErrorClass:"btn btn-kv btn-danger",removeTitle:"Remove file",uploadIcon:'',uploadClass:"btn btn-kv btn-default btn-outline-secondary",uploadTitle:"Upload file",uploadRetryIcon:'',uploadRetryTitle:"Retry upload",downloadIcon:'',downloadClass:"btn btn-kv btn-default btn-outline-secondary",downloadTitle:"Download file",zoomIcon:'',zoomClass:"btn btn-kv btn-default btn-outline-secondary",zoomTitle:"View Details",dragIcon:'',dragClass:"text-info",dragTitle:"Move / Rearrange",dragSettings:{},indicatorNew:'',indicatorSuccess:'',indicatorError:'',indicatorLoading:'',indicatorNewTitle:"Not uploaded yet",indicatorSuccessTitle:"Uploaded",indicatorErrorTitle:"Upload Error",indicatorLoadingTitle:"Uploading ..."}},e.each(O.defaults,function(t,i){return"allowedPreviewTypes"===t?void(void 0===O.allowedPreviewTypes&&(O.allowedPreviewTypes=i)):void(O[t]=e.extend(!0,{},i,O[t]))}),O._initPreviewTemplates()},_initPreviewTemplates:function(){var i,a=this,n=a.defaults,r=a.previewMarkupTags,o=r.tagAfter;e.each(n.previewContentTemplates,function(e,n){t.isEmpty(a.previewTemplates[e])&&(i=r.tagBefore2,"generic"!==e&&"image"!==e&&"html"!==e&&"text"!==e||(i=r.tagBefore1),a.previewTemplates[e]=i+n+o)})},_initPreviewCache:function(){var i=this;i.previewCache={data:{},init:function(){var e=i.initialPreview;e.length>0&&!t.isArray(e)&&(e=e.split(i.initialPreviewDelimiter)),i.previewCache.data={content:e,config:i.initialPreviewConfig,tags:i.initialPreviewThumbTags}},count:function(){return i.previewCache.data&&i.previewCache.data.content?i.previewCache.data.content.length:0},get:function(a,n){var r,o,l,s,d,c,u,p="init_"+a,f=i.previewCache.data,m=f.config[a],v=f.content[a],g=i.previewInitId+"-"+p,h=t.ifSet("previewAsData",m,i.initialPreviewAsData),w=function(e,a,n,r,o,l,s,d,c){return d=" file-preview-initial "+t.SORT_CSS+(d?" "+d:""),i._generatePreviewTemplate(e,a,n,r,o,!1,null,d,l,s,c)};return v?(n=void 0===n?!0:n,l=t.ifSet("type",m,i.initialPreviewFileType||"generic"),d=t.ifSet("filename",m,t.ifSet("caption",m)),c=t.ifSet("filetype",m,l),s=i.previewCache.footer(a,n,m&&m.size||null),u=t.ifSet("frameClass",m),r=h?w(l,v,d,c,g,s,p,u):w("generic",v,d,c,g,s,p,u,l).setTokens({content:f.content[a]}),f.tags.length&&f.tags[a]&&(r=t.replaceTags(r,f.tags[a])),t.isEmpty(m)||t.isEmpty(m.frameAttr)||(o=e(document.createElement("div")).html(r),o.find(".file-preview-initial").attr(m.frameAttr),r=o.html(),o.remove()),r):""},add:function(e,a,n,r){var o,l=i.previewCache.data;return t.isArray(e)||(e=e.split(i.initialPreviewDelimiter)),r?(o=l.content.push(e)-1,l.config[o]=a,l.tags[o]=n):(o=e.length-1,l.content=e,l.config=a,l.tags=n),i.previewCache.data=l,o},set:function(e,a,n,r){var o,l,s=i.previewCache.data;if(e&&e.length&&(t.isArray(e)||(e=e.split(i.initialPreviewDelimiter)),l=e.filter(function(e){return null!==e}),l.length)){if(void 0===s.content&&(s.content=[]),void 0===s.config&&(s.config=[]),void 0===s.tags&&(s.tags=[]),r){for(o=0;ot;t++)a+=i.previewCache.get(t);return e=i._getMsgSelected(n),{content:a,caption:e}},footer:function(e,a,n){var r=i.previewCache.data||{};if(t.isEmpty(r.content))return"";(t.isEmpty(r.config)||t.isEmpty(r.config[e]))&&(r.config[e]={}),a=void 0===a?!0:a;var o,l=r.config[e],s=t.ifSet("caption",l),d=t.ifSet("width",l,"auto"),c=t.ifSet("url",l,!1),u=t.ifSet("key",l,null),p=i.fileActionSettings,f=i.initialPreviewShowDelete||!1,m=l.downloadUrl||i.initialPreviewDownloadUrl||"",v=l.filename||l.caption||"",g=!!m,h=t.ifSet("showDelete",l,t.ifSet("showDelete",p,f)),w=t.ifSet("showDownload",l,t.ifSet("showDownload",p,g)),_=t.ifSet("showZoom",l,t.ifSet("showZoom",p,!0)),b=t.ifSet("showDrag",l,t.ifSet("showDrag",p,!0)),C=c===!1&&a;return w=w&&l.downloadUrl!==!1&&!!m,o=i._renderFileActions(!1,w,h,_,b,C,c,u,!0,m,v),i._getLayoutTemplate("footer").setTokens({progress:i._renderThumbProgress(),actions:o,caption:s,size:i._getSize(n),width:d,indicator:""})}},i.previewCache.init()},_handler:function(e,t,i){var a=this,n=a.namespace,r=t.split(" ").join(n+" ")+n;e&&e.length&&e.off(r).on(r,i)},_log:function(e){var t=this,i=t.$element.attr("id");i&&(e='"'+i+'": '+e),"undefined"!=typeof window.console.log?window.console.log(e):window.alert(e)},_validate:function(){var e=this,t="file"===e.$element.attr("type");return t||e._log('The input "type" must be set to "file" for initializing the "bootstrap-fileinput" plugin.'),t},_errorsExist:function(){var t,i=this,a=i.$errorContainer.find("li");return a.length?!0:(t=e(document.createElement("div")).html(i.$errorContainer.html()),t.find(".kv-error-close").remove(),t.find("ul").remove(),!!e.trim(t.text()).length)},_errorHandler:function(e,t){var i=this,a=e.target.error,n=function(e){i._showError(e.replace("{name}",t))};n(a.code===a.NOT_FOUND_ERR?i.msgFileNotFound:a.code===a.SECURITY_ERR?i.msgFileSecured:a.code===a.NOT_READABLE_ERR?i.msgFileNotReadable:a.code===a.ABORT_ERR?i.msgFilePreviewAborted:i.msgFilePreviewError)},_addError:function(e){var t=this,i=t.$errorContainer;e&&i.length&&(i.html(t.errorCloseButton+e),t._handler(i.find(".kv-error-close"),"click",function(){i.fadeOut("slow")}))},_resetErrors:function(e){var t=this,i=t.$errorContainer;t.isError=!1,t.$container.removeClass("has-error"),i.html(""),e?i.fadeOut("slow"):i.hide()},_showFolderError:function(e){var i,a=this,n=a.$errorContainer;e&&(i=a.msgFoldersNotAllowed.replace("{n}",e),a._addError(i),t.addCss(a.$container,"has-error"),n.fadeIn(800),a._raise("filefoldererror",[e,i]))},_showUploadError:function(e,i,a){var n=this,r=n.$errorContainer,o=a||"fileuploaderror",l=i&&i.id?'
  • '+e+"
  • ":"
  • "+e+"
  • ";return 0===r.find("ul").length?n._addError("
      "+l+"
    "):r.find("ul").append(l),r.fadeIn(800),n._raise(o,[i,e]),n.$container.removeClass("file-input-new"),t.addCss(n.$container,"has-error"),!0},_showError:function(e,i,a){var n=this,r=n.$errorContainer,o=a||"fileerror";return i=i||{},i.reader=n.reader,n._addError(e),r.fadeIn(800),n._raise(o,[i,e]),n.isAjaxUpload||n._clearFileInput(),n.$container.removeClass("file-input-new"),t.addCss(n.$container,"has-error"),n.$btnUpload.attr("disabled",!0),!0},_noFilesError:function(e){var i=this,a=i.minFileCount>1?i.filePlural:i.fileSingle,n=i.msgFilesTooLess.replace("{n}",i.minFileCount).replace("{files}",a),r=i.$errorContainer;i._addError(n),i.isError=!0,i._updateFileDetails(0),r.fadeIn(800),i._raise("fileerror",[e,n]),i._clearFileInput(),t.addCss(i.$container,"has-error")},_parseError:function(t,i,a,n){var r,o=this,l=e.trim(a+""),s=void 0!==i.responseJSON&&void 0!==i.responseJSON.error?i.responseJSON.error:i.responseText;return o.cancelling&&o.msgUploadAborted&&(l=o.msgUploadAborted),o.showAjaxErrorDetails&&s&&(s=e.trim(s.replace(/\n\s*\n/g,"\n")),r=s.length?"
    "+s+"
    ":"",l+=l?r:s),l||(l=o.msgAjaxError.replace("{operation}",t)),o.cancelling=!1,n?""+n+": "+l:l},_parseFileType:function(e){var i,a,n,r,o=this,l=o.allowedPreviewTypes||[];for(r=0;r-1&&(i=t.split(".").pop(),a.previewFileIconSettings&&(n=a.previewFileIconSettings[i]||a.previewFileIconSettings[i.toLowerCase()]||null),a.previewFileExtSettings&&e.each(a.previewFileExtSettings,function(e,t){return a.previewFileIconSettings[e]&&t(i)?void(n=a.previewFileIconSettings[e]):void 0})),n},_parseFilePreviewIcon:function(e,t){var i=this,a=i._getPreviewIcon(t)||i.previewFileIcon,n=e;return n.indexOf("{previewFileIcon}")>-1&&(n=n.setTokens({previewFileIconClass:i.previewFileIconClass,previewFileIcon:a})),n},_raise:function(t,i){var a=this,n=e.Event(t);if(void 0!==i?a.$element.trigger(n,i):a.$element.trigger(n),n.isDefaultPrevented()||n.result===!1)return!1;switch(t){case"filebatchuploadcomplete":case"filebatchuploadsuccess":case"fileuploaded":case"fileclear":case"filecleared":case"filereset":case"fileerror":case"filefoldererror":case"fileuploaderror":case"filebatchuploaderror":case"filedeleteerror":case"filecustomerror":case"filesuccessremove":break;default:a.ajaxAborted||(a.ajaxAborted=n.result)}return!0},_listenFullScreen:function(e){var t,i,a=this,n=a.$modal;n&&n.length&&(t=n&&n.find(".btn-fullscreen"),i=n&&n.find(".btn-borderless"),t.length&&i.length&&(t.removeClass("active").attr("aria-pressed","false"),i.removeClass("active").attr("aria-pressed","false"),e?t.addClass("active").attr("aria-pressed","true"):i.addClass("active").attr("aria-pressed","true"),n.hasClass("file-zoom-fullscreen")?a._maximizeZoomDialog():e?a._maximizeZoomDialog():i.removeClass("active").attr("aria-pressed","false")))},_listen:function(){var i,a=this,n=a.$element,r=a.$form,o=a.$container;a._handler(n,"change",e.proxy(a._change,a)),a.showBrowse&&a._handler(a.$btnFile,"click",e.proxy(a._browse,a)),a._handler(o.find(".fileinput-remove:not([disabled])"),"click",e.proxy(a.clear,a)),a._handler(o.find(".fileinput-cancel"),"click",e.proxy(a.cancel,a)),a._initDragDrop(),a._handler(r,"reset",e.proxy(a.clear,a)),a.isAjaxUpload||a._handler(r,"submit",e.proxy(a._submitForm,a)),a._handler(a.$container.find(".fileinput-upload"),"click",e.proxy(a._uploadClick,a)),a._handler(e(window),"resize",function(){a._listenFullScreen(screen.width===window.innerWidth&&screen.height===window.innerHeight)}),i="webkitfullscreenchange mozfullscreenchange fullscreenchange MSFullscreenChange",a._handler(e(document),i,function(){a._listenFullScreen(t.checkFullScreen())}),a._autoFitContent(),a._initClickable()},_autoFitContent:function(){var t,i=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,a=this,n=400>i?a.previewSettingsSmall||a.defaults.previewSettingsSmall:a.previewSettings||a.defaults.previewSettings;e.each(n,function(e,i){t=".file-preview-frame .file-preview-"+e,a.$preview.find(t+".kv-preview-data,"+t+" .kv-preview-data").css(i)})},_initClickable:function(){var i,a=this;a.isClickable&&(i=a.isAjaxUpload?a.$dropZone:a.$preview.find(".file-default-preview"),t.addCss(i,"clickable"),i.attr("tabindex",-1),a._handler(i,"click",function(t){var n=e(t.target);n.parents(".file-preview-thumbnails").length&&!n.parents(".file-default-preview").length||(a.$element.trigger("click"),i.blur())}))},_initDragDrop:function(){var t=this,i=t.$dropZone;t.isAjaxUpload&&t.dropZoneEnabled&&t.showPreview&&(t._handler(i,"dragenter dragover",e.proxy(t._zoneDragEnter,t)),t._handler(i,"dragleave",e.proxy(t._zoneDragLeave,t)),t._handler(i,"drop",e.proxy(t._zoneDrop,t)),t._handler(e(document),"dragenter dragover drop",t._zoneDragDropInit))},_zoneDragDropInit:function(e){e.stopPropagation(),e.preventDefault()},_zoneDragEnter:function(i){var a=this,n=e.inArray("Files",i.originalEvent.dataTransfer.types)>-1;return a._zoneDragDropInit(i),a.isDisabled||!n?(i.originalEvent.dataTransfer.effectAllowed="none",void(i.originalEvent.dataTransfer.dropEffect="none")):void t.addCss(a.$dropZone,"file-highlighted")},_zoneDragLeave:function(e){var t=this;t._zoneDragDropInit(e),t.isDisabled||t.$dropZone.removeClass("file-highlighted")},_zoneDrop:function(e){var i=this;e.preventDefault(),i.isDisabled||t.isEmpty(e.originalEvent.dataTransfer.files)||(i._change(e,"dragdrop"),i.$dropZone.removeClass("file-highlighted"))},_uploadClick:function(e){var i,a=this,n=a.$container.find(".fileinput-upload"),r=!n.hasClass("disabled")&&t.isEmpty(n.attr("disabled"));if(!e||!e.isDefaultPrevented()){if(!a.isAjaxUpload)return void(r&&"submit"!==n.attr("type")&&(i=n.closest("form"),i.length&&i.trigger("submit"),e.preventDefault()));e.preventDefault(),r&&a.upload()}},_submitForm:function(){var e=this;return e._isFileSelectionValid()&&!e._abort({})},_clearPreview:function(){var i=this,a=i.$preview,n=i.showUploadedThumbs?i.getFrames(":not(.file-preview-success)"):i.getFrames();n.each(function(){var i=e(this);i.remove(),t.cleanZoomCache(a.find("#zoom-"+i.attr("id")))}),i.getFrames().length&&i.showPreview||i._resetUpload(),i._validateDefaultPreview()},_initSortable:function(){var i,a=this,n=a.$preview,r="."+t.SORT_CSS;window.KvSortable&&0!==n.find(r).length&&(i={handle:".drag-handle-init",dataIdAttr:"data-preview-id",scroll:!1,draggable:r,onSort:function(i){var n,r,o=i.oldIndex,l=i.newIndex;a.initialPreview=t.moveArray(a.initialPreview,o,l),a.initialPreviewConfig=t.moveArray(a.initialPreviewConfig,o,l),a.previewCache.init();for(var s=0;s