diff --git a/src/_base/fade-in-expand-transition/index.js b/src/_base/fade-in-expand-transition/index.ts similarity index 100% rename from src/_base/fade-in-expand-transition/index.js rename to src/_base/fade-in-expand-transition/index.ts diff --git a/src/_base/fade-in-expand-transition/src/FadeInExpandTransition.js b/src/_base/fade-in-expand-transition/src/FadeInExpandTransition.js deleted file mode 100644 index 825ec0087..000000000 --- a/src/_base/fade-in-expand-transition/src/FadeInExpandTransition.js +++ /dev/null @@ -1,99 +0,0 @@ -import { h, Transition, TransitionGroup, defineComponent } from 'vue' - -export default defineComponent({ - name: 'FadeInExpandTransition', - props: { - appear: { - type: Boolean, - default: false - }, - group: { - type: Boolean, - default: false - }, - mode: { - type: String, - default: undefined - }, - onAfterLeave: { - type: Function, - default: undefined - }, - width: { - type: Boolean, - default: false - } - }, - methods: { - handleBeforeLeave (el) { - if (this.width) { - el.style.maxWidth = el.offsetWidth + 'px' - } else { - el.style.maxHeight = el.offsetHeight + 'px' - } - void el.offsetWidth - }, - handleLeave (el) { - if (this.width) { - el.style.maxWidth = '0' - } else { - el.style.maxHeight = '0' - } - void el.offsetWidth - }, - handleAfterLeave (el) { - if (this.width) { - el.style.maxWidth = '' - } else { - el.style.maxHeight = '' - } - const { onAfterLeave } = this - if (onAfterLeave) onAfterLeave() - }, - handleEnter (el) { - el.style.transition = 'none' - if (this.width) { - const memorizedWidth = el.offsetWidth - el.style.maxWidth = '0' - void el.offsetWidth - el.style.transition = '' - el.style.maxWidth = memorizedWidth + 'px' - } else { - const memorizedHeight = el.offsetHeight - el.style.maxHeight = '0' - void el.offsetWidth - el.style.transition = '' - el.style.maxHeight = memorizedHeight + 'px' - } - void el.offsetWidth - }, - handleAfterEnter (el) { - if (this.width) { - el.style.maxWidth = '' - } else { - el.style.maxHeight = '' - } - } - }, - render () { - const type = this.group ? TransitionGroup : Transition - return h( - type, - { - name: this.width - ? 'n-fade-in-width-expand-transition' - : 'n-fade-in-height-expand-transition', - mode: this.mode, - appear: this.appear, - onEnter: this.handleEnter, - onAfterEnter: this.handleAfterEnter, - onBeforeLeave: this.handleBeforeLeave, - onLeave: this.handleLeave, - onAfterLeave: this.handleAfterLeave - }, - { - default: this.$slots.default - } - ) - } -}) diff --git a/src/_base/fade-in-expand-transition/src/FadeInExpandTransition.ts b/src/_base/fade-in-expand-transition/src/FadeInExpandTransition.ts new file mode 100644 index 000000000..91d886cad --- /dev/null +++ b/src/_base/fade-in-expand-transition/src/FadeInExpandTransition.ts @@ -0,0 +1,97 @@ +import { h, Transition, TransitionGroup, defineComponent, PropType } from 'vue' + +export default defineComponent({ + name: 'FadeInExpandTransition', + props: { + appear: { + type: Boolean, + default: false + }, + group: { + type: Boolean, + default: false + }, + mode: { + type: String as PropType<'in-out' | 'out-in' | 'default' | undefined>, + default: undefined + }, + onAfterLeave: { + type: Function, + default: undefined + }, + width: { + type: Boolean, + default: false + } + }, + setup (props, { slots }) { + function handleBeforeLeave (el: HTMLElement): void { + if (props.width) { + el.style.maxWidth = `${el.offsetWidth}px` + } else { + el.style.maxHeight = `${el.offsetHeight}px` + } + void el.offsetWidth + } + function handleLeave (el: HTMLElement): void { + if (props.width) { + el.style.maxWidth = '0' + } else { + el.style.maxHeight = '0' + } + void el.offsetWidth + } + function handleAfterLeave (el: HTMLElement): void { + if (props.width) { + el.style.maxWidth = '' + } else { + el.style.maxHeight = '' + } + const { onAfterLeave } = props + if (onAfterLeave) onAfterLeave() + } + function handleEnter (el: HTMLElement): void { + el.style.transition = 'none' + if (props.width) { + const memorizedWidth = el.offsetWidth + el.style.maxWidth = '0' + void el.offsetWidth + el.style.transition = '' + el.style.maxWidth = `${memorizedWidth}px` + } else { + const memorizedHeight = el.offsetHeight + el.style.maxHeight = '0' + void el.offsetWidth + el.style.transition = '' + el.style.maxHeight = `${memorizedHeight}px` + } + void el.offsetWidth + } + function handleAfterEnter (el: HTMLElement): void { + if (props.width) { + el.style.maxWidth = '' + } else { + el.style.maxHeight = '' + } + } + return () => { + const type = props.group ? TransitionGroup : Transition + return h( + type as any, + { + name: props.width + ? 'n-fade-in-width-expand-transition' + : 'n-fade-in-height-expand-transition', + mode: props.mode, + appear: props.appear, + onEnter: handleEnter, + onAfterEnter: handleAfterEnter, + onBeforeLeave: handleBeforeLeave, + onLeave: handleLeave, + onAfterLeave: handleAfterLeave + }, + slots + ) + } + } +}) diff --git a/src/_base/focus-detector/index.js b/src/_base/focus-detector/index.js deleted file mode 100644 index 8eda862e5..000000000 --- a/src/_base/focus-detector/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import FocusDetector from './src/FocusDetector.vue' - -export default FocusDetector diff --git a/src/_base/focus-detector/index.tsx b/src/_base/focus-detector/index.tsx new file mode 100644 index 000000000..5ba958096 --- /dev/null +++ b/src/_base/focus-detector/index.tsx @@ -0,0 +1,3 @@ +import FocusDetector from './src/FocusDetector' + +export default FocusDetector diff --git a/src/_base/focus-detector/src/FocusDetector.tsx b/src/_base/focus-detector/src/FocusDetector.tsx new file mode 100644 index 000000000..77c4ea4e2 --- /dev/null +++ b/src/_base/focus-detector/src/FocusDetector.tsx @@ -0,0 +1,24 @@ +import { h, defineComponent, PropType } from 'vue' + +export default defineComponent({ + props: { + onFocus: { + type: Function as PropType<((e: FocusEvent) => void) | undefined>, + default: undefined + }, + onBlur: { + type: Function as PropType<((e: FocusEvent) => void) | undefined>, + default: undefined + } + }, + setup (props) { + return () => ( +
+ ) + } +}) diff --git a/src/_base/focus-detector/src/FocusDetector.vue b/src/_base/focus-detector/src/FocusDetector.vue deleted file mode 100644 index 88f8299ce..000000000 --- a/src/_base/focus-detector/src/FocusDetector.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - - -