{"version":3,"file":"RubriqueChoice-Bi0NIWE3.mjs","names":[],"sources":["../src/components/display/filter/RubriqueChoice.vue","../src/components/display/filter/RubriqueChoice.vue"],"sourcesContent":["<template>\n  <div class=\"d-flex align-items-center mb-2\">\n    <ClassicSelect\n      :text-init=\"rubriquageIdSelected\"\n      id-select=\"rubrique-choice-select\"\n      :label=\"t('Topics')\"\n      :display-label=\"false\"\n      class=\"flex-shrink-0\"\n      :options=\"rubriquageDisplayForSelect\"\n      @update:text-init=\"onRubriquageSelected(parseInt($event, 10))\"\n    />\n    <template v-if=\"rubriquageIdSelected\">\n      <div class=\"ms-3 flex-shrink-0\">\n        {{ t(\"By rubric\") }}\n      </div>\n      <RubriqueChooser\n        v-if=\"getRubriquesLength(rubriquageIdSelected)\"\n        :id=\"'rubrique-chooser'+rubriquageIdSelected\"\n        class=\"ms-2\"\n        :multiple=\"false\"\n        :rubrique-selected=\"\n          0 !== rubriqueIdSelected ? rubriqueIdSelected : undefined\n        \"\n        :all-rubriques=\"getRubriques(rubriquageIdSelected)\"\n        :defaultanswer=\"t('No rubric filter')\"\n        :reset=\"reset\"\n        :without-rubrique=\"true\"\n        @selected=\"onRubriqueSelected\"\n      />\n    </template>\n    <button\n      v-if=\"index\"\n      class=\"btn admin-button ms-1\"\n      title=\"delete\"\n      @click=\"deleteRubriquage\"\n    >\n      <TrashCanIcon />\n    </button>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicSelect from \"../../form/ClassicSelect.vue\";\nimport TrashCanIcon from \"vue-material-design-icons/TrashCan.vue\";\nimport { Rubriquage } from \"@/stores/class/rubrique/rubriquage\";\nimport { Rubrique } from \"@/stores/class/rubrique/rubrique\";\nimport { defineAsyncComponent, ref, computed } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst RubriqueChooser = defineAsyncComponent(\n  () => import(\"../rubriques/RubriqueChooser.vue\"),\n);\n\n//Props \nconst props = defineProps({\n  rubriquageDisplay: {\n    default: () => [],\n    type: Array as () => Array<Rubriquage>,\n  },\n  rubriquageIdSelected: { default: 0, type: Number },\n  rubriqueIdSelected: { default: 0, type: Number },\n  index: { default: 0, type: Number },\n})\n\n//Emits\nconst emit = defineEmits([\"deleteRubriqueChoice\", \"updateRubrique\", \"updateRubriquage\"]);\n\n//Data \nconst reset = ref(false);\n\n//Composables\nconst { t } = useI18n();\n\n\n//Computed\nconst rubriquageDisplayForSelect = computed(() => {\n  return props.rubriquageDisplay.map((rubriquage) => {\n    return { title: rubriquage.title, value: rubriquage.rubriquageId };\n  });\n});\n\n//Methods\nfunction deleteRubriquage() {\n  emit(\"deleteRubriqueChoice\");\n}\nfunction getRubriquesLength(rubriquageId: number): number {\n  return getRubriques(rubriquageId).length;\n}\nfunction getRubriques(rubriquageId: number): Array<Rubrique> {\n  const topicIndex = props.rubriquageDisplay.findIndex(\n    (element: Rubriquage) => element.rubriquageId === rubriquageId,\n  );\n  return -1 !== topicIndex? props.rubriquageDisplay[topicIndex].rubriques: [];\n}\nfunction onRubriqueSelected(rubrique: Rubrique): void {\n  if (rubrique.rubriqueId === props.rubriqueIdSelected) return;\n  emit(\"updateRubrique\", {\n    rubriqueId: rubrique.rubriqueId,\n    index: props.index,\n  });\n}\nfunction onRubriquageSelected(newRubriquage: number): void {\n  reset.value = !reset.value;\n  emit(\"updateRubriquage\", {\n    rubriquageId: newRubriquage,\n    rubriqueId:0,\n    index: props.index,\n  });\n}\n</script>\n","<template>\n  <div class=\"d-flex align-items-center mb-2\">\n    <ClassicSelect\n      :text-init=\"rubriquageIdSelected\"\n      id-select=\"rubrique-choice-select\"\n      :label=\"t('Topics')\"\n      :display-label=\"false\"\n      class=\"flex-shrink-0\"\n      :options=\"rubriquageDisplayForSelect\"\n      @update:text-init=\"onRubriquageSelected(parseInt($event, 10))\"\n    />\n    <template v-if=\"rubriquageIdSelected\">\n      <div class=\"ms-3 flex-shrink-0\">\n        {{ t(\"By rubric\") }}\n      </div>\n      <RubriqueChooser\n        v-if=\"getRubriquesLength(rubriquageIdSelected)\"\n        :id=\"'rubrique-chooser'+rubriquageIdSelected\"\n        class=\"ms-2\"\n        :multiple=\"false\"\n        :rubrique-selected=\"\n          0 !== rubriqueIdSelected ? rubriqueIdSelected : undefined\n        \"\n        :all-rubriques=\"getRubriques(rubriquageIdSelected)\"\n        :defaultanswer=\"t('No rubric filter')\"\n        :reset=\"reset\"\n        :without-rubrique=\"true\"\n        @selected=\"onRubriqueSelected\"\n      />\n    </template>\n    <button\n      v-if=\"index\"\n      class=\"btn admin-button ms-1\"\n      title=\"delete\"\n      @click=\"deleteRubriquage\"\n    >\n      <TrashCanIcon />\n    </button>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicSelect from \"../../form/ClassicSelect.vue\";\nimport TrashCanIcon from \"vue-material-design-icons/TrashCan.vue\";\nimport { Rubriquage } from \"@/stores/class/rubrique/rubriquage\";\nimport { Rubrique } from \"@/stores/class/rubrique/rubrique\";\nimport { defineAsyncComponent, ref, computed } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst RubriqueChooser = defineAsyncComponent(\n  () => import(\"../rubriques/RubriqueChooser.vue\"),\n);\n\n//Props \nconst props = defineProps({\n  rubriquageDisplay: {\n    default: () => [],\n    type: Array as () => Array<Rubriquage>,\n  },\n  rubriquageIdSelected: { default: 0, type: Number },\n  rubriqueIdSelected: { default: 0, type: Number },\n  index: { default: 0, type: Number },\n})\n\n//Emits\nconst emit = defineEmits([\"deleteRubriqueChoice\", \"updateRubrique\", \"updateRubriquage\"]);\n\n//Data \nconst reset = ref(false);\n\n//Composables\nconst { t } = useI18n();\n\n\n//Computed\nconst rubriquageDisplayForSelect = computed(() => {\n  return props.rubriquageDisplay.map((rubriquage) => {\n    return { title: rubriquage.title, value: rubriquage.rubriquageId };\n  });\n});\n\n//Methods\nfunction deleteRubriquage() {\n  emit(\"deleteRubriqueChoice\");\n}\nfunction getRubriquesLength(rubriquageId: number): number {\n  return getRubriques(rubriquageId).length;\n}\nfunction getRubriques(rubriquageId: number): Array<Rubrique> {\n  const topicIndex = props.rubriquageDisplay.findIndex(\n    (element: Rubriquage) => element.rubriquageId === rubriquageId,\n  );\n  return -1 !== topicIndex? props.rubriquageDisplay[topicIndex].rubriques: [];\n}\nfunction onRubriqueSelected(rubrique: Rubrique): void {\n  if (rubrique.rubriqueId === props.rubriqueIdSelected) return;\n  emit(\"updateRubrique\", {\n    rubriqueId: rubrique.rubriqueId,\n    index: props.index,\n  });\n}\nfunction onRubriquageSelected(newRubriquage: number): void {\n  reset.value = !reset.value;\n  emit(\"updateRubriquage\", {\n    rubriquageId: newRubriquage,\n    rubriqueId:0,\n    index: props.index,\n  });\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDA,MAAM,kBAAkB,2BAChB,OAAO,iCACf;EAGA,MAAM,QAAQ;EAWd,MAAM,OAAO;EAGb,MAAM,QAAQ,IAAI,KAAK;EAGvB,MAAM,EAAE,MAAM,QAAQ;EAItB,MAAM,6BAA6B,eAAe;GAChD,OAAO,MAAM,kBAAkB,KAAK,eAAe;IACjD,OAAO;KAAE,OAAO,WAAW;KAAO,OAAO,WAAW;IAAa;GACnE,CAAC;EACH,CAAC;EAGD,SAAS,mBAAmB;GAC1B,KAAK,sBAAsB;EAC7B;EACA,SAAS,mBAAmB,cAA8B;GACxD,OAAO,aAAa,YAAY,EAAE;EACpC;EACA,SAAS,aAAa,cAAuC;GAC3D,MAAM,aAAa,MAAM,kBAAkB,WACxC,YAAwB,QAAQ,iBAAiB,YACpD;GACA,OAAO,OAAO,aAAY,MAAM,kBAAkB,YAAY,YAAW,CAAC;EAC5E;EACA,SAAS,mBAAmB,UAA0B;GACpD,IAAI,SAAS,eAAe,MAAM,oBAAoB;GACtD,KAAK,kBAAkB;IACrB,YAAY,SAAS;IACrB,OAAO,MAAM;GACf,CAAC;EACH;EACA,SAAS,qBAAqB,eAA6B;GACzD,MAAM,QAAQ,CAAC,MAAM;GACrB,KAAK,oBAAoB;IACvB,cAAc;IACd,YAAW;IACX,OAAO,MAAM;GACf,CAAC;EACH;;;;;;;;;;;;;;;;;;;;;;;;;mBC1GO,OAAM,iCAAgC;mBAWlC,OAAM,qBAAoB;;qBAXnC,mBAqCM,OArCN,YAqCM;EApCJ,YAQE,OAAA,kBAAA;GAPC,aAAW,OAAA;GACZ,aAAU;GACT,OAAO,OAAA,EAAC,QAAA;GACR,iBAAe;GAChB,OAAM;GACL,SAAS,OAAA;GACT,qBAAgB,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,qBAAqB,SAAS,QAAM,EAAA,CAAA;;;;;;EAEzC,OAAA,wBAAA,UAAA,GAAhB,mBAkBW,UAAA,EAAA,KAAA,EAAA,GAAA,CAjBT,mBAEM,OAFN,YAEM,gBADD,OAAA,EAAC,WAAA,CAAA,GAAA,CAAA,GAGE,OAAA,mBAAmB,OAAA,oBAAoB,KAAA,UAAA,GAD/C,YAaE,OAAA,oBAAA;;GAXC,IAAE,qBAAqB,OAAA;GACxB,OAAM;GACL,UAAU;GACV,qBAAA,MAAoC,OAAA,qBAAqB,OAAA,qBAAqB,KAAA;GAG9E,iBAAe,OAAA,aAAa,OAAA,oBAAoB;GAChD,eAAe,OAAA,EAAC,kBAAA;GAChB,OAAO,OAAA;GACP,oBAAkB;GAClB,YAAU,OAAA;;;;;;;;EAIP,OAAA,SAAA,UAAA,GADR,mBAOS,UAAA;;GALP,OAAM;GACN,OAAM;GACL,SAAO,OAAA;MAER,YAAgB,OAAA,eAAA,CAAA,CAAA,KAAA,mBAAA,QAAA,IAAA"}