UNPKG

@gitlab/ui

Version:
95 lines (81 loc) 2.66 kB
import Toasted from '@gitlab/vue-toasted'; import iconsPath from '@gitlab/svgs/dist/icons.svg'; function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } var DEFAULT_OPTIONS = { action: { text: null, icon: function icon() { var icon = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); var path = document.createElementNS('http://www.w3.org/2000/svg', 'use'); icon.appendChild(path); icon.setAttribute('class', 'gl-icon s14'); path.setAttribute('href', "".concat(iconsPath, "#close")); return icon; }, class: 'toast-close', onClick: function onClick(e, toastObject) { return toastObject.goAway(0); } }, iconPack: 'callback', position: 'bottom-left', duration: 5000, singleton: true, className: 'gl-toast', keepOnHover: true }; /** * Note: This is not a typical Vue component and needs to be registered before instantiating a Vue app. * Once registered, the toast will be globally available throughout your app. * * See https://gitlab-org.gitlab.io/gitlab-ui/ for detailed documentation. */ var toast = { install: function install(Vue) { var _this = this; /* eslint-disable no-param-reassign */ Vue.use(Toasted, DEFAULT_OPTIONS); Vue.prototype.$toast = { show: function show(message) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return Vue.toasted.show("<span>".concat(message, "</span>"), _this.generateOptions(options)); } }; }, generateOptions: function generateOptions(options) { var updatedOptions = _objectSpread({}, DEFAULT_OPTIONS, {}, options); // ensures only one extra action can be added // ensures toasts always have a close/dismiss button if (options.action) { updatedOptions.action = [options.action, DEFAULT_OPTIONS.action]; } return updatedOptions; } }; export default toast;