1const initJobList = () => { 2 const onChangeConditionFiltersCheckbox = () => { 3 let form = $('.js-job-list-filters'); 4 form.find('.job-list-filters__submit').click(); 5 }; 6 7 // å¹´åã¬ã³ã¸ã®å¦¥å½æ§ãã§ãã¯ãä¸éâ§ä¸éï¼åé¡å«ãï¼ãªãã¨ã©ã¼è¡¨ç¤ºã㦠false ãè¿ã 8 const validateSalaryRange = () => { 9 const min = $('.js-job-list-salary-min').val(); 10 const max = $('.js-job-list-salary-max').val(); 11 const invalid = min !== '' && max !== '' && parseInt(min, 10) >= parseInt(max, 10); 12 13 $('.js-job-list-salary-error').prop('hidden', !invalid); 14 $('.js-job-list-salary-min, .js-job-list-salary-max').toggleClass('is-error', invalid); 15 return !invalid; 16 }; 17 18 const onChangeSalarySelect = () => { 19 if (validateSalaryRange()) { 20 onChangeConditionFiltersCheckbox(); 21 } 22 }; 23 24 const onClickSpecificConditionsTrigger = (evt) => { 25 $(evt.currentTarget).toggleClass('is-open'); 26 $('.js-job-list-specific-conditions').toggle(); 27 }; 28 29 const onClickSortBy = (evt) => { 30 let form = $('.js-job-list-filters'), 31 root = $('.js-job-list-sort'), 32 unSelectedSortKey = root.find('.js-job-list-unselected-sort-by'), 33 selectedSortKey = root.find('.js-job-list-selected-sort-by'), 34 target = $(evt.target), 35 sortBy = target.data('sort-by'); 36 37 if (target.hasClass('selected')) { 38 return; 39 } 40 41 form.find('#sort_by').remove(); 42 $('<input>').attr({ 43 'id': 'sort_by', 44 'type': 'hidden', 45 'name': 'sort_by', 46 'value': sortBy 47 }).appendTo(form); 48 49 unSelectedSortKey 50 .removeClass('js-job-list-unselected-sort-by') 51 .addClass('js-job-list-selected-sort-by') 52 .addClass('selected'); 53 selectedSortKey 54 .removeClass('selected') 55 .removeClass('js-job-list-selected-sort-by') 56 .addClass('js-job-list-unselected-sort-by'); 57 58 onChangeConditionFiltersCheckbox(); 59 }; 60 61 $(document).on('change', '.js-job-list-filters-checkbox', onChangeConditionFiltersCheckbox); 62 $(document).on('change', '.js-job-list-salary-min, .js-job-list-salary-max', onChangeSalarySelect); 63 $(document).on('click', '.js-job-list-specific-conditions-trigger', onClickSpecificConditionsTrigger); 64 $(document).on('click', '.js-job-list-sort', onClickSortBy); 65}; 66document.addEventListener('DOMContentLoaded', initJobList()); 67 68// ãã¼ã¸éãã»çµãè¾¼ã¿ã§ job_list ãã¬ã¼ã ãèªã¿è¾¼ã¾ãããä¸è¦§ã®å é ã¸ã¹ã¯ãã¼ã«ããã 69// turbo:frame-load ã¯ãããªã³ã°ãããã document ä¸ã«1åã ãç»é²ããã°ã 70// Turbo Drive ã§ã©ã®ãã¼ã¸ããé·ç§»ãã¦ãã»ãã¬ã¼ã ãå·®ãæ¿ãã£ã¦ã確å®ã«çºç«ããã 71document.addEventListener('turbo:frame-load', (event) => { 72 if (event.target.id !== 'job_list') return; 73 74 const jobListMain = document.querySelector('.job-list-main'); 75 if (jobListMain) { 76 jobListMain.scrollIntoView({ behavior: 'smooth' }); 77 } 78});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.