index.jsx 587 B

12345678910111213141516171819202122232425262728
  1. import { provide, reactive, toRefs } from 'vue'
  2. import Tab from './tab'
  3. import './tabs.less'
  4. export const tabsKey = Symbol('cip-tabs')
  5. const Tabs = {
  6. name: 'CipTabs',
  7. props: {
  8. active: [String, Number]
  9. },
  10. emits: ['update:active'],
  11. setup (props, { emit, slots }) {
  12. const changeActive = (val) => {
  13. emit('update:active', val)
  14. }
  15. const ciplTabs = reactive({
  16. ...toRefs(props),
  17. changeActive
  18. })
  19. provide(tabsKey, ciplTabs)
  20. return () => <div class={'cip-tabs'}>
  21. {slots.default?.()}
  22. </div>
  23. }
  24. }
  25. Tabs.Tab = Tab
  26. export default Tabs