{"version":3,"file":"RubriqueList-CMOS69Vq.mjs","names":[],"sources":["../src/components/display/rubriques/RubriqueList.vue","../src/components/display/rubriques/RubriqueList.vue"],"sourcesContent":["<template>\n  <div class=\"d-inline-flex w-100 mb-3 px-3 hide-phone\">\n    <div ref=\"rubriqueListContainer\" class=\"rubrique-list-container\">\n\n      <!-- Liste déroulante pour sélectionner le rubriquage -->\n      <select\n        v-model=\"rubriquage\"\n        :title=\"t('By topic')\"\n        class=\"c-hand\"\n        @change=\"onRubriquageSelected\"\n      >\n        <option\n          v-for=\"myRubriquage in rubriquageDisplay\"\n          :key=\"myRubriquage.rubriquageId\"\n          :value=\"myRubriquage\"\n        >\n          {{ myRubriquage.title }}\n        </option>\n      </select>\n\n      <!-- Boutons de sélection de la rubrique -->\n      <button\n        v-for=\"rubrique in rubriqueDisplay\"\n        :id=\"'rubrique' + rubrique.rubriqueId\"\n        :key=\"rubrique.rubriqueId\"\n        class=\"btn btn-primary btn-on-dark m-1\"\n        @click=\"addFilter(rubrique)\"\n      >\n        {{ rubrique.name }}\n      </button>\n    </div>\n\n    <!-- Bouton pour afficher les rubriques cachées -->\n    <button\n      v-show=\"hidenRubriques.length\"\n      id=\"rubriques-dropdown\"\n      class=\"btn btn-primary btn-on-dark m-1\"\n      :title=\"t('See more')\"\n    >\n      <PlusIcon />\n    </button>\n\n    <!-- Popup de sélection des rubriques cachées -->\n    <ClassicPopover\n      ref=\"popoverRubrique\"\n      target=\"rubriques-dropdown\"\n      :only-click=\"true\"\n      :left-pos=\"true\"\n    >\n      <RubriqueChooser\n        v-if=\"hidenRubriques.length\"\n        class=\"rubrique-chooser-minwidth\"\n        :all-rubriques=\"hidenRubriques\"\n        :placeholder=\"rubriqueChooserText\"\n        @selected=\"addFilterFromPopover($event)\"\n      />\n    </ClassicPopover>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport PlusIcon from \"vue-material-design-icons/Plus.vue\";\nimport { useRubriquesFilterParam } from \"../../composable/route/useRubriquesFilterParam\";\nimport ClassicPopover from \"../../misc/ClassicPopover.vue\";\nimport { Rubrique } from \"@/stores/class/rubrique/rubrique\";\nimport { Rubriquage } from \"@/stores/class/rubrique/rubriquage\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { computed, defineAsyncComponent, nextTick, onBeforeUnmount, onMounted, Ref, ref, useTemplateRef, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst RubriqueChooser = defineAsyncComponent(\n  () => import(\"../rubriques/RubriqueChooser.vue\"),\n);\n\n//Props \nconst props = defineProps({\n  rubriquages: { default: () => [], type: Array as () => Array<Rubriquage> },\n})\n\n//Data \nconst hidenRubriques: Ref<Array<Rubrique>> = ref([]);\nconst rubriquage: Ref<Rubriquage | undefined> = ref(undefined);\nconst popoverRubriqueRef = useTemplateRef('popoverRubrique');\nconst rubriqueListContainerRef = useTemplateRef('rubriqueListContainer');\n\n\n//Composables\nconst { t } = useI18n();\nconst { modifyRubriquesFilter } = useRubriquesFilterParam();\nconst filterStore = useFilterStore();\n\n\n//Computed\nconst rubriqueDisplay = computed(() => {\n  return filterStore.filterRubriqueDisplay.filter(\n    (rubrique: Rubrique) => 0 !== rubrique.podcastCount,\n  );\n});\nconst rubriquageDisplay = computed(() => {\n  const elementToNotShow = Array.from(filterStore.filterRubrique);\n  if (elementToNotShow.length) {\n    const rubriquageIdToNotShow = elementToNotShow.map(\n      (a) => a.rubriquageId,\n    );\n    return props.rubriquages.filter((element) => {\n      if (!element.rubriquageId) {\n        return;\n      }\n      return !rubriquageIdToNotShow.includes(element.rubriquageId);\n    });\n  }\n  return Array.from(props.rubriquages).toSorted((a,b) => {\n    if(a.title > b.title){\n      return 1;\n    }\n    return (b.title > a.title) ? -1 : 0;\n  });\n});\n\n// Retourne le texte à afficher dans le RubriqueChooser\nconst rubriqueChooserText = computed(() => {\n  if (!rubriquage.value) {\n    return '';\n  }\n  let topic = rubriquage.value.title;\n  return t('Enter name of topic', { topic });\n});\n\n\n//Watch\nwatch(()=>filterStore.filterRubrique, () => {\n  selectNewRubriquage()\n}, {deep: true});\n\nonMounted(()=>selectNewRubriquage())\n\nonBeforeUnmount(()=> window.removeEventListener(\"resize\", resizeWindow))\n\n\n//Methods\nfunction initRubriques(): void {\n  filterStore.filterUpdateRubriqueDisplay(rubriquage.value?.rubriques ?? []);\n  window.addEventListener(\"resize\", resizeWindow);\n  nextTick(() => {\n    resizeWindow();\n  });\n}\nfunction addFilterFromPopover(rubrique: Rubrique): void {\n  const popover = popoverRubriqueRef?.value as InstanceType<typeof ClassicPopover>;\n  popover.clearClick();\n  addFilter(rubrique);\n}\nfunction addFilter(rubrique: Rubrique): void {\n  if (!rubriquage.value) {\n    return;\n  }\n  const filterToAdd = {\n    rubriquageId: rubriquage.value.rubriquageId ?? 0,\n    rubriqueId: rubrique.rubriqueId ?? 0,\n    nameRubriquage: rubriquage.value.title,\n    nameRubrique: rubrique.name,\n  };\n  modifyRubriquesFilter((a) => {\n    a.push(filterToAdd);\n    return a;\n  });\n  selectNewRubriquage();\n}\nfunction selectNewRubriquage() {\n  const rubriquageLength = props.rubriquages.length;\n  if (rubriquageLength === filterStore.filterRubrique.length) {\n    return;\n  }\n  let index = 0;\n  const rubriquageAlreadyFilter = filterStore.filterRubrique.map(\n    (a) => a.rubriquageId,\n  );\n  for (index; index < rubriquageLength; index++) {\n    const rubriquageIdIndex = props.rubriquages[index].rubriquageId;\n    if (\n      rubriquageIdIndex &&\n      !rubriquageAlreadyFilter.includes(rubriquageIdIndex)\n    ) {\n      break;\n    }\n  }\n  rubriquage.value = props.rubriquages[index];\n  initRubriques();\n}\nfunction resizeWindow(): void {\n  const rubriqueList = rubriqueListContainerRef?.value as HTMLElement;\n  if (null === rubriqueList) {\n    return;\n  }\n  rubriqueList.style.justifyContent = \"flex-start\";\n  hidenRubriques.value.length = 0;\n  rubriqueDisplay.value.forEach((element: Rubrique) => {\n    const el = rubriqueList.querySelector('#rubrique' + element.rubriqueId);\n    if (!el) return;\n    if (el.classList.contains(\"hid\")) {\n      el.classList.remove(\"hid\");\n    }\n  });\n  rubriqueDisplay.value.forEach((element: Rubrique) => {\n    const el = rubriqueList.querySelector('#rubrique' + element.rubriqueId);\n    if (!el) return;\n    const parent = el.parentElement;\n    if (\n      null !== parent &&\n      el.offsetLeft + el.clientWidth <= parent.clientWidth - 20\n    ) {\n      return;\n    }\n    hidenRubriques.value.push(element);\n    if (!el.classList.contains(\"hid\")) {\n      el.className += \" hid\";\n    }\n  });\n  if (!hidenRubriques.value.length) {\n    rubriqueList.style.justifyContent = \"center\";\n  }\n}\nfunction onRubriquageSelected() {\n  initRubriques();\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n  .rubrique-list-container {\n    display: flex;\n    justify-content: flex-start;\n    align-items: center;\n    overflow: hidden;\n    flex-grow: 1;\n    width: 0;\n    padding: 0 4rem;\n\n    select {\n      width: auto;\n      border-radius: var(--octopus-border-radius);\n      margin: 0.25rem;\n      font-size: 0.6rem;\n      padding: 0.5rem;\n    }\n  }\n\n  #popoverrubriques-dropdown {\n    overflow: initial !important;\n  }\n\n  .rubrique-chooser-minwidth {\n    min-width: 400px;\n\n    @media (width <= 500px) {\n      min-width: 90vw;\n    }\n  }\n}\n</style>\n","<template>\n  <div class=\"d-inline-flex w-100 mb-3 px-3 hide-phone\">\n    <div ref=\"rubriqueListContainer\" class=\"rubrique-list-container\">\n\n      <!-- Liste déroulante pour sélectionner le rubriquage -->\n      <select\n        v-model=\"rubriquage\"\n        :title=\"t('By topic')\"\n        class=\"c-hand\"\n        @change=\"onRubriquageSelected\"\n      >\n        <option\n          v-for=\"myRubriquage in rubriquageDisplay\"\n          :key=\"myRubriquage.rubriquageId\"\n          :value=\"myRubriquage\"\n        >\n          {{ myRubriquage.title }}\n        </option>\n      </select>\n\n      <!-- Boutons de sélection de la rubrique -->\n      <button\n        v-for=\"rubrique in rubriqueDisplay\"\n        :id=\"'rubrique' + rubrique.rubriqueId\"\n        :key=\"rubrique.rubriqueId\"\n        class=\"btn btn-primary btn-on-dark m-1\"\n        @click=\"addFilter(rubrique)\"\n      >\n        {{ rubrique.name }}\n      </button>\n    </div>\n\n    <!-- Bouton pour afficher les rubriques cachées -->\n    <button\n      v-show=\"hidenRubriques.length\"\n      id=\"rubriques-dropdown\"\n      class=\"btn btn-primary btn-on-dark m-1\"\n      :title=\"t('See more')\"\n    >\n      <PlusIcon />\n    </button>\n\n    <!-- Popup de sélection des rubriques cachées -->\n    <ClassicPopover\n      ref=\"popoverRubrique\"\n      target=\"rubriques-dropdown\"\n      :only-click=\"true\"\n      :left-pos=\"true\"\n    >\n      <RubriqueChooser\n        v-if=\"hidenRubriques.length\"\n        class=\"rubrique-chooser-minwidth\"\n        :all-rubriques=\"hidenRubriques\"\n        :placeholder=\"rubriqueChooserText\"\n        @selected=\"addFilterFromPopover($event)\"\n      />\n    </ClassicPopover>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport PlusIcon from \"vue-material-design-icons/Plus.vue\";\nimport { useRubriquesFilterParam } from \"../../composable/route/useRubriquesFilterParam\";\nimport ClassicPopover from \"../../misc/ClassicPopover.vue\";\nimport { Rubrique } from \"@/stores/class/rubrique/rubrique\";\nimport { Rubriquage } from \"@/stores/class/rubrique/rubriquage\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { computed, defineAsyncComponent, nextTick, onBeforeUnmount, onMounted, Ref, ref, useTemplateRef, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst RubriqueChooser = defineAsyncComponent(\n  () => import(\"../rubriques/RubriqueChooser.vue\"),\n);\n\n//Props \nconst props = defineProps({\n  rubriquages: { default: () => [], type: Array as () => Array<Rubriquage> },\n})\n\n//Data \nconst hidenRubriques: Ref<Array<Rubrique>> = ref([]);\nconst rubriquage: Ref<Rubriquage | undefined> = ref(undefined);\nconst popoverRubriqueRef = useTemplateRef('popoverRubrique');\nconst rubriqueListContainerRef = useTemplateRef('rubriqueListContainer');\n\n\n//Composables\nconst { t } = useI18n();\nconst { modifyRubriquesFilter } = useRubriquesFilterParam();\nconst filterStore = useFilterStore();\n\n\n//Computed\nconst rubriqueDisplay = computed(() => {\n  return filterStore.filterRubriqueDisplay.filter(\n    (rubrique: Rubrique) => 0 !== rubrique.podcastCount,\n  );\n});\nconst rubriquageDisplay = computed(() => {\n  const elementToNotShow = Array.from(filterStore.filterRubrique);\n  if (elementToNotShow.length) {\n    const rubriquageIdToNotShow = elementToNotShow.map(\n      (a) => a.rubriquageId,\n    );\n    return props.rubriquages.filter((element) => {\n      if (!element.rubriquageId) {\n        return;\n      }\n      return !rubriquageIdToNotShow.includes(element.rubriquageId);\n    });\n  }\n  return Array.from(props.rubriquages).toSorted((a,b) => {\n    if(a.title > b.title){\n      return 1;\n    }\n    return (b.title > a.title) ? -1 : 0;\n  });\n});\n\n// Retourne le texte à afficher dans le RubriqueChooser\nconst rubriqueChooserText = computed(() => {\n  if (!rubriquage.value) {\n    return '';\n  }\n  let topic = rubriquage.value.title;\n  return t('Enter name of topic', { topic });\n});\n\n\n//Watch\nwatch(()=>filterStore.filterRubrique, () => {\n  selectNewRubriquage()\n}, {deep: true});\n\nonMounted(()=>selectNewRubriquage())\n\nonBeforeUnmount(()=> window.removeEventListener(\"resize\", resizeWindow))\n\n\n//Methods\nfunction initRubriques(): void {\n  filterStore.filterUpdateRubriqueDisplay(rubriquage.value?.rubriques ?? []);\n  window.addEventListener(\"resize\", resizeWindow);\n  nextTick(() => {\n    resizeWindow();\n  });\n}\nfunction addFilterFromPopover(rubrique: Rubrique): void {\n  const popover = popoverRubriqueRef?.value as InstanceType<typeof ClassicPopover>;\n  popover.clearClick();\n  addFilter(rubrique);\n}\nfunction addFilter(rubrique: Rubrique): void {\n  if (!rubriquage.value) {\n    return;\n  }\n  const filterToAdd = {\n    rubriquageId: rubriquage.value.rubriquageId ?? 0,\n    rubriqueId: rubrique.rubriqueId ?? 0,\n    nameRubriquage: rubriquage.value.title,\n    nameRubrique: rubrique.name,\n  };\n  modifyRubriquesFilter((a) => {\n    a.push(filterToAdd);\n    return a;\n  });\n  selectNewRubriquage();\n}\nfunction selectNewRubriquage() {\n  const rubriquageLength = props.rubriquages.length;\n  if (rubriquageLength === filterStore.filterRubrique.length) {\n    return;\n  }\n  let index = 0;\n  const rubriquageAlreadyFilter = filterStore.filterRubrique.map(\n    (a) => a.rubriquageId,\n  );\n  for (index; index < rubriquageLength; index++) {\n    const rubriquageIdIndex = props.rubriquages[index].rubriquageId;\n    if (\n      rubriquageIdIndex &&\n      !rubriquageAlreadyFilter.includes(rubriquageIdIndex)\n    ) {\n      break;\n    }\n  }\n  rubriquage.value = props.rubriquages[index];\n  initRubriques();\n}\nfunction resizeWindow(): void {\n  const rubriqueList = rubriqueListContainerRef?.value as HTMLElement;\n  if (null === rubriqueList) {\n    return;\n  }\n  rubriqueList.style.justifyContent = \"flex-start\";\n  hidenRubriques.value.length = 0;\n  rubriqueDisplay.value.forEach((element: Rubrique) => {\n    const el = rubriqueList.querySelector('#rubrique' + element.rubriqueId);\n    if (!el) return;\n    if (el.classList.contains(\"hid\")) {\n      el.classList.remove(\"hid\");\n    }\n  });\n  rubriqueDisplay.value.forEach((element: Rubrique) => {\n    const el = rubriqueList.querySelector('#rubrique' + element.rubriqueId);\n    if (!el) return;\n    const parent = el.parentElement;\n    if (\n      null !== parent &&\n      el.offsetLeft + el.clientWidth <= parent.clientWidth - 20\n    ) {\n      return;\n    }\n    hidenRubriques.value.push(element);\n    if (!el.classList.contains(\"hid\")) {\n      el.className += \" hid\";\n    }\n  });\n  if (!hidenRubriques.value.length) {\n    rubriqueList.style.justifyContent = \"center\";\n  }\n}\nfunction onRubriquageSelected() {\n  initRubriques();\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n  .rubrique-list-container {\n    display: flex;\n    justify-content: flex-start;\n    align-items: center;\n    overflow: hidden;\n    flex-grow: 1;\n    width: 0;\n    padding: 0 4rem;\n\n    select {\n      width: auto;\n      border-radius: var(--octopus-border-radius);\n      margin: 0.25rem;\n      font-size: 0.6rem;\n      padding: 0.5rem;\n    }\n  }\n\n  #popoverrubriques-dropdown {\n    overflow: initial !important;\n  }\n\n  .rubrique-chooser-minwidth {\n    min-width: 400px;\n\n    @media (width <= 500px) {\n      min-width: 90vw;\n    }\n  }\n}\n</style>\n"],"mappings":"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"}