/** * First we will load all of this project's JavaScript dependencies which * includes Vue and other libraries. It is a great starting point when * building robust, powerful web applications using Vue and Laravel. */ require('./bootstrap') let url_slug = require('./url-slug') $(function () { // Remove all noscript from forms etc $('noscript').remove(); $('[data-toggle="tooltip"]').tooltip({ container: 'body' }) // auto hide flash alerts let $notifs = $('div.alert').not('.alert-important').addClass('fadeout') setTimeout(() => { $notifs.addClass('fade') setTimeout(() => { $notifs.addClass('hidden') }, 500) }, 2500) // toggle collapse when clicked outside link, without drag $('.block-collapse') .on('mousedown', (e) => { let $bc = $(e.target).closest('.block-collapse') $bc.data('mx', e.screenX); $bc.data('my', e.screenY); }) .on('mouseup', (e) => { if (e.target.nodeName === 'A') return let $bc = $(e.target).closest('.block-collapse') if (typeof $bc.data('mx') !== 'undefined') { let x0 = +$bc.data('mx'); let y0 = +$bc.data('my'); if (Math.abs(x0 - e.screenX) > 5 || Math.abs(y0 - e.screenY) > 5) { // drag } else { $(e.target).closest('.block-collapse').toggleClass('reveal') } } }) }) // auto-alias $(document).on('input keypress paste keyup', 'input[data-autoalias]', function () { const $this = $(this) const target_name = $this.data('autoalias') const delimiter = $this.data('aa-delimiter') || '_' const new_alias = url_slug($this.val(), {'delimiter': delimiter}) const $target = $(`input[name="${target_name}"]`) const lastset = $target.data('aa-last-set-val') // 1. pick up, or 2. continue if (new_alias === $target.val() || lastset === $target.val()) { $target.val(new_alias) $target.data('aa-last-set-val', new_alias) } }) window.Vue = require('vue'); Vue.component('column-editor', require('./components/ColumnEditor.vue')); Vue.component('v-icon', require('./components/Icon.vue')); const app = new Vue({ el: '#app' });