{"version":3,"file":"signpost-module.js","names":["$","SignpostModule","init","this","$questionContainers","$resultsContainer","selectedAnswers","currentQuestion","not","hide","createSpinner","bindEvents","self","document","on","$btn","handleAnswerSelection","e","preventDefault","resetModule","questionId","data","answer","eq","show","submitAnswers","fadeIn","selectedAnswersText","Object","values","join","tag1","tag2","ajax","url","type","contentType","JSON","stringify","success","results","$resultsList","find","$template","$resultsGridSection","text","each","$message","messageTag1","messageTag2","console","log","indexOf","parts","split","toLowerCase","customMessage","empty","length","forEach","result","$newResult","clone","removeAttr","removeClass","Title","html","Description","$image","Image","attr","src","alt","Url","append","fadeOut","parent","error","xhr","status","first","appendTo","class","css","display","position","top","left","width","height","background","zIndex","marginLeft","marginTop","border","borderTop","borderRadius","animation","jQuery"],"sources":["signpost-module.js"],"mappings":"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","ignoreList":[],"sourcesContent":["(function ($) {\r\n 'use strict';\r\n\r\n var SignpostModule = {\r\n init: function () {\r\n this.$questionContainers = $('.js-question-container');\r\n this.$resultsContainer = $('.js-results-container');\r\n this.selectedAnswers = {};\r\n this.currentQuestion = 1;\r\n\r\n // Hide all questions except first\r\n this.$questionContainers.not(':first').hide();\r\n\r\n // Create spinner\r\n this.createSpinner();\r\n\r\n // Bind events\r\n this.bindEvents();\r\n },\r\n\r\n bindEvents: function () {\r\n var self = this;\r\n\r\n // Answer button clicks\r\n $(document).on('click', '.js-answer-btn', function () {\r\n var $btn = $(this);\r\n self.handleAnswerSelection($btn);\r\n });\r\n\r\n // Reset button clicks\r\n $(document).on('click', '.js-reset-btn', function (e) {\r\n e.preventDefault();\r\n self.resetModule();\r\n });\r\n },\r\n\r\n handleAnswerSelection: function ($btn) {\r\n var questionId = $btn.data('question-id');\r\n var answer = $btn.data('answer');\r\n\r\n // Store answer\r\n this.selectedAnswers[questionId] = answer;\r\n\r\n if (this.currentQuestion === 1) {\r\n // Show second question\r\n this.$questionContainers.eq(0).hide();\r\n this.$questionContainers.eq(1).show();\r\n this.currentQuestion = 2;\r\n } else {\r\n // Submit answers\r\n this.submitAnswers();\r\n }\r\n },\r\n\r\n submitAnswers: function () {\r\n var self = this;\r\n\r\n // Show spinner\r\n $('.js-spinner').fadeIn(200);\r\n\r\n // Create heading text from selected answers\r\n var selectedAnswersText = Object.values(this.selectedAnswers).join(' with ');\r\n\r\n // Get user's answers for matching\r\n var tag1 = this.selectedAnswers[1] || '';\r\n var tag2 = this.selectedAnswers[2] || '';\r\n\r\n $.ajax({\r\n url: '/umbraco/api/signpostapi/search',\r\n type: 'POST',\r\n contentType: 'application/json',\r\n data: JSON.stringify(this.selectedAnswers),\r\n success: function (results) {\r\n var $resultsContainer = self.$resultsContainer;\r\n var $resultsList = $resultsContainer.find('.js-results-list');\r\n var $template = $resultsContainer.find('.js-result-template');\r\n var $resultsGridSection = $resultsContainer.find('.m-signpost__results-grid-section');\r\n\r\n // Update the results heading\r\n $resultsContainer.find('.js-results-heading').text(selectedAnswersText);\r\n\r\n // Hide all result messages first\r\n $resultsContainer.find('.js-result-message').hide();\r\n\r\n // Find and show matching result message if exists\r\n $resultsContainer.find('.js-result-message').each(function () {\r\n var $message = $(this);\r\n var messageTag1 = $message.data('tag-1');\r\n var messageTag2 = $message.data('tag-2');\r\n\r\n // Debug the tag matching\r\n console.log('Comparing tags:', {\r\n 'selected tag1': tag1,\r\n 'message tag1': messageTag1,\r\n 'selected tag2': tag2,\r\n 'message tag2': messageTag2\r\n });\r\n\r\n // Extract individual tags from combined string if needed\r\n if (tag1.indexOf(' with ') > -1) {\r\n var parts = tag1.split(' with ');\r\n tag1 = parts[0];\r\n if (!tag2) tag2 = parts[1];\r\n }\r\n\r\n // Case-insensitive comparison for both tags\r\n if (messageTag1.toLowerCase() === tag1.toLowerCase() &&\r\n messageTag2.toLowerCase() === tag2.toLowerCase()) {\r\n var customMessage = $message.data('result-message');\r\n $message.text(customMessage).show();\r\n }\r\n });\r\n\r\n // Clear previous results\r\n $resultsList.empty();\r\n\r\n if (results && results.length > 0) {\r\n // Hide no results message and show results grid section\r\n $resultsContainer.find('.js-no-results').hide();\r\n $resultsGridSection.show();\r\n\r\n // Create result items\r\n results.forEach(function (result) {\r\n var $newResult = $template.clone()\r\n .removeAttr('style')\r\n .removeClass('js-result-template');\r\n\r\n $newResult.find('.js-result-title').text(result.Title);\r\n $newResult.find('.js-result-description').html(result.Description);\r\n\r\n // Handle image\r\n var $image = $newResult.find('.js-result-image');\r\n if (result.Image) {\r\n $image.attr({\r\n 'src': result.Image,\r\n 'alt': result.Title\r\n }).show();\r\n }\r\n\r\n $newResult.find('.js-result-link').attr('href', result.Url);\r\n $resultsList.append($newResult);\r\n });\r\n } else {\r\n // Show no results message and hide results grid section\r\n $resultsContainer.find('.js-no-results').show();\r\n $resultsGridSection.hide();\r\n }\r\n\r\n // Hide spinner\r\n $('.js-spinner').fadeOut(200);\r\n\r\n // Hide original heading and intro\r\n $('.m-signpost__heading').not('.js-results-heading').parent().hide();\r\n\r\n // Hide questions\r\n self.$questionContainers.hide();\r\n\r\n // Show results\r\n $resultsContainer.fadeIn(300);\r\n },\r\n error: function (xhr, status, error) {\r\n $('.js-spinner').fadeOut(200);\r\n console.error('Error:', error);\r\n var $resultsContainer = self.$resultsContainer;\r\n $resultsContainer.find('.js-no-results')\r\n .show()\r\n .find('p')\r\n .text('Error loading results. Please try again.');\r\n $resultsContainer.find('.m-signpost__results-grid-section').hide();\r\n $resultsContainer.fadeIn(300);\r\n }\r\n });\r\n },\r\n\r\n resetModule: function () {\r\n // Reset state\r\n this.selectedAnswers = {};\r\n this.currentQuestion = 1;\r\n\r\n // Hide results and spinner\r\n this.$resultsContainer.hide();\r\n $('.js-spinner').hide();\r\n\r\n // Show original heading and intro\r\n $('.m-signpost__heading').not('.js-results-heading').parent().show();\r\n\r\n // Show first question\r\n this.$questionContainers.hide();\r\n this.$questionContainers.first().show();\r\n },\r\n\r\n createSpinner: function () {\r\n // Only create if it doesn't exist\r\n if (!$('.js-spinner').length) {\r\n // Add spinner styles\r\n if (!$('#spinner-style').length) {\r\n $('