@davincihealthcare/elty-design-system-vue 1.77.0 → 1.77.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/ElActionButton.vue.d.ts +36 -0
  2. package/dist/ElTabGroup.vue.d.ts +3 -0
  3. package/dist/ElTextCell.vue.d.ts +3 -0
  4. package/dist/src/ElActionButton.vue.cjs2.js +1 -1
  5. package/dist/src/ElActionButton.vue.cjs2.js.map +1 -1
  6. package/dist/src/ElActionButton.vue.esm2.js +1 -1
  7. package/dist/src/ElActionButton.vue.esm2.js.map +1 -1
  8. package/dist/src/ElCarousel.vue.cjs2.js +1 -1
  9. package/dist/src/ElCarousel.vue.cjs2.js.map +1 -1
  10. package/dist/src/ElCarousel.vue.esm2.js +1 -1
  11. package/dist/src/ElCarousel.vue.esm2.js.map +1 -1
  12. package/dist/src/ElContainerTemplate.vue.cjs2.js +1 -1
  13. package/dist/src/ElContainerTemplate.vue.cjs2.js.map +1 -1
  14. package/dist/src/ElContainerTemplate.vue.esm2.js +1 -1
  15. package/dist/src/ElContainerTemplate.vue.esm2.js.map +1 -1
  16. package/dist/src/ElTabGroup.vue.cjs2.js +1 -1
  17. package/dist/src/ElTabGroup.vue.cjs2.js.map +1 -1
  18. package/dist/src/ElTabGroup.vue.esm2.js +1 -1
  19. package/dist/src/ElTabGroup.vue.esm2.js.map +1 -1
  20. package/dist/src/ElTextCell.vue.cjs2.js +1 -1
  21. package/dist/src/ElTextCell.vue.cjs2.js.map +1 -1
  22. package/dist/src/ElTextCell.vue.esm2.js +1 -1
  23. package/dist/src/ElTextCell.vue.esm2.js.map +1 -1
  24. package/dist/src/forms/ElInputMeasureUnit.vue.cjs2.js +1 -1
  25. package/dist/src/forms/ElInputMeasureUnit.vue.cjs2.js.map +1 -1
  26. package/dist/src/forms/ElInputMeasureUnit.vue.esm2.js +1 -1
  27. package/dist/src/forms/ElInputMeasureUnit.vue.esm2.js.map +1 -1
  28. package/dist/src/forms/ElInputRichText/Editor.vue.cjs2.js +1 -1
  29. package/dist/src/forms/ElInputRichText/Editor.vue.cjs2.js.map +1 -1
  30. package/dist/src/forms/ElInputRichText/Editor.vue.esm2.js +1 -1
  31. package/dist/src/forms/ElInputRichText/Editor.vue.esm2.js.map +1 -1
  32. package/dist/src/forms/ElInputRichText.vue.cjs2.js +1 -1
  33. package/dist/src/forms/ElInputRichText.vue.cjs2.js.map +1 -1
  34. package/dist/src/forms/ElInputRichText.vue.esm2.js +2 -2
  35. package/dist/src/forms/ElInputRichText.vue.esm2.js.map +1 -1
  36. package/dist/src/forms/ElInputSearch.vue.cjs2.js +1 -1
  37. package/dist/src/forms/ElInputSearch.vue.cjs2.js.map +1 -1
  38. package/dist/src/forms/ElInputSearch.vue.esm2.js +1 -1
  39. package/dist/src/forms/ElInputSearch.vue.esm2.js.map +1 -1
  40. package/dist/src/style.cjs +1 -1
  41. package/dist/src/style.css +2 -1
  42. package/dist/src/table/ElMobileTable.vue.cjs2.js.map +1 -1
  43. package/dist/src/table/ElMobileTable.vue.esm2.js.map +1 -1
  44. package/dist/src/table/ElServerSideTable.vue.cjs2.js.map +1 -1
  45. package/dist/src/table/ElServerSideTable.vue.esm2.js.map +1 -1
  46. package/package.json +1 -1
  47. package/dist/node_modules/swiper/modules/pagination.css +0 -1
  48. package/dist/node_modules/swiper/swiper.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ElInputMeasureUnit.vue.esm2.js","sources":["../../../src/forms/ElInputMeasureUnit.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useInput, showRequiredMark, NumberValueType, withNumberElInputProps } from '@/forms/input';\nimport { computed, PropType, ref, watch } from 'vue';\nimport ElInputContainer from '@/forms/ElInputContainer.vue';\nimport { DrugDurationMeasures, DrugTimeMeasures, DrugUnitMeasures } from '@/types';\n\ninterface MeasureUnitTypes {\n weight: string[];\n height: string[];\n drugUnitMeasure: string[];\n drugTimeMeasure: string[];\n drugDurationMeasure: string[];\n}\n\nconst measureUnitTypes: MeasureUnitTypes = {\n weight: ['kg', 'hg', 'g'],\n height: ['m', 'cm'],\n drugUnitMeasure: Object.keys(DrugUnitMeasures),\n drugTimeMeasure: Object.keys(DrugTimeMeasures)\n .filter(measure => measure !== 'AlBisogno')\n .concat(['Al bisogno']),\n drugDurationMeasure: Object.keys(DrugDurationMeasures),\n};\n\nconst props = defineProps({\n ...withNumberElInputProps(),\n availableUnitCategory: {\n type: String as PropType<keyof MeasureUnitTypes>,\n default: () => '',\n },\n defaultUnit: {\n type: String,\n default: null,\n },\n disableUnitChange: {\n type: Boolean,\n default: false,\n },\n});\n\nconst availableUnits = computed(() => {\n return measureUnitTypes[props.availableUnitCategory];\n});\n\nconst emit = defineEmits<{\n (event: 'update:modelValue', value: NumberValueType): void;\n (event: 'changeUnit', value: string): void;\n}>();\n\nconst getDefaultUnits = (category: keyof MeasureUnitTypes) => {\n switch (category) {\n case 'drugTimeMeasure':\n return 'Giorni';\n case 'drugUnitMeasure':\n return 'Cpr';\n case 'height':\n return 'm';\n case 'weight':\n return 'kg';\n default:\n return '';\n }\n};\n\nconst computedModelValue = computed(() => props.modelValue);\nconst computedValidation = computed(() => [props.validation]);\nconst currentUnit = ref<string>(props.defaultUnit || getDefaultUnits(props.availableUnitCategory));\n\nconst emitNewValue = (val: NumberValueType): void => {\n emit('update:modelValue', val);\n};\n\nconst { value, errorMessage, uuid } = useInput(computedModelValue, computedValidation, props.name, newVal => emitNewValue(newVal));\n\nconst unit = ref(currentUnit);\n\nconst handleInputUnit = () => {\n const value = unit.value === 'Al bisogno' ? 'AlBisogno' : unit.value;\n emit('changeUnit', value);\n};\n\nconst changeUnit = (value: string) => (unit.value = value);\n\nwatch(\n () => unit.value,\n () => {\n if (unit.value === 'Al bisogno') value.value = undefined;\n },\n);\n\ndefineExpose({\n changeUnit,\n});\n</script>\n\n<template>\n <ElInputContainer\n v-bind=\"$attrs\"\n :name=\"uuid\"\n :label=\"label\"\n :error-message=\"props.errorMessage === false ? false : props.errorMessage || errorMessage\"\n :hidden-error-message=\"hiddenErrorMessage\"\n :set-required-mark=\"showRequiredMark([validation])\"\n class=\"relative\"\n >\n <template #default=\"{ error }\">\n <input\n :id=\"uuid\"\n :name=\"props.name\"\n v-model=\"value\"\n type=\"number\"\n class=\"el-input el-input-measure-unit\"\n :class=\"{ error }\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n autocomplete=\"no_thanks\"\n />\n <div v-if=\"availableUnits && availableUnits.length > 0\" class=\"absolute top-[4px] right-0 flex h-5/6 items-center\">\n <select\n v-model=\"unit\"\n class=\"mr-[-2px] max-w-[100px] rounded-md border-transparent bg-transparent py-0 pl-[0px] pr-7 text-neutral-lighter focus:border-0 focus:ring-0 sm:text-sm\"\n :disabled=\"disableUnitChange\"\n @change=\"handleInputUnit\"\n >\n <option v-for=\"(item, index) in availableUnits\" :key=\"index\">\n <span>{{ item }}</span>\n </option>\n </select>\n </div>\n </template>\n </ElInputContainer>\n</template>\n"],"names":["measureUnitTypes","DrugUnitMeasures","DrugTimeMeasures","measure","DrugDurationMeasures","props","__props","availableUnits","computed","emit","__emit","getDefaultUnits","category","computedModelValue","computedValidation","currentUnit","ref","emitNewValue","val","value","errorMessage","uuid","useInput","newVal","unit","handleInputUnit","changeUnit","watch","__expose"],"mappings":"28BAcA,MAAMA,EAAqC,CACzC,OAAQ,CAAC,KAAM,KAAM,GAAG,EACxB,OAAQ,CAAC,IAAK,IAAI,EAClB,gBAAiB,OAAO,KAAKC,CAAgB,EAC7C,gBAAiB,OAAO,KAAKC,CAAgB,EAC1C,OAAkBC,GAAAA,IAAY,WAAW,EACzC,OAAO,CAAC,YAAY,CAAC,EACxB,oBAAqB,OAAO,KAAKC,CAAoB,CAAA,EAGjDC,EAAQC,EAgBRC,EAAiBC,EAAS,IACvBR,EAAiBK,EAAM,qBAAqB,CACpD,EAEKI,EAAOC,EAKPC,EAAmBC,GAAqC,CAC5D,OAAQA,EAAU,CAChB,IAAK,kBACI,MAAA,SACT,IAAK,kBACI,MAAA,MACT,IAAK,SACI,MAAA,IACT,IAAK,SACI,MAAA,KACT,QACS,MAAA,EACX,CAAA,EAGIC,EAAqBL,EAAS,IAAMH,EAAM,UAAU,EACpDS,EAAqBN,EAAS,IAAM,CAACH,EAAM,UAAU,CAAC,EACtDU,EAAcC,EAAYX,EAAM,aAAeM,EAAgBN,EAAM,qBAAqB,CAAC,EAE3FY,EAAgBC,GAA+B,CACnDT,EAAK,oBAAqBS,CAAG,CAAA,EAGzB,CAAE,MAAAC,EAAO,aAAAC,EAAc,KAAAC,CAAS,EAAAC,EAAST,EAAoBC,EAAoBT,EAAM,KAAgBkB,GAAAN,EAAaM,CAAM,CAAC,EAE3HC,EAAOR,EAAID,CAAW,EAEtBU,EAAkB,IAAM,CAC5B,MAAMN,EAAQK,EAAK,QAAU,aAAe,YAAcA,EAAK,MAC/Df,EAAK,aAAcU,CAAK,CAAA,EAGpBO,EAAcP,GAAmBK,EAAK,MAAQL,EAEpD,OAAAQ,EACE,IAAMH,EAAK,MACX,IAAM,CACAA,EAAK,QAAU,eAAcL,EAAM,MAAQ,OACjD,CAAA,EAGWS,EAAA,CACX,WAAAF,CAAA,CACD"}
1
+ {"version":3,"file":"ElInputMeasureUnit.vue.esm2.js","sources":["../../../src/forms/ElInputMeasureUnit.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useInput, showRequiredMark, NumberValueType, withNumberElInputProps } from '@/forms/input';\nimport { computed, PropType, ref, watch } from 'vue';\nimport ElInputContainer from '@/forms/ElInputContainer.vue';\nimport { DrugDurationMeasures, DrugTimeMeasures, DrugUnitMeasures } from '@/types';\n\ninterface MeasureUnitTypes {\n weight: string[];\n height: string[];\n drugUnitMeasure: string[];\n drugTimeMeasure: string[];\n drugDurationMeasure: string[];\n}\n\nconst measureUnitTypes: MeasureUnitTypes = {\n weight: ['kg', 'hg', 'g'],\n height: ['m', 'cm'],\n drugUnitMeasure: Object.keys(DrugUnitMeasures),\n drugTimeMeasure: Object.keys(DrugTimeMeasures)\n .filter(measure => measure !== 'AlBisogno')\n .concat(['Al bisogno']),\n drugDurationMeasure: Object.keys(DrugDurationMeasures),\n};\n\nconst props = defineProps({\n ...withNumberElInputProps(),\n availableUnitCategory: {\n type: String as PropType<keyof MeasureUnitTypes>,\n default: () => '',\n },\n defaultUnit: {\n type: String,\n default: null,\n },\n disableUnitChange: {\n type: Boolean,\n default: false,\n },\n});\n\nconst availableUnits = computed(() => {\n return measureUnitTypes[props.availableUnitCategory];\n});\n\nconst emit = defineEmits<{\n (event: 'update:modelValue', value: NumberValueType): void;\n (event: 'changeUnit', value: string): void;\n}>();\n\nconst getDefaultUnits = (category: keyof MeasureUnitTypes) => {\n switch (category) {\n case 'drugTimeMeasure':\n return 'Giorni';\n case 'drugUnitMeasure':\n return 'Cpr';\n case 'height':\n return 'm';\n case 'weight':\n return 'kg';\n default:\n return '';\n }\n};\n\nconst computedModelValue = computed(() => props.modelValue);\nconst computedValidation = computed(() => [props.validation]);\nconst currentUnit = ref<string>(props.defaultUnit || getDefaultUnits(props.availableUnitCategory));\n\nconst emitNewValue = (val: NumberValueType): void => {\n emit('update:modelValue', val);\n};\n\nconst { value, errorMessage, uuid } = useInput(computedModelValue, computedValidation, props.name, newVal => emitNewValue(newVal));\n\nconst unit = ref(currentUnit);\n\nconst handleInputUnit = () => {\n const value = unit.value === 'Al bisogno' ? 'AlBisogno' : unit.value;\n emit('changeUnit', value);\n};\n\nconst changeUnit = (value: string) => (unit.value = value);\n\nwatch(\n () => unit.value,\n () => {\n if (unit.value === 'Al bisogno') value.value = undefined;\n },\n);\n\ndefineExpose({\n changeUnit,\n});\n</script>\n\n<template>\n <ElInputContainer\n v-bind=\"$attrs\"\n :name=\"uuid\"\n :label=\"label\"\n :error-message=\"props.errorMessage === false ? false : props.errorMessage || errorMessage\"\n :hidden-error-message=\"hiddenErrorMessage\"\n :set-required-mark=\"showRequiredMark([validation])\"\n class=\"relative\"\n >\n <template #default=\"{ error }\">\n <input\n :id=\"uuid\"\n v-model=\"value\"\n :name=\"props.name\"\n type=\"number\"\n class=\"el-input el-input-measure-unit\"\n :class=\"{ error }\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n autocomplete=\"no_thanks\"\n />\n <div v-if=\"availableUnits && availableUnits.length > 0\" class=\"absolute top-[4px] right-0 flex h-5/6 items-center\">\n <select\n v-model=\"unit\"\n class=\"mr-[-2px] max-w-[100px] rounded-md border-transparent bg-transparent py-0 pl-[0px] pr-7 text-neutral-lighter focus:border-0 focus:ring-0 sm:text-sm\"\n :disabled=\"disableUnitChange\"\n @change=\"handleInputUnit\"\n >\n <option v-for=\"(item, index) in availableUnits\" :key=\"index\">\n <span>{{ item }}</span>\n </option>\n </select>\n </div>\n </template>\n </ElInputContainer>\n</template>\n"],"names":["measureUnitTypes","DrugUnitMeasures","DrugTimeMeasures","measure","DrugDurationMeasures","props","__props","availableUnits","computed","emit","__emit","getDefaultUnits","category","computedModelValue","computedValidation","currentUnit","ref","emitNewValue","val","value","errorMessage","uuid","useInput","newVal","unit","handleInputUnit","changeUnit","watch","__expose"],"mappings":"28BAcA,MAAMA,EAAqC,CACzC,OAAQ,CAAC,KAAM,KAAM,GAAG,EACxB,OAAQ,CAAC,IAAK,IAAI,EAClB,gBAAiB,OAAO,KAAKC,CAAgB,EAC7C,gBAAiB,OAAO,KAAKC,CAAgB,EAC1C,OAAkBC,GAAAA,IAAY,WAAW,EACzC,OAAO,CAAC,YAAY,CAAC,EACxB,oBAAqB,OAAO,KAAKC,CAAoB,CAAA,EAGjDC,EAAQC,EAgBRC,EAAiBC,EAAS,IACvBR,EAAiBK,EAAM,qBAAqB,CACpD,EAEKI,EAAOC,EAKPC,EAAmBC,GAAqC,CAC5D,OAAQA,EAAU,CAChB,IAAK,kBACI,MAAA,SACT,IAAK,kBACI,MAAA,MACT,IAAK,SACI,MAAA,IACT,IAAK,SACI,MAAA,KACT,QACS,MAAA,EACX,CAAA,EAGIC,EAAqBL,EAAS,IAAMH,EAAM,UAAU,EACpDS,EAAqBN,EAAS,IAAM,CAACH,EAAM,UAAU,CAAC,EACtDU,EAAcC,EAAYX,EAAM,aAAeM,EAAgBN,EAAM,qBAAqB,CAAC,EAE3FY,EAAgBC,GAA+B,CACnDT,EAAK,oBAAqBS,CAAG,CAAA,EAGzB,CAAE,MAAAC,EAAO,aAAAC,EAAc,KAAAC,CAAS,EAAAC,EAAST,EAAoBC,EAAoBT,EAAM,KAAgBkB,GAAAN,EAAaM,CAAM,CAAC,EAE3HC,EAAOR,EAAID,CAAW,EAEtBU,EAAkB,IAAM,CAC5B,MAAMN,EAAQK,EAAK,QAAU,aAAe,YAAcA,EAAK,MAC/Df,EAAK,aAAcU,CAAK,CAAA,EAGpBO,EAAcP,GAAmBK,EAAK,MAAQL,EAEpD,OAAAQ,EACE,IAAMH,EAAK,MACX,IAAM,CACAA,EAAK,QAAU,eAAcL,EAAM,MAAQ,OACjD,CAAA,EAGWS,EAAA,CACX,WAAAF,CAAA,CACD"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),p=require("../../../node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/components/Editor.cjs.js");require("../../../node_modules/tinymce/tinymce.cjs.js");require("../../../node_modules/tinymce/icons/default/icons.min.cjs.js");require("../../../node_modules/tinymce/themes/silver/theme.min.cjs.js");require("../../../node_modules/tinymce/models/dom/model.min.cjs.js");require("../../../node_modules/tinymce/skins/ui/oxide/skin.cjs.js");require("../../../node_modules/tinymce/plugins/advlist/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/image/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/code/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/fullscreen/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/emoticons/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/emoticons/js/emojis.cjs.js");require("../../../node_modules/tinymce/plugins/link/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/wordcount/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/lists/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/table/plugin.cjs.js");require("../../../node_modules/tinymce/skins/ui/oxide/content.cjs.js");const b=e.defineComponent({__name:"Editor",props:{color:{},error:{type:Boolean},plugins:{},toolbar:{},menubar:{},modelValue:{}},emits:["editor:init","blur","update:modelValue"],setup(l,{expose:n,emit:a}){const r=l,t=a,u=e.ref(null),s=e.computed(()=>r.plugins??"lists table image emoticons link fullscreen wordcount"),d=e.computed(()=>r.toolbar??"undo redo blocks bold italic underline strikethrough alignleft aligncenter alignright alignjustify link image emoticons fullscreen"),c=e.computed(()=>r.menubar??""),m=e.computed(()=>r.error?"tox--error":r.color==="primary"?"tox--primary":"tox--secondary");return n({editor:u}),(q,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(m.value)},[e.createVNode(e.unref(p.Editor),{onblur:"emit('blur')",modelValue:r.modelValue,"onUpdate:modelValue":i[0]||(i[0]=o=>t("update:modelValue",o)),init:{promotion:!1,branding:!1,statusbar:!0,plugins:s.value,toolbar:d.value,menubar:c.value,setup:o=>{o.on("init",()=>{u.value=o}),t("editor:init",o)}}},null,8,["modelValue","init"])],2))}});exports.default=b;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),p=require("../../../node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/components/Editor.cjs.js");require("../../../node_modules/tinymce/icons/default/icons.min.cjs.js");require("../../../node_modules/tinymce/themes/silver/theme.min.cjs.js");require("../../../node_modules/tinymce/models/dom/model.min.cjs.js");require("../../../node_modules/tinymce/skins/ui/oxide/skin.cjs.js");require("../../../node_modules/tinymce/plugins/advlist/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/image/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/code/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/fullscreen/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/emoticons/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/emoticons/js/emojis.cjs.js");require("../../../node_modules/tinymce/plugins/link/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/wordcount/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/lists/plugin.cjs.js");require("../../../node_modules/tinymce/plugins/table/plugin.cjs.js");require("../../../node_modules/tinymce/skins/ui/oxide/content.cjs.js");const b=e.defineComponent({__name:"Editor",props:{color:{},error:{type:Boolean},plugins:{},toolbar:{},menubar:{},modelValue:{}},emits:["editor:init","blur","update:modelValue"],setup(l,{expose:n,emit:a}){const r=l,t=a,u=e.ref(null),s=e.computed(()=>r.plugins??"lists table image emoticons link fullscreen wordcount"),d=e.computed(()=>r.toolbar??"undo redo blocks bold italic underline strikethrough alignleft aligncenter alignright alignjustify link image emoticons fullscreen"),c=e.computed(()=>r.menubar??""),m=e.computed(()=>r.error?"tox--error":r.color==="primary"?"tox--primary":"tox--secondary");return n({editor:u}),(q,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(m.value)},[e.createVNode(e.unref(p.Editor),{onblur:"emit('blur')","model-value":r.modelValue,init:{promotion:!1,branding:!1,statusbar:!0,plugins:s.value,toolbar:d.value,menubar:c.value,setup:o=>{o.on("init",()=>{u.value=o}),t("editor:init",o)}},"onUpdate:modelValue":i[0]||(i[0]=o=>t("update:modelValue",o))},null,8,["model-value","init"])],2))}});exports.default=b;
2
2
  //# sourceMappingURL=Editor.vue.cjs2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Editor.vue.cjs2.js","sources":["../../../../src/forms/ElInputRichText/Editor.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type EditorProps = {\n color: 'primary' | 'secondary';\n error?: boolean;\n plugins?: string[] | string;\n toolbar?: string[] | string;\n menubar?: string[] | string;\n modelValue?: string;\n};\n</script>\n<script setup lang=\"ts\">\nimport Editor from '@tinymce/tinymce-vue';\nimport { computed, Ref, ref } from 'vue';\nimport { Editor as EditorClass } from 'tinymce';\nimport 'tinymce';\nimport 'tinymce/icons/default/icons.min.js';\nimport 'tinymce/themes/silver/theme.min.js';\nimport 'tinymce/models/dom/model.min.js';\nimport 'tinymce/skins/ui/oxide/skin.js';\nimport 'tinymce/plugins/advlist';\nimport 'tinymce/plugins/image';\nimport 'tinymce/plugins/code';\nimport 'tinymce/plugins/fullscreen';\nimport 'tinymce/plugins/emoticons';\nimport 'tinymce/plugins/emoticons/js/emojis';\nimport 'tinymce/plugins/link';\nimport 'tinymce/plugins/wordcount';\nimport 'tinymce/plugins/lists';\nimport 'tinymce/plugins/table';\nimport 'tinymce/skins/ui/oxide/content.js';\n\nconst props = defineProps<EditorProps>();\nconst emit = defineEmits<{\n (event: 'editor:init', editor: EditorClass): void;\n (event: 'blur'): void;\n (event: 'update:modelValue', value: string): void;\n}>();\n\nconst editor: Ref<EditorClass | null> = ref(null);\n\nconst plugins = computed(() => props.plugins ?? 'lists table image emoticons link fullscreen wordcount');\nconst toolbar = computed(\n () =>\n props.toolbar ??\n 'undo redo blocks bold italic underline strikethrough alignleft aligncenter alignright alignjustify link image emoticons fullscreen',\n);\nconst menubar = computed(() => props.menubar ?? '');\n\nconst className = computed(() => {\n if (props.error) return 'tox--error';\n return props.color === 'primary' ? 'tox--primary' : 'tox--secondary';\n});\n\ndefineExpose<{\n editor: Ref<EditorClass | null>;\n}>({\n editor,\n});\n</script>\n<template>\n <div :class=\"className\">\n <Editor\n onblur=\"emit('blur')\"\n :modelValue=\"props.modelValue\"\n @update:modelValue=\"v => emit('update:modelValue', v)\"\n :init=\"{\n promotion: false,\n branding: false,\n statusbar: true,\n plugins: plugins,\n toolbar: toolbar,\n menubar: menubar,\n setup: (e: EditorClass) => {\n e.on('init', () => {\n editor = e;\n });\n emit('editor:init', e);\n },\n }\"\n />\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","editor","ref","plugins","computed","toolbar","menubar","className","__expose"],"mappings":"ihDA+BA,MAAMA,EAAQC,EACRC,EAAOC,EAMPC,EAAkCC,MAAI,IAAI,EAE1CC,EAAUC,EAAAA,SAAS,IAAMP,EAAM,SAAW,uDAAuD,EACjGQ,EAAUD,EAAA,SACd,IACEP,EAAM,SACN,oIAAA,EAEES,EAAUF,EAAAA,SAAS,IAAMP,EAAM,SAAW,EAAE,EAE5CU,EAAYH,EAAAA,SAAS,IACrBP,EAAM,MAAc,aACjBA,EAAM,QAAU,UAAY,eAAiB,gBACrD,EAIE,OAAAW,EAAA,CACD,OAAAP,CAAA,CACD"}
