partialCallbacks = {}; copyText = (text, message, alert) => { navigator.clipboard.writeText(text).then(() => { (alert !== false) && $alert.notify({ type: 'success', title: 'Clipboard', message: (message || 'Text copied to clipboard.'), toast: true, }); }); }; share = (details) => navigator.share($utilities.deepCopy(details)); comingSoon = () => { $alert.notify({ type: 'info', title: 'Feature coming soon', message: 'This feature is currently not available.', toast: true, }); }; transformPathwayOptions = (options) => { let transformed = []; (options || studyProvinces).forEach((item) => { let shareKey = ''; for (let i = 0; i < item.name.length; i++){ shareKey = item.name.at(i); if (shareKey == ' '){ continue; } shareKey = shareKey.toLowerCase(); if (transformed.length == 0 || !transformed.find(opt => opt.share_key === shareKey)){ break; } } transformed.push({ share_key: shareKey, label: item.name, }); }); return transformed; }; studyProvinces = [ { name: 'Alberta', is_good: true, }, { name: 'British Columbia', is_good: false, }, { name: 'Manitoba', is_good: true, }, { name: 'New Brunswick', is_good: true, }, { name: 'Newfoundland and Labrador', is_good: true, }, { name: 'Northwest Territories', is_good: false, }, { name: 'Nunavut', is_good: false, }, { name: 'Ontario', is_good: false, }, { name: 'Prince Edward Island', is_good: true, }, { name: 'Quebec', is_good: false, }, { name: 'Saskatchewan', is_good: true, }, { name: 'Yukon', is_good: false, }, ]; prOccupations = [ { name: 'French-language proficiency', show: false, }, { name: 'Healthcare occupations', show: true, }, { name: 'Science, Technology, Engineering and Math (STEM) occupations', show: true, }, { name: 'Trade occupations', show: true, }, { name: 'Transport occupations', show: true, }, { name: 'Agriculture and Agri-food occupations', show: true, }, ];
$$class(document.body).toggleOn(showMobile, 'overflow-hidden');
showMobile = false;
showMobile = false;
menu
Sign in
close
Home
Partnership
About us
Blog
Get recommendation
Partnership
About us
Blog
Get recommendation
const title = ({"value":"404"}).value; document.title = `${title} | Shirah`;
checkpoint = 0; target = document.querySelector('#modal-mount'); targetParent = target.parentElement; targetParent.style.display = 'none'; setVisible = (show) => { if (show != isVisible){ isVisible = show; targetParent.style.display = (show ? 'flex' : 'none'); $$class(document.body).toggleOn(show, 'overflow-hidden'); } if (show && duration){ const cp = ++checkpoint; window.setTimeout(() => cp == checkpoint && hide(), duration); } }; init = (options) => { options = options || {}; disableParentClick = options.disableParentClick || false; duration = options.duration || 0; ++checkpoint; !options.hidden && show(); }; show = () => setVisible(true); hide = () => setVisible(false); toggleVisible = () => setVisible(!isVisible); onEntered = () => { aIndex = 0; loading = true; target.style.display = 'none'; show(); }; onLoad = () => { loading = false; target.style.display = 'flex'; }; onReload = () => onLoad();
$event.target === targetParent && !disableParentClick && hide();
show = false;
show = false;
show = !show;
if (show && !$static(shown)){ shown = true; $nextTick(() => $refs.menu.focus()); } else{ shown = false; }
menu
Sign in to access this feature
if ($event.detail.data && $event.detail.data.otp){ otpEmail = $event.detail.data.email; $router.goto('ZUeTSG9YG5VtZ8IxDe51://otp'); } else{ window.location.href = ({"value":"\/headed\/objects"}).value; }
Email
*
Password
*
visibility
visibility_off
Sign in
Verify your email address
Please enter the OTP sent to your email address to continue.
$scope.inputs = {}; $scope.otp = Array.from({length: 6}).map(() => ' '); $scope.prevs = Array.from({length: 6}).map(() => ' '); $scope.zeroes = Array.from({length: 6}).map(() => '0').join(); $scope.doAdvance = (event, index) => { const scope = $$scope(this.parentElement); if (event.key === 'Backspace') { event.preventDefault(); if ($rel.lt(index, otp.length)){ scope.otp[index] = ' '; } if ($rel.gt(index, 0)) { $refs[`otp_input_${index - 1}`].focus(); } return; } let value = ($refs[`otp_input_${index}`].value || '').trim(); for (let i = 0; $rel.lt(i, value.length); i++) { if (value[i] !== scope.prevs[index] && /^\d$/.test(value[i])) { value = value[i]; break; } } value = value || scope.prevs[index]; if (value !== ' '){ scope.prevs[index] = value; scope.otp[index] = value; $refs[`otp_input_${index}`].value = value; if ($rel.lt(index, scope.otp.length - 1)) { $refs[`otp_input_${index + 1}`].focus(); } else { $refs[`otp_input_${index}`].blur(); } } }; $scope.advance = (event, index) => { const scope = $$scope(this.parentElement); window.setTimeout(() => scope.doAdvance(event, index), 0); }; $scope.paste = (data, index) => { const text = (data || window.clipboardData).getData('text'), scope = $$scope(this.parentElement); for (let i = 0, j = 0; $log.and($rel.lt(i, scope.otp.length), $rel.lt(j, text.length)); j++) { if (/^\d$/.test(text[j])) { scope.otp[i] = text[j]; i++; } } };
$scope.joinedOtp = $scope.otp.join('');
$scope.onKeydown = (event) => { if (event.key === 'Backspace'){ event.preventDefault(); $parent.otp[0] = ' '; event.target.value = ' '; event.target.blur(); } else if (/^\d$/.test(event.key || '')){ event.preventDefault(); $parent.otp[0] = event.key; event.target.value = event.key; $refs.otp_input_1.focus(); } else{ $parent.advance(event, 0); } };
$scope.onKeydown = (event) => { if (event.key === 'Backspace'){ event.preventDefault(); $parent.otp[1] = ' '; event.target.value = ' '; $refs.otp_input_0.focus(); } else if (/^\d$/.test(event.key || '')){ event.preventDefault(); $parent.otp[1] = event.key; event.target.value = event.key; $refs.otp_input_2.focus(); } else{ $parent.advance(event, 1); } };
$scope.onKeydown = (event) => { if (event.key === 'Backspace'){ event.preventDefault(); $parent.otp[2] = ' '; event.target.value = ' '; $refs.otp_input_1.focus(); } else if (/^\d$/.test(event.key || '')){ event.preventDefault(); $parent.otp[2] = event.key; event.target.value = event.key; $refs.otp_input_3.focus(); } else{ $parent.advance(event, 2); } };
$scope.onKeydown = (event) => { if (event.key === 'Backspace'){ event.preventDefault(); $parent.otp[3] = ' '; event.target.value = ' '; $refs.otp_input_2.focus(); } else if (/^\d$/.test(event.key || '')){ event.preventDefault(); $parent.otp[3] = event.key; event.target.value = event.key; $refs.otp_input_4.focus(); } else{ $parent.advance(event, 3); } };
$scope.onKeydown = (event) => { if (event.key === 'Backspace'){ event.preventDefault(); $parent.otp[4] = ' '; event.target.value = ' '; $refs.otp_input_3.focus(); } else if (/^\d$/.test(event.key || '')){ event.preventDefault(); $parent.otp[4] = event.key; event.target.value = event.key; $refs.otp_input_5.focus(); } else{ $parent.advance(event, 4); } };
$scope.onKeydown = (event) => { if (event.key === 'Backspace'){ event.preventDefault(); $parent.otp[5] = ' '; event.target.value = ' '; $refs.otp_input_4.focus(); } else if (/^\d$/.test(event.key || '')){ event.preventDefault(); $parent.otp[5] = event.key; event.target.value = event.key; event.target.blur(); } else{ $parent.advance(event, 5); } };
Verify
window.location.href = ({"value":"\/headed\/objects"}).value;
onProgress = (progress, isComplete) => { percentage = $rel.lt(progress, 1) ? progress * 100 : 100; if (isComplete && isActive){ const chkpt = (checkpoint = (checkpoint || 0) + 1); window.setTimeout(() => (chkpt === checkpoint && (isActive = false)), 500); } else if (!isComplete && !isActive){ isActive = true; } };
onLoad = () => { $resource.getStyle('/headless/client/static/css/visible-material-symbols.css'); };