|
@@ -6,12 +6,37 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<ul v-if="items.length" class="item-list">
|
|
<ul v-if="items.length" class="item-list">
|
|
- <li v-for="item in items" :key="item.url">
|
|
|
|
|
|
+ <li
|
|
|
|
+ v-for="item in items"
|
|
|
|
+ :key="item.url"
|
|
|
|
+ :class="{ hidden: activeLetter && item.letter !== activeLetter }"
|
|
|
|
+ >
|
|
<NominumItem :item="item" />
|
|
<NominumItem :item="item" />
|
|
</li>
|
|
</li>
|
|
</ul>
|
|
</ul>
|
|
|
|
|
|
- <template v-slot:nav />
|
|
|
|
|
|
+ <template v-slot:nav>
|
|
|
|
+ <div v-if="items.length" class="abc">
|
|
|
|
+ <ul>
|
|
|
|
+ <li :class="{ inactive: activeLetter }">
|
|
|
|
+ <span
|
|
|
|
+ @click.prevent="onClickLetter(null)"
|
|
|
|
+ @keyup.enter="onClickLetter(null)"
|
|
|
|
+ >tout</span>
|
|
|
|
+ </li>
|
|
|
|
+ <li
|
|
|
|
+ v-for="l in letters" :key="l"
|
|
|
|
+ :class="{ inactive: activeLetter && l !== activeLetter }"
|
|
|
|
+ >
|
|
|
|
+ <span
|
|
|
|
+ @click.prevent="onClickLetter(l)"
|
|
|
|
+ @keyup.enter="onClickLetter(l)"
|
|
|
|
+ >{{ l }}</span>
|
|
|
|
+ </li>
|
|
|
|
+ </ul>
|
|
|
|
+
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
</MainContentLayout>
|
|
</MainContentLayout>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
@@ -31,8 +56,9 @@ export default {
|
|
MainContentLayout
|
|
MainContentLayout
|
|
},
|
|
},
|
|
data: () => ({
|
|
data: () => ({
|
|
- items: []
|
|
|
|
-
|
|
|
|
|
|
+ items: [],
|
|
|
|
+ letters: [],
|
|
|
|
+ activeLetter: null
|
|
}),
|
|
}),
|
|
beforeCreate () {
|
|
beforeCreate () {
|
|
// items/gdpLeMaire1685T01BodyFr01.003.016
|
|
// items/gdpLeMaire1685T01BodyFr01.003.016
|
|
@@ -41,13 +67,35 @@ export default {
|
|
.then(({ data }) => {
|
|
.then(({ data }) => {
|
|
console.log('index nominum REST: data', data)
|
|
console.log('index nominum REST: data', data)
|
|
if (data.content.length) {
|
|
if (data.content.length) {
|
|
- this.items = data.content
|
|
|
|
|
|
+ this.items = data.content.sort((a, b) => {
|
|
|
|
+ let Aletter = a.letter.toLowerCase()
|
|
|
|
+ let Bletter = b.letter.toLowerCase()
|
|
|
|
+ if (Aletter < Bletter) {
|
|
|
|
+ return -1
|
|
|
|
+ } else if (Aletter > Bletter) {
|
|
|
|
+ return 1
|
|
|
|
+ } else {
|
|
|
|
+ return 0
|
|
|
|
+ }
|
|
|
|
+ })
|
|
}
|
|
}
|
|
|
|
+ for (let i = 0; i < this.items.length; i++) {
|
|
|
|
+ if (this.letters.indexOf(this.items[i].letter.toLowerCase()) === -1) {
|
|
|
|
+ this.letters.push(this.items[i].letter.toLowerCase())
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ this.letters = this.letters.sort()
|
|
})
|
|
})
|
|
.catch((error) => {
|
|
.catch((error) => {
|
|
console.warn('Issue with index nominum', error)
|
|
console.warn('Issue with index nominum', error)
|
|
Promise.reject(error)
|
|
Promise.reject(error)
|
|
})
|
|
})
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ onClickLetter (l) {
|
|
|
|
+ this.activeLetter = l
|
|
|
|
+ // console.log('activeLetter', this.activeLetter)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|