1
+ {"version":3,"file":"Editor.vue.cjs2.js","sources":["../../../../src/forms/ElInputRichText/Editor.vue"],"sourcesContent":["<!-- eslint-disable vue/multi-word-component-names -->\n<script lang=\"ts\">\nexport type EditorProps = {\n color: 'primary' | 'secondary';\n error?: boolean;\n plugins?: string[] | string;\n toolbar?: string[] | string;\n menubar?: string[] | string;\n modelValue?: string;\n};\n</script>\n<script setup lang=\"ts\">\nimport Editor from '@tinymce/tinymce-vue';\nimport { computed, Ref, ref } from 'vue';\nimport { Editor as EditorClass } from 'tinymce';\nimport 'tinymce/icons/default/icons.min.js';\nimport 'tinymce/themes/silver/theme.min.js';\nimport 'tinymce/models/dom/model.min.js';\nimport 'tinymce/skins/ui/oxide/skin.js';\nimport 'tinymce/plugins/advlist';\nimport 'tinymce/plugins/image';\nimport 'tinymce/plugins/code';\nimport 'tinymce/plugins/fullscreen';\nimport 'tinymce/plugins/emoticons';\nimport 'tinymce/plugins/emoticons/js/emojis';\nimport 'tinymce/plugins/link';\nimport 'tinymce/plugins/wordcount';\nimport 'tinymce/plugins/lists';\nimport 'tinymce/plugins/table';\nimport 'tinymce/skins/ui/oxide/content.js';\n\nconst props = defineProps<EditorProps>();\nconst emit = defineEmits<{\n (event: 'editor:init', editor: EditorClass): void;\n (event: 'blur'): void;\n (event: 'update:modelValue', value: string): void;\n}>();\n\nconst editor: Ref<EditorClass | null> = ref(null);\n\nconst plugins = computed(() => props.plugins ?? 'lists table image emoticons link fullscreen wordcount');\nconst toolbar = computed(\n () =>\n props.toolbar ??\n 'undo redo blocks bold italic underline strikethrough alignleft aligncenter alignright alignjustify link image emoticons fullscreen',\n);\nconst menubar = computed(() => props.menubar ?? '');\n\nconst className = computed(() => {\n if (props.error) return 'tox--error';\n return props.color === 'primary' ? 'tox--primary' : 'tox--secondary';\n});\n\ndefineExpose<{\n editor: Ref<EditorClass | null>;\n}>({\n editor,\n});\n</script>\n<template>\n <div :class=\"className\">\n <Editor\n onblur=\"emit('blur')\"\n :model-value=\"props.modelValue\"\n :init=\"{\n promotion: false,\n branding: false,\n statusbar: true,\n plugins: plugins,\n toolbar: toolbar,\n menubar: menubar,\n setup: (e: EditorClass) => {\n e.on('init', () => {\n editor = e;\n });\n emit('editor:init', e);\n },\n }\"\n @update:model-value=\"v => emit('update:modelValue', v)\"\n />\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","editor","ref","plugins","computed","toolbar","menubar","className","__expose"],"mappings":"y9CA+BA,MAAMA,EAAQC,EACRC,EAAOC,EAMPC,EAAkCC,MAAI,IAAI,EAE1CC,EAAUC,EAAAA,SAAS,IAAMP,EAAM,SAAW,uDAAuD,EACjGQ,EAAUD,EAAA,SACd,IACEP,EAAM,SACN,oIAAA,EAEES,EAAUF,EAAAA,SAAS,IAAMP,EAAM,SAAW,EAAE,EAE5CU,EAAYH,EAAAA,SAAS,IACrBP,EAAM,MAAc,aACjBA,EAAM,QAAU,UAAY,eAAiB,gBACrD,EAIE,OAAAW,EAAA,CACD,OAAAP,CAAA,CACD"}
@@ -1,2 +1,2 @@
1
- import{defineComponent as c,ref as b,computed as r,openBlock as f,createElementBlock as g,normalizeClass as V,createVNode as k,unref as v}from"vue";import{Editor as x}from"../../../node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/components/Editor.esm.js";import"../../../node_modules/tinymce/tinymce.esm.js";import"../../../node_modules/tinymce/icons/default/icons.min.esm.js";import"../../../node_modules/tinymce/themes/silver/theme.min.esm.js";import"../../../node_modules/tinymce/models/dom/model.min.esm.js";import"../../../node_modules/tinymce/skins/ui/oxide/skin.esm.js";import"../../../node_modules/tinymce/plugins/advlist/plugin.esm.js";import"../../../node_modules/tinymce/plugins/image/plugin.esm.js";import"../../../node_modules/tinymce/plugins/code/plugin.esm.js";import"../../../node_modules/tinymce/plugins/fullscreen/plugin.esm.js";import"../../../node_modules/tinymce/plugins/emoticons/plugin.esm.js";import"../../../node_modules/tinymce/plugins/emoticons/js/emojis.esm.js";import"../../../node_modules/tinymce/plugins/link/plugin.esm.js";import"../../../node_modules/tinymce/plugins/wordcount/plugin.esm.js";import"../../../node_modules/tinymce/plugins/lists/plugin.esm.js";import"../../../node_modules/tinymce/plugins/table/plugin.esm.js";import"../../../node_modules/tinymce/skins/ui/oxide/content.esm.js";const K=c({__name:"Editor",props:{color:{},error:{type:Boolean},plugins:{},toolbar:{},menubar:{},modelValue:{}},emits:["editor:init","blur","update:modelValue"],setup(n,{expose:a,emit:m}){const o=n,t=m,i=b(null),u=r(()=>o.plugins??"lists table image emoticons link fullscreen wordcount"),p=r(()=>o.toolbar??"undo redo blocks bold italic underline strikethrough alignleft aligncenter alignright alignjustify link image emoticons fullscreen"),s=r(()=>o.menubar??""),d=r(()=>o.error?"tox--error":o.color==="primary"?"tox--primary":"tox--secondary");return a({editor:i}),(y,l)=>(f(),g("div",{class:V(d.value)},[k(v(x),{onblur:"emit('blur')",modelValue:o.modelValue,"onUpdate:modelValue":l[0]||(l[0]=e=>t("update:modelValue",e)),init:{promotion:!1,branding:!1,statusbar:!0,plugins:u.value,toolbar:p.value,menubar:s.value,setup:e=>{e.on("init",()=>{i.value=e}),t("editor:init",e)}}},null,8,["modelValue","init"])],2))}});export{K as default};
1
+ import{defineComponent as c,ref as b,computed as r,openBlock as f,createElementBlock as g,normalizeClass as v,createVNode as k,unref as x}from"vue";import{Editor as V}from"../../../node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/components/Editor.esm.js";import"../../../node_modules/tinymce/icons/default/icons.min.esm.js";import"../../../node_modules/tinymce/themes/silver/theme.min.esm.js";import"../../../node_modules/tinymce/models/dom/model.min.esm.js";import"../../../node_modules/tinymce/skins/ui/oxide/skin.esm.js";import"../../../node_modules/tinymce/plugins/advlist/plugin.esm.js";import"../../../node_modules/tinymce/plugins/image/plugin.esm.js";import"../../../node_modules/tinymce/plugins/code/plugin.esm.js";import"../../../node_modules/tinymce/plugins/fullscreen/plugin.esm.js";import"../../../node_modules/tinymce/plugins/emoticons/plugin.esm.js";import"../../../node_modules/tinymce/plugins/emoticons/js/emojis.esm.js";import"../../../node_modules/tinymce/plugins/link/plugin.esm.js";import"../../../node_modules/tinymce/plugins/wordcount/plugin.esm.js";import"../../../node_modules/tinymce/plugins/lists/plugin.esm.js";import"../../../node_modules/tinymce/plugins/table/plugin.esm.js";import"../../../node_modules/tinymce/skins/ui/oxide/content.esm.js";const J=c({__name:"Editor",props:{color:{},error:{type:Boolean},plugins:{},toolbar:{},menubar:{},modelValue:{}},emits:["editor:init","blur","update:modelValue"],setup(n,{expose:a,emit:m}){const o=n,t=m,i=b(null),u=r(()=>o.plugins??"lists table image emoticons link fullscreen wordcount"),s=r(()=>o.toolbar??"undo redo blocks bold italic underline strikethrough alignleft aligncenter alignright alignjustify link image emoticons fullscreen"),p=r(()=>o.menubar??""),d=r(()=>o.error?"tox--error":o.color==="primary"?"tox--primary":"tox--secondary");return a({editor:i}),(y,l)=>(f(),g("div",{class:v(d.value)},[k(x(V),{onblur:"emit('blur')","model-value":o.modelValue,init:{promotion:!1,branding:!1,statusbar:!0,plugins:u.value,toolbar:s.value,menubar:p.value,setup:e=>{e.on("init",()=>{i.value=e}),t("editor:init",e)}},"onUpdate:modelValue":l[0]||(l[0]=e=>t("update:modelValue",e))},null,8,["model-value","init"])],2))}});export{J as default};
2
2
  //# sourceMappingURL=Editor.vue.esm2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Editor.vue.esm2.js","sources":["../../../../src/forms/ElInputRichText/Editor.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type EditorProps = {\n color: 'primary' | 'secondary';\n error?: boolean;\n plugins?: string[] | string;\n toolbar?: string[] | string;\n menubar?: string[] | string;\n modelValue?: string;\n};\n</script>\n<script setup lang=\"ts\">\nimport Editor from '@tinymce/tinymce-vue';\nimport { computed, Ref, ref } from 'vue';\nimport { Editor as EditorClass } from 'tinymce';\nimport 'tinymce';\nimport 'tinymce/icons/default/icons.min.js';\nimport 'tinymce/themes/silver/theme.min.js';\nimport 'tinymce/models/dom/model.min.js';\nimport 'tinymce/skins/ui/oxide/skin.js';\nimport 'tinymce/plugins/advlist';\nimport 'tinymce/plugins/image';\nimport 'tinymce/plugins/code';\nimport 'tinymce/plugins/fullscreen';\nimport 'tinymce/plugins/emoticons';\nimport 'tinymce/plugins/emoticons/js/emojis';\nimport 'tinymce/plugins/link';\nimport 'tinymce/plugins/wordcount';\nimport 'tinymce/plugins/lists';\nimport 'tinymce/plugins/table';\nimport 'tinymce/skins/ui/oxide/content.js';\n\nconst props = defineProps<EditorProps>();\nconst emit = defineEmits<{\n (event: 'editor:init', editor: EditorClass): void;\n (event: 'blur'): void;\n (event: 'update:modelValue', value: string): void;\n}>();\n\nconst editor: Ref<EditorClass | null> = ref(null);\n\nconst plugins = computed(() => props.plugins ?? 'lists table image emoticons link fullscreen wordcount');\nconst toolbar = computed(\n () =>\n props.toolbar ??\n 'undo redo blocks bold italic underline strikethrough alignleft aligncenter alignright alignjustify link image emoticons fullscreen',\n);\nconst menubar = computed(() => props.menubar ?? '');\n\nconst className = computed(() => {\n if (props.error) return 'tox--error';\n return props.color === 'primary' ? 'tox--primary' : 'tox--secondary';\n});\n\ndefineExpose<{\n editor: Ref<EditorClass | null>;\n}>({\n editor,\n});\n</script>\n<template>\n <div :class=\"className\">\n <Editor\n onblur=\"emit('blur')\"\n :modelValue=\"props.modelValue\"\n @update:modelValue=\"v => emit('update:modelValue', v)\"\n :init=\"{\n promotion: false,\n branding: false,\n statusbar: true,\n plugins: plugins,\n toolbar: toolbar,\n menubar: menubar,\n setup: (e: EditorClass) => {\n e.on('init', () => {\n editor = e;\n });\n emit('editor:init', e);\n },\n }\"\n />\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","editor","ref","plugins","computed","toolbar","menubar","className","__expose"],"mappings":"8+CA+BA,MAAMA,EAAQC,EACRC,EAAOC,EAMPC,EAAkCC,EAAI,IAAI,EAE1CC,EAAUC,EAAS,IAAMP,EAAM,SAAW,uDAAuD,EACjGQ,EAAUD,EACd,IACEP,EAAM,SACN,oIAAA,EAEES,EAAUF,EAAS,IAAMP,EAAM,SAAW,EAAE,EAE5CU,EAAYH,EAAS,IACrBP,EAAM,MAAc,aACjBA,EAAM,QAAU,UAAY,eAAiB,gBACrD,EAIE,OAAAW,EAAA,CACD,OAAAP,CAAA,CACD"}
