@studiometa/ui 0.2.46 → 0.2.48
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/atoms/Action/Action.cjs +12 -17
- package/atoms/Action/Action.cjs.map +1 -1
- package/atoms/Action/Action.js.map +1 -1
- package/atoms/AnchorScrollTo/AnchorScrollTo.cjs +3 -8
- package/atoms/AnchorScrollTo/AnchorScrollTo.cjs.map +1 -1
- package/atoms/AnchorScrollTo/AnchorScrollTo.js.map +1 -1
- package/atoms/CircularMarquee/CircularMarquee.cjs +12 -17
- package/atoms/CircularMarquee/CircularMarquee.cjs.map +1 -1
- package/atoms/Cursor/Cursor.cjs +37 -42
- package/atoms/Cursor/Cursor.cjs.map +1 -1
- package/atoms/Cursor/Cursor.js.map +1 -1
- package/atoms/Figure/Figure.cjs +13 -18
- package/atoms/Figure/Figure.cjs.map +1 -1
- package/atoms/Figure/FigureTwicpics.cjs +26 -31
- package/atoms/Figure/FigureTwicpics.cjs.map +1 -1
- package/atoms/Figure/FigureTwicpics.js.map +1 -1
- package/atoms/FigureVideo/FigureVideo.cjs +132 -0
- package/atoms/FigureVideo/FigureVideo.cjs.map +7 -0
- package/atoms/FigureVideo/FigureVideo.d.ts +51 -0
- package/atoms/FigureVideo/FigureVideo.js +110 -0
- package/atoms/FigureVideo/FigureVideo.js.map +7 -0
- package/atoms/FigureVideo/FigureVideo.twig +152 -0
- package/atoms/FigureVideo/FigureVideoTwicpics.cjs +153 -0
- package/atoms/FigureVideo/FigureVideoTwicpics.cjs.map +7 -0
- package/atoms/FigureVideo/FigureVideoTwicpics.d.ts +57 -0
- package/atoms/FigureVideo/FigureVideoTwicpics.js +135 -0
- package/atoms/FigureVideo/FigureVideoTwicpics.js.map +7 -0
- package/atoms/FigureVideo/FigureVideoTwicpics.twig +98 -0
- package/atoms/FigureVideo/index.cjs +22 -0
- package/atoms/FigureVideo/index.cjs.map +7 -0
- package/atoms/FigureVideo/index.d.ts +2 -0
- package/atoms/FigureVideo/index.js +3 -0
- package/atoms/FigureVideo/index.js.map +7 -0
- package/atoms/LargeText/LargeText.cjs +18 -23
- package/atoms/LargeText/LargeText.cjs.map +1 -1
- package/atoms/LazyInclude/LazyInclude.cjs +12 -17
- package/atoms/LazyInclude/LazyInclude.cjs.map +1 -1
- package/atoms/Prefetch/AbstractPrefetch.cjs +17 -23
- package/atoms/Prefetch/AbstractPrefetch.cjs.map +1 -1
- package/atoms/Prefetch/PrefetchWhenOver.cjs +7 -12
- package/atoms/Prefetch/PrefetchWhenOver.cjs.map +1 -1
- package/atoms/Prefetch/PrefetchWhenVisible.cjs +7 -12
- package/atoms/Prefetch/PrefetchWhenVisible.cjs.map +1 -1
- package/atoms/ScrollAnimation/AbstractScrollAnimation.cjs +27 -32
- package/atoms/ScrollAnimation/AbstractScrollAnimation.cjs.map +1 -1
- package/atoms/ScrollAnimation/AbstractScrollAnimation.d.ts +1 -1
- package/atoms/ScrollAnimation/ScrollAnimation.cjs +8 -13
- package/atoms/ScrollAnimation/ScrollAnimation.cjs.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationChild.cjs +18 -23
- package/atoms/ScrollAnimation/ScrollAnimationChild.cjs.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.cjs +7 -12
- package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.cjs.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationChildWithEase.d.ts +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationParent.cjs +9 -14
- package/atoms/ScrollAnimation/ScrollAnimationParent.cjs.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.cjs +7 -12
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.cjs.map +1 -1
- package/atoms/ScrollAnimation/ScrollAnimationWithEase.d.ts +1 -1
- package/atoms/ScrollAnimation/animationScrollWithEase.cjs.map +1 -1
- package/atoms/ScrollAnimation/animationScrollWithEase.js.map +1 -1
- package/atoms/ScrollReveal/ScrollReveal.cjs +25 -31
- package/atoms/ScrollReveal/ScrollReveal.cjs.map +1 -1
- package/atoms/index.cjs +1 -0
- package/atoms/index.cjs.map +2 -2
- package/atoms/index.d.ts +1 -0
- package/atoms/index.js +1 -0
- package/atoms/index.js.map +2 -2
- package/decorators/index.cjs +1 -0
- package/decorators/index.cjs.map +2 -2
- package/decorators/index.d.ts +1 -0
- package/decorators/index.js +1 -0
- package/decorators/index.js.map +2 -2
- package/decorators/withDeprecation.cjs +47 -0
- package/decorators/withDeprecation.cjs.map +7 -0
- package/decorators/withDeprecation.d.ts +9 -0
- package/decorators/withDeprecation.js +25 -0
- package/decorators/withDeprecation.js.map +7 -0
- package/decorators/withTransition.cjs.map +1 -1
- package/decorators/withTransition.js.map +1 -1
- package/molecules/Accordion/Accordion.cjs +6 -11
- package/molecules/Accordion/Accordion.cjs.map +1 -1
- package/molecules/Accordion/AccordionCore.cjs +14 -19
- package/molecules/Accordion/AccordionCore.cjs.map +1 -1
- package/molecules/Accordion/AccordionItem.cjs +23 -29
- package/molecules/Accordion/AccordionItem.cjs.map +1 -1
- package/molecules/Accordion/AccordionItem.js.map +1 -1
- package/molecules/AnchorNav/AnchorNav.cjs +63 -0
- package/molecules/AnchorNav/AnchorNav.cjs.map +7 -0
- package/molecules/AnchorNav/AnchorNav.d.ts +24 -0
- package/molecules/AnchorNav/AnchorNav.js +41 -0
- package/molecules/AnchorNav/AnchorNav.js.map +7 -0
- package/molecules/AnchorNav/AnchorNavLink.cjs +40 -0
- package/molecules/AnchorNav/AnchorNavLink.cjs.map +7 -0
- package/molecules/AnchorNav/AnchorNavLink.d.ts +19 -0
- package/molecules/AnchorNav/AnchorNavLink.js +18 -0
- package/molecules/AnchorNav/AnchorNavLink.js.map +7 -0
- package/molecules/AnchorNav/AnchorNavTarget.cjs +35 -0
- package/molecules/AnchorNav/AnchorNavTarget.cjs.map +7 -0
- package/molecules/AnchorNav/AnchorNavTarget.d.ts +13 -0
- package/molecules/AnchorNav/AnchorNavTarget.js +13 -0
- package/molecules/AnchorNav/AnchorNavTarget.js.map +7 -0
- package/molecules/AnchorNav/index.cjs +23 -0
- package/molecules/AnchorNav/index.cjs.map +7 -0
- package/molecules/AnchorNav/index.d.ts +3 -0
- package/molecules/AnchorNav/index.js +4 -0
- package/molecules/AnchorNav/index.js.map +7 -0
- package/molecules/Menu/Menu.cjs +19 -25
- package/molecules/Menu/Menu.cjs.map +1 -1
- package/molecules/Menu/MenuBtn.cjs +6 -11
- package/molecules/Menu/MenuBtn.cjs.map +1 -1
- package/molecules/Menu/MenuList.cjs +12 -18
- package/molecules/Menu/MenuList.cjs.map +1 -1
- package/molecules/Menu/MenuList.d.ts +1 -1
- package/molecules/Modal/Modal.cjs +28 -33
- package/molecules/Modal/Modal.cjs.map +1 -1
- package/molecules/Modal/ModalWithTransition.cjs +31 -36
- package/molecules/Modal/ModalWithTransition.cjs.map +1 -1
- package/molecules/Panel/Panel.cjs +19 -25
- package/molecules/Panel/Panel.cjs.map +1 -1
- package/molecules/Slider/AbstractSliderChild.cjs +6 -11
- package/molecules/Slider/AbstractSliderChild.cjs.map +1 -1
- package/molecules/Slider/AbstractSliderChild.js.map +1 -1
- package/molecules/Slider/Slider.cjs +19 -24
- package/molecules/Slider/Slider.cjs.map +1 -1
- package/molecules/Slider/Slider.js.map +1 -1
- package/molecules/Slider/SliderBtn.cjs +11 -16
- package/molecules/Slider/SliderBtn.cjs.map +1 -1
- package/molecules/Slider/SliderBtn.js.map +1 -1
- package/molecules/Slider/SliderCount.cjs +7 -12
- package/molecules/Slider/SliderCount.cjs.map +1 -1
- package/molecules/Slider/SliderCount.js.map +1 -1
- package/molecules/Slider/SliderDots.cjs +7 -12
- package/molecules/Slider/SliderDots.cjs.map +1 -1
- package/molecules/Slider/SliderDots.d.ts +1 -1
- package/molecules/Slider/SliderDrag.cjs +13 -18
- package/molecules/Slider/SliderDrag.cjs.map +1 -1
- package/molecules/Slider/SliderDrag.d.ts +1 -1
- package/molecules/Slider/SliderItem.cjs +7 -12
- package/molecules/Slider/SliderItem.cjs.map +1 -1
- package/molecules/Slider/SliderProgress.cjs +7 -12
- package/molecules/Slider/SliderProgress.cjs.map +1 -1
- package/molecules/Sticky/Sticky.cjs +24 -30
- package/molecules/Sticky/Sticky.cjs.map +1 -1
- package/molecules/Sticky/Sticky.js.map +1 -1
- package/molecules/TableOfContent/TableOfContent.cjs +16 -20
- package/molecules/TableOfContent/TableOfContent.cjs.map +2 -2
- package/molecules/TableOfContent/TableOfContent.d.ts +4 -1
- package/molecules/TableOfContent/TableOfContent.js +2 -1
- package/molecules/TableOfContent/TableOfContent.js.map +2 -2
- package/molecules/TableOfContent/TableOfContentAnchor.cjs +18 -20
- package/molecules/TableOfContent/TableOfContentAnchor.cjs.map +2 -2
- package/molecules/TableOfContent/TableOfContentAnchor.d.ts +4 -1
- package/molecules/TableOfContent/TableOfContentAnchor.js +5 -2
- package/molecules/TableOfContent/TableOfContentAnchor.js.map +2 -2
- package/molecules/Tabs/Tabs.cjs +24 -29
- package/molecules/Tabs/Tabs.cjs.map +1 -1
- package/molecules/Tabs/Tabs.js.map +1 -1
- package/molecules/index.cjs +1 -0
- package/molecules/index.cjs.map +2 -2
- package/molecules/index.d.ts +1 -0
- package/molecules/index.js +1 -0
- package/molecules/index.js.map +2 -2
- package/organisms/Frame/Frame.cjs +46 -39
- package/organisms/Frame/Frame.cjs.map +3 -3
- package/organisms/Frame/Frame.d.ts +2 -2
- package/organisms/Frame/Frame.js +20 -7
- package/organisms/Frame/Frame.js.map +3 -3
- package/organisms/Frame/FrameAnchor.cjs +6 -11
- package/organisms/Frame/FrameAnchor.cjs.map +1 -1
- package/organisms/Frame/FrameForm.cjs +6 -11
- package/organisms/Frame/FrameForm.cjs.map +1 -1
- package/organisms/Frame/FrameTarget.cjs +25 -31
- package/organisms/Frame/FrameTarget.cjs.map +1 -1
- package/organisms/Frame/FrameTarget.d.ts +1 -1
- package/package.json +3 -3
- package/primitives/Draggable/Draggable.cjs +6 -11
- package/primitives/Draggable/Draggable.cjs.map +1 -1
- package/primitives/Draggable/Draggable.d.ts +1 -1
- package/primitives/Sentinel/Sentinel.cjs +6 -11
- package/primitives/Sentinel/Sentinel.cjs.map +1 -1
- package/primitives/Transition/Transition.cjs +6 -11
- package/primitives/Transition/Transition.cjs.map +1 -1
- package/primitives/Transition/Transition.d.ts +1 -1
|
@@ -2,7 +2,6 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
5
|
var __export = (target, all) => {
|
|
7
6
|
for (var name in all)
|
|
8
7
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -16,10 +15,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
15
|
return to;
|
|
17
16
|
};
|
|
18
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var __publicField = (obj, key, value) => {
|
|
20
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
21
|
-
return value;
|
|
22
|
-
};
|
|
23
18
|
|
|
24
19
|
// packages/ui/molecules/TableOfContent/TableOfContentAnchor.ts
|
|
25
20
|
var TableOfContentAnchor_exports = {};
|
|
@@ -28,7 +23,23 @@ __export(TableOfContentAnchor_exports, {
|
|
|
28
23
|
});
|
|
29
24
|
module.exports = __toCommonJS(TableOfContentAnchor_exports);
|
|
30
25
|
var import_atoms = require("../../atoms/index.cjs");
|
|
31
|
-
var
|
|
26
|
+
var import_withDeprecation = require("../../decorators/withDeprecation.cjs");
|
|
27
|
+
var TableOfContentAnchor = class extends (0, import_withDeprecation.withDeprecation)(
|
|
28
|
+
import_atoms.AnchorScrollTo
|
|
29
|
+
) {
|
|
30
|
+
/**
|
|
31
|
+
* Config.
|
|
32
|
+
*/
|
|
33
|
+
static config = {
|
|
34
|
+
name: "TableOfContentAnchor",
|
|
35
|
+
emits: ["should-activate"],
|
|
36
|
+
options: {
|
|
37
|
+
activeClass: {
|
|
38
|
+
type: String,
|
|
39
|
+
default: "is-active"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
};
|
|
32
43
|
/**
|
|
33
44
|
* Observer.
|
|
34
45
|
* @private
|
|
@@ -48,7 +59,7 @@ var TableOfContentAnchor = class extends import_atoms.AnchorScrollTo {
|
|
|
48
59
|
return;
|
|
49
60
|
}
|
|
50
61
|
this.__observer = new IntersectionObserver(([entry]) => {
|
|
51
|
-
const shouldActivate = entry.isIntersecting && entry.boundingClientRect.y < 100 && entry.boundingClientRect.y > 100;
|
|
62
|
+
const shouldActivate = entry.isIntersecting && entry.boundingClientRect.y < 100 && entry.boundingClientRect.y > -100;
|
|
52
63
|
this.$el.classList.toggle(this.$options.activeClass, shouldActivate);
|
|
53
64
|
this.$emit("should-activate", shouldActivate);
|
|
54
65
|
});
|
|
@@ -61,18 +72,5 @@ var TableOfContentAnchor = class extends import_atoms.AnchorScrollTo {
|
|
|
61
72
|
this.__observer.disconnect();
|
|
62
73
|
}
|
|
63
74
|
};
|
|
64
|
-
/**
|
|
65
|
-
* Config.
|
|
66
|
-
*/
|
|
67
|
-
__publicField(TableOfContentAnchor, "config", {
|
|
68
|
-
name: "TableOfContentAnchor",
|
|
69
|
-
emits: ["should-activate"],
|
|
70
|
-
options: {
|
|
71
|
-
activeClass: {
|
|
72
|
-
type: String,
|
|
73
|
-
default: "is-active"
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
75
|
if (module.exports.default) module.exports = module.exports.default;
|
|
78
76
|
//# sourceMappingURL=TableOfContentAnchor.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/molecules/TableOfContent/TableOfContentAnchor.ts"],
|
|
4
|
-
"sourcesContent": ["import type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { AnchorScrollTo } from '../../atoms/index.js';\n\nexport interface TableOfContentAnchorProps extends BaseProps {\n $options: {\n activeClass: string;\n };\n}\n\n/**\n * TableOfContentAnchor class.\n */\nexport class TableOfContentAnchor<T extends BaseProps = BaseProps> extends AnchorScrollTo
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { AnchorScrollTo } from '../../atoms/index.js';\nimport { withDeprecation } from '../../decorators/withDeprecation.js';\n\nexport interface TableOfContentAnchorProps extends BaseProps {\n $options: {\n activeClass: string;\n };\n}\n\n/**\n * TableOfContentAnchor class.\n * @deprecated\n */\nexport class TableOfContentAnchor<T extends BaseProps = BaseProps> extends withDeprecation<AnchorScrollTo>(\n AnchorScrollTo,\n)<T & TableOfContentAnchorProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'TableOfContentAnchor',\n emits: ['should-activate'],\n options: {\n activeClass: {\n type: String,\n default: 'is-active',\n },\n },\n };\n\n /**\n * Observer.\n * @private\n */\n __observer: IntersectionObserver;\n\n /**\n * Get the sentinel.\n */\n get sentinel(): HTMLElement {\n return document.querySelector(this.targetSelector) as HTMLElement;\n }\n\n /**\n * Init observer on mount.\n */\n mounted() {\n if (!this.sentinel) {\n return;\n }\n\n this.__observer = new IntersectionObserver(([entry]) => {\n const shouldActivate =\n entry.isIntersecting &&\n entry.boundingClientRect.y < 100 &&\n entry.boundingClientRect.y > -100;\n this.$el.classList.toggle(this.$options.activeClass, shouldActivate);\n this.$emit('should-activate', shouldActivate);\n });\n\n this.__observer.observe(this.sentinel);\n }\n\n /**\n * Destroy observer on destroy.\n */\n destroyed() {\n this.__observer.disconnect();\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA+B;AAC/B,6BAAgC;AAYzB,IAAM,uBAAN,kBAAoE;AAAA,EACzE;AACF,EAAiC;AAAA;AAAA;AAAA;AAAA,EAI/B,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,IACN,OAAO,CAAC,iBAAiB;AAAA,IACzB,SAAS;AAAA,MACP,aAAa;AAAA,QACX,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,WAAwB;AAC1B,WAAO,SAAS,cAAc,KAAK,cAAc;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,QAAI,CAAC,KAAK,UAAU;AAClB;AAAA,IACF;AAEA,SAAK,aAAa,IAAI,qBAAqB,CAAC,CAAC,KAAK,MAAM;AACtD,YAAM,iBACJ,MAAM,kBACN,MAAM,mBAAmB,IAAI,OAC7B,MAAM,mBAAmB,IAAI;AAC/B,WAAK,IAAI,UAAU,OAAO,KAAK,SAAS,aAAa,cAAc;AACnE,WAAK,MAAM,mBAAmB,cAAc;AAAA,IAC9C,CAAC;AAED,SAAK,WAAW,QAAQ,KAAK,QAAQ;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY;AACV,SAAK,WAAW,WAAW;AAAA,EAC7B;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -5,10 +5,12 @@ export interface TableOfContentAnchorProps extends BaseProps {
|
|
|
5
5
|
activeClass: string;
|
|
6
6
|
};
|
|
7
7
|
}
|
|
8
|
+
declare const TableOfContentAnchor_base: import("@studiometa/js-toolkit").BaseDecorator<import("../../decorators/withDeprecation.js").DeprecationInterface, AnchorScrollTo<BaseProps>, import("../../decorators/withDeprecation.js").DeprecationProps>;
|
|
8
9
|
/**
|
|
9
10
|
* TableOfContentAnchor class.
|
|
11
|
+
* @deprecated
|
|
10
12
|
*/
|
|
11
|
-
export declare class TableOfContentAnchor<T extends BaseProps = BaseProps> extends
|
|
13
|
+
export declare class TableOfContentAnchor<T extends BaseProps = BaseProps> extends TableOfContentAnchor_base<T & TableOfContentAnchorProps> {
|
|
12
14
|
/**
|
|
13
15
|
* Config.
|
|
14
16
|
*/
|
|
@@ -31,3 +33,4 @@ export declare class TableOfContentAnchor<T extends BaseProps = BaseProps> exten
|
|
|
31
33
|
*/
|
|
32
34
|
destroyed(): void;
|
|
33
35
|
}
|
|
36
|
+
export {};
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { AnchorScrollTo } from "../../atoms/index.js";
|
|
2
|
-
|
|
2
|
+
import { withDeprecation } from "../../decorators/withDeprecation.js";
|
|
3
|
+
class TableOfContentAnchor extends withDeprecation(
|
|
4
|
+
AnchorScrollTo
|
|
5
|
+
) {
|
|
3
6
|
/**
|
|
4
7
|
* Config.
|
|
5
8
|
*/
|
|
@@ -32,7 +35,7 @@ class TableOfContentAnchor extends AnchorScrollTo {
|
|
|
32
35
|
return;
|
|
33
36
|
}
|
|
34
37
|
this.__observer = new IntersectionObserver(([entry]) => {
|
|
35
|
-
const shouldActivate = entry.isIntersecting && entry.boundingClientRect.y < 100 && entry.boundingClientRect.y > 100;
|
|
38
|
+
const shouldActivate = entry.isIntersecting && entry.boundingClientRect.y < 100 && entry.boundingClientRect.y > -100;
|
|
36
39
|
this.$el.classList.toggle(this.$options.activeClass, shouldActivate);
|
|
37
40
|
this.$emit("should-activate", shouldActivate);
|
|
38
41
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/molecules/TableOfContent/TableOfContentAnchor.ts"],
|
|
4
|
-
"sourcesContent": ["import type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { AnchorScrollTo } from '../../atoms/index.js';\n\nexport interface TableOfContentAnchorProps extends BaseProps {\n $options: {\n activeClass: string;\n };\n}\n\n/**\n * TableOfContentAnchor class.\n */\nexport class TableOfContentAnchor<T extends BaseProps = BaseProps> extends AnchorScrollTo
|
|
5
|
-
"mappings": "AACA,SAAS,sBAAsB;
|
|
4
|
+
"sourcesContent": ["import type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { AnchorScrollTo } from '../../atoms/index.js';\nimport { withDeprecation } from '../../decorators/withDeprecation.js';\n\nexport interface TableOfContentAnchorProps extends BaseProps {\n $options: {\n activeClass: string;\n };\n}\n\n/**\n * TableOfContentAnchor class.\n * @deprecated\n */\nexport class TableOfContentAnchor<T extends BaseProps = BaseProps> extends withDeprecation<AnchorScrollTo>(\n AnchorScrollTo,\n)<T & TableOfContentAnchorProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'TableOfContentAnchor',\n emits: ['should-activate'],\n options: {\n activeClass: {\n type: String,\n default: 'is-active',\n },\n },\n };\n\n /**\n * Observer.\n * @private\n */\n __observer: IntersectionObserver;\n\n /**\n * Get the sentinel.\n */\n get sentinel(): HTMLElement {\n return document.querySelector(this.targetSelector) as HTMLElement;\n }\n\n /**\n * Init observer on mount.\n */\n mounted() {\n if (!this.sentinel) {\n return;\n }\n\n this.__observer = new IntersectionObserver(([entry]) => {\n const shouldActivate =\n entry.isIntersecting &&\n entry.boundingClientRect.y < 100 &&\n entry.boundingClientRect.y > -100;\n this.$el.classList.toggle(this.$options.activeClass, shouldActivate);\n this.$emit('should-activate', shouldActivate);\n });\n\n this.__observer.observe(this.sentinel);\n }\n\n /**\n * Destroy observer on destroy.\n */\n destroyed() {\n this.__observer.disconnect();\n }\n}\n"],
|
|
5
|
+
"mappings": "AACA,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAYzB,MAAM,6BAA8D;AAAA,EACzE;AACF,EAAiC;AAAA;AAAA;AAAA;AAAA,EAI/B,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,IACN,OAAO,CAAC,iBAAiB;AAAA,IACzB,SAAS;AAAA,MACP,aAAa;AAAA,QACX,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,WAAwB;AAC1B,WAAO,SAAS,cAAc,KAAK,cAAc;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,QAAI,CAAC,KAAK,UAAU;AAClB;AAAA,IACF;AAEA,SAAK,aAAa,IAAI,qBAAqB,CAAC,CAAC,KAAK,MAAM;AACtD,YAAM,iBACJ,MAAM,kBACN,MAAM,mBAAmB,IAAI,OAC7B,MAAM,mBAAmB,IAAI;AAC/B,WAAK,IAAI,UAAU,OAAO,KAAK,SAAS,aAAa,cAAc;AACnE,WAAK,MAAM,mBAAmB,cAAc;AAAA,IAC9C,CAAC;AAED,SAAK,WAAW,QAAQ,KAAK,QAAQ;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY;AACV,SAAK,WAAW,WAAW;AAAA,EAC7B;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/molecules/Tabs/Tabs.cjs
CHANGED
|
@@ -2,7 +2,6 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
5
|
var __export = (target, all) => {
|
|
7
6
|
for (var name in all)
|
|
8
7
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -16,10 +15,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
15
|
return to;
|
|
17
16
|
};
|
|
18
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var __publicField = (obj, key, value) => {
|
|
20
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
21
|
-
return value;
|
|
22
|
-
};
|
|
23
18
|
|
|
24
19
|
// packages/ui/molecules/Tabs/Tabs.ts
|
|
25
20
|
var Tabs_exports = {};
|
|
@@ -30,6 +25,30 @@ module.exports = __toCommonJS(Tabs_exports);
|
|
|
30
25
|
var import_js_toolkit = require("@studiometa/js-toolkit");
|
|
31
26
|
var import_utils = require("@studiometa/js-toolkit/utils");
|
|
32
27
|
var Tabs = class extends import_js_toolkit.Base {
|
|
28
|
+
/**
|
|
29
|
+
* Config.
|
|
30
|
+
*/
|
|
31
|
+
static config = {
|
|
32
|
+
name: "Tabs",
|
|
33
|
+
refs: ["btn[]", "content[]"],
|
|
34
|
+
emits: ["enable", "disable"],
|
|
35
|
+
options: {
|
|
36
|
+
styles: {
|
|
37
|
+
type: Object,
|
|
38
|
+
default: () => ({
|
|
39
|
+
content: {
|
|
40
|
+
closed: {
|
|
41
|
+
position: "absolute",
|
|
42
|
+
opacity: "0",
|
|
43
|
+
pointerEvents: "none",
|
|
44
|
+
visibility: "hidden"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}),
|
|
48
|
+
merge: true
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
33
52
|
items;
|
|
34
53
|
/**
|
|
35
54
|
* Initialize the component's behaviours.
|
|
@@ -130,29 +149,5 @@ var Tabs = class extends import_js_toolkit.Base {
|
|
|
130
149
|
]).then(() => Promise.resolve(this));
|
|
131
150
|
}
|
|
132
151
|
};
|
|
133
|
-
/**
|
|
134
|
-
* Config.
|
|
135
|
-
*/
|
|
136
|
-
__publicField(Tabs, "config", {
|
|
137
|
-
name: "Tabs",
|
|
138
|
-
refs: ["btn[]", "content[]"],
|
|
139
|
-
emits: ["enable", "disable"],
|
|
140
|
-
options: {
|
|
141
|
-
styles: {
|
|
142
|
-
type: Object,
|
|
143
|
-
default: () => ({
|
|
144
|
-
content: {
|
|
145
|
-
closed: {
|
|
146
|
-
position: "absolute",
|
|
147
|
-
opacity: "0",
|
|
148
|
-
pointerEvents: "none",
|
|
149
|
-
visibility: "hidden"
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}),
|
|
153
|
-
merge: true
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
152
|
if (module.exports.default) module.exports = module.exports.default;
|
|
158
153
|
//# sourceMappingURL=Tabs.cjs.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/molecules/Tabs/Tabs.ts"],
|
|
4
4
|
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { transition } from '@studiometa/js-toolkit/utils';\n\ntype TabItem = {\n btn: HTMLElement;\n content: HTMLElement;\n isEnabled: boolean;\n};\n\ntype TabsStates = Partial<\n Record<'open' | 'active' | 'closed', string | Partial<CSSStyleDeclaration>>\n>;\n// eslint-disable-next-line no-use-before-define\ntype TabsStylesOption = Partial<Record<keyof TabsProps['$refs'], TabsStates>>;\n\nexport interface TabsProps extends BaseProps {\n $options: {\n styles: TabsStylesOption;\n };\n $refs: {\n btn: HTMLElement[];\n content: HTMLElement[];\n };\n}\n\n/**\n * Tabs class.\n */\nexport class Tabs<T extends BaseProps = BaseProps> extends Base<T & TabsProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'Tabs',\n refs: ['btn[]', 'content[]'],\n emits: ['enable', 'disable'],\n options: {\n styles: {\n type: Object,\n default: (): TabsStylesOption => ({\n content: {\n closed: {\n position: 'absolute',\n opacity: '0',\n pointerEvents: 'none',\n visibility: 'hidden',\n },\n },\n }),\n merge: true,\n },\n },\n };\n\n items: TabItem[];\n\n /**\n * Initialize the component's behaviours.\n * @returns {void}\n */\n mounted() {\n this.items = this.$refs.btn.map((btn, index) => {\n const id = `${this.$id}-${index}`;\n const content = this.$refs.content[index];\n btn.setAttribute('id', id);\n content.setAttribute('aria-labelledby', id);\n\n const item = { btn, content, isEnabled: index > 0 };\n if (index > 0) {\n this.disableItem(item);\n } else {\n this.enableItem(item);\n }\n return item;\n });\n }\n\n /**\n * Switch tab on button click.\n */\n onBtnClick(event: MouseEvent, index: number) {\n this.items.forEach((item, i) => {\n if (i !== index) {\n this.disableItem(item);\n }\n });\n\n this.enableItem(this.items[index]);\n }\n\n /**\n * Enable the given tab and its associated content.\n */\n async enableItem(item: TabItem): Promise<this> {\n if (!item || item.isEnabled) {\n return Promise.resolve(this);\n }\n\n item.isEnabled = true;\n const { btn, content } = item;\n const btnStyles = this.$options.styles.btn || {};\n const contentStyles = this.$options.styles.content || {};\n\n content.setAttribute('aria-hidden', 'false');\n this.$emit('enable', item);\n\n return Promise.all([\n transition(\n btn,\n {\n from: btnStyles.closed,\n active: btnStyles.active,\n to: btnStyles.open,\n },\n 'keep',\n ),\n transition(\n content,\n {\n from: contentStyles.closed,\n active: contentStyles.active,\n to: contentStyles.open,\n },\n 'keep',\n ),\n ]).then(() => Promise.resolve(this));\n }\n\n /**\n * Disable the given tab and its associated content.\n */\n async disableItem(item: TabItem): Promise<this> {\n if (!item || !item.isEnabled) {\n return Promise.resolve(this);\n }\n\n item.isEnabled = false;\n const { btn, content } = item;\n const btnStyles = this.$options.styles.btn || {};\n const contentStyles = this.$options.styles.content || {};\n\n content.setAttribute('aria-hidden', 'true');\n this.$emit('disable', item);\n\n return Promise.all([\n transition(\n btn,\n {\n from: btnStyles.open,\n active: btnStyles.active,\n to: btnStyles.closed,\n },\n 'keep',\n ),\n transition(\n content,\n {\n from: contentStyles.open,\n active: contentStyles.active,\n to: contentStyles.closed,\n },\n 'keep',\n ),\n ]).then(() => Promise.resolve(this));\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/molecules/Tabs/Tabs.ts"],
|
|
4
4
|
"sourcesContent": ["import { Base } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { transition } from '@studiometa/js-toolkit/utils';\n\ntype TabItem = {\n btn: HTMLElement;\n content: HTMLElement;\n isEnabled: boolean;\n};\n\ntype TabsStates = Partial<\n Record<'open' | 'active' | 'closed', string | Partial<CSSStyleDeclaration>>\n>;\n// eslint-disable-next-line no-use-before-define\ntype TabsStylesOption = Partial<Record<keyof TabsProps['$refs'], TabsStates>>;\n\nexport interface TabsProps extends BaseProps {\n $options: {\n styles: TabsStylesOption;\n };\n $refs: {\n btn: HTMLElement[];\n content: HTMLElement[];\n };\n}\n\n/**\n * Tabs class.\n */\nexport class Tabs<T extends BaseProps = BaseProps> extends Base<T & TabsProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'Tabs',\n refs: ['btn[]', 'content[]'],\n emits: ['enable', 'disable'],\n options: {\n styles: {\n type: Object,\n default: (): TabsStylesOption => ({\n content: {\n closed: {\n position: 'absolute',\n opacity: '0',\n pointerEvents: 'none',\n visibility: 'hidden',\n },\n },\n }),\n merge: true,\n },\n },\n };\n\n items: TabItem[];\n\n /**\n * Initialize the component's behaviours.\n * @returns {void}\n */\n mounted() {\n this.items = this.$refs.btn.map((btn, index) => {\n const id = `${this.$id}-${index}`;\n const content = this.$refs.content[index];\n btn.setAttribute('id', id);\n content.setAttribute('aria-labelledby', id);\n\n const item = { btn, content, isEnabled: index > 0 };\n if (index > 0) {\n this.disableItem(item);\n } else {\n this.enableItem(item);\n }\n return item;\n });\n }\n\n /**\n * Switch tab on button click.\n */\n onBtnClick(event: MouseEvent, index: number) {\n this.items.forEach((item, i) => {\n if (i !== index) {\n this.disableItem(item);\n }\n });\n\n this.enableItem(this.items[index]);\n }\n\n /**\n * Enable the given tab and its associated content.\n */\n async enableItem(item: TabItem): Promise<this> {\n if (!item || item.isEnabled) {\n return Promise.resolve(this);\n }\n\n item.isEnabled = true;\n const { btn, content } = item;\n const btnStyles = this.$options.styles.btn || {};\n const contentStyles = this.$options.styles.content || {};\n\n content.setAttribute('aria-hidden', 'false');\n this.$emit('enable', item);\n\n return Promise.all([\n transition(\n btn,\n {\n from: btnStyles.closed,\n active: btnStyles.active,\n to: btnStyles.open,\n },\n 'keep',\n ),\n transition(\n content,\n {\n from: contentStyles.closed,\n active: contentStyles.active,\n to: contentStyles.open,\n },\n 'keep',\n ),\n ]).then(() => Promise.resolve(this));\n }\n\n /**\n * Disable the given tab and its associated content.\n */\n async disableItem(item: TabItem): Promise<this> {\n if (!item || !item.isEnabled) {\n return Promise.resolve(this);\n }\n\n item.isEnabled = false;\n const { btn, content } = item;\n const btnStyles = this.$options.styles.btn || {};\n const contentStyles = this.$options.styles.content || {};\n\n content.setAttribute('aria-hidden', 'true');\n this.$emit('disable', item);\n\n return Promise.all([\n transition(\n btn,\n {\n from: btnStyles.open,\n active: btnStyles.active,\n to: btnStyles.closed,\n },\n 'keep',\n ),\n transition(\n content,\n {\n from: contentStyles.open,\n active: contentStyles.active,\n to: contentStyles.closed,\n },\n 'keep',\n ),\n ]).then(() => Promise.resolve(this));\n }\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,YAAY;AAErB,SAAS,kBAAkB;AA2BpB,MAAM,aAA8C,KAAoB;AAAA;AAAA;AAAA;AAAA,EAI7E,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,IACN,MAAM,CAAC,SAAS,WAAW;AAAA,IAC3B,OAAO,CAAC,UAAU,SAAS;AAAA,IAC3B,SAAS;AAAA,MACP,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,SAAS,OAAyB;AAAA,UAChC,SAAS;AAAA,YACP,QAAQ;AAAA,cACN,UAAU;AAAA,cACV,SAAS;AAAA,cACT,eAAe;AAAA,cACf,YAAY;AAAA,YACd;AAAA,UACF;AAAA,QACF;AAAA,QACA,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU;AACR,SAAK,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,UAAU;AAC9C,YAAM,KAAK,GAAG,KAAK,
|
|
5
|
+
"mappings": "AAAA,SAAS,YAAY;AAErB,SAAS,kBAAkB;AA2BpB,MAAM,aAA8C,KAAoB;AAAA;AAAA;AAAA;AAAA,EAI7E,OAAO,SAAqB;AAAA,IAC1B,MAAM;AAAA,IACN,MAAM,CAAC,SAAS,WAAW;AAAA,IAC3B,OAAO,CAAC,UAAU,SAAS;AAAA,IAC3B,SAAS;AAAA,MACP,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,SAAS,OAAyB;AAAA,UAChC,SAAS;AAAA,YACP,QAAQ;AAAA,cACN,UAAU;AAAA,cACV,SAAS;AAAA,cACT,eAAe;AAAA,cACf,YAAY;AAAA,YACd;AAAA,UACF;AAAA,QACF;AAAA,QACA,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU;AACR,SAAK,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,UAAU;AAC9C,YAAM,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK;AAC/B,YAAM,UAAU,KAAK,MAAM,QAAQ,KAAK;AACxC,UAAI,aAAa,MAAM,EAAE;AACzB,cAAQ,aAAa,mBAAmB,EAAE;AAE1C,YAAM,OAAO,EAAE,KAAK,SAAS,WAAW,QAAQ,EAAE;AAClD,UAAI,QAAQ,GAAG;AACb,aAAK,YAAY,IAAI;AAAA,MACvB,OAAO;AACL,aAAK,WAAW,IAAI;AAAA,MACtB;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,OAAmB,OAAe;AAC3C,SAAK,MAAM,QAAQ,CAAC,MAAM,MAAM;AAC9B,UAAI,MAAM,OAAO;AACf,aAAK,YAAY,IAAI;AAAA,MACvB;AAAA,IACF,CAAC;AAED,SAAK,WAAW,KAAK,MAAM,KAAK,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW,MAA8B;AAC7C,QAAI,CAAC,QAAQ,KAAK,WAAW;AAC3B,aAAO,QAAQ,QAAQ,IAAI;AAAA,IAC7B;AAEA,SAAK,YAAY;AACjB,UAAM,EAAE,KAAK,QAAQ,IAAI;AACzB,UAAM,YAAY,KAAK,SAAS,OAAO,OAAO,CAAC;AAC/C,UAAM,gBAAgB,KAAK,SAAS,OAAO,WAAW,CAAC;AAEvD,YAAQ,aAAa,eAAe,OAAO;AAC3C,SAAK,MAAM,UAAU,IAAI;AAEzB,WAAO,QAAQ,IAAI;AAAA,MACjB;AAAA,QACE;AAAA,QACA;AAAA,UACE,MAAM,UAAU;AAAA,UAChB,QAAQ,UAAU;AAAA,UAClB,IAAI,UAAU;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,UACE,MAAM,cAAc;AAAA,UACpB,QAAQ,cAAc;AAAA,UACtB,IAAI,cAAc;AAAA,QACpB;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC,EAAE,KAAK,MAAM,QAAQ,QAAQ,IAAI,CAAC;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAY,MAA8B;AAC9C,QAAI,CAAC,QAAQ,CAAC,KAAK,WAAW;AAC5B,aAAO,QAAQ,QAAQ,IAAI;AAAA,IAC7B;AAEA,SAAK,YAAY;AACjB,UAAM,EAAE,KAAK,QAAQ,IAAI;AACzB,UAAM,YAAY,KAAK,SAAS,OAAO,OAAO,CAAC;AAC/C,UAAM,gBAAgB,KAAK,SAAS,OAAO,WAAW,CAAC;AAEvD,YAAQ,aAAa,eAAe,MAAM;AAC1C,SAAK,MAAM,WAAW,IAAI;AAE1B,WAAO,QAAQ,IAAI;AAAA,MACjB;AAAA,QACE;AAAA,QACA;AAAA,UACE,MAAM,UAAU;AAAA,UAChB,QAAQ,UAAU;AAAA,UAClB,IAAI,UAAU;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,UACE,MAAM,cAAc;AAAA,UACpB,QAAQ,cAAc;AAAA,UACtB,IAAI,cAAc;AAAA,QACpB;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC,EAAE,KAAK,MAAM,QAAQ,QAAQ,IAAI,CAAC;AAAA,EACrC;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/molecules/index.cjs
CHANGED
|
@@ -21,6 +21,7 @@ __reExport(molecules_exports, require("./Accordion/AccordionItem.cjs"), module.e
|
|
|
21
21
|
__reExport(molecules_exports, require("./Menu/index.cjs"), module.exports);
|
|
22
22
|
__reExport(molecules_exports, require("./Slider/index.cjs"), module.exports);
|
|
23
23
|
__reExport(molecules_exports, require("./Sticky/Sticky.cjs"), module.exports);
|
|
24
|
+
__reExport(molecules_exports, require("./AnchorNav/index.cjs"), module.exports);
|
|
24
25
|
__reExport(molecules_exports, require("./TableOfContent/index.cjs"), module.exports);
|
|
25
26
|
__reExport(molecules_exports, require("./Tabs/index.cjs"), module.exports);
|
|
26
27
|
__reExport(molecules_exports, require("./Modal/index.cjs"), module.exports);
|
package/molecules/index.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../packages/ui/molecules/index.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './Accordion/Accordion.js';\nexport * from './Accordion/AccordionItem.js';\nexport * from './Menu/index.js';\nexport * from './Slider/index.js';\nexport * from './Sticky/Sticky.js';\nexport * from './TableOfContent/index.js';\nexport * from './Tabs/index.js';\nexport * from './Modal/index.js';\nexport * from './Panel/index.js';\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,8BAAc,sCAAd;AACA,8BAAc,0CADd;AAEA,8BAAc,6BAFd;AAGA,8BAAc,+BAHd;AAIA,8BAAc,gCAJd;AAKA,8BAAc,
|
|
4
|
+
"sourcesContent": ["export * from './Accordion/Accordion.js';\nexport * from './Accordion/AccordionItem.js';\nexport * from './Menu/index.js';\nexport * from './Slider/index.js';\nexport * from './Sticky/Sticky.js';\nexport * from './AnchorNav/index.js';\nexport * from './TableOfContent/index.js';\nexport * from './Tabs/index.js';\nexport * from './Modal/index.js';\nexport * from './Panel/index.js';\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,8BAAc,sCAAd;AACA,8BAAc,0CADd;AAEA,8BAAc,6BAFd;AAGA,8BAAc,+BAHd;AAIA,8BAAc,gCAJd;AAKA,8BAAc,kCALd;AAMA,8BAAc,uCANd;AAOA,8BAAc,6BAPd;AAQA,8BAAc,8BARd;AASA,8BAAc,8BATd;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/molecules/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from './Accordion/AccordionItem.js';
|
|
|
3
3
|
export * from './Menu/index.js';
|
|
4
4
|
export * from './Slider/index.js';
|
|
5
5
|
export * from './Sticky/Sticky.js';
|
|
6
|
+
export * from './AnchorNav/index.js';
|
|
6
7
|
export * from './TableOfContent/index.js';
|
|
7
8
|
export * from './Tabs/index.js';
|
|
8
9
|
export * from './Modal/index.js';
|
package/molecules/index.js
CHANGED
|
@@ -3,6 +3,7 @@ export * from "./Accordion/AccordionItem.js";
|
|
|
3
3
|
export * from "./Menu/index.js";
|
|
4
4
|
export * from "./Slider/index.js";
|
|
5
5
|
export * from "./Sticky/Sticky.js";
|
|
6
|
+
export * from "./AnchorNav/index.js";
|
|
6
7
|
export * from "./TableOfContent/index.js";
|
|
7
8
|
export * from "./Tabs/index.js";
|
|
8
9
|
export * from "./Modal/index.js";
|
package/molecules/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../packages/ui/molecules/index.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './Accordion/Accordion.js';\nexport * from './Accordion/AccordionItem.js';\nexport * from './Menu/index.js';\nexport * from './Slider/index.js';\nexport * from './Sticky/Sticky.js';\nexport * from './TableOfContent/index.js';\nexport * from './Tabs/index.js';\nexport * from './Modal/index.js';\nexport * from './Panel/index.js';\n"],
|
|
5
|
-
"mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
4
|
+
"sourcesContent": ["export * from './Accordion/Accordion.js';\nexport * from './Accordion/AccordionItem.js';\nexport * from './Menu/index.js';\nexport * from './Slider/index.js';\nexport * from './Sticky/Sticky.js';\nexport * from './AnchorNav/index.js';\nexport * from './TableOfContent/index.js';\nexport * from './Tabs/index.js';\nexport * from './Modal/index.js';\nexport * from './Panel/index.js';\n"],
|
|
5
|
+
"mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,7 +2,6 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
5
|
var __export = (target, all) => {
|
|
7
6
|
for (var name in all)
|
|
8
7
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -16,10 +15,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
15
|
return to;
|
|
17
16
|
};
|
|
18
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var __publicField = (obj, key, value) => {
|
|
20
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
21
|
-
return value;
|
|
22
|
-
};
|
|
23
18
|
|
|
24
19
|
// packages/ui/organisms/Frame/Frame.ts
|
|
25
20
|
var Frame_exports = {};
|
|
@@ -39,7 +34,32 @@ function getScrollPosition() {
|
|
|
39
34
|
};
|
|
40
35
|
}
|
|
41
36
|
var cache = /* @__PURE__ */ new Map();
|
|
42
|
-
var
|
|
37
|
+
var Frame = class _Frame extends import_js_toolkit.Base {
|
|
38
|
+
/**
|
|
39
|
+
* Config.
|
|
40
|
+
*/
|
|
41
|
+
static config = {
|
|
42
|
+
name: "Frame",
|
|
43
|
+
emits: [
|
|
44
|
+
"before-fetch",
|
|
45
|
+
"after-fetch",
|
|
46
|
+
"before-leave",
|
|
47
|
+
"after-leave",
|
|
48
|
+
"before-content",
|
|
49
|
+
"after-content",
|
|
50
|
+
"before-enter",
|
|
51
|
+
"after-enter"
|
|
52
|
+
],
|
|
53
|
+
components: {
|
|
54
|
+
FrameAnchor: import_FrameAnchor.FrameAnchor,
|
|
55
|
+
FrameForm: import_FrameForm.FrameForm,
|
|
56
|
+
FrameTarget: import_FrameTarget.FrameTarget,
|
|
57
|
+
Frame: _Frame
|
|
58
|
+
},
|
|
59
|
+
options: {
|
|
60
|
+
history: Boolean
|
|
61
|
+
}
|
|
62
|
+
};
|
|
43
63
|
/**
|
|
44
64
|
* Get uniq id.
|
|
45
65
|
*/
|
|
@@ -72,7 +92,7 @@ var _Frame = class extends import_js_toolkit.Base {
|
|
|
72
92
|
* Go to the previous URL on `popstate` event.
|
|
73
93
|
*/
|
|
74
94
|
onWindowPopstate(event) {
|
|
75
|
-
this.goTo(window.location.href, event.state);
|
|
95
|
+
this.goTo(window.location.href, null, event.state);
|
|
76
96
|
}
|
|
77
97
|
/**
|
|
78
98
|
* Prevent click on `FrameAnchor`.
|
|
@@ -100,8 +120,13 @@ var _Frame = class extends import_js_toolkit.Base {
|
|
|
100
120
|
event.preventDefault();
|
|
101
121
|
const form = this.$children.FrameForm[index];
|
|
102
122
|
const url = new URL(form.action);
|
|
103
|
-
|
|
104
|
-
|
|
123
|
+
if (form.$el.method === "get") {
|
|
124
|
+
url.search = new URLSearchParams(new FormData(form.$el)).toString();
|
|
125
|
+
this.goTo(url.toString());
|
|
126
|
+
}
|
|
127
|
+
if (form.$el.method === "post") {
|
|
128
|
+
this.goTo(url.toString(), new FormData(form.$el));
|
|
129
|
+
}
|
|
105
130
|
}
|
|
106
131
|
/**
|
|
107
132
|
* Parge an HTML string into a DOM object.
|
|
@@ -112,14 +137,14 @@ var _Frame = class extends import_js_toolkit.Base {
|
|
|
112
137
|
/**
|
|
113
138
|
* Go to the given url.
|
|
114
139
|
*/
|
|
115
|
-
async goTo(url, scroll = null) {
|
|
140
|
+
async goTo(url, formData = null, scroll = null) {
|
|
116
141
|
this.$log("goTo", url);
|
|
117
142
|
const parsedUrl = new URL(url);
|
|
118
143
|
if (parsedUrl.origin !== window.location.origin) {
|
|
119
144
|
throw new Error("Cross origin request are not allowed.");
|
|
120
145
|
}
|
|
121
146
|
this.$emit("before-fetch", url);
|
|
122
|
-
const content = await this.fetch(url);
|
|
147
|
+
const content = await this.fetch(url, formData);
|
|
123
148
|
const doc = this.parseHTML(content);
|
|
124
149
|
const el = doc.querySelector(`#${this.id}`);
|
|
125
150
|
const newFrame = new _Frame(el);
|
|
@@ -132,7 +157,7 @@ var _Frame = class extends import_js_toolkit.Base {
|
|
|
132
157
|
this.directChildrenFrameTarget.map(
|
|
133
158
|
(target, index) => target.updateContent(newFrame.directChildrenFrameTarget[index])
|
|
134
159
|
);
|
|
135
|
-
if (this.$options.history) {
|
|
160
|
+
if (this.$options.history && formData === null) {
|
|
136
161
|
document.title = doc.title;
|
|
137
162
|
(0, import_utils.historyPush)({ path: parsedUrl.pathname, search: parsedUrl.searchParams });
|
|
138
163
|
}
|
|
@@ -151,7 +176,15 @@ var _Frame = class extends import_js_toolkit.Base {
|
|
|
151
176
|
/**
|
|
152
177
|
* Fetch the given url.
|
|
153
178
|
*/
|
|
154
|
-
async fetch(url) {
|
|
179
|
+
async fetch(url, formData = null) {
|
|
180
|
+
if (formData) {
|
|
181
|
+
const promise2 = fetch(url, {
|
|
182
|
+
method: "post",
|
|
183
|
+
body: formData
|
|
184
|
+
}).then((response) => response.text());
|
|
185
|
+
const content = await promise2;
|
|
186
|
+
return content;
|
|
187
|
+
}
|
|
155
188
|
const cached = cache.get(url);
|
|
156
189
|
if (cached) {
|
|
157
190
|
if (cached.status === "pending") {
|
|
@@ -183,31 +216,5 @@ var _Frame = class extends import_js_toolkit.Base {
|
|
|
183
216
|
}
|
|
184
217
|
}
|
|
185
218
|
};
|
|
186
|
-
var Frame = _Frame;
|
|
187
|
-
/**
|
|
188
|
-
* Config.
|
|
189
|
-
*/
|
|
190
|
-
__publicField(Frame, "config", {
|
|
191
|
-
name: "Frame",
|
|
192
|
-
emits: [
|
|
193
|
-
"before-fetch",
|
|
194
|
-
"after-fetch",
|
|
195
|
-
"before-leave",
|
|
196
|
-
"after-leave",
|
|
197
|
-
"before-content",
|
|
198
|
-
"after-content",
|
|
199
|
-
"before-enter",
|
|
200
|
-
"after-enter"
|
|
201
|
-
],
|
|
202
|
-
components: {
|
|
203
|
-
FrameAnchor: import_FrameAnchor.FrameAnchor,
|
|
204
|
-
FrameForm: import_FrameForm.FrameForm,
|
|
205
|
-
FrameTarget: import_FrameTarget.FrameTarget,
|
|
206
|
-
Frame: _Frame
|
|
207
|
-
},
|
|
208
|
-
options: {
|
|
209
|
-
history: Boolean
|
|
210
|
-
}
|
|
211
|
-
});
|
|
212
219
|
if (module.exports.default) module.exports = module.exports.default;
|
|
213
220
|
//# sourceMappingURL=Frame.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/ui/organisms/Frame/Frame.ts"],
|
|
4
|
-
"sourcesContent": ["import { Base, isDirectChild, getDirectChildren } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { nextFrame, historyPush } from '@studiometa/js-toolkit/utils';\nimport { FrameAnchor } from './FrameAnchor.js';\nimport { FrameForm } from './FrameForm.js';\nimport { FrameTarget } from './FrameTarget.js';\n\n/**\n * Get the scroll position.\n */\nfunction getScrollPosition() {\n return {\n left: window.pageXOffset,\n top: window.pageYOffset,\n };\n}\n\n/**\n * The fetch cache.\n */\nconst cache: Map<\n string,\n { promise: Promise<string>; status: 'pending' | 'resolved' | 'error'; content: string }\n> = new Map();\n\nexport interface FrameProps extends BaseProps {\n $children: {\n FrameAnchor: FrameAnchor[];\n FrameForm: FrameForm[];\n FrameTarget: FrameTarget[];\n // eslint-disable-next-line no-use-before-define\n Frame: Frame[];\n };\n $options: {\n history: boolean;\n };\n}\n\n/**\n * Class.\n */\nexport class Frame<T extends BaseProps = BaseProps> extends Base<T & FrameProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'Frame',\n emits: [\n 'before-fetch',\n 'after-fetch',\n 'before-leave',\n 'after-leave',\n 'before-content',\n 'after-content',\n 'before-enter',\n 'after-enter',\n ],\n components: {\n FrameAnchor,\n FrameForm,\n FrameTarget,\n Frame,\n },\n options: {\n history: Boolean,\n },\n };\n\n /**\n * Get uniq id.\n */\n get id() {\n return this.$el.id;\n }\n\n /**\n * Get direct `FrameTarget` children.\n */\n get directChildrenFrameTarget(): FrameTarget[] {\n return getDirectChildren(this, 'Frame', 'FrameTarget');\n }\n\n /**\n * Prevent scroll top on unload.\n */\n onWindowUnload() {\n const { history } = window;\n\n if (!history.state) {\n return;\n }\n\n history.replaceState(\n {\n ...history.state,\n scroll: getScrollPosition(),\n },\n '',\n );\n }\n\n /**\n * Go to the previous URL on `popstate` event.\n */\n onWindowPopstate(event: PopStateEvent) {\n this.goTo(window.location.href, event.state);\n }\n\n /**\n * Prevent click on `FrameAnchor`.\n */\n onFrameAnchorClick(index: number, event: MouseEvent) {\n // Prevent propagation of nested frames\n if (!isDirectChild(this, 'Frame', 'FrameAnchor', this.$children.FrameAnchor[index])) {\n return;\n }\n\n this.$log('onAFrameClick', index, event);\n event.preventDefault();\n const anchor = this.$children.FrameAnchor[index];\n\n // Do nothing when clicking links on the same page\n // @todo handle hash change\n if (anchor.href === window.location.href) {\n return;\n }\n\n this.goTo(anchor.href);\n }\n\n /**\n * Prevent submit on forms.\n */\n onFrameFormSubmit(index: number, event: SubmitEvent) {\n // Prevent propagation of nested frames\n if (!isDirectChild(this, 'Frame', 'FrameForm', this.$children.FrameForm[index])) {\n return;\n }\n\n this.$log('onFrameFormFrameSubmit', index, event);\n event.preventDefault();\n const form = this.$children.FrameForm[index];\n const url = new URL(form.action);\n // @ts-ignore\n
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["import { Base, isDirectChild, getDirectChildren } from '@studiometa/js-toolkit';\nimport type { BaseProps, BaseConfig } from '@studiometa/js-toolkit';\nimport { nextFrame, historyPush } from '@studiometa/js-toolkit/utils';\nimport { FrameAnchor } from './FrameAnchor.js';\nimport { FrameForm } from './FrameForm.js';\nimport { FrameTarget } from './FrameTarget.js';\n\n/**\n * Get the scroll position.\n */\nfunction getScrollPosition() {\n return {\n left: window.pageXOffset,\n top: window.pageYOffset,\n };\n}\n\n/**\n * The fetch cache.\n */\nconst cache: Map<\n string,\n { promise: Promise<string>; status: 'pending' | 'resolved' | 'error'; content: string }\n> = new Map();\n\nexport interface FrameProps extends BaseProps {\n $children: {\n FrameAnchor: FrameAnchor[];\n FrameForm: FrameForm[];\n FrameTarget: FrameTarget[];\n // eslint-disable-next-line no-use-before-define\n Frame: Frame[];\n };\n $options: {\n history: boolean;\n };\n}\n\n/**\n * Class.\n */\nexport class Frame<T extends BaseProps = BaseProps> extends Base<T & FrameProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n name: 'Frame',\n emits: [\n 'before-fetch',\n 'after-fetch',\n 'before-leave',\n 'after-leave',\n 'before-content',\n 'after-content',\n 'before-enter',\n 'after-enter',\n ],\n components: {\n FrameAnchor,\n FrameForm,\n FrameTarget,\n Frame,\n },\n options: {\n history: Boolean,\n },\n };\n\n /**\n * Get uniq id.\n */\n get id() {\n return this.$el.id;\n }\n\n /**\n * Get direct `FrameTarget` children.\n */\n get directChildrenFrameTarget(): FrameTarget[] {\n return getDirectChildren(this, 'Frame', 'FrameTarget');\n }\n\n /**\n * Prevent scroll top on unload.\n */\n onWindowUnload() {\n const { history } = window;\n\n if (!history.state) {\n return;\n }\n\n history.replaceState(\n {\n ...history.state,\n scroll: getScrollPosition(),\n },\n '',\n );\n }\n\n /**\n * Go to the previous URL on `popstate` event.\n */\n onWindowPopstate(event: PopStateEvent) {\n this.goTo(window.location.href, null, event.state);\n }\n\n /**\n * Prevent click on `FrameAnchor`.\n */\n onFrameAnchorClick(index: number, event: MouseEvent) {\n // Prevent propagation of nested frames\n if (!isDirectChild(this, 'Frame', 'FrameAnchor', this.$children.FrameAnchor[index])) {\n return;\n }\n\n this.$log('onAFrameClick', index, event);\n event.preventDefault();\n const anchor = this.$children.FrameAnchor[index];\n\n // Do nothing when clicking links on the same page\n // @todo handle hash change\n if (anchor.href === window.location.href) {\n return;\n }\n\n this.goTo(anchor.href);\n }\n\n /**\n * Prevent submit on forms.\n */\n onFrameFormSubmit(index: number, event: SubmitEvent) {\n // Prevent propagation of nested frames\n if (!isDirectChild(this, 'Frame', 'FrameForm', this.$children.FrameForm[index])) {\n return;\n }\n\n this.$log('onFrameFormFrameSubmit', index, event);\n event.preventDefault();\n const form = this.$children.FrameForm[index];\n const url = new URL(form.action);\n\n if (form.$el.method === 'get') {\n // @ts-ignore\n url.search = new URLSearchParams(new FormData(form.$el)).toString();\n this.goTo(url.toString());\n }\n\n if (form.$el.method === 'post') {\n this.goTo(url.toString(), new FormData(form.$el));\n }\n }\n\n /**\n * Parge an HTML string into a DOM object.\n */\n parseHTML(string = '') {\n return new DOMParser().parseFromString(string, 'text/html');\n }\n\n /**\n * Go to the given url.\n */\n async goTo(url: string, formData: FormData = null, scroll: { top: number; left: number } = null) {\n this.$log('goTo', url);\n const parsedUrl = new URL(url);\n\n if (parsedUrl.origin !== window.location.origin) {\n throw new Error('Cross origin request are not allowed.');\n }\n\n this.$emit('before-fetch', url);\n\n // @todo add option to use content as is or to parse it and extract the new frame\n const content = await this.fetch(url, formData);\n const doc = this.parseHTML(content);\n const el = doc.querySelector(`#${this.id}`);\n // @todo manage el === null\n const newFrame = new Frame(el as HTMLElement);\n newFrame.$children.registerAll();\n\n this.$emit('after-fetch', url, content);\n\n this.$emit('before-leave');\n // Leave all\n await Promise.all(this.directChildrenFrameTarget.map((target) => target.leave()));\n\n this.$emit('after-leave');\n this.$emit('before-content');\n\n // Update content\n // @todo insert non existing FrameTarget as well\n this.directChildrenFrameTarget.map((target, index) =>\n target.updateContent(newFrame.directChildrenFrameTarget[index]),\n );\n\n // Push history\n if (this.$options.history && formData === null) {\n document.title = doc.title;\n historyPush({ path: parsedUrl.pathname, search: parsedUrl.searchParams });\n }\n\n if (scroll) {\n document.scrollingElement.scrollTop = scroll.top;\n document.scrollingElement.scrollLeft = scroll.left;\n }\n\n // Update components\n await nextFrame();\n this.$root.$update();\n await nextFrame();\n\n this.$emit('after-content');\n this.$emit('before-enter');\n\n // Enter all\n await Promise.all(this.directChildrenFrameTarget.map((target) => target.enter()));\n\n this.$emit('after-enter');\n }\n\n /**\n * Fetch the given url.\n */\n async fetch(url: string, formData: FormData = null): Promise<string> {\n // @note skip cache for POST requests.\n if (formData) {\n const promise = fetch(url, {\n method: 'post',\n body: formData,\n }).then((response) => response.text());\n\n const content = await promise;\n return content;\n }\n\n const cached = cache.get(url);\n\n if (cached) {\n if (cached.status === 'pending') {\n return cached.promise;\n }\n\n return cached.content;\n }\n\n const promise = fetch(url).then((response) => response.text());\n\n try {\n cache.set(url, {\n promise,\n status: 'pending',\n content: undefined,\n });\n\n const content = await promise;\n\n cache.set(url, {\n promise,\n status: 'resolved',\n content,\n });\n\n return content;\n } catch (err) {\n cache.set(url, {\n promise,\n status: 'error',\n content: err,\n });\n\n return err;\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["promise"]
|
|
7
7
|
}
|
|
@@ -53,12 +53,12 @@ export declare class Frame<T extends BaseProps = BaseProps> extends Base<T & Fra
|
|
|
53
53
|
/**
|
|
54
54
|
* Go to the given url.
|
|
55
55
|
*/
|
|
56
|
-
goTo(url: string, scroll?: {
|
|
56
|
+
goTo(url: string, formData?: FormData, scroll?: {
|
|
57
57
|
top: number;
|
|
58
58
|
left: number;
|
|
59
59
|
}): Promise<void>;
|
|
60
60
|
/**
|
|
61
61
|
* Fetch the given url.
|
|
62
62
|
*/
|
|
63
|
-
fetch(url: string): Promise<string>;
|
|
63
|
+
fetch(url: string, formData?: FormData): Promise<string>;
|
|
64
64
|
}
|
package/organisms/Frame/Frame.js
CHANGED
|
@@ -68,7 +68,7 @@ class Frame extends Base {
|
|
|
68
68
|
* Go to the previous URL on `popstate` event.
|
|
69
69
|
*/
|
|
70
70
|
onWindowPopstate(event) {
|
|
71
|
-
this.goTo(window.location.href, event.state);
|
|
71
|
+
this.goTo(window.location.href, null, event.state);
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
74
74
|
* Prevent click on `FrameAnchor`.
|
|
@@ -96,8 +96,13 @@ class Frame extends Base {
|
|
|
96
96
|
event.preventDefault();
|
|
97
97
|
const form = this.$children.FrameForm[index];
|
|
98
98
|
const url = new URL(form.action);
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
if (form.$el.method === "get") {
|
|
100
|
+
url.search = new URLSearchParams(new FormData(form.$el)).toString();
|
|
101
|
+
this.goTo(url.toString());
|
|
102
|
+
}
|
|
103
|
+
if (form.$el.method === "post") {
|
|
104
|
+
this.goTo(url.toString(), new FormData(form.$el));
|
|
105
|
+
}
|
|
101
106
|
}
|
|
102
107
|
/**
|
|
103
108
|
* Parge an HTML string into a DOM object.
|
|
@@ -108,14 +113,14 @@ class Frame extends Base {
|
|
|
108
113
|
/**
|
|
109
114
|
* Go to the given url.
|
|
110
115
|
*/
|
|
111
|
-
async goTo(url, scroll = null) {
|
|
116
|
+
async goTo(url, formData = null, scroll = null) {
|
|
112
117
|
this.$log("goTo", url);
|
|
113
118
|
const parsedUrl = new URL(url);
|
|
114
119
|
if (parsedUrl.origin !== window.location.origin) {
|
|
115
120
|
throw new Error("Cross origin request are not allowed.");
|
|
116
121
|
}
|
|
117
122
|
this.$emit("before-fetch", url);
|
|
118
|
-
const content = await this.fetch(url);
|
|
123
|
+
const content = await this.fetch(url, formData);
|
|
119
124
|
const doc = this.parseHTML(content);
|
|
120
125
|
const el = doc.querySelector(`#${this.id}`);
|
|
121
126
|
const newFrame = new Frame(el);
|
|
@@ -128,7 +133,7 @@ class Frame extends Base {
|
|
|
128
133
|
this.directChildrenFrameTarget.map(
|
|
129
134
|
(target, index) => target.updateContent(newFrame.directChildrenFrameTarget[index])
|
|
130
135
|
);
|
|
131
|
-
if (this.$options.history) {
|
|
136
|
+
if (this.$options.history && formData === null) {
|
|
132
137
|
document.title = doc.title;
|
|
133
138
|
historyPush({ path: parsedUrl.pathname, search: parsedUrl.searchParams });
|
|
134
139
|
}
|
|
@@ -147,7 +152,15 @@ class Frame extends Base {
|
|
|
147
152
|
/**
|
|
148
153
|
* Fetch the given url.
|
|
149
154
|
*/
|
|
150
|
-
async fetch(url) {
|
|
155
|
+
async fetch(url, formData = null) {
|
|
156
|
+
if (formData) {
|
|
157
|
+
const promise2 = fetch(url, {
|
|
158
|
+
method: "post",
|
|
159
|
+
body: formData
|
|
160
|
+
}).then((response) => response.text());
|
|
161
|
+
const content = await promise2;
|
|
162
|
+
return content;
|
|
163
|
+
}
|
|
151
164
|
const cached = cache.get(url);
|
|
152
165
|
if (cached) {
|
|
153
166
|
if (cached.status === "pending") {
|