| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <script setup lang="ts">
- import IconButton from '../basic/IconButton.vue';
- import FlexRow from '../layout/FlexRow.vue';
- import { selectStyleType } from '../theme/ThemeTools';
- import { useTheme } from '../theme/ThemeDefine';
- import Text from '../basic/Text.vue';
- defineProps({
- top: {
- type: Boolean,
- default: false,
- },
- relative: {
- type: Boolean,
- default: false,
- },
- title: {
- type: String,
- default: '',
- },
- closeable: {
- type: Boolean,
- default: false,
- },
- closeIcon: {
- type: [String,Boolean],
- default: 'close',
- },
- closeIconSize: {
- type: Number,
- default: 36,
- },
- closeIconPosition: {
- type: String,
- default: 'right',
- },
- })
- const emit = defineEmits([ 'close' ])
- const theme = useTheme();
- defineOptions({
- options: {
- styleIsolation: "shared",
- virtualHost: true,
- }
- })
- </script>
- <template>
- <FlexRow
- pointerEvents="none"
- innerClass="nana-popup-title"
- :innerStyle="{
- position: relative ? 'relative' : 'absolute',
- display: (closeable === true && closeIcon !== false) ? 'flex' : 'none',
- top: top ? 0 : undefined,
- bottom: top ? undefined : 0,
- alignItems: 'center',
- justifyContent: 'space-between',
- flexDirection: selectStyleType(closeIconPosition, 'right', { left: 'row-reverse', right: 'row' }),
- }"
- >
- <IconButton
- v-if="closeable === true && closeIcon"
- :size="closeIconSize || theme.resolveThemeSize('PopupCloseIconSize', 25)"
- :innerStyle="{ pointerEvents: 'auto' }"
- />
- <Text :text="title" />
- <IconButton
- v-if="closeable === true && closeIcon"
- :icon="(closeIcon as string) || theme.resolveThemeSize('PopupCloseIconName', 'close')!"
- :size="closeIconSize || theme.resolveThemeSize('PopupCloseIconSize', 25)"
- :color="theme.resolveThemeSize('PopupCloseIconColor', 'text.content')"
- :innerStyle="{ pointerEvents: 'auto' }"
- @click="emit('close')"
- />
- </FlexRow>
- </template>
- <style>
- .nana-popup-title {
- z-index: 110;
- left: 0;
- right: 0;
- align-items: center;
- padding: 20rpx 20rpx;
- }
- </style>
|