1
+ {"version":3,"file":"Editor.vue.esm2.js","sources":["../../../../src/forms/ElInputRichText/Editor.vue"],"sourcesContent":["<!-- eslint-disable vue/multi-word-component-names -->\n<script lang=\"ts\">\nexport type EditorProps = {\n color: 'primary' | 'secondary';\n error?: boolean;\n plugins?: string[] | string;\n toolbar?: string[] | string;\n menubar?: string[] | string;\n modelValue?: string;\n};\n</script>\n<script setup lang=\"ts\">\nimport Editor from '@tinymce/tinymce-vue';\nimport { computed, Ref, ref } from 'vue';\nimport { Editor as EditorClass } from 'tinymce';\nimport 'tinymce/icons/default/icons.min.js';\nimport 'tinymce/themes/silver/theme.min.js';\nimport 'tinymce/models/dom/model.min.js';\nimport 'tinymce/skins/ui/oxide/skin.js';\nimport 'tinymce/plugins/advlist';\nimport 'tinymce/plugins/image';\nimport 'tinymce/plugins/code';\nimport 'tinymce/plugins/fullscreen';\nimport 'tinymce/plugins/emoticons';\nimport 'tinymce/plugins/emoticons/js/emojis';\nimport 'tinymce/plugins/link';\nimport 'tinymce/plugins/wordcount';\nimport 'tinymce/plugins/lists';\nimport 'tinymce/plugins/table';\nimport 'tinymce/skins/ui/oxide/content.js';\n\nconst props = defineProps<EditorProps>();\nconst emit = defineEmits<{\n (event: 'editor:init', editor: EditorClass): void;\n (event: 'blur'): void;\n (event: 'update:modelValue', value: string): void;\n}>();\n\nconst editor: Ref<EditorClass | null> = ref(null);\n\nconst plugins = computed(() => props.plugins ?? 'lists table image emoticons link fullscreen wordcount');\nconst toolbar = computed(\n () =>\n props.toolbar ??\n 'undo redo blocks bold italic underline strikethrough alignleft aligncenter alignright alignjustify link image emoticons fullscreen',\n);\nconst menubar = computed(() => props.menubar ?? '');\n\nconst className = computed(() => {\n if (props.error) return 'tox--error';\n return props.color === 'primary' ? 'tox--primary' : 'tox--secondary';\n});\n\ndefineExpose<{\n editor: Ref<EditorClass | null>;\n}>({\n editor,\n});\n</script>\n<template>\n <div :class=\"className\">\n <Editor\n onblur=\"emit('blur')\"\n :model-value=\"props.modelValue\"\n :init=\"{\n promotion: false,\n branding: false,\n statusbar: true,\n plugins: plugins,\n toolbar: toolbar,\n menubar: menubar,\n setup: (e: EditorClass) => {\n e.on('init', () => {\n editor = e;\n });\n emit('editor:init', e);\n },\n }\"\n @update:model-value=\"v => emit('update:modelValue', v)\"\n />\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","editor","ref","plugins","computed","toolbar","menubar","className","__expose"],"mappings":"y7CA+BA,MAAMA,EAAQC,EACRC,EAAOC,EAMPC,EAAkCC,EAAI,IAAI,EAE1CC,EAAUC,EAAS,IAAMP,EAAM,SAAW,uDAAuD,EACjGQ,EAAUD,EACd,IACEP,EAAM,SACN,oIAAA,EAEES,EAAUF,EAAS,IAAMP,EAAM,SAAW,EAAE,EAE5CU,EAAYH,EAAS,IACrBP,EAAM,MAAc,aACjBA,EAAM,QAAU,UAAY,eAAiB,gBACrD,EAIE,OAAAW,EAAA,CACD,OAAAP,CAAA,CACD"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const _=require("../../_virtual/preload-helper.cjs.js"),e=require("vue"),v=require("./ElInputContainer.vue.cjs2.js"),V=require("./input.cjs.js"),M=e.defineComponent({__name:"ElInputRichText",props:{color:{},plugins:{},toolbar:{},menubar:{},modelValue:{},errorMessage:{type:[String,Boolean]},label:{},name:{},id:{},hiddenErrorMessage:{type:Boolean},setRequiredMark:{type:Boolean},validation:{}},emits:["update:modelValue"],setup(u,{emit:s}){const d=e.defineAsyncComponent(()=>_.__vitePreload(()=>Promise.resolve().then(()=>require("./ElInputRichText/Editor.vue.cjs.js")),void 0)),r=u,i=e.computed(()=>[r.validation??""]),m=e.computed(()=>r.modelValue),t=s,{value:p,errorMessage:a,uuid:c,fieldContext:f}=V.useInput(m,i,r.name,o=>{t("update:modelValue",o)}),g=e.computed(()=>r.label?r.label.trim().replaceAll(" ",""):"richtext");return(o,l)=>(e.openBlock(),e.createBlock(v.default,{name:o.id||`${e.unref(c)}-${g.value}`,label:r.label,"error-message":r.errorMessage||e.unref(a),"hidden-error-message":r.hiddenErrorMessage},{default:e.withCtx(()=>[e.createVNode(e.unref(d),{modelValue:e.unref(p),"onUpdate:modelValue":l[0]||(l[0]=n=>t("update:modelValue",n)),onBlur:l[1]||(l[1]=n=>e.unref(f).validate()),error:!!(o.errorMessage||e.unref(a)),color:o.color},null,8,["modelValue","error","color"])]),_:1},8,["name","label","error-message","hidden-error-message"]))}});exports.default=M;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const g=require("../../_virtual/preload-helper.cjs.js"),e=require("vue"),_=require("./ElInputContainer.vue.cjs2.js"),M=require("./input.cjs.js"),b=e.defineComponent({__name:"ElInputRichText",props:{color:{},plugins:{},toolbar:{},menubar:{},modelValue:{},errorMessage:{type:[String,Boolean]},label:{},name:{},id:{},hiddenErrorMessage:{type:Boolean},setRequiredMark:{type:Boolean},validation:{}},emits:["update:modelValue"],setup(u,{emit:s}){const d=e.defineAsyncComponent(()=>g.__vitePreload(()=>Promise.resolve().then(()=>require("./ElInputRichText/Editor.vue.cjs.js")),void 0)),r=u,i=e.computed(()=>[r.validation??""]),m=e.computed(()=>r.modelValue),t=s,{value:p,errorMessage:a,uuid:c,fieldContext:v}=M.useInput(m,i,r.name,o=>{t("update:modelValue",o)}),f=e.computed(()=>r.label?r.label.trim().replaceAll(" ",""):"richtext");return(o,l)=>(e.openBlock(),e.createBlock(_.default,{name:o.id||`${e.unref(c)}-${f.value}`,label:r.label,"error-message":r.errorMessage||e.unref(a),"hidden-error-message":r.hiddenErrorMessage},{default:e.withCtx(()=>[e.createVNode(e.unref(d),{"model-value":e.unref(p),error:!!(o.errorMessage||e.unref(a)),color:o.color,"onUpdate:modelValue":l[0]||(l[0]=n=>t("update:modelValue",n)),onBlur:l[1]||(l[1]=n=>e.unref(v).validate())},null,8,["model-value","error","color"])]),_:1},8,["name","label","error-message","hidden-error-message"]))}});exports.default=b;
2
2
  //# sourceMappingURL=ElInputRichText.vue.cjs2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ElInputRichText.vue.cjs2.js","sources":["../../../src/forms/ElInputRichText.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent } from 'vue';\nimport type { EditorProps } from './ElInputRichText/Editor.vue';\nimport ElInputContainer from '@/forms/ElInputContainer.vue';\nimport { TextualValueType, useInput } from './input';\nimport { InputValidation } from './validation-rules';\nexport type ElInputRichTextProps = Omit<EditorProps, 'error'> & {\n modelValue?: string;\n errorMessage?: string | boolean;\n label?: string;\n name?: string;\n id?: string;\n hiddenErrorMessage?: boolean;\n setRequiredMark?: boolean;\n validation?: InputValidation;\n};\n\nconst Editor = defineAsyncComponent(() => import('./ElInputRichText/Editor.vue'));\n\nconst props = defineProps<ElInputRichTextProps>();\n// @ts-ignore: FIXME Expression produces a union type that is too complex to represent.\nconst computedValidation = computed<InputValidation[]>(() => [(props.validation ?? '') as InputValidation]);\nconst computedModelValue = computed(() => props.modelValue);\nconst emit = defineEmits<{\n (event: 'update:modelValue', value: TextualValueType): void;\n}>();\nconst {\n value,\n errorMessage: validationErrorMessage,\n uuid,\n fieldContext,\n} = useInput(computedModelValue, computedValidation, props.name, newValue => {\n emit('update:modelValue', newValue);\n});\nconst defaultId = computed(() => (props.label ? props.label.trim().replaceAll(' ', '') : 'richtext'));\n</script>\n<template>\n <ElInputContainer\n :name=\"id || `${uuid}-${defaultId}`\"\n :label=\"props.label\"\n :error-message=\"props.errorMessage || validationErrorMessage\"\n :hidden-error-message=\"props.hiddenErrorMessage\"\n >\n <Editor\n :modelValue=\"value\"\n @update:modelValue=\"v => emit('update:modelValue', v)\"\n @blur=\"fieldContext.validate()\"\n :error=\"!!(errorMessage || validationErrorMessage)\"\n :color=\"color\"\n />\n </ElInputContainer>\n</template>\n"],"names":["Editor","defineAsyncComponent","__vitePreload","props","__props","computedValidation","computed","computedModelValue","emit","__emit","value","validationErrorMessage","uuid","fieldContext","useInput","newValue","defaultId"],"mappings":"oiBAiBA,MAAMA,EAASC,EAAAA,qBAAqB,IAAMC,EAAAA,cAAA,IAAA,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,qCAA8B,CAAA,EAAA,MAAA,CAAC,EAE1EC,EAAQC,EAERC,EAAqBC,EAAAA,SAA4B,IAAM,CAAEH,EAAM,YAAc,EAAsB,CAAC,EACpGI,EAAqBD,EAAA,SAAS,IAAMH,EAAM,UAAU,EACpDK,EAAOC,EAGP,CACJ,MAAAC,EACA,aAAcC,EACd,KAAAC,EACA,aAAAC,CAAA,EACEC,EAAAA,SAASP,EAAoBF,EAAoBF,EAAM,KAAkBY,GAAA,CAC3EP,EAAK,oBAAqBO,CAAQ,CAAA,CACnC,EACKC,EAAYV,EAAA,SAAS,IAAOH,EAAM,MAAQA,EAAM,MAAM,KAAA,EAAO,WAAW,IAAK,EAAE,EAAI,UAAW"}
1
+ {"version":3,"file":"ElInputRichText.vue.cjs2.js","sources":["../../../src/forms/ElInputRichText.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent } from 'vue';\nimport type { EditorProps } from './ElInputRichText/Editor.vue';\nimport ElInputContainer from '@/forms/ElInputContainer.vue';\nimport { TextualValueType, useInput } from './input';\nimport { InputValidation } from './validation-rules';\nexport type ElInputRichTextProps = Omit<EditorProps, 'error'> & {\n modelValue?: string;\n errorMessage?: string | boolean;\n label?: string;\n name?: string;\n id?: string;\n hiddenErrorMessage?: boolean;\n setRequiredMark?: boolean;\n validation?: InputValidation;\n};\n\nconst Editor = defineAsyncComponent(() => import('./ElInputRichText/Editor.vue'));\n\nconst props = defineProps<ElInputRichTextProps>();\n// @ts-ignore: FIXME Expression produces a union type that is too complex to represent.\nconst computedValidation = computed<InputValidation[]>(() => [(props.validation ?? '') as InputValidation]);\nconst computedModelValue = computed(() => props.modelValue);\nconst emit = defineEmits<{\n (event: 'update:modelValue', value: TextualValueType): void;\n}>();\nconst {\n value,\n errorMessage: validationErrorMessage,\n uuid,\n fieldContext,\n} = useInput(computedModelValue, computedValidation, props.name, newValue => {\n emit('update:modelValue', newValue);\n});\nconst defaultId = computed(() => (props.label ? props.label.trim().replaceAll(' ', '') : 'richtext'));\n</script>\n<template>\n <ElInputContainer\n :name=\"id || `${uuid}-${defaultId}`\"\n :label=\"props.label\"\n :error-message=\"props.errorMessage || validationErrorMessage\"\n :hidden-error-message=\"props.hiddenErrorMessage\"\n >\n <Editor\n :model-value=\"value\"\n :error=\"!!(errorMessage || validationErrorMessage)\"\n :color=\"color\"\n @update:model-value=\"v => emit('update:modelValue', v)\"\n @blur=\"fieldContext.validate()\"\n />\n </ElInputContainer>\n</template>\n"],"names":["Editor","defineAsyncComponent","__vitePreload","props","__props","computedValidation","computed","computedModelValue","emit","__emit","value","validationErrorMessage","uuid","fieldContext","useInput","newValue","defaultId"],"mappings":"oiBAiBA,MAAMA,EAASC,EAAAA,qBAAqB,IAAMC,EAAAA,cAAA,IAAA,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,qCAA8B,CAAA,EAAA,MAAA,CAAC,EAE1EC,EAAQC,EAERC,EAAqBC,EAAAA,SAA4B,IAAM,CAAEH,EAAM,YAAc,EAAsB,CAAC,EACpGI,EAAqBD,EAAA,SAAS,IAAMH,EAAM,UAAU,EACpDK,EAAOC,EAGP,CACJ,MAAAC,EACA,aAAcC,EACd,KAAAC,EACA,aAAAC,CAAA,EACEC,EAAAA,SAASP,EAAoBF,EAAoBF,EAAM,KAAkBY,GAAA,CAC3EP,EAAK,oBAAqBO,CAAQ,CAAA,CACnC,EACKC,EAAYV,EAAA,SAAS,IAAOH,EAAM,MAAQA,EAAM,MAAM,KAAA,EAAO,WAAW,IAAK,EAAE,EAAI,UAAW"}
@@ -1,3 +1,3 @@
1
- const __vite__fileDeps=["src/forms/ElInputRichText/Editor.vue.esm.js","src/forms/ElInputRichText/Editor.vue.esm2.js","node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/components/Editor.esm.js","node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/ScriptLoader.esm.js","node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/Utils.esm.js","node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/TinyMCE.esm.js","node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/components/EditorPropTypes.esm.js","node_modules/tinymce/tinymce.esm.js","_virtual/_commonjsHelpers.esm.js","_virtual/tinymce.esm.js","node_modules/tinymce/icons/default/icons.min.esm.js","node_modules/tinymce/themes/silver/theme.min.esm.js","node_modules/tinymce/models/dom/model.min.esm.js","node_modules/tinymce/skins/ui/oxide/skin.esm.js","node_modules/tinymce/plugins/advlist/plugin.esm.js","node_modules/tinymce/plugins/image/plugin.esm.js","node_modules/tinymce/plugins/code/plugin.esm.js","node_modules/tinymce/plugins/fullscreen/plugin.esm.js","node_modules/tinymce/plugins/emoticons/plugin.esm.js","node_modules/tinymce/plugins/emoticons/js/emojis.esm.js","node_modules/tinymce/plugins/link/plugin.esm.js","node_modules/tinymce/plugins/wordcount/plugin.esm.js","node_modules/tinymce/plugins/lists/plugin.esm.js","node_modules/tinymce/plugins/table/plugin.esm.js","node_modules/tinymce/skins/ui/oxide/content.esm.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]);
2
- import{__vitePreload as v}from"../../_virtual/preload-helper.esm.js";import{defineComponent as M,defineAsyncComponent as _,computed as l,openBlock as b,createBlock as E,unref as o,withCtx as B,createVNode as h}from"vue";import y from"./ElInputContainer.vue.esm2.js";import{useInput as C}from"./input.esm.js";const A=M({__name:"ElInputRichText",props:{color:{},plugins:{},toolbar:{},menubar:{},modelValue:{},errorMessage:{type:[String,Boolean]},label:{},name:{},id:{},hiddenErrorMessage:{type:Boolean},setRequiredMark:{type:Boolean},validation:{}},emits:["update:modelValue"],setup(s,{emit:i}){const m=_(()=>v(()=>import("./ElInputRichText/Editor.vue.esm.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]))),e=s,u=l(()=>[e.validation??""]),p=l(()=>e.modelValue),t=i,{value:c,errorMessage:n,uuid:f,fieldContext:g}=C(p,u,e.name,r=>{t("update:modelValue",r)}),V=l(()=>e.label?e.label.trim().replaceAll(" ",""):"richtext");return(r,a)=>(b(),E(y,{name:r.id||`${o(f)}-${V.value}`,label:e.label,"error-message":e.errorMessage||o(n),"hidden-error-message":e.hiddenErrorMessage},{default:B(()=>[h(o(m),{modelValue:o(c),"onUpdate:modelValue":a[0]||(a[0]=d=>t("update:modelValue",d)),onBlur:a[1]||(a[1]=d=>o(g).validate()),error:!!(r.errorMessage||o(n)),color:r.color},null,8,["modelValue","error","color"])]),_:1},8,["name","label","error-message","hidden-error-message"]))}});export{A as default};
1
+ const __vite__fileDeps=["src/forms/ElInputRichText/Editor.vue.esm.js","src/forms/ElInputRichText/Editor.vue.esm2.js","node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/components/Editor.esm.js","node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/ScriptLoader.esm.js","node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/Utils.esm.js","node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/TinyMCE.esm.js","node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/components/EditorPropTypes.esm.js","node_modules/tinymce/icons/default/icons.min.esm.js","node_modules/tinymce/themes/silver/theme.min.esm.js","node_modules/tinymce/models/dom/model.min.esm.js","node_modules/tinymce/skins/ui/oxide/skin.esm.js","node_modules/tinymce/plugins/advlist/plugin.esm.js","node_modules/tinymce/plugins/image/plugin.esm.js","node_modules/tinymce/plugins/code/plugin.esm.js","node_modules/tinymce/plugins/fullscreen/plugin.esm.js","node_modules/tinymce/plugins/emoticons/plugin.esm.js","node_modules/tinymce/plugins/emoticons/js/emojis.esm.js","node_modules/tinymce/plugins/link/plugin.esm.js","node_modules/tinymce/plugins/wordcount/plugin.esm.js","node_modules/tinymce/plugins/lists/plugin.esm.js","node_modules/tinymce/plugins/table/plugin.esm.js","node_modules/tinymce/skins/ui/oxide/content.esm.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]);
2
+ import{__vitePreload as V}from"../../_virtual/preload-helper.esm.js";import{defineComponent as M,defineAsyncComponent as _,computed as l,openBlock as b,createBlock as E,unref as o,withCtx as B,createVNode as h}from"vue";import y from"./ElInputContainer.vue.esm2.js";import{useInput as C}from"./input.esm.js";const A=M({__name:"ElInputRichText",props:{color:{},plugins:{},toolbar:{},menubar:{},modelValue:{},errorMessage:{type:[String,Boolean]},label:{},name:{},id:{},hiddenErrorMessage:{type:Boolean},setRequiredMark:{type:Boolean},validation:{}},emits:["update:modelValue"],setup(s,{emit:i}){const m=_(()=>V(()=>import("./ElInputRichText/Editor.vue.esm.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]))),e=s,u=l(()=>[e.validation??""]),p=l(()=>e.modelValue),t=i,{value:c,errorMessage:n,uuid:f,fieldContext:g}=C(p,u,e.name,r=>{t("update:modelValue",r)}),v=l(()=>e.label?e.label.trim().replaceAll(" ",""):"richtext");return(r,a)=>(b(),E(y,{name:r.id||`${o(f)}-${v.value}`,label:e.label,"error-message":e.errorMessage||o(n),"hidden-error-message":e.hiddenErrorMessage},{default:B(()=>[h(o(m),{"model-value":o(c),error:!!(r.errorMessage||o(n)),color:r.color,"onUpdate:modelValue":a[0]||(a[0]=d=>t("update:modelValue",d)),onBlur:a[1]||(a[1]=d=>o(g).validate())},null,8,["model-value","error","color"])]),_:1},8,["name","label","error-message","hidden-error-message"]))}});export{A as default};
3
3
  //# sourceMappingURL=ElInputRichText.vue.esm2.js.map
@@ -1 +1 @@
1
- {"version":3,"mappings":";ilBAiBA,MAAMA,EAASC,EAAqB,IAAMC,EAAA,WAAO,qCAA8B,sFAAC,EAE1EC,EAAQC,EAERC,EAAqBC,EAA4B,IAAM,CAAEH,EAAM,YAAc,EAAsB,CAAC,EACpGI,EAAqBD,EAAS,IAAMH,EAAM,UAAU,EACpDK,EAAOC,EAGP,CACJ,MAAAC,EACA,aAAcC,EACd,KAAAC,EACA,aAAAC,CAAA,EACEC,EAASP,EAAoBF,EAAoBF,EAAM,KAAkBY,GAAA,CAC3EP,EAAK,oBAAqBO,CAAQ,EACnC,EACKC,EAAYV,EAAS,IAAOH,EAAM,MAAQA,EAAM,MAAM,OAAO,WAAW,IAAK,EAAE,EAAI,UAAW","names":["Editor","defineAsyncComponent","__vitePreload","props","__props","computedValidation","computed","computedModelValue","emit","__emit","value","validationErrorMessage","uuid","fieldContext","useInput","newValue","defaultId"],"ignoreList":[],"sources":["../../../src/forms/ElInputRichText.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent } from 'vue';\nimport type { EditorProps } from './ElInputRichText/Editor.vue';\nimport ElInputContainer from '@/forms/ElInputContainer.vue';\nimport { TextualValueType, useInput } from './input';\nimport { InputValidation } from './validation-rules';\nexport type ElInputRichTextProps = Omit<EditorProps, 'error'> & {\n modelValue?: string;\n errorMessage?: string | boolean;\n label?: string;\n name?: string;\n id?: string;\n hiddenErrorMessage?: boolean;\n setRequiredMark?: boolean;\n validation?: InputValidation;\n};\n\nconst Editor = defineAsyncComponent(() => import('./ElInputRichText/Editor.vue'));\n\nconst props = defineProps<ElInputRichTextProps>();\n// @ts-ignore: FIXME Expression produces a union type that is too complex to represent.\nconst computedValidation = computed<InputValidation[]>(() => [(props.validation ?? '') as InputValidation]);\nconst computedModelValue = computed(() => props.modelValue);\nconst emit = defineEmits<{\n (event: 'update:modelValue', value: TextualValueType): void;\n}>();\nconst {\n value,\n errorMessage: validationErrorMessage,\n uuid,\n fieldContext,\n} = useInput(computedModelValue, computedValidation, props.name, newValue => {\n emit('update:modelValue', newValue);\n});\nconst defaultId = computed(() => (props.label ? props.label.trim().replaceAll(' ', '') : 'richtext'));\n</script>\n<template>\n <ElInputContainer\n :name=\"id || `${uuid}-${defaultId}`\"\n :label=\"props.label\"\n :error-message=\"props.errorMessage || validationErrorMessage\"\n :hidden-error-message=\"props.hiddenErrorMessage\"\n >\n <Editor\n :modelValue=\"value\"\n @update:modelValue=\"v => emit('update:modelValue', v)\"\n @blur=\"fieldContext.validate()\"\n :error=\"!!(errorMessage || validationErrorMessage)\"\n :color=\"color\"\n />\n </ElInputContainer>\n</template>\n"],"file":"src/forms/ElInputRichText.vue.esm2.js"}
1
+ {"version":3,"mappings":";ilBAiBA,MAAMA,EAASC,EAAqB,IAAMC,EAAA,WAAO,qCAA8B,6EAAC,EAE1EC,EAAQC,EAERC,EAAqBC,EAA4B,IAAM,CAAEH,EAAM,YAAc,EAAsB,CAAC,EACpGI,EAAqBD,EAAS,IAAMH,EAAM,UAAU,EACpDK,EAAOC,EAGP,CACJ,MAAAC,EACA,aAAcC,EACd,KAAAC,EACA,aAAAC,CAAA,EACEC,EAASP,EAAoBF,EAAoBF,EAAM,KAAkBY,GAAA,CAC3EP,EAAK,oBAAqBO,CAAQ,EACnC,EACKC,EAAYV,EAAS,IAAOH,EAAM,MAAQA,EAAM,MAAM,OAAO,WAAW,IAAK,EAAE,EAAI,UAAW","names":["Editor","defineAsyncComponent","__vitePreload","props","__props","computedValidation","computed","computedModelValue","emit","__emit","value","validationErrorMessage","uuid","fieldContext","useInput","newValue","defaultId"],"ignoreList":[],"sources":["../../../src/forms/ElInputRichText.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent } from 'vue';\nimport type { EditorProps } from './ElInputRichText/Editor.vue';\nimport ElInputContainer from '@/forms/ElInputContainer.vue';\nimport { TextualValueType, useInput } from './input';\nimport { InputValidation } from './validation-rules';\nexport type ElInputRichTextProps = Omit<EditorProps, 'error'> & {\n modelValue?: string;\n errorMessage?: string | boolean;\n label?: string;\n name?: string;\n id?: string;\n hiddenErrorMessage?: boolean;\n setRequiredMark?: boolean;\n validation?: InputValidation;\n};\n\nconst Editor = defineAsyncComponent(() => import('./ElInputRichText/Editor.vue'));\n\nconst props = defineProps<ElInputRichTextProps>();\n// @ts-ignore: FIXME Expression produces a union type that is too complex to represent.\nconst computedValidation = computed<InputValidation[]>(() => [(props.validation ?? '') as InputValidation]);\nconst computedModelValue = computed(() => props.modelValue);\nconst emit = defineEmits<{\n (event: 'update:modelValue', value: TextualValueType): void;\n}>();\nconst {\n value,\n errorMessage: validationErrorMessage,\n uuid,\n fieldContext,\n} = useInput(computedModelValue, computedValidation, props.name, newValue => {\n emit('update:modelValue', newValue);\n});\nconst defaultId = computed(() => (props.label ? props.label.trim().replaceAll(' ', '') : 'richtext'));\n</script>\n<template>\n <ElInputContainer\n :name=\"id || `${uuid}-${defaultId}`\"\n :label=\"props.label\"\n :error-message=\"props.errorMessage || validationErrorMessage\"\n :hidden-error-message=\"props.hiddenErrorMessage\"\n >\n <Editor\n :model-value=\"value\"\n :error=\"!!(errorMessage || validationErrorMessage)\"\n :color=\"color\"\n @update:model-value=\"v => emit('update:modelValue', v)\"\n @blur=\"fieldContext.validate()\"\n />\n </ElInputContainer>\n</template>\n"],"file":"src/forms/ElInputRichText.vue.esm2.js"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),g=require("../ElDivider.vue.cjs2.js"),_=require("../ElIcon.vue.cjs2.js"),F=require("../ElVerticalTab.vue.cjs2.js");;/* empty css */require("../polyfills.cjs.js");require("vee-validate");require("../../node_modules/codice-fiscale-js/dist/codice.fiscale.commonjs2.cjs.js");require("../../node_modules/lodash/lodash.cjs.js");require("../tailwind.plugin.cjs.js");require("../../node_modules/@davincihealthcare/elty-design-system-foundations/dist/index.cjs.js");const T=require("../ElButton.vue.cjs2.js"),A=require("../_CustomTransition.vue.cjs2.js"),b=require("../../node_modules/@vueuse/core/index.cjs.js");require("./ElInputText.vue.cjs2.js");require("./ElInputCheckbox.vue.cjs2.js");require("./ElInputDate.vue.cjs2.js");require("./ElInputFile.vue.cjs2.js");require("./ElInputMeasureUnit.vue.cjs2.js");require("./ElInputNumber.vue.cjs2.js");require("./ElInputPhone.vue.cjs2.js");require("./ElInputSelect.vue.cjs2.js");require("./ElInputTextarea.vue.cjs2.js");require("../ElToast.vue.cjs2.js");require("./ElInputRadioButton.vue.cjs2.js");const P=require("../../node_modules/@vueuse/components/index.cjs.js"),q=require("./input.cjs.js");require("../../node_modules/swiper/shared/swiper-core.cjs.js");;/* empty css */;/* empty css */const j=require("../../node_modules/@vueuse/integrations/useFocusTrap.cjs.js"),z={class:"flex flex-row items-center gap-3 bg-neutral-surface rounded-2xl"},H=["name","placeholder"],$={class:"flex flex-col gap-y-6 overflow-y-hidden"},L={key:1,class:"flex flex-col items-center justify-center flex-1 gap-4 py-8 text-neutral-lighter"},U={class:"text-sm font-semibold text-neutral-darker"},G={class:"text-sm font-normal"},K={key:2,class:"flex py-2 overflow-y-hidden"},J={key:0,class:"text-sm font-medium text-neutral-darker"},Q={class:"flex flex-col gap-1 w-full"},W={key:0},X={key:1,class:"flex-1 pl-6 overflow-y-auto"},Y={key:3,class:"flex items-center gap-1 self-stretch"},Z={class:"text-sm font-normal text-neutral-darker"},ee={class:"fixed inset-0 transition-opacity"},te={ref:"backdrop",class:"absolute inset-0 bg-gray-500 opacity-75"},oe=["primary","secondary"],re=["default","filled","blank"],le=e.defineComponent({__name:"ElInputSearch",props:e.mergeModels({...q.withTextualElInputProps(),status:{type:String,default:"default"},text:{type:String,default:void 0},results:{type:Array,default:void 0},footer:{type:Object,default:void 0},blankResults:{type:Object,default:void 0},shouldHoverFirstResultOnOpen:{type:Boolean,default:!1},color:{type:String,default:"primary"}},{isOpen:{default:!0,required:!0,type:Boolean},isOpenModifiers:{}}),emits:e.mergeModels(["update:modelValue","onResultClick","onResultHover"],["update:isOpen"]),setup(o,{emit:B}){const l=o,d=B,f=e.useSlots(),E=b.useScrollLock(document.body),m=e.ref(null),V=e.computed(()=>l.modelValue),w=e.computed(()=>[l.validation]),v=e.computed(()=>({default:!l.results,filled:l.results&&l.results.length>0,blank:l.results&&l.results.length===0})),S=e.ref(!1),k=e.ref(!1),y=e.ref([]),s=e.ref(),{value:u,uuid:C,setValue:N}=q.useInput(V,w,l.name,t=>{d("update:modelValue",t==null?void 0:t.trim())}),p=e.ref(),{hasFocus:R,activate:O,deactivate:I}=j.useFocusTrap(p),c=e.useModel(o,"isOpen"),h=()=>{c.value=!1,s.value=void 0,u.value=""},M=t=>{var r,a,n;(n=(a=(r=y.value)==null?void 0:r.at(t))==null?void 0:a.$el)==null||n.scrollIntoView({block:"nearest"})},x=t=>{d("onResultClick",t),N(""),s.value=void 0},i=t=>{s.value=t,M(t),d("onResultHover",t)},D=()=>h();return b.onKeyStroke(["ArrowUp","ArrowDown","Enter","Escape"],t=>{var r;if(t.preventDefault(),t.stopPropagation(),R&&((r=l.results)!=null&&r.length))switch(t.key){case"ArrowUp":const a=Math.max((s.value??0)-1,0);i(a);break;case"ArrowDown":const n=s.value!==void 0?Math.min(s.value+1,l.results.length-1):0;i(n);break;case"Enter":s.value!==void 0&&x(s.value);break}t.key==="Escape"&&h()},{target:p}),e.watch([c,m],async()=>{var t,r;E.value=c.value,c.value?((t=m.value)==null||t.focus(),l.shouldHoverFirstResultOnOpen&&((r=l.results)!=null&&r.length)&&i(0),await e.nextTick(),O()):(I(),u.value="")}),(t,r)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(A.default,{name:"fade"},{default:e.withCtx(()=>[c.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"searchBarRef",ref:p,class:"fixed inset-x-0 top-0 z-40 flex justify-center max-h-full overflow-y-auto px-4 pt-20 pb-6 max-sm:p-0"},[e.withDirectives((e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["m-10 z-50 md:max-w-3xl w-full flex flex-col p-6 border rounded-2xl border-neutral-surface bg-neutral-surface shadow-md",{"gap-6":l.results}])},[e.createElementVNode("div",z,[e.createVNode(_.default,{name:"MagnifyingGlassIcon",class:"text-neutral-lighter w-6 h-6"}),e.withDirectives(e.createElementVNode("input",{ref_key:"searchInput",ref:m,"onUpdate:modelValue":r[0]||(r[0]=a=>e.isRef(u)?u.value=a:null),name:t.id||`${e.unref(C)}`,type:"text",class:"p-0 text-lg font-normal flex-1 outline-none border-none bg-neutral-surface focus:ring-none focus:border-none focus:outline-none border-transparent focus:border-transparent focus:ring-0",placeholder:t.placeholder,onFocusin:r[1]||(r[1]=()=>{k.value=!0,S.value=!1}),onFocusout:r[2]||(r[2]=()=>{k.value=!1})},null,40,H),[[e.vModelText,e.unref(u)]])]),e.createElementVNode("span",$,[o.results?(e.openBlock(),e.createBlock(g.default,{key:0,direction:"horizontal"})):e.createCommentVNode("",!0),o.blankResults&&v.value.blank?(e.openBlock(),e.createElementBlock("div",L,[e.createVNode(_.default,e.mergeProps(o.blankResults.icon,{class:"w-7 h-7"}),null,16),e.createElementVNode("p",U,e.toDisplayString(o.blankResults.primaryRow),1),e.createElementVNode("p",G,e.toDisplayString(o.blankResults.secondaryRow),1)])):e.createCommentVNode("",!0),o.results&&v.value.filled?(e.openBlock(),e.createElementBlock("div",K,[e.createElementVNode("div",{class:e.normalizeClass(["flex flex-col items-start flex-1 gap-6 overflow-y-auto max-h-50-screen",{"pr-6":e.unref(f).info&&o.results.length>0}])},[o.text?(e.openBlock(),e.createElementBlock("span",J,e.toDisplayString(o.text),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Q,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.results,(a,n)=>(e.openBlock(),e.createBlock(F.default,e.mergeProps({key:n,ref_for:!0,ref_key:"itemRefs",ref:y,color:o.color},a,{status:s.value===n?"hover":"default",tabindex:"-1",onClick:()=>x(n),onMouseover:()=>i(n)}),null,16,["color","status","onClick","onMouseover"]))),128))])],2),e.unref(f).info?(e.openBlock(),e.createElementBlock("div",W,[e.createVNode(g.default,{direction:"vertical"})])):e.createCommentVNode("",!0),e.unref(f).info?(e.openBlock(),e.createElementBlock("div",X,[e.renderSlot(t.$slots,"info")])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),o.results&&o.footer?(e.openBlock(),e.createElementBlock("div",Y,[e.createElementVNode("span",Z,e.toDisplayString(o.footer.text),1),e.createVNode(e.unref(T.default),e.mergeProps(o.footer.button,{variant:"tertiary"}),null,16)])):e.createCommentVNode("",!0)])],2)),[[e.unref(P.VOnClickOutside),D]]),e.createElementVNode("div",ee,[e.createElementVNode("div",te,null,512)])],512)):e.createCommentVNode("",!0)]),_:3})]))}});exports.default=le;exports.elInputSearchColors=oe;exports.elInputSearchStatus=re;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),g=require("../ElDivider.vue.cjs2.js"),_=require("../ElIcon.vue.cjs2.js"),F=require("../ElVerticalTab.vue.cjs2.js");;/* empty css */require("../polyfills.cjs.js");require("vee-validate");require("../../node_modules/codice-fiscale-js/dist/codice.fiscale.commonjs2.cjs.js");require("../../node_modules/lodash/lodash.cjs.js");require("../tailwind.plugin.cjs.js");require("../../node_modules/@davincihealthcare/elty-design-system-foundations/dist/index.cjs.js");const T=require("../ElButton.vue.cjs2.js"),A=require("../_CustomTransition.vue.cjs2.js"),b=require("../../node_modules/@vueuse/core/index.cjs.js");require("./ElInputText.vue.cjs2.js");require("./ElInputCheckbox.vue.cjs2.js");require("./ElInputDate.vue.cjs2.js");require("./ElInputFile.vue.cjs2.js");require("./ElInputMeasureUnit.vue.cjs2.js");require("./ElInputNumber.vue.cjs2.js");require("./ElInputPhone.vue.cjs2.js");require("./ElInputSelect.vue.cjs2.js");require("./ElInputTextarea.vue.cjs2.js");require("../ElToast.vue.cjs2.js");require("./ElInputRadioButton.vue.cjs2.js");const P=require("../../node_modules/@vueuse/components/index.cjs.js"),B=require("./input.cjs.js");require("../../node_modules/swiper/shared/swiper-core.cjs.js");const j=require("../../node_modules/@vueuse/integrations/useFocusTrap.cjs.js"),z={class:"flex flex-row items-center gap-3 bg-neutral-surface rounded-2xl"},H=["name","placeholder"],$={class:"flex flex-col gap-y-6 overflow-y-hidden"},L={key:1,class:"flex flex-col items-center justify-center flex-1 gap-4 py-8 text-neutral-lighter"},U={class:"text-sm font-semibold text-neutral-darker"},G={class:"text-sm font-normal"},K={key:2,class:"flex py-2 overflow-y-hidden"},J={key:0,class:"text-sm font-medium text-neutral-darker"},Q={class:"flex flex-col gap-1 w-full"},W={key:0},X={key:1,class:"flex-1 pl-6 overflow-y-auto"},Y={key:3,class:"flex items-center gap-1 self-stretch"},Z={class:"text-sm font-normal text-neutral-darker"},ee={class:"fixed inset-0 transition-opacity"},te={ref:"backdrop",class:"absolute inset-0 bg-gray-500 opacity-75"},oe=["primary","secondary"],le=["default","filled","blank"],re=e.defineComponent({__name:"ElInputSearch",props:e.mergeModels({...B.withTextualElInputProps(),status:{type:String,default:"default"},text:{type:String,default:void 0},results:{type:Array,default:void 0},footer:{type:Object,default:void 0},blankResults:{type:Object,default:void 0},shouldHoverFirstResultOnOpen:{type:Boolean,default:!1},color:{type:String,default:"primary"}},{isOpen:{default:!0,required:!0,type:Boolean},isOpenModifiers:{}}),emits:e.mergeModels(["update:modelValue","onResultClick","onResultHover"],["update:isOpen"]),setup(o,{emit:q}){const r=o,d=q,f=e.useSlots(),E=b.useScrollLock(document.body),m=e.ref(null),V=e.computed(()=>r.modelValue),w=e.computed(()=>[r.validation]),v=e.computed(()=>({default:!r.results,filled:r.results&&r.results.length>0,blank:r.results&&r.results.length===0})),S=e.ref(!1),k=e.ref(!1),y=e.ref([]),s=e.ref(),{value:u,uuid:C,setValue:N}=B.useInput(V,w,r.name,t=>{d("update:modelValue",t==null?void 0:t.trim())}),p=e.ref(),{hasFocus:R,activate:O,deactivate:I}=j.useFocusTrap(p),c=e.useModel(o,"isOpen"),h=()=>{c.value=!1,s.value=void 0,u.value=""},M=t=>{var l,a,n;(n=(a=(l=y.value)==null?void 0:l.at(t))==null?void 0:a.$el)==null||n.scrollIntoView({block:"nearest"})},x=t=>{d("onResultClick",t),N(""),s.value=void 0},i=t=>{s.value=t,M(t),d("onResultHover",t)},D=()=>h();return b.onKeyStroke(["ArrowUp","ArrowDown","Enter","Escape"],t=>{var l;if(t.preventDefault(),t.stopPropagation(),R&&((l=r.results)!=null&&l.length))switch(t.key){case"ArrowUp":const a=Math.max((s.value??0)-1,0);i(a);break;case"ArrowDown":const n=s.value!==void 0?Math.min(s.value+1,r.results.length-1):0;i(n);break;case"Enter":s.value!==void 0&&x(s.value);break}t.key==="Escape"&&h()},{target:p}),e.watch([c,m],async()=>{var t,l;E.value=c.value,c.value?((t=m.value)==null||t.focus(),r.shouldHoverFirstResultOnOpen&&((l=r.results)!=null&&l.length)&&i(0),await e.nextTick(),O()):(I(),u.value="")}),(t,l)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(A.default,{name:"fade"},{default:e.withCtx(()=>[c.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"searchBarRef",ref:p,class:"fixed inset-x-0 top-0 z-40 flex justify-center max-h-full overflow-y-auto px-4 pt-20 pb-6 max-sm:p-0"},[e.withDirectives((e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["m-10 z-50 md:max-w-3xl w-full flex flex-col p-6 border rounded-2xl border-neutral-surface bg-neutral-surface shadow-md",{"gap-6":r.results}])},[e.createElementVNode("div",z,[e.createVNode(_.default,{name:"MagnifyingGlassIcon",class:"text-neutral-lighter w-6 h-6"}),e.withDirectives(e.createElementVNode("input",{ref_key:"searchInput",ref:m,"onUpdate:modelValue":l[0]||(l[0]=a=>e.isRef(u)?u.value=a:null),name:t.id||`${e.unref(C)}`,type:"text",class:"p-0 text-lg font-normal flex-1 outline-none border-none bg-neutral-surface focus:ring-none focus:border-none focus:outline-none border-transparent focus:border-transparent focus:ring-0",placeholder:t.placeholder,onFocusin:l[1]||(l[1]=()=>{k.value=!0,S.value=!1}),onFocusout:l[2]||(l[2]=()=>{k.value=!1})},null,40,H),[[e.vModelText,e.unref(u)]])]),e.createElementVNode("span",$,[o.results?(e.openBlock(),e.createBlock(g.default,{key:0,direction:"horizontal"})):e.createCommentVNode("",!0),o.blankResults&&v.value.blank?(e.openBlock(),e.createElementBlock("div",L,[e.createVNode(_.default,e.mergeProps(o.blankResults.icon,{class:"w-7 h-7"}),null,16),e.createElementVNode("p",U,e.toDisplayString(o.blankResults.primaryRow),1),e.createElementVNode("p",G,e.toDisplayString(o.blankResults.secondaryRow),1)])):e.createCommentVNode("",!0),o.results&&v.value.filled?(e.openBlock(),e.createElementBlock("div",K,[e.createElementVNode("div",{class:e.normalizeClass(["flex flex-col items-start flex-1 gap-6 overflow-y-auto max-h-50-screen",{"pr-6":e.unref(f).info&&o.results.length>0}])},[o.text?(e.openBlock(),e.createElementBlock("span",J,e.toDisplayString(o.text),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Q,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.results,(a,n)=>(e.openBlock(),e.createBlock(F.default,e.mergeProps({key:n,ref_for:!0,ref_key:"itemRefs",ref:y,color:o.color},a,{status:s.value===n?"hover":"default",tabindex:"-1",onClick:()=>x(n),onMouseover:()=>i(n)}),null,16,["color","status","onClick","onMouseover"]))),128))])],2),e.unref(f).info?(e.openBlock(),e.createElementBlock("div",W,[e.createVNode(g.default,{direction:"vertical"})])):e.createCommentVNode("",!0),e.unref(f).info?(e.openBlock(),e.createElementBlock("div",X,[e.renderSlot(t.$slots,"info")])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),o.results&&o.footer?(e.openBlock(),e.createElementBlock("div",Y,[e.createElementVNode("span",Z,e.toDisplayString(o.footer.text),1),e.createVNode(e.unref(T.default),e.mergeProps(o.footer.button,{variant:"tertiary"}),null,16)])):e.createCommentVNode("",!0)])],2)),[[e.unref(P.VOnClickOutside),D]]),e.createElementVNode("div",ee,[e.createElementVNode("div",te,null,512)])],512)):e.createCommentVNode("",!0)]),_:3})]))}});exports.default=re;exports.elInputSearchColors=oe;exports.elInputSearchStatus=le;
2
2
  //# sourceMappingURL=ElInputSearch.vue.cjs2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ElInputSearch.vue.cjs2.js","sources":["../../../src/forms/ElInputSearch.vue"],"sourcesContent":["<script lang=\"ts\">\nexport const elInputSearchColors = ['primary', 'secondary'] as const;\nexport type ElInputSearchColors = (typeof elInputSearchColors)[number];\n\nexport const elInputSearchStatus = ['default', 'filled', 'blank'] as const;\nexport type ElInputSearchStatus = (typeof elInputSearchStatus)[number];\n</script>\n\n<script lang=\"ts\" setup>\nimport ElDivider from '@/ElDivider.vue';\nimport ElIcon from '@/ElIcon.vue';\nimport ElVerticalTab from '@/ElVerticalTab.vue';\nimport { ElButton } from '..';\nimport { computed, PropType, ref, useSlots, watch, nextTick } from 'vue';\nimport { useInput, withTextualElInputProps } from './input';\nimport { vOnClickOutside } from '@vueuse/components';\nimport CustomTransition from '@/_CustomTransition.vue';\nimport { onKeyStroke, useScrollLock } from '@vueuse/core';\nimport { useFocusTrap } from '@vueuse/integrations/useFocusTrap';\n\nconst props = defineProps({\n ...withTextualElInputProps(),\n status: {\n type: String as PropType<ElInputSearchStatus>,\n default: 'default',\n },\n text: {\n type: String,\n default: undefined,\n },\n results: {\n type: Array as PropType<InstanceType<typeof ElVerticalTab>['$props'][]>,\n default: undefined,\n },\n footer: {\n type: Object as PropType<{\n text: string;\n button: InstanceType<typeof ElButton>['$props'];\n }>,\n default: undefined,\n },\n blankResults: {\n type: Object as PropType<{\n icon: InstanceType<typeof ElIcon>['$props'];\n primaryRow: string;\n secondaryRow?: string;\n }>,\n default: undefined,\n },\n shouldHoverFirstResultOnOpen: {\n type: Boolean,\n default: false,\n },\n color: {\n type: String as PropType<ElInputSearchColors>,\n default: 'primary',\n },\n});\n\nconst emit = defineEmits(['update:modelValue', 'onResultClick', 'onResultHover']);\nconst slots = useSlots();\nconst isBodyScrollLocked = useScrollLock(document.body);\n\nconst searchInput = ref<HTMLInputElement | null>(null);\nconst computedModelValue = computed(() => props.modelValue);\nconst computedValidation = computed(() => [props.validation]);\nconst computedStatus = computed(() => ({\n default: !props.results,\n filled: props.results && props.results.length > 0,\n blank: props.results && props.results.length === 0,\n}));\nconst isClickOutside = ref(false);\nconst isSearchFocused = ref(false);\n\nconst itemRefs = ref<InstanceType<typeof ElVerticalTab>[]>([]);\nconst activeResult = ref<number | undefined>();\n\nconst { value, uuid, setValue } = useInput(computedModelValue, computedValidation, props.name, newValue => {\n emit('update:modelValue', newValue?.trim());\n});\n\nconst searchBarRef = ref<HTMLInputElement>();\nconst { hasFocus, activate, deactivate } = useFocusTrap(searchBarRef as any);\n\nconst isOpen = defineModel('isOpen', {\n default: true,\n required: true,\n type: Boolean,\n});\n\nconst closeSearchBar = () => {\n isOpen.value = false;\n activeResult.value = undefined;\n value.value = '';\n};\n\nconst scrollToFocusedIndex = (index: number) => {\n itemRefs.value?.at(index)?.$el?.scrollIntoView({ block: 'nearest' });\n};\n\nconst onResultClick = (index: number) => {\n emit('onResultClick', index);\n setValue('');\n activeResult.value = undefined;\n};\n\nconst onResultHover = (index: number) => {\n activeResult.value = index;\n scrollToFocusedIndex(index);\n emit('onResultHover', index);\n};\n\nconst onClickOutside = () => closeSearchBar();\n\nonKeyStroke(\n ['ArrowUp', 'ArrowDown', 'Enter', 'Escape'],\n e => {\n e.preventDefault();\n e.stopPropagation();\n\n if (hasFocus && props.results?.length) {\n switch (e.key) {\n case 'ArrowUp':\n const previousActiveIndex = Math.max((activeResult.value ?? 0) - 1, 0);\n onResultHover(previousActiveIndex);\n break;\n case 'ArrowDown':\n const nextActiveIndex = activeResult.value !== undefined ? Math.min(activeResult.value + 1, props.results.length - 1) : 0;\n onResultHover(nextActiveIndex);\n break;\n case 'Enter':\n if (activeResult.value !== undefined) {\n onResultClick(activeResult.value);\n }\n break;\n }\n }\n\n if (e.key === 'Escape') {\n closeSearchBar();\n }\n },\n { target: searchBarRef },\n);\n\nwatch([isOpen, searchInput], async () => {\n isBodyScrollLocked.value = isOpen.value;\n\n if (isOpen.value) {\n searchInput.value?.focus();\n\n if (props.shouldHoverFirstResultOnOpen && props.results?.length) {\n onResultHover(0);\n }\n\n await nextTick();\n activate();\n } else {\n deactivate();\n value.value = '';\n }\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <CustomTransition name=\"fade\">\n <div\n v-if=\"isOpen\"\n ref=\"searchBarRef\"\n class=\"fixed inset-x-0 top-0 z-40 flex justify-center max-h-full overflow-y-auto px-4 pt-20 pb-6 max-sm:p-0\"\n >\n <div\n v-on-click-outside=\"onClickOutside\"\n class=\"m-10 z-50 md:max-w-3xl w-full flex flex-col p-6 border rounded-2xl border-neutral-surface bg-neutral-surface shadow-md\"\n :class=\"{\n 'gap-6': props.results,\n }\"\n >\n <!-- Search bar -->\n <div class=\"flex flex-row items-center gap-3 bg-neutral-surface rounded-2xl\">\n <ElIcon name=\"MagnifyingGlassIcon\" class=\"text-neutral-lighter w-6 h-6\" />\n <input\n ref=\"searchInput\"\n v-model=\"value\"\n :name=\"id || `${uuid}`\"\n type=\"text\"\n class=\"p-0 text-lg font-normal flex-1 outline-none border-none bg-neutral-surface focus:ring-none focus:border-none focus:outline-none border-transparent focus:border-transparent focus:ring-0\"\n :placeholder=\"placeholder\"\n @focusin=\"\n () => {\n isSearchFocused = true; // Set search focused\n isClickOutside = false; // Set click outside to false\n }\n \"\n @focusout=\"\n () => {\n isSearchFocused = false;\n }\n \"\n />\n </div>\n\n <span class=\"flex flex-col gap-y-6 overflow-y-hidden\">\n <ElDivider v-if=\"results\" direction=\"horizontal\" />\n <div\n v-if=\"blankResults && computedStatus.blank\"\n class=\"flex flex-col items-center justify-center flex-1 gap-4 py-8 text-neutral-lighter\"\n >\n <ElIcon v-bind=\"blankResults.icon\" class=\"w-7 h-7\" />\n <p class=\"text-sm font-semibold text-neutral-darker\">{{ blankResults.primaryRow }}</p>\n <p class=\"text-sm font-normal\">{{ blankResults.secondaryRow }}</p>\n </div>\n <div v-if=\"results && computedStatus.filled\" class=\"flex py-2 overflow-y-hidden\">\n <!-- Results Left column -->\n <div\n class=\"flex flex-col items-start flex-1 gap-6 overflow-y-auto max-h-50-screen\"\n :class=\"{ 'pr-6': slots.info && results.length > 0 }\"\n >\n <span v-if=\"text\" class=\"text-sm font-medium text-neutral-darker\">{{ text }}</span>\n <div class=\"flex flex-col gap-1 w-full\">\n <ElVerticalTab\n v-for=\"(result, index) in results\"\n :key=\"index\"\n ref=\"itemRefs\"\n :color=\"color\"\n v-bind=\"result\"\n :status=\"activeResult === index ? 'hover' : 'default'\"\n tabindex=\"-1\"\n @click=\"() => onResultClick(index)\"\n @mouseover=\"() => onResultHover(index)\"\n />\n </div>\n </div>\n <!-- Blank Results -->\n\n <div v-if=\"slots.info\">\n <ElDivider direction=\"vertical\" />\n </div>\n <div v-if=\"slots.info\" class=\"flex-1 pl-6 overflow-y-auto\">\n <slot name=\"info\"></slot>\n </div>\n </div>\n <div v-if=\"results && footer\" class=\"flex items-center gap-1 self-stretch\">\n <span class=\"text-sm font-normal text-neutral-darker\">{{ footer.text }}</span>\n <ElButton v-bind=\"footer.button\" variant=\"tertiary\" />\n </div>\n </span>\n </div>\n\n <!-- Backdrop -->\n <div class=\"fixed inset-0 transition-opacity\">\n <div ref=\"backdrop\" class=\"absolute inset-0 bg-gray-500 opacity-75\"></div>\n </div>\n </div>\n </CustomTransition>\n </Teleport>\n</template>\n"],"names":["elInputSearchColors","elInputSearchStatus","props","__props","emit","__emit","slots","useSlots","isBodyScrollLocked","useScrollLock","searchInput","ref","computedModelValue","computed","computedValidation","computedStatus","isClickOutside","isSearchFocused","itemRefs","activeResult","value","uuid","setValue","useInput","newValue","searchBarRef","hasFocus","activate","deactivate","useFocusTrap","isOpen","_useModel","closeSearchBar","scrollToFocusedIndex","index","_c","_b","_a","onResultClick","onResultHover","onClickOutside","onKeyStroke","e","previousActiveIndex","nextActiveIndex","watch","nextTick"],"mappings":"6vEACaA,GAAsB,CAAC,UAAW,WAAW,EAG7CC,GAAsB,CAAC,UAAW,SAAU,OAAO,8iBAgBhE,MAAMC,EAAQC,EAuCRC,EAAOC,EACPC,EAAQC,EAAAA,WACRC,EAAqBC,EAAAA,cAAc,SAAS,IAAI,EAEhDC,EAAcC,MAA6B,IAAI,EAC/CC,EAAqBC,EAAA,SAAS,IAAMX,EAAM,UAAU,EACpDY,EAAqBD,EAAAA,SAAS,IAAM,CAACX,EAAM,UAAU,CAAC,EACtDa,EAAiBF,EAAAA,SAAS,KAAO,CACrC,QAAS,CAACX,EAAM,QAChB,OAAQA,EAAM,SAAWA,EAAM,QAAQ,OAAS,EAChD,MAAOA,EAAM,SAAWA,EAAM,QAAQ,SAAW,CACjD,EAAA,EACIc,EAAiBL,MAAI,EAAK,EAC1BM,EAAkBN,MAAI,EAAK,EAE3BO,EAAWP,MAA0C,CAAA,CAAE,EACvDQ,EAAeR,EAAAA,MAEf,CAAE,MAAAS,EAAO,KAAAC,EAAM,SAAAC,GAAaC,EAAAA,SAASX,EAAoBE,EAAoBZ,EAAM,KAAkBsB,GAAA,CACpGpB,EAAA,oBAAqBoB,GAAA,YAAAA,EAAU,MAAM,CAAA,CAC3C,EAEKC,EAAed,EAAAA,MACf,CAAE,SAAAe,EAAU,SAAAC,EAAU,WAAAC,CAAW,EAAIC,EAAAA,aAAaJ,CAAmB,EAErEK,EAASC,EAAAA,SAAY5B,EAAA,QAI1B,EAEK6B,EAAiB,IAAM,CAC3BF,EAAO,MAAQ,GACfX,EAAa,MAAQ,OACrBC,EAAM,MAAQ,EAAA,EAGVa,EAAwBC,GAAkB,YACrCC,GAAAC,GAAAC,EAAAnB,EAAA,QAAA,YAAAmB,EAAO,GAAGH,KAAV,YAAAE,EAAkB,MAAlB,MAAAD,EAAuB,eAAe,CAAE,MAAO,SAAA,EAAW,EAG/DG,EAAiBJ,GAAkB,CACvC9B,EAAK,gBAAiB8B,CAAK,EAC3BZ,EAAS,EAAE,EACXH,EAAa,MAAQ,MAAA,EAGjBoB,EAAiBL,GAAkB,CACvCf,EAAa,MAAQe,EACrBD,EAAqBC,CAAK,EAC1B9B,EAAK,gBAAiB8B,CAAK,CAAA,EAGvBM,EAAiB,IAAMR,IAE7BS,OAAAA,EAAA,YACE,CAAC,UAAW,YAAa,QAAS,QAAQ,EACrCC,GAAA,OAIC,GAHJA,EAAE,eAAe,EACjBA,EAAE,gBAAgB,EAEdhB,KAAYW,EAAAnC,EAAM,UAAN,MAAAmC,EAAe,QAC7B,OAAQK,EAAE,IAAK,CACb,IAAK,UACH,MAAMC,EAAsB,KAAK,KAAKxB,EAAa,OAAS,GAAK,EAAG,CAAC,EACrEoB,EAAcI,CAAmB,EACjC,MACF,IAAK,YACH,MAAMC,EAAkBzB,EAAa,QAAU,OAAY,KAAK,IAAIA,EAAa,MAAQ,EAAGjB,EAAM,QAAQ,OAAS,CAAC,EAAI,EACxHqC,EAAcK,CAAe,EAC7B,MACF,IAAK,QACCzB,EAAa,QAAU,QACzBmB,EAAcnB,EAAa,KAAK,EAElC,KACJ,CAGEuB,EAAE,MAAQ,UACGV,GAEnB,EACA,CAAE,OAAQP,CAAa,CAAA,EAGzBoB,EAAAA,MAAM,CAACf,EAAQpB,CAAW,EAAG,SAAY,SACvCF,EAAmB,MAAQsB,EAAO,MAE9BA,EAAO,QACTO,EAAA3B,EAAY,QAAZ,MAAA2B,EAAmB,QAEfnC,EAAM,gCAAgCkC,EAAAlC,EAAM,UAAN,MAAAkC,EAAe,SACvDG,EAAc,CAAC,EAGjB,MAAMO,EAAS,SAAA,EACNnB,MAEEC,IACXR,EAAM,MAAQ,GAChB,CACD"}
