@oruga-ui/oruga-next
Version:
UI components for Vue.js and CSS framework agnostic
1 lines • 4.91 kB
Source Map (JSON)
{"version":3,"file":"collapse.mjs","sources":["../../src/components/collapse/Collapse.vue","../../src/components/collapse/index.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, useId } from \"vue\";\n\nimport { getDefault } from \"@/utils/config\";\nimport { defineClasses } from \"@/composables\";\n\nimport type { CollapseProps } from \"./props\";\n\n/**\n * An easy way to toggle what you want.\n * @displayName Collapse\n * @style _collapse.scss\n */\ndefineOptions({\n isOruga: true,\n name: \"OCollapse\",\n configField: \"collapse\",\n});\n\nconst props = withDefaults(defineProps<CollapseProps>(), {\n override: undefined,\n open: true,\n expanded: false,\n animation: () => getDefault(\"collapse.animation\", \"fade\"),\n position: () => getDefault(\"collapse.position\", \"top\"),\n contentId: () => useId(),\n triggerId: () => useId(),\n});\n\nconst emits = defineEmits<{\n /**\n * open prop two-way binding\n * @param value {boolean} updated open prop\n */\n \"update:open\": [value: boolean];\n /** on collapse opened */\n open: [];\n /** on collapse closed */\n close: [];\n}>();\n\nconst isOpen = defineModel<boolean>(\"open\", { default: true });\n\n/** Toggle and emit events */\nfunction toggle(): void {\n isOpen.value = !isOpen.value;\n if (isOpen.value) emits(\"open\");\n else emits(\"close\");\n}\n\n// --- Computed Component Classes ---\n\nconst rootClasses = defineClasses(\n [\"rootClass\", \"o-collapse\"],\n [\n \"positionClass\",\n \"o-collapse--\",\n computed(() => props.position),\n computed(() => !!props.position),\n ],\n);\n\nconst triggerClasses = defineClasses(\n [\"triggerClass\", \"o-collapse__trigger\"],\n [\n \"expandedClass\",\n \"o-collapse__trigger--expanded\",\n null,\n computed(() => props.expanded),\n ],\n);\n\nconst contentClasses = defineClasses([\"contentClass\", \"o-collapse__content\"]);\n</script>\n\n<template>\n <div data-oruga=\"collapse\" :class=\"rootClasses\">\n <div\n :id=\"triggerId\"\n :class=\"triggerClasses\"\n role=\"button\"\n tabindex=\"0\"\n :aria-controls=\"contentId\"\n :aria-expanded=\"isOpen\"\n @click=\"toggle\"\n @keydown.enter.prevent=\"toggle\"\n @keydown.space.prevent=\"toggle\">\n <!--\n @slot Define the collapse trigger\n @binding {boolean} open collapse open state \n -->\n <slot name=\"trigger\" :open=\"isOpen\" />\n </div>\n\n <Transition :name=\"animation\">\n <div\n v-show=\"isOpen\"\n :id=\"contentId\"\n :class=\"contentClasses\"\n :aria-labelledby=\"triggerId\">\n <!--\n @slot Default content\n -->\n <slot />\n </div>\n </Transition>\n </div>\n</template>\n","import type { App, Plugin } from \"vue\";\n\nimport Collapse from \"./Collapse.vue\";\n\nimport { registerComponent } from \"@/utils/plugins\";\n\n/** export collapse plugin */\nexport default {\n install(app: App) {\n registerComponent(app, Collapse);\n },\n} as Plugin;\n\n/** export collapse components */\nexport { Collapse as OCollapse };\n"],"names":["_useModel","_createElementBlock","_unref","_createElementVNode","triggerId","contentId","_renderSlot","_createVNode","_Transition","animation","Collapse"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,UAAM,QAAQ;AAUd,UAAM,QAAQ;AAYd,UAAM,SAASA,SAAoB,SAAC,MAAyB;AAG7D,aAAS,SAAe;AACpB,aAAO,QAAQ,CAAC,OAAO;AACvB,UAAI,OAAO,MAAO,OAAM,MAAM;AAAA,iBACnB,OAAO;AAAA,IACtB;AAIA,UAAM,cAAc;AAAA,MAChB,CAAC,aAAa,YAAY;AAAA,MAC1B;AAAA,QACI;AAAA,QACA;AAAA,QACA,SAAS,MAAM,MAAM,QAAQ;AAAA,QAC7B,SAAS,MAAM,CAAC,CAAC,MAAM,QAAQ;AAAA,MAAA;AAAA,IACnC;AAGJ,UAAM,iBAAiB;AAAA,MACnB,CAAC,gBAAgB,qBAAqB;AAAA,MACtC;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,MAAM,MAAM,QAAQ;AAAA,MAAA;AAAA,IACjC;AAGJ,UAAM,iBAAiB,cAAc,CAAC,gBAAgB,qBAAqB,CAAC;;0BAIxEC,mBA8BM,OAAA;AAAA,QA9BD,cAAW;AAAA,QAAY,sBAAOC,MAAA,WAAA,CAAW;AAAA,MAAA;QAC1CC,mBAeM,OAAA;AAAA,UAdD,IAAIC,KAAAA;AAAAA,UACJ,sBAAOF,MAAA,cAAA,CAAc;AAAA,UACtB,MAAK;AAAA,UACL,UAAS;AAAA,UACR,iBAAeG,KAAAA;AAAAA,UACf,iBAAe,OAAA;AAAA,UACf,SAAO;AAAA,UACP,WAAO;AAAA,mCAAgB,QAAM,CAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA;AAAA,mCACN,QAAM,CAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA;AAAA,UAAA;AAAA;UAK9BC,WAAsC,KAAA,QAAA,WAAA,EAAhB,MAAM,OAAA,OAAM;AAAA,QAAA;QAGtCC,YAWaC,YAAA,EAXA,MAAMC,KAAAA,aAAS;AAAA,2BACxB,MASM;AAAA,2BATNN,mBASM,OAAA;AAAA,cAPD,IAAIE,KAAAA;AAAAA,cACJ,sBAAOH,MAAA,cAAA,CAAc;AAAA,cACrB,mBAAiBE,KAAAA;AAAAA,YAAAA;cAIlBE,WAAQ,KAAA,QAAA,SAAA;AAAA,YAAA;sBAPA,OAAA,KAAM;AAAA,YAAA;;;;;;;;ACzF9B,MAAA,QAAe;AAAA,EACX,QAAQ,KAAU;AACd,sBAAkB,KAAKI,SAAQ;AAAA,EACnC;AACJ;"}