| 1 |
(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory():typeof define==="function"&&define.amd?define(factory):(global=global||self,global.bsCustomFileInput=factory())})(this,function(){"use strict";var Selector={CUSTOMFILE:'.custom-file input[type="file"]',CUSTOMFILELABEL:".custom-file-label",FORM:"form",INPUT:"input"};var textNodeType=3;var getDefaultText=function getDefaultText(input){var defaultText="";var label=input.parentNode.querySelector(Selector.CUSTOMFILELABEL);if(label){defaultText=label.innerHTML}return defaultText};var findFirstChildNode=function findFirstChildNode(element){if(element.childNodes.length>0){var childNodes=[].slice.call(element.childNodes);for(var i=0;i<childNodes.length;i++){var node=childNodes[i];if(node.nodeType!==textNodeType){return node}}}return element};var restoreDefaultText=function restoreDefaultText(input){var defaultText=input.bsCustomFileInput.defaultText;var label=input.parentNode.querySelector(Selector.CUSTOMFILELABEL);if(label){var element=findFirstChildNode(label);element.innerHTML=defaultText}};var fileApi=!!window.File;var FAKE_PATH="fakepath";var FAKE_PATH_SEPARATOR="\\";var getSelectedFiles=function getSelectedFiles(input){if(input.hasAttribute("multiple")&&fileApi){return[].slice.call(input.files).map(function(file){return file.name}).join(", ")}if(input.value.indexOf(FAKE_PATH)!==-1){var splittedValue=input.value.split(FAKE_PATH_SEPARATOR);return splittedValue[splittedValue.length-1]}return input.value};function handleInputChange(){var label=this.parentNode.querySelector(Selector.CUSTOMFILELABEL);if(label){var element=findFirstChildNode(label);var inputValue=getSelectedFiles(this);if(inputValue.length){element.innerHTML=inputValue}else{restoreDefaultText(this)}}}function handleFormReset(){var customFileList=[].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function(input){return!!input.bsCustomFileInput});for(var i=0,len=customFileList.length;i<len;i++){restoreDefaultText(customFileList[i])}}var customProperty="bsCustomFileInput";var Event={FORMRESET:"reset",INPUTCHANGE:"change"};var bsCustomFileInput={init:function init(inputSelector,formSelector){if(inputSelector===void 0){inputSelector=Selector.CUSTOMFILE}if(formSelector===void 0){formSelector=Selector.FORM}var customFileInputList=[].slice.call(document.querySelectorAll(inputSelector));var formList=[].slice.call(document.querySelectorAll(formSelector));for(var i=0,len=customFileInputList.length;i<len;i++){var input=customFileInputList[i];Object.defineProperty(input,customProperty,{value:{defaultText:getDefaultText(input)},writable:true});handleInputChange.call(input);input.addEventListener(Event.INPUTCHANGE,handleInputChange)}for(var _i=0,_len=formList.length;_i<_len;_i++){formList[_i].addEventListener(Event.FORMRESET,handleFormReset);Object.defineProperty(formList[_i],customProperty,{value:true,writable:true})}},destroy:function destroy(){var formList=[].slice.call(document.querySelectorAll(Selector.FORM)).filter(function(form){return!!form.bsCustomFileInput});var customFileInputList=[].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function(input){return!!input.bsCustomFileInput});for(var i=0,len=customFileInputList.length;i<len;i++){var input=customFileInputList[i];restoreDefaultText(input);input[customProperty]=undefined;input.removeEventListener(Event.INPUTCHANGE,handleInputChange)}for(var _i2=0,_len2=formList.length;_i2<_len2;_i2++){formList[_i2].removeEventListener(Event.FORMRESET,handleFormReset);formList[_i2][customProperty]=undefined}}};return bsCustomFileInput}); |