@studiometa/ui 1.0.0-alpha.0 → 1.0.0-alpha.11
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 +6 -4
- package/atoms/Action/Action.d.ts +4 -6
- package/atoms/Action/Action.js +25 -60
- package/atoms/Action/Action.js.map +2 -2
- package/atoms/Action/ActionEvent.d.ts +55 -0
- package/atoms/Action/ActionEvent.js +130 -0
- package/atoms/Action/ActionEvent.js.map +7 -0
- package/atoms/AnchorScrollTo/AnchorScrollTo.d.ts +3 -3
- package/atoms/AnchorScrollTo/AnchorScrollTo.js +1 -3
- package/atoms/AnchorScrollTo/AnchorScrollTo.js.map +2 -2
- package/atoms/Data/DataBind.d.ts +2 -2
- package/atoms/Data/DataBind.js +22 -12
- package/atoms/Data/DataBind.js.map +2 -2
- package/atoms/Data/DataComputed.js +3 -3
- package/atoms/Data/DataComputed.js.map +2 -2
- package/atoms/Data/DataEffect.js +2 -2
- package/atoms/Data/DataEffect.js.map +2 -2
- package/atoms/Data/DataModel.d.ts +1 -0
- package/atoms/Data/DataModel.js +13 -3
- package/atoms/Data/DataModel.js.map +2 -2
- package/atoms/Figure/AbstractFigure.d.ts +41 -0
- package/atoms/Figure/AbstractFigure.js +65 -0
- package/atoms/Figure/AbstractFigure.js.map +7 -0
- package/atoms/Figure/AbstractFigureDynamic.d.ts +29 -0
- package/atoms/Figure/AbstractFigureDynamic.js +48 -0
- package/atoms/Figure/AbstractFigureDynamic.js.map +7 -0
- package/atoms/Figure/Figure.d.ts +4 -35
- package/atoms/Figure/Figure.js +5 -68
- package/atoms/Figure/Figure.js.map +2 -2
- package/atoms/Figure/FigureShopify.d.ts +23 -0
- package/atoms/Figure/FigureShopify.js +38 -0
- package/atoms/Figure/FigureShopify.js.map +7 -0
- package/atoms/Figure/FigureTwicpics.d.ts +3 -19
- package/atoms/Figure/FigureTwicpics.js +10 -32
- package/atoms/Figure/FigureTwicpics.js.map +2 -2
- package/atoms/Figure/index.d.ts +1 -0
- package/atoms/Figure/index.js +1 -0
- package/atoms/Figure/index.js.map +2 -2
- package/atoms/Figure/utils.d.ts +8 -0
- package/atoms/Figure/utils.js +15 -0
- package/atoms/Figure/utils.js.map +7 -0
- package/atoms/FigureVideo/FigureVideo.js +1 -1
- package/atoms/FigureVideo/FigureVideo.js.map +1 -1
- package/atoms/FigureVideo/FigureVideoTwicpics.js +1 -1
- package/atoms/FigureVideo/FigureVideoTwicpics.js.map +1 -1
- package/atoms/LazyInclude/LazyInclude.d.ts +3 -1
- package/atoms/LazyInclude/LazyInclude.js +1 -1
- package/atoms/LazyInclude/LazyInclude.js.map +2 -2
- package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.d.ts +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.d.ts +1 -1
- package/decorators/withTransition.d.ts +1 -0
- package/decorators/withTransition.js +47 -23
- package/decorators/withTransition.js.map +2 -2
- package/molecules/Accordion/AccordionCore.d.ts +6 -2
- package/molecules/Accordion/AccordionCore.js +2 -2
- package/molecules/Accordion/AccordionCore.js.map +2 -2
- package/molecules/AnchorNav/AnchorNav.d.ts +6 -2
- package/molecules/AnchorNav/AnchorNav.js +4 -4
- package/molecules/AnchorNav/AnchorNav.js.map +2 -2
- package/molecules/AnchorNav/AnchorNavLink.d.ts +1 -1
- package/molecules/Menu/Menu.d.ts +11 -4
- package/molecules/Menu/Menu.js +7 -9
- package/molecules/Menu/Menu.js.map +2 -2
- package/molecules/Menu/MenuBtn.d.ts +9 -3
- package/molecules/Menu/MenuBtn.js +3 -3
- package/molecules/Menu/MenuBtn.js.map +2 -2
- package/molecules/Menu/MenuList.d.ts +1 -1
- package/molecules/Slider/Slider.d.ts +6 -2
- package/molecules/Slider/Slider.js +2 -2
- package/molecules/Slider/Slider.js.map +2 -2
- package/molecules/Slider/SliderDots.d.ts +5 -2
- package/molecules/Slider/SliderDots.js +1 -1
- package/molecules/Slider/SliderDots.js.map +2 -2
- package/molecules/Slider/SliderDrag.d.ts +3 -1
- package/molecules/Slider/SliderDrag.js +1 -1
- package/molecules/Slider/SliderDrag.js.map +2 -2
- package/molecules/Sticky/Sticky.d.ts +3 -1
- package/molecules/Sticky/Sticky.js +1 -1
- package/molecules/Sticky/Sticky.js.map +2 -2
- package/molecules/Tabs/Tabs.d.ts +4 -1
- package/molecules/Tabs/Tabs.js +1 -1
- package/molecules/Tabs/Tabs.js.map +2 -2
- package/molecules/index.d.ts +2 -3
- package/molecules/index.js +2 -3
- package/molecules/index.js.map +2 -2
- package/organisms/Frame/Frame.d.ts +11 -3
- package/organisms/Frame/Frame.js +14 -16
- package/organisms/Frame/Frame.js.map +2 -2
- package/organisms/Frame/FrameTarget.d.ts +1 -1
- package/package.json +2 -2
- package/primitives/Transition/Transition.d.ts +1 -1
- package/atoms/Action/Action.cjs +0 -115
- package/atoms/Action/Action.cjs.map +0 -7
- package/atoms/Action/Target.cjs +0 -35
- package/atoms/Action/Target.cjs.map +0 -7
- package/atoms/Action/index.cjs +0 -22
- package/atoms/Action/index.cjs.map +0 -7
- package/atoms/AnchorScrollTo/AnchorScrollTo.cjs +0 -52
- package/atoms/AnchorScrollTo/AnchorScrollTo.cjs.map +0 -7
- package/atoms/AnchorScrollTo/index.cjs +0 -21
- package/atoms/AnchorScrollTo/index.cjs.map +0 -7
- package/atoms/CircularMarquee/CircularMarquee.cjs +0 -69
- package/atoms/CircularMarquee/CircularMarquee.cjs.map +0 -7
- package/atoms/CircularMarquee/index.cjs +0 -21
- package/atoms/CircularMarquee/index.cjs.map +0 -7
- package/atoms/Cursor/Cursor.cjs +0 -137
- package/atoms/Cursor/Cursor.cjs.map +0 -7
- package/atoms/Cursor/index.cjs +0 -21
- package/atoms/Cursor/index.cjs.map +0 -7
- package/atoms/Data/DataBind.cjs +0 -124
- package/atoms/Data/DataBind.cjs.map +0 -7
- package/atoms/Data/DataComputed.cjs +0 -49
- package/atoms/Data/DataComputed.cjs.map +0 -7
- package/atoms/Data/DataEffect.cjs +0 -47
- package/atoms/Data/DataEffect.cjs.map +0 -7
- package/atoms/Data/DataModel.cjs +0 -38
- package/atoms/Data/DataModel.cjs.map +0 -7
- package/atoms/Data/index.cjs +0 -24
- package/atoms/Data/index.cjs.map +0 -7
- package/atoms/Data/utils.cjs +0 -46
- package/atoms/Data/utils.cjs.map +0 -7
- package/atoms/Figure/Figure.cjs +0 -105
- package/atoms/Figure/Figure.cjs.map +0 -7
- package/atoms/Figure/FigureTwicpics.cjs +0 -123
- package/atoms/Figure/FigureTwicpics.cjs.map +0 -7
- package/atoms/Figure/index.cjs +0 -22
- package/atoms/Figure/index.cjs.map +0 -7
- package/atoms/FigureVideo/FigureVideo.cjs +0 -132
- package/atoms/FigureVideo/FigureVideo.cjs.map +0 -7
- package/atoms/FigureVideo/FigureVideoTwicpics.cjs +0 -153
- package/atoms/FigureVideo/FigureVideoTwicpics.cjs.map +0 -7
- package/atoms/FigureVideo/index.cjs +0 -22
- package/atoms/FigureVideo/index.cjs.map +0 -7
- package/atoms/LargeText/LargeText.cjs +0 -109
- package/atoms/LargeText/LargeText.cjs.map +0 -7
- package/atoms/LargeText/index.cjs +0 -21
- package/atoms/LargeText/index.cjs.map +0 -7
- package/atoms/LazyInclude/LazyInclude.cjs +0 -78
- package/atoms/LazyInclude/LazyInclude.cjs.map +0 -7
- package/atoms/LazyInclude/index.cjs +0 -21
- package/atoms/LazyInclude/index.cjs.map +0 -7
- package/atoms/Prefetch/AbstractPrefetch.cjs +0 -86
- package/atoms/Prefetch/AbstractPrefetch.cjs.map +0 -7
- package/atoms/Prefetch/PrefetchWhenOver.cjs +0 -42
- package/atoms/Prefetch/PrefetchWhenOver.cjs.map +0 -7
- package/atoms/Prefetch/PrefetchWhenVisible.cjs +0 -43
- package/atoms/Prefetch/PrefetchWhenVisible.cjs.map +0 -7
- package/atoms/Prefetch/index.cjs +0 -23
- package/atoms/Prefetch/index.cjs.map +0 -7
- package/atoms/ScrollAnimation/AbstractScrollAnimation.cjs +0 -95
- package/atoms/ScrollAnimation/AbstractScrollAnimation.cjs.map +0 -7
- package/atoms/ScrollAnimation/ScrollAnimation.cjs +0 -44
- package/atoms/ScrollAnimation/ScrollAnimation.cjs.map +0 -7
- package/atoms/ScrollAnimation/ScrollAnimationChild.cjs +0 -84
- package/atoms/ScrollAnimation/ScrollAnimationChild.cjs.map +0 -7
- package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.cjs +0 -37
- package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.cjs.map +0 -7
- package/atoms/ScrollAnimation/ScrollAnimationParent.cjs +0 -50
- package/atoms/ScrollAnimation/ScrollAnimationParent.cjs.map +0 -7
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.cjs +0 -37
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.cjs.map +0 -7
- package/atoms/ScrollAnimation/animationScrollWithEase.cjs +0 -59
- package/atoms/ScrollAnimation/animationScrollWithEase.cjs.map +0 -7
- package/atoms/ScrollAnimation/index.cjs +0 -27
- package/atoms/ScrollAnimation/index.cjs.map +0 -7
- package/atoms/ScrollReveal/ScrollReveal.cjs +0 -81
- package/atoms/ScrollReveal/ScrollReveal.cjs.map +0 -7
- package/atoms/ScrollReveal/index.cjs +0 -21
- package/atoms/ScrollReveal/index.cjs.map +0 -7
- package/atoms/index.cjs +0 -32
- package/atoms/index.cjs.map +0 -7
- package/decorators/index.cjs +0 -22
- package/decorators/index.cjs.map +0 -7
- package/decorators/withDeprecation.cjs +0 -47
- package/decorators/withDeprecation.cjs.map +0 -7
- package/decorators/withTransition.cjs +0 -86
- package/decorators/withTransition.cjs.map +0 -7
- package/index.cjs +0 -25
- package/index.cjs.map +0 -7
- package/molecules/Accordion/Accordion.cjs +0 -36
- package/molecules/Accordion/Accordion.cjs.map +0 -7
- package/molecules/Accordion/AccordionCore.cjs +0 -58
- package/molecules/Accordion/AccordionCore.cjs.map +0 -7
- package/molecules/Accordion/AccordionItem.cjs +0 -206
- package/molecules/Accordion/AccordionItem.cjs.map +0 -7
- package/molecules/Accordion/index.cjs +0 -22
- package/molecules/Accordion/index.cjs.map +0 -7
- package/molecules/AnchorNav/AnchorNav.cjs +0 -63
- package/molecules/AnchorNav/AnchorNav.cjs.map +0 -7
- package/molecules/AnchorNav/AnchorNavLink.cjs +0 -40
- package/molecules/AnchorNav/AnchorNavLink.cjs.map +0 -7
- package/molecules/AnchorNav/AnchorNavTarget.cjs +0 -35
- package/molecules/AnchorNav/AnchorNavTarget.cjs.map +0 -7
- package/molecules/AnchorNav/index.cjs +0 -23
- package/molecules/AnchorNav/index.cjs.map +0 -7
- package/molecules/Menu/Menu.cjs +0 -177
- package/molecules/Menu/Menu.cjs.map +0 -7
- package/molecules/Menu/MenuBtn.cjs +0 -66
- package/molecules/Menu/MenuBtn.cjs.map +0 -7
- package/molecules/Menu/MenuList.cjs +0 -165
- package/molecules/Menu/MenuList.cjs.map +0 -7
- package/molecules/Menu/index.cjs +0 -23
- package/molecules/Menu/index.cjs.map +0 -7
- package/molecules/Modal/Modal.cjs +0 -219
- package/molecules/Modal/Modal.cjs.map +0 -7
- package/molecules/Modal/ModalWithTransition.cjs +0 -69
- package/molecules/Modal/ModalWithTransition.cjs.map +0 -7
- package/molecules/Modal/index.cjs +0 -22
- package/molecules/Modal/index.cjs.map +0 -7
- package/molecules/Panel/Panel.cjs +0 -137
- package/molecules/Panel/Panel.cjs.map +0 -7
- package/molecules/Panel/index.cjs +0 -21
- package/molecules/Panel/index.cjs.map +0 -7
- package/molecules/Slider/AbstractSliderChild.cjs +0 -88
- package/molecules/Slider/AbstractSliderChild.cjs.map +0 -7
- package/molecules/Slider/Slider.cjs +0 -404
- package/molecules/Slider/Slider.cjs.map +0 -7
- package/molecules/Slider/SliderBtn.cjs +0 -71
- package/molecules/Slider/SliderBtn.cjs.map +0 -7
- package/molecules/Slider/SliderCount.cjs +0 -44
- package/molecules/Slider/SliderCount.cjs.map +0 -7
- package/molecules/Slider/SliderDots.cjs +0 -64
- package/molecules/Slider/SliderDots.cjs.map +0 -7
- package/molecules/Slider/SliderDrag.cjs +0 -66
- package/molecules/Slider/SliderDrag.cjs.map +0 -7
- package/molecules/Slider/SliderItem.cjs +0 -177
- package/molecules/Slider/SliderItem.cjs.map +0 -7
- package/molecules/Slider/SliderProgress.cjs +0 -49
- package/molecules/Slider/SliderProgress.cjs.map +0 -7
- package/molecules/Slider/index.cjs +0 -28
- package/molecules/Slider/index.cjs.map +0 -7
- package/molecules/Sticky/Sticky.cjs +0 -177
- package/molecules/Sticky/Sticky.cjs.map +0 -7
- package/molecules/Sticky/index.cjs +0 -21
- package/molecules/Sticky/index.cjs.map +0 -7
- package/molecules/TableOfContent/TableOfContent.cjs +0 -72
- package/molecules/TableOfContent/TableOfContent.cjs.map +0 -7
- package/molecules/TableOfContent/TableOfContentAnchor.cjs +0 -76
- package/molecules/TableOfContent/TableOfContentAnchor.cjs.map +0 -7
- package/molecules/TableOfContent/index.cjs +0 -22
- package/molecules/TableOfContent/index.cjs.map +0 -7
- package/molecules/Tabs/Tabs.cjs +0 -153
- package/molecules/Tabs/Tabs.cjs.map +0 -7
- package/molecules/Tabs/index.cjs +0 -21
- package/molecules/Tabs/index.cjs.map +0 -7
- package/molecules/index.cjs +0 -30
- package/molecules/index.cjs.map +0 -7
- package/organisms/Frame/Frame.cjs +0 -220
- package/organisms/Frame/Frame.cjs.map +0 -7
- package/organisms/Frame/FrameAnchor.cjs +0 -41
- package/organisms/Frame/FrameAnchor.cjs.map +0 -7
- package/organisms/Frame/FrameForm.cjs +0 -41
- package/organisms/Frame/FrameForm.cjs.map +0 -7
- package/organisms/Frame/FrameTarget.cjs +0 -114
- package/organisms/Frame/FrameTarget.cjs.map +0 -7
- package/organisms/Frame/index.cjs +0 -24
- package/organisms/Frame/index.cjs.map +0 -7
- package/organisms/index.cjs +0 -21
- package/organisms/index.cjs.map +0 -7
- package/primitives/Draggable/Draggable.cjs +0 -65
- package/primitives/Draggable/Draggable.cjs.map +0 -7
- package/primitives/Draggable/index.cjs +0 -21
- package/primitives/Draggable/index.cjs.map +0 -7
- package/primitives/Sentinel/Sentinel.cjs +0 -35
- package/primitives/Sentinel/Sentinel.cjs.map +0 -7
- package/primitives/Sentinel/index.cjs +0 -21
- package/primitives/Sentinel/index.cjs.map +0 -7
- package/primitives/Transition/Transition.cjs +0 -36
- package/primitives/Transition/Transition.cjs.map +0 -7
- package/primitives/Transition/index.cjs +0 -21
- package/primitives/Transition/index.cjs.map +0 -7
- package/primitives/index.cjs +0 -23
- package/primitives/index.cjs.map +0 -7
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
-
|
|
29
|
-
// packages/ui/molecules/Accordion/AccordionItem.ts
|
|
30
|
-
var AccordionItem_exports = {};
|
|
31
|
-
__export(AccordionItem_exports, {
|
|
32
|
-
AccordionItem: () => AccordionItem
|
|
33
|
-
});
|
|
34
|
-
module.exports = __toCommonJS(AccordionItem_exports);
|
|
35
|
-
var import_deepmerge = __toESM(require("deepmerge"), 1);
|
|
36
|
-
var import_js_toolkit = require("@studiometa/js-toolkit");
|
|
37
|
-
var import_utils = require("@studiometa/js-toolkit/utils");
|
|
38
|
-
var import_AccordionCore = require("./AccordionCore.cjs");
|
|
39
|
-
var AccordionItem = class _AccordionItem extends import_js_toolkit.Base {
|
|
40
|
-
/**
|
|
41
|
-
* Config.
|
|
42
|
-
*/
|
|
43
|
-
static config = {
|
|
44
|
-
name: "AccordionItem",
|
|
45
|
-
refs: ["btn", "content", "container"],
|
|
46
|
-
emits: ["open", "close"],
|
|
47
|
-
options: {
|
|
48
|
-
isOpen: Boolean,
|
|
49
|
-
styles: {
|
|
50
|
-
type: Object,
|
|
51
|
-
default: () => ({
|
|
52
|
-
container: {
|
|
53
|
-
open: "",
|
|
54
|
-
active: "",
|
|
55
|
-
closed: ""
|
|
56
|
-
}
|
|
57
|
-
}),
|
|
58
|
-
merge: true
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
/**
|
|
63
|
-
* Add aria-attributes on mounted.
|
|
64
|
-
*/
|
|
65
|
-
mounted() {
|
|
66
|
-
if (this.$parent && this.$parent instanceof import_AccordionCore.AccordionCore && this.$parent.$options.item) {
|
|
67
|
-
Object.entries(this.$parent.$options.item).forEach(([key, value]) => {
|
|
68
|
-
if (key in this.$options) {
|
|
69
|
-
const type = _AccordionItem.config.options[key].type ?? _AccordionItem.config.options[key];
|
|
70
|
-
if (type === Array || type === Object) {
|
|
71
|
-
this.$options[key] = (0, import_deepmerge.default)(
|
|
72
|
-
this.$options[key],
|
|
73
|
-
/** @type {any} */
|
|
74
|
-
value
|
|
75
|
-
);
|
|
76
|
-
} else {
|
|
77
|
-
this.$options[key] = value;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
this.$refs.btn.setAttribute("id", this.$id);
|
|
83
|
-
this.$refs.btn.setAttribute("aria-controls", this.contentId);
|
|
84
|
-
this.$refs.content.setAttribute("aria-labelledby", this.$id);
|
|
85
|
-
this.$refs.content.setAttribute("id", this.contentId);
|
|
86
|
-
const { isOpen } = this.$options;
|
|
87
|
-
this.updateAttributes(isOpen);
|
|
88
|
-
const { container, ...otherStyles } = this.$options.styles;
|
|
89
|
-
const { $refs } = this;
|
|
90
|
-
Object.entries(otherStyles).filter(([refName]) => $refs[refName]).forEach(([refName, { open, closed } = { open: "", closed: "" }]) => {
|
|
91
|
-
(0, import_utils.transition)($refs[refName], { to: isOpen ? open : closed }, "keep");
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Remove styles on destroy.
|
|
96
|
-
*/
|
|
97
|
-
destroyed() {
|
|
98
|
-
this.$refs.container.style.visibility = "";
|
|
99
|
-
this.$refs.container.style.height = "";
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Handler for the click event on the `btn` ref.
|
|
103
|
-
*/
|
|
104
|
-
onBtnClick() {
|
|
105
|
-
if (this.$options.isOpen) {
|
|
106
|
-
this.close();
|
|
107
|
-
} else {
|
|
108
|
-
this.open();
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Get the content ID.
|
|
113
|
-
*/
|
|
114
|
-
get contentId() {
|
|
115
|
-
return `content-${this.$id}`;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Update the refs' attributes according to the given type.
|
|
119
|
-
*/
|
|
120
|
-
updateAttributes(isOpen) {
|
|
121
|
-
this.$refs.container.style.visibility = isOpen ? "" : "invisible";
|
|
122
|
-
this.$refs.container.style.height = isOpen ? "" : "0";
|
|
123
|
-
this.$refs.content.setAttribute("aria-hidden", isOpen ? "false" : "true");
|
|
124
|
-
this.$refs.btn.setAttribute("aria-expanded", isOpen ? "true" : "false");
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Open an item.
|
|
128
|
-
*/
|
|
129
|
-
async open() {
|
|
130
|
-
if (this.$options.isOpen) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
this.$log("open");
|
|
134
|
-
this.$emit("open");
|
|
135
|
-
this.$options.isOpen = true;
|
|
136
|
-
this.updateAttributes(this.$options.isOpen);
|
|
137
|
-
this.$refs.container.style.visibility = "";
|
|
138
|
-
const { container, ...otherStyles } = this.$options.styles;
|
|
139
|
-
const { $refs } = this;
|
|
140
|
-
await Promise.all([
|
|
141
|
-
(0, import_utils.transition)($refs.container, {
|
|
142
|
-
from: { height: "0" },
|
|
143
|
-
active: container.active,
|
|
144
|
-
to: { height: `${$refs.content.offsetHeight}px` }
|
|
145
|
-
}).then(() => {
|
|
146
|
-
if (this.$options.isOpen) {
|
|
147
|
-
$refs.content.style.position = "";
|
|
148
|
-
}
|
|
149
|
-
return Promise.resolve();
|
|
150
|
-
}),
|
|
151
|
-
...Object.entries(otherStyles).filter(([refName]) => $refs[refName]).map(
|
|
152
|
-
([refName, { open, active, closed } = { open: "", active: "", closed: "" }]) => (0, import_utils.transition)(
|
|
153
|
-
$refs[refName],
|
|
154
|
-
{
|
|
155
|
-
from: closed,
|
|
156
|
-
active,
|
|
157
|
-
to: open
|
|
158
|
-
},
|
|
159
|
-
"keep"
|
|
160
|
-
)
|
|
161
|
-
)
|
|
162
|
-
]);
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Close an item.
|
|
166
|
-
*/
|
|
167
|
-
async close() {
|
|
168
|
-
if (!this.$options.isOpen) {
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
this.$log("close");
|
|
172
|
-
this.$emit("close");
|
|
173
|
-
this.$options.isOpen = false;
|
|
174
|
-
const height = this.$refs.container.offsetHeight;
|
|
175
|
-
this.$refs.content.style.position = "absolute";
|
|
176
|
-
const { container, ...otherStyles } = this.$options.styles;
|
|
177
|
-
const refs = this.$refs;
|
|
178
|
-
await Promise.all([
|
|
179
|
-
(0, import_utils.transition)(refs.container, {
|
|
180
|
-
from: { height: `${height}px` },
|
|
181
|
-
active: container.active,
|
|
182
|
-
to: { height: "0" }
|
|
183
|
-
}).then(() => {
|
|
184
|
-
if (!this.$options.isOpen) {
|
|
185
|
-
refs.container.style.height = "0";
|
|
186
|
-
refs.container.style.visibility = "invisible";
|
|
187
|
-
this.updateAttributes(this.$options.isOpen);
|
|
188
|
-
}
|
|
189
|
-
return Promise.resolve();
|
|
190
|
-
}),
|
|
191
|
-
...Object.entries(otherStyles).filter(([refName]) => refs[refName]).map(
|
|
192
|
-
([refName, { open, active, closed } = { open: "", active: "", closed: "" }]) => (0, import_utils.transition)(
|
|
193
|
-
refs[refName],
|
|
194
|
-
{
|
|
195
|
-
from: open,
|
|
196
|
-
active,
|
|
197
|
-
to: closed
|
|
198
|
-
},
|
|
199
|
-
"keep"
|
|
200
|
-
)
|
|
201
|
-
)
|
|
202
|
-
]);
|
|
203
|
-
}
|
|
204
|
-
};
|
|
205
|
-
if (module.exports.default) module.exports = module.exports.default;
|
|
206
|
-
//# sourceMappingURL=AccordionItem.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 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<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": "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",
|
|
6
|
-
"names": ["Accordion", "deepmerge"]
|
|
7
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __copyProps = (to, from, except, desc) => {
|
|
6
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
-
for (let key of __getOwnPropNames(from))
|
|
8
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
-
}
|
|
11
|
-
return to;
|
|
12
|
-
};
|
|
13
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
|
|
16
|
-
// packages/ui/molecules/Accordion/index.ts
|
|
17
|
-
var Accordion_exports = {};
|
|
18
|
-
module.exports = __toCommonJS(Accordion_exports);
|
|
19
|
-
__reExport(Accordion_exports, require("./Accordion.cjs"), module.exports);
|
|
20
|
-
__reExport(Accordion_exports, require("./AccordionItem.cjs"), module.exports);
|
|
21
|
-
if (module.exports.default) module.exports = module.exports.default;
|
|
22
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../packages/ui/molecules/Accordion/index.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './Accordion.js';\nexport * from './AccordionItem.js';\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,8BAAc,4BAAd;AACA,8BAAc,gCADd;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
|
|
19
|
-
// packages/ui/molecules/AnchorNav/AnchorNav.ts
|
|
20
|
-
var AnchorNav_exports = {};
|
|
21
|
-
__export(AnchorNav_exports, {
|
|
22
|
-
AnchorNav: () => AnchorNav
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(AnchorNav_exports);
|
|
25
|
-
var import_js_toolkit = require("@studiometa/js-toolkit");
|
|
26
|
-
var import_AnchorNavLink = require("./AnchorNavLink.cjs");
|
|
27
|
-
var import_AnchorNavTarget = require("./AnchorNavTarget.cjs");
|
|
28
|
-
var AnchorNav = class extends import_js_toolkit.Base {
|
|
29
|
-
/**
|
|
30
|
-
* Config
|
|
31
|
-
*/
|
|
32
|
-
static config = {
|
|
33
|
-
name: "AnchorNav",
|
|
34
|
-
components: {
|
|
35
|
-
AnchorNavLink: import_AnchorNavLink.AnchorNavLink,
|
|
36
|
-
AnchorNavTarget: import_AnchorNavTarget.AnchorNavTarget
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
/**
|
|
40
|
-
* Listen to the AnchorNavTarget that is mounted
|
|
41
|
-
*/
|
|
42
|
-
onAnchorNavTargetMounted(index) {
|
|
43
|
-
const { id } = this.$children.AnchorNavTarget[index].$el;
|
|
44
|
-
this.$children.AnchorNavLink.forEach((anchorNavLink) => {
|
|
45
|
-
if (id === anchorNavLink.targetId) {
|
|
46
|
-
anchorNavLink.enter();
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Listen to the AnchorNavTarget that is destroyed
|
|
52
|
-
*/
|
|
53
|
-
onAnchorNavTargetDestroyed(index) {
|
|
54
|
-
const { id } = this.$children.AnchorNavTarget[index].$el;
|
|
55
|
-
this.$children.AnchorNavLink.forEach((anchorNavLink) => {
|
|
56
|
-
if (id === anchorNavLink.targetId) {
|
|
57
|
-
anchorNavLink.leave();
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
if (module.exports.default) module.exports = module.exports.default;
|
|
63
|
-
//# sourceMappingURL=AnchorNav.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../packages/ui/molecules/AnchorNav/AnchorNav.ts"],
|
|
4
|
-
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { AnchorNavLink } from './AnchorNavLink.js';\nimport { AnchorNavTarget } from './AnchorNavTarget.js';\n\nexport interface AnchorNavProps extends BaseProps {\n $children: {\n AnchorNavLink: AnchorNavLink[];\n AnchorNavTarget: AnchorNavTarget[];\n };\n}\n\nexport class AnchorNav<T extends BaseProps = BaseProps> extends Base<T & AnchorNavProps> {\n /**\n * Config\n */\n static config: BaseConfig = {\n name: 'AnchorNav',\n components: {\n AnchorNavLink,\n AnchorNavTarget,\n },\n };\n\n /**\n * Listen to the AnchorNavTarget that is mounted\n */\n onAnchorNavTargetMounted(index) {\n const { id } = this.$children.AnchorNavTarget[index].$el;\n this.$children.AnchorNavLink.forEach((anchorNavLink) => {\n if (id === anchorNavLink.targetId) {\n anchorNavLink.enter();\n }\n });\n }\n\n /**\n * Listen to the AnchorNavTarget that is destroyed\n */\n onAnchorNavTargetDestroyed(index) {\n const { id } = this.$children.AnchorNavTarget[index].$el;\n this.$children.AnchorNavLink.forEach((anchorNavLink) => {\n if (id === anchorNavLink.targetId) {\n anchorNavLink.leave();\n }\n });\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAqB;AAErB,2BAA8B;AAC9B,6BAAgC;AASzB,IAAM,YAAN,cAAyD,uBAAyB;AAAA;AAAA;AAAA;AAAA,EAIvF,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,IACN,YAAY;AAAA,MACV;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,yBAAyB,OAAO;AAC9B,UAAM,EAAE,GAAG,IAAI,KAAK,UAAU,gBAAgB,KAAK,EAAE;AACrD,SAAK,UAAU,cAAc,QAAQ,CAAC,kBAAkB;AACtD,UAAI,OAAO,cAAc,UAAU;AACjC,sBAAc,MAAM;AAAA,MACtB;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,2BAA2B,OAAO;AAChC,UAAM,EAAE,GAAG,IAAI,KAAK,UAAU,gBAAgB,KAAK,EAAE;AACrD,SAAK,UAAU,cAAc,QAAQ,CAAC,kBAAkB;AACtD,UAAI,OAAO,cAAc,UAAU;AACjC,sBAAc,MAAM;AAAA,MACtB;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
|
|
19
|
-
// packages/ui/molecules/AnchorNav/AnchorNavLink.ts
|
|
20
|
-
var AnchorNavLink_exports = {};
|
|
21
|
-
__export(AnchorNavLink_exports, {
|
|
22
|
-
AnchorNavLink: () => AnchorNavLink
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(AnchorNavLink_exports);
|
|
25
|
-
var import_AnchorScrollTo = require("../../atoms/AnchorScrollTo/AnchorScrollTo.cjs");
|
|
26
|
-
var import_decorators = require("../../decorators/index.cjs");
|
|
27
|
-
var AnchorNavLink = class extends (0, import_decorators.withTransition)(import_AnchorScrollTo.AnchorScrollTo) {
|
|
28
|
-
/**
|
|
29
|
-
* Config.
|
|
30
|
-
*/
|
|
31
|
-
static config = {
|
|
32
|
-
...import_AnchorScrollTo.AnchorScrollTo.config,
|
|
33
|
-
name: "AnchorNavLink"
|
|
34
|
-
};
|
|
35
|
-
get targetId() {
|
|
36
|
-
return this.$el.hash.replace(/^#/, "");
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
if (module.exports.default) module.exports = module.exports.default;
|
|
40
|
-
//# sourceMappingURL=AnchorNavLink.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../packages/ui/molecules/AnchorNav/AnchorNavLink.ts"],
|
|
4
|
-
"sourcesContent": ["import type { BaseConfig } from '@studiometa/js-toolkit';\nimport { AnchorScrollTo, AnchorScrollToProps } from '../../atoms/AnchorScrollTo/AnchorScrollTo.js';\nimport { withTransition } from '../../decorators/index.js';\n\nexport interface AnchorNavLinkProps extends AnchorScrollToProps {\n $options: {\n id: string;\n };\n}\n\n/**\n * Manage a slider item and its state transition.\n */\nexport class AnchorNavLink extends withTransition(AnchorScrollTo)<AnchorNavLinkProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...AnchorScrollTo.config,\n name: 'AnchorNavLink',\n };\n\n get targetId() {\n return this.$el.hash.replace(/^#/, '');\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,4BAAoD;AACpD,wBAA+B;AAWxB,IAAM,gBAAN,kBAA4B,kCAAe,oCAAc,EAAsB;AAAA;AAAA;AAAA;AAAA,EAIpF,OAAO,SAAqB;AAAA,IAC1B,GAAG,qCAAe;AAAA,IAClB,MAAM;AAAA,EACR;AAAA,EAEA,IAAI,WAAW;AACb,WAAO,KAAK,IAAI,KAAK,QAAQ,MAAM,EAAE;AAAA,EACvC;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
|
|
19
|
-
// packages/ui/molecules/AnchorNav/AnchorNavTarget.ts
|
|
20
|
-
var AnchorNavTarget_exports = {};
|
|
21
|
-
__export(AnchorNavTarget_exports, {
|
|
22
|
-
AnchorNavTarget: () => AnchorNavTarget
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(AnchorNavTarget_exports);
|
|
25
|
-
var import_js_toolkit = require("@studiometa/js-toolkit");
|
|
26
|
-
var AnchorNavTarget = class extends (0, import_js_toolkit.withMountWhenInView)(import_js_toolkit.Base) {
|
|
27
|
-
/**
|
|
28
|
-
* Config.
|
|
29
|
-
*/
|
|
30
|
-
static config = {
|
|
31
|
-
name: "AnchorNavTarget"
|
|
32
|
-
};
|
|
33
|
-
};
|
|
34
|
-
if (module.exports.default) module.exports = module.exports.default;
|
|
35
|
-
//# sourceMappingURL=AnchorNavTarget.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../packages/ui/molecules/AnchorNav/AnchorNavTarget.ts"],
|
|
4
|
-
"sourcesContent": ["import { Base, withMountWhenInView } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\n\n/**\n * Manage a sticky table section.\n */\nexport class AnchorNavTarget extends withMountWhenInView(Base)<BaseProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'AnchorNavTarget',\n };\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA0C;AAMnC,IAAM,kBAAN,kBAA8B,uCAAoB,sBAAI,EAAa;AAAA;AAAA;AAAA;AAAA,EAIxE,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,EACR;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __copyProps = (to, from, except, desc) => {
|
|
6
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
-
for (let key of __getOwnPropNames(from))
|
|
8
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
-
}
|
|
11
|
-
return to;
|
|
12
|
-
};
|
|
13
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
|
|
16
|
-
// packages/ui/molecules/AnchorNav/index.ts
|
|
17
|
-
var AnchorNav_exports = {};
|
|
18
|
-
module.exports = __toCommonJS(AnchorNav_exports);
|
|
19
|
-
__reExport(AnchorNav_exports, require("./AnchorNav.cjs"), module.exports);
|
|
20
|
-
__reExport(AnchorNav_exports, require("./AnchorNavLink.cjs"), module.exports);
|
|
21
|
-
__reExport(AnchorNav_exports, require("./AnchorNavTarget.cjs"), module.exports);
|
|
22
|
-
if (module.exports.default) module.exports = module.exports.default;
|
|
23
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../packages/ui/molecules/AnchorNav/index.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './AnchorNav.js';\nexport * from './AnchorNavLink.js';\nexport * from './AnchorNavTarget.js';\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,8BAAc,4BAAd;AACA,8BAAc,gCADd;AAEA,8BAAc,kCAFd;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/molecules/Menu/Menu.cjs
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
|
|
19
|
-
// packages/ui/molecules/Menu/Menu.ts
|
|
20
|
-
var Menu_exports = {};
|
|
21
|
-
__export(Menu_exports, {
|
|
22
|
-
Menu: () => Menu
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(Menu_exports);
|
|
25
|
-
var import_js_toolkit = require("@studiometa/js-toolkit");
|
|
26
|
-
var import_utils = require("@studiometa/js-toolkit/utils");
|
|
27
|
-
var import_MenuBtn = require("./MenuBtn.cjs");
|
|
28
|
-
var import_MenuList = require("./MenuList.cjs");
|
|
29
|
-
var Menu = class _Menu extends import_js_toolkit.Base {
|
|
30
|
-
/**
|
|
31
|
-
* Config.
|
|
32
|
-
*/
|
|
33
|
-
static config = {
|
|
34
|
-
name: "Menu",
|
|
35
|
-
components: {
|
|
36
|
-
MenuBtn: import_MenuBtn.MenuBtn,
|
|
37
|
-
MenuList: import_MenuList.MenuList,
|
|
38
|
-
Menu: _Menu
|
|
39
|
-
},
|
|
40
|
-
options: {
|
|
41
|
-
mode: {
|
|
42
|
-
type: String,
|
|
43
|
-
default: "click"
|
|
44
|
-
// or 'hover'
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* Get the first `MenuList` instance.
|
|
50
|
-
*/
|
|
51
|
-
get menuList() {
|
|
52
|
-
return (0, import_js_toolkit.getDirectChildren)(this, "Menu", "MenuList")[0];
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Get the first `MenuBtn` instance.
|
|
56
|
-
*/
|
|
57
|
-
get menuBtn() {
|
|
58
|
-
return (0, import_js_toolkit.getDirectChildren)(this, "Menu", "MenuBtn")[0];
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Test which mode to use.
|
|
62
|
-
*/
|
|
63
|
-
get shouldReactOnClick() {
|
|
64
|
-
return this.$options.mode === "click";
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Wether the button or the items are hovered.
|
|
68
|
-
*/
|
|
69
|
-
get isHover() {
|
|
70
|
-
return this.menuBtn.isHover || this.menuList.isHover;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Set attributes on mounted, destroy the component if it is missing required
|
|
74
|
-
* child components.
|
|
75
|
-
*/
|
|
76
|
-
mounted() {
|
|
77
|
-
if (!this.menuBtn || !this.menuList) {
|
|
78
|
-
this.$destroy();
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
this.menuBtn.$el.setAttribute("aria-controls", this.$id);
|
|
82
|
-
this.menuList.$el.setAttribute("id", this.$id);
|
|
83
|
-
this.menuList.close();
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Keyboard management.
|
|
87
|
-
*/
|
|
88
|
-
keyed({ ENTER, ESC, isUp }) {
|
|
89
|
-
if (!isUp) {
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
if (ESC) {
|
|
93
|
-
this.close();
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
if (!this.shouldReactOnClick) {
|
|
97
|
-
const hasFocusElementWithin = document.activeElement === this.menuBtn.$el;
|
|
98
|
-
if (ENTER && hasFocusElementWithin) {
|
|
99
|
-
this.toggle();
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Toggle menu items on button click.
|
|
105
|
-
*/
|
|
106
|
-
onMenuBtnClick(index, event) {
|
|
107
|
-
if ((0, import_js_toolkit.isDirectChild)(this, "Menu", "MenuBtn", this.$children.MenuBtn[index]) && this.shouldReactOnClick) {
|
|
108
|
-
event.preventDefault();
|
|
109
|
-
this.toggle();
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Open menu items on button mouse enter.
|
|
114
|
-
*/
|
|
115
|
-
onMenuBtnMouseenter(index) {
|
|
116
|
-
if (this.$children.MenuBtn[index] === this.menuBtn && !this.shouldReactOnClick) {
|
|
117
|
-
this.open();
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Close menu items on button mouse leave.
|
|
122
|
-
*/
|
|
123
|
-
onMenuBtnMouseleave() {
|
|
124
|
-
if (this.shouldReactOnClick) {
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
(0, import_utils.nextTick)(() => {
|
|
128
|
-
if (!this.isHover) {
|
|
129
|
-
this.close();
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Close menu items on button mouse leave.
|
|
135
|
-
*/
|
|
136
|
-
onMenuListMouseleave() {
|
|
137
|
-
if (this.shouldReactOnClick) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
(0, import_utils.nextTick)(() => {
|
|
141
|
-
if (!this.isHover) {
|
|
142
|
-
this.close();
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Close other non-parent menu items on menu items open.
|
|
148
|
-
*/
|
|
149
|
-
onMenuListItemsOpen(index) {
|
|
150
|
-
const targetMenu = this.$children.MenuList[index];
|
|
151
|
-
this.$children.MenuList.forEach((menuItem) => {
|
|
152
|
-
if (!menuItem.$el.contains(targetMenu.$el)) {
|
|
153
|
-
menuItem.close();
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Close the menu.
|
|
159
|
-
*/
|
|
160
|
-
close() {
|
|
161
|
-
this.menuList.close();
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Open the menu.
|
|
165
|
-
*/
|
|
166
|
-
open() {
|
|
167
|
-
this.menuList.open();
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Toggle the menu.
|
|
171
|
-
*/
|
|
172
|
-
toggle() {
|
|
173
|
-
this.menuList.toggle();
|
|
174
|
-
}
|
|
175
|
-
};
|
|
176
|
-
if (module.exports.default) module.exports = module.exports.default;
|
|
177
|
-
//# sourceMappingURL=Menu.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../packages/ui/molecules/Menu/Menu.ts"],
|
|
4
|
-
"sourcesContent": ["import { Base, isDirectChild, getDirectChildren } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps, KeyServiceProps } from '@studiometa/js-toolkit';\nimport { nextTick } from '@studiometa/js-toolkit/utils';\nimport { MenuBtn } from './MenuBtn.js';\nimport { MenuList } from './MenuList.js';\n\nexport interface MenuProps extends BaseProps {\n $children: {\n // eslint-disable-next-line no-use-before-define\n Menu: Menu[];\n MenutBtn: MenuBtn[];\n MenuList: MenuList[];\n };\n $options: {\n mode: 'click' | 'hover';\n };\n}\n\n/**\n * Menu class.\n */\nexport class Menu<T extends BaseProps = BaseProps> extends Base<T & MenuProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'Menu',\n components: {\n MenuBtn,\n MenuList,\n Menu,\n },\n options: {\n mode: {\n type: String,\n default: 'click', // or 'hover'\n },\n },\n };\n\n /**\n * Get the first `MenuList` instance.\n */\n get menuList(): MenuList {\n return getDirectChildren<MenuList>(this, 'Menu', 'MenuList')[0];\n }\n\n /**\n * Get the first `MenuBtn` instance.\n */\n get menuBtn(): MenuBtn {\n return getDirectChildren<MenuBtn>(this, 'Menu', 'MenuBtn')[0];\n }\n\n /**\n * Test which mode to use.\n */\n get shouldReactOnClick(): boolean {\n return this.$options.mode === 'click';\n }\n\n /**\n * Wether the button or the items are hovered.\n */\n get isHover(): boolean {\n return this.menuBtn.isHover || this.menuList.isHover;\n }\n\n /**\n * Set attributes on mounted, destroy the component if it is missing required\n * child components.\n */\n mounted() {\n if (!this.menuBtn || !this.menuList) {\n this.$destroy();\n return;\n }\n\n this.menuBtn.$el.setAttribute('aria-controls', this.$id);\n this.menuList.$el.setAttribute('id', this.$id);\n this.menuList.close();\n }\n\n /**\n * Keyboard management.\n */\n keyed({ ENTER, ESC, isUp }: KeyServiceProps) {\n if (!isUp) {\n return;\n }\n\n if (ESC) {\n this.close();\n return;\n }\n\n if (!this.shouldReactOnClick) {\n const hasFocusElementWithin = document.activeElement === this.menuBtn.$el;\n\n if (ENTER && hasFocusElementWithin) {\n this.toggle();\n }\n }\n }\n\n /**\n * Toggle menu items on button click.\n */\n onMenuBtnClick(index: number, event: MouseEvent) {\n if (\n isDirectChild(this, 'Menu', 'MenuBtn', this.$children.MenuBtn[index]) &&\n this.shouldReactOnClick\n ) {\n event.preventDefault();\n this.toggle();\n }\n }\n\n /**\n * Open menu items on button mouse enter.\n */\n onMenuBtnMouseenter(index: number) {\n if (this.$children.MenuBtn[index] === this.menuBtn && !this.shouldReactOnClick) {\n this.open();\n }\n }\n\n /**\n * Close menu items on button mouse leave.\n */\n onMenuBtnMouseleave() {\n if (this.shouldReactOnClick) {\n return;\n }\n\n nextTick(() => {\n if (!this.isHover) {\n this.close();\n }\n });\n }\n\n /**\n * Close menu items on button mouse leave.\n */\n onMenuListMouseleave() {\n if (this.shouldReactOnClick) {\n return;\n }\n\n nextTick(() => {\n if (!this.isHover) {\n this.close();\n }\n });\n }\n\n /**\n * Close other non-parent menu items on menu items open.\n */\n onMenuListItemsOpen(index: number) {\n const targetMenu = this.$children.MenuList[index];\n this.$children.MenuList.forEach((menuItem) => {\n if (!menuItem.$el.contains(targetMenu.$el)) {\n menuItem.close();\n }\n });\n }\n\n /**\n * Close the menu.\n */\n close() {\n this.menuList.close();\n }\n\n /**\n * Open the menu.\n */\n open() {\n this.menuList.open();\n }\n\n /**\n * Toggle the menu.\n */\n toggle() {\n this.menuList.toggle();\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|