1
+ {"version":3,"file":"ElInputSearch.vue.cjs2.js","sources":["../../../src/forms/ElInputSearch.vue"],"sourcesContent":["<script lang=\"ts\">\nexport const elInputSearchColors = ['primary', 'secondary'] as const;\nexport type ElInputSearchColors = (typeof elInputSearchColors)[number];\n\nexport const elInputSearchStatus = ['default', 'filled', 'blank'] as const;\nexport type ElInputSearchStatus = (typeof elInputSearchStatus)[number];\n</script>\n\n<script lang=\"ts\" setup>\nimport ElDivider from '@/ElDivider.vue';\nimport ElIcon from '@/ElIcon.vue';\nimport ElVerticalTab from '@/ElVerticalTab.vue';\nimport { ElButton } from '..';\nimport { computed, PropType, ref, useSlots, watch, nextTick } from 'vue';\nimport { useInput, withTextualElInputProps } from './input';\nimport { vOnClickOutside } from '@vueuse/components';\nimport CustomTransition from '@/_CustomTransition.vue';\nimport { onKeyStroke, useScrollLock } from '@vueuse/core';\nimport { useFocusTrap } from '@vueuse/integrations/useFocusTrap';\n\nconst props = defineProps({\n ...withTextualElInputProps(),\n status: {\n type: String as PropType<ElInputSearchStatus>,\n default: 'default',\n },\n text: {\n type: String,\n default: undefined,\n },\n results: {\n type: Array as PropType<InstanceType<typeof ElVerticalTab>['$props'][]>,\n default: undefined,\n },\n footer: {\n type: Object as PropType<{\n text: string;\n button: InstanceType<typeof ElButton>['$props'];\n }>,\n default: undefined,\n },\n blankResults: {\n type: Object as PropType<{\n icon: InstanceType<typeof ElIcon>['$props'];\n primaryRow: string;\n secondaryRow?: string;\n }>,\n default: undefined,\n },\n shouldHoverFirstResultOnOpen: {\n type: Boolean,\n default: false,\n },\n color: {\n type: String as PropType<ElInputSearchColors>,\n default: 'primary',\n },\n});\n\nconst emit = defineEmits(['update:modelValue', 'onResultClick', 'onResultHover']);\nconst slots = useSlots();\nconst isBodyScrollLocked = useScrollLock(document.body);\n\nconst searchInput = ref<HTMLInputElement | null>(null);\nconst computedModelValue = computed(() => props.modelValue);\nconst computedValidation = computed(() => [props.validation]);\nconst computedStatus = computed(() => ({\n default: !props.results,\n filled: props.results && props.results.length > 0,\n blank: props.results && props.results.length === 0,\n}));\nconst isClickOutside = ref(false);\nconst isSearchFocused = ref(false);\n\nconst itemRefs = ref<InstanceType<typeof ElVerticalTab>[]>([]);\nconst activeResult = ref<number | undefined>();\n\nconst { value, uuid, setValue } = useInput(computedModelValue, computedValidation, props.name, newValue => {\n emit('update:modelValue', newValue?.trim());\n});\n\nconst searchBarRef = ref<HTMLInputElement>();\nconst { hasFocus, activate, deactivate } = useFocusTrap(searchBarRef as any);\n\nconst isOpen = defineModel('isOpen', {\n default: true,\n required: true,\n type: Boolean,\n});\n\nconst closeSearchBar = () => {\n isOpen.value = false;\n activeResult.value = undefined;\n value.value = '';\n};\n\nconst scrollToFocusedIndex = (index: number) => {\n itemRefs.value?.at(index)?.$el?.scrollIntoView({ block: 'nearest' });\n};\n\nconst onResultClick = (index: number) => {\n emit('onResultClick', index);\n setValue('');\n activeResult.value = undefined;\n};\n\nconst onResultHover = (index: number) => {\n activeResult.value = index;\n scrollToFocusedIndex(index);\n emit('onResultHover', index);\n};\n\nconst onClickOutside = () => closeSearchBar();\n\nonKeyStroke(\n ['ArrowUp', 'ArrowDown', 'Enter', 'Escape'],\n e => {\n e.preventDefault();\n e.stopPropagation();\n\n if (hasFocus && props.results?.length) {\n switch (e.key) {\n case 'ArrowUp':\n const previousActiveIndex = Math.max((activeResult.value ?? 0) - 1, 0);\n onResultHover(previousActiveIndex);\n break;\n case 'ArrowDown':\n const nextActiveIndex = activeResult.value !== undefined ? Math.min(activeResult.value + 1, props.results.length - 1) : 0;\n onResultHover(nextActiveIndex);\n break;\n case 'Enter':\n if (activeResult.value !== undefined) {\n onResultClick(activeResult.value);\n }\n break;\n }\n }\n\n if (e.key === 'Escape') {\n closeSearchBar();\n }\n },\n { target: searchBarRef },\n);\n\nwatch([isOpen, searchInput], async () => {\n isBodyScrollLocked.value = isOpen.value;\n\n if (isOpen.value) {\n searchInput.value?.focus();\n\n if (props.shouldHoverFirstResultOnOpen && props.results?.length) {\n onResultHover(0);\n }\n\n await nextTick();\n activate();\n } else {\n deactivate();\n value.value = '';\n }\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <CustomTransition name=\"fade\">\n <div\n v-if=\"isOpen\"\n ref=\"searchBarRef\"\n class=\"fixed inset-x-0 top-0 z-40 flex justify-center max-h-full overflow-y-auto px-4 pt-20 pb-6 max-sm:p-0\"\n >\n <div\n v-on-click-outside=\"onClickOutside\"\n class=\"m-10 z-50 md:max-w-3xl w-full flex flex-col p-6 border rounded-2xl border-neutral-surface bg-neutral-surface shadow-md\"\n :class=\"{\n 'gap-6': props.results,\n }\"\n >\n <!-- Search bar -->\n <div class=\"flex flex-row items-center gap-3 bg-neutral-surface rounded-2xl\">\n <ElIcon name=\"MagnifyingGlassIcon\" class=\"text-neutral-lighter w-6 h-6\" />\n <input\n ref=\"searchInput\"\n v-model=\"value\"\n :name=\"id || `${uuid}`\"\n type=\"text\"\n class=\"p-0 text-lg font-normal flex-1 outline-none border-none bg-neutral-surface focus:ring-none focus:border-none focus:outline-none border-transparent focus:border-transparent focus:ring-0\"\n :placeholder=\"placeholder\"\n @focusin=\"\n () => {\n isSearchFocused = true; // Set search focused\n isClickOutside = false; // Set click outside to false\n }\n \"\n @focusout=\"\n () => {\n isSearchFocused = false;\n }\n \"\n />\n </div>\n\n <span class=\"flex flex-col gap-y-6 overflow-y-hidden\">\n <ElDivider v-if=\"results\" direction=\"horizontal\" />\n <div\n v-if=\"blankResults && computedStatus.blank\"\n class=\"flex flex-col items-center justify-center flex-1 gap-4 py-8 text-neutral-lighter\"\n >\n <ElIcon v-bind=\"blankResults.icon\" class=\"w-7 h-7\" />\n <p class=\"text-sm font-semibold text-neutral-darker\">{{ blankResults.primaryRow }}</p>\n <p class=\"text-sm font-normal\">{{ blankResults.secondaryRow }}</p>\n </div>\n <div v-if=\"results && computedStatus.filled\" class=\"flex py-2 overflow-y-hidden\">\n <!-- Results Left column -->\n <div\n class=\"flex flex-col items-start flex-1 gap-6 overflow-y-auto max-h-50-screen\"\n :class=\"{ 'pr-6': slots.info && results.length > 0 }\"\n >\n <span v-if=\"text\" class=\"text-sm font-medium text-neutral-darker\">{{ text }}</span>\n <div class=\"flex flex-col gap-1 w-full\">\n <ElVerticalTab\n v-for=\"(result, index) in results\"\n :key=\"index\"\n ref=\"itemRefs\"\n :color=\"color\"\n v-bind=\"result\"\n :status=\"activeResult === index ? 'hover' : 'default'\"\n tabindex=\"-1\"\n @click=\"() => onResultClick(index)\"\n @mouseover=\"() => onResultHover(index)\"\n />\n </div>\n </div>\n <!-- Blank Results -->\n\n <div v-if=\"slots.info\">\n <ElDivider direction=\"vertical\" />\n </div>\n <div v-if=\"slots.info\" class=\"flex-1 pl-6 overflow-y-auto\">\n <slot name=\"info\"></slot>\n </div>\n </div>\n <div v-if=\"results && footer\" class=\"flex items-center gap-1 self-stretch\">\n <span class=\"text-sm font-normal text-neutral-darker\">{{ footer.text }}</span>\n <ElButton v-bind=\"footer.button\" variant=\"tertiary\" />\n </div>\n </span>\n </div>\n\n <!-- Backdrop -->\n <div class=\"fixed inset-0 transition-opacity\">\n <div ref=\"backdrop\" class=\"absolute inset-0 bg-gray-500 opacity-75\"></div>\n </div>\n </div>\n </CustomTransition>\n </Teleport>\n</template>\n"],"names":["elInputSearchColors","elInputSearchStatus","props","__props","emit","__emit","slots","useSlots","isBodyScrollLocked","useScrollLock","searchInput","ref","computedModelValue","computed","computedValidation","computedStatus","isClickOutside","isSearchFocused","itemRefs","activeResult","value","uuid","setValue","useInput","newValue","searchBarRef","hasFocus","activate","deactivate","useFocusTrap","isOpen","_useModel","closeSearchBar","scrollToFocusedIndex","index","_c","_b","_a","onResultClick","onResultHover","onClickOutside","onKeyStroke","e","previousActiveIndex","nextActiveIndex","watch","nextTick"],"mappings":"moEACaA,GAAsB,CAAC,UAAW,WAAW,EAG7CC,GAAsB,CAAC,UAAW,SAAU,OAAO,8iBAgBhE,MAAMC,EAAQC,EAuCRC,EAAOC,EACPC,EAAQC,EAAAA,WACRC,EAAqBC,EAAAA,cAAc,SAAS,IAAI,EAEhDC,EAAcC,MAA6B,IAAI,EAC/CC,EAAqBC,EAAA,SAAS,IAAMX,EAAM,UAAU,EACpDY,EAAqBD,EAAAA,SAAS,IAAM,CAACX,EAAM,UAAU,CAAC,EACtDa,EAAiBF,EAAAA,SAAS,KAAO,CACrC,QAAS,CAACX,EAAM,QAChB,OAAQA,EAAM,SAAWA,EAAM,QAAQ,OAAS,EAChD,MAAOA,EAAM,SAAWA,EAAM,QAAQ,SAAW,CACjD,EAAA,EACIc,EAAiBL,MAAI,EAAK,EAC1BM,EAAkBN,MAAI,EAAK,EAE3BO,EAAWP,MAA0C,CAAA,CAAE,EACvDQ,EAAeR,EAAAA,MAEf,CAAE,MAAAS,EAAO,KAAAC,EAAM,SAAAC,GAAaC,EAAAA,SAASX,EAAoBE,EAAoBZ,EAAM,KAAkBsB,GAAA,CACpGpB,EAAA,oBAAqBoB,GAAA,YAAAA,EAAU,MAAM,CAAA,CAC3C,EAEKC,EAAed,EAAAA,MACf,CAAE,SAAAe,EAAU,SAAAC,EAAU,WAAAC,CAAW,EAAIC,EAAAA,aAAaJ,CAAmB,EAErEK,EAASC,EAAAA,SAAY5B,EAAA,QAI1B,EAEK6B,EAAiB,IAAM,CAC3BF,EAAO,MAAQ,GACfX,EAAa,MAAQ,OACrBC,EAAM,MAAQ,EAAA,EAGVa,EAAwBC,GAAkB,YACrCC,GAAAC,GAAAC,EAAAnB,EAAA,QAAA,YAAAmB,EAAO,GAAGH,KAAV,YAAAE,EAAkB,MAAlB,MAAAD,EAAuB,eAAe,CAAE,MAAO,SAAA,EAAW,EAG/DG,EAAiBJ,GAAkB,CACvC9B,EAAK,gBAAiB8B,CAAK,EAC3BZ,EAAS,EAAE,EACXH,EAAa,MAAQ,MAAA,EAGjBoB,EAAiBL,GAAkB,CACvCf,EAAa,MAAQe,EACrBD,EAAqBC,CAAK,EAC1B9B,EAAK,gBAAiB8B,CAAK,CAAA,EAGvBM,EAAiB,IAAMR,IAE7BS,OAAAA,EAAA,YACE,CAAC,UAAW,YAAa,QAAS,QAAQ,EACrCC,GAAA,OAIC,GAHJA,EAAE,eAAe,EACjBA,EAAE,gBAAgB,EAEdhB,KAAYW,EAAAnC,EAAM,UAAN,MAAAmC,EAAe,QAC7B,OAAQK,EAAE,IAAK,CACb,IAAK,UACH,MAAMC,EAAsB,KAAK,KAAKxB,EAAa,OAAS,GAAK,EAAG,CAAC,EACrEoB,EAAcI,CAAmB,EACjC,MACF,IAAK,YACH,MAAMC,EAAkBzB,EAAa,QAAU,OAAY,KAAK,IAAIA,EAAa,MAAQ,EAAGjB,EAAM,QAAQ,OAAS,CAAC,EAAI,EACxHqC,EAAcK,CAAe,EAC7B,MACF,IAAK,QACCzB,EAAa,QAAU,QACzBmB,EAAcnB,EAAa,KAAK,EAElC,KACJ,CAGEuB,EAAE,MAAQ,UACGV,GAEnB,EACA,CAAE,OAAQP,CAAa,CAAA,EAGzBoB,EAAAA,MAAM,CAACf,EAAQpB,CAAW,EAAG,SAAY,SACvCF,EAAmB,MAAQsB,EAAO,MAE9BA,EAAO,QACTO,EAAA3B,EAAY,QAAZ,MAAA2B,EAAmB,QAEfnC,EAAM,gCAAgCkC,EAAAlC,EAAM,UAAN,MAAAkC,EAAe,SACvDG,EAAc,CAAC,EAGjB,MAAMO,EAAS,SAAA,EACNnB,MAEEC,IACXR,EAAM,MAAQ,GAChB,CACD"}
@@ -1,2 +1,2 @@
1
- import{defineComponent as K,mergeModels as B,useSlots as J,ref as f,computed as w,useModel as Q,watch as W,nextTick as X,openBlock as l,createBlock as R,Teleport as Y,createVNode as v,withCtx as Z,createElementBlock as i,withDirectives as F,normalizeClass as E,createElementVNode as r,isRef as ee,unref as d,vModelText as te,createCommentVNode as c,mergeProps as O,toDisplayString as y,Fragment as oe,renderList as se,renderSlot as le}from"vue";import V from"../ElDivider.vue.esm2.js";import $ from"../ElIcon.vue.esm2.js";import re from"../ElVerticalTab.vue.esm2.js";/* empty css */import"../polyfills.esm.js";import"vee-validate";import"../../node_modules/codice-fiscale-js/dist/codice.fiscale.commonjs2.esm.js";import"../../node_modules/lodash/lodash.esm.js";import"../tailwind.plugin.esm.js";import"../../node_modules/@davincihealthcare/elty-design-system-foundations/dist/index.esm.js";import ae from"../ElButton.vue.esm2.js";import ne from"../_CustomTransition.vue.esm2.js";import{useScrollLock as ie,onKeyStroke as ue}from"../../node_modules/@vueuse/core/index.esm.js";import"./ElInputText.vue.esm2.js";import"./ElInputCheckbox.vue.esm2.js";import"./ElInputDate.vue.esm2.js";import"./ElInputFile.vue.esm2.js";import"./ElInputMeasureUnit.vue.esm2.js";import"./ElInputNumber.vue.esm2.js";import"./ElInputPhone.vue.esm2.js";import"./ElInputSelect.vue.esm2.js";import"./ElInputTextarea.vue.esm2.js";import"../ElToast.vue.esm2.js";import"./ElInputRadioButton.vue.esm2.js";import{VOnClickOutside as ce}from"../../node_modules/@vueuse/components/index.esm.js";import{withTextualElInputProps as de,useInput as fe}from"./input.esm.js";import"../../node_modules/swiper/shared/swiper-core.esm.js";/* empty css *//* empty css */import{useFocusTrap as me}from"../../node_modules/@vueuse/integrations/useFocusTrap.esm.js";const pe={class:"flex flex-row items-center gap-3 bg-neutral-surface rounded-2xl"},ve=["name","placeholder"],he={class:"flex flex-col gap-y-6 overflow-y-hidden"},ye={key:1,class:"flex flex-col items-center justify-center flex-1 gap-4 py-8 text-neutral-lighter"},xe={class:"text-sm font-semibold text-neutral-darker"},ke={class:"text-sm font-normal"},ge={key:2,class:"flex py-2 overflow-y-hidden"},be={key:0,class:"text-sm font-medium text-neutral-darker"},we={class:"flex flex-col gap-1 w-full"},Re={key:0},Oe={key:1,class:"flex-1 pl-6 overflow-y-auto"},Se={key:3,class:"flex items-center gap-1 self-stretch"},Ce={class:"text-sm font-normal text-neutral-darker"},Ie={class:"fixed inset-0 transition-opacity"},Me={ref:"backdrop",class:"absolute inset-0 bg-gray-500 opacity-75"},at=["primary","secondary"],nt=["default","filled","blank"],it=K({__name:"ElInputSearch",props:B({...de(),status:{type:String,default:"default"},text:{type:String,default:void 0},results:{type:Array,default:void 0},footer:{type:Object,default:void 0},blankResults:{type:Object,default:void 0},shouldHoverFirstResultOnOpen:{type:Boolean,default:!1},color:{type:String,default:"primary"}},{isOpen:{default:!0,required:!0,type:Boolean},isOpenModifiers:{}}),emits:B(["update:modelValue","onResultClick","onResultHover"],["update:isOpen"]),setup(t,{emit:A}){const s=t,x=A,k=J(),T=ie(document.body),g=f(null),D=w(()=>s.modelValue),H=w(()=>[s.validation]),S=w(()=>({default:!s.results,filled:s.results&&s.results.length>0,blank:s.results&&s.results.length===0})),j=f(!1),C=f(!1),I=f([]),a=f(),{value:m,uuid:z,setValue:L}=fe(D,H,s.name,e=>{x("update:modelValue",e==null?void 0:e.trim())}),b=f(),{hasFocus:N,activate:P,deactivate:U}=me(b),p=Q(t,"isOpen"),M=()=>{p.value=!1,a.value=void 0,m.value=""},q=e=>{var o,u,n;(n=(u=(o=I.value)==null?void 0:o.at(e))==null?void 0:u.$el)==null||n.scrollIntoView({block:"nearest"})},_=e=>{x("onResultClick",e),L(""),a.value=void 0},h=e=>{a.value=e,q(e),x("onResultHover",e)},G=()=>M();return ue(["ArrowUp","ArrowDown","Enter","Escape"],e=>{var o;if(e.preventDefault(),e.stopPropagation(),N&&((o=s.results)!=null&&o.length))switch(e.key){case"ArrowUp":const u=Math.max((a.value??0)-1,0);h(u);break;case"ArrowDown":const n=a.value!==void 0?Math.min(a.value+1,s.results.length-1):0;h(n);break;case"Enter":a.value!==void 0&&_(a.value);break}e.key==="Escape"&&M()},{target:b}),W([p,g],async()=>{var e,o;T.value=p.value,p.value?((e=g.value)==null||e.focus(),s.shouldHoverFirstResultOnOpen&&((o=s.results)!=null&&o.length)&&h(0),await X(),P()):(U(),m.value="")}),(e,o)=>(l(),R(Y,{to:"body"},[v(ne,{name:"fade"},{default:Z(()=>[p.value?(l(),i("div",{key:0,ref_key:"searchBarRef",ref:b,class:"fixed inset-x-0 top-0 z-40 flex justify-center max-h-full overflow-y-auto px-4 pt-20 pb-6 max-sm:p-0"},[F((l(),i("div",{class:E(["m-10 z-50 md:max-w-3xl w-full flex flex-col p-6 border rounded-2xl border-neutral-surface bg-neutral-surface shadow-md",{"gap-6":s.results}])},[r("div",pe,[v($,{name:"MagnifyingGlassIcon",class:"text-neutral-lighter w-6 h-6"}),F(r("input",{ref_key:"searchInput",ref:g,"onUpdate:modelValue":o[0]||(o[0]=u=>ee(m)?m.value=u:null),name:e.id||`${d(z)}`,type:"text",class:"p-0 text-lg font-normal flex-1 outline-none border-none bg-neutral-surface focus:ring-none focus:border-none focus:outline-none border-transparent focus:border-transparent focus:ring-0",placeholder:e.placeholder,onFocusin:o[1]||(o[1]=()=>{C.value=!0,j.value=!1}),onFocusout:o[2]||(o[2]=()=>{C.value=!1})},null,40,ve),[[te,d(m)]])]),r("span",he,[t.results?(l(),R(V,{key:0,direction:"horizontal"})):c("",!0),t.blankResults&&S.value.blank?(l(),i("div",ye,[v($,O(t.blankResults.icon,{class:"w-7 h-7"}),null,16),r("p",xe,y(t.blankResults.primaryRow),1),r("p",ke,y(t.blankResults.secondaryRow),1)])):c("",!0),t.results&&S.value.filled?(l(),i("div",ge,[r("div",{class:E(["flex flex-col items-start flex-1 gap-6 overflow-y-auto max-h-50-screen",{"pr-6":d(k).info&&t.results.length>0}])},[t.text?(l(),i("span",be,y(t.text),1)):c("",!0),r("div",we,[(l(!0),i(oe,null,se(t.results,(u,n)=>(l(),R(re,O({key:n,ref_for:!0,ref_key:"itemRefs",ref:I,color:t.color},u,{status:a.value===n?"hover":"default",tabindex:"-1",onClick:()=>_(n),onMouseover:()=>h(n)}),null,16,["color","status","onClick","onMouseover"]))),128))])],2),d(k).info?(l(),i("div",Re,[v(V,{direction:"vertical"})])):c("",!0),d(k).info?(l(),i("div",Oe,[le(e.$slots,"info")])):c("",!0)])):c("",!0),t.results&&t.footer?(l(),i("div",Se,[r("span",Ce,y(t.footer.text),1),v(d(ae),O(t.footer.button,{variant:"tertiary"}),null,16)])):c("",!0)])],2)),[[d(ce),G]]),r("div",Ie,[r("div",Me,null,512)])],512)):c("",!0)]),_:3})]))}});export{it as default,at as elInputSearchColors,nt as elInputSearchStatus};
1
+ import{defineComponent as K,mergeModels as B,useSlots as J,ref as f,computed as w,useModel as Q,watch as W,nextTick as X,openBlock as l,createBlock as R,Teleport as Y,createVNode as v,withCtx as Z,createElementBlock as i,withDirectives as F,normalizeClass as E,createElementVNode as r,isRef as ee,unref as d,vModelText as te,createCommentVNode as c,mergeProps as O,toDisplayString as y,Fragment as oe,renderList as se,renderSlot as le}from"vue";import V from"../ElDivider.vue.esm2.js";import $ from"../ElIcon.vue.esm2.js";import re from"../ElVerticalTab.vue.esm2.js";/* empty css */import"../polyfills.esm.js";import"vee-validate";import"../../node_modules/codice-fiscale-js/dist/codice.fiscale.commonjs2.esm.js";import"../../node_modules/lodash/lodash.esm.js";import"../tailwind.plugin.esm.js";import"../../node_modules/@davincihealthcare/elty-design-system-foundations/dist/index.esm.js";import ae from"../ElButton.vue.esm2.js";import ne from"../_CustomTransition.vue.esm2.js";import{useScrollLock as ie,onKeyStroke as ue}from"../../node_modules/@vueuse/core/index.esm.js";import"./ElInputText.vue.esm2.js";import"./ElInputCheckbox.vue.esm2.js";import"./ElInputDate.vue.esm2.js";import"./ElInputFile.vue.esm2.js";import"./ElInputMeasureUnit.vue.esm2.js";import"./ElInputNumber.vue.esm2.js";import"./ElInputPhone.vue.esm2.js";import"./ElInputSelect.vue.esm2.js";import"./ElInputTextarea.vue.esm2.js";import"../ElToast.vue.esm2.js";import"./ElInputRadioButton.vue.esm2.js";import{VOnClickOutside as ce}from"../../node_modules/@vueuse/components/index.esm.js";import{withTextualElInputProps as de,useInput as fe}from"./input.esm.js";import"../../node_modules/swiper/shared/swiper-core.esm.js";import{useFocusTrap as me}from"../../node_modules/@vueuse/integrations/useFocusTrap.esm.js";const pe={class:"flex flex-row items-center gap-3 bg-neutral-surface rounded-2xl"},ve=["name","placeholder"],he={class:"flex flex-col gap-y-6 overflow-y-hidden"},ye={key:1,class:"flex flex-col items-center justify-center flex-1 gap-4 py-8 text-neutral-lighter"},xe={class:"text-sm font-semibold text-neutral-darker"},ke={class:"text-sm font-normal"},ge={key:2,class:"flex py-2 overflow-y-hidden"},be={key:0,class:"text-sm font-medium text-neutral-darker"},we={class:"flex flex-col gap-1 w-full"},Re={key:0},Oe={key:1,class:"flex-1 pl-6 overflow-y-auto"},Se={key:3,class:"flex items-center gap-1 self-stretch"},Ce={class:"text-sm font-normal text-neutral-darker"},Ie={class:"fixed inset-0 transition-opacity"},Me={ref:"backdrop",class:"absolute inset-0 bg-gray-500 opacity-75"},lt=["primary","secondary"],rt=["default","filled","blank"],at=K({__name:"ElInputSearch",props:B({...de(),status:{type:String,default:"default"},text:{type:String,default:void 0},results:{type:Array,default:void 0},footer:{type:Object,default:void 0},blankResults:{type:Object,default:void 0},shouldHoverFirstResultOnOpen:{type:Boolean,default:!1},color:{type:String,default:"primary"}},{isOpen:{default:!0,required:!0,type:Boolean},isOpenModifiers:{}}),emits:B(["update:modelValue","onResultClick","onResultHover"],["update:isOpen"]),setup(t,{emit:A}){const s=t,x=A,k=J(),T=ie(document.body),g=f(null),D=w(()=>s.modelValue),H=w(()=>[s.validation]),S=w(()=>({default:!s.results,filled:s.results&&s.results.length>0,blank:s.results&&s.results.length===0})),j=f(!1),C=f(!1),I=f([]),a=f(),{value:m,uuid:z,setValue:L}=fe(D,H,s.name,e=>{x("update:modelValue",e==null?void 0:e.trim())}),b=f(),{hasFocus:N,activate:P,deactivate:U}=me(b),p=Q(t,"isOpen"),M=()=>{p.value=!1,a.value=void 0,m.value=""},q=e=>{var o,u,n;(n=(u=(o=I.value)==null?void 0:o.at(e))==null?void 0:u.$el)==null||n.scrollIntoView({block:"nearest"})},_=e=>{x("onResultClick",e),L(""),a.value=void 0},h=e=>{a.value=e,q(e),x("onResultHover",e)},G=()=>M();return ue(["ArrowUp","ArrowDown","Enter","Escape"],e=>{var o;if(e.preventDefault(),e.stopPropagation(),N&&((o=s.results)!=null&&o.length))switch(e.key){case"ArrowUp":const u=Math.max((a.value??0)-1,0);h(u);break;case"ArrowDown":const n=a.value!==void 0?Math.min(a.value+1,s.results.length-1):0;h(n);break;case"Enter":a.value!==void 0&&_(a.value);break}e.key==="Escape"&&M()},{target:b}),W([p,g],async()=>{var e,o;T.value=p.value,p.value?((e=g.value)==null||e.focus(),s.shouldHoverFirstResultOnOpen&&((o=s.results)!=null&&o.length)&&h(0),await X(),P()):(U(),m.value="")}),(e,o)=>(l(),R(Y,{to:"body"},[v(ne,{name:"fade"},{default:Z(()=>[p.value?(l(),i("div",{key:0,ref_key:"searchBarRef",ref:b,class:"fixed inset-x-0 top-0 z-40 flex justify-center max-h-full overflow-y-auto px-4 pt-20 pb-6 max-sm:p-0"},[F((l(),i("div",{class:E(["m-10 z-50 md:max-w-3xl w-full flex flex-col p-6 border rounded-2xl border-neutral-surface bg-neutral-surface shadow-md",{"gap-6":s.results}])},[r("div",pe,[v($,{name:"MagnifyingGlassIcon",class:"text-neutral-lighter w-6 h-6"}),F(r("input",{ref_key:"searchInput",ref:g,"onUpdate:modelValue":o[0]||(o[0]=u=>ee(m)?m.value=u:null),name:e.id||`${d(z)}`,type:"text",class:"p-0 text-lg font-normal flex-1 outline-none border-none bg-neutral-surface focus:ring-none focus:border-none focus:outline-none border-transparent focus:border-transparent focus:ring-0",placeholder:e.placeholder,onFocusin:o[1]||(o[1]=()=>{C.value=!0,j.value=!1}),onFocusout:o[2]||(o[2]=()=>{C.value=!1})},null,40,ve),[[te,d(m)]])]),r("span",he,[t.results?(l(),R(V,{key:0,direction:"horizontal"})):c("",!0),t.blankResults&&S.value.blank?(l(),i("div",ye,[v($,O(t.blankResults.icon,{class:"w-7 h-7"}),null,16),r("p",xe,y(t.blankResults.primaryRow),1),r("p",ke,y(t.blankResults.secondaryRow),1)])):c("",!0),t.results&&S.value.filled?(l(),i("div",ge,[r("div",{class:E(["flex flex-col items-start flex-1 gap-6 overflow-y-auto max-h-50-screen",{"pr-6":d(k).info&&t.results.length>0}])},[t.text?(l(),i("span",be,y(t.text),1)):c("",!0),r("div",we,[(l(!0),i(oe,null,se(t.results,(u,n)=>(l(),R(re,O({key:n,ref_for:!0,ref_key:"itemRefs",ref:I,color:t.color},u,{status:a.value===n?"hover":"default",tabindex:"-1",onClick:()=>_(n),onMouseover:()=>h(n)}),null,16,["color","status","onClick","onMouseover"]))),128))])],2),d(k).info?(l(),i("div",Re,[v(V,{direction:"vertical"})])):c("",!0),d(k).info?(l(),i("div",Oe,[le(e.$slots,"info")])):c("",!0)])):c("",!0),t.results&&t.footer?(l(),i("div",Se,[r("span",Ce,y(t.footer.text),1),v(d(ae),O(t.footer.button,{variant:"tertiary"}),null,16)])):c("",!0)])],2)),[[d(ce),G]]),r("div",Ie,[r("div",Me,null,512)])],512)):c("",!0)]),_:3})]))}});export{at as default,lt as elInputSearchColors,rt as elInputSearchStatus};
2
2
  //# sourceMappingURL=ElInputSearch.vue.esm2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ElInputSearch.vue.esm2.js","sources":["../../../src/forms/ElInputSearch.vue"],"sourcesContent":["<script lang=\"ts\">\nexport const elInputSearchColors = ['primary', 'secondary'] as const;\nexport type ElInputSearchColors = (typeof elInputSearchColors)[number];\n\nexport const elInputSearchStatus = ['default', 'filled', 'blank'] as const;\nexport type ElInputSearchStatus = (typeof elInputSearchStatus)[number];\n</script>\n\n<script lang=\"ts\" setup>\nimport ElDivider from '@/ElDivider.vue';\nimport ElIcon from '@/ElIcon.vue';\nimport ElVerticalTab from '@/ElVerticalTab.vue';\nimport { ElButton } from '..';\nimport { computed, PropType, ref, useSlots, watch, nextTick } from 'vue';\nimport { useInput, withTextualElInputProps } from './input';\nimport { vOnClickOutside } from '@vueuse/components';\nimport CustomTransition from '@/_CustomTransition.vue';\nimport { onKeyStroke, useScrollLock } from '@vueuse/core';\nimport { useFocusTrap } from '@vueuse/integrations/useFocusTrap';\n\nconst props = defineProps({\n ...withTextualElInputProps(),\n status: {\n type: String as PropType<ElInputSearchStatus>,\n default: 'default',\n },\n text: {\n type: String,\n default: undefined,\n },\n results: {\n type: Array as PropType<InstanceType<typeof ElVerticalTab>['$props'][]>,\n default: undefined,\n },\n footer: {\n type: Object as PropType<{\n text: string;\n button: InstanceType<typeof ElButton>['$props'];\n }>,\n default: undefined,\n },\n blankResults: {\n type: Object as PropType<{\n icon: InstanceType<typeof ElIcon>['$props'];\n primaryRow: string;\n secondaryRow?: string;\n }>,\n default: undefined,\n },\n shouldHoverFirstResultOnOpen: {\n type: Boolean,\n default: false,\n },\n color: {\n type: String as PropType<ElInputSearchColors>,\n default: 'primary',\n },\n});\n\nconst emit = defineEmits(['update:modelValue', 'onResultClick', 'onResultHover']);\nconst slots = useSlots();\nconst isBodyScrollLocked = useScrollLock(document.body);\n\nconst searchInput = ref<HTMLInputElement | null>(null);\nconst computedModelValue = computed(() => props.modelValue);\nconst computedValidation = computed(() => [props.validation]);\nconst computedStatus = computed(() => ({\n default: !props.results,\n filled: props.results && props.results.length > 0,\n blank: props.results && props.results.length === 0,\n}));\nconst isClickOutside = ref(false);\nconst isSearchFocused = ref(false);\n\nconst itemRefs = ref<InstanceType<typeof ElVerticalTab>[]>([]);\nconst activeResult = ref<number | undefined>();\n\nconst { value, uuid, setValue } = useInput(computedModelValue, computedValidation, props.name, newValue => {\n emit('update:modelValue', newValue?.trim());\n});\n\nconst searchBarRef = ref<HTMLInputElement>();\nconst { hasFocus, activate, deactivate } = useFocusTrap(searchBarRef as any);\n\nconst isOpen = defineModel('isOpen', {\n default: true,\n required: true,\n type: Boolean,\n});\n\nconst closeSearchBar = () => {\n isOpen.value = false;\n activeResult.value = undefined;\n value.value = '';\n};\n\nconst scrollToFocusedIndex = (index: number) => {\n itemRefs.value?.at(index)?.$el?.scrollIntoView({ block: 'nearest' });\n};\n\nconst onResultClick = (index: number) => {\n emit('onResultClick', index);\n setValue('');\n activeResult.value = undefined;\n};\n\nconst onResultHover = (index: number) => {\n activeResult.value = index;\n scrollToFocusedIndex(index);\n emit('onResultHover', index);\n};\n\nconst onClickOutside = () => closeSearchBar();\n\nonKeyStroke(\n ['ArrowUp', 'ArrowDown', 'Enter', 'Escape'],\n e => {\n e.preventDefault();\n e.stopPropagation();\n\n if (hasFocus && props.results?.length) {\n switch (e.key) {\n case 'ArrowUp':\n const previousActiveIndex = Math.max((activeResult.value ?? 0) - 1, 0);\n onResultHover(previousActiveIndex);\n break;\n case 'ArrowDown':\n const nextActiveIndex = activeResult.value !== undefined ? Math.min(activeResult.value + 1, props.results.length - 1) : 0;\n onResultHover(nextActiveIndex);\n break;\n case 'Enter':\n if (activeResult.value !== undefined) {\n onResultClick(activeResult.value);\n }\n break;\n }\n }\n\n if (e.key === 'Escape') {\n closeSearchBar();\n }\n },\n { target: searchBarRef },\n);\n\nwatch([isOpen, searchInput], async () => {\n isBodyScrollLocked.value = isOpen.value;\n\n if (isOpen.value) {\n searchInput.value?.focus();\n\n if (props.shouldHoverFirstResultOnOpen && props.results?.length) {\n onResultHover(0);\n }\n\n await nextTick();\n activate();\n } else {\n deactivate();\n value.value = '';\n }\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <CustomTransition name=\"fade\">\n <div\n v-if=\"isOpen\"\n ref=\"searchBarRef\"\n class=\"fixed inset-x-0 top-0 z-40 flex justify-center max-h-full overflow-y-auto px-4 pt-20 pb-6 max-sm:p-0\"\n >\n <div\n v-on-click-outside=\"onClickOutside\"\n class=\"m-10 z-50 md:max-w-3xl w-full flex flex-col p-6 border rounded-2xl border-neutral-surface bg-neutral-surface shadow-md\"\n :class=\"{\n 'gap-6': props.results,\n }\"\n >\n <!-- Search bar -->\n <div class=\"flex flex-row items-center gap-3 bg-neutral-surface rounded-2xl\">\n <ElIcon name=\"MagnifyingGlassIcon\" class=\"text-neutral-lighter w-6 h-6\" />\n <input\n ref=\"searchInput\"\n v-model=\"value\"\n :name=\"id || `${uuid}`\"\n type=\"text\"\n class=\"p-0 text-lg font-normal flex-1 outline-none border-none bg-neutral-surface focus:ring-none focus:border-none focus:outline-none border-transparent focus:border-transparent focus:ring-0\"\n :placeholder=\"placeholder\"\n @focusin=\"\n () => {\n isSearchFocused = true; // Set search focused\n isClickOutside = false; // Set click outside to false\n }\n \"\n @focusout=\"\n () => {\n isSearchFocused = false;\n }\n \"\n />\n </div>\n\n <span class=\"flex flex-col gap-y-6 overflow-y-hidden\">\n <ElDivider v-if=\"results\" direction=\"horizontal\" />\n <div\n v-if=\"blankResults && computedStatus.blank\"\n class=\"flex flex-col items-center justify-center flex-1 gap-4 py-8 text-neutral-lighter\"\n >\n <ElIcon v-bind=\"blankResults.icon\" class=\"w-7 h-7\" />\n <p class=\"text-sm font-semibold text-neutral-darker\">{{ blankResults.primaryRow }}</p>\n <p class=\"text-sm font-normal\">{{ blankResults.secondaryRow }}</p>\n </div>\n <div v-if=\"results && computedStatus.filled\" class=\"flex py-2 overflow-y-hidden\">\n <!-- Results Left column -->\n <div\n class=\"flex flex-col items-start flex-1 gap-6 overflow-y-auto max-h-50-screen\"\n :class=\"{ 'pr-6': slots.info && results.length > 0 }\"\n >\n <span v-if=\"text\" class=\"text-sm font-medium text-neutral-darker\">{{ text }}</span>\n <div class=\"flex flex-col gap-1 w-full\">\n <ElVerticalTab\n v-for=\"(result, index) in results\"\n :key=\"index\"\n ref=\"itemRefs\"\n :color=\"color\"\n v-bind=\"result\"\n :status=\"activeResult === index ? 'hover' : 'default'\"\n tabindex=\"-1\"\n @click=\"() => onResultClick(index)\"\n @mouseover=\"() => onResultHover(index)\"\n />\n </div>\n </div>\n <!-- Blank Results -->\n\n <div v-if=\"slots.info\">\n <ElDivider direction=\"vertical\" />\n </div>\n <div v-if=\"slots.info\" class=\"flex-1 pl-6 overflow-y-auto\">\n <slot name=\"info\"></slot>\n </div>\n </div>\n <div v-if=\"results && footer\" class=\"flex items-center gap-1 self-stretch\">\n <span class=\"text-sm font-normal text-neutral-darker\">{{ footer.text }}</span>\n <ElButton v-bind=\"footer.button\" variant=\"tertiary\" />\n </div>\n </span>\n </div>\n\n <!-- Backdrop -->\n <div class=\"fixed inset-0 transition-opacity\">\n <div ref=\"backdrop\" class=\"absolute inset-0 bg-gray-500 opacity-75\"></div>\n </div>\n </div>\n </CustomTransition>\n </Teleport>\n</template>\n"],"names":["elInputSearchColors","elInputSearchStatus","props","__props","emit","__emit","slots","useSlots","isBodyScrollLocked","useScrollLock","searchInput","ref","computedModelValue","computed","computedValidation","computedStatus","isClickOutside","isSearchFocused","itemRefs","activeResult","value","uuid","setValue","useInput","newValue","searchBarRef","hasFocus","activate","deactivate","useFocusTrap","isOpen","_useModel","closeSearchBar","scrollToFocusedIndex","index","_c","_b","_a","onResultClick","onResultHover","onClickOutside","onKeyStroke","previousActiveIndex","nextActiveIndex","watch","nextTick"],"mappings":"koFACaA,GAAsB,CAAC,UAAW,WAAW,EAG7CC,GAAsB,CAAC,UAAW,SAAU,OAAO,+eAgBhE,MAAMC,EAAQC,EAuCRC,EAAOC,EACPC,EAAQC,IACRC,EAAqBC,GAAc,SAAS,IAAI,EAEhDC,EAAcC,EAA6B,IAAI,EAC/CC,EAAqBC,EAAS,IAAMX,EAAM,UAAU,EACpDY,EAAqBD,EAAS,IAAM,CAACX,EAAM,UAAU,CAAC,EACtDa,EAAiBF,EAAS,KAAO,CACrC,QAAS,CAACX,EAAM,QAChB,OAAQA,EAAM,SAAWA,EAAM,QAAQ,OAAS,EAChD,MAAOA,EAAM,SAAWA,EAAM,QAAQ,SAAW,CACjD,EAAA,EACIc,EAAiBL,EAAI,EAAK,EAC1BM,EAAkBN,EAAI,EAAK,EAE3BO,EAAWP,EAA0C,CAAA,CAAE,EACvDQ,EAAeR,IAEf,CAAE,MAAAS,EAAO,KAAAC,EAAM,SAAAC,GAAaC,GAASX,EAAoBE,EAAoBZ,EAAM,KAAkBsB,GAAA,CACpGpB,EAAA,oBAAqBoB,GAAA,YAAAA,EAAU,MAAM,CAAA,CAC3C,EAEKC,EAAed,IACf,CAAE,SAAAe,EAAU,SAAAC,EAAU,WAAAC,CAAW,EAAIC,GAAaJ,CAAmB,EAErEK,EAASC,EAAY5B,EAAA,QAI1B,EAEK6B,EAAiB,IAAM,CAC3BF,EAAO,MAAQ,GACfX,EAAa,MAAQ,OACrBC,EAAM,MAAQ,EAAA,EAGVa,EAAwBC,GAAkB,YACrCC,GAAAC,GAAAC,EAAAnB,EAAA,QAAA,YAAAmB,EAAO,GAAGH,KAAV,YAAAE,EAAkB,MAAlB,MAAAD,EAAuB,eAAe,CAAE,MAAO,SAAA,EAAW,EAG/DG,EAAiBJ,GAAkB,CACvC9B,EAAK,gBAAiB8B,CAAK,EAC3BZ,EAAS,EAAE,EACXH,EAAa,MAAQ,MAAA,EAGjBoB,EAAiBL,GAAkB,CACvCf,EAAa,MAAQe,EACrBD,EAAqBC,CAAK,EAC1B9B,EAAK,gBAAiB8B,CAAK,CAAA,EAGvBM,EAAiB,IAAMR,IAE7B,OAAAS,GACE,CAAC,UAAW,YAAa,QAAS,QAAQ,EACrC,GAAA,OAIC,GAHJ,EAAE,eAAe,EACjB,EAAE,gBAAgB,EAEdf,KAAYW,EAAAnC,EAAM,UAAN,MAAAmC,EAAe,QAC7B,OAAQ,EAAE,IAAK,CACb,IAAK,UACH,MAAMK,EAAsB,KAAK,KAAKvB,EAAa,OAAS,GAAK,EAAG,CAAC,EACrEoB,EAAcG,CAAmB,EACjC,MACF,IAAK,YACH,MAAMC,EAAkBxB,EAAa,QAAU,OAAY,KAAK,IAAIA,EAAa,MAAQ,EAAGjB,EAAM,QAAQ,OAAS,CAAC,EAAI,EACxHqC,EAAcI,CAAe,EAC7B,MACF,IAAK,QACCxB,EAAa,QAAU,QACzBmB,EAAcnB,EAAa,KAAK,EAElC,KACJ,CAGE,EAAE,MAAQ,UACGa,GAEnB,EACA,CAAE,OAAQP,CAAa,CAAA,EAGzBmB,EAAM,CAACd,EAAQpB,CAAW,EAAG,SAAY,SACvCF,EAAmB,MAAQsB,EAAO,MAE9BA,EAAO,QACTO,EAAA3B,EAAY,QAAZ,MAAA2B,EAAmB,QAEfnC,EAAM,gCAAgCkC,EAAAlC,EAAM,UAAN,MAAAkC,EAAe,SACvDG,EAAc,CAAC,EAGjB,MAAMM,EAAS,EACNlB,MAEEC,IACXR,EAAM,MAAQ,GAChB,CACD"}
