altinn-designsystem
Version:
Altinn Design system based on Pattern Lab.
1,282 lines (1,136 loc) • 41.7 kB
JavaScript
var setupTruncateLines = function() {
setTimeout(function() {
// Max two lines for all screen sizes
$('.a-js-truncate-2').truncate({
lines: 2
});
// Max two lines for screen sizes less than 768
// Intit with 3 lines instead of 2 for IE11
if (!!window.MSInputMethodContext
&& !!document.documentMode
&& window.innerWidth < 768) {
$('.a-js-truncate-2-sm-down').truncate({
lines: 3
});
} else {
$('.a-js-truncate-2-sm-down').truncate({
lines: 2
});
}
}, 1);
$(window).resize(function() {
// Max two lines for all screen sizes
$('.a-js-truncate-2').truncate('collapse');
$('.a-js-truncate-2').truncate('update');
// Max two lines for screen sizes less than 768
if (window.innerWidth < 768) {
$('.a-js-truncate-2-sm-down').truncate('collapse');
$('.a-js-truncate-2-sm-down').truncate('update');
} else {
$('.a-js-truncate-2-sm-down').truncate('expand');
}
});
$('.a-collapsePanel-body').on('shown.bs.collapse', function() {
var el = $(this).siblings('.a-collapsePanel-heading').find('.a-js-truncate-2-sm-down');
if (window.innerWidth < 768) {
el.truncate('expand');
}
});
$('.a-collapsePanel-body').on('hide.bs.collapse', function() {
var el = $(this).siblings('.a-collapsePanel-heading').find('.a-js-truncate-2-sm-down');
if (window.innerWidth < 768) {
el.truncate('collapse');
}
});
};
/* globals $ */
var popoverLocalInit = function() {
var options = {
html: true,
placement: function(context, source) {
var position = $(source).offset();
$(context).addClass($(source).attr('data-popover-class'));
if ($(source).hasClass('a-js-popoverBig')) {
return 'bottom';
}
if (position.left < 125) {
return 'right';
}
if (position.left > ($(document).width() - $(source).width() - 125)) {
return 'left';
}
return 'bottom';
},
content: function() {
if ($(this).attr('data-popover-content')) {
return $('#' + $(this).data('popover-content')).html();
}
return false;
},
template: '<div class="popover" role="popover" tabindex="0"><div class="arrow"></div><div class="popover-body"></div></div>'
};
$('[data-toggle="popover"]').popover(options);
$('.a-js-togglePopoverIcons').each(function() {
// $(this).find('i').eq(1).hide();
$(this).find('.a-js-popoverIconExpanded').hide();
});
$('.a-js-popoverIconExpanded').on('click', function() {
$('.a-js-popoverIconExpanded').hide();
$('.a-js-popoverIconInitial').show();
// $(this).hide();
// $('.a-js-popoverIconInitial').show();
});
$('.a-js-popoverIconInitial').on('click', function() {
$(this).hide();
$(this).parent().find('.a-js-popoverIconExpanded').show();
});
};
var forceFocusTriggerElement;
var popoverGlobalInit = function() {
$('[data-toggle="dropdown"]').on('click', function(e) {
if (window.innerWidth < 992) {
$('.a-dropdown-overflow-menu-right').removeClass('dropdown-menu-right');
} else {
$('.a-dropdown-overflow-menu-right').addClass('dropdown-menu-right');
}
});
$('body').on('show.bs.popover', '[data-toggle="popover"].a-js-tabable-popover', function(e) {
var triggerElement = this;
$(triggerElement).closest('.a-modal').scrollTop(0);
});
$('body').on('shown.bs.popover', '[data-toggle="popover"].a-js-tabable-popover', function(e) {
var triggerElement = this;
setTimeout(function() {
$(triggerElement).after($($(triggerElement).data('bs.popover').tip));
$(triggerElement).closest('.a-modal').one('scroll', function() {
$('[data-toggle="popover"]').popover('hide');
});
}, 0);
});
$('body').on('shown.bs.popover', '[data-toggle="popover"].a-js-popover-forceFocus', function(e) {
$('body').append($('<button class="sr-only a-js-popoverTrick">ignoreme</button>'));
forceFocusTriggerElement = this;
$(forceFocusTriggerElement).one('blur', function() {
var that = this;
if (forceFocusTriggerElement) {
$($(this).data('bs.popover').tip).find('button,input,a,textarea').filter(':visible:first').focus();
}
});
});
$('body').on('hidden.bs.popover', '[data-toggle="popover"].a-js-popover-forceFocus', function(e) {
$('body').find('.a-js-popoverTrick').remove();
});
// hides popover when the cehckbutton is checked
$('body').on('focus', '[data-toggle="popover"].sr-only', function(e) {
if ($(this).is(':checked')) {
$(this).popover('hide');
} else {
$(this).popover('show');
}
});
// show/hide popover on checkbutton change
$('body').on('change', 'a-switch[data-toggle=popover]', function() {
if ($(this).is(':checked')) {
$(this).popover('hide');
} else {
$(this).popover('show');
}
});
// Hide all existing popovers when opening a new popover
$('body').on('click', '[data-toggle="popover"]', function(e) {
$('[data-toggle="popover"]').not(this).popover('hide');
});
// Hide all existing popovers when focusing a new element
// which is not the open popover or any of its content
$('body').on('blur', '[data-toggle="popover"], .popover *', function(e) {
setTimeout(function() {
var $focused = $(':focus');
if ((($focused.length !== 0 || forceFocusTriggerElement)
&& !$focused.hasClass('popover')
&& !$focused.parents('.popover').length >= 1) || $focused.hasClass('a-js-popoverTrick')) {
if (forceFocusTriggerElement) {
$(forceFocusTriggerElement).focus();
forceFocusTriggerElement = false;
}
// disable blur when in modal to allow use of non-original scrollbar
if ($('.modal.show').length > 0) {
$('.popover-big[data-toggle="popover"]').popover('hide');
}
}
}, 0);
});
// Hide popovers when clicking on something else than the trigger element
// and the popover itself
$('body').on('click', function(e) {
if ($(e.target).data('toggle') !== 'popover'
&& $(e.target).parents('[data-toggle="popover"]').length === 0
&& $(e.target).parents('.popover.show').length === 0) {
$('[data-toggle="popover"]').popover('hide');
forceFocusTriggerElement = false;
$(this).parent().find('.a-js-popoverIconInitial').show();
$(this).parent().find('.a-js-popoverIconExpanded').hide();
}
});
function resetTranslate() {
$('.popover-big').attr('style', $('.popover-big').attr('style').replace(/translateX\(.*?\)/, 'translateX(0px)'));
}
function adjustBig() {
var modalHeight;
var padding;
if ($('.popover-big').length > 0) {
if ($('.modal.show').length > 0) {
// Add padding to make sure modal is big enough to contain popover
modalHeight = $('.modal-dialog').height() + $('.modalPage').height();
padding = ($('.popover').offset().top + $('.modal').scrollTop() + $('.popover').height() + 5) - modalHeight;
$('.modalPage').css('padding-bottom', padding + 'px');
// tranlate is somehow added by Bootstrap later when in modal??
setTimeout(resetTranslate, 0);
} else {
resetTranslate();
}
}
}
$('body').on('shown.bs.popover', '.a-js-persistPopover', function() {
$('.arrow').html('<style>.popover-big:after { left: ' + ($(this).offset().left + 10.5) + 'px !important; }</style>');
$('html, body').animate({
scrollTop: $('.a-js-persistPopover').offset().top - 50
}, 250);
adjustBig();
});
// clean up modal page fix
$('body').on('hidden.bs.popover', 'a-js-persistPopover', function(e) {
$('.modalPage').css('padding-bottom', '0px');
});
$(window).scroll(adjustBig);
$('.modal').scroll(adjustBig);
$(window).resize(adjustBig);
};
/* globals AltinnLoader:true */
AltinnLoader = {
addLoader: function($target) {
if ($target.find('.loader-container').length === 0) {
$target.prepend('<div class="loader-container"><div class="loader loader-ellipsis"></div></div>');
}
$('button.a-modal-back').attr('disabled', true);
$('button.a-modal-close').attr('disabled', true);
},
removeLoader: function($target) {
$target.find('.loader-container').remove();
$('button.a-modal-back').attr('disabled', false);
$('button.a-modal-close').attr('disabled', false);
}
};
/* globals currentRequest, popoverLocalInit, AltinnModal */
/* globals AltinnModal:true, AltinnLoader */
AltinnModal = {
closeModal: function(settings) {
$('body').removeClass('a-modal-background-error a-displayNav');
$('body').removeClass('a-modal-background-success');
$(settings.target).modal('hide');
$('body').append($('.a-stickyHelp-container'));
},
loadModal: function(settings) {
var currentRequest = $.ajax({
url: settings.url,
beforeSend: function() {
if (typeof currentRequest !== 'undefined') {
currentRequest.abort();
}
AltinnLoader.addLoader($('body'));
},
data: settings.data
}).always(function() {
}).done(function(data) {
var modalPage = $('<div/>', {
class: 'modalPage',
html: data
});
var page = $('<div/>', {
class: 'a-page a-current-page',
data: {
pageIndex: 1,
isSuccess: settings.isSuccess,
isError: settings.isError,
showModalNav: settings.showModalNav
},
html: modalPage
});
$('body').removeClass('a-modal-background-error a-displayNav');
$('body').removeClass('a-modal-background-success');
// if (navigator.userAgent.match(/iPhone|iPad|iPod/i)) {
// goToModalHeader();
// }
$(settings.target + ' .a-modal-content-target').append(page);
$(settings.target).find('.a-current-page').first().data().enableDirtyPopover = settings.enableDirtyPopover;
// Initialize with backdrop: static to prevent modal from closing when clicking outside,
// and keyboard: false to prevent ESC from closing the modal
$(settings.target).modal({
backdrop: 'static',
keyboard: false
});
$(settings.target).on('hidden.bs.modal', function() {
$(settings.target + ' .a-modal-content-target').empty();
$(settings.target).attr('aria-hidden', true);
$('#altinnModal').siblings('.row').removeClass('d-none');
});
$(settings.target).on('shown.bs.modal', function() {
$(settings.target).removeAttr('aria-hidden');
$('#altinnModal').siblings('.row').addClass('d-none');
});
popoverLocalInit();
if (settings.isError) {
$('body').addClass('a-modal-background-error');
if (settings.showModalNav) {
$('body').addClass('a-displayNav');
}
} else if (settings.isSuccess) {
$('body').addClass('a-modal-background-success');
}
AltinnLoader.removeLoader($('body'));
// causes issues in IE11 (blinking quickhelp when modal is open)
// $(settings.target).on('transitionend', function() {
// $(settings.target).append($('.a-stickyHelp-container'));
// });
});
},
nextModalPageWithContent: function(settings) {
var current;
var modalPage = $('<div/>', {
class: 'modalPage',
html: settings.content
});
var existingPages;
var newPage;
var newPageIndex;
existingPages = $(settings.target + ' :data(page-index)');
if (settings.clearHistory) {
newPageIndex = 1;
} else {
newPageIndex = existingPages.length + 1;
}
if (settings.clearHistory) {
$(settings.target + ' :data(page-index)').not('.a-current-page').remove();
}
newPage = $('<div/>', {
class: 'a-page a-next-page',
data: {
pageIndex: newPageIndex,
isSuccess: settings.isSuccess,
isError: settings.isError,
showModalNav: settings.showModalNav
},
html: modalPage
});
// if (navigator.userAgent.match(/iPhone|iPad|iPod/i)) {
// goToModalHeader();
// }
$(settings.target + ' .a-modal-content-target').append(newPage);
$(settings.target).animate({
scrollTop: 0
}, 20);
current = $(settings.target + ' .a-current-page');
setTimeout(function() {
$('body').removeClass('a-modal-background-error a-displayNav');
$('body').removeClass('a-modal-background-success');
current.removeClass('a-current-page').addClass('a-previous-page');
newPage.removeClass('a-next-page').addClass('a-current-page');
$(newPage).data().enableDirtyPopover = settings.enableDirtyPopover;
if (settings.isError) {
$('body').addClass('a-modal-background-error');
if (settings.showModalNav) {
$('body').addClass('a-displayNav');
}
} else if (settings.isSuccess) {
$('body').addClass('a-modal-background-success');
}
}, 0);
current.on('transitionend', function() {
if (settings.clearHistory) {
$(settings.target + ' :data(page-index)').not('.a-current-page').remove();
} else {
current.hide().off();
}
});
popoverLocalInit();
},
nextModalPage: function(settings) {
var currentRequest = $.ajax({
url: settings.url,
beforeSend: function() {
if (typeof currentRequest !== 'undefined') {
currentRequest.abort();
}
AltinnLoader.addLoader($(settings.target).find('.a-current-page .a-modal-body'));
},
data: settings.data
}).always(function() {
}).done(function(data) {
var current;
var modalPage = $('<div/>', {
class: 'modalPage',
html: data
});
var existingPages;
var newPage;
var newPageIndex;
existingPages = $(settings.target + ' :data(page-index)');
if (settings.clearHistory) {
newPageIndex = 1;
} else {
newPageIndex = existingPages.length + 1;
}
if (settings.clearHistory) {
$(settings.target + ' :data(page-index)').not('.a-current-page').remove();
}
newPage = $('<div/>', {
class: 'a-page a-next-page',
data: {
pageIndex: newPageIndex,
isSuccess: settings.isSuccess,
isError: settings.isError,
showModalNav: settings.showModalNav
},
html: modalPage
});
// if (navigator.userAgent.match(/iPhone|iPad|iPod/i)) {
// goToModalHeader();
// }
$(settings.target + ' .a-modal-content-target').append(newPage);
$(settings.target).animate({
scrollTop: 0
}, 20);
current = $(settings.target + ' .a-current-page');
setTimeout(function() {
$('body').removeClass('a-modal-background-error a-displayNav');
$('body').removeClass('a-modal-background-success');
current.removeClass('a-current-page').addClass('a-previous-page');
newPage.removeClass('a-next-page').addClass('a-current-page');
$(newPage).data().enableDirtyPopover = settings.enableDirtyPopover;
if (settings.isError) {
$('body').addClass('a-modal-background-error');
if (settings.showModalNav) {
$('body').addClass('a-displayNav');
}
} else if (settings.isSuccess) {
$('body').addClass('a-modal-background-success');
}
}, 0);
current.on('transitionend', function() {
if (settings.clearHistory) {
$(settings.target + ' :data(page-index)').not('.a-current-page').remove();
} else {
current.hide().off();
}
AltinnLoader.removeLoader(current.find('.a-modal-body'));
});
popoverLocalInit();
});
},
previousModalPage: function(settings) {
var current;
var allPages;
var previous;
var pagesToPop;
var isError;
var showModalNav;
var isSuccess;
if (!settings.pagesToPop) {
pagesToPop = 1;
} else {
pagesToPop = settings.pagesToPop;
}
if ($(settings.target + ' .a-current-page').data('page-index') - pagesToPop <= 0) {
$(settings.target).one('hidden.bs.modal', function() {
$('body').removeClass('a-modal-background-error a-displayNav');
$('body').removeClass('a-modal-background-success');
});
$(settings.target).modal('hide');
return;
}
current = $(settings.target + ' .a-current-page');
allPages = $(settings.target + ' :data(page-index)');
previous = allPages.filter(function() {
return $(this).data('page-index') === allPages.length - 1;
});
previous.show();
isError = $(previous).data().isError;
showModalNav = $(previous).data().showModalNav;
isSuccess = $(previous).data().isSuccess;
current.addClass('a-next-page');
current.removeClass('a-current-page');
// if (navigator.userAgent.match(/iPhone|iPad|iPod/i)) {
// goToModalHeader();
// }
setTimeout(function() {
$('body').removeClass('a-modal-background-error a-displayNav');
$('body').removeClass('a-modal-background-success');
previous.addClass('a-current-page').removeClass('a-previous-page');
if (isError) {
$('body').addClass('a-modal-background-error');
if (showModalNav) {
$('body').addClass('a-displayNav');
}
} else if (isSuccess) {
$('body').addClass('a-modal-background-success');
}
}, 0);
current.on('transitionend', function() {
var previousPages = allPages.filter(function() {
return $(this).data('page-index') > allPages.length - pagesToPop;
});
previousPages.remove();
});
},
setCurrentPageIsDirty: function(target, state) {
$(target).find('.a-current-page').first().data().isDirty = state;
},
init: function() {
var that = this;
$('body').on('click', '[data-toggle="altinn-modal"]', function() {
var $source = $(this);
if ($source.data().action === 'load') {
that.loadModal({
url: $source.data().url,
target: $source.data().target,
enableDirtyPopover: $source.data().enableDirtyPopover
});
} else if ($source.data().action === 'next') {
that.nextModalPage({ url: $source.data().url,
target: $source.data().target,
isSuccess: $source.data().isSuccess,
isError: $source.data().isError,
showModalNav: $source.data().showModalNav,
clearHistory: $source.data().clearHistory,
enableDirtyPopover: $source.data().enableDirtyPopover });
} else if ($source.data().action === 'back') {
that.previousModalPage({
target: $source.data().target,
pagesToPop: $source.data().pages
});
} else if ($source.data().action === 'close') {
that.closeModal({ target: $source.data().target });
}
});
$('body').on('click', '.a-modal-back', function() {
var $modal = $(this).closest('.a-modal');
if ($modal.find('.a-current-page').first().data().enableDirtyPopover
&& $modal.find('.a-current-page').first().data().isDirty) {
$(this).popover('show');
} else {
that.previousModalPage({ target: '#' + $modal[0].id });
}
});
$('body').on('click', '.a-modal-close', function() {
var $modal = $(this).closest('.a-modal');
if ($modal.find('.a-current-page').first().data().enableDirtyPopover
&& $modal.find('.a-current-page').first().data().isDirty) {
$(this).popover('show');
} else {
that.closeModal({ target: '#' + $modal[0].id });
}
});
$('body').on('click', '.a-js-modal-dirtyBackBtn', function() {
AltinnModal.previousModalPage({ target: '#' + $(this).closest('.a-modal')[0].id });
$('button[aria-describedby=' + $(this).parent().parent().attr('id') + ']').popover('hide');
});
$('body').on('click', '.a-js-modal-dirtyCancelBtn', function() {
$('button[aria-describedby=' + $(this).parent().parent().attr('id') + ']').popover('hide');
});
$('body').on('click', '.a-js-modal-dirtyCloseBtn', function() {
AltinnModal.closeModal({ target: '#' + $(this).closest('.a-modal')[0].id });
$('button[aria-describedby=' + $(this).parent().parent().attr('id') + ']').popover('hide');
});
function urlQuery(query) { // Parse current URL for query value
var _query = query.replace(/[[]/, '[').replace(/[\]]/, '\\]');
var expr = '[\\?&]' + _query + '=([^&#]*)';
var regex = new RegExp(expr);
var results = regex.exec(window.location.href);
if (results !== null) {
return results[1];
}
return false;
}
if (urlQuery('form') === '1') {
AltinnModal.loadModal({
url: '/hjelp/kontaktskjema-for-hjelp/',
target: '#modal'
});
}
}
};
/* globals $ */
var feedbackToggle = function() {
if ($('.a-js-feedbackToggle').length > 0) {
$('.a-js-feedbackToggle').closest('fieldset').next().hide();
$('.a-js-feedbackToggle').closest('fieldset').next().next()
.hide();
$('.a-js-feedbackToggle').closest('fieldset').next().next()
.next()
.hide();
$('.a-js-feedbackToggle').each(function() {
$(this).find('input[type=radio]').change(function() {
if ($(this).val() === 'radio1' && $(this).is(':checked')) {
$(this).closest('fieldset').next().show();
$(this).closest('fieldset').next().next()
.hide();
$(this).closest('fieldset').next().next()
.next()
.hide();
} else if ($(this).val() === 'radio2' && $(this).is(':checked')) {
$(this).closest('fieldset').next().hide();
$(this).closest('fieldset').next().next()
.show();
$(this).closest('fieldset').next().next()
.next()
.show();
}
});
$(this).closest('form').find('button').on('click', function() {
$(this).closest('fieldset').next().show();
$(this).closest('fieldset').next().next()
.hide();
$(this).closest('fieldset').next().next()
.next()
.hide();
}.bind(this));
});
}
};
/* globals compareTo */
var sortListAlphanumerically = function(src, sortIndex) {
var $list = $(src).closest('.a-list-container').find('.a-list');
var rows = $list.find('li:not(.a-list-header)');
var reverse;
var active = $(src).hasClass('a-active');
if (!active) {
$(src).closest('.a-list-container').find('.a-list-sortHeader').removeClass('a-active')
.removeClass('a-js-reverse-sort');
$(src).addClass('a-active');
} else {
$(src).toggleClass('a-js-reverse-sort');
}
reverse = $(src).hasClass('a-js-reverse-sort');
rows.sort(function(a, b) {
var A = $($($($(a).children()[0]).children()[sortIndex]).find('.a-js-sortValue')[0]).text()
.toUpperCase();
var B = $($($($(b).children()[0]).children()[sortIndex]).find('.a-js-sortValue')[0]).text()
.toUpperCase();
return reverse ? compareTo(B, A) : compareTo(A, B);
});
$.each(rows, function(index, row) {
if ($(row).find('.a-js-sortValue').length > 0) {
$list.append(row);
}
});
// handles load more row
$.each(rows, function(index, row) {
if ($(row).find('.a-js-sortValue').length === 0) {
$list.append(row);
}
});
};
var defaultListSort = function() {
$('.a-list-container').each(function() {
var sortHeader = $(this).find('.a-list-sortHeader')[0];
var index = $(sortHeader).index();
sortListAlphanumerically(sortHeader, index);
});
};
var addListSortHandler = function() {
$('.a-list-sortHeader').on('click', function() {
var index = $(this).index();
sortListAlphanumerically(this, index);
});
defaultListSort();
};
var compareTo = function(firstItem, secondItem) {
var first;
var second;
if (firstItem === undefined && secondItem === undefined) {
return 0;
}
if (firstItem === undefined) {
return 1;
}
if (secondItem === undefined) {
return -1;
}
first = firstItem.toString();
second = secondItem.toString();
if (first < second) {
return -1;
}
if (first > second) {
return 1;
}
return 0;
};
/* globals $ */
var handleFocus = function() {
// If state on input is 'focus', add class to a-input: 'a-input-focus'
$('body').on('focus', 'input.form-control', function() {
$(this).parent().addClass('a-input-focus');
});
$('body').on('blur', 'input.form-control', function() {
$(this).parent().removeClass('a-input-focus');
});
$('.a-radioButtons-stackedList').find('input[type=radio]').change(function() {
var me = $(this);
if (me.is(':checked')) {
me.parent().addClass('a-js-radioParentGray');
$('input[type=radio]').each(function() {
if ($(this).attr('id') !== me.attr('id') &&
$(this).attr('name') === me.attr('name')) {
$(this).parent().removeClass('a-js-radioParentGray');
}
});
}
});
};
var addListExpandHandler = function() {
$('body').on('click', '.a-list *[data-toggle="collapse"]', function() {
// This script runs before the bootstrap collapse handler, so the collapsed-class will still be
// present even though the content is about to be expanded
if ($(this).hasClass('collapsed')) {
$(this).closest('li').addClass('a-expanded');
$(this).closest('li').siblings().removeClass('a-expanded');
} else {
$(this).closest('li').removeClass('a-expanded');
}
});
};
/* globals $ */
var newsArchive = function() {
var page = 1;
var numberOfItemsPerPage = 5;
var rootSelector = '.a-newsArchive';
var articleCssSelector = '.a-linkArticle';
var $loadMoreButton = $('.a-btn-loadMore');
var articlesCount = $(articleCssSelector).length;
function visibleItems() {
return page * numberOfItemsPerPage;
}
function setButtonVisibility() {
if (articlesCount <= visibleItems()) {
$loadMoreButton.hide();
}
}
if ($(rootSelector).length > 0) {
$loadMoreButton.on('click', function() {
var articles;
page += 1;
$(':nth-child(n+' + (visibleItems() + 1) + ')' + articleCssSelector).hide();
$(':nth-child(-n+' + visibleItems() + ')' + articleCssSelector).show();
setButtonVisibility();
});
setButtonVisibility();
}
};
/* globals mobileNavigation */
$('.an-dropdown-navigationMenu').on('click', 'button[data-toggle="collapse"]', function(event) {
event.preventDefault();
event.stopPropagation();
$($(this).data('target')).collapse('toggle');
});
/* globals $ */
var subscribe = function() {
var validate = function(elem, skipVal) {
var re = new RegExp(elem.attr('data-val-regex-pattern'));
if (re.test(elem.val())) {
elem.closest('.a-card').find('button').removeAttr('disabled')
.removeClass('disabled');
} else {
elem.closest('.a-card').find('button').attr('disabled', 'disabled')
.addClass('disabled');
}
};
if ($('.a-js-subscribe').length > 0) {
$('.a-js-subscribe').each(function() {
var _this = $(this);
_this.closest('.a-card').find('.a-js-finishText').hide();
_this.closest('.a-card').find('.a-js-altText').hide();
_this.find('input').on('input', function() {
validate($(this));
});
_this.find('input').on('keypress', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode === 13) {
e.preventDefault();
if (!_this.find('button').hasClass('disabled')) {
_this.find('button').trigger('click');
}
}
});
_this.find('button').on('click', function() {
var __this = $(this);
_this.find('.a-form-group-items.input-group').addClass('disabled')
.addClass('a-input-approved');
_this.find('input').attr('disabled', 'disabled');
_this.closest('.a-card').find('.a-js-finishText').show();
_this.closest('.a-card').find('.a-js-altText').hide();
__this.hide();
$('.a-js-undo').on('click', function() {
_this.find('.a-form-group-items.input-group').removeClass('disabled')
.removeClass('a-input-approved');
_this.find('input').removeAttr('disabled');
_this.closest('.a-card').find('.a-js-finishText').hide();
_this.closest('.a-card').find('.a-js-altText').show();
__this.show();
});
});
});
}
};
/* globals
setupExpandContent
*/
$('body').on('show.bs.collapse', '.a-collapsePanel-body', function(e) {
var that = this;
if ($(e.target).hasClass('a-collapsePanel-body')) {
setTimeout(function() {
var $collapsePanelHeader = $(that).siblings('.a-js-index-heading').first();
var $msgIconWrapper = $collapsePanelHeader.find('.a-inboxHeadingContent')
.find('.a-msgIconSecondary')
.closest('.a-msgIconWrapper');
$msgIconWrapper.find('.reg')
.hide()
.siblings('.a-msgIconSecondary')
.show();
$msgIconWrapper.find('span').attr('aria-hidden', true);
$msgIconWrapper.find('span:last-of-type').removeAttr('aria-hidden');
$('.a-collapsePanel').removeClass('expanded');
$(that).closest('.a-collapsePanel').addClass('expanded');
$('.a-js-index-heading').addClass('dim');
$('.a-collapsePanel.expanded').find('.a-js-index-heading').removeClass('dim');
setupExpandContent();
}, 0);
}
});
$('body').on('hide.bs.collapse', '.a-collapsePanel-body', function(e) {
var that = this;
if ($(e.target).hasClass('a-collapsePanel-body')) {
setTimeout(function() {
var $collapsePanelHeader = $(that).siblings('.a-js-index-heading').first();
$collapsePanelHeader.find('.a-inboxHeadingContent').removeClass('a-msgUnread');
$(that).closest('.a-collapsePanel').removeClass('expanded');
if ($('.a-collapsePanel.expanded').length === 0) {
$('.a-js-index-heading').removeClass('dim');
} else {
$collapsePanelHeader.addClass('dim');
}
}, 0);
}
});
$('.a-js-collapseInboxMessage').click(function() {
$('div.card.a-accordion-card.a-collapsePanel.expanded a[data-toggle="collapse"]').click();
});
/* globals $ */
var questionnaireInteraction = function() {
$('.a-trigger-question').each(function() {
$(this).find('input').on('change', function() {
$(this).parent().parent().parent()
.parent()
.next()
.css('display', 'block');
});
});
};
/* globals $ */
var initializeDatepicker = function() {
var today = ('0' + new Date().getDate()).slice(-2) + '.' + ('0' + (new Date().getMonth() + 1)).slice(-2) + '.' + new Date().getFullYear();
var returnUserLanguageNumericCodeFromCookie = function(cookies, cname) {
var name = cname + '=';
var decodedCookies = decodeURIComponent(cookies);
var splitCookies = decodedCookies.split(';');
var i;
var c;
for (i = 0; i < splitCookies.length; i++) {
c = splitCookies[i];
if (c.charAt(0) === ' ') {
c = c.substring(1);
}
if (c.indexOf(name) === 0 && c.indexOf('UL') > 0) {
return c.substring(c.indexOf('UL') + 3);
}
}
return null;
};
var returnLanguageCodeFromNumericCode = function(numeric) {
var lang;
switch (numeric) {
// bokmål
case '1044':
return 'no';
// engelsk
case '1033':
return 'en';
// nynorsk
case '2068':
return 'nn';
default:
return 'no';
}
};
var ulNumeric = returnUserLanguageNumericCodeFromCookie(document.cookie, 'altinnPersistentContext');
var userLanguage = returnLanguageCodeFromNumericCode(ulNumeric);
if ($('.a-overlay-container').length > 0) {
$('.a-overlay-container').attr('id', 'picker-container');
} else {
$('body').attr('id', 'picker-container');
}
$('.form-control.date').each(function() {
$(this).val($(this).val() || today);
});
$('.form-control.date').datepicker({
format: 'dd.mm.yyyy',
language: userLanguage,
todayHighlight: true,
orientation: 'bottom left',
autoclose: true,
maxViewMode: 0,
container: '#picker-container',
templates: {
leftArrow: '<i class="ai ai-back"></i>',
rightArrow: '<i class="ai ai-arrowright"></i>'
}
}).on('show', function(e) {
$('.datepicker').find('table').attr('cellpadding', '0');
$('.datepicker').find('table').attr('cellspacing', '0');
});
if ($('.form-control.date').length > 0) {
$('body').on('click', function(e) {
$('.datepicker').hide();
});
$('.form-control.date').on('click', function(e) {
e.stopPropagation(); e.preventDefault();
});
$('.datepicker').on('click', function(e) {
e.stopPropagation(); e.preventDefault();
});
}
};
var setValidatorSettings = function() {
var defaultOptions = {
highlight: function(element, errorClass, validClass) {
$(element).closest('.form-group').addClass(errorClass);
},
unhighlight: function(element, errorClass, validClass) {
$(element).closest('.form-group').removeClass(errorClass);
},
focusInvalid: false
};
$.validator.setDefaults(defaultOptions);
$.validator.unobtrusive.options = {
errorClass: 'has-error'
};
};
/* globals $ */
function setupFormValidation(formId, buttonId) {
var $submitBtn = $(buttonId);
var wasSubmitted = false;
var storedString = '';
var validDropdown = function(el) {
if (
el.attr('required') !== undefined && el.attr('required') === 'required' &&
el.attr('data-dropdowndefaultvalue') === el.find('.a-form-text').text()
) {
el.closest('.a-form-group').addClass('has-error').find('.a-message-error').css('display', 'table');
} else {
el.closest('.a-form-group').removeClass('has-error').find('.a-message-error').css('display', 'none');
}
};
var validAllDropdowns = function() {
var invalids = [];
$('.a-js-dropdownToValidate').each(function(index, el) {
if (
$(el).attr('required') !== undefined && $(el).attr('required') === 'required' &&
$(el).attr('data-dropdowndefaultvalue') === $(el).find('.a-form-text').text()
) {
invalids.push(index);
}
});
return invalids.length === 0;
};
var validAllReferancials = function() {
var invalids = [];
$('.a-js-validateThisAgainstPrev').each(function(index, el) {
if (
$(el).closest('.a-form-group').hasClass('has-error')
) {
invalids.push(index);
}
});
return invalids.length === 0;
};
var validateBackwards = function(el) {
if (el.prev().find('.a-js-dropdownToValidate').length > 0) {
validDropdown(el.prev().find('.a-js-dropdownToValidate'));
validateBackwards(el.prev());
} else if (el.prev().hasClass('form-group')) {
if (el.prev().find('input:not(.a-js-validateThisAgainstPrev)').length > 0) {
el.prev().find('input:not(.a-js-validateThisAgainstPrev)').valid();
}
if (el.prev().find('.a-js-validateThisAgainstPrev').length > 0) {
el.prev().find('.a-js-validateThisAgainstPrev').trigger('change');
}
if (el.prev().find('textarea').length > 0) {
el.prev().find('textarea').valid();
}
validateBackwards(el.prev());
}
};
var validateAgainstPrev = function() {
if ($(this).closest('.form-group').prev().find('.a-message-error')
.text() !== '') {
$(this).closest('.form-group').find('.a-message-error').text(
$(this).closest('.form-group').prev().find('.a-message-error')
.text()
);
storedString = $(this).closest('.form-group').prev().find('.a-message-error')
.text();
} else {
$(this).closest('.form-group').find('.a-message-error').text(
storedString
);
}
if ($(this).val() !==
$(this).closest('.form-group').prev().find('input')
.val() || $(this).val() === '') {
setTimeout(function() {
$(this).closest('.a-form-group').addClass('has-error').find('.a-message-error')
.css('display', 'table');
}.bind(this), 0);
} else {
$(this).closest('.a-form-group').removeClass('has-error').find('.a-message-error')
.css('display', 'none');
}
};
var validateForm = function() {
var str;
if ($(formId).validate().checkForm() && validAllDropdowns() && validAllReferancials()) {
$submitBtn.prop('disabled', false);
$submitBtn.removeClass('disabled');
} else {
$submitBtn.prop('disabled', 'disabled');
$submitBtn.addClass('disabled');
}
if (!wasSubmitted) {
$(formId).validate().submitted = {};
}
};
$(formId + ' .a-js-dropdownToValidate').each(function() {
$(this).attr('data-dropdowndefaultvalue', $(this).find('.a-form-text').text());
});
if (!buttonId) {
$submitBtn = $(formId + ' button[type="submit"]');
}
$.validator.unobtrusive.parse($(formId));
$submitBtn.addClass('disabled');
$submitBtn.prop('disabled', 'disabled');
$(formId).on('blur input change', '*', validateForm);
$(formId + ' .a-js-dropdownToValidate').next().on('click', function() {
setTimeout(function() {
validDropdown($(this).prev());
}.bind(this), 0);
validateBackwards($(this).closest('.form-group'));
});
$(formId + ' .a-js-dropdownToValidate').on('blur', function() {
validDropdown($(this));
validateBackwards($(this).closest('.form-group'));
});
$('.a-js-certificateContainer').on('focus', function() {
$('.a-js-certificateContainer').closest('label').addClass('a-custom-fileupload--focused');
});
$('.a-js-certificateContainer').on('blur', function() {
$('.a-js-certificateContainer').closest('label').removeClass('a-custom-fileupload--focused');
});
$('.a-js-validateThisAgainstPrev').each(function() {
storedString = $(this).closest('.form-group').prev().find('input')
.attr('data-val-regex');
});
$(formId + ' .form-control').not('.a-js-validateThisAgainstPrev').on('blur change', function() {
var $nextInput = $('#text-input-epost1').closest('.form-group').next().find('.a-js-validateThisAgainstPrev');
if ($nextInput.length > 0 && $nextInput.val() !== '') {
validateAgainstPrev.bind($nextInput)();
setTimeout(function() {
validateForm();
}, 0);
}
});
$('.a-js-validateThisAgainstPrev').on('keyup', function(e) {
var hasError = $(this).closest('.form-group').hasClass('has-error');
e.stopPropagation();
if (hasError) {
validateAgainstPrev.bind(this)();
}
});
$('.a-js-validateThisAgainstPrev').on('change blur', function(e) {
e.stopPropagation();
validateAgainstPrev.bind(this)();
});
}
var setupSlickCarousel = function() {
if ($('.an-slideshow').length) {
$(document).ready(function() {
$('.an-slideshow__list').slick({
infinite: false
});
$('.slick-prev').css('display', 'none');
$('.slick-arrow').click(function() {
$('.slick-prev').removeAttr('style');
if (Number($('.slick-current').attr('data-slick-index')) === 0) {
$('.slick-prev').css('display', 'none');
}
if ($('.slick-slide').length - 1 === Number($('.slick-current').attr('data-slick-index'))) {
$('.slick-next').css('display', 'none');
} else {
$('.slick-next').removeAttr('style');
}
}
);
});
}
};
/* globals
AltinnModal
feedbackToggle
handleFocus
addListExpandHandler
initializeDatepicker
setupTruncateLines
newsArchive
menuToggleEffectAltinnett
popoverGlobalInit
popoverLocalInit
subscribe
togglePanel
questionnaireInteraction
setupFormValidation
setValidatorSettings
setupSlickCarousel
*/
window.altinnettInit = function() {
AltinnModal.init();
feedbackToggle();
handleFocus();
addListExpandHandler();
initializeDatepicker();
setupTruncateLines();
newsArchive();
menuToggleEffectAltinnett();
popoverGlobalInit();
popoverLocalInit();
subscribe();
togglePanel();
questionnaireInteraction();
setupFormValidation();
setValidatorSettings();
function setupForm() {
$('body').off('focus', '#contactForm', setupForm);
setupFormValidation('#contactForm', '#a-js-contactForm-submit');
}
$('body').on('focus', '#contactForm', setupForm);
setupSlickCarousel();
};
window.altinnettInit();
//# sourceMappingURL=maps/altinnett.js.map