{"version":3,"file":"drawer2.mjs","sources":["../../../../../../packages/components/drawer/src/drawer.vue"],"sourcesContent":["<template>\r\n  <teleport to=\"body\" :disabled=\"!transfer\">\r\n    <transition\r\n      :name=\"ns.b('fade')\"\r\n      @after-enter=\"afterEnter\"\r\n      @after-leave=\"afterLeave\"\r\n      @before-leave=\"beforeLeave\"\r\n    >\r\n      <sg-overlay\r\n        v-show=\"visible\"\r\n        :mask=\"mask\"\r\n        :z-index=\"zIndex\"\r\n        @click=\"handleClose\"\r\n      >\r\n        <sg-focus-trap\r\n          loop\r\n          :trapped=\"visible\"\r\n          :focus-trap-sg=\"drawerRef\"\r\n          :focus-start-sg=\"focusStartRef\"\r\n          @release-requested=\"onCloseRequested\"\r\n        >\r\n          <div\r\n            ref=\"drawerRef\"\r\n            aria-modal=\"true\"\r\n            :aria-label=\"title || undefined\"\r\n            :aria-labelledby=\"!title ? titleId : undefined\"\r\n            :aria-describedby=\"bodyId\"\r\n            :class=\"[ns.b(), direction, visible && 'open', customClass]\"\r\n            :style=\"\r\n              isHorizontal ? 'width: ' + drawerSize : 'height: ' + drawerSize\r\n            \"\r\n            role=\"dialog\"\r\n            @click.stop\r\n          >\r\n            <span ref=\"focusStartRef\" :class=\"ns.e('sr-focus')\" tabindex=\"-1\" />\r\n            <header v-if=\"withHeader\" :class=\"ns.e('header')\">\r\n              <slot\r\n                v-if=\"!$slots.title\"\r\n                name=\"header\"\r\n                :close=\"handleClose\"\r\n                :title-id=\"titleId\"\r\n                :title-class=\"ns.e('title')\"\r\n              >\r\n                <span\r\n                  v-if=\"!$slots.title\"\r\n                  :id=\"titleId\"\r\n                  role=\"heading\"\r\n                  :class=\"ns.e('title')\"\r\n                >\r\n                  {{ title }}\r\n                </span>\r\n              </slot>\r\n              <slot v-else name=\"title\">\r\n                <!-- DEPRECATED SLOT -->\r\n              </slot>\r\n\r\n              <!-- 最大化 -->\r\n              <button\r\n                v-if=\"maximize\"\r\n                aria-label=\"最大化\"\r\n                :class=\"[ns.em('actions', 'button'), ns.e('maximize')]\"\r\n                type=\"button\"\r\n                @click=\"changeSize()\"\r\n              >\r\n                <sg-icon class=\"maximize\">\r\n                  <Maximize v-if=\"status\" />\r\n                  <Checkbox v-else />\r\n                </sg-icon>\r\n              </button>\r\n              <!-- 关闭 -->\r\n              <button\r\n                v-if=\"closable\"\r\n                aria-label=\"关闭\"\r\n                :class=\"[ns.em('actions', 'button'), ns.e('close')]\"\r\n                type=\"button\"\r\n                @click=\"handleClose\"\r\n              >\r\n                <sg-icon class=\"close\">\r\n                  <Close />\r\n                </sg-icon>\r\n              </button>\r\n            </header>\r\n            <template v-if=\"rendered\">\r\n              <div :id=\"bodyId\" :class=\"ns.e('body')\">\r\n                <slot />\r\n              </div>\r\n            </template>\r\n            <div v-if=\"$slots.footer\" :class=\"ns.e('footer')\">\r\n              <slot name=\"footer\" />\r\n            </div>\r\n          </div>\r\n        </sg-focus-trap>\r\n      </sg-overlay>\r\n    </transition>\r\n  </teleport>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { computed, defineComponent, ref } from 'vue'\r\nimport { Close, Checkbox, Maximize } from '@sgui-plus/icons-vue'\r\n\r\nimport { SgOverlay } from '@sgui-plus/components/overlay'\r\nimport { useModal } from '@sgui-plus/components/modal'\r\nimport SgIcon from '@sgui-plus/components/icon'\r\nimport { TrapFocus } from '@sgui-plus/directives'\r\nimport { useNamespace } from '@sgui-plus/hooks'\r\nimport { drawerEmits, drawerProps } from './drawer'\r\nimport SgFocusTrap from '@sgui-plus/components/focus-trap'\r\n\r\n\r\nexport default defineComponent({\r\n  name: 'SgDrawer',\r\n  components: {\r\n    SgOverlay,\r\n    SgFocusTrap,\r\n    SgIcon,\r\n    Close,\r\n    Checkbox,\r\n    Maximize,\r\n  },\r\n  directives: {\r\n    TrapFocus,\r\n  },\r\n  props: drawerProps,\r\n  emits: drawerEmits,\r\n\r\n  setup(props, ctx) {\r\n    const drawerRef = ref<HTMLElement>()\r\n    const focusStartRef = ref<HTMLElement>()\r\n    const ns = useNamespace('drawer')\r\n\r\n    const status = ref<Boolean>(false)\r\n\r\n    const isHorizontal = computed(\r\n      () => props.direction === 'rtl' || props.direction === 'ltr'\r\n    )\r\n    const drawerSize = computed(() =>{\r\n      if(status.value) {\r\n        return '100%'\r\n      } else {\r\n        return typeof props.size === 'number' ? `${props.size}px` : props.size\r\n      }\r\n    })\r\n\r\n    const changeSize = () => {\r\n      if (!props.maximize) return false\r\n      status.value = !status.value\r\n      ctx.emit('maximize', status.value as boolean)\r\n    }\r\n\r\n    return {\r\n      ...useModal(props, drawerRef),\r\n      drawerRef,\r\n      focusStartRef,\r\n      isHorizontal,\r\n      drawerSize,\r\n      ns,\r\n      status,\r\n      changeSize\r\n    }\r\n  },\r\n})\r\n</script>\r\n"],"names":["_resolveComponent","_openBlock","_createBlock","_Teleport","_Transition","_withCtx","_withDirectives","_createVNode","_createElementVNode","_normalizeClass","_normalizeStyle","_withModifiers","_createElementBlock","_renderSlot","_toDisplayString","_createCommentVNode"],"mappings":"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"}