1
+ {"version":3,"file":"ElInputSearch.vue.esm2.js","sources":["../../../src/forms/ElInputSearch.vue"],"sourcesContent":["<script lang=\"ts\">\nexport const elInputSearchColors = ['primary', 'secondary'] as const;\nexport type ElInputSearchColors = (typeof elInputSearchColors)[number];\n\nexport const elInputSearchStatus = ['default', 'filled', 'blank'] as const;\nexport type ElInputSearchStatus = (typeof elInputSearchStatus)[number];\n</script>\n\n<script lang=\"ts\" setup>\nimport ElDivider from '@/ElDivider.vue';\nimport ElIcon from '@/ElIcon.vue';\nimport ElVerticalTab from '@/ElVerticalTab.vue';\nimport { ElButton } from '..';\nimport { computed, PropType, ref, useSlots, watch, nextTick } from 'vue';\nimport { useInput, withTextualElInputProps } from './input';\nimport { vOnClickOutside } from '@vueuse/components';\nimport CustomTransition from '@/_CustomTransition.vue';\nimport { onKeyStroke, useScrollLock } from '@vueuse/core';\nimport { useFocusTrap } from '@vueuse/integrations/useFocusTrap';\n\nconst props = defineProps({\n ...withTextualElInputProps(),\n status: {\n type: String as PropType<ElInputSearchStatus>,\n default: 'default',\n },\n text: {\n type: String,\n default: undefined,\n },\n results: {\n type: Array as PropType<InstanceType<typeof ElVerticalTab>['$props'][]>,\n default: undefined,\n },\n footer: {\n type: Object as PropType<{\n text: string;\n button: InstanceType<typeof ElButton>['$props'];\n }>,\n default: undefined,\n },\n blankResults: {\n type: Object as PropType<{\n icon: InstanceType<typeof ElIcon>['$props'];\n primaryRow: string;\n secondaryRow?: string;\n }>,\n default: undefined,\n },\n shouldHoverFirstResultOnOpen: {\n type: Boolean,\n default: false,\n },\n color: {\n type: String as PropType<ElInputSearchColors>,\n default: 'primary',\n },\n});\n\nconst emit = defineEmits(['update:modelValue', 'onResultClick', 'onResultHover']);\nconst slots = useSlots();\nconst isBodyScrollLocked = useScrollLock(document.body);\n\nconst searchInput = ref<HTMLInputElement | null>(null);\nconst computedModelValue = computed(() => props.modelValue);\nconst computedValidation = computed(() => [props.validation]);\nconst computedStatus = computed(() => ({\n default: !props.results,\n filled: props.results && props.results.length > 0,\n blank: props.results && props.results.length === 0,\n}));\nconst isClickOutside = ref(false);\nconst isSearchFocused = ref(false);\n\nconst itemRefs = ref<InstanceType<typeof ElVerticalTab>[]>([]);\nconst activeResult = ref<number | undefined>();\n\nconst { value, uuid, setValue } = useInput(computedModelValue, computedValidation, props.name, newValue => {\n emit('update:modelValue', newValue?.trim());\n});\n\nconst searchBarRef = ref<HTMLInputElement>();\nconst { hasFocus, activate, deactivate } = useFocusTrap(searchBarRef as any);\n\nconst isOpen = defineModel('isOpen', {\n default: true,\n required: true,\n type: Boolean,\n});\n\nconst closeSearchBar = () => {\n isOpen.value = false;\n activeResult.value = undefined;\n value.value = '';\n};\n\nconst scrollToFocusedIndex = (index: number) => {\n itemRefs.value?.at(index)?.$el?.scrollIntoView({ block: 'nearest' });\n};\n\nconst onResultClick = (index: number) => {\n emit('onResultClick', index);\n setValue('');\n activeResult.value = undefined;\n};\n\nconst onResultHover = (index: number) => {\n activeResult.value = index;\n scrollToFocusedIndex(index);\n emit('onResultHover', index);\n};\n\nconst onClickOutside = () => closeSearchBar();\n\nonKeyStroke(\n ['ArrowUp', 'ArrowDown', 'Enter', 'Escape'],\n e => {\n e.preventDefault();\n e.stopPropagation();\n\n if (hasFocus && props.results?.length) {\n switch (e.key) {\n case 'ArrowUp':\n const previousActiveIndex = Math.max((activeResult.value ?? 0) - 1, 0);\n onResultHover(previousActiveIndex);\n break;\n case 'ArrowDown':\n const nextActiveIndex = activeResult.value !== undefined ? Math.min(activeResult.value + 1, props.results.length - 1) : 0;\n onResultHover(nextActiveIndex);\n break;\n case 'Enter':\n if (activeResult.value !== undefined) {\n onResultClick(activeResult.value);\n }\n break;\n }\n }\n\n if (e.key === 'Escape') {\n closeSearchBar();\n }\n },\n { target: searchBarRef },\n);\n\nwatch([isOpen, searchInput], async () => {\n isBodyScrollLocked.value = isOpen.value;\n\n if (isOpen.value) {\n searchInput.value?.focus();\n\n if (props.shouldHoverFirstResultOnOpen && props.results?.length) {\n onResultHover(0);\n }\n\n await nextTick();\n activate();\n } else {\n deactivate();\n value.value = '';\n }\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <CustomTransition name=\"fade\">\n <div\n v-if=\"isOpen\"\n ref=\"searchBarRef\"\n class=\"fixed inset-x-0 top-0 z-40 flex justify-center max-h-full overflow-y-auto px-4 pt-20 pb-6 max-sm:p-0\"\n >\n <div\n v-on-click-outside=\"onClickOutside\"\n class=\"m-10 z-50 md:max-w-3xl w-full flex flex-col p-6 border rounded-2xl border-neutral-surface bg-neutral-surface shadow-md\"\n :class=\"{\n 'gap-6': props.results,\n }\"\n >\n <!-- Search bar -->\n <div class=\"flex flex-row items-center gap-3 bg-neutral-surface rounded-2xl\">\n <ElIcon name=\"MagnifyingGlassIcon\" class=\"text-neutral-lighter w-6 h-6\" />\n <input\n ref=\"searchInput\"\n v-model=\"value\"\n :name=\"id || `${uuid}`\"\n type=\"text\"\n class=\"p-0 text-lg font-normal flex-1 outline-none border-none bg-neutral-surface focus:ring-none focus:border-none focus:outline-none border-transparent focus:border-transparent focus:ring-0\"\n :placeholder=\"placeholder\"\n @focusin=\"\n () => {\n isSearchFocused = true; // Set search focused\n isClickOutside = false; // Set click outside to false\n }\n \"\n @focusout=\"\n () => {\n isSearchFocused = false;\n }\n \"\n />\n </div>\n\n <span class=\"flex flex-col gap-y-6 overflow-y-hidden\">\n <ElDivider v-if=\"results\" direction=\"horizontal\" />\n <div\n v-if=\"blankResults && computedStatus.blank\"\n class=\"flex flex-col items-center justify-center flex-1 gap-4 py-8 text-neutral-lighter\"\n >\n <ElIcon v-bind=\"blankResults.icon\" class=\"w-7 h-7\" />\n <p class=\"text-sm font-semibold text-neutral-darker\">{{ blankResults.primaryRow }}</p>\n <p class=\"text-sm font-normal\">{{ blankResults.secondaryRow }}</p>\n </div>\n <div v-if=\"results && computedStatus.filled\" class=\"flex py-2 overflow-y-hidden\">\n <!-- Results Left column -->\n <div\n class=\"flex flex-col items-start flex-1 gap-6 overflow-y-auto max-h-50-screen\"\n :class=\"{ 'pr-6': slots.info && results.length > 0 }\"\n >\n <span v-if=\"text\" class=\"text-sm font-medium text-neutral-darker\">{{ text }}</span>\n <div class=\"flex flex-col gap-1 w-full\">\n <ElVerticalTab\n v-for=\"(result, index) in results\"\n :key=\"index\"\n ref=\"itemRefs\"\n :color=\"color\"\n v-bind=\"result\"\n :status=\"activeResult === index ? 'hover' : 'default'\"\n tabindex=\"-1\"\n @click=\"() => onResultClick(index)\"\n @mouseover=\"() => onResultHover(index)\"\n />\n </div>\n </div>\n <!-- Blank Results -->\n\n <div v-if=\"slots.info\">\n <ElDivider direction=\"vertical\" />\n </div>\n <div v-if=\"slots.info\" class=\"flex-1 pl-6 overflow-y-auto\">\n <slot name=\"info\"></slot>\n </div>\n </div>\n <div v-if=\"results && footer\" class=\"flex items-center gap-1 self-stretch\">\n <span class=\"text-sm font-normal text-neutral-darker\">{{ footer.text }}</span>\n <ElButton v-bind=\"footer.button\" variant=\"tertiary\" />\n </div>\n </span>\n </div>\n\n <!-- Backdrop -->\n <div class=\"fixed inset-0 transition-opacity\">\n <div ref=\"backdrop\" class=\"absolute inset-0 bg-gray-500 opacity-75\"></div>\n </div>\n </div>\n </CustomTransition>\n </Teleport>\n</template>\n"],"names":["elInputSearchColors","elInputSearchStatus","props","__props","emit","__emit","slots","useSlots","isBodyScrollLocked","useScrollLock","searchInput","ref","computedModelValue","computed","computedValidation","computedStatus","isClickOutside","isSearchFocused","itemRefs","activeResult","value","uuid","setValue","useInput","newValue","searchBarRef","hasFocus","activate","deactivate","useFocusTrap","isOpen","_useModel","closeSearchBar","scrollToFocusedIndex","index","_c","_b","_a","onResultClick","onResultHover","onClickOutside","onKeyStroke","previousActiveIndex","nextActiveIndex","watch","nextTick"],"mappings":"8gFACaA,GAAsB,CAAC,UAAW,WAAW,EAG7CC,GAAsB,CAAC,UAAW,SAAU,OAAO,+eAgBhE,MAAMC,EAAQC,EAuCRC,EAAOC,EACPC,EAAQC,IACRC,EAAqBC,GAAc,SAAS,IAAI,EAEhDC,EAAcC,EAA6B,IAAI,EAC/CC,EAAqBC,EAAS,IAAMX,EAAM,UAAU,EACpDY,EAAqBD,EAAS,IAAM,CAACX,EAAM,UAAU,CAAC,EACtDa,EAAiBF,EAAS,KAAO,CACrC,QAAS,CAACX,EAAM,QAChB,OAAQA,EAAM,SAAWA,EAAM,QAAQ,OAAS,EAChD,MAAOA,EAAM,SAAWA,EAAM,QAAQ,SAAW,CACjD,EAAA,EACIc,EAAiBL,EAAI,EAAK,EAC1BM,EAAkBN,EAAI,EAAK,EAE3BO,EAAWP,EAA0C,CAAA,CAAE,EACvDQ,EAAeR,IAEf,CAAE,MAAAS,EAAO,KAAAC,EAAM,SAAAC,GAAaC,GAASX,EAAoBE,EAAoBZ,EAAM,KAAkBsB,GAAA,CACpGpB,EAAA,oBAAqBoB,GAAA,YAAAA,EAAU,MAAM,CAAA,CAC3C,EAEKC,EAAed,IACf,CAAE,SAAAe,EAAU,SAAAC,EAAU,WAAAC,CAAW,EAAIC,GAAaJ,CAAmB,EAErEK,EAASC,EAAY5B,EAAA,QAI1B,EAEK6B,EAAiB,IAAM,CAC3BF,EAAO,MAAQ,GACfX,EAAa,MAAQ,OACrBC,EAAM,MAAQ,EAAA,EAGVa,EAAwBC,GAAkB,YACrCC,GAAAC,GAAAC,EAAAnB,EAAA,QAAA,YAAAmB,EAAO,GAAGH,KAAV,YAAAE,EAAkB,MAAlB,MAAAD,EAAuB,eAAe,CAAE,MAAO,SAAA,EAAW,EAG/DG,EAAiBJ,GAAkB,CACvC9B,EAAK,gBAAiB8B,CAAK,EAC3BZ,EAAS,EAAE,EACXH,EAAa,MAAQ,MAAA,EAGjBoB,EAAiBL,GAAkB,CACvCf,EAAa,MAAQe,EACrBD,EAAqBC,CAAK,EAC1B9B,EAAK,gBAAiB8B,CAAK,CAAA,EAGvBM,EAAiB,IAAMR,IAE7B,OAAAS,GACE,CAAC,UAAW,YAAa,QAAS,QAAQ,EACrC,GAAA,OAIC,GAHJ,EAAE,eAAe,EACjB,EAAE,gBAAgB,EAEdf,KAAYW,EAAAnC,EAAM,UAAN,MAAAmC,EAAe,QAC7B,OAAQ,EAAE,IAAK,CACb,IAAK,UACH,MAAMK,EAAsB,KAAK,KAAKvB,EAAa,OAAS,GAAK,EAAG,CAAC,EACrEoB,EAAcG,CAAmB,EACjC,MACF,IAAK,YACH,MAAMC,EAAkBxB,EAAa,QAAU,OAAY,KAAK,IAAIA,EAAa,MAAQ,EAAGjB,EAAM,QAAQ,OAAS,CAAC,EAAI,EACxHqC,EAAcI,CAAe,EAC7B,MACF,IAAK,QACCxB,EAAa,QAAU,QACzBmB,EAAcnB,EAAa,KAAK,EAElC,KACJ,CAGE,EAAE,MAAQ,UACGa,GAEnB,EACA,CAAE,OAAQP,CAAa,CAAA,EAGzBmB,EAAM,CAACd,EAAQpB,CAAW,EAAG,SAAY,SACvCF,EAAmB,MAAQsB,EAAO,MAE9BA,EAAO,QACTO,EAAA3B,EAAY,QAAZ,MAAA2B,EAAmB,QAEfnC,EAAM,gCAAgCkC,EAAAlC,EAAM,UAAN,MAAAkC,EAAe,SACvDG,EAAc,CAAC,EAGjB,MAAMM,EAAS,EACNlB,MAEEC,IACXR,EAAM,MAAQ,GAChB,CACD"}