/*! * bsCustomFileInput v1.3.2 (https://github.com/Johann-S/bs-custom-file-input) * Copyright 2018 - 2019 Johann-S * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE) */ (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; })); //# sourceMappingURL=bs-custom-file-input.js.map document.addEventListener("DOMContentLoaded", function () { bsCustomFileInput.init() });