@wordpress/block-library 9.41.1-next.v.202603102151.0 → 9.42.0
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 +2 -0
- package/build/cover/edit/cover-placeholder.cjs +7 -0
- package/build/cover/edit/cover-placeholder.cjs.map +2 -2
- package/build/html/modal.cjs +151 -229
- package/build/html/modal.cjs.map +2 -2
- package/build/image/edit.cjs +7 -0
- package/build/image/edit.cjs.map +2 -2
- package/build/media-text/media-container.cjs +6 -0
- package/build/media-text/media-container.cjs.map +2 -2
- package/build/navigation/edit/index.cjs +5 -4
- package/build/navigation/edit/index.cjs.map +2 -2
- package/build/navigation-link/shared/use-link-preview.cjs +29 -0
- package/build/navigation-link/shared/use-link-preview.cjs.map +2 -2
- package/build/nextpage/block.json +0 -1
- package/build/playlist-track/block.json +0 -0
- package/build/post-date/block.json +1 -3
- package/build/post-date/deprecated.cjs +82 -6
- package/build/post-date/deprecated.cjs.map +3 -3
- package/build/post-date/edit.cjs +49 -62
- package/build/post-date/edit.cjs.map +3 -3
- package/build/site-logo/edit.cjs +1 -3
- package/build/site-logo/edit.cjs.map +2 -2
- package/build/site-title/index.cjs +5 -1
- package/build/site-title/index.cjs.map +2 -2
- package/build/tab/add-tab-toolbar-control.cjs +22 -5
- package/build/tab/add-tab-toolbar-control.cjs.map +2 -2
- package/build/tab/remove-tab-toolbar-control.cjs +19 -1
- package/build/tab/remove-tab-toolbar-control.cjs.map +2 -2
- package/build/tabs/edit.cjs +85 -7
- package/build/tabs/edit.cjs.map +2 -2
- package/build/tabs/index.cjs +12 -2
- package/build/tabs/index.cjs.map +2 -2
- package/build/tabs-menu/block.json +1 -6
- package/build/tabs-menu/edit.cjs +11 -151
- package/build/tabs-menu/edit.cjs.map +3 -3
- package/build/tabs-menu/save.cjs.map +2 -2
- package/build/tabs-menu-item/block.json +14 -11
- package/build/tabs-menu-item/controls.cjs +2 -133
- package/build/tabs-menu-item/controls.cjs.map +3 -3
- package/build/tabs-menu-item/edit.cjs +44 -56
- package/build/tabs-menu-item/edit.cjs.map +3 -3
- package/build/tabs-menu-item/save.cjs +0 -1
- package/build/tabs-menu-item/save.cjs.map +2 -2
- package/build/utils/media-control.cjs +72 -29
- package/build/utils/media-control.cjs.map +3 -3
- package/build-module/cover/edit/cover-placeholder.mjs +7 -0
- package/build-module/cover/edit/cover-placeholder.mjs.map +2 -2
- package/build-module/html/modal.mjs +151 -229
- package/build-module/html/modal.mjs.map +2 -2
- package/build-module/image/edit.mjs +7 -0
- package/build-module/image/edit.mjs.map +2 -2
- package/build-module/media-text/media-container.mjs +7 -1
- package/build-module/media-text/media-container.mjs.map +2 -2
- package/build-module/navigation/edit/index.mjs +5 -4
- package/build-module/navigation/edit/index.mjs.map +2 -2
- package/build-module/navigation-link/shared/use-link-preview.mjs +28 -0
- package/build-module/navigation-link/shared/use-link-preview.mjs.map +2 -2
- package/build-module/nextpage/block.json +0 -1
- package/build-module/playlist-track/block.json +0 -0
- package/build-module/post-date/block.json +1 -3
- package/build-module/post-date/deprecated.mjs +82 -6
- package/build-module/post-date/deprecated.mjs.map +2 -2
- package/build-module/post-date/edit.mjs +49 -63
- package/build-module/post-date/edit.mjs.map +2 -2
- package/build-module/site-logo/edit.mjs +1 -3
- package/build-module/site-logo/edit.mjs.map +2 -2
- package/build-module/site-title/index.mjs +5 -1
- package/build-module/site-title/index.mjs.map +2 -2
- package/build-module/tab/add-tab-toolbar-control.mjs +22 -5
- package/build-module/tab/add-tab-toolbar-control.mjs.map +2 -2
- package/build-module/tab/remove-tab-toolbar-control.mjs +19 -1
- package/build-module/tab/remove-tab-toolbar-control.mjs.map +2 -2
- package/build-module/tabs/edit.mjs +87 -9
- package/build-module/tabs/edit.mjs.map +2 -2
- package/build-module/tabs/index.mjs +12 -2
- package/build-module/tabs/index.mjs.map +2 -2
- package/build-module/tabs-menu/block.json +1 -6
- package/build-module/tabs-menu/edit.mjs +13 -162
- package/build-module/tabs-menu/edit.mjs.map +2 -2
- package/build-module/tabs-menu/save.mjs.map +2 -2
- package/build-module/tabs-menu-item/block.json +14 -11
- package/build-module/tabs-menu-item/controls.mjs +4 -143
- package/build-module/tabs-menu-item/controls.mjs.map +2 -2
- package/build-module/tabs-menu-item/edit.mjs +45 -57
- package/build-module/tabs-menu-item/edit.mjs.map +3 -3
- package/build-module/tabs-menu-item/save.mjs +0 -1
- package/build-module/tabs-menu-item/save.mjs.map +2 -2
- package/build-module/utils/media-control.mjs +73 -30
- package/build-module/utils/media-control.mjs.map +2 -2
- package/build-style/editor-rtl.css +45 -11
- package/build-style/editor.css +45 -11
- package/build-style/navigation/style-rtl.css +4 -0
- package/build-style/navigation/style.css +4 -0
- package/build-style/navigation-overlay-close/style-rtl.css +3 -3
- package/build-style/navigation-overlay-close/style.css +3 -3
- package/build-style/style-rtl.css +7 -3
- package/build-style/style.css +7 -3
- package/build-style/tabs-menu/editor-rtl.css +5 -3
- package/build-style/tabs-menu/editor.css +5 -3
- package/package.json +38 -38
- package/src/cover/edit/cover-placeholder.js +8 -0
- package/src/html/modal.js +6 -77
- package/src/image/edit.js +8 -0
- package/src/media-text/media-container.js +8 -1
- package/src/navigation/edit/index.js +6 -4
- package/src/navigation/index.php +24 -17
- package/src/navigation/style.scss +10 -0
- package/src/navigation-link/index.php +9 -9
- package/src/navigation-link/shared/test/use-link-preview.test.js +149 -0
- package/src/navigation-link/shared/use-link-preview.js +43 -1
- package/src/navigation-overlay-close/style.scss +3 -3
- package/src/navigation-submenu/index.php +17 -11
- package/src/nextpage/block.json +0 -1
- package/src/playlist-track/block.json +0 -0
- package/src/playlist-track/edit.js +0 -0
- package/src/playlist-track/index.js +0 -0
- package/src/playlist-track/index.php +0 -0
- package/src/playlist-track/init.js +0 -0
- package/src/playlist-track/style.scss +0 -0
- package/src/post-date/block.json +1 -3
- package/src/post-date/deprecated.js +86 -6
- package/src/post-date/edit.js +65 -82
- package/src/site-logo/edit.js +1 -3
- package/src/site-title/index.js +5 -1
- package/src/tab/add-tab-toolbar-control.js +48 -23
- package/src/tab/remove-tab-toolbar-control.js +30 -10
- package/src/tabs/edit.js +133 -10
- package/src/tabs/index.js +12 -2
- package/src/tabs-menu/block.json +1 -6
- package/src/tabs-menu/edit.js +13 -214
- package/src/tabs-menu/editor.scss +7 -3
- package/src/tabs-menu/index.php +42 -27
- package/src/tabs-menu/save.js +0 -4
- package/src/tabs-menu-item/block.json +14 -11
- package/src/tabs-menu-item/controls.js +4 -167
- package/src/tabs-menu-item/edit.js +60 -69
- package/src/tabs-menu-item/index.php +11 -23
- package/src/tabs-menu-item/save.js +0 -1
- package/src/utils/media-control.js +61 -21
- package/src/utils/media-control.scss +54 -18
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/tabs-menu/edit.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {
|
|
5
|
-
"mappings": ";AAGA,OAAO,UAAU;AAKjB
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport AddTabToolbarControl from '../tab/add-tab-toolbar-control';\nimport RemoveTabToolbarControl from '../tab/remove-tab-toolbar-control';\n\nfunction Edit( { clientId, __unstableLayoutClassNames: layoutClassNames } ) {\n\tconst { tabsClientId } = useSelect(\n\t\t( select ) => ( {\n\t\t\ttabsClientId:\n\t\t\t\tselect( blockEditorStore ).getBlockRootClientId( clientId ),\n\t\t} ),\n\t\t[ clientId ]\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( layoutClassNames ),\n\t\trole: 'tablist',\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: [ 'core/tabs-menu-item' ],\n\t\torientation: 'horizontal',\n\t\trenderAppender: false,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<AddTabToolbarControl tabsClientId={ tabsClientId } />\n\t\t\t<RemoveTabToolbarControl tabsClientId={ tabsClientId } />\n\t\t\t<div { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n\nexport default Edit;\n"],
|
|
5
|
+
"mappings": ";AAGA,OAAO,UAAU;AAKjB;AAAA,EACC;AAAA,EACA;AAAA,EACA,SAAS;AAAA,OACH;AACP,SAAS,iBAAiB;AAK1B,OAAO,0BAA0B;AACjC,OAAO,6BAA6B;AAuBlC,mBACC,KADD;AArBF,SAAS,KAAM,EAAE,UAAU,4BAA4B,iBAAiB,GAAI;AAC3E,QAAM,EAAE,aAAa,IAAI;AAAA,IACxB,CAAE,YAAc;AAAA,MACf,cACC,OAAQ,gBAAiB,EAAE,qBAAsB,QAAS;AAAA,IAC5D;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,aAAa,cAAe;AAAA,IACjC,WAAW,KAAM,gBAAiB;AAAA,IAClC,MAAM;AAAA,EACP,CAAE;AAEF,QAAM,mBAAmB,oBAAqB,YAAY;AAAA,IACzD,eAAe,CAAE,qBAAsB;AAAA,IACvC,aAAa;AAAA,IACb,gBAAgB;AAAA,EACjB,CAAE;AAEF,SACC,iCACC;AAAA,wBAAC,wBAAqB,cAA8B;AAAA,IACpD,oBAAC,2BAAwB,cAA8B;AAAA,IACvD,oBAAC,SAAM,GAAG,kBAAmB;AAAA,KAC9B;AAEF;AAEA,IAAO,eAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/tabs-menu/save.js"],
|
|
4
|
-
"sourcesContent": ["/**\n *
|
|
5
|
-
"mappings": ";
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useBlockProps, useInnerBlocksProps } from '@wordpress/block-editor';\n\nexport default function save() {\n\tconst blockProps = useBlockProps.save( {\n\t\trole: 'tablist',\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps.save( blockProps );\n\n\treturn <div { ...innerBlocksProps } />;\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,eAAe,2BAA2B;AAS3C;AAPO,SAAR,OAAwB;AAC9B,QAAM,aAAa,cAAc,KAAM;AAAA,IACtC,MAAM;AAAA,EACP,CAAE;AAEF,QAAM,mBAAmB,oBAAoB,KAAM,UAAW;AAE9D,SAAO,oBAAC,SAAM,GAAG,kBAAmB;AACrC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,21 +4,25 @@
|
|
|
4
4
|
"apiVersion": 3,
|
|
5
5
|
"name": "core/tabs-menu-item",
|
|
6
6
|
"title": "Tab Menu Item",
|
|
7
|
-
"description": "A single tab button in the tabs menu.
|
|
7
|
+
"description": "A single tab button in the tabs menu.",
|
|
8
8
|
"version": "1.0.0",
|
|
9
9
|
"category": "design",
|
|
10
10
|
"textdomain": "default",
|
|
11
11
|
"parent": [ "core/tabs-menu" ],
|
|
12
12
|
"usesContext": [
|
|
13
|
-
"core/tabs-menu-item-index",
|
|
14
|
-
"core/tabs-menu-item-id",
|
|
15
|
-
"core/tabs-menu-item-label",
|
|
16
|
-
"core/tabs-menu-item-clientId",
|
|
17
13
|
"core/tabs-list",
|
|
18
14
|
"core/tabs-activeTabIndex",
|
|
19
|
-
"core/tabs-editorActiveTabIndex"
|
|
15
|
+
"core/tabs-editorActiveTabIndex",
|
|
16
|
+
"core/tabs-menu-item-index",
|
|
17
|
+
"core/tabs-menu-item-id",
|
|
18
|
+
"core/tabs-menu-item-label"
|
|
20
19
|
],
|
|
21
|
-
"attributes": {
|
|
20
|
+
"attributes": {
|
|
21
|
+
"anchor": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"default": ""
|
|
24
|
+
}
|
|
25
|
+
},
|
|
22
26
|
"supports": {
|
|
23
27
|
"html": false,
|
|
24
28
|
"reusable": false,
|
|
@@ -31,7 +35,6 @@
|
|
|
31
35
|
"text": true
|
|
32
36
|
}
|
|
33
37
|
},
|
|
34
|
-
"shadow": true,
|
|
35
38
|
"typography": {
|
|
36
39
|
"fontSize": true,
|
|
37
40
|
"__experimentalFontFamily": true,
|
|
@@ -40,9 +43,6 @@
|
|
|
40
43
|
"fontSize": true
|
|
41
44
|
}
|
|
42
45
|
},
|
|
43
|
-
"layout": {
|
|
44
|
-
"allowEditing": false
|
|
45
|
-
},
|
|
46
46
|
"spacing": {
|
|
47
47
|
"padding": true,
|
|
48
48
|
"__experimentalDefaultControls": {
|
|
@@ -54,6 +54,9 @@
|
|
|
54
54
|
"color": true,
|
|
55
55
|
"width": true,
|
|
56
56
|
"style": true
|
|
57
|
+
},
|
|
58
|
+
"layout": {
|
|
59
|
+
"allowEditing": false
|
|
57
60
|
}
|
|
58
61
|
},
|
|
59
62
|
"editorScript": "file:./index.js",
|
|
@@ -1,149 +1,10 @@
|
|
|
1
1
|
// packages/block-library/src/tabs-menu-item/controls.js
|
|
2
|
-
import
|
|
3
|
-
import { __, isRTL } from "@wordpress/i18n";
|
|
4
|
-
import {
|
|
5
|
-
BlockControls,
|
|
6
|
-
store as blockEditorStore
|
|
7
|
-
} from "@wordpress/block-editor";
|
|
8
|
-
import { ToolbarGroup, ToolbarItem, Button } from "@wordpress/components";
|
|
9
|
-
import {
|
|
10
|
-
chevronLeft,
|
|
11
|
-
chevronRight,
|
|
12
|
-
chevronUp,
|
|
13
|
-
chevronDown
|
|
14
|
-
} from "@wordpress/icons";
|
|
15
|
-
import { useDispatch, useSelect } from "@wordpress/data";
|
|
2
|
+
import { BlockControls } from "@wordpress/block-editor";
|
|
16
3
|
import AddTabToolbarControl from "../tab/add-tab-toolbar-control.mjs";
|
|
17
4
|
import RemoveTabToolbarControl from "../tab/remove-tab-toolbar-control.mjs";
|
|
18
|
-
import {
|
|
19
|
-
function
|
|
20
|
-
|
|
21
|
-
tabIndex,
|
|
22
|
-
tabsCount,
|
|
23
|
-
tabsMenuClientId,
|
|
24
|
-
tabsClientId
|
|
25
|
-
}) {
|
|
26
|
-
const {
|
|
27
|
-
moveBlocksUp,
|
|
28
|
-
moveBlocksDown,
|
|
29
|
-
updateBlockAttributes,
|
|
30
|
-
__unstableMarkNextChangeAsNotPersistent
|
|
31
|
-
} = useDispatch(blockEditorStore);
|
|
32
|
-
const { tabPanelClientId, orientation } = useSelect(
|
|
33
|
-
(select) => {
|
|
34
|
-
const { getBlockRootClientId, getBlockAttributes } = select(blockEditorStore);
|
|
35
|
-
const tabsMenuAttributes = tabsMenuClientId ? getBlockAttributes(tabsMenuClientId) : null;
|
|
36
|
-
return {
|
|
37
|
-
tabPanelClientId: getBlockRootClientId(tabClientId),
|
|
38
|
-
orientation: tabsMenuAttributes?.layout?.orientation || "horizontal"
|
|
39
|
-
};
|
|
40
|
-
},
|
|
41
|
-
[tabClientId, tabsMenuClientId]
|
|
42
|
-
);
|
|
43
|
-
const isFirst = tabIndex === 0;
|
|
44
|
-
const isLast = tabIndex === tabsCount - 1;
|
|
45
|
-
const isHorizontal = orientation === "horizontal";
|
|
46
|
-
let upIcon, downIcon, upLabel, downLabel;
|
|
47
|
-
if (isHorizontal) {
|
|
48
|
-
if (isRTL()) {
|
|
49
|
-
upIcon = chevronRight;
|
|
50
|
-
downIcon = chevronLeft;
|
|
51
|
-
upLabel = __("Move tab right");
|
|
52
|
-
downLabel = __("Move tab left");
|
|
53
|
-
} else {
|
|
54
|
-
upIcon = chevronLeft;
|
|
55
|
-
downIcon = chevronRight;
|
|
56
|
-
upLabel = __("Move tab left");
|
|
57
|
-
downLabel = __("Move tab right");
|
|
58
|
-
}
|
|
59
|
-
} else {
|
|
60
|
-
upIcon = chevronUp;
|
|
61
|
-
downIcon = chevronDown;
|
|
62
|
-
upLabel = __("Move tab up");
|
|
63
|
-
downLabel = __("Move tab down");
|
|
64
|
-
}
|
|
65
|
-
const handleMoveUp = () => {
|
|
66
|
-
moveBlocksUp([tabClientId], tabPanelClientId);
|
|
67
|
-
if (tabsClientId) {
|
|
68
|
-
__unstableMarkNextChangeAsNotPersistent();
|
|
69
|
-
updateBlockAttributes(tabsClientId, {
|
|
70
|
-
editorActiveTabIndex: tabIndex - 1
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
const handleMoveDown = () => {
|
|
75
|
-
moveBlocksDown([tabClientId], tabPanelClientId);
|
|
76
|
-
if (tabsClientId) {
|
|
77
|
-
__unstableMarkNextChangeAsNotPersistent();
|
|
78
|
-
updateBlockAttributes(tabsClientId, {
|
|
79
|
-
editorActiveTabIndex: tabIndex + 1
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
if (tabsCount <= 1) {
|
|
84
|
-
return null;
|
|
85
|
-
}
|
|
86
|
-
return /* @__PURE__ */ jsx(BlockControls, { group: "parent", children: /* @__PURE__ */ jsx(
|
|
87
|
-
ToolbarGroup,
|
|
88
|
-
{
|
|
89
|
-
className: clsx("block-editor-block-mover", {
|
|
90
|
-
"is-horizontal": isHorizontal
|
|
91
|
-
}),
|
|
92
|
-
children: /* @__PURE__ */ jsxs("div", { className: "block-editor-block-mover__move-button-container", children: [
|
|
93
|
-
/* @__PURE__ */ jsx(ToolbarItem, { children: (itemProps) => /* @__PURE__ */ jsx(
|
|
94
|
-
Button,
|
|
95
|
-
{
|
|
96
|
-
className: clsx(
|
|
97
|
-
"block-editor-block-mover-button",
|
|
98
|
-
"is-up-button"
|
|
99
|
-
),
|
|
100
|
-
icon: upIcon,
|
|
101
|
-
label: upLabel,
|
|
102
|
-
disabled: isFirst,
|
|
103
|
-
accessibleWhenDisabled: true,
|
|
104
|
-
onClick: handleMoveUp,
|
|
105
|
-
__next40pxDefaultSize: true,
|
|
106
|
-
...itemProps
|
|
107
|
-
}
|
|
108
|
-
) }),
|
|
109
|
-
/* @__PURE__ */ jsx(ToolbarItem, { children: (itemProps) => /* @__PURE__ */ jsx(
|
|
110
|
-
Button,
|
|
111
|
-
{
|
|
112
|
-
className: clsx(
|
|
113
|
-
"block-editor-block-mover-button",
|
|
114
|
-
"is-down-button"
|
|
115
|
-
),
|
|
116
|
-
icon: downIcon,
|
|
117
|
-
label: downLabel,
|
|
118
|
-
disabled: isLast,
|
|
119
|
-
accessibleWhenDisabled: true,
|
|
120
|
-
onClick: handleMoveDown,
|
|
121
|
-
__next40pxDefaultSize: true,
|
|
122
|
-
...itemProps
|
|
123
|
-
}
|
|
124
|
-
) })
|
|
125
|
-
] })
|
|
126
|
-
}
|
|
127
|
-
) });
|
|
128
|
-
}
|
|
129
|
-
function Controls({
|
|
130
|
-
tabsClientId,
|
|
131
|
-
tabClientId,
|
|
132
|
-
tabIndex,
|
|
133
|
-
tabsCount,
|
|
134
|
-
tabsMenuClientId
|
|
135
|
-
}) {
|
|
136
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
137
|
-
/* @__PURE__ */ jsx(
|
|
138
|
-
TabBlockMover,
|
|
139
|
-
{
|
|
140
|
-
tabClientId,
|
|
141
|
-
tabIndex,
|
|
142
|
-
tabsCount,
|
|
143
|
-
tabsMenuClientId,
|
|
144
|
-
tabsClientId
|
|
145
|
-
}
|
|
146
|
-
),
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
function Controls({ tabsClientId }) {
|
|
7
|
+
return /* @__PURE__ */ jsxs(BlockControls, { children: [
|
|
147
8
|
/* @__PURE__ */ jsx(AddTabToolbarControl, { tabsClientId }),
|
|
148
9
|
/* @__PURE__ */ jsx(RemoveTabToolbarControl, { tabsClientId })
|
|
149
10
|
] });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/tabs-menu-item/controls.js"],
|
|
4
|
-
"sourcesContent": ["/**\n *
|
|
5
|
-
"mappings": ";AAGA,
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { BlockControls } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport AddTabToolbarControl from '../tab/add-tab-toolbar-control';\nimport RemoveTabToolbarControl from '../tab/remove-tab-toolbar-control';\n\nexport default function Controls( { tabsClientId } ) {\n\treturn (\n\t\t<BlockControls>\n\t\t\t<AddTabToolbarControl tabsClientId={ tabsClientId } />\n\t\t\t<RemoveTabToolbarControl tabsClientId={ tabsClientId } />\n\t\t</BlockControls>\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,qBAAqB;AAK9B,OAAO,0BAA0B;AACjC,OAAO,6BAA6B;AAIlC,SACC,KADD;AAFa,SAAR,SAA2B,EAAE,aAAa,GAAI;AACpD,SACC,qBAAC,iBACA;AAAA,wBAAC,wBAAqB,cAA8B;AAAA,IACpD,oBAAC,2BAAwB,cAA8B;AAAA,KACxD;AAEF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -7,113 +7,100 @@ import {
|
|
|
7
7
|
RichText
|
|
8
8
|
} from "@wordpress/block-editor";
|
|
9
9
|
import { useSelect, useDispatch } from "@wordpress/data";
|
|
10
|
-
import {
|
|
11
|
-
import slugFromLabel from "../tab/slug-from-label.mjs";
|
|
10
|
+
import { useMemo, useCallback } from "@wordpress/element";
|
|
12
11
|
import Controls from "./controls.mjs";
|
|
13
12
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
+
var EMPTY_ARRAY = [];
|
|
14
14
|
function Edit({
|
|
15
|
+
attributes,
|
|
15
16
|
context,
|
|
16
17
|
clientId,
|
|
17
18
|
__unstableLayoutClassNames: layoutClassNames
|
|
18
19
|
}) {
|
|
19
|
-
const
|
|
20
|
-
const tabId = context["core/tabs-menu-item-id"] ?? "";
|
|
21
|
-
const tabLabel = context["core/tabs-menu-item-label"] ?? "";
|
|
22
|
-
const tabClientId = context["core/tabs-menu-item-clientId"] ?? "";
|
|
23
|
-
const contextTabsList = context["core/tabs-list"];
|
|
24
|
-
const tabsList = useMemo(
|
|
25
|
-
() => contextTabsList || [],
|
|
26
|
-
[contextTabsList]
|
|
27
|
-
);
|
|
20
|
+
const tabsList = context["core/tabs-list"] || EMPTY_ARRAY;
|
|
28
21
|
const activeTabIndex = context["core/tabs-activeTabIndex"] ?? 0;
|
|
29
22
|
const editorActiveTabIndex = context["core/tabs-editorActiveTabIndex"];
|
|
30
23
|
const effectiveActiveIndex = useMemo(() => {
|
|
31
24
|
return editorActiveTabIndex ?? activeTabIndex;
|
|
32
25
|
}, [editorActiveTabIndex, activeTabIndex]);
|
|
33
|
-
const
|
|
34
|
-
const { __unstableMarkNextChangeAsNotPersistent } = useDispatch(blockEditorStore);
|
|
35
|
-
const { tabsClientId, tabsMenuClientId, selectedTabClientId } = useSelect(
|
|
26
|
+
const { menuItemIndex, tabsClientId, selectedTabClientId } = useSelect(
|
|
36
27
|
(select) => {
|
|
37
28
|
const {
|
|
29
|
+
getBlockOrder,
|
|
38
30
|
getBlockRootClientId,
|
|
39
31
|
getSelectedBlockClientIds,
|
|
40
32
|
hasSelectedInnerBlock
|
|
41
33
|
} = select(blockEditorStore);
|
|
42
34
|
const _tabsMenuClientId = getBlockRootClientId(clientId);
|
|
43
35
|
const _tabsClientId = _tabsMenuClientId ? getBlockRootClientId(_tabsMenuClientId) : null;
|
|
36
|
+
const siblings = getBlockOrder(_tabsMenuClientId);
|
|
37
|
+
const _menuItemIndex = siblings.indexOf(clientId);
|
|
44
38
|
const selectedIds = getSelectedBlockClientIds();
|
|
45
|
-
let
|
|
46
|
-
for (const
|
|
47
|
-
if (selectedIds.includes(
|
|
48
|
-
|
|
39
|
+
let _selectedTabClientId = null;
|
|
40
|
+
for (const tab2 of tabsList) {
|
|
41
|
+
if (selectedIds.includes(tab2.clientId) || hasSelectedInnerBlock(tab2.clientId, true)) {
|
|
42
|
+
_selectedTabClientId = tab2.clientId;
|
|
49
43
|
break;
|
|
50
44
|
}
|
|
51
45
|
}
|
|
52
46
|
return {
|
|
47
|
+
menuItemIndex: _menuItemIndex,
|
|
53
48
|
tabsClientId: _tabsClientId,
|
|
54
|
-
|
|
55
|
-
selectedTabClientId: selectedTab
|
|
49
|
+
selectedTabClientId: _selectedTabClientId
|
|
56
50
|
};
|
|
57
51
|
},
|
|
58
52
|
[clientId, tabsList]
|
|
59
53
|
);
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
[updateBlockAttributes, tabClientId, tabIndex]
|
|
72
|
-
);
|
|
54
|
+
const tabAnchor = attributes.anchor?.replace(/-button$/, "") ?? "";
|
|
55
|
+
const tab = tabAnchor && tabsList.find((t) => t.id === tabAnchor) || tabsList[menuItemIndex] || {};
|
|
56
|
+
const tabListIndex = tab.index ?? menuItemIndex;
|
|
57
|
+
const tabId = tab.id || `tab-${menuItemIndex}`;
|
|
58
|
+
const tabClientId = tab.clientId || "";
|
|
59
|
+
const label = tab.label || "";
|
|
60
|
+
const isActive = tabListIndex === effectiveActiveIndex;
|
|
61
|
+
const isSelected = tabClientId === selectedTabClientId;
|
|
62
|
+
const { __unstableMarkNextChangeAsNotPersistent, updateBlockAttributes } = useDispatch(blockEditorStore);
|
|
73
63
|
const handleTabClick = useCallback(
|
|
74
64
|
(event) => {
|
|
75
65
|
event.preventDefault();
|
|
76
|
-
if (tabsClientId &&
|
|
66
|
+
if (tabsClientId && tabListIndex !== effectiveActiveIndex) {
|
|
77
67
|
__unstableMarkNextChangeAsNotPersistent();
|
|
78
68
|
updateBlockAttributes(tabsClientId, {
|
|
79
|
-
editorActiveTabIndex:
|
|
69
|
+
editorActiveTabIndex: tabListIndex
|
|
80
70
|
});
|
|
81
71
|
}
|
|
82
72
|
},
|
|
83
73
|
[
|
|
84
74
|
tabsClientId,
|
|
85
|
-
|
|
75
|
+
tabListIndex,
|
|
86
76
|
effectiveActiveIndex,
|
|
87
77
|
updateBlockAttributes,
|
|
88
78
|
__unstableMarkNextChangeAsNotPersistent
|
|
89
79
|
]
|
|
90
80
|
);
|
|
91
|
-
const
|
|
92
|
-
|
|
81
|
+
const handleLabelChange = useCallback(
|
|
82
|
+
(newLabel) => {
|
|
83
|
+
if (tabClientId) {
|
|
84
|
+
updateBlockAttributes(tabClientId, { label: newLabel });
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
[tabClientId, updateBlockAttributes]
|
|
88
|
+
);
|
|
93
89
|
const blockProps = useBlockProps({
|
|
94
90
|
className: clsx(layoutClassNames, {
|
|
95
|
-
"is-active":
|
|
96
|
-
"is-selected":
|
|
91
|
+
"is-active": isActive,
|
|
92
|
+
"is-selected": isSelected
|
|
97
93
|
}),
|
|
98
|
-
"aria-controls":
|
|
99
|
-
"aria-selected":
|
|
100
|
-
id:
|
|
94
|
+
"aria-controls": tabId,
|
|
95
|
+
"aria-selected": isActive,
|
|
96
|
+
id: `${tabId}--tab`,
|
|
101
97
|
role: "tab",
|
|
102
98
|
tabIndex: -1,
|
|
103
99
|
onClick: handleTabClick
|
|
104
100
|
});
|
|
105
101
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
106
|
-
/* @__PURE__ */ jsx(
|
|
107
|
-
|
|
108
|
-
{
|
|
109
|
-
tabsClientId,
|
|
110
|
-
tabClientId,
|
|
111
|
-
tabIndex,
|
|
112
|
-
tabsCount: tabsList.length,
|
|
113
|
-
tabsMenuClientId
|
|
114
|
-
}
|
|
115
|
-
),
|
|
116
|
-
/* @__PURE__ */ jsx("div", { ...blockProps, children: /* @__PURE__ */ jsx(
|
|
102
|
+
/* @__PURE__ */ jsx(Controls, { tabsClientId }),
|
|
103
|
+
/* @__PURE__ */ jsx("button", { ...blockProps, type: "button", children: /* @__PURE__ */ jsx(
|
|
117
104
|
RichText,
|
|
118
105
|
{
|
|
119
106
|
tagName: "span",
|
|
@@ -121,15 +108,16 @@ function Edit({
|
|
|
121
108
|
placeholder: sprintf(
|
|
122
109
|
/* translators: %d is the tab index + 1 */
|
|
123
110
|
__("Tab title %d"),
|
|
124
|
-
|
|
111
|
+
menuItemIndex + 1
|
|
125
112
|
),
|
|
126
|
-
value:
|
|
113
|
+
value: label,
|
|
127
114
|
onChange: handleLabelChange
|
|
128
115
|
}
|
|
129
116
|
) })
|
|
130
117
|
] });
|
|
131
118
|
}
|
|
119
|
+
var edit_default = Edit;
|
|
132
120
|
export {
|
|
133
|
-
|
|
121
|
+
edit_default as default
|
|
134
122
|
};
|
|
135
123
|
//# sourceMappingURL=edit.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/tabs-menu-item/edit.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tRichText,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {
|
|
5
|
-
"mappings": ";AAGA,OAAO,UAAU;AAKjB,SAAS,IAAI,eAAe;AAC5B;AAAA,EACC;AAAA,EACA,SAAS;AAAA,EACT;AAAA,OACM;AACP,SAAS,WAAW,mBAAmB;AACvC,SAAS,
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tRichText,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Controls from './controls';\n\nconst EMPTY_ARRAY = [];\n\nfunction Edit( {\n\tattributes,\n\tcontext,\n\tclientId,\n\t__unstableLayoutClassNames: layoutClassNames,\n} ) {\n\tconst tabsList = context[ 'core/tabs-list' ] || EMPTY_ARRAY;\n\tconst activeTabIndex = context[ 'core/tabs-activeTabIndex' ] ?? 0;\n\tconst editorActiveTabIndex = context[ 'core/tabs-editorActiveTabIndex' ];\n\n\tconst effectiveActiveIndex = useMemo( () => {\n\t\treturn editorActiveTabIndex ?? activeTabIndex;\n\t}, [ editorActiveTabIndex, activeTabIndex ] );\n\n\tconst { menuItemIndex, tabsClientId, selectedTabClientId } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst _tabsMenuClientId = getBlockRootClientId( clientId );\n\t\t\tconst _tabsClientId = _tabsMenuClientId\n\t\t\t\t? getBlockRootClientId( _tabsMenuClientId )\n\t\t\t\t: null;\n\n\t\t\tconst siblings = getBlockOrder( _tabsMenuClientId );\n\t\t\tconst _menuItemIndex = siblings.indexOf( clientId );\n\n\t\t\t// Find which tab panel block is currently selected.\n\t\t\tconst selectedIds = getSelectedBlockClientIds();\n\t\t\tlet _selectedTabClientId = null;\n\t\t\tfor ( const tab of tabsList ) {\n\t\t\t\tif (\n\t\t\t\t\tselectedIds.includes( tab.clientId ) ||\n\t\t\t\t\thasSelectedInnerBlock( tab.clientId, true )\n\t\t\t\t) {\n\t\t\t\t\t_selectedTabClientId = tab.clientId;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tmenuItemIndex: _menuItemIndex,\n\t\t\t\ttabsClientId: _tabsClientId,\n\t\t\t\tselectedTabClientId: _selectedTabClientId,\n\t\t\t};\n\t\t},\n\t\t[ clientId, tabsList ]\n\t);\n\n\t// Find the corresponding tab's anchor from this menu item's anchor\n\t// attribute (e.g., \"tab-1-button\" \u2192 \"tab-1\"), then look it up in tabsList.\n\t// Falls back to positional lookup when no anchor is set.\n\tconst tabAnchor = attributes.anchor?.replace( /-button$/, '' ) ?? '';\n\tconst tab =\n\t\t( tabAnchor && tabsList.find( ( t ) => t.id === tabAnchor ) ) ||\n\t\ttabsList[ menuItemIndex ] ||\n\t\t{};\n\n\t// tabListIndex is the tab's position in tabsList, used for active-state\n\t// checks and click handling.\n\tconst tabListIndex = tab.index ?? menuItemIndex;\n\n\tconst tabId = tab.id || `tab-${ menuItemIndex }`;\n\tconst tabClientId = tab.clientId || '';\n\tconst label = tab.label || '';\n\n\tconst isActive = tabListIndex === effectiveActiveIndex;\n\tconst isSelected = tabClientId === selectedTabClientId;\n\n\tconst { __unstableMarkNextChangeAsNotPersistent, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst handleTabClick = useCallback(\n\t\t( event ) => {\n\t\t\tevent.preventDefault();\n\t\t\tif ( tabsClientId && tabListIndex !== effectiveActiveIndex ) {\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\t\t\teditorActiveTabIndex: tabListIndex,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\ttabsClientId,\n\t\t\ttabListIndex,\n\t\t\teffectiveActiveIndex,\n\t\t\tupdateBlockAttributes,\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t]\n\t);\n\n\tconst handleLabelChange = useCallback(\n\t\t( newLabel ) => {\n\t\t\tif ( tabClientId ) {\n\t\t\t\tupdateBlockAttributes( tabClientId, { label: newLabel } );\n\t\t\t}\n\t\t},\n\t\t[ tabClientId, updateBlockAttributes ]\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx( layoutClassNames, {\n\t\t\t'is-active': isActive,\n\t\t\t'is-selected': isSelected,\n\t\t} ),\n\t\t'aria-controls': tabId,\n\t\t'aria-selected': isActive,\n\t\tid: `${ tabId }--tab`,\n\t\trole: 'tab',\n\t\ttabIndex: -1,\n\t\tonClick: handleTabClick,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<Controls tabsClientId={ tabsClientId } />\n\t\t\t<button { ...blockProps } type=\"button\">\n\t\t\t\t<RichText\n\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\tplaceholder={ sprintf(\n\t\t\t\t\t\t/* translators: %d is the tab index + 1 */\n\t\t\t\t\t\t__( 'Tab title %d' ),\n\t\t\t\t\t\tmenuItemIndex + 1\n\t\t\t\t\t) }\n\t\t\t\t\tvalue={ label }\n\t\t\t\t\tonChange={ handleLabelChange }\n\t\t\t\t/>\n\t\t\t</button>\n\t\t</>\n\t);\n}\n\nexport default Edit;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["tab"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/tabs-menu-item/save.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useBlockProps } from '@wordpress/block-editor';\n\nexport default function save() {\n\tconst blockProps = useBlockProps.save( {\n\t\
|
|
5
|
-
"mappings": ";AAGA,SAAS,qBAAqB;
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useBlockProps } from '@wordpress/block-editor';\n\nexport default function save() {\n\tconst blockProps = useBlockProps.save( {\n\t\ttype: 'button',\n\t\trole: 'tab',\n\t} );\n\n\treturn <button { ...blockProps } />;\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,qBAAqB;AAQtB;AANO,SAAR,OAAwB;AAC9B,QAAM,aAAa,cAAc,KAAM;AAAA,IACtC,MAAM;AAAA,IACN,MAAM;AAAA,EACP,CAAE;AAEF,SAAO,oBAAC,YAAS,GAAG,YAAa;AAClC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|