init component

This commit is contained in:
Robin COuret
2026-02-16 17:28:37 +01:00
parent 460c7a25e0
commit e0e50af706
4557 changed files with 666911 additions and 8 deletions

View File

@@ -0,0 +1,3 @@
import { FunctionalComponent, BaseTransitionProps, TransitionGroupProps, RendererElement } from 'vue';
export declare function createJavascriptTransition<Element = RendererElement>(name: string, staticProps: BaseTransitionProps<Element>): FunctionalComponent;
export declare function createJavascriptTransitionGroup(name: string, staticProps: TransitionGroupProps): FunctionalComponent;

View File

@@ -0,0 +1,24 @@
import { h, Transition, TransitionGroup } from 'vue';
export function createJavascriptTransition(name, staticProps) {
return (dynamicProps, {
slots
}) => {
return h(Transition, {
name,
...staticProps,
...dynamicProps
}, slots.default);
};
}
export function createJavascriptTransitionGroup(name, staticProps) {
return (dynamicProps, {
slots
}) => {
return h(TransitionGroup, {
name,
...staticProps,
...dynamicProps
}, slots.default);
};
}
//# sourceMappingURL=createJavascriptTransition.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../src/transitions/shared/createJavascriptTransition.ts"],"names":[],"mappings":"AAAA,SAGE,CAHF,EAIE,UAJF,EAKE,eALF,QAUO,KAVP;AAYA,OAAM,SAAU,0BAAV,CACJ,IADI,EAEJ,WAFI,EAEqC;AAEzC,SAAO,CAAC,YAAD,EAAgC;AAAE,IAAA;AAAF,GAAhC,KAA2D;AAChE,WAAO,CAAC,CACN,UADM,EAEN;AACE,MAAA,IADF;AAEE,SAAG,WAFL;AAGE,SAAG;AAHL,KAFM,EAON,KAAK,CAAC,OAPA,CAAR;AASD,GAVD;AAWD;AAED,OAAM,SAAU,+BAAV,CAA0C,IAA1C,EAAwD,WAAxD,EAAyF;AAC7F,SAAO,CAAC,YAAD,EAAqC;AAAE,IAAA;AAAF,GAArC,KAAgE;AACrE,WAAO,CAAC,CACN,eADM,EAEN;AACE,MAAA,IADF;AAEE,SAAG,WAFL;AAGE,SAAG;AAHL,KAFM,EAON,KAAK,CAAC,OAPA,CAAR;AASD,GAVD;AAWD","sourcesContent":["import {\n FunctionalComponent,\n SetupContext,\n h,\n Transition,\n TransitionGroup,\n TransitionProps,\n BaseTransitionProps,\n TransitionGroupProps,\n RendererElement\n} from 'vue';\n\nexport function createJavascriptTransition<Element = RendererElement>(\n name: string,\n staticProps: BaseTransitionProps<Element>\n): FunctionalComponent {\n return (dynamicProps: TransitionProps, { slots }: SetupContext) => {\n return h(\n Transition,\n {\n name,\n ...staticProps,\n ...dynamicProps\n } as TransitionProps,\n slots.default\n );\n };\n}\n\nexport function createJavascriptTransitionGroup(name: string, staticProps: TransitionGroupProps): FunctionalComponent {\n return (dynamicProps: TransitionGroupProps, { slots }: SetupContext) => {\n return h(\n TransitionGroup,\n {\n name,\n ...staticProps,\n ...dynamicProps\n } as TransitionGroupProps,\n slots.default\n );\n };\n}\n"],"sourceRoot":"","file":"createJavascriptTransition.js"}

View File

@@ -0,0 +1,13 @@
import { BaseTransitionProps } from 'vue';
interface HTMLExpandElement extends HTMLElement {
_parent?: (Node & ParentNode & HTMLElement) | null;
_initialStyle: {
transition: string;
visibility: string | null;
overflow: string | null;
height?: string | null;
width?: string | null;
};
}
export declare function createExpandTransition(expandedParentClass?: string, x?: boolean): BaseTransitionProps<HTMLExpandElement>;
export {};

View File

@@ -0,0 +1,74 @@
import { capitalizeFirstLetter } from '../../utils/helpers';
export function createExpandTransition(expandedParentClass = '', x = false) {
const sizeProperty = x ? 'width' : 'height';
const offsetProperty = `offset${capitalizeFirstLetter(sizeProperty)}`;
function resetStyles(el) {
const size = el._initialStyle[sizeProperty];
el.style.overflow = el._initialStyle.overflow;
if (size != null) el.style[sizeProperty] = size;
delete el._initialStyle;
}
function onAfterLeave(el) {
if (expandedParentClass && el._parent) {
el._parent.classList.remove(expandedParentClass);
}
resetStyles(el);
}
return {
onBeforeEnter(el) {
el._parent = el.parentNode;
el._initialStyle = {
transition: el.style.transition,
visibility: el.style.visibility,
overflow: el.style.overflow,
[sizeProperty]: el.style[sizeProperty]
};
},
onEnter(el) {
const initialStyle = el._initialStyle;
const offset = `${el[offsetProperty]}px`;
el.style.setProperty('transition', 'none', 'important');
el.style.visibility = 'hidden';
el.style.visibility = initialStyle.visibility;
el.style.overflow = 'hidden';
el.style[sizeProperty] = '0';
void el.offsetHeight; // force reflow
el.style.transition = initialStyle.transition;
if (expandedParentClass && el._parent) {
el._parent.classList.add(expandedParentClass);
}
requestAnimationFrame(() => {
el.style[sizeProperty] = offset;
});
},
onAfterEnter: resetStyles,
onEnterCancelled: resetStyles,
onLeave(el) {
el._initialStyle = {
transition: '',
visibility: '',
overflow: el.style.overflow,
[sizeProperty]: el.style[sizeProperty]
};
el.style.overflow = 'hidden';
el.style[sizeProperty] = `${el[offsetProperty]}px`;
void el.offsetHeight; // force reflow
requestAnimationFrame(() => el.style[sizeProperty] = '0');
},
onAfterLeave,
onLeaveCancelled: onAfterLeave
};
}
//# sourceMappingURL=expandTransition.js.map

File diff suppressed because one or more lines are too long