{"version":3,"file":"ClassicMultiselect-BEY-HpGk.mjs","names":[],"sources":["../src/components/form/ClassicMultiselect.vue","../src/components/form/ClassicMultiselect.vue"],"sourcesContent":["<template>\n  <div\n    :class=\"{\n      'multiselect-in-modal': inModal,\n      'multiselect-no-deselect': noDeselect,\n      'form-margin': displayLabel,\n    }\"\n    :style=\"{ width: width, height: height }\"\n  >\n    <div class=\"d-flex align-items-center\">\n      <label :class=\"displayLabel ? '' : 'd-none'\" :for=\"id\" class=\"form-label\">{{\n        label\n      }}\n        <AsteriskIcon v-if=\"displayRequired\" :size=\"10\" class=\"ms-1 mb-2\" :title=\"t('Mandatory input')\"/>\n      </label>\n\n      <template v-if=\"popover\">\n        <button\n          :id=\"'popover' + id\"\n          :title=\"t('Help')\"\n          class=\"btn-transparent\"\n        >\n          <HelpCircleIcon :size=\"30\" />\n        </button>\n        <ClassicPopover\n          :target=\"'popover' + id\"\n          popover-class=\"popover-z-index\"\n          :relative-class=\"popoverRelativeClass\"\n        >\n          <!-- eslint-disable vue/no-v-html -->\n          <div v-html=\"popover\" />\n          <!-- eslint-enable -->\n        </ClassicPopover>\n      </template>\n    </div>\n\n    <vSelect\n      v-model=\"optionSelected\"\n      :input-id=\"id\"\n      :label=\"optionLabel\"\n      :multiple=\"multiple\"\n      :options=\"options\"\n      :disabled=\"isDisabled\"\n      :loading=\"isLoading\"\n      :placeholder=\"placeholder\"\n      :clear-search-on-blur=\"\n        () => {\n          return true;\n        }\n      \"\n      :filter=\"fakeSearch\"\n      :selectable=\"() => !maxOptionsSelected\"\n      :style=\"{height: height }\"\n      :class=\"{ 'border border-danger': textDanger?.length }\"\n      @open=\"onSearch\"\n      @search=\"onSearch\"\n      @close=\"onClose\"\n      @option:selected=\"onOptionSelected\"\n      @option:deselected=\"onOptionDeselect\"\n    >\n      \n      <template v-if=\"optionCustomTemplating.length\" #option=\"option\">\n        <slot :name=\"optionCustomTemplating\" :option=\"option\" />\n      </template>\n\n      <template v-else-if=\"withSelectAll\" #option=\"option\">\n        <strong v-if=\"option.id === selectAll.id\">\n          {{ option[optionLabel] }}\n        </strong>\n        <span v-else>\n          {{ option[optionLabel] }}\n        </span>\n      </template>\n\n      <template\n        v-if=\"optionSelectedCustomTemplating.length\"\n        #selected-option=\"option\"\n      >\n        <slot :name=\"optionSelectedCustomTemplating\" :option=\"option\" />\n      </template>\n\n      <template #selected-option-container=\"{ option, deselect, disabled, multiple: mul }\">\n        <slot name=\"selected-option-container\" v-bind=\"{ option, deselect, disabled, multiple: mul }\" />\n      </template>\n\n      <template #no-options=\"{ searching }\">\n        <span v-if=\"searching\">{{\n          t(\"No elements found. Consider changing the search query.\")\n        }}</span>\n        <span v-else>{{ t(\"List is empty\") }}</span>\n      </template>\n\n      <template #list-footer>\n        <div v-if=\"remainingElements\" class=\"vs__dropdown-option\">\n          {{\n            t(\n              \"Count more elements matched your query, please make a more specific search.\",\n              { count: remainingElements },\n            )\n          }}\n        </div>\n      </template>\n\n      <template #list-header>\n        <div v-if=\"maxOptionsSelected\" class=\"vs__dropdown-option\">\n          {{ t(\"Multiselect max options\", { max: maxOptions }) }}\n        </div>\n      </template>\n\n      <template #open-indicator=\"{ attributes }\">\n        <ChevronDownIcon v-bind=\"attributes\" />\n      </template>\n    </vSelect>\n    <div v-if=\"textDanger\" class=\"text-danger\">\n      {{ textDanger }}\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport { computed, defineAsyncComponent, ref, Ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport AsteriskIcon from \"vue-material-design-icons/Asterisk.vue\";\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport vSelect from \"vue-select\";\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nconst ClassicPopover = defineAsyncComponent(\n  () => import(\"../misc/ClassicPopover.vue\"),\n);\n\n//Props \nconst {\n  inModal = false, multiple = false, isDisabled = false, width = \"100%\",\n  maxElement = 50, minSearchLength = 3, noDeselect = true, displayLabel = false,\n  allowEmpty = true, optionChosen, maxOptions = null,\n  optionCustomTemplating = '', optionSelectedCustomTemplating = '',\n  optionLabel,\n  withSelectAll = false\n} = defineProps<{\n  id?: string;\n  label?: string;\n  placeholder?: string;\n  optionLabel?: keyof T;\n  inModal?: boolean;\n  multiple?: boolean;\n  isDisabled?: boolean;\n  width?: string;\n  height?: string;\n  maxElement?: number;\n  minSearchLength?: number;\n  /** Currently chosen option */\n  optionChosen?: T|Array<T>;\n  noDeselect?: boolean;\n  optionCustomTemplating?: string;\n  optionSelectedCustomTemplating?: string;\n  displayLabel?: boolean;\n  maxOptions?: number;\n  allowEmpty?: boolean;\n  textDanger ?:string;\n  displayRequired?: boolean;\n  popover?: string;\n  popoverRelativeClass?: string;\n  /**\n   * Add an option to select everything at once\n   * If set to a truthy string, the added option will have this value as its\n   * label. If set to true, use a generic label.\n   */\n  withSelectAll?: boolean|string;\n}>();\n\n//Emits\nconst emit = defineEmits<{\n  (e: \"onSearch\", query: string): void;\n  (e: \"selected\", data: Array<T>|T): void;\n  (e: \"onClose\", data: string): void;\n}>();\n\n//Composables\nconst { t } = useI18n();\n\n\n//Data \nconst optionSelected : Ref<T|T[]>= ref(undefined);\nconst options : Ref<Array<T>>= ref([]);\nconst remainingElements = ref(0);\nconst isLoading = ref(false);\nconst searchInput = ref(\"\");\nconst selectAll = {\n  id: 'SELECT_ALL',\n  [optionLabel]: withSelectAll && typeof withSelectAll === 'string' ? withSelectAll : t('All')\n} as unknown as T;\n\n//Computed\nconst maxOptionsSelected = computed(() => {\n  if (maxOptions !== null && multiple) {\n    return (\n      (optionSelected.value as Array<T>).length >= maxOptions\n    );\n  }\n  return false;\n});\n\n//Watch\nwatch(()=>optionChosen, () => {\n  optionSelected.value = optionChosen;\n}, {deep: true, immediate: true});\nwatch(optionSelected, () => {\n  if (noDeselect || null !== optionSelected.value) {\n    return;\n  }\n  emit(\"selected\", undefined);\n}, {deep: true});\n\n//Methods\nfunction fakeSearch(): Array<unknown> {\n  return options.value;\n}\n\nfunction onSearch(search?: string): void {\n  if (search && search.length < minSearchLength) {\n    return;\n  } else if (search) {\n    searchInput.value = search;\n  }\n  isLoading.value = true;\n  emit(\"onSearch\", search);\n}\n\nfunction onClose() {\n  emit(\"onClose\", searchInput.value);\n  searchInput.value = \"\";\n}\n\nfunction afterSearch(optionsFetched: Array<T>, count: number): void {\n  if (withSelectAll) {\n    options.value = [selectAll, ...optionsFetched];\n    count += 1;\n  } else {\n    options.value = optionsFetched;\n  }\n  remainingElements.value = Math.max(0, count - maxElement);\n  isLoading.value = false;\n}\n\nfunction onOptionSelected(newValue: Array<T>|T): void {\n  // Check if selectAll is included\n  if (withSelectAll && Array.isArray(newValue) && newValue.find(o => o.id === selectAll.id)) {\n    emit(\"selected\", options.value.slice(1));\n  } else {\n    emit(\"selected\", newValue);\n  }\n}\n\nfunction onOptionDeselect(event: T): void {\n  if (!multiple) {\n    return;\n  }\n  if (\n    !allowEmpty &&\n    0 === (optionSelected.value as Array<T>).length\n  ) {\n    (optionSelected.value as Array<T>).push(event);\n    return;\n  }\n  emit(\"selected\", (optionSelected.value as Array<T>));\n}\n\n//Expose\ndefineExpose({\n  afterSearch\n});\n</script>\n\n<style lang=\"scss\">\n@use \"vue-select/dist/vue-select.css\";\n/* stylelint-disable */\n:root {\n  --vs-dropdown-z-index: 1405;\n  --vs-border-radius: 0.2rem;\n  --vs-dropdown-option--active-bg: var(--octopus-secondary);\n  --vs-dropdown-option--active-color: black;\n  --vs-font-size: 0.8rem;\n  --vs-border-width: 2px;\n  --vs-border-color: var(--octopus-border-default);\n}\n\n.octopus-app {\n  .vs__dropdown-option {\n    white-space: initial;\n  }\n\n  .vs--searchable .vs__dropdown-toggle {\n    cursor: pointer;\n  }\n\n  .vs__dropdown-toggle {\n    padding: 0;\n    height: 100%;\n  }\n\n  .vs__search, .vs__search:focus{\n    border: var(--vs-selected-border-width) solid transparent;\n  }\n  .vs__search:focus {\n    min-width: 150px;\n  }\n\n  .multiselect-no-deselect .vs__clear {\n    display: none;\n  }\n\n  .multiselect-transparent {\n    --vs-border-color: transparent;\n  }\n\n  .multiselect-white {\n    --vs-selected-color: white;\n    --vs-selected-bg: transparent;\n    --vs-dropdown-bg: black;\n    --vs-controls-color: white;\n\n    .vs__actions path {\n      fill: white;\n    }\n  }\n\n  .multiselect-in-modal{\n    .vs__dropdown-menu{\n      position: relative !important;\n    }\n  }\n}\n/* stylelint-enable */\n</style>\n","<template>\n  <div\n    :class=\"{\n      'multiselect-in-modal': inModal,\n      'multiselect-no-deselect': noDeselect,\n      'form-margin': displayLabel,\n    }\"\n    :style=\"{ width: width, height: height }\"\n  >\n    <div class=\"d-flex align-items-center\">\n      <label :class=\"displayLabel ? '' : 'd-none'\" :for=\"id\" class=\"form-label\">{{\n        label\n      }}\n        <AsteriskIcon v-if=\"displayRequired\" :size=\"10\" class=\"ms-1 mb-2\" :title=\"t('Mandatory input')\"/>\n      </label>\n\n      <template v-if=\"popover\">\n        <button\n          :id=\"'popover' + id\"\n          :title=\"t('Help')\"\n          class=\"btn-transparent\"\n        >\n          <HelpCircleIcon :size=\"30\" />\n        </button>\n        <ClassicPopover\n          :target=\"'popover' + id\"\n          popover-class=\"popover-z-index\"\n          :relative-class=\"popoverRelativeClass\"\n        >\n          <!-- eslint-disable vue/no-v-html -->\n          <div v-html=\"popover\" />\n          <!-- eslint-enable -->\n        </ClassicPopover>\n      </template>\n    </div>\n\n    <vSelect\n      v-model=\"optionSelected\"\n      :input-id=\"id\"\n      :label=\"optionLabel\"\n      :multiple=\"multiple\"\n      :options=\"options\"\n      :disabled=\"isDisabled\"\n      :loading=\"isLoading\"\n      :placeholder=\"placeholder\"\n      :clear-search-on-blur=\"\n        () => {\n          return true;\n        }\n      \"\n      :filter=\"fakeSearch\"\n      :selectable=\"() => !maxOptionsSelected\"\n      :style=\"{height: height }\"\n      :class=\"{ 'border border-danger': textDanger?.length }\"\n      @open=\"onSearch\"\n      @search=\"onSearch\"\n      @close=\"onClose\"\n      @option:selected=\"onOptionSelected\"\n      @option:deselected=\"onOptionDeselect\"\n    >\n      \n      <template v-if=\"optionCustomTemplating.length\" #option=\"option\">\n        <slot :name=\"optionCustomTemplating\" :option=\"option\" />\n      </template>\n\n      <template v-else-if=\"withSelectAll\" #option=\"option\">\n        <strong v-if=\"option.id === selectAll.id\">\n          {{ option[optionLabel] }}\n        </strong>\n        <span v-else>\n          {{ option[optionLabel] }}\n        </span>\n      </template>\n\n      <template\n        v-if=\"optionSelectedCustomTemplating.length\"\n        #selected-option=\"option\"\n      >\n        <slot :name=\"optionSelectedCustomTemplating\" :option=\"option\" />\n      </template>\n\n      <template #selected-option-container=\"{ option, deselect, disabled, multiple: mul }\">\n        <slot name=\"selected-option-container\" v-bind=\"{ option, deselect, disabled, multiple: mul }\" />\n      </template>\n\n      <template #no-options=\"{ searching }\">\n        <span v-if=\"searching\">{{\n          t(\"No elements found. Consider changing the search query.\")\n        }}</span>\n        <span v-else>{{ t(\"List is empty\") }}</span>\n      </template>\n\n      <template #list-footer>\n        <div v-if=\"remainingElements\" class=\"vs__dropdown-option\">\n          {{\n            t(\n              \"Count more elements matched your query, please make a more specific search.\",\n              { count: remainingElements },\n            )\n          }}\n        </div>\n      </template>\n\n      <template #list-header>\n        <div v-if=\"maxOptionsSelected\" class=\"vs__dropdown-option\">\n          {{ t(\"Multiselect max options\", { max: maxOptions }) }}\n        </div>\n      </template>\n\n      <template #open-indicator=\"{ attributes }\">\n        <ChevronDownIcon v-bind=\"attributes\" />\n      </template>\n    </vSelect>\n    <div v-if=\"textDanger\" class=\"text-danger\">\n      {{ textDanger }}\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport { computed, defineAsyncComponent, ref, Ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport AsteriskIcon from \"vue-material-design-icons/Asterisk.vue\";\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport vSelect from \"vue-select\";\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nconst ClassicPopover = defineAsyncComponent(\n  () => import(\"../misc/ClassicPopover.vue\"),\n);\n\n//Props \nconst {\n  inModal = false, multiple = false, isDisabled = false, width = \"100%\",\n  maxElement = 50, minSearchLength = 3, noDeselect = true, displayLabel = false,\n  allowEmpty = true, optionChosen, maxOptions = null,\n  optionCustomTemplating = '', optionSelectedCustomTemplating = '',\n  optionLabel,\n  withSelectAll = false\n} = defineProps<{\n  id?: string;\n  label?: string;\n  placeholder?: string;\n  optionLabel?: keyof T;\n  inModal?: boolean;\n  multiple?: boolean;\n  isDisabled?: boolean;\n  width?: string;\n  height?: string;\n  maxElement?: number;\n  minSearchLength?: number;\n  /** Currently chosen option */\n  optionChosen?: T|Array<T>;\n  noDeselect?: boolean;\n  optionCustomTemplating?: string;\n  optionSelectedCustomTemplating?: string;\n  displayLabel?: boolean;\n  maxOptions?: number;\n  allowEmpty?: boolean;\n  textDanger ?:string;\n  displayRequired?: boolean;\n  popover?: string;\n  popoverRelativeClass?: string;\n  /**\n   * Add an option to select everything at once\n   * If set to a truthy string, the added option will have this value as its\n   * label. If set to true, use a generic label.\n   */\n  withSelectAll?: boolean|string;\n}>();\n\n//Emits\nconst emit = defineEmits<{\n  (e: \"onSearch\", query: string): void;\n  (e: \"selected\", data: Array<T>|T): void;\n  (e: \"onClose\", data: string): void;\n}>();\n\n//Composables\nconst { t } = useI18n();\n\n\n//Data \nconst optionSelected : Ref<T|T[]>= ref(undefined);\nconst options : Ref<Array<T>>= ref([]);\nconst remainingElements = ref(0);\nconst isLoading = ref(false);\nconst searchInput = ref(\"\");\nconst selectAll = {\n  id: 'SELECT_ALL',\n  [optionLabel]: withSelectAll && typeof withSelectAll === 'string' ? withSelectAll : t('All')\n} as unknown as T;\n\n//Computed\nconst maxOptionsSelected = computed(() => {\n  if (maxOptions !== null && multiple) {\n    return (\n      (optionSelected.value as Array<T>).length >= maxOptions\n    );\n  }\n  return false;\n});\n\n//Watch\nwatch(()=>optionChosen, () => {\n  optionSelected.value = optionChosen;\n}, {deep: true, immediate: true});\nwatch(optionSelected, () => {\n  if (noDeselect || null !== optionSelected.value) {\n    return;\n  }\n  emit(\"selected\", undefined);\n}, {deep: true});\n\n//Methods\nfunction fakeSearch(): Array<unknown> {\n  return options.value;\n}\n\nfunction onSearch(search?: string): void {\n  if (search && search.length < minSearchLength) {\n    return;\n  } else if (search) {\n    searchInput.value = search;\n  }\n  isLoading.value = true;\n  emit(\"onSearch\", search);\n}\n\nfunction onClose() {\n  emit(\"onClose\", searchInput.value);\n  searchInput.value = \"\";\n}\n\nfunction afterSearch(optionsFetched: Array<T>, count: number): void {\n  if (withSelectAll) {\n    options.value = [selectAll, ...optionsFetched];\n    count += 1;\n  } else {\n    options.value = optionsFetched;\n  }\n  remainingElements.value = Math.max(0, count - maxElement);\n  isLoading.value = false;\n}\n\nfunction onOptionSelected(newValue: Array<T>|T): void {\n  // Check if selectAll is included\n  if (withSelectAll && Array.isArray(newValue) && newValue.find(o => o.id === selectAll.id)) {\n    emit(\"selected\", options.value.slice(1));\n  } else {\n    emit(\"selected\", newValue);\n  }\n}\n\nfunction onOptionDeselect(event: T): void {\n  if (!multiple) {\n    return;\n  }\n  if (\n    !allowEmpty &&\n    0 === (optionSelected.value as Array<T>).length\n  ) {\n    (optionSelected.value as Array<T>).push(event);\n    return;\n  }\n  emit(\"selected\", (optionSelected.value as Array<T>));\n}\n\n//Expose\ndefineExpose({\n  afterSearch\n});\n</script>\n\n<style lang=\"scss\">\n@use \"vue-select/dist/vue-select.css\";\n/* stylelint-disable */\n:root {\n  --vs-dropdown-z-index: 1405;\n  --vs-border-radius: 0.2rem;\n  --vs-dropdown-option--active-bg: var(--octopus-secondary);\n  --vs-dropdown-option--active-color: black;\n  --vs-font-size: 0.8rem;\n  --vs-border-width: 2px;\n  --vs-border-color: var(--octopus-border-default);\n}\n\n.octopus-app {\n  .vs__dropdown-option {\n    white-space: initial;\n  }\n\n  .vs--searchable .vs__dropdown-toggle {\n    cursor: pointer;\n  }\n\n  .vs__dropdown-toggle {\n    padding: 0;\n    height: 100%;\n  }\n\n  .vs__search, .vs__search:focus{\n    border: var(--vs-selected-border-width) solid transparent;\n  }\n  .vs__search:focus {\n    min-width: 150px;\n  }\n\n  .multiselect-no-deselect .vs__clear {\n    display: none;\n  }\n\n  .multiselect-transparent {\n    --vs-border-color: transparent;\n  }\n\n  .multiselect-white {\n    --vs-selected-color: white;\n    --vs-selected-bg: transparent;\n    --vs-dropdown-bg: black;\n    --vs-controls-color: white;\n\n    .vs__actions path {\n      fill: white;\n    }\n  }\n\n  .multiselect-in-modal{\n    .vs__dropdown-menu{\n      position: relative !important;\n    }\n  }\n}\n/* stylelint-enable */\n</style>\n"],"mappings":"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"}