{"version":3,"sources":["webpack:///./src/views/administrator/StudentDetails.vue?fae2","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./src/components/NoteTakerDetails/DeleteIcon.vue?3417","webpack:///./src/components/NoteTakerDetails/DeleteIcon.vue?ad10","webpack:///./src/components/NoteTakerDetails/DeleteIcon.vue?1b36","webpack:///./src/components/Form/TextArea.vue?0a70","webpack:///./src/components/Form/TextArea.vue","webpack:///./src/components/Form/TextArea.vue?0b44","webpack:///./src/views/administrator/StudentDetails.vue?8c46","webpack:///./src/views/administrator/StudentDetails.vue?1ef3","webpack:///./src/components/Form/CheckboxInput.vue?2387","webpack:///./src/components/Form/CheckboxInput.vue","webpack:///./src/components/Form/CheckboxInput.vue?0481","webpack:///./src/views/administrator/StudentDetails.vue?d6a6","webpack:///./node_modules/core-js/modules/es.object.entries.js","webpack:///./src/interfaces/api.ts","webpack:///./node_modules/core-js/internals/object-to-array.js","webpack:///./src/components/NoteTakerDetails/DeleteIcon.vue?733c","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./src/helpers/array-helper.ts","webpack:///./src/components/Form/RadioButtonGroup.vue?6a61","webpack:///./src/components/Form/RadioButtonGroup.vue","webpack:///./src/components/Form/RadioButtonGroup.vue?bb43"],"names":["n","_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","render","_ctx","_cache","$props","$setup","$data","$options","_component_DetailsHeader","_component_router_link","_component_CheckboxInput","_component_Badge","_component_Tooltip","_component_Table","_component_DetailsRow","_component_PersonDetails","title","$t","onBack","$event","navigateToOverview","onPrevious","navigateToStudent","previousStudentId","onNext","nextStudentId","isActiveNoteTaker","innerHTML","showNameMsg","to","name","params","id","noteTakerId","default","_","student","person","coordinator","functionId","this","showCoordinator","showEditButton","requiredCoordinator","updateOnChange","supportCourseOccurrencesFlat","saveButtonDisabled","hasLaterStartDates","onEditEnable","edit","onCancelEdit","cancel","onSaveEdit","save","onNewCoordinator","updateStudent","caption","laterStartDateText","rows","supportCourseRows","hiddenColumns","hiddenSupportCourseColumns","ascending","sortColumn","onSortChanged","onSortChange","td","data","col","checked","row","courseUid","getTitle","disabled","editEnable","courseOccurrenceStart","isCompletedCourse","onUpdate","value","text","statusBgText","val","bgColor","statusBgColor","rounded","backgroundColor","isCourseWithLaterStartDate","getCourseTitle","titleSv","titleEn","tooltipBgColor","courseOccurrenceId","replaceUnvailableOrFormatDate","_arrayWithHoles","arr","Array","isArray","_iterableToArrayLimit","i","_i","Symbol","iterator","_s","_e","_arr","_n","_d","call","next","done","push","length","err","_nonIterableRest","TypeError","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_component_font_awesome_icon","icon","iconName","onClick","confirmDelete","index","props","indexToDelete","type","Number","required","items","itemText","String","itemTypeName","itemTextSubstringLength","methods","item","substring","confirmMsg","confirm","splice","__exports__","label","readonly","cols","placeholder","maxlength","onInput","updateValue","target","ariaLabel","ref","onInvalid","validityMessage","setValidityMessage","helpText","undefined","Boolean","$emit","message","$refs","input","setCustomValidity","components","DetailsHeader","DetailsRow","Table","DeleteIcon","CheckboxInput","RadioButtonGroup","TextArea","PersonDetails","Badge","Tooltip","newCheckedSupportCourseOccurrences","newUncheckedSupportCourseOccurrences","currentStudentId","NoteTakingFunctionId","supportCourseOccurrencesFlatCopy","coursesWithLaterStartDate","computed","supportCourseOccurrences","sortByProperty","hidden","allStudentIds","filteredStudentIds","getItem","FilteredStudentIds","currentIdIndex","indexOf","nextIdIndex","slice","previousIdIndex","grantedSupportDate","selectedCourses","selected","Object","entries","forEach","course","find","x","supportCourses","map","checkGrantedSupportDate","assign","getStudent","getCourseIdByUid","courseInstance","status","courseOccurrenceStatusColor","statusTextColor","courseOccurrenceStatusText","columnName","setItem","StudentTableUserPagingData","generateUserPagingData","sortCourseOccurrences","userPagingData","sortOrder","Asc","Desc","getUsersPagingData","$route","parseInt","getStudentById","then","supportCourseOccurrence","active","assignmentStart","assignmentEnd","catch","e","console","error","addOrUpdateStudent","$router","NotAvailable","getCourseTitleTooltipText","$i18n","locale","filter","dateAisBeforeDateB","onCourseCheckedChanged","localeKey","msg","full_name","firstName","lastName","resetSelectedCourses","courses","foundCourse","toLowerCase","courseStartDate","courseEndDate","mounted","localstorageLang","$root","unmounted","watch","fieldId","onChange","style","cursor","for","emits","isChecked","$","$entries","stat","O","CourseOccurrenceStatus","FeeDataExportType","Locale","NoteTakerStatus","SortOrder","DESCRIPTORS","uncurryThis","objectKeys","toIndexedObject","$propertyIsEnumerable","f","propertyIsEnumerable","createMethod","TO_ENTRIES","it","keys","result","module","exports","values","global","toAbsoluteIndex","toIntegerOrInfinity","lengthOfArrayLike","toObject","arraySpeciesCreate","createProperty","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","max","Math","min","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","proto","forced","start","deleteCount","insertCount","actualDeleteCount","A","k","from","len","actualStart","argumentsLength","arguments","ArrayHelper","array","propName","sortAscending","sort","a","b","propA","propB","reverse","verticalLayout","showFieldset","showTitle","ref_for","$slots"],"mappings":"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","file":"assets/js/chunk-cacb5baa.8a3808b1.js","sourcesContent":["import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-eb503a98\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"container w-75\" }\nconst _hoisted_2 = { class: \"card\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"active-note-taker\"\n}\nconst _hoisted_4 = { class: \"alert-msg\" }\nconst _hoisted_5 = [\"innerHTML\"]\nconst _hoisted_6 = {\n key: 1,\n class: \"form-container\"\n}\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = { class: \"alert-msg\" }\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = { key: 1 }\nconst _hoisted_11 = { key: 2 }\nconst _hoisted_12 = { key: 3 }\nconst _hoisted_13 = { key: 4 }\nconst _hoisted_14 = { key: 0 }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \" \", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_DetailsHeader = _resolveComponent(\"DetailsHeader\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_CheckboxInput = _resolveComponent(\"CheckboxInput\")!\n const _component_Badge = _resolveComponent(\"Badge\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_Table = _resolveComponent(\"Table\")!\n const _component_DetailsRow = _resolveComponent(\"DetailsRow\")!\n const _component_PersonDetails = _resolveComponent(\"PersonDetails\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_DetailsHeader, {\n title: _ctx.$t('shared.routes.student-details'),\n onBack: _cache[0] || (_cache[0] = ($event: any) => (_ctx.navigateToOverview())),\n onPrevious: _cache[1] || (_cache[1] = ($event: any) => (_ctx.navigateToStudent(_ctx.previousStudentId))),\n onNext: _cache[2] || (_cache[2] = ($event: any) => (_ctx.navigateToStudent(_ctx.nextStudentId)))\n }, null, 8, [\"title\"]),\n _createElementVNode(\"form\", _hoisted_2, [\n (_ctx.isActiveNoteTaker)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", {\n innerHTML: _ctx.showNameMsg('student-details.activeNoteTaker')\n }, null, 8, _hoisted_5),\n _createVNode(_component_router_link, {\n to: {\r\n name: 'NoteTakerDetails',\r\n params: { id: _ctx.noteTakerId },\r\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"shared.routes.note-taker-details\")), 1)\n ]),\n _: 1\n }, 8, [\"to\"])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.student !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(_component_PersonDetails, {\n person: _ctx.student,\n coordinator: _ctx.student.coordinator,\n functionId: this.functionId,\n showCoordinator: true,\n showEditButton: !_ctx.isActiveNoteTaker,\n requiredCoordinator: false,\n updateOnChange: _ctx.supportCourseOccurrencesFlat,\n saveButtonDisabled: _ctx.hasLaterStartDates,\n onEditEnable: _ctx.edit,\n onCancelEdit: _ctx.cancel,\n onSaveEdit: _ctx.save,\n onNewCoordinator: _ctx.updateStudent\n }, {\n default: _withCtx(() => [\n _createVNode(_component_DetailsRow, { caption: \"shared.courses\" }, {\n default: _withCtx(() => [\n (_ctx.hasLaterStartDates)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", _hoisted_8, _toDisplayString(_ctx.laterStartDateText), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Table, {\n rows: _ctx.supportCourseRows,\n hiddenColumns: _ctx.hiddenSupportCourseColumns,\n ascending: _ctx.ascending,\n \"onUpdate:ascending\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.ascending) = $event)),\n sortColumn: _ctx.sortColumn,\n \"onUpdate:sortColumn\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.sortColumn) = $event)),\n onSortChanged: _ctx.onSortChange\n }, {\n td: _withCtx((data) => [\n (data.col === 'courseOccurrenceId')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString(_ctx.$t(\"course-occurrence.support\")), 1))\n : _createCommentVNode(\"\", true),\n (data.col === 'status')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_10, _toDisplayString(_ctx.$t(\"course-occurrence.status\")), 1))\n : (data.col === 'occurrence')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_ctx.$t(\"course-occurrence.occurrence\")), 1))\n : (data.col === 'courseOccurrenceStart')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_12, _toDisplayString(_ctx.$t(\"course-occurrence.courseStartDate\")) + \" \" + _toDisplayString(_ctx.$t(\"course-occurrence.abbreviation\")), 1))\n : (data.col === 'coordinatorName')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_13, _toDisplayString(_ctx.$t(\"course-occurrence.coordinatorName\")), 1))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx((data) => [\n (data.col === 'courseOccurrenceId')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_14, [\n _createVNode(_component_CheckboxInput, {\n class: \"pb-3 ml-1\",\n checked: _ctx.supportCourseOccurrencesFlat[data.row.courseUid],\n title: _ctx.getTitle(data.row.courseUid),\n disabled: \r\n !_ctx.editEnable ||\r\n data.row.courseOccurrenceStart ===\r\n '0001-01-01T00:00:00' ||\r\n _ctx.isCompletedCourse(data.row.courseUid)\r\n ,\n onUpdate: \r\n (value) =>\r\n (_ctx.supportCourseOccurrencesFlat[data.row.courseUid] =\r\n value)\r\n \n }, null, 8, [\"checked\", \"title\", \"disabled\", \"onUpdate\"])\n ]))\n : _createCommentVNode(\"\", true),\n (data.col === 'status')\n ? (_openBlock(), _createBlock(_component_Tooltip, {\n key: 1,\n text: _ctx.statusBgText(data.val),\n bgColor: _ctx.statusBgColor(data.val)\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Badge, {\n rounded: true,\n backgroundColor: _ctx.statusBgColor(data.val)\n }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 2\n }, 1032, [\"backgroundColor\"])\n ]),\n _: 2\n }, 1032, [\"text\", \"bgColor\"]))\n : _createCommentVNode(\"\", true),\n (data.col === 'occurrence')\n ? (_openBlock(), _createBlock(_component_Tooltip, {\n key: 2,\n class: _normalizeClass(\r\n _ctx.isCourseWithLaterStartDate(data.row.courseUid)\r\n ? 'highlighted-course'\r\n : ''\r\n ),\n text: _ctx.getCourseTitle(data.row.titleSv, data.row.titleEn),\n bgColor: _ctx.tooltipBgColor\n }, {\n default: _withCtx(() => [\n (data.row.courseOccurrenceId !== 0)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n to: {\r\n name: 'CourseOccurrenceDetails',\r\n params: {\r\n id: data.row.courseOccurrenceId,\r\n },\r\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(data.val), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]))\n : (_openBlock(), _createElementBlock(\"span\", {\n key: 1,\n class: _normalizeClass(\r\n _ctx.isCourseWithLaterStartDate(data.row.courseUid)\r\n ? 'highlighted-course'\r\n : ''\r\n )\n }, _toDisplayString(data.val), 3))\n ]),\n _: 2\n }, 1032, [\"class\", \"text\", \"bgColor\"]))\n : _createCommentVNode(\"\", true),\n (data.col === 'courseOccurrenceStart' && data.val)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 3,\n class: _normalizeClass(\r\n _ctx.isCourseWithLaterStartDate(data.row.courseUid)\r\n ? 'highlighted-course'\r\n : ''\r\n )\n }, _toDisplayString(_ctx.replaceUnvailableOrFormatDate(data.val)), 3))\n : _createCommentVNode(\"\", true),\n (data.col === 'coordinatorName')\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 4,\n class: _normalizeClass(\r\n _ctx.isCourseWithLaterStartDate(data.row.courseUid)\r\n ? 'highlighted-course'\r\n : ''\r\n )\n }, _toDisplayString(data.val), 3))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"rows\", \"hiddenColumns\", \"ascending\", \"sortColumn\", \"onSortChanged\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"person\", \"coordinator\", \"functionId\", \"showEditButton\", \"updateOnChange\", \"saveButtonDisabled\", \"onEditEnable\", \"onCancelEdit\", \"onSaveEdit\", \"onNewCoordinator\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\")!\n\n return (_openBlock(), _createBlock(_component_font_awesome_icon, {\n icon: _ctx.iconName,\n title: _ctx.$t('shared.delete'),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.confirmDelete(this.index))),\n class: \"delete-icon\"\n }, null, 8, [\"icon\", \"title\"]))\n}","\r\nimport { PropType } from \"@vue/runtime-core\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {\r\n /**\r\n * The index of the array item to delete\r\n */\r\n indexToDelete: {\r\n type: Number as PropType,\r\n required: true,\r\n },\r\n /**\r\n * The array of items to delete from\r\n */\r\n items: {\r\n type: Array,\r\n required: true,\r\n },\r\n /**\r\n * The text of the array item to delete - used in the confirm dialog\r\n */\r\n itemText: {\r\n type: String as PropType,\r\n required: true,\r\n },\r\n /**\r\n * The type of the array item to delete - used in the confirm dialog\r\n */\r\n itemTypeName: {\r\n type: String as PropType,\r\n required: true,\r\n },\r\n /**\r\n * The substring length of the text of the array item to delete to display in the confirm dialog\r\n */\r\n itemTextSubstringLength: {\r\n type: Number as PropType,\r\n required: true,\r\n },\r\n /**\r\n * The font awesome icon name\r\n */\r\n iconName: {\r\n type: String as PropType,\r\n required: false,\r\n default: \"trash-alt\",\r\n },\r\n },\r\n methods: {\r\n confirmDelete(): void {\r\n const item = `${this.itemTypeName}: ${this.itemText.substring(\r\n 0,\r\n this.itemTextSubstringLength\r\n )} ...`;\r\n\r\n const confirmMsg = this.$t(\"shared.confirm-delete-thing\", { item: item });\r\n\r\n if (confirm(confirmMsg)) {\r\n this.items.splice(this.indexToDelete, 1);\r\n }\r\n },\r\n },\r\n})\r\nexport default class DeleteIcon extends Vue {}\r\n","import { render } from \"./DeleteIcon.vue?vue&type=template&id=b7c48bb2&scoped=true&ts=true\"\nimport script from \"./DeleteIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./DeleteIcon.vue?vue&type=script&lang=ts\"\n\nimport \"./DeleteIcon.vue?vue&type=style&index=0&id=b7c48bb2&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\fr5673mo\\\\Documents\\\\git.lu.se\\\\.net\\\\student-portal\\\\student-portal-web\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b7c48bb2\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"form-group\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"w-100\"\n}\nconst _hoisted_3 = [\"rows\", \"cols\", \"value\", \"placeholder\", \"disabled\", \"readonly\", \"required\", \"maxlength\", \"aria-label\"]\nconst _hoisted_4 = {\n key: 1,\n class: \"form-text text-muted\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.label)\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_2, _toDisplayString(_ctx.label), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"textarea\", {\n class: _normalizeClass(_ctx.readonly ? 'form-control-plaintext' : 'form-control'),\n rows: _ctx.rows,\n cols: _ctx.cols,\n value: _ctx.value,\n placeholder: _ctx.placeholder,\n disabled: _ctx.disabled,\n readonly: _ctx.readonly,\n required: _ctx.required,\n maxlength: _ctx.maxlength,\n onInput: _cache[0] || (_cache[0] = ($event: any) => (_ctx.updateValue($event.target.value))),\n \"aria-label\": _ctx.ariaLabel,\n ref: \"input\",\n onInvalid: _cache[1] || (_cache[1] = ($event: any) => (_ctx.validityMessage ? _ctx.setValidityMessage(_ctx.validityMessage) : null))\n }, \"\\r\\n \", 42, _hoisted_3),\n (_ctx.helpText)\n ? (_openBlock(), _createElementBlock(\"small\", _hoisted_4, _toDisplayString(_ctx.helpText), 1))\n : _createCommentVNode(\"\", true)\n ]))\n}","\r\nimport { PropType } from \"@vue/runtime-core\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {\r\n value: {\r\n type: String as PropType,\r\n required: true,\r\n },\r\n ariaLabel: {\r\n type: String as PropType,\r\n required: true,\r\n },\r\n label: {\r\n type: String as PropType,\r\n required: false,\r\n },\r\n placeholder: {\r\n type: String as PropType,\r\n required: false,\r\n },\r\n rows: {\r\n type: Number as PropType,\r\n required: false,\r\n default: 4,\r\n },\r\n cols: {\r\n type: Number as PropType,\r\n required: false,\r\n default: 40,\r\n },\r\n maxlength: {\r\n type: Number as PropType,\r\n required: false,\r\n default: undefined, // omit this attribute if no value is supplied\r\n },\r\n disabled: {\r\n type: Boolean as PropType,\r\n required: false,\r\n default: false,\r\n },\r\n readonly: {\r\n type: Boolean as PropType,\r\n required: false,\r\n default: false,\r\n },\r\n helpText: {\r\n type: String as PropType,\r\n required: false,\r\n },\r\n /**\r\n * Custom validity message\r\n */\r\n validityMessage: {\r\n type: String as PropType,\r\n required: false,\r\n },\r\n /**\r\n * If the input is required\r\n */\r\n required: {\r\n type: Boolean as PropType,\r\n required: false,\r\n default: false,\r\n },\r\n },\r\n methods: {\r\n /**\r\n * Gets called when the user updates value\r\n *\r\n * @param {string} value The value\r\n */\r\n updateValue(value: string): void {\r\n this.setValidityMessage(\"\");\r\n this.$emit(\"update:value\", value);\r\n },\r\n /**\r\n * Sets a custom validity message\r\n *\r\n * @param {string} message The message\r\n */\r\n setValidityMessage(message: string): void {\r\n this.$refs.input.setCustomValidity(message);\r\n },\r\n },\r\n})\r\nexport default class TextArea extends Vue {}\r\n","import { render } from \"./TextArea.vue?vue&type=template&id=3a12e98c&ts=true\"\nimport script from \"./TextArea.vue?vue&type=script&lang=ts\"\nexport * from \"./TextArea.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\fr5673mo\\\\Documents\\\\git.lu.se\\\\.net\\\\student-portal\\\\student-portal-web\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport PersonDetails from \"@/components/PersonDetails.vue\";\r\nimport DetailsHeader from \"@/components/DetailsHeader.vue\";\r\nimport DetailsRow from \"@/components/DetailsRow.vue\";\r\nimport Table from \"@/components/Table.vue\";\r\nimport Tooltip from \"@/components/Tooltip.vue\";\r\nimport Badge from \"@/components/Badge.vue\";\r\nimport DeleteIcon from \"@/components/NoteTakerDetails/DeleteIcon.vue\";\r\nimport CheckboxInput from \"@/components/Form/CheckboxInput.vue\";\r\nimport RadioButtonGroup from \"@/components/Form/RadioButtonGroup.vue\";\r\nimport TextArea from \"@/components/Form/TextArea.vue\";\r\nimport StudentService from \"@/services/student-service\";\r\nimport LocalStorageService from \"@/services/localstorage-service\";\r\nimport CourseService from \"@/services/course-service\";\r\nimport {\r\n Course,\r\n PersonResponse,\r\n SortOrder,\r\n Student,\r\n SupportCourseOccurrence,\r\n} from \"@/interfaces/api\";\r\nimport { Constants } from \"@/constants/constants\";\r\nimport DateHelper from \"@/helpers/date-helper\";\r\nimport ArrayHelper from \"@/helpers/array-helper\";\r\nimport { IUserPagingData } from \"@/interfaces/IUserPagingData\";\r\n\r\n@Options({\r\n components: {\r\n DetailsHeader,\r\n DetailsRow,\r\n Table,\r\n DeleteIcon,\r\n CheckboxInput,\r\n RadioButtonGroup,\r\n TextArea,\r\n PersonDetails,\r\n Badge,\r\n Tooltip,\r\n },\r\n data: () => ({\r\n /*\r\n * Holds the checked support course instances\r\n */\r\n newCheckedSupportCourseOccurrences: [],\r\n /*\r\n * Holds the unchecked support course instances\r\n */\r\n newUncheckedSupportCourseOccurrences: [],\r\n /*\r\n * Holds the emited boolean value from PersonDetails\r\n */\r\n editEnable: false,\r\n /*\r\n * Holds the id of the student and is populated from the route's id parameter when the page loads\r\n */\r\n currentStudentId: 0,\r\n /*\r\n * Holds the student data and is populated by a call to the student service when the page loads\r\n */\r\n student: null,\r\n /**\r\n * Required if showCoordinator\r\n * The functionId to fetch coordinators from\r\n */\r\n functionId: Constants.NoteTakingFunctionId,\r\n /*\r\n * The background color for the tooltip when mousing over course occurrence\r\n */\r\n tooltipBgColor: \"#875E29\",\r\n /**\r\n * The current sort column\r\n */\r\n sortColumn: \"courseOccurrenceStart\",\r\n /**\r\n * If sort order is ascending\r\n */\r\n ascending: true,\r\n /**\r\n * Holds the help state of supportCourseOccurrences\r\n */\r\n supportCourseOccurrencesFlat: {},\r\n /**\r\n * Holds the copy of help state of supportCourseOccurrences\r\n */\r\n supportCourseOccurrencesFlatCopy: null,\r\n /**\r\n * Holds the course occurrence id\r\n */\r\n courseOccurrenceId: 0,\r\n /**\r\n * Populated with student courses which have a start date later than the granted support date\r\n */\r\n coursesWithLaterStartDate: new Array(),\r\n /**\r\n * If the student is an active note-taker\r\n */\r\n isActiveNoteTaker: false,\r\n /**\r\n * The id of the active note-taker\r\n */\r\n noteTakerId: 0,\r\n }),\r\n computed: {\r\n /**\r\n * Get student support course occurrences\r\n */\r\n supportCourseRows() {\r\n const student: Student = this.student;\r\n const supportCourseOccurrences =\r\n student.supportCourseOccurrences as SupportCourseOccurrence[];\r\n ArrayHelper.sortByProperty(\r\n supportCourseOccurrences,\r\n this.sortColumn,\r\n this.ascending\r\n );\r\n return supportCourseOccurrences;\r\n },\r\n /**\r\n * Hides all unwanted columns\r\n */\r\n hiddenSupportCourseColumns() {\r\n const hidden = [\r\n \"titleEn\",\r\n \"titleSv\",\r\n \"courseUid\",\r\n \"offerDate\",\r\n \"assignmentStart\",\r\n \"assignmentEnd\",\r\n \"offerConfirmedDate\",\r\n \"deletedByAdmin\",\r\n ];\r\n return hidden;\r\n },\r\n /*\r\n * Used by the previous/next button logic\r\n */\r\n allStudentIds() {\r\n const filteredStudentIds = LocalStorageService.getItem(\r\n Constants.FilteredStudentIds\r\n );\r\n return filteredStudentIds;\r\n },\r\n\r\n /*\r\n * The id of the student to load when the next button is clicked\r\n */\r\n nextStudentId() {\r\n const currentIdIndex = this.allStudentIds.indexOf(this.currentStudentId);\r\n let nextIdIndex = currentIdIndex + 1;\r\n if (nextIdIndex >= this.allStudentIds.length) {\r\n nextIdIndex = 0;\r\n }\r\n return this.allStudentIds.slice(nextIdIndex, nextIdIndex + 1)[0];\r\n },\r\n /*\r\n * The id of the student to load when the previous button is clicked\r\n */\r\n previousStudentId() {\r\n const currentIdIndex = this.allStudentIds.indexOf(this.currentStudentId);\r\n let previousIdIndex = currentIdIndex - 1;\r\n if (previousIdIndex < 0) {\r\n previousIdIndex = this.allStudentIds.length - 1;\r\n }\r\n return this.allStudentIds.slice(previousIdIndex, previousIdIndex + 1)[0];\r\n },\r\n /**\r\n * The date that the student is granted support until\r\n */\r\n grantedSupportDate(): string {\r\n return this.student ? this.student.grantedSupportDate : null;\r\n },\r\n /**\r\n * Indicates if the granted support date is earlier than any of the selected course start dates\r\n */\r\n hasLaterStartDates(): boolean {\r\n return this.coursesWithLaterStartDate.length > 0;\r\n },\r\n /**\r\n * The text displayed to the user if the granted support date is earlier than any of the selected course start dates\r\n */\r\n laterStartDateText(): string {\r\n return this.$t(\"add-student.later-start-date\");\r\n },\r\n /*\r\n * Selected courses\r\n */\r\n selectedCourses(): Array {\r\n const selected = new Array();\r\n Object.entries(this.supportCourseOccurrencesFlat).forEach(\r\n ([key, value]) => {\r\n if (value) {\r\n const course = this.supportCourseRows.find(\r\n (x: SupportCourseOccurrence) => x.courseUid === key\r\n );\r\n if (course) {\r\n selected.push(course);\r\n }\r\n }\r\n }\r\n );\r\n if (this.student && this.student.supportCourses) {\r\n this.student.supportCourses = selected.map(\r\n (course: SupportCourseOccurrence) => {\r\n return {\r\n courseUid: course.courseUid,\r\n courseOccurrenceId: course.courseOccurrenceId,\r\n };\r\n }\r\n );\r\n }\r\n return selected;\r\n },\r\n },\r\n methods: {\r\n /*\r\n * Enables edit to activate checkboxes\r\n */\r\n edit() {\r\n this.editEnable = true;\r\n this.supportCourseOccurrencesFlatCopy = {\r\n ...this.supportCourseOccurrencesFlat,\r\n };\r\n },\r\n /*\r\n * Cancels edit to disable checkboxes\r\n */\r\n cancel() {\r\n this.checkGrantedSupportDate();\r\n this.editEnable = false;\r\n Object.assign(\r\n this.supportCourseOccurrencesFlat,\r\n this.supportCourseOccurrencesFlatCopy\r\n );\r\n this.supportCourseOccurrencesFlatCopy = null;\r\n },\r\n /*\r\n * Save edit\r\n */\r\n save() {\r\n this.getStudent();\r\n this.editEnable = false;\r\n },\r\n /*\r\n * Get course Id for the given course Uid\r\n */\r\n getCourseIdByUid(courseUid: string): number | undefined {\r\n const student = this.student as Student;\r\n const courseInstance = student.supportCourseOccurrences?.find(\r\n (courseInstance) => {\r\n return courseInstance.courseUid == courseUid;\r\n }\r\n );\r\n return courseInstance?.courseOccurrenceId;\r\n },\r\n /**\r\n * Returns a color based on status\r\n *\r\n * @param {string} status The status we want a color for\r\n */\r\n statusBgColor(status: string): string {\r\n return CourseService.courseOccurrenceStatusColor(status);\r\n },\r\n /**\r\n * Returns a color based on status\r\n *\r\n * @param {string} status The status we want a color for\r\n */\r\n statusTextColor(status: string): string {\r\n return status === \"Yellow\" ? \"black\" : \"white\";\r\n },\r\n /**\r\n * Returns a text based on status\r\n *\r\n * @param {string} status The status we want a tooltip text for\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n statusBgText(status: string): string {\r\n return this.$t(CourseService.courseOccurrenceStatusText(status));\r\n },\r\n /**\r\n * Triggered when the user changes the sort column/order of the course table\r\n */\r\n onSortChange(columnName: string, ascending: boolean): void {\r\n this.sortColumn = columnName;\r\n this.ascending = ascending;\r\n LocalStorageService.setItem(\r\n Constants.StudentTableUserPagingData,\r\n this.generateUserPagingData()\r\n );\r\n this.sortCourseOccurrences();\r\n },\r\n /**\r\n * Triggered when the user changes the sort column/order of the course table\r\n */\r\n sortCourseOccurrences(): void {\r\n ArrayHelper.sortByProperty(\r\n this.supportCourseRows,\r\n this.sortColumn,\r\n this.ascending\r\n );\r\n },\r\n /**\r\n * Generates user paging data to be saved to local storage\r\n */\r\n generateUserPagingData(): Partial {\r\n const userPagingData: Partial = {\r\n sortColumn: this.sortColumn,\r\n sortOrder: this.ascending ? SortOrder.Asc : SortOrder.Desc,\r\n };\r\n\r\n return userPagingData;\r\n },\r\n /**\r\n * Gets the user's paging data that has been saved to local storage\r\n */\r\n getUsersPagingData(): void {\r\n const userPagingData = LocalStorageService.getItem<\r\n Partial\r\n >(Constants.StudentTableUserPagingData);\r\n\r\n if (userPagingData) {\r\n this.sortColumn = userPagingData.sortColumn;\r\n this.ascending = userPagingData.sortOrder === SortOrder.Asc;\r\n }\r\n },\r\n /**\r\n * Fetches the student with the id from route parameter\r\n */\r\n getStudent(): void {\r\n if (this.$route.name === \"StudentDetails\" && this.$route.params.id) {\r\n this.currentStudentId = parseInt(this.$route.params.id);\r\n StudentService.getStudentById(this.currentStudentId)\r\n .then((data: PersonResponse) => {\r\n this.student = data.student;\r\n this.isActiveNoteTaker = data.isActiveNoteTaker;\r\n this.noteTakerId = data.noteTakerId;\r\n data.student?.supportCourseOccurrences?.forEach(\r\n (supportCourseOccurrence) => {\r\n const active =\r\n supportCourseOccurrence.assignmentStart !== null &&\r\n supportCourseOccurrence.assignmentEnd === null;\r\n if (\r\n !this.supportCourseOccurrencesFlat[\r\n supportCourseOccurrence.courseUid\r\n ]\r\n ) {\r\n this.supportCourseOccurrencesFlat[\r\n supportCourseOccurrence.courseUid\r\n ] = active;\r\n }\r\n }\r\n );\r\n })\r\n .catch((e: Error) => {\r\n console.error(e);\r\n });\r\n }\r\n },\r\n /*\r\n * Changes and saves coordiantor to student\r\n */\r\n updateStudent(): void {\r\n StudentService.addOrUpdateStudent(this.student);\r\n },\r\n /*\r\n * Navigates to a student with the specified id\r\n * Called from the next/previous button click\r\n */\r\n navigateToStudent(id: number): void {\r\n this.$router.push({\r\n name: \"StudentDetails\",\r\n params: { id: id },\r\n });\r\n },\r\n navigateToOverview(): void {\r\n this.$router.push({\r\n name: \"StudentList\",\r\n });\r\n },\r\n /**\r\n * Checks if the specified value is unavailable and if so,\r\n * replaces it with the the unavailable translation for the current locale\r\n * Also checks if the value is a date and if so, formats it to YYYY-MM-DD\r\n */\r\n replaceUnvailableOrFormatDate(value: string): string {\r\n return CourseService.replaceUnvailableOrFormatDate(\r\n value,\r\n this.$t(\"course-occurrence.unavailable\")\r\n );\r\n },\r\n /**\r\n * Sets the course title to be used as text for tooltip over link to course detail\r\n */\r\n getCourseTitle(titleSv: string, titleEn: string): string {\r\n if (titleSv === Constants.NotAvailable) {\r\n return CourseService.getCourseTitleTooltipText(\r\n this.$t(\"course-occurrence.title\"),\r\n this.$t(\"course-occurrence.unavailable\")\r\n );\r\n }\r\n\r\n return this.$i18n.locale === \"sv\" ? titleSv : titleEn;\r\n },\r\n /**\r\n * Checks if the granted support date is earlier than any of the selected course start dates\r\n */\r\n checkGrantedSupportDate(): void {\r\n if (this.editEnable && this.grantedSupportDate) {\r\n this.coursesWithLaterStartDate = this.selectedCourses.filter(\r\n (course: SupportCourseOccurrence) =>\r\n DateHelper.dateAisBeforeDateB(\r\n this.grantedSupportDate,\r\n course.courseOccurrenceStart as string\r\n )\r\n );\r\n }\r\n },\r\n /**\r\n * Checks if the speified course has a later date than the granted support date\r\n * Used to highlight the course in the GUI\r\n */\r\n isCourseWithLaterStartDate(courseUid: string): boolean {\r\n return (\r\n this.coursesWithLaterStartDate.find(\r\n (x: SupportCourseOccurrence) => x.courseUid === courseUid\r\n ) !== undefined\r\n );\r\n },\r\n /**\r\n * Regulates the coursesWithLaterStartDate array\r\n */\r\n onCourseCheckedChanged(): void {\r\n this.checkGrantedSupportDate();\r\n },\r\n /*\r\n * The message displayed in the GUI if the person's name is to be used\r\n */\r\n showNameMsg(localeKey: string): string {\r\n const msg = this.$t(localeKey, {\r\n full_name: `${this.student.firstName} ${this.student.lastName}`,\r\n });\r\n return msg;\r\n },\r\n /**\r\n * Resets the selected courses\r\n */\r\n resetSelectedCourses(): void {\r\n this.supportCourseOccurrencesFlat = {};\r\n this.selectedCourses = new Array();\r\n },\r\n /**\r\n * Checks whether the course with the specified course Uid has an end date that has passed\r\n * Used for setting the disabled attribute on the course checkbox\r\n *\r\n * @param {string} courseUid The course Uid\r\n * @returns {boolean} whether the course has an end date that has passed\r\n */\r\n isCompletedCourse(courseUid: string): boolean {\r\n return CourseService.isCompletedCourse(courseUid, this.student.courses);\r\n },\r\n /**\r\n * Gets a title attribute value for the course checkbox\r\n *\r\n * @param {string} courseUid The course Uid\r\n * @returns {boolean} A string containing the course's start and end dates\r\n */\r\n getTitle(courseUid: string): string {\r\n if (!this.student.courses) {\r\n return \"\";\r\n }\r\n\r\n const foundCourse = this.student.courses.find(\r\n (course: Course) =>\r\n course.courseUid.toLowerCase() === courseUid.toLowerCase()\r\n );\r\n\r\n if (!foundCourse) {\r\n return \"\";\r\n }\r\n\r\n return `${this.$t(\"course-occurrence.courseStartDate\")}: ${\r\n foundCourse.courseStartDate\r\n } | ${this.$t(\"course-occurrence.courseEndDate\")}: ${\r\n foundCourse.courseEndDate\r\n }`;\r\n },\r\n },\r\n mounted() {\r\n this.getUsersPagingData();\r\n this.getStudent();\r\n const localstorageLang = LocalStorageService.getItem(\"language\");\r\n this.$root.$i18n.locale = localstorageLang;\r\n },\r\n unmounted() {\r\n this.resetSelectedCourses();\r\n },\r\n watch: {\r\n $route() {\r\n this.resetSelectedCourses();\r\n this.getStudent();\r\n },\r\n selectedCourses() {\r\n this.onCourseCheckedChanged();\r\n },\r\n grantedSupportDate() {\r\n this.checkGrantedSupportDate();\r\n },\r\n },\r\n})\r\nexport default class StudentDetails extends Vue {}\r\n","import { render } from \"./StudentDetails.vue?vue&type=template&id=eb503a98&scoped=true&ts=true\"\nimport script from \"./StudentDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./StudentDetails.vue?vue&type=script&lang=ts\"\n\nimport \"./StudentDetails.vue?vue&type=style&index=0&id=eb503a98&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\fr5673mo\\\\Documents\\\\git.lu.se\\\\.net\\\\student-portal\\\\student-portal-web\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-eb503a98\"]])\n\nexport default __exports__","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"form-group form-check\" }\nconst _hoisted_2 = [\"aria-label\", \"id\", \"checked\", \"disabled\", \"required\"]\nconst _hoisted_3 = [\"for\"]\nconst _hoisted_4 = {\n key: 1,\n class: \"form-text text-muted\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n class: \"form-check-input\",\n \"aria-label\": _ctx.ariaLabel,\n id: _ctx.fieldId,\n checked: _ctx.checked,\n disabled: _ctx.disabled,\n required: _ctx.required,\n onChange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onUpdate($event.target.checked))),\n style: _normalizeStyle({ cursor: _ctx.disabled ? 'not-allowed' : 'pointer' }),\n ref: \"input\",\n onInvalid: _cache[1] || (_cache[1] = ($event: any) => (_ctx.validityMessage ? _ctx.setValidityMessage(_ctx.validityMessage) : null))\n }, null, 44, _hoisted_2),\n (_ctx.label)\n ? (_openBlock(), _createElementBlock(\"label\", {\n key: 0,\n class: \"form-check-label\",\n for: _ctx.fieldId\n }, _toDisplayString(_ctx.label), 9, _hoisted_3))\n : _createCommentVNode(\"\", true),\n (_ctx.helpText)\n ? (_openBlock(), _createElementBlock(\"small\", _hoisted_4, _toDisplayString(_ctx.helpText), 1))\n : _createCommentVNode(\"\", true)\n ]))\n}","\r\nimport { PropType } from \"@vue/runtime-core\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {\r\n /**\r\n * The Id of the checkbox\r\n */\r\n fieldId: {\r\n type: String as PropType,\r\n required: false,\r\n },\r\n /**\r\n * The label value for the checkbox\r\n */\r\n label: {\r\n type: String as PropType,\r\n required: false,\r\n },\r\n /**\r\n * The aria label value for the checkbox\r\n */\r\n ariaLabel: {\r\n type: String as PropType,\r\n required: false,\r\n },\r\n /**\r\n * If the checkbox is checked\r\n */\r\n checked: {\r\n type: Boolean as PropType,\r\n required: false,\r\n default: false,\r\n },\r\n /**\r\n * If the checkbox is disabled\r\n */\r\n disabled: {\r\n type: Boolean as PropType,\r\n required: false,\r\n default: false,\r\n },\r\n /**\r\n * The help text for the checkbox\r\n */\r\n helpText: {\r\n type: String as PropType,\r\n required: false,\r\n },\r\n /**\r\n * If the input is required\r\n */\r\n required: {\r\n type: Boolean as PropType,\r\n required: false,\r\n default: false,\r\n },\r\n /**\r\n * Custom validity message\r\n */\r\n validityMessage: {\r\n type: String as PropType,\r\n required: false,\r\n },\r\n },\r\n emits: [\"update:checked\", \"update\"],\r\n methods: {\r\n /**\r\n * Gets called when the value changes\r\n */\r\n onUpdate(isChecked: boolean): void {\r\n this.setValidityMessage(\"\");\r\n this.$emit(\"update:checked\", isChecked);\r\n this.$emit(\"update\", isChecked);\r\n },\r\n /**\r\n * Sets a custom validity message\r\n *\r\n * @param {string} message The message\r\n */\r\n setValidityMessage(message: string): void {\r\n this.$refs.input.setCustomValidity(message);\r\n },\r\n },\r\n})\r\nexport default class CheckboxInput extends Vue {}\r\n","import { render } from \"./CheckboxInput.vue?vue&type=template&id=77a7f6a0&ts=true\"\nimport script from \"./CheckboxInput.vue?vue&type=script&lang=ts\"\nexport * from \"./CheckboxInput.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\fr5673mo\\\\Documents\\\\git.lu.se\\\\.net\\\\student-portal\\\\student-portal-web\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./StudentDetails.vue?vue&type=style&index=0&id=eb503a98&scoped=true&lang=css\"","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","// ..\\student-portal-backend\\LU.STP.Common\\Models\\Assignment.cs\r\nexport interface Assignment {\r\n noteTakerLuEduPersonPrimaryId: string;\r\n studentLuEduPersonPrimaryId: string;\r\n courseCode: string;\r\n term: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\Coordinator.cs\r\nexport interface Coordinator extends CoordinatorBase {\r\n email: string;\r\n functionId: number;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\CoordinatorBase.cs\r\nexport interface CoordinatorBase {\r\n id: number;\r\n name: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\Course.cs\r\nexport interface Course {\r\n courseUid: string;\r\n courseCode: string;\r\n titleSv: string;\r\n titleEn: string;\r\n courseStartDate: string;\r\n courseEndDate: string;\r\n term: string;\r\n occasionCode: string;\r\n facultySv: string;\r\n facultyEn: string;\r\n institutionSv: string;\r\n institutionEn: string;\r\n studyPoints: number;\r\n event: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\CourseOccurrence.cs\r\nexport interface CourseOccurrence extends CourseOccurrenceBase {\r\n students?: Student[];\r\n noteTakers?: NoteTaker[];\r\n inactiveStudents?: Student[];\r\n inactiveNoteTakers?: NoteTaker[];\r\n proposedNoteTakers?: NoteTakerProposedCourse[];\r\n noteTakerOffers?: NoteTakerOffer[];\r\n noteTakerUploadSummaries?: NoteTakerUploadSummary[];\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\CourseOccurrenceBase.cs\r\nexport interface CourseOccurrenceBase extends Course, IHasIntId {\r\n id: number;\r\n coordinatorName?: string;\r\n coordinatorId?: number;\r\n occurrence: string;\r\n studentCount: number;\r\n noteTakerCount: number;\r\n proposedNoteTakersCount: number;\r\n status: CourseOccurrenceStatus;\r\n latestNoteTakerOffer: string;\r\n studyPoints: number;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\Faculty.cs\r\nexport interface Faculty {\r\n id: number;\r\n nameSv: string;\r\n nameEn: string;\r\n isCampus: boolean;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTaker.cs\r\nexport interface NoteTaker\r\n extends NoteTakerBase,\r\n INoteTaker,\r\n ISupportCourseParticipant {\r\n students?: Student[];\r\n proposedCourses?: ProposedCourse[];\r\n supportCourses?: PersonCourse[];\r\n supportCourseOccurrences?: SupportCourseOccurrence[];\r\n isAnActiveStudentInNeed: boolean;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTakerBase.cs\r\nexport interface NoteTakerBase extends Person {\r\n status: NoteTakerStatus;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTakerNotes.cs\r\nexport interface NoteTakerNotes {\r\n courseOccurrenceId: number;\r\n courseUid: string;\r\n courseCode: string;\r\n courseTerm: string;\r\n courseTitleEn: string;\r\n courseTitleSv: string;\r\n noteTakerId: number;\r\n noteTakerFirstName: string;\r\n noteTakerLastName: string;\r\n date: string;\r\n time: string;\r\n file: UploadFile;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTakerOffer.cs\r\nexport interface NoteTakerOffer {\r\n id: number;\r\n courseOccurrenceId: number;\r\n noteTakerId: number;\r\n sent: string;\r\n confirmed?: string;\r\n canceled?: string;\r\n courseOccurrence: CourseOccurrence;\r\n noteTaker: NoteTaker;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTakerParameters.cs\r\nexport interface NoteTakerParameters extends QueryStringParameters {\r\n status: NoteTakerStatus[];\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTakerProposedCourse.cs\r\nexport interface NoteTakerProposedCourse {\r\n noteTakerId: number;\r\n noteTaker: NoteTaker;\r\n courseUid: string;\r\n inserted?: string;\r\n deleted?: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTakerStatusCount.cs\r\nexport interface NoteTakerStatusCount {\r\n status: string;\r\n count: number;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\NoteTakerUploadSummary.cs\r\nexport interface NoteTakerUploadSummary {\r\n noteTakerId: number;\r\n noteTakerName: string;\r\n totalUploads: number;\r\n lastUpload?: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\OverviewNoteTaker.cs\r\nexport interface OverviewNoteTaker extends OverviewPerson, INoteTaker {\r\n status: NoteTakerStatus;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\OverviewPerson.cs\r\nexport interface OverviewPerson extends IPerson, IHasIntId {\r\n id: number;\r\n personalId: string;\r\n luEduPersonPrimaryId: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\OverviewStudent.cs\r\nexport interface OverviewStudent extends OverviewPerson, IStudent {\r\n coordinatorName?: string;\r\n coordinatorId?: number;\r\n grantedSupportDate?: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\PagedList.cs\r\nexport interface PagedList {\r\n items: T[];\r\n currentPage: number;\r\n totalPages: number;\r\n pageSize: number;\r\n totalCount: number;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n sortedIds: number[];\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\PageSection.cs\r\nexport interface PageSection {\r\n id: number;\r\n pageTypeId: number;\r\n titleSv: string;\r\n contentSv: string;\r\n linkTextSv: string;\r\n menuTitleSv: string;\r\n titleEn: string;\r\n contentEn: string;\r\n linkTextEn: string;\r\n menuTitleEn: string;\r\n routerLinkUrl?: string;\r\n externalLinkUrl?: string;\r\n modified: string;\r\n modifiedBy: string;\r\n sortOrder: number;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\PageType.cs\r\nexport interface PageType {\r\n id: number;\r\n name: string;\r\n modified: string;\r\n modifiedBy: string;\r\n pageSections: PageSection[];\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\Person.cs\r\nexport interface Person extends PersonBase, IHasIntId {\r\n id: number;\r\n luEduPersonPrimaryId: string;\r\n personalId: string;\r\n telephoneNumber: string;\r\n address: string;\r\n postcode: string;\r\n city: string;\r\n courses: Course[];\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\PersonBase.cs\r\nexport interface PersonBase {\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\PersonCourse.cs\r\nexport interface PersonCourse {\r\n courseUid: string;\r\n courseOccurrenceId: number;\r\n started?: string;\r\n ended?: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\PersonResponse.cs\r\nexport interface PersonResponse {\r\n studentExists: boolean;\r\n student: Student;\r\n isActiveNoteTaker: boolean;\r\n noteTakerId: number;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\ProposedCourse.cs\r\nexport interface ProposedCourse extends Course {\r\n id: number;\r\n courseOccurrenceId: number;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\QueryStringParameters.cs\r\nexport interface QueryStringParameters {\r\n search?: string;\r\n sortBy: string;\r\n sortOrder: SortOrder;\r\n pageNumber: number;\r\n pageSize: number;\r\n coordinatorId?: number;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\Student.cs\r\nexport interface Student extends Person, ISupportCourseParticipant, IStudent {\r\n coordinatorId?: number;\r\n noteTakers?: NoteTaker[];\r\n coordinator?: Coordinator;\r\n coordinatorName?: string;\r\n grantedSupportDate?: string;\r\n ladokCourseCount: number;\r\n supportCourses?: PersonCourse[];\r\n supportCourseOccurrences?: SupportCourseOccurrence[];\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\StudentCourse.cs\r\nexport interface StudentCourse {\r\n id: number;\r\n studentId?: number;\r\n courseUid: string;\r\n inserted?: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\StudentParameters.cs\r\nexport type StudentParameters = QueryStringParameters;\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\StudyTermInfo.cs\r\nexport interface StudyTermInfo {\r\n previousTerm: string;\r\n thisTerm: string;\r\n nextTerm: string;\r\n startOfPreviousTerm: string;\r\n startOfThisTerm: string;\r\n startOfNextTerm: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\SupportCourseOccurrence.cs\r\nexport interface SupportCourseOccurrence {\r\n courseUid: string;\r\n courseOccurrenceId: number;\r\n titleSv: string;\r\n titleEn: string;\r\n status: CourseOccurrenceStatus;\r\n occurrence: string;\r\n courseOccurrenceStart?: string;\r\n offerDate?: string;\r\n offerConfirmedDate?: string;\r\n assignmentStart?: string;\r\n assignmentEnd?: string;\r\n coordinatorName: string;\r\n deletedByAdmin?: boolean;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\UploadFile.cs\r\nexport interface UploadFile {\r\n name: string;\r\n extension: string;\r\n size: number;\r\n binaryData?: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Interfaces\\IHasIntId.cs\r\nexport interface IHasIntId {\r\n id: number;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Interfaces\\INoteTaker.cs\r\nexport interface INoteTaker extends IPerson {\r\n status: NoteTakerStatus;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Interfaces\\IPerson.cs\r\nexport interface IPerson {\r\n id: number;\r\n personalId: string;\r\n luEduPersonPrimaryId: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Interfaces\\IStudent.cs\r\nexport interface IStudent extends IPerson {\r\n coordinatorName?: string;\r\n grantedSupportDate?: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Interfaces\\ISupportCourseParticipant.cs\r\nexport interface ISupportCourseParticipant {\r\n supportCourses?: PersonCourse[];\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Enums\\CourseOccurrenceStatus.cs\r\nexport enum CourseOccurrenceStatus {\r\n Grey = \"grey\",\r\n Yellow = \"yellow\",\r\n Green = \"green\",\r\n Orange = \"orange\",\r\n Red = \"red\",\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Enums\\FeeDataExportType.cs\r\nexport enum FeeDataExportType {\r\n Basis = \"basis\",\r\n Accounting = \"accounting\",\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Enums\\Locale.cs\r\nexport enum Locale {\r\n Sv = \"sv\",\r\n En = \"en\",\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Enums\\NoteTakerStatus.cs\r\nexport enum NoteTakerStatus {\r\n Incoming = \"incoming\",\r\n Active = \"active\",\r\n Inactive = \"inactive\",\r\n Completed = \"completed\",\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Enums\\SortOrder.cs\r\nexport enum SortOrder {\r\n Asc = \"asc\",\r\n Desc = \"desc\",\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\WebForm\\WF_NationalIdentityNumberChange.cs\r\nexport interface WF_NationalIdentityNumberChange {\r\n luEduPersonPrimaryId: string;\r\n newNationalIdentityNumber: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\TuitionFees\\RegisterCardRequest.cs\r\nexport interface RegisterCardRequest {\r\n invoiceNo: string;\r\n customerEmail: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\TuitionFees\\RegisterCardResponse.cs\r\nexport interface RegisterCardResponse {\r\n resourceUrl: string;\r\n error: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\TuitionFees\\TfPerson.cs\r\nexport interface TfPerson {\r\n luEduPersonPrimaryId: string;\r\n personalId: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n displayName: string;\r\n eduPersonAffiliation: string;\r\n eduPersonPrimaryAffiliation: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\TuitionFees\\Invoice\\Invoice.cs\r\nexport interface Invoice {\r\n customerTrxId: number;\r\n kund: string;\r\n kundNr: string;\r\n nationalIdentification: string;\r\n fakNr: string;\r\n totalAmount: string;\r\n amountDue: string;\r\n transferDate: string;\r\n dueDate: string;\r\n payFlag: string;\r\n description: string;\r\n pending: boolean;\r\n lines: InvoiceLine[];\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\TuitionFees\\Invoice\\InvoiceLine.cs\r\nexport interface InvoiceLine {\r\n description: string;\r\n amount: string;\r\n}\r\n\r\n// ..\\student-portal-backend\\LU.STP.Common\\Models\\TuitionFees\\Nets\\NetsTerminalResponse.cs\r\nexport interface NetsTerminalResponse {\r\n invoiceNumber: string;\r\n transactionId: string;\r\n responseCode: string;\r\n}\r\n","var DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./DeleteIcon.vue?vue&type=style&index=0&id=b7c48bb2&scoped=true&lang=css\"","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar TypeError = global.TypeError;\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","class ArrayHelper {\r\n sortByProperty(\r\n array: T[],\r\n propName: keyof T,\r\n sortAscending: boolean\r\n ): void {\r\n array.sort((a, b) => {\r\n const propA = a[propName] === null ? \"\" : a[propName];\r\n const propB = b[propName] === null ? \"\" : b[propName];\r\n\r\n return propA < propB ? -1 : propA > propB ? 1 : 0;\r\n });\r\n\r\n if (!sortAscending) {\r\n array.reverse();\r\n }\r\n }\r\n}\r\n\r\nexport default new ArrayHelper();\r\n","import { toDisplayString as _toDisplayString, vShow as _vShow, createElementVNode as _createElementVNode, withDirectives as _withDirectives, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, renderSlot as _renderSlot, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = [\"name\"]\nconst _hoisted_2 = { class: \"custom-control custom-radio mr-3\" }\nconst _hoisted_3 = [\"id\", \"name\", \"value\", \"checked\", \"disabled\", \"required\", \"onChange\"]\nconst _hoisted_4 = [\"for\"]\nconst _hoisted_5 = {\n key: 0,\n class: \"form-text text-muted\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"fieldset\", {\n name: `${_ctx.name}_RadioGroup`,\n class: _normalizeClass([\"d-flex\", [\r\n this.verticalLayout ? 'flex-column' : 'flex-row',\r\n this.showFieldset ? '' : 'border-0',\r\n !this.showTitle && this.showFieldset ? 'pt-3' : '',\r\n ]])\n }, [\n _withDirectives(_createElementVNode(\"legend\", null, _toDisplayString(_ctx.name), 513), [\n [_vShow, _ctx.showTitle]\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.values, (value) => {\n return (_openBlock(), _createElementBlock(\"div\", { key: value }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n class: \"custom-control-input\",\n id: `${_ctx.name}_RadioGroup_${value}`,\n name: `${_ctx.name}_RadioGroup`,\n value: value,\n checked: value === _ctx.selected,\n disabled: _ctx.disabled,\n required: _ctx.required,\n onChange: ($event: any) => (_ctx.onChange(value)),\n ref_for: true,\n ref: \"input\",\n onInvalid: _cache[0] || (_cache[0] = ($event: any) => (\r\n _ctx.validityMessage ? _ctx.setValidityMessage(_ctx.validityMessage) : null\r\n ))\n }, null, 40, _hoisted_3),\n _createElementVNode(\"label\", {\n class: \"custom-control-label\",\n for: `${_ctx.name}_RadioGroup_${value}`\n }, [\n _renderSlot(_ctx.$slots, \"default\", { value: value }, () => [\n _createTextVNode(_toDisplayString(value), 1)\n ])\n ], 8, _hoisted_4)\n ])\n ]))\n }), 128))\n ], 10, _hoisted_1),\n (_ctx.helpText)\n ? (_openBlock(), _createElementBlock(\"small\", _hoisted_5, _toDisplayString(_ctx.helpText), 1))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","\r\nimport { PropType } from \"@vue/runtime-core\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {\r\n /**\r\n * The name of the radiobutton group\r\n */\r\n name: {\r\n type: String as PropType,\r\n required: true,\r\n },\r\n /**\r\n * The value options\r\n */\r\n values: {\r\n type: Array,\r\n required: true,\r\n },\r\n /**\r\n * The current selected option\r\n */\r\n selected: {\r\n type: String as PropType,\r\n required: true,\r\n },\r\n /**\r\n * If the radiobuttons should be stack on top of each other\r\n */\r\n verticalLayout: {\r\n type: Boolean as PropType,\r\n required: false,\r\n default: true,\r\n },\r\n /**\r\n * If title should be visible\r\n */\r\n showTitle: {\r\n type: Boolean as PropType,\r\n required: false,\r\n default: true,\r\n },\r\n /**\r\n * If fieldset should be visible\r\n */\r\n showFieldset: {\r\n type: Boolean as PropType,\r\n required: false,\r\n default: true,\r\n },\r\n /**\r\n * If the input is disabled\r\n */\r\n disabled: {\r\n type: Boolean as PropType,\r\n required: false,\r\n default: false,\r\n },\r\n /**\r\n * The help text for the input\r\n */\r\n helpText: {\r\n type: String as PropType,\r\n required: false,\r\n },\r\n /**\r\n * If the input is required\r\n */\r\n required: {\r\n type: Boolean as PropType,\r\n required: false,\r\n default: false,\r\n },\r\n /**\r\n * Custom validity message\r\n */\r\n validityMessage: {\r\n type: String as PropType,\r\n required: false,\r\n },\r\n },\r\n methods: {\r\n /**\r\n * Gets called when the value changes\r\n */\r\n onChange(value: string): void {\r\n this.setValidityMessage(\"\");\r\n this.$emit(\"update:selected\", value);\r\n },\r\n /**\r\n * Sets a custom validity message\r\n *\r\n * @param {string} message The message\r\n */\r\n setValidityMessage(message: string): void {\r\n this.$refs.input[0].setCustomValidity(message);\r\n },\r\n },\r\n})\r\nexport default class RadioButtonGroup extends Vue {}\r\n","import { render } from \"./RadioButtonGroup.vue?vue&type=template&id=21a30830&ts=true\"\nimport script from \"./RadioButtonGroup.vue?vue&type=script&lang=ts\"\nexport * from \"./RadioButtonGroup.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\fr5673mo\\\\Documents\\\\git.lu.se\\\\.net\\\\student-portal\\\\student-portal-web\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"sourceRoot":""}