--- client/views/component/file/Attachment.vue
+++ client/views/component/file/Attachment.vue
... | ... | @@ -15,12 +15,12 @@ |
15 | 15 |
</div> |
16 | 16 |
<p class="detail-text text-ct mb15">{{ text }}</p> |
17 | 17 |
<div class="flex justify-center"> |
18 |
- <label :for="type ? type : `file-upload-${id}`" class="small-btn upload-btn text-ct block relative" role="button" aria-controls="file-upload" aria-label="파일 업로드 버튼"> |
|
18 |
+ <label :for="type ? type : `file-upload-${id}`" class="small-btn upload-btn text-ct block relative" aria-controls="file-upload" aria-label="파일 업로드 버튼" :aria-required="type === 'registration' || type === 'applyForm' || type === 'certification'"> |
|
19 | 19 |
<img src="../../../resources/img/upload.png" alt="업로드 아이콘" class="inline-block mr10" |
20 | 20 |
style="vertical-align:bottom" /> |
21 | 21 |
파일선택 |
22 | 22 |
</label> |
23 |
- <input type="file" :id="type ? type : `file-upload-${id}`" class="absolute opacity-0" @change="handleFileInput" aria-hidden="true"/> |
|
23 |
+ <input type="file" :id="type ? type : `file-upload-${id}`" class="absolute opacity-0" @change="handleFileInput" aria-hidden="true" /> |
|
24 | 24 |
</div> |
25 | 25 |
</div> |
26 | 26 |
<div v-if="files.filelist.length > 0"> |
... | ... | @@ -32,8 +32,8 @@ |
32 | 32 |
<span class="extension">[{{ formatFileSize(file.size) }}]</span> |
33 | 33 |
</div> |
34 | 34 |
<div class="gd-2 flex justify-end align-center"> |
35 |
- <button class="icon-btn black" v-if="updateFile !== null"></button> |
|
36 |
- <button class="icon-btn black" aria-label="removeFile" title="이미지 취소" @click="removeFiles()" id="removeFile" v-else><svg-icon type="mdi" :path="closePath" role="img" aria-labelledby="removeFile"></svg-icon></button> |
|
35 |
+ <button type="button" class="icon-btn black" v-if="updateFile !== null"></button> |
|
36 |
+ <button type="button" class="icon-btn black" aria-label="removeFile" title="이미지 취소" @click="removeFiles()" id="removeFile" v-else><svg-icon type="mdi" :path="closePath" role="img" aria-labelledby="removeFile"></svg-icon></button> |
|
37 | 37 |
</div> |
38 | 38 |
</li> |
39 | 39 |
</ul> |
... | ... | @@ -46,7 +46,7 @@ |
46 | 46 |
<span class="extension">[{{ formatFileSize(file.size) }}]</span> |
47 | 47 |
</div> |
48 | 48 |
<div class="gd-2 flex justify-end align-center"> |
49 |
- <button class="icon-btn black" aria-label="removeFile" title="이미지 취소" @click="removeFile(file, index)" id="removeFile"><svg-icon type="mdi" :path="closePath" role="img" aria-labelledby="removeFile"></svg-icon></button> |
|
49 |
+ <button type="button" class="icon-btn black" aria-label="removeFile" title="이미지 취소" @click="removeFile(file, index)" id="removeFile"><svg-icon type="mdi" :path="closePath" role="img" aria-labelledby="removeFile"></svg-icon></button> |
|
50 | 50 |
</div> |
51 | 51 |
</li> |
52 | 52 |
</ul> |
--- client/views/index.js
+++ client/views/index.js
... | ... | @@ -29,13 +29,14 @@ |
29 | 29 |
.use(VueDaumPostcode) |
30 | 30 |
.use(COMMON_UTIL) |
31 | 31 |
.use(VueCookies) |
32 |
- .use(cmmnPlugin) |
|
32 |
+ .use(cmmnPlugin) |
|
33 | 33 |
.component("svg-icon", SvgIcon) |
34 | 34 |
.component('VueDatePicker', VueDatePicker); |
35 | 35 |
vue.directive("click-outside", clickOutside); |
36 | 36 |
vue.config.globalProperties.$filters = filters; |
37 | 37 |
vue.config.devtools = true; |
38 | 38 |
|
39 |
+ |
|
39 | 40 |
vue.mount("#root"); |
40 | 41 |
|
41 | 42 |
} |
--- client/views/layout/MoblieMenu.vue
+++ client/views/layout/MoblieMenu.vue
... | ... | @@ -1,27 +1,31 @@ |
1 | 1 |
<template> |
2 |
- <!-- 모바일용 메뉴 --> |
|
3 |
- <nav class="mobile"> |
|
4 |
- <button class="icon-btn" @click="toggleMenu" aria-label="mobile menu" aria-expanded="menuOpen"><svg-icon type="mdi" :path="menuPath" role="img" aria-labelledby="mobile menu"></svg-icon></button> |
|
5 |
- <ul :class="{ 'mobile-menu': true, show: menuOpen }"> |
|
6 |
- <li v-if="menuOpen" class="close-button flex justify-end"> |
|
7 |
- <button @click="toggleMenu" aria-label="menu close"><svg-icon type="mdi" :path="closePath" rol="img" aria-labelledby="menu close"></svg-icon></button> |
|
8 |
- </li> |
|
9 |
- <li v-for="(mainMenu, index) in menuList" :key="index" |
|
2 |
+ <!-- 모바일용 메뉴 --> |
|
3 |
+ <nav class="mobile"> |
|
4 |
+ <button class="icon-btn" @click="toggleMenu" aria-label="mobile menu" :aria-expanded="menuOpen"> |
|
5 |
+ <svg-icon type="mdi" :path="menuPath" role="img" aria-labelledby="mobile menu"></svg-icon> |
|
6 |
+ </button> |
|
7 |
+ <ul :class="{ 'mobile-menu': true, show: menuOpen }" role="menu"> |
|
8 |
+ <li v-if="menuOpen" class="close-button flex justify-end"> |
|
9 |
+ <button @click="toggleMenu" aria-label="menu close"> |
|
10 |
+ <svg-icon type="mdi" :path="closePath" role="img" aria-labelledby="menu close"></svg-icon> |
|
11 |
+ </button> |
|
12 |
+ </li> |
|
13 |
+ <li v-for="(mainMenu, index) in menuList" :key="index" |
|
10 | 14 |
:class="{ 'cursor relative': true, active: currentActiveIndex === index }" |
11 |
- @click="toggleSubMenu(index)"> |
|
12 |
- <p role="menuitem" tabindex="0" aria-haspopup="true" |
|
13 |
- :aria-expanded="currentOpenIndex === index" class="pd10">{{ mainMenu.menuNm }}</p> |
|
14 |
- <ul v-if="currentOpenIndex === index && mainMenu.childList.length > 0" |
|
15 |
- :class="{ 'sub-menu': true, show: currentOpenIndex === index }"> |
|
16 |
- <li v-for="(subMenu, subIndex) in mainMenu.childList" :key="subIndex" @click.stop="selectSubMenu(index, subIndex, subMenu, mainMenu)" |
|
17 |
- role="none"> |
|
18 |
- <p role="menuitem" tabindex="-1">{{ subMenu.menuNm }}</p> |
|
19 |
- </li> |
|
20 |
- </ul> |
|
21 |
- </li> |
|
22 |
- </ul> |
|
23 |
- </nav> |
|
24 |
- </template> |
|
15 |
+ @click="toggleSubMenu(index)" role="menuitem"> |
|
16 |
+ <p tabindex="0" aria-haspopup="true" |
|
17 |
+ :aria-expanded="currentOpenIndex === index" class="pd10">{{ mainMenu.menuNm }}</p> |
|
18 |
+ <ul v-if="currentOpenIndex === index && mainMenu.childList.length > 0" |
|
19 |
+ :class="{ 'sub-menu': true, show: currentOpenIndex === index }" role="menu"> |
|
20 |
+ <li v-for="(subMenu, subIndex) in mainMenu.childList" :key="subIndex" |
|
21 |
+ @click.stop="selectSubMenu(index, subIndex, subMenu, mainMenu)" role="menuitem"> |
|
22 |
+ <p tabindex="-1">{{ subMenu.menuNm }}</p> |
|
23 |
+ </li> |
|
24 |
+ </ul> |
|
25 |
+ </li> |
|
26 |
+ </ul> |
|
27 |
+ </nav> |
|
28 |
+</template> |
|
25 | 29 |
|
26 | 30 |
<script> |
27 | 31 |
import { mdiTemperatureCelsius } from "@mdi/js"; |
--- client/views/layout/UserMenu.vue
+++ client/views/layout/UserMenu.vue
... | ... | @@ -1,5 +1,5 @@ |
1 | 1 |
<template> |
2 |
- <nav role="navigation" id="mainNav" aria-label="Main Menu"> |
|
2 |
+ <nav id="mainNav" aria-label="Main Menu"> |
|
3 | 3 |
<ul class="main-menu flex justify-start align-center" role="menu" > |
4 | 4 |
<li v-for="(mainMenu, index) in menuList" :key="index" role="menuitem" :class="{ |
5 | 5 |
'pd10 cursor relative': true, |
... | ... | @@ -10,9 +10,9 @@ |
10 | 10 |
mainMenu.menuNm }}</router-link> |
11 | 11 |
<ul v-if="mainMenu.childList.length > 0" class="sub-menu" :class="{ |
12 | 12 |
show: showAllMenus |
13 |
- }"> |
|
13 |
+ }" role="menu"> |
|
14 | 14 |
<!-- 이벤트 버블링 현상을 막기 위해 click.stop으로 사용 --> |
15 |
- <li v-for="(subMenu, subIndex) in mainMenu.childList" :key="subIndex" @click.stop="clearQuery(subMenu)"> |
|
15 |
+ <li v-for="(subMenu, subIndex) in mainMenu.childList" :key="subIndex" @click.stop="clearQuery(subMenu)" role="menuitem"> |
|
16 | 16 |
<router-link :to="subMenu.routerUrl" active-class="sub-active" @focusin="showAllSubMenus(index)" |
17 | 17 |
@focusout="scheduleHideAllSubMenus">{{ subMenu.menuNm }}</router-link> |
18 | 18 |
</li> |
--- client/views/pages/App.vue
+++ client/views/pages/App.vue
... | ... | @@ -20,14 +20,15 @@ |
20 | 20 |
// && this.$store.state.authorization != null |
21 | 21 |
" /> |
22 | 22 |
<!-- <UserHeader v-if="this.$route.path.startsWith('/company') || this.$route.path.startsWith('/government')" /> --> |
23 |
- <main class="main-warp" id="mainContent" role="main"> |
|
23 |
+ <main class="main-warp" id="mainContent"> |
|
24 | 24 |
<router-view /> |
25 | 25 |
</main> |
26 | 26 |
<Footer v-if=" |
27 | 27 |
(this.$route.path.startsWith('/aidt') || this.$route.path === '/cmmn/join.page') |
28 | 28 |
" /> |
29 |
- <button class="top-scroll radius" aria-label="scroll move top button" id="scrollMoveTop" @click="scrollToTop" v-if="this.$route.path.startsWith('/aidt')"><svg-icon |
|
30 |
- type="mdi" :path="path" role="img" aria-labelledby="scrollMoveTop"></svg-icon></button> |
|
29 |
+ <button class="top-scroll radius" aria-label="scroll move top button" id="scrollMoveTop" @click="scrollToTop" |
|
30 |
+ v-if="this.$route.path.startsWith('/aidt')"><svg-icon type="mdi" :path="path" role="img" |
|
31 |
+ aria-labelledby="scrollMoveTop"></svg-icon></button> |
|
31 | 32 |
</div> |
32 | 33 |
<LoadingSpinner></LoadingSpinner> |
33 | 34 |
</template> |
... | ... | @@ -76,37 +77,37 @@ |
76 | 77 |
}, |
77 | 78 |
|
78 | 79 |
//웹접근성 관련 화살표 이벤트 |
79 |
- // handleKeydown(event) { |
|
80 |
- // const { key } = event; |
|
81 |
- // const activeElement = document.activeElement; |
|
82 |
- |
|
83 |
- // if (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA') { |
|
84 |
- // const cursorPos = activeElement.selectionStart; |
|
85 |
- // const valueLength = activeElement.value.length; |
|
80 |
+ handleKeydown(event) { |
|
81 |
+ const { key } = event; |
|
82 |
+ const activeElement = document.activeElement; |
|
86 | 83 |
|
87 |
- // if (key === 'ArrowLeft' && cursorPos > 0) return; |
|
88 |
- // if (key === 'ArrowRight' && cursorPos < valueLength) return; |
|
89 |
- // if (key === 'ArrowUp' || key === 'ArrowDown') return; |
|
90 |
- // } |
|
84 |
+ if (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA') { |
|
85 |
+ const cursorPos = activeElement.selectionStart; |
|
86 |
+ const valueLength = activeElement.value.length; |
|
91 | 87 |
|
92 |
- // if (key === 'ArrowDown' || key === 'ArrowUp' || key === 'ArrowRight' || key === 'ArrowLeft') { |
|
93 |
- // event.preventDefault(); |
|
94 |
- // this.navigateWithArrowKeys(key); |
|
95 |
- // } |
|
96 |
- // }, |
|
88 |
+ if (key === 'ArrowLeft' && cursorPos > 0) return; |
|
89 |
+ if (key === 'ArrowRight' && cursorPos < valueLength) return; |
|
90 |
+ if (key === 'ArrowUp' || key === 'ArrowDown') return; |
|
91 |
+ } |
|
97 | 92 |
|
98 |
- // navigateWithArrowKeys(key) { |
|
99 |
- // const focusableElements = COMMON_UTIL.getFocusableElements(); |
|
100 |
- // let currentIndex = focusableElements.indexOf(document.activeElement); |
|
93 |
+ if (key === 'ArrowDown' || key === 'ArrowUp' || key === 'ArrowRight' || key === 'ArrowLeft') { |
|
94 |
+ event.preventDefault(); |
|
95 |
+ this.navigateWithArrowKeys(key); |
|
96 |
+ } |
|
97 |
+ }, |
|
101 | 98 |
|
102 |
- // if (key === 'ArrowDown' || key === 'ArrowRight') { |
|
103 |
- // currentIndex = (currentIndex + 1) % focusableElements.length; |
|
104 |
- // } else if (key === 'ArrowUp' || key === 'ArrowLeft') { |
|
105 |
- // currentIndex = (currentIndex - 1 + focusableElements.length) % focusableElements.length; |
|
106 |
- // } |
|
99 |
+ navigateWithArrowKeys(key) { |
|
100 |
+ const focusableElements = COMMON_UTIL.getFocusableElements(); |
|
101 |
+ let currentIndex = focusableElements.indexOf(document.activeElement); |
|
107 | 102 |
|
108 |
- // focusableElements[currentIndex].focus(); |
|
109 |
- // }, |
|
103 |
+ if (key === 'ArrowDown' || key === 'ArrowRight') { |
|
104 |
+ currentIndex = (currentIndex + 1) % focusableElements.length; |
|
105 |
+ } else if (key === 'ArrowUp' || key === 'ArrowLeft') { |
|
106 |
+ currentIndex = (currentIndex - 1 + focusableElements.length) % focusableElements.length; |
|
107 |
+ } |
|
108 |
+ |
|
109 |
+ focusableElements[currentIndex].focus(); |
|
110 |
+ }, |
|
110 | 111 |
}, |
111 | 112 |
watch: {}, |
112 | 113 |
computed: { |
--- client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectList.vue
+++ client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectList.vue
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 |
</div> |
9 | 9 |
<div :class="{ 'top-banner banner': true, [bannerId]: true }" v-else-if="this.$route.path.startsWith('/aidt')"> |
10 | 10 |
<div class="flex-column align-center justify-center content"> |
11 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
11 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
12 | 12 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
13 | 13 |
</div> |
14 | 14 |
</div> |
--- client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/commonTemplate/CommonSelectListOne.vue
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 |
</div> |
9 | 9 |
<div :class="{ 'top-banner banner': true, [bannerId]: true }" v-else-if="this.$route.path.startsWith('/aidt')"> |
10 | 10 |
<div class="flex-column align-center justify-center content"> |
11 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
11 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
12 | 12 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
13 | 13 |
</div> |
14 | 14 |
</div> |
--- client/views/pages/adm/boardManagement/template/faqTemplate/FaqInsert.vue
+++ client/views/pages/adm/boardManagement/template/faqTemplate/FaqInsert.vue
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 |
</div> |
10 | 10 |
<div :class="{ 'top-banner banner': true, [bannerId]: true }" v-else-if="this.$route.path.startsWith('/aidt')"> |
11 | 11 |
<div class="flex-column align-center justify-center content"> |
12 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
12 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
13 | 13 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
14 | 14 |
</div> |
15 | 15 |
</div> |
--- client/views/pages/adm/boardManagement/template/faqTemplate/FaqSelectList.vue
+++ client/views/pages/adm/boardManagement/template/faqTemplate/FaqSelectList.vue
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 |
</div> |
9 | 9 |
<div :class="{'top-banner banner': true, [bannerId]: true}" v-else-if="this.$route.path.startsWith('/aidt')"> |
10 | 10 |
<div class="flex-column align-center justify-center content"> |
11 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
11 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
12 | 12 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
13 | 13 |
</div> |
14 | 14 |
</div> |
--- client/views/pages/adm/boardManagement/template/faqTemplate/FaqSelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/faqTemplate/FaqSelectListOne.vue
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 |
</div> |
9 | 9 |
<div :class="{ 'top-banner banner': true, [bannerId]: true }" v-else-if="this.$route.path.startsWith('/aidt')"> |
10 | 10 |
<div class="flex-column align-center justify-center content"> |
11 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
11 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
12 | 12 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
13 | 13 |
</div> |
14 | 14 |
</div> |
--- client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectList.vue
+++ client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectList.vue
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 |
</div> |
9 | 9 |
<div :class="{'top-banner banner': true, [bannerId]: true}" v-else-if="this.$route.path.startsWith('/aidt')"> |
10 | 10 |
<div class="flex-column align-center justify-center content"> |
11 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
11 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
12 | 12 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
13 | 13 |
</div> |
14 | 14 |
</div> |
--- client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/galleryTemplate/GallerySelectListOne.vue
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 |
</div> |
9 | 9 |
<div :class="{ 'top-banner banner': true, [bannerId]: true }" v-else-if="this.$route.path.startsWith('/aidt')"> |
10 | 10 |
<div class="flex-column align-center justify-center content"> |
11 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
11 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
12 | 12 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
13 | 13 |
</div> |
14 | 14 |
</div> |
--- client/views/pages/adm/boardManagement/template/videoTemplate/VideoInsert.vue
+++ client/views/pages/adm/boardManagement/template/videoTemplate/VideoInsert.vue
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 |
</div> |
9 | 9 |
<div :class="{ 'top-banner banner': true, [bannerId]: true }" v-else-if="this.$route.path.startsWith('/aidt')"> |
10 | 10 |
<div class="flex-column align-center justify-center content"> |
11 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
11 |
+ <h1 class="banner-title text-ct white" >{{ $getMenuInfo().menuNm }}</h1> |
|
12 | 12 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
13 | 13 |
</div> |
14 | 14 |
</div> |
--- client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectList.vue
+++ client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectList.vue
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 |
</div> |
9 | 9 |
<div :class="{ 'top-banner banner': true, [bannerId]: true }" v-else-if="this.$route.path.startsWith('/aidt')"> |
10 | 10 |
<div class="flex-column align-center justify-center content"> |
11 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
11 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
12 | 12 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn}}</p> |
13 | 13 |
</div> |
14 | 14 |
</div> |
--- client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectListOne.vue
+++ client/views/pages/adm/boardManagement/template/videoTemplate/VideoSelectListOne.vue
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 |
</div> |
9 | 9 |
<div :class="{ 'top-banner banner': true, [bannerId]: true }" v-else-if="this.$route.path.startsWith('/aidt')"> |
10 | 10 |
<div class="flex-column align-center justify-center content"> |
11 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
11 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
12 | 12 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
13 | 13 |
</div> |
14 | 14 |
</div> |
--- client/views/pages/adm/technicalEducation/TechnicalEducationList.vue
+++ client/views/pages/adm/technicalEducation/TechnicalEducationList.vue
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 |
<div :class="{ 'top-banner banner guide-banner': true, [bannerId]: true }" |
10 | 10 |
v-else-if="this.$route.path.startsWith('/aidt')"> |
11 | 11 |
<div class="flex-column align-center justify-center content"> |
12 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
12 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
13 | 13 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
14 | 14 |
</div> |
15 | 15 |
</div> |
--- client/views/pages/adm/technicalEducation/TechnicalEducationView.vue
+++ client/views/pages/adm/technicalEducation/TechnicalEducationView.vue
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 |
<div :class="{ 'top-banner banner guide-banner': true, [bannerId]: true }" |
10 | 10 |
v-else-if="this.$route.path.startsWith('/aidt')"> |
11 | 11 |
<div class="flex-column align-center justify-center content"> |
12 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
12 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
13 | 13 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
14 | 14 |
</div> |
15 | 15 |
</div> |
--- client/views/pages/login/Login.vue
+++ client/views/pages/login/Login.vue
... | ... | @@ -1,9 +1,9 @@ |
1 | 1 |
<template> |
2 |
- <div class="login-page page"> |
|
2 |
+ <div class="login-page page" > |
|
3 | 3 |
<div class="flex-column justify-center align-center content"> |
4 | 4 |
<div class="login-wrap pd30 border"> |
5 | 5 |
<div v-show="pageStep === 0"> |
6 |
- <div class="page-title text-ct mb40">LOGIN</div> |
|
6 |
+ <h1 class="page-title text-ct mb40">LOGIN</h1> |
|
7 | 7 |
<div class="input-group field mb20"> |
8 | 8 |
<input type="text" name="" id="id" class="full-input login-input" placeholder="아이디를 입력하세요" |
9 | 9 |
v-model="member['lgnId']" /> |
... | ... | @@ -15,12 +15,12 @@ |
15 | 15 |
<label for="pw" class="login-label">비밀번호</label> |
16 | 16 |
</div> |
17 | 17 |
<div class="find-zone flex justify-end align-center mb40"> |
18 |
- <p class="detail-text pl10 pr10" @click="goFindInfo('id')">아이디 찾기 |
|
18 |
+ <router to="#" class="detail-text pl10 pr10" @click="goFindInfo('id')">아이디 찾기 |
|
19 | 19 |
<!-- <router-link :to="{ name: 'FindInfo', params: { type: 'id' } }">아이디 찾기</router-link> --> |
20 |
- </p> |
|
21 |
- <p class="detail-text pl10 pr0" @click="goFindInfo('pw')">비밀번호 찾기 |
|
20 |
+ </router> |
|
21 |
+ <router to="#" class="detail-text pl10 pr0" @click="goFindInfo('pw')">비밀번호 찾기 |
|
22 | 22 |
<!-- <router-link :to="{ name: 'FindInfo', params: { type: 'password' } }">비밀번호 찾기</router-link> --> |
23 |
- </p> |
|
23 |
+ </router> |
|
24 | 24 |
</div> |
25 | 25 |
<button class="large-btn darkg-btn fw-bold" title="로그인" @click="fnValid"> |
26 | 26 |
로그인 |
--- client/views/pages/user/inquiry/ent/entInquirySelectList.vue
+++ client/views/pages/user/inquiry/ent/entInquirySelectList.vue
... | ... | @@ -3,7 +3,7 @@ |
3 | 3 |
<div :class="{ 'top-banner banner guide-banner': true, [bannerId]: true }" |
4 | 4 |
v-if="this.$route.path.startsWith('/aidt')" role="banner"> |
5 | 5 |
<div class="flex-column align-center justify-center content"> |
6 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
6 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
7 | 7 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
8 | 8 |
</div> |
9 | 9 |
</div> |
--- client/views/pages/user/inquiry/ent/entInquirySelectOne.vue
+++ client/views/pages/user/inquiry/ent/entInquirySelectOne.vue
... | ... | @@ -3,7 +3,7 @@ |
3 | 3 |
<div :class="{ 'top-banner banner guide-banner': true, [bannerId]: true }" |
4 | 4 |
v-if="this.$route.path.startsWith('/aidt')"> |
5 | 5 |
<div class="flex-column align-center justify-center content"> |
6 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
6 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
7 | 7 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
8 | 8 |
</div> |
9 | 9 |
</div> |
--- client/views/pages/user/inquiry/ent/entInquiryUpdate.vue
+++ client/views/pages/user/inquiry/ent/entInquiryUpdate.vue
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 |
<div :class="{ 'top-banner banner guide-banner': true, [bannerId]: true }" |
5 | 5 |
v-if="this.$route.path.startsWith('/aidt')"> |
6 | 6 |
<div class="flex-column align-center justify-center content"> |
7 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
7 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
8 | 8 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
9 | 9 |
</div> |
10 | 10 |
</div> |
--- client/views/pages/user/introduction/Introduction.vue
+++ client/views/pages/user/introduction/Introduction.vue
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 |
<div class="content" style="background-color: #f8f8f8;"> |
3 | 3 |
<div :class="{ 'top-banner banner': true, [bannerId]: true }" v-if="this.$route.path.startsWith('/aidt')"> |
4 | 4 |
<div class="flex-column align-center justify-center content"> |
5 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
5 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
6 | 6 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
7 | 7 |
</div> |
8 | 8 |
</div> |
--- client/views/pages/user/join/Join.vue
+++ client/views/pages/user/join/Join.vue
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 |
<div class="content"> |
3 | 3 |
<div class="top-banner banner"> |
4 | 4 |
<div class="flex-column align-center justify-center content"> |
5 |
- <h1 class="banner-title text-ct white">회원가입</h1> |
|
5 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">회원가입</h1> |
|
6 | 6 |
</div> |
7 | 7 |
</div> |
8 | 8 |
<PageNavigationBar /> |
... | ... | @@ -31,7 +31,7 @@ |
31 | 31 |
</div> |
32 | 32 |
|
33 | 33 |
<div class="flex justify-center"> |
34 |
- <NiceM :service="'prov'" @revData="requestEvent" /> |
|
34 |
+ <NiceM :service="'devs'" @revData="requestEvent" /> |
|
35 | 35 |
<!-- prov = 실제 호출 devf = 실패시 테스트, devs = 성공테스트 --> |
36 | 36 |
</div> |
37 | 37 |
</div> |
... | ... | @@ -971,18 +971,18 @@ |
971 | 971 |
// niceObj.sDupInfo 중복확인값(개인 고유 번호64Byte) |
972 | 972 |
|
973 | 973 |
// 반환값이 있는 경우 만 14세 검사 |
974 |
- if (!vm.checkAgeUnderFourteen(niceObj.sBirthDate)) { |
|
975 |
- alert("만 14세 이하는 가입할 수 없습니다. 메인페이지로 이동합니다."); |
|
976 |
- vm.$router.push({ path: '/' }); |
|
977 |
- return; |
|
978 |
- } |
|
974 |
+ // if (!vm.checkAgeUnderFourteen(niceObj.sBirthDate)) { |
|
975 |
+ // alert("만 14세 이하는 가입할 수 없습니다. 메인페이지로 이동합니다."); |
|
976 |
+ // vm.$router.push({ path: '/' }); |
|
977 |
+ // return; |
|
978 |
+ // } |
|
979 | 979 |
|
980 |
- const res = await vm.isNiceDuplicated(niceObj.sDupInfo) |
|
981 |
- if (!res.data.success) { |
|
982 |
- alert("이미 가입이 완료된 회원입니다. 로그인 페이지로 이동합니다") |
|
983 |
- vm.$router.push({ path: '/login.page' }) |
|
984 |
- return |
|
985 |
- } |
|
980 |
+ // const res = await vm.isNiceDuplicated(niceObj.sDupInfo) |
|
981 |
+ // if (!res.data.success) { |
|
982 |
+ // alert("이미 가입이 완료된 회원입니다. 로그인 페이지로 이동합니다") |
|
983 |
+ // vm.$router.push({ path: '/login.page' }) |
|
984 |
+ // return |
|
985 |
+ // } |
|
986 | 986 |
|
987 | 987 |
vm.user_info.mbrEncptFlnm = niceObj.sName; |
988 | 988 |
if (niceObj.sMobileNo && niceObj.sMobileNo.length === 11) { |
--- client/views/pages/user/main/Main.vue
+++ client/views/pages/user/main/Main.vue
... | ... | @@ -7,8 +7,10 @@ |
7 | 7 |
<div class="swiper-wrapper"> |
8 | 8 |
<div class="swiper-slide relative slide1"> |
9 | 9 |
<div class="main-text white"> |
10 |
- <div class="slide-content" @mouseover="pauseAutoplay" @mouseleave="resumeAutoplay"> |
|
11 |
- <h3 class="text-ct mb30">AI 디지털교과서<br /><span>통합지원센터</span></h3> |
|
10 |
+ <div class="slide-content" @mouseover="pauseAutoplay" @mouseleave="resumeAutoplay" |
|
11 |
+ aria-label="AI 디지털교과서 통합지원센터" aria-live="polite"> |
|
12 |
+ <h3 class="text-ct mb30" >AI |
|
13 |
+ 디지털교과서<br /><span>통합지원센터</span></h3> |
|
12 | 14 |
<p class="text-ct box-title"> |
13 | 15 |
AI 디지털교과서 관련 최신 기술 동향 정보를 제공합니다.<br /> |
14 | 16 |
양질의 AI 디지털교과서 개발을 위해 기술적·행정적으로 지원합니다.<br /> |
... | ... | @@ -20,8 +22,10 @@ |
20 | 22 |
</div> |
21 | 23 |
<div class="swiper-slide relative slide2"> |
22 | 24 |
<div class="main-text white"> |
23 |
- <div class="slide-content" @mouseover="pauseAutoplay" @mouseleave="resumeAutoplay"> |
|
24 |
- <h3 class="text-ct mb30">AI 디지털교과서<br /><span>개발 가이드라인</span></h3> |
|
25 |
+ <div class="slide-content" @mouseover="pauseAutoplay" @mouseleave="resumeAutoplay" |
|
26 |
+ aria-label="AI 디지털교과서 개발 가이드라인" aria-live="polite"> |
|
27 |
+ <h3 class="text-ct mb30" >AI 디지털교과서<br /><span>개발 |
|
28 |
+ 가이드라인</span></h3> |
|
25 | 29 |
<p class="text-ct box-title"> |
26 | 30 |
세계에서 최초로 시도되는 국가 단위의 AI 디지털교과서 도입은<br /> |
27 | 31 |
학습자 중심의 맞춤형 학습 체제로의 전환을 위한 핵심 과제입니다.<br /> |
... | ... | @@ -33,8 +37,9 @@ |
33 | 37 |
</div> |
34 | 38 |
<div class="swiper-slide relative slide3"> |
35 | 39 |
<div class="main-text white"> |
36 |
- <div class="slide-content" @mouseover="pauseAutoplay" @mouseleave="resumeAutoplay"> |
|
37 |
- <h3 class="text-ct mb30">모두의 눈높이에 |
|
40 |
+ <div class="slide-content" @mouseover="pauseAutoplay" @mouseleave="resumeAutoplay" |
|
41 |
+ aria-label="모두의 눈높이에 맞춘 AI 디지털교과서" aria-live="polite"> |
|
42 |
+ <h3 class="text-ct mb30" >모두의 눈높이에 |
|
38 | 43 |
맞춘<br /><span>AI 디지털교과서</span></h3> |
39 | 44 |
<p class="text-ct box-title"> |
40 | 45 |
학생은 맞춤 학습 콘텐츠로 학습 자신감을 키워나가고,<br /> |
... | ... | @@ -47,8 +52,10 @@ |
47 | 52 |
</div> |
48 | 53 |
<div class="swiper-slide relative slide4"> |
49 | 54 |
<div class="main-text white"> |
50 |
- <div class="slide-content" @mouseover="pauseAutoplay" @mouseleave="resumeAutoplay"> |
|
51 |
- <h3 class="text-ct mb30">디지털 기반<br /><span>교육혁신 방안</span></h3> |
|
55 |
+ <div class="slide-content" @mouseover="pauseAutoplay" @mouseleave="resumeAutoplay" |
|
56 |
+ aria-label="디지털 기반 교육혁신 방안" aria-live="polite"> |
|
57 |
+ <h3 class="text-ct mb30">디지털 기반<br /><span>교육혁신 방안</span> |
|
58 |
+ </h3> |
|
52 | 59 |
<p class="text-ct box-title"> |
53 | 60 |
학생 한 명 한 명을 소중한 인재로 키우기 위해,<br /> |
54 | 61 |
학생의 역량 및 학습 속도에 최적화된 학습 기회 제공<br /> |
... | ... | @@ -60,8 +67,9 @@ |
60 | 67 |
</div> |
61 | 68 |
<div class="swiper-slide relative slide5"> |
62 | 69 |
<div class="main-text white"> |
63 |
- <div class="slide-content" @mouseover="pauseAutoplay" @mouseleave="resumeAutoplay"> |
|
64 |
- <h3 class="text-ct mb30">AI |
|
70 |
+ <div class="slide-content" @mouseover="pauseAutoplay" @mouseleave="resumeAutoplay" |
|
71 |
+ aria-label="AI 디지털교과서 1:1 맞춤 교육시대" aria-live="polite"> |
|
72 |
+ <h3 class="text-ct mb30" role="heading" aria-level="5">AI |
|
65 | 73 |
디지털교과서<br /><span>1:1 맞춤 교육시대</span></h3> |
66 | 74 |
<p class="text-ct box-title"> |
67 | 75 |
‘모두를 위한 맞춤 교육’실현을 위한 「AI 디지털교과서 추진방안」 발표<br /> |
... | ... | @@ -85,9 +93,9 @@ |
85 | 93 |
<div class="flex content"> |
86 | 94 |
<div class="gd- pl20 content no-title flex-column justify-center" style="width:15%"> |
87 | 95 |
<div class="flex align-center white"> |
88 |
- <svg-icon type="mdi" :width="25" :height="25" |
|
89 |
- :path="noticePath" aria-hidden="true"></svg-icon> |
|
90 |
- <h2 class="content-title2" > 공지사항</h2> |
|
96 |
+ <svg-icon type="mdi" :width="25" :height="25" :path="noticePath" |
|
97 |
+ aria-hidden="true"></svg-icon> |
|
98 |
+ <h2 class="content-title2"> 공지사항</h2> |
|
91 | 99 |
</div> |
92 | 100 |
</div> |
93 | 101 |
<div class="gd- pr20 content no-content" style="width:85%"> |
... | ... | @@ -96,8 +104,9 @@ |
96 | 104 |
<div class="swiper-slide" v-for="(itm, indx) in InfoList" :key="indx" |
97 | 105 |
@click="clearSearch()"> |
98 | 106 |
<router-link :to="'/aidt/BBS_MNG_0000000001/view.page?pageId=' + itm.bbsId" |
99 |
- class="content-sub-title white notice-content"> |
|
100 |
- {{ itm.bbsTtl }} |
|
107 |
+ class="content-sub-title white notice-content" |
|
108 |
+ :aria-label="'공지사항: ' + itm.bbsTtl"> |
|
109 |
+ <span> {{ itm.bbsTtl }}</span> |
|
101 | 110 |
</router-link> |
102 | 111 |
</div> |
103 | 112 |
</div> |
... | ... | @@ -118,20 +127,21 @@ |
118 | 127 |
<div class="tech-navigation flex align-center"> |
119 | 128 |
<div class="swiper-button-prev tech-prev cursor mr10" aria-label="slide prev"></div> |
120 | 129 |
<div class="swiper-button-next tech-next cursor mr10" aria-label="slide next"></div> |
121 |
- <button @click="toggleAutoplay" aria-label="slideStopButton" title="슬라이드 멈춤" id="slideStopButton"><svg-icon type="mdi" |
|
122 |
- :path="playPath" role="img" aria-labelledby="slideStopButton"></svg-icon></button> |
|
130 |
+ <button @click="toggleAutoplay" aria-label="slideStopButton" title="슬라이드 멈춤" |
|
131 |
+ id="slideStopButton"><svg-icon type="mdi" :path="playPath" role="img" |
|
132 |
+ aria-labelledby="slideStopButton"></svg-icon></button> |
|
123 | 133 |
</div> |
124 | 134 |
</div> |
125 | 135 |
<div class="gd-10"> |
126 | 136 |
<div class="swiper techSwiper" ref="techSwiper" v-if="techDocList.length > 0"> |
127 | 137 |
<div class="swiper-wrapper"> |
128 |
- <div class="swiper-slide cursor" @click="clearSearch()"> |
|
138 |
+ <div class="swiper-slide tech-slide cursor" @click="clearSearch()"> |
|
129 | 139 |
<router-link to="/aidt/technicalSupport/guideline/view.page"> |
130 | 140 |
<img src="../../../../resources/img/aidtGuidline.png" alt="AI디지털교과서 개발가이드라인" |
131 | 141 |
class="radius" /> |
132 | 142 |
</router-link> |
133 | 143 |
</div> |
134 |
- <div class="swiper-slide cursor" v-for="(itm, indx) in techDocList" :key="indx"> |
|
144 |
+ <div class="swiper-slide tech-slide cursor" v-for="(itm, indx) in techDocList" :key="indx"> |
|
135 | 145 |
<router-link |
136 | 146 |
:to="'/aidt/technicalSupport/technicaldocument/view.page?pageId=' + itm.bbsId"> |
137 | 147 |
<img :src="$replaceImagePath(itm.ablstPathNm)" :alt="itm.techDocNm" |
... | ... | @@ -192,7 +202,8 @@ |
192 | 202 |
<div :class="{ hidden: hover !== index }"> |
193 | 203 |
<h3 class="content-title2 mb5 white">{{ item.titleFull }}</h3> |
194 | 204 |
<p class="small-text mb15 white">{{ item.detail }}</p> |
195 |
- <button class="large-btn white quick-btn detail-text" :title="item.buttonText" @click="goToPage(item)"> |
|
205 |
+ <button class="large-btn white quick-btn detail-text" :title="item.buttonText" |
|
206 |
+ @click="goToPage(item)"> |
|
196 | 207 |
{{ item.buttonText }} |
197 | 208 |
<svg-icon type="mdi" :path="arrowPath" aria-hidden="true"></svg-icon> |
198 | 209 |
</button> |
... | ... | @@ -392,6 +403,13 @@ |
392 | 403 |
delay: 3000, |
393 | 404 |
disableOnInteraction: false, |
394 | 405 |
}, |
406 |
+ a11y: { |
|
407 |
+ enabled: true, |
|
408 |
+ prevSlideMessage: '이전슬라이드', |
|
409 |
+ nextSlideMessage: '다음슬라이드', |
|
410 |
+ firstSlideMessage: '첫번째 슬라이드 입니다.', |
|
411 |
+ lastSlideMessage: '마지막 슬라이드 입니다.', |
|
412 |
+ }, |
|
395 | 413 |
}); |
396 | 414 |
}, |
397 | 415 |
// 퀵메뉴 문의하기 레벨에 따른 url |
--- client/views/pages/user/mypage/CompanyManagePage.vue
+++ client/views/pages/user/mypage/CompanyManagePage.vue
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 |
<div class="content"> |
3 | 3 |
<div class="top-banner banner mypage-banner"> |
4 | 4 |
<div class="flex-column align-center justify-center content"> |
5 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
5 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
6 | 6 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
7 | 7 |
</div> |
8 | 8 |
</div> |
--- client/views/pages/user/mypage/CompanyPage.vue
+++ client/views/pages/user/mypage/CompanyPage.vue
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 |
<div class="content" v-if="myInfo.ent_id"> |
3 | 3 |
<div :class="{ 'top-banner banner': true, [bannerId]: true }" v-if="this.$route.path.startsWith('/aidt')"> |
4 | 4 |
<div class="flex-column align-center justify-center content"> |
5 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
5 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
6 | 6 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
7 | 7 |
</div> |
8 | 8 |
</div> |
... | ... | @@ -35,7 +35,7 @@ |
35 | 35 |
<div class="content" v-else> |
36 | 36 |
<div :class="{ 'top-banner banner': true, [bannerId]: true }" v-if="this.$route.path.startsWith('/aidt')"> |
37 | 37 |
<div class="flex-column align-center justify-center content"> |
38 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
38 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
39 | 39 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
40 | 40 |
</div> |
41 | 41 |
</div> |
--- client/views/pages/user/mypage/UserPage.vue
+++ client/views/pages/user/mypage/UserPage.vue
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 |
<div class="content"> |
3 | 3 |
<div :class="{ 'top-banner banner': true, [bannerId]: true }" v-if="this.$route.path.startsWith('/aidt')"> |
4 | 4 |
<div class="flex-column align-center justify-center content"> |
5 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
5 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
6 | 6 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
7 | 7 |
</div> |
8 | 8 |
</div> |
--- client/views/pages/user/search/Search.vue
+++ client/views/pages/user/search/Search.vue
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 |
<div class="content"> |
3 | 3 |
<div :class="{ 'top-banner banner': true, [bannerId]: true }" v-if="this.$route.path.startsWith('/aidt')"> |
4 | 4 |
<div class="flex-column align-center justify-center content"> |
5 |
- <h1 class="banner-title text-ct white">통합검색</h1> |
|
5 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">통합검색</h1> |
|
6 | 6 |
<p class="box-title text-ct white"></p> |
7 | 7 |
</div> |
8 | 8 |
</div> |
--- client/views/pages/user/techedulist/TechnicalEducationApplyList.vue
+++ client/views/pages/user/techedulist/TechnicalEducationApplyList.vue
... | ... | @@ -5,7 +5,7 @@ |
5 | 5 |
}"> |
6 | 6 |
<div :class="{ 'top-banner banner ': true, [bannerId]: true }" v-if="this.$route.path.startsWith('/aidt')"> |
7 | 7 |
<div class="flex-column align-center justify-center content"> |
8 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
8 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
9 | 9 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
10 | 10 |
</div> |
11 | 11 |
</div> |
--- client/views/pages/user/technicalSupport/guideline/Guidelines.vue
+++ client/views/pages/user/technicalSupport/guideline/Guidelines.vue
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 |
<div class="content" style="background-color: #f8f8f8;"> |
3 | 3 |
<div :class="{ 'top-banner banner': true, [bannerId]: true }" v-if="this.$route.path.startsWith('/aidt')"> |
4 | 4 |
<div class="flex-column align-center justify-center content"> |
5 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
5 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
6 | 6 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
7 | 7 |
</div> |
8 | 8 |
</div> |
--- client/views/pages/user/technicalSupport/technicaldocument/TechnicaldocumentList.vue
+++ client/views/pages/user/technicalSupport/technicaldocument/TechnicaldocumentList.vue
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 |
<div :class="{ 'top-banner banner guide-banner': true, [bannerId]: true }" |
10 | 10 |
v-else-if="this.$route.path.startsWith('/aidt')"> |
11 | 11 |
<div class="flex-column align-center justify-center content"> |
12 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
12 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
13 | 13 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
14 | 14 |
</div> |
15 | 15 |
</div> |
--- client/views/pages/user/technicalSupport/technicaldocument/TechnicaldocumentView.vue
+++ client/views/pages/user/technicalSupport/technicaldocument/TechnicaldocumentView.vue
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 |
<div :class="{ 'top-banner banner guide-banner': true, [bannerId]: true }" |
10 | 10 |
v-else-if="this.$route.path.startsWith('/aidt')"> |
11 | 11 |
<div class="flex-column align-center justify-center content"> |
12 |
- <h1 class="banner-title text-ct white">{{ $getMenuInfo().menuNm }}</h1> |
|
12 |
+ <h1 class="banner-title text-ct white" aria-live="assertive">{{ $getMenuInfo().menuNm }}</h1> |
|
13 | 13 |
<p class="box-title text-ct white">{{ $getMenuInfo().menuCn }}</p> |
14 | 14 |
</div> |
15 | 15 |
</div> |
--- package-lock.json
+++ package-lock.json
... | ... | @@ -1,5 +1,5 @@ |
1 | 1 |
{ |
2 |
- "name": "AIDT_ISC", |
|
2 |
+ "name": "AIDT_ISC_Accessibility", |
|
3 | 3 |
"lockfileVersion": 3, |
4 | 4 |
"requires": true, |
5 | 5 |
"packages": { |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?