window.set_disabled_observer = (element, trigger) -> observer = new MutationObserver (mutations) -> mutations.forEach (mutation)-> if mutation.attributeName == "disabled" trigger(); observer.observe(element, {attributes: true}) observer window.eGovUtilities = setup: ()-> # select2 defaults $.fn.select2.defaults.set( "theme", "bootstrap" ) # datepicker defaults $.extend $.fn.datetimepicker.defaults.icons, { time: 'fa fa-clock-o', date: 'fa fa-calendar', up: 'fa fa-chevron-up', down: 'fa fa-chevron-down', previous: 'fa fa-chevron-left', next: 'fa fa-chevron-right', today: 'fa fa-calendar-check-o', clear: 'fa fa-trash-o', close: 'fa fa-close' } $(document).on 'change', '.custom-file-input:file', ()-> $input = $(this) numFiles = if this.files then this.files.length else 1 label = $input.val().replace(/\\/g, '/').replace(/.*\//, '') $input.trigger('fileselect', [numFiles, label]) $input.parent().find('.custom-file-control').text(label); initPage: ($container)-> $container ||= $(document) eGovUtilities.initDatepickers($container) eGovUtilities.initSelect2($container) eGovUtilities.initFileFields($container) eGovUtilities.initPeople($container) clearBeforeCache: ($container)-> $container ||= $(document) eGovUtilities.destroySelect2($container) initFileFields: ($container)-> $('.custom-file-input:file').each ()-> $input = $(this) label = $input.val().replace(/\\/g, '/').replace(/.*\//, '') $input.parent().find('.custom-file-control').text(label); initDatepickers: ($container)-> $container ||= $(document) if !Modernizr.inputtypes.date pickers = $('[type="date"][data-provide="datepicker"]', $container) pickers.parent().datetimepicker() if !Modernizr.inputtypes.datetime pickers = $('[type="datetime"][data-provide="datepicker"]', $container) pickers.parent().datetimepicker() if !Modernizr.inputtypes['datetime-local'] pickers = $('[type="datetime-local"][data-provide="datepicker"]', $container) pickers.parent().datetimepicker() initPeople: ($container)-> $container ||= $(document) $type_toggles = $('.person-form .person-type-toggle', $container) $type_toggles.on('change', (evt)-> val = $(this).val(); $form = $(this).closest('.person-form'); $form.find('.natural_person').toggle( val == 'natural').find(':input').prop('disabled', val != 'natural'); $form.find('.legal_person').toggle( val == 'legal').find(':input').prop('disabled', val != 'legal'); ) $type_toggles.each (index)-> $el = $(this) $el.change() if $el.is(':visible') initSelect2: ($container)-> $container ||= $(document) $('[data-provide="select2"]', $container).select2(width: null) destroySelect2: ($container)-> $container ||= $(document) $('[data-provide="select2"]', $container).select2('destroy') addCopyToClipboardLink: ($node)-> $cpyBtn = $('').insertAfter($node) clipboard = new Clipboard($cpyBtn.get(0)); # clipboard.on('success', (e)-> # console.info('Action:', e.action); # console.info('Text:', e.text); # console.info('Trigger:', e.trigger); # ) # clipboard.on('error', (e)-> # console.error('Action:', e.action); # console.error('Trigger:', e.trigger); # ) $cpyBtn toggleContainerForm: ($container, toggle_state) -> $container.toggle(toggle_state) $container.find(':input').prop('disabled', !toggle_state) toggableForm: ($toggler, attr_names, get_state) -> get_state ||= ($toggler)-> input_type = $toggler.attr('type') state = !$toggler.prop('disabled') if input_type == 'checkbox' state = state && $toggler.is(':checked') else state = state && !$toggler.val() && $toggler.val() != '' return state $attributes = $toggler.closest('.'+attr_names).find('.'+attr_names+'-attributes') eGovUtilities.toggleContainerForm($attributes, get_state($toggler)) $toggler.on 'change', (evt) -> eGovUtilities.toggleContainerForm($attributes, get_state($toggler)) initModal: (modalId, options)-> options = options || {} modalId = modalId || 'modal' $modal = $('#'+modalId) if $modal.length != 1 $modal = $('