@studiometa/ui 0.2.23 → 0.2.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -12
- package/atoms/AnchorScrollTo/AnchorScrollTo.cjs +11 -0
- package/atoms/AnchorScrollTo/AnchorScrollTo.cjs.map +2 -2
- package/atoms/AnchorScrollTo/AnchorScrollTo.js +11 -0
- package/atoms/AnchorScrollTo/AnchorScrollTo.js.map +2 -2
- package/atoms/Button/StyledButton.twig +6 -4
- package/atoms/Button/StyledButtonRounded.twig +65 -0
- package/atoms/Cursor/Cursor.cjs +12 -0
- package/atoms/Cursor/Cursor.cjs.map +2 -2
- package/atoms/Cursor/Cursor.js +12 -0
- package/atoms/Cursor/Cursor.js.map +2 -2
- package/atoms/Figure/Figure.cjs +27 -3
- package/atoms/Figure/Figure.cjs.map +2 -2
- package/atoms/Figure/Figure.js +27 -3
- package/atoms/Figure/Figure.js.map +2 -2
- package/atoms/Figure/Figure.twig +6 -1
- package/atoms/Figure/FigureTwicpics.cjs +21 -0
- package/atoms/Figure/FigureTwicpics.cjs.map +1 -1
- package/atoms/Figure/FigureTwicpics.js +21 -0
- package/atoms/Figure/FigureTwicpics.js.map +1 -1
- package/atoms/LargeText/LargeText.cjs +27 -0
- package/atoms/LargeText/LargeText.cjs.map +2 -2
- package/atoms/LargeText/LargeText.js +27 -0
- package/atoms/LargeText/LargeText.js.map +2 -2
- package/atoms/LazyInclude/LazyInclude.cjs +15 -0
- package/atoms/LazyInclude/LazyInclude.cjs.map +2 -2
- package/atoms/LazyInclude/LazyInclude.js +15 -0
- package/atoms/LazyInclude/LazyInclude.js.map +2 -2
- package/atoms/Prefetch/AbstractPrefetch.cjs +12 -0
- package/atoms/Prefetch/AbstractPrefetch.cjs.map +2 -2
- package/atoms/Prefetch/AbstractPrefetch.js +12 -0
- package/atoms/Prefetch/AbstractPrefetch.js.map +2 -2
- package/atoms/Prefetch/PrefetchWhenOver.cjs +6 -0
- package/atoms/Prefetch/PrefetchWhenOver.cjs.map +2 -2
- package/atoms/Prefetch/PrefetchWhenOver.js +6 -0
- package/atoms/Prefetch/PrefetchWhenOver.js.map +2 -2
- package/atoms/Prefetch/PrefetchWhenVisible.cjs +6 -0
- package/atoms/Prefetch/PrefetchWhenVisible.cjs.map +2 -2
- package/atoms/Prefetch/PrefetchWhenVisible.js +6 -0
- package/atoms/Prefetch/PrefetchWhenVisible.js.map +2 -2
- package/atoms/ScrollAnimation/AbstractScrollAnimation.cjs +12 -0
- package/atoms/ScrollAnimation/AbstractScrollAnimation.cjs.map +2 -2
- package/atoms/ScrollAnimation/AbstractScrollAnimation.js +12 -0
- package/atoms/ScrollAnimation/AbstractScrollAnimation.js.map +2 -2
- package/atoms/ScrollAnimation/ScrollAnimation.cjs +6 -0
- package/atoms/ScrollAnimation/ScrollAnimation.cjs.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimation.js +6 -0
- package/atoms/ScrollAnimation/ScrollAnimation.js.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationChild.cjs +18 -1
- package/atoms/ScrollAnimation/ScrollAnimationChild.cjs.map +2 -2
- package/atoms/ScrollAnimation/ScrollAnimationChild.js +18 -1
- package/atoms/ScrollAnimation/ScrollAnimationChild.js.map +2 -2
- package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.cjs +3 -0
- package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.cjs.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.js +3 -0
- package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.js.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationParent.cjs +6 -0
- package/atoms/ScrollAnimation/ScrollAnimationParent.cjs.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationParent.js +6 -0
- package/atoms/ScrollAnimation/ScrollAnimationParent.js.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.cjs +3 -0
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.cjs.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.d.ts +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.js +3 -0
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.js.map +1 -1
- package/atoms/ScrollAnimation/animationScrollWithEase.cjs +6 -0
- package/atoms/ScrollAnimation/animationScrollWithEase.cjs.map +2 -2
- package/atoms/ScrollAnimation/animationScrollWithEase.js +6 -0
- package/atoms/ScrollAnimation/animationScrollWithEase.js.map +2 -2
- package/atoms/ScrollReveal/ScrollReveal.cjs +12 -0
- package/atoms/ScrollReveal/ScrollReveal.cjs.map +1 -1
- package/atoms/ScrollReveal/ScrollReveal.js +12 -0
- package/atoms/ScrollReveal/ScrollReveal.js.map +1 -1
- package/decorators/withTransition.cjs +16 -2
- package/decorators/withTransition.cjs.map +2 -2
- package/decorators/withTransition.js +16 -2
- package/decorators/withTransition.js.map +2 -2
- package/molecules/Accordion/AccordionCore.cjs +9 -0
- package/molecules/Accordion/AccordionCore.cjs.map +2 -2
- package/molecules/Accordion/AccordionCore.js +9 -0
- package/molecules/Accordion/AccordionCore.js.map +2 -2
- package/molecules/Accordion/AccordionItem.cjs +33 -1
- package/molecules/Accordion/AccordionItem.cjs.map +2 -2
- package/molecules/Accordion/AccordionItem.d.ts +1 -1
- package/molecules/Accordion/AccordionItem.js +29 -1
- package/molecules/Accordion/AccordionItem.js.map +2 -2
- package/molecules/Menu/Menu.cjs +47 -0
- package/molecules/Menu/Menu.cjs.map +1 -1
- package/molecules/Menu/Menu.js +47 -0
- package/molecules/Menu/Menu.js.map +1 -1
- package/molecules/Menu/MenuBtn.cjs +24 -0
- package/molecules/Menu/MenuBtn.cjs.map +1 -1
- package/molecules/Menu/MenuBtn.js +24 -0
- package/molecules/Menu/MenuBtn.js.map +1 -1
- package/molecules/Menu/MenuList.cjs +39 -0
- package/molecules/Menu/MenuList.cjs.map +2 -2
- package/molecules/Menu/MenuList.d.ts +1 -1
- package/molecules/Menu/MenuList.js +39 -0
- package/molecules/Menu/MenuList.js.map +2 -2
- package/molecules/Modal/Modal.cjs +50 -1
- package/molecules/Modal/Modal.cjs.map +2 -2
- package/molecules/Modal/Modal.d.ts +3 -3
- package/molecules/Modal/Modal.js +50 -1
- package/molecules/Modal/Modal.js.map +2 -2
- package/molecules/Modal/ModalWithTransition.cjs +6 -0
- package/molecules/Modal/ModalWithTransition.cjs.map +2 -2
- package/molecules/Modal/ModalWithTransition.js +6 -0
- package/molecules/Modal/ModalWithTransition.js.map +2 -2
- package/molecules/Panel/Panel.cjs +19 -0
- package/molecules/Panel/Panel.cjs.map +2 -2
- package/molecules/Panel/Panel.js +19 -0
- package/molecules/Panel/Panel.js.map +2 -2
- package/molecules/Slider/AbstractSliderChild.cjs +24 -0
- package/molecules/Slider/AbstractSliderChild.cjs.map +2 -2
- package/molecules/Slider/AbstractSliderChild.js +24 -0
- package/molecules/Slider/AbstractSliderChild.js.map +2 -2
- package/molecules/Slider/Slider.cjs +97 -0
- package/molecules/Slider/Slider.cjs.map +2 -2
- package/molecules/Slider/Slider.d.ts +3 -2
- package/molecules/Slider/Slider.js +97 -0
- package/molecules/Slider/Slider.js.map +2 -2
- package/molecules/Slider/SliderBtn.cjs +22 -2
- package/molecules/Slider/SliderBtn.cjs.map +2 -2
- package/molecules/Slider/SliderBtn.d.ts +1 -0
- package/molecules/Slider/SliderBtn.js +22 -2
- package/molecules/Slider/SliderBtn.js.map +2 -2
- package/molecules/Slider/SliderCount.cjs +9 -0
- package/molecules/Slider/SliderCount.cjs.map +2 -2
- package/molecules/Slider/SliderCount.js +9 -0
- package/molecules/Slider/SliderCount.js.map +2 -2
- package/molecules/Slider/SliderDots.cjs +19 -0
- package/molecules/Slider/SliderDots.cjs.map +2 -2
- package/molecules/Slider/SliderDots.js +19 -0
- package/molecules/Slider/SliderDots.js.map +2 -2
- package/molecules/Slider/SliderDrag.cjs +15 -0
- package/molecules/Slider/SliderDrag.cjs.map +2 -2
- package/molecules/Slider/SliderDrag.js +15 -0
- package/molecules/Slider/SliderDrag.js.map +2 -2
- package/molecules/Slider/SliderItem.cjs +75 -14
- package/molecules/Slider/SliderItem.cjs.map +2 -2
- package/molecules/Slider/SliderItem.d.ts +12 -11
- package/molecules/Slider/SliderItem.js +75 -14
- package/molecules/Slider/SliderItem.js.map +2 -2
- package/molecules/Slider/SliderProgress.cjs +6 -0
- package/molecules/Slider/SliderProgress.cjs.map +2 -2
- package/molecules/Slider/SliderProgress.js +6 -0
- package/molecules/Slider/SliderProgress.js.map +2 -2
- package/molecules/Sticky/Sticky.cjs +56 -0
- package/molecules/Sticky/Sticky.cjs.map +2 -2
- package/molecules/Sticky/Sticky.js +56 -0
- package/molecules/Sticky/Sticky.js.map +2 -2
- package/molecules/TableOfContent/TableOfContent.cjs +13 -0
- package/molecules/TableOfContent/TableOfContent.cjs.map +1 -1
- package/molecules/TableOfContent/TableOfContent.js +13 -0
- package/molecules/TableOfContent/TableOfContent.js.map +1 -1
- package/molecules/TableOfContent/TableOfContentAnchor.cjs +16 -0
- package/molecules/TableOfContent/TableOfContentAnchor.cjs.map +2 -2
- package/molecules/TableOfContent/TableOfContentAnchor.js +16 -0
- package/molecules/TableOfContent/TableOfContentAnchor.js.map +2 -2
- package/molecules/Tabs/Tabs.cjs +16 -0
- package/molecules/Tabs/Tabs.cjs.map +2 -2
- package/molecules/Tabs/Tabs.d.ts +3 -3
- package/molecules/Tabs/Tabs.js +16 -0
- package/molecules/Tabs/Tabs.js.map +2 -2
- package/organisms/Frame/Frame.cjs +30 -0
- package/organisms/Frame/Frame.cjs.map +2 -2
- package/organisms/Frame/Frame.js +30 -0
- package/organisms/Frame/Frame.js.map +2 -2
- package/organisms/Frame/FrameAnchor.cjs +6 -0
- package/organisms/Frame/FrameAnchor.cjs.map +1 -1
- package/organisms/Frame/FrameAnchor.js +6 -0
- package/organisms/Frame/FrameAnchor.js.map +1 -1
- package/organisms/Frame/FrameForm.cjs +6 -0
- package/organisms/Frame/FrameForm.cjs.map +1 -1
- package/organisms/Frame/FrameForm.js +6 -0
- package/organisms/Frame/FrameForm.js.map +1 -1
- package/organisms/Frame/FrameTarget.cjs +25 -2
- package/organisms/Frame/FrameTarget.cjs.map +2 -2
- package/organisms/Frame/FrameTarget.d.ts +1 -1
- package/organisms/Frame/FrameTarget.js +25 -2
- package/organisms/Frame/FrameTarget.js.map +2 -2
- package/organisms/Hero/Hero.twig +151 -0
- package/package.json +2 -2
- package/primitives/Draggable/Draggable.cjs +18 -0
- package/primitives/Draggable/Draggable.cjs.map +2 -2
- package/primitives/Draggable/Draggable.js +18 -0
- package/primitives/Draggable/Draggable.js.map +2 -2
- package/primitives/Sentinel/Sentinel.cjs +3 -0
- package/primitives/Sentinel/Sentinel.cjs.map +2 -2
- package/primitives/Sentinel/Sentinel.js +3 -0
- package/primitives/Sentinel/Sentinel.js.map +2 -2
- package/primitives/Transition/Transition.cjs +3 -0
- package/primitives/Transition/Transition.cjs.map +1 -1
- package/primitives/Transition/Transition.js +3 -0
- package/primitives/Transition/Transition.js.map +1 -1
|
@@ -25,6 +25,9 @@ module.exports = __toCommonJS(withTransition_exports);
|
|
|
25
25
|
var import_utils = require("@studiometa/js-toolkit/utils");
|
|
26
26
|
function withTransition(BaseClass) {
|
|
27
27
|
class Transition extends BaseClass {
|
|
28
|
+
/**
|
|
29
|
+
* Config.
|
|
30
|
+
*/
|
|
28
31
|
static config = {
|
|
29
32
|
name: "Transition",
|
|
30
33
|
options: {
|
|
@@ -38,31 +41,42 @@ function withTransition(BaseClass) {
|
|
|
38
41
|
leaveKeep: Boolean
|
|
39
42
|
}
|
|
40
43
|
};
|
|
44
|
+
/**
|
|
45
|
+
* Get the transition target.
|
|
46
|
+
*/
|
|
41
47
|
get target() {
|
|
42
48
|
return this.$el;
|
|
43
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Trigger the enter transition.
|
|
52
|
+
*/
|
|
44
53
|
async enter(target) {
|
|
45
54
|
const { enterFrom, enterActive, enterTo, enterKeep, leaveTo } = this.$options;
|
|
46
55
|
await (0, import_utils.transition)(
|
|
47
56
|
target ?? this.target,
|
|
48
57
|
{
|
|
58
|
+
// eslint-disable-next-line prefer-template
|
|
49
59
|
from: (leaveTo + " " + enterFrom).trim(),
|
|
50
60
|
active: enterActive,
|
|
51
61
|
to: enterTo
|
|
52
62
|
},
|
|
53
|
-
enterKeep
|
|
63
|
+
enterKeep ? "keep" : void 0
|
|
54
64
|
);
|
|
55
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Trigger the leave transition.
|
|
68
|
+
*/
|
|
56
69
|
async leave(target) {
|
|
57
70
|
const { leaveFrom, leaveActive, leaveTo, leaveKeep, enterTo } = this.$options;
|
|
58
71
|
await (0, import_utils.transition)(
|
|
59
72
|
target ?? this.target,
|
|
60
73
|
{
|
|
74
|
+
// eslint-disable-next-line prefer-template
|
|
61
75
|
from: (enterTo + " " + leaveFrom).trim(),
|
|
62
76
|
active: leaveActive,
|
|
63
77
|
to: leaveTo
|
|
64
78
|
},
|
|
65
|
-
leaveKeep
|
|
79
|
+
leaveKeep ? "keep" : void 0
|
|
66
80
|
);
|
|
67
81
|
}
|
|
68
82
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../packages/ui/decorators/withTransition.ts"],
|
|
4
|
-
"sourcesContent": ["import { transition } from '@studiometa/js-toolkit/utils';\nimport type {\n Base,\n BaseDecorator,\n BaseProps,\n BaseConfig,\n BaseInterface,\n} from '@studiometa/js-toolkit';\n\nexport interface TransitionProps extends BaseProps {\n $options: {\n enterFrom: string;\n enterActive: string;\n enterTo: string;\n enterKeep: boolean;\n leaveFrom: string;\n leaveActive: string;\n leaveTo: string;\n leaveKeep: boolean;\n };\n}\n\nexport interface TransitionInterface extends BaseInterface {\n /**\n * Get the transition target.\n */\n get target(): HTMLElement | HTMLElement[];\n /**\n * Trigger the enter transition.\n */\n enter(target?: HTMLElement | HTMLElement[]):Promise<void>;\n /**\n * Trigger the leave transition.\n */\n leave(target?: HTMLElement | HTMLElement[]):Promise<void>;\n}\n\n/**\n * Extend a class to add transition capabilities.\n */\nexport function withTransition<S extends Base>(\n BaseClass: typeof Base,\n): BaseDecorator<TransitionInterface, S, TransitionProps> {\n /**\n * Class.\n */\n class Transition<T extends BaseProps = BaseProps> extends BaseClass
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA2B;AAwCpB,SAAS,eACd,WACwD;AAIxD,QAAM,mBAAoD,
|
|
4
|
+
"sourcesContent": ["import { transition } from '@studiometa/js-toolkit/utils';\nimport type {\n Base,\n BaseDecorator,\n BaseProps,\n BaseConfig,\n BaseInterface,\n} from '@studiometa/js-toolkit';\n\nexport interface TransitionProps extends BaseProps {\n $options: {\n enterFrom: string;\n enterActive: string;\n enterTo: string;\n enterKeep: boolean;\n leaveFrom: string;\n leaveActive: string;\n leaveTo: string;\n leaveKeep: boolean;\n };\n}\n\nexport interface TransitionInterface extends BaseInterface {\n /**\n * Get the transition target.\n */\n get target(): HTMLElement | HTMLElement[];\n /**\n * Trigger the enter transition.\n */\n enter(target?: HTMLElement | HTMLElement[]): Promise<void>;\n /**\n * Trigger the leave transition.\n */\n leave(target?: HTMLElement | HTMLElement[]): Promise<void>;\n}\n\n/**\n * Extend a class to add transition capabilities.\n */\nexport function withTransition<S extends Base>(\n BaseClass: typeof Base,\n): BaseDecorator<TransitionInterface, S, TransitionProps> {\n /**\n * Class.\n */\n class Transition<T extends BaseProps = BaseProps> extends BaseClass<T & TransitionProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'Transition',\n options: {\n enterFrom: String,\n enterActive: String,\n enterTo: String,\n enterKeep: Boolean,\n leaveFrom: String,\n leaveActive: String,\n leaveTo: String,\n leaveKeep: Boolean,\n },\n };\n\n /**\n * Get the transition target.\n */\n get target(): HTMLElement | HTMLElement[] {\n return this.$el;\n }\n\n /**\n * Trigger the enter transition.\n */\n async enter(target?: HTMLElement | HTMLElement[]): Promise<void> {\n const { enterFrom, enterActive, enterTo, enterKeep, leaveTo } = this.$options;\n\n await transition(\n target ?? this.target,\n {\n // eslint-disable-next-line prefer-template\n from: (leaveTo + ' ' + enterFrom).trim(),\n active: enterActive as string,\n to: enterTo as string,\n },\n enterKeep ? 'keep' : undefined,\n );\n }\n\n /**\n * Trigger the leave transition.\n */\n async leave(target?: HTMLElement | HTMLElement[]): Promise<void> {\n const { leaveFrom, leaveActive, leaveTo, leaveKeep, enterTo } = this.$options;\n\n await transition(\n target ?? this.target,\n {\n // eslint-disable-next-line prefer-template\n from: (enterTo + ' ' + leaveFrom).trim(),\n active: leaveActive as string,\n to: leaveTo as string,\n },\n leaveKeep ? 'keep' : undefined,\n );\n }\n }\n\n // @ts-ignore\n return Transition;\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA2B;AAwCpB,SAAS,eACd,WACwD;AAIxD,QAAM,mBAAoD,UAA+B;AAAA;AAAA;AAAA;AAAA,IAIvF,OAAO,SAAqB;AAAA,MAC1B,MAAM;AAAA,MACN,SAAS;AAAA,QACP,WAAW;AAAA,QACX,aAAa;AAAA,QACb,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,QACX,aAAa;AAAA,QACb,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,SAAsC;AACxC,aAAO,KAAK;AAAA,IACd;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,MAAM,QAAqD;AAC/D,YAAM,EAAE,WAAW,aAAa,SAAS,WAAW,QAAQ,IAAI,KAAK;AAErE,gBAAM;AAAA,QACJ,UAAU,KAAK;AAAA,QACf;AAAA;AAAA,UAEE,OAAO,UAAU,MAAM,WAAW,KAAK;AAAA,UACvC,QAAQ;AAAA,UACR,IAAI;AAAA,QACN;AAAA,QACA,YAAY,SAAS;AAAA,MACvB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,MAAM,QAAqD;AAC/D,YAAM,EAAE,WAAW,aAAa,SAAS,WAAW,QAAQ,IAAI,KAAK;AAErE,gBAAM;AAAA,QACJ,UAAU,KAAK;AAAA,QACf;AAAA;AAAA,UAEE,OAAO,UAAU,MAAM,WAAW,KAAK;AAAA,UACvC,QAAQ;AAAA,UACR,IAAI;AAAA,QACN;AAAA,QACA,YAAY,SAAS;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAGA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { transition } from "@studiometa/js-toolkit/utils";
|
|
2
2
|
function withTransition(BaseClass) {
|
|
3
3
|
class Transition extends BaseClass {
|
|
4
|
+
/**
|
|
5
|
+
* Config.
|
|
6
|
+
*/
|
|
4
7
|
static config = {
|
|
5
8
|
name: "Transition",
|
|
6
9
|
options: {
|
|
@@ -14,31 +17,42 @@ function withTransition(BaseClass) {
|
|
|
14
17
|
leaveKeep: Boolean
|
|
15
18
|
}
|
|
16
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* Get the transition target.
|
|
22
|
+
*/
|
|
17
23
|
get target() {
|
|
18
24
|
return this.$el;
|
|
19
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Trigger the enter transition.
|
|
28
|
+
*/
|
|
20
29
|
async enter(target) {
|
|
21
30
|
const { enterFrom, enterActive, enterTo, enterKeep, leaveTo } = this.$options;
|
|
22
31
|
await transition(
|
|
23
32
|
target ?? this.target,
|
|
24
33
|
{
|
|
34
|
+
// eslint-disable-next-line prefer-template
|
|
25
35
|
from: (leaveTo + " " + enterFrom).trim(),
|
|
26
36
|
active: enterActive,
|
|
27
37
|
to: enterTo
|
|
28
38
|
},
|
|
29
|
-
enterKeep
|
|
39
|
+
enterKeep ? "keep" : void 0
|
|
30
40
|
);
|
|
31
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Trigger the leave transition.
|
|
44
|
+
*/
|
|
32
45
|
async leave(target) {
|
|
33
46
|
const { leaveFrom, leaveActive, leaveTo, leaveKeep, enterTo } = this.$options;
|
|
34
47
|
await transition(
|
|
35
48
|
target ?? this.target,
|
|
36
49
|
{
|
|
50
|
+
// eslint-disable-next-line prefer-template
|
|
37
51
|
from: (enterTo + " " + leaveFrom).trim(),
|
|
38
52
|
active: leaveActive,
|
|
39
53
|
to: leaveTo
|
|
40
54
|
},
|
|
41
|
-
leaveKeep
|
|
55
|
+
leaveKeep ? "keep" : void 0
|
|
42
56
|
);
|
|
43
57
|
}
|
|
44
58
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../packages/ui/decorators/withTransition.ts"],
|
|
4
|
-
"sourcesContent": ["import { transition } from '@studiometa/js-toolkit/utils';\nimport type {\n Base,\n BaseDecorator,\n BaseProps,\n BaseConfig,\n BaseInterface,\n} from '@studiometa/js-toolkit';\n\nexport interface TransitionProps extends BaseProps {\n $options: {\n enterFrom: string;\n enterActive: string;\n enterTo: string;\n enterKeep: boolean;\n leaveFrom: string;\n leaveActive: string;\n leaveTo: string;\n leaveKeep: boolean;\n };\n}\n\nexport interface TransitionInterface extends BaseInterface {\n /**\n * Get the transition target.\n */\n get target(): HTMLElement | HTMLElement[];\n /**\n * Trigger the enter transition.\n */\n enter(target?: HTMLElement | HTMLElement[]):Promise<void>;\n /**\n * Trigger the leave transition.\n */\n leave(target?: HTMLElement | HTMLElement[]):Promise<void>;\n}\n\n/**\n * Extend a class to add transition capabilities.\n */\nexport function withTransition<S extends Base>(\n BaseClass: typeof Base,\n): BaseDecorator<TransitionInterface, S, TransitionProps> {\n /**\n * Class.\n */\n class Transition<T extends BaseProps = BaseProps> extends BaseClass
|
|
5
|
-
"mappings": "AAAA,SAAS,kBAAkB;AAwCpB,SAAS,eACd,WACwD;AAIxD,QAAM,mBAAoD,
|
|
4
|
+
"sourcesContent": ["import { transition } from '@studiometa/js-toolkit/utils';\nimport type {\n Base,\n BaseDecorator,\n BaseProps,\n BaseConfig,\n BaseInterface,\n} from '@studiometa/js-toolkit';\n\nexport interface TransitionProps extends BaseProps {\n $options: {\n enterFrom: string;\n enterActive: string;\n enterTo: string;\n enterKeep: boolean;\n leaveFrom: string;\n leaveActive: string;\n leaveTo: string;\n leaveKeep: boolean;\n };\n}\n\nexport interface TransitionInterface extends BaseInterface {\n /**\n * Get the transition target.\n */\n get target(): HTMLElement | HTMLElement[];\n /**\n * Trigger the enter transition.\n */\n enter(target?: HTMLElement | HTMLElement[]): Promise<void>;\n /**\n * Trigger the leave transition.\n */\n leave(target?: HTMLElement | HTMLElement[]): Promise<void>;\n}\n\n/**\n * Extend a class to add transition capabilities.\n */\nexport function withTransition<S extends Base>(\n BaseClass: typeof Base,\n): BaseDecorator<TransitionInterface, S, TransitionProps> {\n /**\n * Class.\n */\n class Transition<T extends BaseProps = BaseProps> extends BaseClass<T & TransitionProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'Transition',\n options: {\n enterFrom: String,\n enterActive: String,\n enterTo: String,\n enterKeep: Boolean,\n leaveFrom: String,\n leaveActive: String,\n leaveTo: String,\n leaveKeep: Boolean,\n },\n };\n\n /**\n * Get the transition target.\n */\n get target(): HTMLElement | HTMLElement[] {\n return this.$el;\n }\n\n /**\n * Trigger the enter transition.\n */\n async enter(target?: HTMLElement | HTMLElement[]): Promise<void> {\n const { enterFrom, enterActive, enterTo, enterKeep, leaveTo } = this.$options;\n\n await transition(\n target ?? this.target,\n {\n // eslint-disable-next-line prefer-template\n from: (leaveTo + ' ' + enterFrom).trim(),\n active: enterActive as string,\n to: enterTo as string,\n },\n enterKeep ? 'keep' : undefined,\n );\n }\n\n /**\n * Trigger the leave transition.\n */\n async leave(target?: HTMLElement | HTMLElement[]): Promise<void> {\n const { leaveFrom, leaveActive, leaveTo, leaveKeep, enterTo } = this.$options;\n\n await transition(\n target ?? this.target,\n {\n // eslint-disable-next-line prefer-template\n from: (enterTo + ' ' + leaveFrom).trim(),\n active: leaveActive as string,\n to: leaveTo as string,\n },\n leaveKeep ? 'keep' : undefined,\n );\n }\n }\n\n // @ts-ignore\n return Transition;\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,kBAAkB;AAwCpB,SAAS,eACd,WACwD;AAIxD,QAAM,mBAAoD,UAA+B;AAAA;AAAA;AAAA;AAAA,IAIvF,OAAO,SAAqB;AAAA,MAC1B,MAAM;AAAA,MACN,SAAS;AAAA,QACP,WAAW;AAAA,QACX,aAAa;AAAA,QACb,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,QACX,aAAa;AAAA,QACb,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,SAAsC;AACxC,aAAO,KAAK;AAAA,IACd;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,MAAM,QAAqD;AAC/D,YAAM,EAAE,WAAW,aAAa,SAAS,WAAW,QAAQ,IAAI,KAAK;AAErE,YAAM;AAAA,QACJ,UAAU,KAAK;AAAA,QACf;AAAA;AAAA,UAEE,OAAO,UAAU,MAAM,WAAW,KAAK;AAAA,UACvC,QAAQ;AAAA,UACR,IAAI;AAAA,QACN;AAAA,QACA,YAAY,SAAS;AAAA,MACvB;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,MAAM,QAAqD;AAC/D,YAAM,EAAE,WAAW,aAAa,SAAS,WAAW,QAAQ,IAAI,KAAK;AAErE,YAAM;AAAA,QACJ,UAAU,KAAK;AAAA,QACf;AAAA;AAAA,UAEE,OAAO,UAAU,MAAM,WAAW,KAAK;AAAA,UACvC,QAAQ;AAAA,UACR,IAAI;AAAA,QACN;AAAA,QACA,YAAY,SAAS;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAGA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -29,16 +29,25 @@ __export(AccordionCore_exports, {
|
|
|
29
29
|
module.exports = __toCommonJS(AccordionCore_exports);
|
|
30
30
|
var import_js_toolkit = require("@studiometa/js-toolkit");
|
|
31
31
|
var AccordionCore = class extends import_js_toolkit.Base {
|
|
32
|
+
/**
|
|
33
|
+
* Synchronize close on open.
|
|
34
|
+
*/
|
|
32
35
|
onAccordionItemOpen(index) {
|
|
33
36
|
this.$emit("open", this.$children.AccordionItem[index], index);
|
|
34
37
|
if (this.$options.autoclose) {
|
|
35
38
|
this.$children.AccordionItem.filter((el, i) => index !== i).forEach((item) => item.close());
|
|
36
39
|
}
|
|
37
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Emit close event.
|
|
43
|
+
*/
|
|
38
44
|
onAccordionItemClose(index) {
|
|
39
45
|
this.$emit("close", this.$children.AccordionItem[index], index);
|
|
40
46
|
}
|
|
41
47
|
};
|
|
48
|
+
/**
|
|
49
|
+
* Accordion config.
|
|
50
|
+
*/
|
|
42
51
|
__publicField(AccordionCore, "config", {
|
|
43
52
|
name: "Accordion",
|
|
44
53
|
emits: ["open", "close"],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/molecules/Accordion/AccordionCore.ts"],
|
|
4
|
-
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport type { AccordionItem, AccordionItemProps } from './AccordionItem';\n\nexport interface AccordionProps extends BaseProps {\n $refs: {\n btn: HTMLElement[];\n content: HTMLElement[];\n };\n $options: {\n autoclose: boolean;\n item: AccordionItemProps['$options'];\n };\n $children: {\n AccordionItem: AccordionItem[];\n };\n}\n\n/**\n * Accordion class.\n */\nexport class AccordionCore<T extends BaseProps = BaseProps> extends Base
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAqB;AAqBd,IAAM,gBAAN,cAA6D,
|
|
4
|
+
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport type { AccordionItem, AccordionItemProps } from './AccordionItem';\n\nexport interface AccordionProps extends BaseProps {\n $refs: {\n btn: HTMLElement[];\n content: HTMLElement[];\n };\n $options: {\n autoclose: boolean;\n item: AccordionItemProps['$options'];\n };\n $children: {\n AccordionItem: AccordionItem[];\n };\n}\n\n/**\n * Accordion class.\n */\nexport class AccordionCore<T extends BaseProps = BaseProps> extends Base<T & AccordionProps> {\n /**\n * Accordion config.\n */\n static config: BaseConfig = {\n name: 'Accordion',\n emits: ['open', 'close'],\n options: {\n autoclose: Boolean,\n item: {\n type: Object,\n default: (): Partial<AccordionItemProps['$options']> => ({}),\n },\n },\n };\n\n /**\n * Synchronize close on open.\n */\n onAccordionItemOpen(index: number) {\n this.$emit('open', this.$children.AccordionItem[index], index);\n if (this.$options.autoclose) {\n this.$children.AccordionItem.filter((el, i) => index !== i).forEach((item) => item.close());\n }\n }\n\n /**\n * Emit close event.\n */\n onAccordionItemClose(index: number) {\n this.$emit('close', this.$children.AccordionItem[index], index);\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAqB;AAqBd,IAAM,gBAAN,cAA6D,uBAAyB;AAAA;AAAA;AAAA;AAAA,EAmB3F,oBAAoB,OAAe;AACjC,SAAK,MAAM,QAAQ,KAAK,UAAU,cAAc,KAAK,GAAG,KAAK;AAC7D,QAAI,KAAK,SAAS,WAAW;AAC3B,WAAK,UAAU,cAAc,OAAO,CAAC,IAAI,MAAM,UAAU,CAAC,EAAE,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC;AAAA,IAC5F;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAqB,OAAe;AAClC,SAAK,MAAM,SAAS,KAAK,UAAU,cAAc,KAAK,GAAG,KAAK;AAAA,EAChE;AACF;AAAA;AAAA;AAAA;AA5BE,cAJW,eAIJ,UAAqB;AAAA,EAC1B,MAAM;AAAA,EACN,OAAO,CAAC,QAAQ,OAAO;AAAA,EACvB,SAAS;AAAA,IACP,WAAW;AAAA,IACX,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,OAAgD,CAAC;AAAA,IAC5D;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { Base } from "@studiometa/js-toolkit";
|
|
2
2
|
class AccordionCore extends Base {
|
|
3
|
+
/**
|
|
4
|
+
* Accordion config.
|
|
5
|
+
*/
|
|
3
6
|
static config = {
|
|
4
7
|
name: "Accordion",
|
|
5
8
|
emits: ["open", "close"],
|
|
@@ -11,12 +14,18 @@ class AccordionCore extends Base {
|
|
|
11
14
|
}
|
|
12
15
|
}
|
|
13
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Synchronize close on open.
|
|
19
|
+
*/
|
|
14
20
|
onAccordionItemOpen(index) {
|
|
15
21
|
this.$emit("open", this.$children.AccordionItem[index], index);
|
|
16
22
|
if (this.$options.autoclose) {
|
|
17
23
|
this.$children.AccordionItem.filter((el, i) => index !== i).forEach((item) => item.close());
|
|
18
24
|
}
|
|
19
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Emit close event.
|
|
28
|
+
*/
|
|
20
29
|
onAccordionItemClose(index) {
|
|
21
30
|
this.$emit("close", this.$children.AccordionItem[index], index);
|
|
22
31
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/molecules/Accordion/AccordionCore.ts"],
|
|
4
|
-
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport type { AccordionItem, AccordionItemProps } from './AccordionItem';\n\nexport interface AccordionProps extends BaseProps {\n $refs: {\n btn: HTMLElement[];\n content: HTMLElement[];\n };\n $options: {\n autoclose: boolean;\n item: AccordionItemProps['$options'];\n };\n $children: {\n AccordionItem: AccordionItem[];\n };\n}\n\n/**\n * Accordion class.\n */\nexport class AccordionCore<T extends BaseProps = BaseProps> extends Base
|
|
5
|
-
"mappings": "AAAA,SAAS,YAAY;AAqBd,MAAM,sBAAuD,
|
|
4
|
+
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport type { AccordionItem, AccordionItemProps } from './AccordionItem';\n\nexport interface AccordionProps extends BaseProps {\n $refs: {\n btn: HTMLElement[];\n content: HTMLElement[];\n };\n $options: {\n autoclose: boolean;\n item: AccordionItemProps['$options'];\n };\n $children: {\n AccordionItem: AccordionItem[];\n };\n}\n\n/**\n * Accordion class.\n */\nexport class AccordionCore<T extends BaseProps = BaseProps> extends Base<T & AccordionProps> {\n /**\n * Accordion config.\n */\n static config: BaseConfig = {\n name: 'Accordion',\n emits: ['open', 'close'],\n options: {\n autoclose: Boolean,\n item: {\n type: Object,\n default: (): Partial<AccordionItemProps['$options']> => ({}),\n },\n },\n };\n\n /**\n * Synchronize close on open.\n */\n onAccordionItemOpen(index: number) {\n this.$emit('open', this.$children.AccordionItem[index], index);\n if (this.$options.autoclose) {\n this.$children.AccordionItem.filter((el, i) => index !== i).forEach((item) => item.close());\n }\n }\n\n /**\n * Emit close event.\n */\n onAccordionItemClose(index: number) {\n this.$emit('close', this.$children.AccordionItem[index], index);\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,YAAY;AAqBd,MAAM,sBAAuD,KAAyB;AAAA;AAAA;AAAA;AAAA,EAI3F,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,IACN,OAAO,CAAC,QAAQ,OAAO;AAAA,IACvB,SAAS;AAAA,MACP,WAAW;AAAA,MACX,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS,OAAgD,CAAC;AAAA,MAC5D;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoB,OAAe;AACjC,SAAK,MAAM,QAAQ,KAAK,UAAU,cAAc,KAAK,GAAG,KAAK;AAC7D,QAAI,KAAK,SAAS,WAAW;AAC3B,WAAK,UAAU,cAAc,OAAO,CAAC,IAAI,MAAM,UAAU,CAAC,EAAE,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC;AAAA,IAC5F;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAqB,OAAe;AAClC,SAAK,MAAM,SAAS,KAAK,UAAU,cAAc,KAAK,GAAG,KAAK;AAAA,EAChE;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
return to;
|
|
19
19
|
};
|
|
20
20
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
21
25
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
26
|
mod
|
|
23
27
|
));
|
|
@@ -38,13 +42,20 @@ var import_js_toolkit = require("@studiometa/js-toolkit");
|
|
|
38
42
|
var import_utils = require("@studiometa/js-toolkit/utils");
|
|
39
43
|
var import_AccordionCore = require("./AccordionCore.cjs");
|
|
40
44
|
var _AccordionItem = class extends import_js_toolkit.Base {
|
|
45
|
+
/**
|
|
46
|
+
* Add aria-attributes on mounted.
|
|
47
|
+
*/
|
|
41
48
|
mounted() {
|
|
42
49
|
if (this.$parent && this.$parent instanceof import_AccordionCore.AccordionCore && this.$parent.$options.item) {
|
|
43
50
|
Object.entries(this.$parent.$options.item).forEach(([key, value]) => {
|
|
44
51
|
if (key in this.$options) {
|
|
45
52
|
const type = _AccordionItem.config.options[key].type ?? _AccordionItem.config.options[key];
|
|
46
53
|
if (type === Array || type === Object) {
|
|
47
|
-
this.$options[key] = (0, import_deepmerge.default)(
|
|
54
|
+
this.$options[key] = (0, import_deepmerge.default)(
|
|
55
|
+
this.$options[key],
|
|
56
|
+
/** @type {any} */
|
|
57
|
+
value
|
|
58
|
+
);
|
|
48
59
|
} else {
|
|
49
60
|
this.$options[key] = value;
|
|
50
61
|
}
|
|
@@ -63,10 +74,16 @@ var _AccordionItem = class extends import_js_toolkit.Base {
|
|
|
63
74
|
(0, import_utils.transition)($refs[refName], { to: isOpen ? open : closed }, "keep");
|
|
64
75
|
});
|
|
65
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Remove styles on destroy.
|
|
79
|
+
*/
|
|
66
80
|
destroyed() {
|
|
67
81
|
this.$refs.container.style.visibility = "";
|
|
68
82
|
this.$refs.container.style.height = "";
|
|
69
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Handler for the click event on the `btn` ref.
|
|
86
|
+
*/
|
|
70
87
|
onBtnClick() {
|
|
71
88
|
if (this.$options.isOpen) {
|
|
72
89
|
this.close();
|
|
@@ -74,15 +91,24 @@ var _AccordionItem = class extends import_js_toolkit.Base {
|
|
|
74
91
|
this.open();
|
|
75
92
|
}
|
|
76
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Get the content ID.
|
|
96
|
+
*/
|
|
77
97
|
get contentId() {
|
|
78
98
|
return `content-${this.$id}`;
|
|
79
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Update the refs' attributes according to the given type.
|
|
102
|
+
*/
|
|
80
103
|
updateAttributes(isOpen) {
|
|
81
104
|
this.$refs.container.style.visibility = isOpen ? "" : "invisible";
|
|
82
105
|
this.$refs.container.style.height = isOpen ? "" : "0";
|
|
83
106
|
this.$refs.content.setAttribute("aria-hidden", isOpen ? "false" : "true");
|
|
84
107
|
this.$refs.btn.setAttribute("aria-expanded", isOpen ? "true" : "false");
|
|
85
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Open an item.
|
|
111
|
+
*/
|
|
86
112
|
async open() {
|
|
87
113
|
if (this.$options.isOpen) {
|
|
88
114
|
return;
|
|
@@ -118,6 +144,9 @@ var _AccordionItem = class extends import_js_toolkit.Base {
|
|
|
118
144
|
)
|
|
119
145
|
]);
|
|
120
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Close an item.
|
|
149
|
+
*/
|
|
121
150
|
async close() {
|
|
122
151
|
if (!this.$options.isOpen) {
|
|
123
152
|
return;
|
|
@@ -157,6 +186,9 @@ var _AccordionItem = class extends import_js_toolkit.Base {
|
|
|
157
186
|
}
|
|
158
187
|
};
|
|
159
188
|
var AccordionItem = _AccordionItem;
|
|
189
|
+
/**
|
|
190
|
+
* Config.
|
|
191
|
+
*/
|
|
160
192
|
__publicField(AccordionItem, "config", {
|
|
161
193
|
name: "AccordionItem",
|
|
162
194
|
refs: ["btn", "content", "container"],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/molecules/Accordion/AccordionItem.ts"],
|
|
4
|
-
"sourcesContent": ["import deepmerge from 'deepmerge';\nimport { Base, BaseConfig } from '@studiometa/js-toolkit';\nimport type { BaseProps } from '@studiometa/js-toolkit';\nimport { transition } from '@studiometa/js-toolkit/utils';\nimport { AccordionCore as Accordion } from './AccordionCore.js';\n\ntype AccordionItemStates = Partial<\n Record<'open' | 'active' | 'closed', string | Partial<CSSStyleDeclaration>>\n>;\n\nexport interface AccordionItemProps extends BaseProps {\n $refs: {\n btn: HTMLElement;\n content: HTMLElement;\n container: HTMLElement;\n };\n $options: {\n isOpen: boolean;\n styles: Partial<Record<keyof AccordionItemProps['$refs'], AccordionItemStates>>;\n };\n}\n\n/**\n * AccordionItem class.\n */\nexport class AccordionItem<T extends BaseProps = BaseProps> extends Base
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import deepmerge from 'deepmerge';\nimport { Base, BaseConfig } from '@studiometa/js-toolkit';\nimport type { BaseProps } from '@studiometa/js-toolkit';\nimport { transition } from '@studiometa/js-toolkit/utils';\nimport { AccordionCore as Accordion } from './AccordionCore.js';\n\ntype AccordionItemStates = Partial<\n Record<'open' | 'active' | 'closed', string | Partial<CSSStyleDeclaration>>\n>;\n\nexport interface AccordionItemProps extends BaseProps {\n $refs: {\n btn: HTMLElement;\n content: HTMLElement;\n container: HTMLElement;\n };\n $options: {\n isOpen: boolean;\n styles: Partial<Record<keyof AccordionItemProps['$refs'], AccordionItemStates>>;\n };\n}\n\n/**\n * AccordionItem class.\n */\nexport class AccordionItem<T extends BaseProps = BaseProps> extends Base<T & AccordionItemProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'AccordionItem',\n refs: ['btn', 'content', 'container'],\n emits: ['open', 'close'],\n options: {\n isOpen: Boolean,\n styles: {\n type: Object,\n default: (): AccordionItemProps['$options']['styles'] => ({\n container: {\n open: '',\n active: '',\n closed: '',\n },\n }),\n merge: true,\n },\n },\n };\n\n /**\n * Add aria-attributes on mounted.\n */\n mounted() {\n if (this.$parent && this.$parent instanceof Accordion && this.$parent.$options.item) {\n Object.entries(this.$parent.$options.item).forEach(([key, value]) => {\n if (key in this.$options) {\n // @ts-ignore\n const type = AccordionItem.config.options[key].type ?? AccordionItem.config.options[key];\n if (type === Array || type === Object) {\n // @ts-ignore\n this.$options[key] = deepmerge(this.$options[key], /** @type {any} */ value);\n } else {\n // @ts-ignore\n this.$options[key] = value;\n }\n }\n });\n }\n\n this.$refs.btn.setAttribute('id', this.$id);\n this.$refs.btn.setAttribute('aria-controls', this.contentId);\n this.$refs.content.setAttribute('aria-labelledby', this.$id);\n this.$refs.content.setAttribute('id', this.contentId);\n\n const { isOpen } = this.$options;\n this.updateAttributes(isOpen);\n\n // Update refs styles on mount\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { container, ...otherStyles } = this.$options.styles;\n\n const { $refs } = this;\n Object.entries(otherStyles)\n .filter(([refName]) => $refs[refName])\n .forEach(([refName, { open, closed } = { open: '', closed: '' }]) => {\n transition($refs[refName] as HTMLElement, { to: isOpen ? open : closed }, 'keep');\n });\n }\n\n /**\n * Remove styles on destroy.\n */\n destroyed() {\n this.$refs.container.style.visibility = '';\n this.$refs.container.style.height = '';\n }\n\n /**\n * Handler for the click event on the `btn` ref.\n */\n onBtnClick() {\n if (this.$options.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Get the content ID.\n */\n get contentId(): string {\n return `content-${this.$id}`;\n }\n\n /**\n * Update the refs' attributes according to the given type.\n */\n updateAttributes(isOpen: boolean) {\n this.$refs.container.style.visibility = isOpen ? '' : 'invisible';\n this.$refs.container.style.height = isOpen ? '' : '0';\n this.$refs.content.setAttribute('aria-hidden', isOpen ? 'false' : 'true');\n this.$refs.btn.setAttribute('aria-expanded', isOpen ? 'true' : 'false');\n }\n\n /**\n * Open an item.\n */\n async open() {\n if (this.$options.isOpen) {\n return;\n }\n\n this.$log('open');\n this.$emit('open');\n\n this.$options.isOpen = true;\n this.updateAttributes(this.$options.isOpen);\n\n this.$refs.container.style.visibility = '';\n const { container, ...otherStyles } = this.$options.styles;\n\n const { $refs } = this;\n\n await Promise.all([\n transition($refs.container, {\n from: { height: '0' },\n active: container.active,\n to: { height: `${$refs.content.offsetHeight}px` },\n }).then(() => {\n // Remove style only if the item has not been closed before the end\n if (this.$options.isOpen) {\n $refs.content.style.position = '';\n }\n\n return Promise.resolve();\n }),\n ...Object.entries(otherStyles)\n .filter(([refName]) => $refs[refName])\n .map(([refName, { open, active, closed } = { open: '', active: '', closed: '' }]) =>\n transition(\n $refs[refName] as HTMLElement,\n {\n from: closed,\n active,\n to: open,\n },\n 'keep',\n ),\n ),\n ]);\n }\n\n /**\n * Close an item.\n */\n async close() {\n if (!this.$options.isOpen) {\n return;\n }\n\n this.$log('close');\n this.$emit('close');\n\n this.$options.isOpen = false;\n\n const height = this.$refs.container.offsetHeight;\n this.$refs.content.style.position = 'absolute';\n const { container, ...otherStyles } = this.$options.styles;\n\n /** @type {AccordionItemRefs} */\n const refs = this.$refs;\n\n await Promise.all([\n transition(refs.container, {\n from: { height: `${height}px` },\n active: container.active,\n to: { height: '0' },\n }).then(() => {\n // Add end styles only if the item has not been re-opened before the end\n if (!this.$options.isOpen) {\n refs.container.style.height = '0';\n refs.container.style.visibility = 'invisible';\n this.updateAttributes(this.$options.isOpen);\n }\n return Promise.resolve();\n }),\n ...Object.entries(otherStyles)\n .filter(([refName]) => refs[refName])\n .map(([refName, { open, active, closed } = { open: '', active: '', closed: '' }]) =>\n transition(\n refs[refName] as HTMLElement,\n {\n from: open,\n active,\n to: closed,\n },\n 'keep',\n ),\n ),\n ]);\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAsB;AACtB,wBAAiC;AAEjC,mBAA2B;AAC3B,2BAA2C;AAqBpC,IAAM,iBAAN,cAA6D,uBAA6B;AAAA;AAAA;AAAA;AAAA,EA2B/F,UAAU;AACR,QAAI,KAAK,WAAW,KAAK,mBAAmB,qBAAAA,iBAAa,KAAK,QAAQ,SAAS,MAAM;AACnF,aAAO,QAAQ,KAAK,QAAQ,SAAS,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACnE,YAAI,OAAO,KAAK,UAAU;AAExB,gBAAM,OAAO,eAAc,OAAO,QAAQ,GAAG,EAAE,QAAQ,eAAc,OAAO,QAAQ,GAAG;AACvF,cAAI,SAAS,SAAS,SAAS,QAAQ;AAErC,iBAAK,SAAS,GAAG,QAAI,iBAAAC;AAAA,cAAU,KAAK,SAAS,GAAG;AAAA;AAAA,cAAsB;AAAA,YAAK;AAAA,UAC7E,OAAO;AAEL,iBAAK,SAAS,GAAG,IAAI;AAAA,UACvB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAEA,SAAK,MAAM,IAAI,aAAa,MAAM,KAAK,GAAG;AAC1C,SAAK,MAAM,IAAI,aAAa,iBAAiB,KAAK,SAAS;AAC3D,SAAK,MAAM,QAAQ,aAAa,mBAAmB,KAAK,GAAG;AAC3D,SAAK,MAAM,QAAQ,aAAa,MAAM,KAAK,SAAS;AAEpD,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,SAAK,iBAAiB,MAAM;AAI5B,UAAM,EAAE,WAAW,GAAG,YAAY,IAAI,KAAK,SAAS;AAEpD,UAAM,EAAE,MAAM,IAAI;AAClB,WAAO,QAAQ,WAAW,EACvB,OAAO,CAAC,CAAC,OAAO,MAAM,MAAM,OAAO,CAAC,EACpC,QAAQ,CAAC,CAAC,SAAS,EAAE,MAAM,OAAO,IAAI,EAAE,MAAM,IAAI,QAAQ,GAAG,CAAC,MAAM;AACnE,mCAAW,MAAM,OAAO,GAAkB,EAAE,IAAI,SAAS,OAAO,OAAO,GAAG,MAAM;AAAA,IAClF,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY;AACV,SAAK,MAAM,UAAU,MAAM,aAAa;AACxC,SAAK,MAAM,UAAU,MAAM,SAAS;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa;AACX,QAAI,KAAK,SAAS,QAAQ;AACxB,WAAK,MAAM;AAAA,IACb,OAAO;AACL,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,YAAoB;AACtB,WAAO,WAAW,KAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAiB,QAAiB;AAChC,SAAK,MAAM,UAAU,MAAM,aAAa,SAAS,KAAK;AACtD,SAAK,MAAM,UAAU,MAAM,SAAS,SAAS,KAAK;AAClD,SAAK,MAAM,QAAQ,aAAa,eAAe,SAAS,UAAU,MAAM;AACxE,SAAK,MAAM,IAAI,aAAa,iBAAiB,SAAS,SAAS,OAAO;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO;AACX,QAAI,KAAK,SAAS,QAAQ;AACxB;AAAA,IACF;AAEA,SAAK,KAAK,MAAM;AAChB,SAAK,MAAM,MAAM;AAEjB,SAAK,SAAS,SAAS;AACvB,SAAK,iBAAiB,KAAK,SAAS,MAAM;AAE1C,SAAK,MAAM,UAAU,MAAM,aAAa;AACxC,UAAM,EAAE,WAAW,GAAG,YAAY,IAAI,KAAK,SAAS;AAEpD,UAAM,EAAE,MAAM,IAAI;AAElB,UAAM,QAAQ,IAAI;AAAA,UAChB,yBAAW,MAAM,WAAW;AAAA,QAC1B,MAAM,EAAE,QAAQ,IAAI;AAAA,QACpB,QAAQ,UAAU;AAAA,QAClB,IAAI,EAAE,QAAQ,GAAG,MAAM,QAAQ,iBAAiB;AAAA,MAClD,CAAC,EAAE,KAAK,MAAM;AAEZ,YAAI,KAAK,SAAS,QAAQ;AACxB,gBAAM,QAAQ,MAAM,WAAW;AAAA,QACjC;AAEA,eAAO,QAAQ,QAAQ;AAAA,MACzB,CAAC;AAAA,MACD,GAAG,OAAO,QAAQ,WAAW,EAC1B,OAAO,CAAC,CAAC,OAAO,MAAM,MAAM,OAAO,CAAC,EACpC;AAAA,QAAI,CAAC,CAAC,SAAS,EAAE,MAAM,QAAQ,OAAO,IAAI,EAAE,MAAM,IAAI,QAAQ,IAAI,QAAQ,GAAG,CAAC,UAC7E;AAAA,UACE,MAAM,OAAO;AAAA,UACb;AAAA,YACE,MAAM;AAAA,YACN;AAAA,YACA,IAAI;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACJ,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAQ;AACZ,QAAI,CAAC,KAAK,SAAS,QAAQ;AACzB;AAAA,IACF;AAEA,SAAK,KAAK,OAAO;AACjB,SAAK,MAAM,OAAO;AAElB,SAAK,SAAS,SAAS;AAEvB,UAAM,SAAS,KAAK,MAAM,UAAU;AACpC,SAAK,MAAM,QAAQ,MAAM,WAAW;AACpC,UAAM,EAAE,WAAW,GAAG,YAAY,IAAI,KAAK,SAAS;AAGpD,UAAM,OAAO,KAAK;AAElB,UAAM,QAAQ,IAAI;AAAA,UAChB,yBAAW,KAAK,WAAW;AAAA,QACzB,MAAM,EAAE,QAAQ,GAAG,WAAW;AAAA,QAC9B,QAAQ,UAAU;AAAA,QAClB,IAAI,EAAE,QAAQ,IAAI;AAAA,MACpB,CAAC,EAAE,KAAK,MAAM;AAEZ,YAAI,CAAC,KAAK,SAAS,QAAQ;AACzB,eAAK,UAAU,MAAM,SAAS;AAC9B,eAAK,UAAU,MAAM,aAAa;AAClC,eAAK,iBAAiB,KAAK,SAAS,MAAM;AAAA,QAC5C;AACA,eAAO,QAAQ,QAAQ;AAAA,MACzB,CAAC;AAAA,MACD,GAAG,OAAO,QAAQ,WAAW,EAC1B,OAAO,CAAC,CAAC,OAAO,MAAM,KAAK,OAAO,CAAC,EACnC;AAAA,QAAI,CAAC,CAAC,SAAS,EAAE,MAAM,QAAQ,OAAO,IAAI,EAAE,MAAM,IAAI,QAAQ,IAAI,QAAQ,GAAG,CAAC,UAC7E;AAAA,UACE,KAAK,OAAO;AAAA,UACZ;AAAA,YACE,MAAM;AAAA,YACN;AAAA,YACA,IAAI;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACJ,CAAC;AAAA,EACH;AACF;AArMO,IAAM,gBAAN;AAAA;AAAA;AAAA;AAIL,cAJW,eAIJ,UAAqB;AAAA,EAC1B,MAAM;AAAA,EACN,MAAM,CAAC,OAAO,WAAW,WAAW;AAAA,EACpC,OAAO,CAAC,QAAQ,OAAO;AAAA,EACvB,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS,OAAiD;AAAA,QACxD,WAAW;AAAA,UACT,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AACF;",
|
|
6
6
|
"names": ["Accordion", "deepmerge"]
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Base, BaseConfig } from '@studiometa/js-toolkit';
|
|
2
2
|
import type { BaseProps } from '@studiometa/js-toolkit';
|
|
3
|
-
|
|
3
|
+
type AccordionItemStates = Partial<Record<'open' | 'active' | 'closed', string | Partial<CSSStyleDeclaration>>>;
|
|
4
4
|
export interface AccordionItemProps extends BaseProps {
|
|
5
5
|
$refs: {
|
|
6
6
|
btn: HTMLElement;
|
|
@@ -3,6 +3,9 @@ import { Base } from "@studiometa/js-toolkit";
|
|
|
3
3
|
import { transition } from "@studiometa/js-toolkit/utils";
|
|
4
4
|
import { AccordionCore as Accordion } from "./AccordionCore.js";
|
|
5
5
|
class AccordionItem extends Base {
|
|
6
|
+
/**
|
|
7
|
+
* Config.
|
|
8
|
+
*/
|
|
6
9
|
static config = {
|
|
7
10
|
name: "AccordionItem",
|
|
8
11
|
refs: ["btn", "content", "container"],
|
|
@@ -22,13 +25,20 @@ class AccordionItem extends Base {
|
|
|
22
25
|
}
|
|
23
26
|
}
|
|
24
27
|
};
|
|
28
|
+
/**
|
|
29
|
+
* Add aria-attributes on mounted.
|
|
30
|
+
*/
|
|
25
31
|
mounted() {
|
|
26
32
|
if (this.$parent && this.$parent instanceof Accordion && this.$parent.$options.item) {
|
|
27
33
|
Object.entries(this.$parent.$options.item).forEach(([key, value]) => {
|
|
28
34
|
if (key in this.$options) {
|
|
29
35
|
const type = AccordionItem.config.options[key].type ?? AccordionItem.config.options[key];
|
|
30
36
|
if (type === Array || type === Object) {
|
|
31
|
-
this.$options[key] = deepmerge(
|
|
37
|
+
this.$options[key] = deepmerge(
|
|
38
|
+
this.$options[key],
|
|
39
|
+
/** @type {any} */
|
|
40
|
+
value
|
|
41
|
+
);
|
|
32
42
|
} else {
|
|
33
43
|
this.$options[key] = value;
|
|
34
44
|
}
|
|
@@ -47,10 +57,16 @@ class AccordionItem extends Base {
|
|
|
47
57
|
transition($refs[refName], { to: isOpen ? open : closed }, "keep");
|
|
48
58
|
});
|
|
49
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Remove styles on destroy.
|
|
62
|
+
*/
|
|
50
63
|
destroyed() {
|
|
51
64
|
this.$refs.container.style.visibility = "";
|
|
52
65
|
this.$refs.container.style.height = "";
|
|
53
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Handler for the click event on the `btn` ref.
|
|
69
|
+
*/
|
|
54
70
|
onBtnClick() {
|
|
55
71
|
if (this.$options.isOpen) {
|
|
56
72
|
this.close();
|
|
@@ -58,15 +74,24 @@ class AccordionItem extends Base {
|
|
|
58
74
|
this.open();
|
|
59
75
|
}
|
|
60
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Get the content ID.
|
|
79
|
+
*/
|
|
61
80
|
get contentId() {
|
|
62
81
|
return `content-${this.$id}`;
|
|
63
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Update the refs' attributes according to the given type.
|
|
85
|
+
*/
|
|
64
86
|
updateAttributes(isOpen) {
|
|
65
87
|
this.$refs.container.style.visibility = isOpen ? "" : "invisible";
|
|
66
88
|
this.$refs.container.style.height = isOpen ? "" : "0";
|
|
67
89
|
this.$refs.content.setAttribute("aria-hidden", isOpen ? "false" : "true");
|
|
68
90
|
this.$refs.btn.setAttribute("aria-expanded", isOpen ? "true" : "false");
|
|
69
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Open an item.
|
|
94
|
+
*/
|
|
70
95
|
async open() {
|
|
71
96
|
if (this.$options.isOpen) {
|
|
72
97
|
return;
|
|
@@ -102,6 +127,9 @@ class AccordionItem extends Base {
|
|
|
102
127
|
)
|
|
103
128
|
]);
|
|
104
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Close an item.
|
|
132
|
+
*/
|
|
105
133
|
async close() {
|
|
106
134
|
if (!this.$options.isOpen) {
|
|
107
135
|
return;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/molecules/Accordion/AccordionItem.ts"],
|
|
4
|
-
"sourcesContent": ["import deepmerge from 'deepmerge';\nimport { Base, BaseConfig } from '@studiometa/js-toolkit';\nimport type { BaseProps } from '@studiometa/js-toolkit';\nimport { transition } from '@studiometa/js-toolkit/utils';\nimport { AccordionCore as Accordion } from './AccordionCore.js';\n\ntype AccordionItemStates = Partial<\n Record<'open' | 'active' | 'closed', string | Partial<CSSStyleDeclaration>>\n>;\n\nexport interface AccordionItemProps extends BaseProps {\n $refs: {\n btn: HTMLElement;\n content: HTMLElement;\n container: HTMLElement;\n };\n $options: {\n isOpen: boolean;\n styles: Partial<Record<keyof AccordionItemProps['$refs'], AccordionItemStates>>;\n };\n}\n\n/**\n * AccordionItem class.\n */\nexport class AccordionItem<T extends BaseProps = BaseProps> extends Base
|
|
5
|
-
"mappings": "AAAA,OAAO,eAAe;AACtB,SAAS,YAAwB;AAEjC,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB,iBAAiB;AAqBpC,MAAM,sBAAuD,
|
|
4
|
+
"sourcesContent": ["import deepmerge from 'deepmerge';\nimport { Base, BaseConfig } from '@studiometa/js-toolkit';\nimport type { BaseProps } from '@studiometa/js-toolkit';\nimport { transition } from '@studiometa/js-toolkit/utils';\nimport { AccordionCore as Accordion } from './AccordionCore.js';\n\ntype AccordionItemStates = Partial<\n Record<'open' | 'active' | 'closed', string | Partial<CSSStyleDeclaration>>\n>;\n\nexport interface AccordionItemProps extends BaseProps {\n $refs: {\n btn: HTMLElement;\n content: HTMLElement;\n container: HTMLElement;\n };\n $options: {\n isOpen: boolean;\n styles: Partial<Record<keyof AccordionItemProps['$refs'], AccordionItemStates>>;\n };\n}\n\n/**\n * AccordionItem class.\n */\nexport class AccordionItem<T extends BaseProps = BaseProps> extends Base<T & AccordionItemProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'AccordionItem',\n refs: ['btn', 'content', 'container'],\n emits: ['open', 'close'],\n options: {\n isOpen: Boolean,\n styles: {\n type: Object,\n default: (): AccordionItemProps['$options']['styles'] => ({\n container: {\n open: '',\n active: '',\n closed: '',\n },\n }),\n merge: true,\n },\n },\n };\n\n /**\n * Add aria-attributes on mounted.\n */\n mounted() {\n if (this.$parent && this.$parent instanceof Accordion && this.$parent.$options.item) {\n Object.entries(this.$parent.$options.item).forEach(([key, value]) => {\n if (key in this.$options) {\n // @ts-ignore\n const type = AccordionItem.config.options[key].type ?? AccordionItem.config.options[key];\n if (type === Array || type === Object) {\n // @ts-ignore\n this.$options[key] = deepmerge(this.$options[key], /** @type {any} */ value);\n } else {\n // @ts-ignore\n this.$options[key] = value;\n }\n }\n });\n }\n\n this.$refs.btn.setAttribute('id', this.$id);\n this.$refs.btn.setAttribute('aria-controls', this.contentId);\n this.$refs.content.setAttribute('aria-labelledby', this.$id);\n this.$refs.content.setAttribute('id', this.contentId);\n\n const { isOpen } = this.$options;\n this.updateAttributes(isOpen);\n\n // Update refs styles on mount\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { container, ...otherStyles } = this.$options.styles;\n\n const { $refs } = this;\n Object.entries(otherStyles)\n .filter(([refName]) => $refs[refName])\n .forEach(([refName, { open, closed } = { open: '', closed: '' }]) => {\n transition($refs[refName] as HTMLElement, { to: isOpen ? open : closed }, 'keep');\n });\n }\n\n /**\n * Remove styles on destroy.\n */\n destroyed() {\n this.$refs.container.style.visibility = '';\n this.$refs.container.style.height = '';\n }\n\n /**\n * Handler for the click event on the `btn` ref.\n */\n onBtnClick() {\n if (this.$options.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Get the content ID.\n */\n get contentId(): string {\n return `content-${this.$id}`;\n }\n\n /**\n * Update the refs' attributes according to the given type.\n */\n updateAttributes(isOpen: boolean) {\n this.$refs.container.style.visibility = isOpen ? '' : 'invisible';\n this.$refs.container.style.height = isOpen ? '' : '0';\n this.$refs.content.setAttribute('aria-hidden', isOpen ? 'false' : 'true');\n this.$refs.btn.setAttribute('aria-expanded', isOpen ? 'true' : 'false');\n }\n\n /**\n * Open an item.\n */\n async open() {\n if (this.$options.isOpen) {\n return;\n }\n\n this.$log('open');\n this.$emit('open');\n\n this.$options.isOpen = true;\n this.updateAttributes(this.$options.isOpen);\n\n this.$refs.container.style.visibility = '';\n const { container, ...otherStyles } = this.$options.styles;\n\n const { $refs } = this;\n\n await Promise.all([\n transition($refs.container, {\n from: { height: '0' },\n active: container.active,\n to: { height: `${$refs.content.offsetHeight}px` },\n }).then(() => {\n // Remove style only if the item has not been closed before the end\n if (this.$options.isOpen) {\n $refs.content.style.position = '';\n }\n\n return Promise.resolve();\n }),\n ...Object.entries(otherStyles)\n .filter(([refName]) => $refs[refName])\n .map(([refName, { open, active, closed } = { open: '', active: '', closed: '' }]) =>\n transition(\n $refs[refName] as HTMLElement,\n {\n from: closed,\n active,\n to: open,\n },\n 'keep',\n ),\n ),\n ]);\n }\n\n /**\n * Close an item.\n */\n async close() {\n if (!this.$options.isOpen) {\n return;\n }\n\n this.$log('close');\n this.$emit('close');\n\n this.$options.isOpen = false;\n\n const height = this.$refs.container.offsetHeight;\n this.$refs.content.style.position = 'absolute';\n const { container, ...otherStyles } = this.$options.styles;\n\n /** @type {AccordionItemRefs} */\n const refs = this.$refs;\n\n await Promise.all([\n transition(refs.container, {\n from: { height: `${height}px` },\n active: container.active,\n to: { height: '0' },\n }).then(() => {\n // Add end styles only if the item has not been re-opened before the end\n if (!this.$options.isOpen) {\n refs.container.style.height = '0';\n refs.container.style.visibility = 'invisible';\n this.updateAttributes(this.$options.isOpen);\n }\n return Promise.resolve();\n }),\n ...Object.entries(otherStyles)\n .filter(([refName]) => refs[refName])\n .map(([refName, { open, active, closed } = { open: '', active: '', closed: '' }]) =>\n transition(\n refs[refName] as HTMLElement,\n {\n from: open,\n active,\n to: closed,\n },\n 'keep',\n ),\n ),\n ]);\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAO,eAAe;AACtB,SAAS,YAAwB;AAEjC,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB,iBAAiB;AAqBpC,MAAM,sBAAuD,KAA6B;AAAA;AAAA;AAAA;AAAA,EAI/F,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,IACN,MAAM,CAAC,OAAO,WAAW,WAAW;AAAA,IACpC,OAAO,CAAC,QAAQ,OAAO;AAAA,IACvB,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,SAAS,OAAiD;AAAA,UACxD,WAAW;AAAA,YACT,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,QAAQ;AAAA,UACV;AAAA,QACF;AAAA,QACA,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,QAAI,KAAK,WAAW,KAAK,mBAAmB,aAAa,KAAK,QAAQ,SAAS,MAAM;AACnF,aAAO,QAAQ,KAAK,QAAQ,SAAS,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACnE,YAAI,OAAO,KAAK,UAAU;AAExB,gBAAM,OAAO,cAAc,OAAO,QAAQ,GAAG,EAAE,QAAQ,cAAc,OAAO,QAAQ,GAAG;AACvF,cAAI,SAAS,SAAS,SAAS,QAAQ;AAErC,iBAAK,SAAS,GAAG,IAAI;AAAA,cAAU,KAAK,SAAS,GAAG;AAAA;AAAA,cAAsB;AAAA,YAAK;AAAA,UAC7E,OAAO;AAEL,iBAAK,SAAS,GAAG,IAAI;AAAA,UACvB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAEA,SAAK,MAAM,IAAI,aAAa,MAAM,KAAK,GAAG;AAC1C,SAAK,MAAM,IAAI,aAAa,iBAAiB,KAAK,SAAS;AAC3D,SAAK,MAAM,QAAQ,aAAa,mBAAmB,KAAK,GAAG;AAC3D,SAAK,MAAM,QAAQ,aAAa,MAAM,KAAK,SAAS;AAEpD,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,SAAK,iBAAiB,MAAM;AAI5B,UAAM,EAAE,WAAW,GAAG,YAAY,IAAI,KAAK,SAAS;AAEpD,UAAM,EAAE,MAAM,IAAI;AAClB,WAAO,QAAQ,WAAW,EACvB,OAAO,CAAC,CAAC,OAAO,MAAM,MAAM,OAAO,CAAC,EACpC,QAAQ,CAAC,CAAC,SAAS,EAAE,MAAM,OAAO,IAAI,EAAE,MAAM,IAAI,QAAQ,GAAG,CAAC,MAAM;AACnE,iBAAW,MAAM,OAAO,GAAkB,EAAE,IAAI,SAAS,OAAO,OAAO,GAAG,MAAM;AAAA,IAClF,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY;AACV,SAAK,MAAM,UAAU,MAAM,aAAa;AACxC,SAAK,MAAM,UAAU,MAAM,SAAS;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa;AACX,QAAI,KAAK,SAAS,QAAQ;AACxB,WAAK,MAAM;AAAA,IACb,OAAO;AACL,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,YAAoB;AACtB,WAAO,WAAW,KAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAiB,QAAiB;AAChC,SAAK,MAAM,UAAU,MAAM,aAAa,SAAS,KAAK;AACtD,SAAK,MAAM,UAAU,MAAM,SAAS,SAAS,KAAK;AAClD,SAAK,MAAM,QAAQ,aAAa,eAAe,SAAS,UAAU,MAAM;AACxE,SAAK,MAAM,IAAI,aAAa,iBAAiB,SAAS,SAAS,OAAO;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO;AACX,QAAI,KAAK,SAAS,QAAQ;AACxB;AAAA,IACF;AAEA,SAAK,KAAK,MAAM;AAChB,SAAK,MAAM,MAAM;AAEjB,SAAK,SAAS,SAAS;AACvB,SAAK,iBAAiB,KAAK,SAAS,MAAM;AAE1C,SAAK,MAAM,UAAU,MAAM,aAAa;AACxC,UAAM,EAAE,WAAW,GAAG,YAAY,IAAI,KAAK,SAAS;AAEpD,UAAM,EAAE,MAAM,IAAI;AAElB,UAAM,QAAQ,IAAI;AAAA,MAChB,WAAW,MAAM,WAAW;AAAA,QAC1B,MAAM,EAAE,QAAQ,IAAI;AAAA,QACpB,QAAQ,UAAU;AAAA,QAClB,IAAI,EAAE,QAAQ,GAAG,MAAM,QAAQ,iBAAiB;AAAA,MAClD,CAAC,EAAE,KAAK,MAAM;AAEZ,YAAI,KAAK,SAAS,QAAQ;AACxB,gBAAM,QAAQ,MAAM,WAAW;AAAA,QACjC;AAEA,eAAO,QAAQ,QAAQ;AAAA,MACzB,CAAC;AAAA,MACD,GAAG,OAAO,QAAQ,WAAW,EAC1B,OAAO,CAAC,CAAC,OAAO,MAAM,MAAM,OAAO,CAAC,EACpC;AAAA,QAAI,CAAC,CAAC,SAAS,EAAE,MAAM,QAAQ,OAAO,IAAI,EAAE,MAAM,IAAI,QAAQ,IAAI,QAAQ,GAAG,CAAC,MAC7E;AAAA,UACE,MAAM,OAAO;AAAA,UACb;AAAA,YACE,MAAM;AAAA,YACN;AAAA,YACA,IAAI;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACJ,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAQ;AACZ,QAAI,CAAC,KAAK,SAAS,QAAQ;AACzB;AAAA,IACF;AAEA,SAAK,KAAK,OAAO;AACjB,SAAK,MAAM,OAAO;AAElB,SAAK,SAAS,SAAS;AAEvB,UAAM,SAAS,KAAK,MAAM,UAAU;AACpC,SAAK,MAAM,QAAQ,MAAM,WAAW;AACpC,UAAM,EAAE,WAAW,GAAG,YAAY,IAAI,KAAK,SAAS;AAGpD,UAAM,OAAO,KAAK;AAElB,UAAM,QAAQ,IAAI;AAAA,MAChB,WAAW,KAAK,WAAW;AAAA,QACzB,MAAM,EAAE,QAAQ,GAAG,WAAW;AAAA,QAC9B,QAAQ,UAAU;AAAA,QAClB,IAAI,EAAE,QAAQ,IAAI;AAAA,MACpB,CAAC,EAAE,KAAK,MAAM;AAEZ,YAAI,CAAC,KAAK,SAAS,QAAQ;AACzB,eAAK,UAAU,MAAM,SAAS;AAC9B,eAAK,UAAU,MAAM,aAAa;AAClC,eAAK,iBAAiB,KAAK,SAAS,MAAM;AAAA,QAC5C;AACA,eAAO,QAAQ,QAAQ;AAAA,MACzB,CAAC;AAAA,MACD,GAAG,OAAO,QAAQ,WAAW,EAC1B,OAAO,CAAC,CAAC,OAAO,MAAM,KAAK,OAAO,CAAC,EACnC;AAAA,QAAI,CAAC,CAAC,SAAS,EAAE,MAAM,QAAQ,OAAO,IAAI,EAAE,MAAM,IAAI,QAAQ,IAAI,QAAQ,GAAG,CAAC,MAC7E;AAAA,UACE,KAAK,OAAO;AAAA,UACZ;AAAA,YACE,MAAM;AAAA,YACN;AAAA,YACA,IAAI;AAAA,UACN;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACJ,CAAC;AAAA,EACH;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|