@plitzi/sdk-elements 0.37.2 → 0.37.4
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/CHANGELOG.md +1180 -0
- package/dist/Component/ComponentProvider.mjs +10 -5
- package/dist/Element/JsxManager.mjs +1 -0
- package/dist/Element/PluginRemote.d.ts +3 -1
- package/dist/Element/PluginRemote.mjs +9 -9
- package/dist/Element/helpers/elementConstants.mjs +28 -0
- package/dist/Element/helpers/elementUtils.mjs +1 -1
- package/dist/Element/helpers/loadComponent.d.ts +6 -1
- package/dist/Element/helpers/loadComponent.mjs +7 -7
- package/dist/Element/helpers/pluginSelector.mjs +1 -0
- package/dist/Element/hooks/useElementDataSource.mjs +23 -16
- package/dist/Element/hooks/useElementInternal.mjs +60 -52
- package/dist/Element/hooks/useInternalClassName.mjs +19 -18
- package/dist/Element/hooks/useKeyTriggers.d.ts +18 -0
- package/dist/Element/hooks/useKeyTriggers.mjs +36 -0
- package/dist/Element/hooks/useRootElementInteractions.mjs +65 -56
- package/dist/Element/hooks/useRscData.mjs +20 -15
- package/dist/dataSource/GlobalSources.mjs +114 -80
- package/dist/dataSource/getSourcesByElementId.mjs +2 -2
- package/dist/elements/advanced/BlockJsx/BlockJsx.mjs +1 -1
- package/dist/elements/advanced/NodeHtml/declaration.d.ts +1 -1
- package/dist/elements/advanced/NodeHtml/index.d.ts +1 -1
- package/dist/elements/basic/Button/Button.d.ts +10 -3
- package/dist/elements/basic/Button/Button.mjs +5 -5
- package/dist/elements/basic/Button/Settings.d.ts +2 -1
- package/dist/elements/basic/Button/Settings.mjs +14 -7
- package/dist/elements/basic/Button/declaration.d.ts +8 -3
- package/dist/elements/basic/Button/declaration.mjs +14 -6
- package/dist/elements/basic/Button/index.d.ts +8 -3
- package/dist/elements/basic/Dropdown/Dropdown.mjs +48 -39
- package/dist/elements/basic/Dropdown/declaration.d.ts +3 -0
- package/dist/elements/basic/Dropdown/declaration.mjs +9 -3
- package/dist/elements/basic/Dropdown/index.d.ts +3 -0
- package/dist/elements/basic/Dropdown/useDropdown.d.ts +6 -1
- package/dist/elements/basic/Dropdown/useDropdown.mjs +58 -41
- package/dist/elements/basic/Dropdown/useDropdownTrigger.d.ts +26 -0
- package/dist/elements/basic/Dropdown/useDropdownTrigger.mjs +30 -0
- package/dist/elements/basic/Heading/declaration.d.ts +9 -6
- package/dist/elements/basic/Heading/declaration.mjs +17 -9
- package/dist/elements/basic/Heading/index.d.ts +9 -6
- package/dist/elements/basic/Link/Link.mjs +4 -1
- package/dist/elements/basic/Link/Settings.d.ts +2 -1
- package/dist/elements/basic/Link/Settings.mjs +31 -24
- package/dist/elements/basic/Link/declaration.d.ts +5 -1
- package/dist/elements/basic/Link/declaration.mjs +16 -3
- package/dist/elements/basic/Link/index.d.ts +5 -1
- package/dist/elements/basic/Markdown/declaration.d.ts +1 -1
- package/dist/elements/basic/Markdown/declaration.mjs +1 -1
- package/dist/elements/basic/Markdown/index.d.ts +1 -1
- package/dist/elements/basic/RichText/declaration.d.ts +3 -0
- package/dist/elements/basic/RichText/declaration.mjs +8 -3
- package/dist/elements/basic/RichText/index.d.ts +3 -0
- package/dist/elements/basic/Text/declaration.d.ts +1 -1
- package/dist/elements/basic/Text/declaration.mjs +1 -1
- package/dist/elements/basic/Text/index.d.ts +1 -1
- package/dist/elements/basic/ThemeToggle/ThemeToggle.mjs +3 -0
- package/dist/elements/basic/ThemeToggle/declaration.d.ts +3 -0
- package/dist/elements/basic/ThemeToggle/declaration.mjs +4 -3
- package/dist/elements/basic/ThemeToggle/index.d.ts +3 -0
- package/dist/elements/declarations/index.d.ts +217 -17
- package/dist/elements/declarations/index.mjs +24 -22
- package/dist/elements/form/Form/declaration.d.ts +3 -0
- package/dist/elements/form/Form/declaration.mjs +4 -3
- package/dist/elements/form/Form/index.d.ts +3 -0
- package/dist/elements/form/FormControl/FormControl.d.ts +18 -6
- package/dist/elements/form/FormControl/FormControl.mjs +135 -127
- package/dist/elements/form/FormControl/Settings.d.ts +3 -1
- package/dist/elements/form/FormControl/Settings.mjs +73 -57
- package/dist/elements/form/FormControl/components/Label.d.ts +3 -1
- package/dist/elements/form/FormControl/components/Label.mjs +20 -18
- package/dist/elements/form/FormControl/components/visuallyHidden.d.ts +6 -0
- package/dist/elements/form/FormControl/components/visuallyHidden.mjs +14 -0
- package/dist/elements/form/FormControl/declaration.d.ts +5 -0
- package/dist/elements/form/FormControl/declaration.mjs +46 -30
- package/dist/elements/form/FormControl/hocs/withFieldValue.mjs +68 -61
- package/dist/elements/form/FormControl/index.d.ts +5 -0
- package/dist/elements/form/FormControl/inputs/Checkbox.d.ts +6 -1
- package/dist/elements/form/FormControl/inputs/Checkbox.mjs +5 -3
- package/dist/elements/form/FormControl/inputs/Input.d.ts +8 -1
- package/dist/elements/form/FormControl/inputs/Input.mjs +44 -38
- package/dist/elements/form/FormControl/inputs/Select.d.ts +6 -1
- package/dist/elements/form/FormControl/inputs/Select.mjs +12 -10
- package/dist/elements/form/FormControl/inputs/Textarea.d.ts +8 -1
- package/dist/elements/form/FormControl/inputs/Textarea.mjs +26 -21
- package/dist/elements/form/FormControl/inputs/useFocusWhenShown.d.ts +7 -0
- package/dist/elements/form/FormControl/inputs/useFocusWhenShown.mjs +9 -0
- package/dist/elements/index.d.ts +3 -1
- package/dist/elements/index.mjs +16 -14
- package/dist/elements/internal/LayoutContainer/declaration.d.ts +3 -0
- package/dist/elements/internal/LayoutContainer/declaration.mjs +15 -3
- package/dist/elements/internal/LayoutContainer/index.d.ts +3 -0
- package/dist/elements/media/FontAwesome/FontAwesome.d.ts +8 -1
- package/dist/elements/media/FontAwesome/FontAwesome.mjs +12 -5
- package/dist/elements/media/FontAwesome/Settings.d.ts +2 -1
- package/dist/elements/media/FontAwesome/Settings.mjs +29 -22
- package/dist/elements/media/FontAwesome/declaration.d.ts +1 -0
- package/dist/elements/media/FontAwesome/index.d.ts +1 -0
- package/dist/elements/media/Image/Image.d.ts +13 -2
- package/dist/elements/media/Image/Image.mjs +25 -25
- package/dist/elements/media/Image/Settings.d.ts +3 -1
- package/dist/elements/media/Image/Settings.mjs +29 -15
- package/dist/elements/media/Image/declaration.d.ts +7 -1
- package/dist/elements/media/Image/declaration.mjs +16 -3
- package/dist/elements/media/Image/index.d.ts +7 -1
- package/dist/elements/provider/ApiContainer/ApiContainer.mjs +145 -137
- package/dist/elements/provider/ApiContainer/declaration.d.ts +14 -1
- package/dist/elements/provider/ApiContainer/declaration.mjs +41 -4
- package/dist/elements/provider/ApiContainer/helpers/isEmptyAnswer.d.ts +16 -0
- package/dist/elements/provider/ApiContainer/helpers/isEmptyAnswer.mjs +4 -0
- package/dist/elements/provider/ApiContainer/helpers/queryInput.d.ts +5 -0
- package/dist/elements/provider/ApiContainer/helpers/queryInput.mjs +12 -0
- package/dist/elements/provider/ApiContainer/index.d.ts +14 -1
- package/dist/elements/provider/Channel/Channel.d.ts +26 -0
- package/dist/elements/provider/Channel/Channel.mjs +92 -0
- package/dist/elements/provider/Channel/Settings.d.ts +9 -0
- package/dist/elements/provider/Channel/Settings.mjs +38 -0
- package/dist/elements/provider/Channel/declaration.d.ts +138 -0
- package/dist/elements/provider/Channel/declaration.mjs +125 -0
- package/dist/elements/provider/Channel/index.d.ts +137 -0
- package/dist/elements/provider/Channel/index.mjs +6 -0
- package/dist/elements/settings.mjs +25 -23
- package/dist/elements/structure/Container/Container.d.ts +16 -2
- package/dist/elements/structure/Container/Container.mjs +18 -9
- package/dist/elements/structure/Container/Settings.d.ts +4 -2
- package/dist/elements/structure/Container/Settings.mjs +110 -69
- package/dist/elements/structure/Container/declaration.d.ts +12 -1
- package/dist/elements/structure/Container/declaration.mjs +35 -3
- package/dist/elements/structure/Container/index.d.ts +6 -1
- package/dist/elements/structure/Container/index.mjs +3 -3
- package/dist/elements/structure/DialogContainer/DialogContainer.mjs +123 -100
- package/dist/elements/structure/List/declaration.d.ts +4 -0
- package/dist/elements/structure/List/declaration.mjs +7 -3
- package/dist/elements/structure/List/index.d.ts +4 -0
- package/dist/elements/structure/ModalContainer/ModalContainer.mjs +92 -80
- package/dist/elements/structure/ModalContainer/metadataFromText.d.ts +1 -0
- package/dist/elements/structure/ModalContainer/metadataFromText.mjs +10 -0
- package/dist/elements/structure/ModalContainer/useModalDialog.d.ts +20 -0
- package/dist/elements/structure/ModalContainer/useModalDialog.mjs +31 -0
- package/dist/elements/structure/Pagination/Pagination.d.ts +6 -1
- package/dist/elements/structure/Pagination/Pagination.mjs +23 -21
- package/dist/elements/structure/Pagination/Settings.d.ts +2 -1
- package/dist/elements/structure/Pagination/Settings.mjs +16 -9
- package/dist/elements/structure/Pagination/declaration.d.ts +5 -0
- package/dist/elements/structure/Pagination/declaration.mjs +7 -3
- package/dist/elements/structure/Pagination/index.d.ts +5 -0
- package/dist/elements/structure/TabContainer/TabContainer.mjs +19 -17
- package/dist/elements/structure/TabContainer/TabContainerBody/TabContainerBody.mjs +8 -6
- package/dist/elements/structure/TabContainer/TabContainerContext.d.ts +2 -0
- package/dist/elements/structure/TabContainer/TabContainerHeader/TabContainerHeader.mjs +18 -14
- package/dist/elements/structure/TabContainer/TabContainerItem/TabContainerItem.d.ts +5 -1
- package/dist/elements/structure/TabContainer/TabContainerItem/TabContainerItem.mjs +48 -13
- package/dist/elements/structure/TabContainer/TabContainerItem/declaration.d.ts +1 -1
- package/dist/index.d.ts +220 -16
- package/dist/index.mjs +20 -17
- package/dist/realtime/useChannel.d.ts +35 -0
- package/dist/realtime/useChannel.mjs +57 -0
- package/package.json +67 -11
- package/dist/elements/media/FontAwesome/FontAwesome.stories-paused.d.ts +0 -1
|
@@ -2,116 +2,128 @@ import e from "../../../Element/hocs/withElement.mjs";
|
|
|
2
2
|
import t from "../../../Element/hooks/useElement.mjs";
|
|
3
3
|
import { RootElement as n } from "../../../Element/RootElement.mjs";
|
|
4
4
|
import r from "../../../dataSource/pathFields.mjs";
|
|
5
|
-
import i from "./
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import h from "
|
|
12
|
-
import g from "
|
|
13
|
-
import
|
|
5
|
+
import i from "./useModalDialog.mjs";
|
|
6
|
+
import a from "./declaration.mjs";
|
|
7
|
+
import { metadataFromText as o } from "./metadataFromText.mjs";
|
|
8
|
+
import { use as s, useCallback as c, useEffect as l, useMemo as u, useRef as d, useState as f } from "react";
|
|
9
|
+
import p from "@plitzi/sdk-shared/hooks/usePlitziServiceContext";
|
|
10
|
+
import { StoreProvider as m } from "@plitzi/nexus/react";
|
|
11
|
+
import { emptyObject as h } from "@plitzi/sdk-shared/helpers/utils";
|
|
12
|
+
import { jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
13
|
+
import v from "clsx";
|
|
14
|
+
import y from "@plitzi/sdk-shared/dataSource/helpers/getSourceName";
|
|
15
|
+
import b from "@plitzi/sdk-shared/dataSource/hooks/useRegisterSource";
|
|
14
16
|
//#region src/elements/structure/ModalContainer/ModalContainer.tsx
|
|
15
|
-
var
|
|
16
|
-
let { id:
|
|
17
|
+
var x = ({ ref: e, className: x = "", children: S, title: C = "Modal Header", autoHideAfterClick: w = !0 }) => {
|
|
18
|
+
let { id: T, rootId: E, visible: D, definition: { styleSelectors: O, label: k = "Modal" }, elementState: A, setElementState: j } = t(), M = y(a.sourceType, T), { settings: { previewMode: N }, contexts: { InteractionsContext: P } } = p(), { interactionsManager: F } = s(P), [I, L] = f({}), R = d(null), z = `${E}_${T}_title`, B = c((e) => {
|
|
17
19
|
let { metadata: t } = e;
|
|
18
|
-
|
|
19
|
-
else if (typeof t == "string") try {
|
|
20
|
-
j(JSON.parse(t));
|
|
21
|
-
} catch {
|
|
22
|
-
j({ content: t });
|
|
23
|
-
}
|
|
24
|
-
else j(typeof t == "boolean" || typeof t == "number" ? { content: t } : {});
|
|
25
|
-
E((e) => ({
|
|
20
|
+
L(t && typeof t == "object" ? t : typeof t == "string" ? o(t) : typeof t == "boolean" || typeof t == "number" ? { content: t } : {}), j((e) => ({
|
|
26
21
|
...e,
|
|
27
22
|
visibility: !0
|
|
28
23
|
}));
|
|
29
|
-
}, [
|
|
30
|
-
|
|
24
|
+
}, [j, L]), V = c(() => {
|
|
25
|
+
F.interactionTrigger(T, "onModalClose", { metadata: I }), L({}), j((e) => ({
|
|
31
26
|
...e,
|
|
32
27
|
visibility: !1
|
|
33
28
|
}));
|
|
34
29
|
}, [
|
|
35
|
-
|
|
36
|
-
E,
|
|
30
|
+
F,
|
|
37
31
|
j,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
L,
|
|
33
|
+
I,
|
|
34
|
+
T
|
|
35
|
+
]), H = c(() => {
|
|
36
|
+
w && (F.interactionTrigger(T, "onModalClose", { metadata: I }), L({}), j((e) => ({
|
|
42
37
|
...e,
|
|
43
38
|
visibility: !1
|
|
44
39
|
})));
|
|
45
40
|
}, [
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
E,
|
|
41
|
+
F,
|
|
42
|
+
w,
|
|
49
43
|
j,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
44
|
+
L,
|
|
45
|
+
I,
|
|
46
|
+
T
|
|
47
|
+
]), U = u(() => ({
|
|
53
48
|
openModal: {
|
|
54
|
-
...
|
|
55
|
-
title: `Open ${
|
|
56
|
-
callback:
|
|
49
|
+
...a.callbacks.openModal,
|
|
50
|
+
title: `Open ${k}`,
|
|
51
|
+
callback: B
|
|
57
52
|
},
|
|
58
53
|
closeModal: {
|
|
59
|
-
...
|
|
60
|
-
title: `Close ${
|
|
61
|
-
callback:
|
|
54
|
+
...a.callbacks.closeModal,
|
|
55
|
+
title: `Close ${k}`,
|
|
56
|
+
callback: V
|
|
62
57
|
}
|
|
63
58
|
}), [
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
59
|
+
V,
|
|
60
|
+
B,
|
|
61
|
+
k
|
|
67
62
|
]);
|
|
68
|
-
|
|
69
|
-
|
|
63
|
+
i({
|
|
64
|
+
panelRef: R,
|
|
65
|
+
open: !!N && D,
|
|
66
|
+
onClose: V
|
|
67
|
+
}), l(() => {
|
|
68
|
+
A.visibility !== !1 && F.interactionTrigger(T, "onModalOpen", { metadata: I });
|
|
70
69
|
}, [
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
T,
|
|
71
|
+
F,
|
|
72
|
+
I,
|
|
73
|
+
A.visibility
|
|
75
74
|
]);
|
|
76
|
-
let
|
|
77
|
-
|
|
78
|
-
id:
|
|
79
|
-
source:
|
|
80
|
-
name:
|
|
81
|
-
fields:
|
|
75
|
+
let W = c(() => r(I), [I]);
|
|
76
|
+
b({
|
|
77
|
+
id: T,
|
|
78
|
+
source: M,
|
|
79
|
+
name: k || `Modal - ${T}`,
|
|
80
|
+
fields: W
|
|
82
81
|
});
|
|
83
|
-
let
|
|
84
|
-
return /* @__PURE__ */
|
|
82
|
+
let G = u(() => M ? { runtime: { sources: { [M]: I } } } : h, [M, I]);
|
|
83
|
+
return /* @__PURE__ */ _(n, {
|
|
85
84
|
ref: e,
|
|
86
|
-
className:
|
|
87
|
-
interactionTriggers:
|
|
88
|
-
interactionCallbacks:
|
|
89
|
-
children: [/* @__PURE__ */
|
|
90
|
-
className:
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
85
|
+
className: v("plitzi-component__modal-container", x),
|
|
86
|
+
interactionTriggers: a.triggers,
|
|
87
|
+
interactionCallbacks: U,
|
|
88
|
+
children: [/* @__PURE__ */ g("div", {
|
|
89
|
+
className: v("modal-container__background", O.backgroundContainer),
|
|
90
|
+
"aria-hidden": "true",
|
|
91
|
+
onClick: H
|
|
92
|
+
}), /* @__PURE__ */ _("div", {
|
|
93
|
+
ref: R,
|
|
94
|
+
className: v("modal-container__root", O.rootContainer),
|
|
95
|
+
role: "dialog",
|
|
96
|
+
"aria-modal": "true",
|
|
97
|
+
"aria-labelledby": z,
|
|
98
|
+
tabIndex: -1,
|
|
99
|
+
children: [/* @__PURE__ */ _("div", {
|
|
100
|
+
className: v("modal-container__header", O.headerContainer),
|
|
101
|
+
children: [/* @__PURE__ */ g("div", {
|
|
102
|
+
id: z,
|
|
103
|
+
className: v("modal-container__header__title", O.headerTitle),
|
|
104
|
+
children: C || "Modal Header"
|
|
105
|
+
}), /* @__PURE__ */ g("button", {
|
|
106
|
+
type: "button",
|
|
107
|
+
className: v("modal-container__close", O.headerCloseButton),
|
|
108
|
+
"aria-label": "Close",
|
|
101
109
|
title: "Close",
|
|
102
|
-
onClick:
|
|
110
|
+
onClick: V,
|
|
111
|
+
children: /* @__PURE__ */ g("i", {
|
|
112
|
+
className: "fa-solid fa-xmark",
|
|
113
|
+
"aria-hidden": "true"
|
|
114
|
+
})
|
|
103
115
|
})]
|
|
104
|
-
}), /* @__PURE__ */
|
|
105
|
-
className:
|
|
106
|
-
children: /* @__PURE__ */
|
|
116
|
+
}), /* @__PURE__ */ g("div", {
|
|
117
|
+
className: v("modal-container__body", O.bodyContainer),
|
|
118
|
+
children: /* @__PURE__ */ g(m, {
|
|
107
119
|
inherit: "live",
|
|
108
|
-
name: `Modal:${
|
|
109
|
-
value:
|
|
110
|
-
children:
|
|
120
|
+
name: `Modal:${T}`,
|
|
121
|
+
value: G,
|
|
122
|
+
children: S
|
|
111
123
|
})
|
|
112
124
|
})]
|
|
113
125
|
})]
|
|
114
126
|
});
|
|
115
|
-
},
|
|
127
|
+
}, S = e(x);
|
|
116
128
|
//#endregion
|
|
117
|
-
export {
|
|
129
|
+
export { x as ModalContainer, S as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const metadataFromText: (metadata: string) => Record<string, unknown>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//#region src/elements/structure/ModalContainer/metadataFromText.ts
|
|
2
|
+
var e = (e) => typeof e == "object" && !!e && !Array.isArray(e), t = (t) => {
|
|
3
|
+
try {
|
|
4
|
+
let n = JSON.parse(t);
|
|
5
|
+
if (e(n)) return n;
|
|
6
|
+
} catch {}
|
|
7
|
+
return { content: t };
|
|
8
|
+
};
|
|
9
|
+
//#endregion
|
|
10
|
+
export { t as metadataFromText };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
export type UseModalDialogProps = {
|
|
3
|
+
/** The box that holds the dialog's content: what takes the focus, and what the focus is kept inside. */
|
|
4
|
+
panelRef: RefObject<HTMLElement | null>;
|
|
5
|
+
/** Shown, and on a rendered page — never in the builder, where the modal is something being edited. */
|
|
6
|
+
open: boolean;
|
|
7
|
+
/** What Escape does: the same as the close button. */
|
|
8
|
+
onClose: () => void;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* What `aria-modal` promises, kept: while a modal is open the keyboard lives inside it.
|
|
12
|
+
*
|
|
13
|
+
* - **The focus moves in** as it opens — to the panel itself, so a screen reader reads its name first; a control inside
|
|
14
|
+
* that took the focus on its own (`autoFocus`) keeps it.
|
|
15
|
+
* - **Tab and Shift+Tab go round** the panel's controls instead of walking out into the page behind it.
|
|
16
|
+
* - **Escape closes it**, as its close button does.
|
|
17
|
+
* - **The focus goes back** to whatever had it before, so a person — or a browser agent — carries on where they were.
|
|
18
|
+
*/
|
|
19
|
+
declare const useModalDialog: ({ panelRef, open, onClose }: UseModalDialogProps) => void;
|
|
20
|
+
export default useModalDialog;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useEffect as e, useEffectEvent as t } from "react";
|
|
2
|
+
//#region src/elements/structure/ModalContainer/useModalDialog.ts
|
|
3
|
+
var n = "a[href], button:not([disabled]), input:not([disabled]):not([type=\"hidden\"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]), [contenteditable=\"true\"]", r = (e) => [...e.querySelectorAll(n)].filter((e) => typeof e.checkVisibility != "function" || e.checkVisibility()), i = ({ panelRef: n, open: i, onClose: a }) => {
|
|
4
|
+
let o = t(a);
|
|
5
|
+
e(() => {
|
|
6
|
+
let e = n.current;
|
|
7
|
+
if (!i || !e) return;
|
|
8
|
+
let t = e.ownerDocument.activeElement;
|
|
9
|
+
e.contains(t) || e.focus({ preventScroll: !0 });
|
|
10
|
+
let a = (t) => {
|
|
11
|
+
if (t.defaultPrevented) return;
|
|
12
|
+
if (t.key === "Escape") {
|
|
13
|
+
t.preventDefault(), o();
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (t.key !== "Tab") return;
|
|
17
|
+
let n = r(e);
|
|
18
|
+
if (n.length === 0) {
|
|
19
|
+
t.preventDefault(), e.focus({ preventScroll: !0 });
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
let i = n[0], a = n[n.length - 1], s = e.ownerDocument.activeElement;
|
|
23
|
+
t.shiftKey && (s === i || s === e || !e.contains(s)) ? (t.preventDefault(), a.focus()) : !t.shiftKey && (s === a || !e.contains(s)) && (t.preventDefault(), i.focus());
|
|
24
|
+
}, s = e.ownerDocument.defaultView;
|
|
25
|
+
return s?.addEventListener("keydown", a), () => {
|
|
26
|
+
s?.removeEventListener("keydown", a), t instanceof HTMLElement && t.isConnected && t.focus({ preventScroll: !0 });
|
|
27
|
+
};
|
|
28
|
+
}, [i, n]);
|
|
29
|
+
};
|
|
30
|
+
//#endregion
|
|
31
|
+
export { i as default };
|
|
@@ -24,6 +24,11 @@ export type PaginationProps = {
|
|
|
24
24
|
previousLabel?: string;
|
|
25
25
|
nextLabel?: string;
|
|
26
26
|
loadMoreLabel?: string;
|
|
27
|
+
/**
|
|
28
|
+
* The pager's name, in the site's language: a page often has more than one navigation, and a screen reader or a
|
|
29
|
+
* browser agent lists them by name.
|
|
30
|
+
*/
|
|
31
|
+
label?: string;
|
|
27
32
|
};
|
|
28
33
|
/**
|
|
29
34
|
* Renders a pager over any `pageInfo`-shaped source.
|
|
@@ -32,7 +37,7 @@ export type PaginationProps = {
|
|
|
32
37
|
* interaction mode it only announces the page the visitor asked for. A plugin that publishes the same shape gets a
|
|
33
38
|
* working pager for free.
|
|
34
39
|
*/
|
|
35
|
-
declare const Pagination: ({ ref, className, children, pageInfo, mode, pageParam, target, windowSize, previousLabel, nextLabel, loadMoreLabel }: PaginationProps) => import('react').JSX.Element;
|
|
40
|
+
declare const Pagination: ({ ref, className, children, pageInfo, mode, pageParam, target, windowSize, previousLabel, nextLabel, loadMoreLabel, label }: PaginationProps) => import('react').JSX.Element;
|
|
36
41
|
declare const _default: {
|
|
37
42
|
(props: import('../../../Element/hocs/withElement').WithElementProps<PaginationProps>): import('react').JSX.Element;
|
|
38
43
|
displayName: string;
|
|
@@ -14,59 +14,61 @@ var h = (e, t) => {
|
|
|
14
14
|
if (typeof window > "u") return "";
|
|
15
15
|
let n = new URL(window.location.href);
|
|
16
16
|
return t <= 1 ? n.searchParams.delete(e) : n.searchParams.set(e, String(t)), `${n.pathname}${n.search}`;
|
|
17
|
-
}, g = ({ ref: e, className: g = "", children: _, pageInfo: v = u, mode: y = "pages", pageParam: b = "page", target: x = "url", windowSize: S = 5, previousLabel: C = "Previous", nextLabel: w = "Next", loadMoreLabel: T = "Load more" }) => {
|
|
18
|
-
let { id:
|
|
19
|
-
j,
|
|
17
|
+
}, g = ({ ref: e, className: g = "", children: _, pageInfo: v = u, mode: y = "pages", pageParam: b = "page", target: x = "url", windowSize: S = 5, previousLabel: C = "Previous", nextLabel: w = "Next", loadMoreLabel: T = "Load more", label: E = "Pagination" }) => {
|
|
18
|
+
let { id: D } = t(), { settings: { previewMode: O }, contexts: { InteractionsContext: k } } = c(), { interactionsManager: A } = a(k), [j] = l("navigation.navigate"), M = v.page ?? 1, N = v.pageCount ?? 0, P = v.hasPrevPage ?? M > 1, F = v.hasNextPage ?? !1, I = s(() => i(M, N, S), [
|
|
20
19
|
M,
|
|
20
|
+
N,
|
|
21
21
|
S
|
|
22
|
-
]),
|
|
22
|
+
]), L = o((e) => {
|
|
23
23
|
let t = Math.max(e, 1);
|
|
24
|
-
|
|
24
|
+
D && A.interactionTrigger(D, "onPageChange", { page: t }), x === "url" && j(h(b, t));
|
|
25
25
|
}, [
|
|
26
|
-
|
|
27
|
-
k,
|
|
28
|
-
x,
|
|
26
|
+
D,
|
|
29
27
|
A,
|
|
28
|
+
x,
|
|
29
|
+
j,
|
|
30
30
|
b
|
|
31
|
-
]),
|
|
32
|
-
t.preventDefault(),
|
|
33
|
-
}, [
|
|
31
|
+
]), R = o((e) => (t) => {
|
|
32
|
+
t.preventDefault(), L(e);
|
|
33
|
+
}, [L]), z = N === 0 && !F && !P;
|
|
34
34
|
return /* @__PURE__ */ p(n, {
|
|
35
35
|
ref: e,
|
|
36
36
|
tag: "nav",
|
|
37
|
+
"aria-label": E || void 0,
|
|
37
38
|
className: m("plitzi-component__pagination", g),
|
|
38
39
|
interactionTriggers: r.triggers,
|
|
39
40
|
children: [
|
|
40
41
|
y === "loadMore" && /* @__PURE__ */ f("button", {
|
|
41
42
|
type: "button",
|
|
42
43
|
className: "plitzi-component__pagination-more",
|
|
43
|
-
disabled: !
|
|
44
|
-
onClick:
|
|
44
|
+
disabled: !F && O,
|
|
45
|
+
onClick: R(M + 1),
|
|
45
46
|
children: T
|
|
46
47
|
}),
|
|
47
48
|
y === "pages" && /* @__PURE__ */ p(d, { children: [
|
|
48
49
|
/* @__PURE__ */ f("button", {
|
|
49
50
|
type: "button",
|
|
50
51
|
className: "plitzi-component__pagination-prev",
|
|
51
|
-
disabled: !
|
|
52
|
-
onClick:
|
|
52
|
+
disabled: !P && O,
|
|
53
|
+
onClick: R(M - 1),
|
|
53
54
|
children: C
|
|
54
55
|
}),
|
|
55
|
-
|
|
56
|
+
I.map((e) => /* @__PURE__ */ f("button", {
|
|
56
57
|
type: "button",
|
|
57
|
-
className: m("plitzi-component__pagination-page", { "plitzi-component__pagination-page--current": e ===
|
|
58
|
-
|
|
58
|
+
className: m("plitzi-component__pagination-page", { "plitzi-component__pagination-page--current": e === M }),
|
|
59
|
+
"aria-current": e === M ? "page" : void 0,
|
|
60
|
+
onClick: R(e),
|
|
59
61
|
children: e
|
|
60
62
|
}, e)),
|
|
61
63
|
/* @__PURE__ */ f("button", {
|
|
62
64
|
type: "button",
|
|
63
65
|
className: "plitzi-component__pagination-next",
|
|
64
|
-
disabled: !
|
|
65
|
-
onClick:
|
|
66
|
+
disabled: !F && O,
|
|
67
|
+
onClick: R(M + 1),
|
|
66
68
|
children: w
|
|
67
69
|
})
|
|
68
70
|
] }),
|
|
69
|
-
!
|
|
71
|
+
!O && z && /* @__PURE__ */ f("span", {
|
|
70
72
|
className: "plitzi-component__pagination-hint",
|
|
71
73
|
children: "Bind pageInfo"
|
|
72
74
|
}),
|
|
@@ -6,7 +6,8 @@ type SettingsProps = {
|
|
|
6
6
|
previousLabel?: string;
|
|
7
7
|
nextLabel?: string;
|
|
8
8
|
loadMoreLabel?: string;
|
|
9
|
+
label?: string;
|
|
9
10
|
onUpdate?: (key: string, value: string | boolean | number | object) => void;
|
|
10
11
|
};
|
|
11
|
-
declare const Settings: ({ mode, target, pageParam, windowSize, previousLabel, nextLabel, loadMoreLabel, onUpdate }: SettingsProps) => import('react').JSX.Element;
|
|
12
|
+
declare const Settings: ({ mode, target, pageParam, windowSize, previousLabel, nextLabel, loadMoreLabel, label, onUpdate }: SettingsProps) => import('react').JSX.Element;
|
|
12
13
|
export default Settings;
|
|
@@ -3,15 +3,15 @@ import { Fragment as t, jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
|
3
3
|
import i from "@plitzi/plitzi-ui/Input";
|
|
4
4
|
import a from "@plitzi/plitzi-ui/Select";
|
|
5
5
|
//#region src/elements/structure/Pagination/Settings.tsx
|
|
6
|
-
var o = ({ mode: o = "pages", target: s = "url", pageParam: c = "page", windowSize: l = "5", previousLabel: u = "Previous", nextLabel: d = "Next", loadMoreLabel: f = "Load more",
|
|
7
|
-
let
|
|
6
|
+
var o = ({ mode: o = "pages", target: s = "url", pageParam: c = "page", windowSize: l = "5", previousLabel: u = "Previous", nextLabel: d = "Next", loadMoreLabel: f = "Load more", label: p = "Pagination", onUpdate: m }) => {
|
|
7
|
+
let h = e((e) => (t) => m?.(e, t), [m]);
|
|
8
8
|
return /* @__PURE__ */ r("div", {
|
|
9
9
|
className: "flex grow flex-col gap-4 py-2",
|
|
10
10
|
children: [
|
|
11
11
|
/* @__PURE__ */ r(a, {
|
|
12
12
|
value: o,
|
|
13
13
|
label: "Mode",
|
|
14
|
-
onChange:
|
|
14
|
+
onChange: h("mode"),
|
|
15
15
|
size: "xs",
|
|
16
16
|
children: [/* @__PURE__ */ n("option", {
|
|
17
17
|
value: "pages",
|
|
@@ -24,7 +24,7 @@ var o = ({ mode: o = "pages", target: s = "url", pageParam: c = "page", windowSi
|
|
|
24
24
|
/* @__PURE__ */ r(a, {
|
|
25
25
|
value: s,
|
|
26
26
|
label: "On Page Change",
|
|
27
|
-
onChange:
|
|
27
|
+
onChange: h("target"),
|
|
28
28
|
size: "xs",
|
|
29
29
|
children: [/* @__PURE__ */ n("option", {
|
|
30
30
|
value: "url",
|
|
@@ -38,33 +38,40 @@ var o = ({ mode: o = "pages", target: s = "url", pageParam: c = "page", windowSi
|
|
|
38
38
|
value: c,
|
|
39
39
|
label: "Page parameter",
|
|
40
40
|
title: "Must match the page parameter of the provider this pager belongs to.",
|
|
41
|
-
onChange:
|
|
41
|
+
onChange: h("pageParam"),
|
|
42
42
|
size: "xs"
|
|
43
43
|
}),
|
|
44
44
|
o === "pages" && /* @__PURE__ */ r(t, { children: [
|
|
45
45
|
/* @__PURE__ */ n(i, {
|
|
46
46
|
value: l,
|
|
47
47
|
label: "Pages shown",
|
|
48
|
-
onChange:
|
|
48
|
+
onChange: h("windowSize"),
|
|
49
49
|
size: "xs"
|
|
50
50
|
}),
|
|
51
51
|
/* @__PURE__ */ n(i, {
|
|
52
52
|
value: u,
|
|
53
53
|
label: "Previous label",
|
|
54
|
-
onChange:
|
|
54
|
+
onChange: h("previousLabel"),
|
|
55
55
|
size: "xs"
|
|
56
56
|
}),
|
|
57
57
|
/* @__PURE__ */ n(i, {
|
|
58
58
|
value: d,
|
|
59
59
|
label: "Next label",
|
|
60
|
-
onChange:
|
|
60
|
+
onChange: h("nextLabel"),
|
|
61
61
|
size: "xs"
|
|
62
62
|
})
|
|
63
63
|
] }),
|
|
64
64
|
o === "loadMore" && /* @__PURE__ */ n(i, {
|
|
65
65
|
value: f,
|
|
66
66
|
label: "Button label",
|
|
67
|
-
onChange:
|
|
67
|
+
onChange: h("loadMoreLabel"),
|
|
68
|
+
size: "xs"
|
|
69
|
+
}),
|
|
70
|
+
/* @__PURE__ */ n(i, {
|
|
71
|
+
value: p,
|
|
72
|
+
label: "Navigation name",
|
|
73
|
+
title: "What a screen reader calls this pager, in the site's language.",
|
|
74
|
+
onChange: h("label"),
|
|
68
75
|
size: "xs"
|
|
69
76
|
}),
|
|
70
77
|
/* @__PURE__ */ r("span", {
|
|
@@ -4,6 +4,10 @@ import { AuthorableAttributes } from '@plitzi/sdk-shared/authoring/declare';
|
|
|
4
4
|
export type PaginationAttributes = AuthorableAttributes<PaginationProps>;
|
|
5
5
|
declare const declaration: {
|
|
6
6
|
readonly type: "pagination";
|
|
7
|
+
readonly attributeValues: {
|
|
8
|
+
readonly mode: readonly string[];
|
|
9
|
+
readonly target: readonly string[];
|
|
10
|
+
};
|
|
7
11
|
readonly triggers: {
|
|
8
12
|
readonly onPageChange: {
|
|
9
13
|
readonly action: "onPageChange";
|
|
@@ -76,6 +80,7 @@ declare const declaration: {
|
|
|
76
80
|
};
|
|
77
81
|
} & import('@plitzi/sdk-shared/authoring/declare').ElementAttributesBrand<Partial<{
|
|
78
82
|
mode?: "pages" | "loadMore" | undefined;
|
|
83
|
+
label?: string | undefined;
|
|
79
84
|
target?: "url" | "interaction" | undefined;
|
|
80
85
|
pageParam?: string | undefined;
|
|
81
86
|
pageInfo?: import('./Pagination').PaginationPageInfo | undefined;
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import { elementDeclaration as e } from "@plitzi/sdk-shared/authoring/declare";
|
|
1
|
+
import { elementDeclaration as e, valuesOf as t } from "@plitzi/sdk-shared/authoring/declare";
|
|
2
2
|
//#region src/elements/structure/Pagination/declaration.ts
|
|
3
|
-
var
|
|
3
|
+
var n = e()({
|
|
4
4
|
type: "pagination",
|
|
5
|
+
attributeValues: {
|
|
6
|
+
mode: t()(["pages", "loadMore"]),
|
|
7
|
+
target: t()(["url", "interaction"])
|
|
8
|
+
},
|
|
5
9
|
triggers: { onPageChange: {
|
|
6
10
|
action: "onPageChange",
|
|
7
11
|
title: "On Page Change",
|
|
@@ -62,4 +66,4 @@ var t = e()({
|
|
|
62
66
|
}
|
|
63
67
|
});
|
|
64
68
|
//#endregion
|
|
65
|
-
export {
|
|
69
|
+
export { n as default };
|
|
@@ -3,6 +3,10 @@ declare const Pagination: {
|
|
|
3
3
|
displayName: string;
|
|
4
4
|
} & {
|
|
5
5
|
readonly type: "pagination";
|
|
6
|
+
readonly attributeValues: {
|
|
7
|
+
readonly mode: readonly string[];
|
|
8
|
+
readonly target: readonly string[];
|
|
9
|
+
};
|
|
6
10
|
readonly triggers: {
|
|
7
11
|
readonly onPageChange: {
|
|
8
12
|
readonly action: "onPageChange";
|
|
@@ -75,6 +79,7 @@ declare const Pagination: {
|
|
|
75
79
|
};
|
|
76
80
|
} & import('@plitzi/sdk-shared/authoring/declare').ElementAttributesBrand<Partial<{
|
|
77
81
|
mode?: "pages" | "loadMore" | undefined;
|
|
82
|
+
label?: string | undefined;
|
|
78
83
|
target?: "url" | "interaction" | undefined;
|
|
79
84
|
pageParam?: string | undefined;
|
|
80
85
|
pageInfo?: import('./Pagination').PaginationPageInfo | undefined;
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
import e from "../../../Element/hocs/withElement.mjs";
|
|
2
|
-
import
|
|
3
|
-
import n from "
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import o from "
|
|
2
|
+
import t from "../../../Element/hooks/useElement.mjs";
|
|
3
|
+
import { RootElement as n } from "../../../Element/RootElement.mjs";
|
|
4
|
+
import r from "./TabContainerContext.mjs";
|
|
5
|
+
import { useMemo as i, useState as a } from "react";
|
|
6
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
7
|
+
import s from "clsx";
|
|
7
8
|
//#region src/elements/structure/TabContainer/TabContainer.tsx
|
|
8
|
-
var
|
|
9
|
-
let [
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
var c = ({ ref: e, className: c = "", children: l }) => {
|
|
10
|
+
let { id: u, rootId: d } = t(), [f, p] = a(0), m = `${d}_${u}`, h = i(() => ({
|
|
11
|
+
baseId: m,
|
|
12
|
+
tabSelected: f,
|
|
13
|
+
onSelect: p
|
|
14
|
+
}), [m, f]);
|
|
15
|
+
return /* @__PURE__ */ o(n, {
|
|
14
16
|
ref: e,
|
|
15
|
-
className:
|
|
16
|
-
children: /* @__PURE__ */
|
|
17
|
-
value:
|
|
18
|
-
children:
|
|
17
|
+
className: s("plitzi-component__tab-container", c),
|
|
18
|
+
children: /* @__PURE__ */ o(r, {
|
|
19
|
+
value: h,
|
|
20
|
+
children: l
|
|
19
21
|
})
|
|
20
22
|
});
|
|
21
|
-
},
|
|
23
|
+
}, l = e(c);
|
|
22
24
|
//#endregion
|
|
23
|
-
export {
|
|
25
|
+
export { c as TabContainer, l as default };
|
|
@@ -6,7 +6,7 @@ import { jsx as c } from "react/jsx-runtime";
|
|
|
6
6
|
import l from "clsx";
|
|
7
7
|
//#region src/elements/structure/TabContainer/TabContainerBody/TabContainerBody.tsx
|
|
8
8
|
var u = ({ ref: e, className: u = "", children: d }) => {
|
|
9
|
-
let {
|
|
9
|
+
let { baseId: f, tabSelected: p, onSelect: m } = o(n), { childrenParsed: h } = s(() => {
|
|
10
10
|
let e = { childrenParsed: [] };
|
|
11
11
|
return r.forEach(d, (t, n) => {
|
|
12
12
|
if (!a(t)) return;
|
|
@@ -15,21 +15,23 @@ var u = ({ ref: e, className: u = "", children: d }) => {
|
|
|
15
15
|
...r,
|
|
16
16
|
internalProps: {
|
|
17
17
|
...r.internalProps,
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
baseId: f,
|
|
19
|
+
onSelect: m,
|
|
20
|
+
tabSelected: p,
|
|
20
21
|
tabIndex: n
|
|
21
22
|
}
|
|
22
23
|
}));
|
|
23
24
|
}), e;
|
|
24
25
|
}, [
|
|
26
|
+
f,
|
|
25
27
|
d,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
m,
|
|
29
|
+
p
|
|
28
30
|
]);
|
|
29
31
|
return /* @__PURE__ */ c(t, {
|
|
30
32
|
ref: e,
|
|
31
33
|
className: l("plitzi-component__tab-container-body", u),
|
|
32
|
-
children:
|
|
34
|
+
children: h
|
|
33
35
|
});
|
|
34
36
|
}, d = e(u);
|
|
35
37
|
//#endregion
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Dispatch, SetStateAction } from 'react';
|
|
2
2
|
export type TabContainerContextValue = {
|
|
3
|
+
/** What the tabs' and the panels' ids start with, so each tab can name the panel it shows and each panel its tab. */
|
|
4
|
+
baseId: string;
|
|
3
5
|
tabSelected: number;
|
|
4
6
|
onSelect: Dispatch<SetStateAction<number>>;
|
|
5
7
|
};
|