@plasmicpkgs/plasmic-rich-components 1.0.169 → 1.0.170
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/dist/.tsbuildinfo +1 -1
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/plasmic-rich-components.esm.js +7 -7
- package/dist/plasmic-rich-components.esm.js.map +1 -1
- package/dist/rich-calendar/index.d.ts +1 -1
- package/package.json +18 -4
- package/skinny/common-8cca2977.esm.js +22 -0
- package/skinny/common-8cca2977.esm.js.map +1 -0
- package/skinny/common-e1d76791.cjs.js +30 -0
- package/skinny/common-e1d76791.cjs.js.map +1 -0
- package/skinny/common-prop-types-5f1fd4b0.cjs.js +139 -0
- package/skinny/common-prop-types-5f1fd4b0.cjs.js.map +1 -0
- package/skinny/common-prop-types-686c49fe.esm.js +133 -0
- package/skinny/common-prop-types-686c49fe.esm.js.map +1 -0
- package/skinny/common-prop-types.d.ts +12 -0
- package/skinny/common.d.ts +5 -0
- package/skinny/field-mappings.d.ts +100 -0
- package/skinny/field-react-utils-26fba31e.esm.js +142 -0
- package/skinny/field-react-utils-26fba31e.esm.js.map +1 -0
- package/skinny/field-react-utils-c717ec94.cjs.js +153 -0
- package/skinny/field-react-utils-c717ec94.cjs.js.map +1 -0
- package/skinny/field-react-utils.d.ts +34 -0
- package/skinny/formatting-327e0658.cjs.js +645 -0
- package/skinny/formatting-327e0658.cjs.js.map +1 -0
- package/skinny/formatting-aff39488.esm.js +633 -0
- package/skinny/formatting-aff39488.esm.js.map +1 -0
- package/skinny/formatting.d.ts +7 -0
- package/skinny/rich-calendar/RichCalendar.d.ts +31 -0
- package/skinny/rich-calendar/index.cjs.js +501 -0
- package/skinny/rich-calendar/index.cjs.js.map +1 -0
- package/skinny/rich-calendar/index.d.ts +15 -0
- package/skinny/rich-calendar/index.esm.js +488 -0
- package/skinny/rich-calendar/index.esm.js.map +1 -0
- package/skinny/rich-details/RichDetails.d.ts +12 -0
- package/skinny/rich-details/index.cjs.js +169 -0
- package/skinny/rich-details/index.cjs.js.map +1 -0
- package/skinny/rich-details/index.d.ts +3 -0
- package/skinny/rich-details/index.esm.js +162 -0
- package/skinny/rich-details/index.esm.js.map +1 -0
- package/skinny/rich-layout/RichLayout.d.ts +22 -0
- package/skinny/rich-layout/index.cjs.js +486 -0
- package/skinny/rich-layout/index.cjs.js.map +1 -0
- package/skinny/rich-layout/index.d.ts +5 -0
- package/skinny/rich-layout/index.esm.js +476 -0
- package/skinny/rich-layout/index.esm.js.map +1 -0
- package/skinny/rich-list/RichList.d.ts +59 -0
- package/skinny/rich-list/index.cjs.js +583 -0
- package/skinny/rich-list/index.cjs.js.map +1 -0
- package/skinny/rich-list/index.d.ts +5 -0
- package/skinny/rich-list/index.esm.js +571 -0
- package/skinny/rich-list/index.esm.js.map +1 -0
- package/skinny/rich-table/RichTable.d.ts +46 -0
- package/skinny/rich-table/index.cjs.js +598 -0
- package/skinny/rich-table/index.cjs.js.map +1 -0
- package/skinny/rich-table/index.d.ts +21 -0
- package/skinny/rich-table/index.esm.js +586 -0
- package/skinny/rich-table/index.esm.js.map +1 -0
- package/skinny/utils-65c486f0.cjs.js +139 -0
- package/skinny/utils-65c486f0.cjs.js.map +1 -0
- package/skinny/utils-c32bd7ed.esm.js +118 -0
- package/skinny/utils-c32bd7ed.esm.js.map +1 -0
- package/skinny/utils.d.ts +72 -0
- package/skinny/widgets.d.ts +2 -0
|
@@ -0,0 +1,486 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var common = require('../common-e1d76791.cjs.js');
|
|
6
|
+
var utils = require('../utils-65c486f0.cjs.js');
|
|
7
|
+
var icons = require('@ant-design/icons');
|
|
8
|
+
var proComponents = require('@ant-design/pro-components');
|
|
9
|
+
var host = require('@plasmicapp/host');
|
|
10
|
+
var antd = require('antd');
|
|
11
|
+
var React = require('react');
|
|
12
|
+
require('@ctrl/tinycolor');
|
|
13
|
+
require('@plasmicapp/host/registerComponent');
|
|
14
|
+
require('@plasmicapp/host/registerGlobalContext');
|
|
15
|
+
require('@plasmicpkgs/luxon-parser');
|
|
16
|
+
require('dayjs');
|
|
17
|
+
require('dayjs/plugin/customParseFormat');
|
|
18
|
+
|
|
19
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
|
+
|
|
21
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
22
|
+
|
|
23
|
+
var __defProp$2 = Object.defineProperty;
|
|
24
|
+
var __defProps$1 = Object.defineProperties;
|
|
25
|
+
var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
|
|
26
|
+
var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
|
|
27
|
+
var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
|
|
28
|
+
var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
|
|
29
|
+
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
30
|
+
var __spreadValues$2 = (a, b) => {
|
|
31
|
+
for (var prop in b || (b = {}))
|
|
32
|
+
if (__hasOwnProp$2.call(b, prop))
|
|
33
|
+
__defNormalProp$2(a, prop, b[prop]);
|
|
34
|
+
if (__getOwnPropSymbols$2)
|
|
35
|
+
for (var prop of __getOwnPropSymbols$2(b)) {
|
|
36
|
+
if (__propIsEnum$2.call(b, prop))
|
|
37
|
+
__defNormalProp$2(a, prop, b[prop]);
|
|
38
|
+
}
|
|
39
|
+
return a;
|
|
40
|
+
};
|
|
41
|
+
var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
|
|
42
|
+
const AnchorLink = React__default.default.forwardRef(function AnchorLink2(props, ref) {
|
|
43
|
+
return /* @__PURE__ */ React__default.default.createElement("a", __spreadProps$1(__spreadValues$2({}, props), { ref }));
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
var __defProp$1 = Object.defineProperty;
|
|
47
|
+
var __defProps = Object.defineProperties;
|
|
48
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
49
|
+
var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
|
|
50
|
+
var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
|
|
51
|
+
var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
|
|
52
|
+
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
53
|
+
var __spreadValues$1 = (a, b) => {
|
|
54
|
+
for (var prop in b || (b = {}))
|
|
55
|
+
if (__hasOwnProp$1.call(b, prop))
|
|
56
|
+
__defNormalProp$1(a, prop, b[prop]);
|
|
57
|
+
if (__getOwnPropSymbols$1)
|
|
58
|
+
for (var prop of __getOwnPropSymbols$1(b)) {
|
|
59
|
+
if (__propIsEnum$1.call(b, prop))
|
|
60
|
+
__defNormalProp$1(a, prop, b[prop]);
|
|
61
|
+
}
|
|
62
|
+
return a;
|
|
63
|
+
};
|
|
64
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
65
|
+
var __objRest = (source, exclude) => {
|
|
66
|
+
var target = {};
|
|
67
|
+
for (var prop in source)
|
|
68
|
+
if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
69
|
+
target[prop] = source[prop];
|
|
70
|
+
if (source != null && __getOwnPropSymbols$1)
|
|
71
|
+
for (var prop of __getOwnPropSymbols$1(source)) {
|
|
72
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))
|
|
73
|
+
target[prop] = source[prop];
|
|
74
|
+
}
|
|
75
|
+
return target;
|
|
76
|
+
};
|
|
77
|
+
function omitUndefined(x) {
|
|
78
|
+
return Object.fromEntries(
|
|
79
|
+
Object.entries(x).filter(([k, v]) => v !== void 0)
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
function processNavItems(navMenuItems) {
|
|
83
|
+
return navMenuItems.filter((item) => item.condition === void 0 || item.condition).map((item) => __spreadProps(__spreadValues$1({}, item), {
|
|
84
|
+
// We fill a default path because otherwise the item doesn't appear at all.
|
|
85
|
+
path: item.path || "/",
|
|
86
|
+
routes: item.routes ? processNavItems(item.routes) : void 0
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
const baseStyles = `
|
|
90
|
+
.ant-pro-layout-bg-list {
|
|
91
|
+
display: none;
|
|
92
|
+
}
|
|
93
|
+
.ant-pro-layout {
|
|
94
|
+
display: flex;
|
|
95
|
+
width: 100%;
|
|
96
|
+
}
|
|
97
|
+
.ant-pro-layout .ant-pro-layout-content {
|
|
98
|
+
padding: 0;
|
|
99
|
+
}
|
|
100
|
+
`;
|
|
101
|
+
function RichLayout(_a) {
|
|
102
|
+
var _b = _a, {
|
|
103
|
+
children,
|
|
104
|
+
navMenuItems,
|
|
105
|
+
rootUrl = "/",
|
|
106
|
+
actionsChildren,
|
|
107
|
+
footerChildren,
|
|
108
|
+
avatarLabel,
|
|
109
|
+
avatarImage,
|
|
110
|
+
showAvatarMenu,
|
|
111
|
+
className,
|
|
112
|
+
simpleNavTheme,
|
|
113
|
+
logo,
|
|
114
|
+
logoElement
|
|
115
|
+
} = _b, layoutProps = __objRest(_b, [
|
|
116
|
+
"children",
|
|
117
|
+
"navMenuItems",
|
|
118
|
+
"rootUrl",
|
|
119
|
+
"actionsChildren",
|
|
120
|
+
"footerChildren",
|
|
121
|
+
"avatarLabel",
|
|
122
|
+
"avatarImage",
|
|
123
|
+
"showAvatarMenu",
|
|
124
|
+
"className",
|
|
125
|
+
"simpleNavTheme",
|
|
126
|
+
"logo",
|
|
127
|
+
"logoElement"
|
|
128
|
+
]);
|
|
129
|
+
var _a2, _b2, _c, _d, _e;
|
|
130
|
+
const $ctx = host.useDataEnv();
|
|
131
|
+
const ref = React.useRef(null);
|
|
132
|
+
const isClient = common.useIsClient();
|
|
133
|
+
const [pathname, setPathname] = React.useState(void 0);
|
|
134
|
+
const [openKeys, setOpenKeys] = React.useState([]);
|
|
135
|
+
const [ready, setReady] = React.useState(false);
|
|
136
|
+
React.useEffect(() => {
|
|
137
|
+
setTimeout(() => {
|
|
138
|
+
setReady(true);
|
|
139
|
+
}, 500);
|
|
140
|
+
if (typeof location !== "undefined") {
|
|
141
|
+
setPathname(location.pathname);
|
|
142
|
+
}
|
|
143
|
+
}, []);
|
|
144
|
+
React.useEffect(() => {
|
|
145
|
+
if (!ready)
|
|
146
|
+
return;
|
|
147
|
+
if (!ref.current)
|
|
148
|
+
return;
|
|
149
|
+
const selectedSubmenus = Array.from(
|
|
150
|
+
ref.current.querySelectorAll(
|
|
151
|
+
"ul > li.ant-menu-submenu.ant-menu-submenu-selected > div"
|
|
152
|
+
)
|
|
153
|
+
).map((el) => {
|
|
154
|
+
var _a3;
|
|
155
|
+
return (_a3 = el.getAttribute("data-menu-id")) == null ? void 0 : _a3.split("/").pop();
|
|
156
|
+
}).filter((i) => i).map((i) => `/${i}`) || [];
|
|
157
|
+
setOpenKeys(selectedSubmenus);
|
|
158
|
+
}, [ready]);
|
|
159
|
+
const PlasmicLink = (_b2 = (_a2 = host.usePlasmicLink) == null ? void 0 : _a2()) != null ? _b2 : AnchorLink;
|
|
160
|
+
const { token } = antd.theme.useToken();
|
|
161
|
+
const origTextColor = token.colorTextBase;
|
|
162
|
+
function getNavBgColor() {
|
|
163
|
+
var _a3, _b3;
|
|
164
|
+
const scheme = (_a3 = simpleNavTheme == null ? void 0 : simpleNavTheme.scheme) != null ? _a3 : "default";
|
|
165
|
+
switch (scheme) {
|
|
166
|
+
case "primary":
|
|
167
|
+
return token.colorPrimary;
|
|
168
|
+
case "dark":
|
|
169
|
+
return "#011528";
|
|
170
|
+
case "custom":
|
|
171
|
+
return (_b3 = simpleNavTheme == null ? void 0 : simpleNavTheme.customBgColor) != null ? _b3 : token.colorBgBase;
|
|
172
|
+
case "light":
|
|
173
|
+
return "#fff";
|
|
174
|
+
case "default":
|
|
175
|
+
return token.colorBgBase || "#fff";
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const navBgColor = getNavBgColor();
|
|
179
|
+
const isNavBgLight = common.isLight(navBgColor);
|
|
180
|
+
const isOrigTextLight = common.isLight(origTextColor);
|
|
181
|
+
const navTextColor = isNavBgLight !== isOrigTextLight ? void 0 : "";
|
|
182
|
+
if (!isClient) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
const layoutColorOverrides = isNavBgLight ? void 0 : {
|
|
186
|
+
colorBgCollapsedButton: navBgColor,
|
|
187
|
+
colorTextCollapsedButtonHover: "rgba(255,255,255,0.85)",
|
|
188
|
+
colorTextCollapsedButton: "rgba(255,255,255,0.65)",
|
|
189
|
+
colorMenuBackground: navBgColor,
|
|
190
|
+
colorBgMenuItemCollapsedHover: "rgba(0,0,0,0.06)",
|
|
191
|
+
colorBgMenuItemCollapsedSelected: "rgba(0,0,0,0.15)",
|
|
192
|
+
colorBgMenuItemCollapsedElevated: "rgba(0,0,0,0.85)",
|
|
193
|
+
colorMenuItemDivider: "rgba(255,255,255,0.15)",
|
|
194
|
+
colorBgMenuItemHover: "rgba(0,0,0,0.06)",
|
|
195
|
+
colorBgMenuItemSelected: "rgba(0,0,0,0.15)",
|
|
196
|
+
colorTextMenuSelected: "#fff",
|
|
197
|
+
colorTextMenuItemHover: "rgba(255,255,255,0.75)",
|
|
198
|
+
colorTextMenu: "rgba(255,255,255,0.75)",
|
|
199
|
+
colorTextMenuSecondary: "rgba(255,255,255,0.65)",
|
|
200
|
+
colorTextMenuTitle: "rgba(255,255,255,0.95)",
|
|
201
|
+
colorTextMenuActive: "rgba(255,255,255,0.95)",
|
|
202
|
+
colorTextSubMenuSelected: "#fff"
|
|
203
|
+
};
|
|
204
|
+
return /* @__PURE__ */ React__default.default.createElement("div", { ref, className, style: { display: "flex" } }, /* @__PURE__ */ React__default.default.createElement("style", null, baseStyles), /* @__PURE__ */ React__default.default.createElement(
|
|
205
|
+
proComponents.ProLayout,
|
|
206
|
+
__spreadProps(__spreadValues$1({}, layoutProps), {
|
|
207
|
+
pageTitleRender: () => "",
|
|
208
|
+
logo: logo != null ? logo : logoElement,
|
|
209
|
+
headerRender: (_props, defaultDom) => /* @__PURE__ */ React__default.default.createElement(
|
|
210
|
+
antd.ConfigProvider,
|
|
211
|
+
{
|
|
212
|
+
theme: { token: omitUndefined({ colorTextBase: navTextColor }) }
|
|
213
|
+
},
|
|
214
|
+
/* @__PURE__ */ React__default.default.createElement(proComponents.ProConfigProvider, { dark: !isNavBgLight }, defaultDom)
|
|
215
|
+
),
|
|
216
|
+
token: {
|
|
217
|
+
header: omitUndefined(__spreadValues$1({
|
|
218
|
+
colorBgHeader: navBgColor
|
|
219
|
+
}, layoutColorOverrides)),
|
|
220
|
+
// Ideally, we'd do something similar to headerRender above, and just specify general dark mode to specify
|
|
221
|
+
// whether all components/text should be light.
|
|
222
|
+
// But for some reason it doesn't work, causing the bg color to be ignored (just the default dark Menu color),
|
|
223
|
+
// *and* the text is just dark as well.
|
|
224
|
+
// Haven't yet been able to unravel the pro components code to figure out the proper way to do this, so just
|
|
225
|
+
// bluntly specifying tokens here, as recommended in some GitHub issue.
|
|
226
|
+
sider: omitUndefined(__spreadValues$1({
|
|
227
|
+
colorMenuBackground: navBgColor
|
|
228
|
+
}, layoutColorOverrides))
|
|
229
|
+
},
|
|
230
|
+
layout: (_c = layoutProps.layout) != null ? _c : "top",
|
|
231
|
+
fixedHeader: (_d = layoutProps.fixedHeader) != null ? _d : false,
|
|
232
|
+
fixSiderbar: (
|
|
233
|
+
// Doesn't stretch full height if you set this to false and you're in mix mode.
|
|
234
|
+
layoutProps.layout === "mix" ? void 0 : (_e = layoutProps.fixSiderbar) != null ? _e : false
|
|
235
|
+
),
|
|
236
|
+
splitMenus: layoutProps.layout === "mix",
|
|
237
|
+
route: {
|
|
238
|
+
path: rootUrl,
|
|
239
|
+
routes: navMenuItems ? processNavItems(navMenuItems) : void 0
|
|
240
|
+
},
|
|
241
|
+
location: {
|
|
242
|
+
pathname
|
|
243
|
+
},
|
|
244
|
+
menu: {
|
|
245
|
+
// collapsedShowGroupTitle: true,
|
|
246
|
+
defaultOpenAll: false
|
|
247
|
+
// hideMenuWhenCollapsed: true,
|
|
248
|
+
},
|
|
249
|
+
avatarProps: showAvatarMenu ? {
|
|
250
|
+
src: avatarImage,
|
|
251
|
+
size: "small",
|
|
252
|
+
title: avatarLabel,
|
|
253
|
+
render: (_props, dom) => {
|
|
254
|
+
return /* @__PURE__ */ React__default.default.createElement(
|
|
255
|
+
antd.Dropdown,
|
|
256
|
+
{
|
|
257
|
+
menu: {
|
|
258
|
+
items: [
|
|
259
|
+
{
|
|
260
|
+
key: "logout",
|
|
261
|
+
icon: /* @__PURE__ */ React__default.default.createElement(icons.LogoutOutlined, null),
|
|
262
|
+
label: "Sign out"
|
|
263
|
+
}
|
|
264
|
+
]
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
dom
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
} : void 0,
|
|
271
|
+
actionsRender: (_props) => {
|
|
272
|
+
return [actionsChildren];
|
|
273
|
+
},
|
|
274
|
+
menuFooterRender: (props) => {
|
|
275
|
+
if (props == null ? void 0 : props.collapsed)
|
|
276
|
+
return void 0;
|
|
277
|
+
return footerChildren;
|
|
278
|
+
},
|
|
279
|
+
onMenuHeaderClick: (e) => console.log(e),
|
|
280
|
+
openKeys,
|
|
281
|
+
onOpenChange: (keys) => keys === false || !ready ? [] : setOpenKeys(keys),
|
|
282
|
+
selectedKeys: [$ctx == null ? void 0 : $ctx.pagePath],
|
|
283
|
+
menuItemRender: (item, dom) => /* @__PURE__ */ React__default.default.createElement(PlasmicLink, { href: item.path }, dom),
|
|
284
|
+
headerTitleRender: (logoEl, title, _) => {
|
|
285
|
+
return /* @__PURE__ */ React__default.default.createElement(PlasmicLink, { href: rootUrl }, logoEl, title);
|
|
286
|
+
}
|
|
287
|
+
}),
|
|
288
|
+
children
|
|
289
|
+
));
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
var __defProp = Object.defineProperty;
|
|
293
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
294
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
295
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
296
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
297
|
+
var __spreadValues = (a, b) => {
|
|
298
|
+
for (var prop in b || (b = {}))
|
|
299
|
+
if (__hasOwnProp.call(b, prop))
|
|
300
|
+
__defNormalProp(a, prop, b[prop]);
|
|
301
|
+
if (__getOwnPropSymbols)
|
|
302
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
303
|
+
if (__propIsEnum.call(b, prop))
|
|
304
|
+
__defNormalProp(a, prop, b[prop]);
|
|
305
|
+
}
|
|
306
|
+
return a;
|
|
307
|
+
};
|
|
308
|
+
function generateNavMenuType(isNested, remainingDepth, displayName, defaultValue) {
|
|
309
|
+
return {
|
|
310
|
+
displayName: displayName ? displayName : "Nested items",
|
|
311
|
+
type: "array",
|
|
312
|
+
defaultValue,
|
|
313
|
+
advanced: isNested,
|
|
314
|
+
itemType: {
|
|
315
|
+
type: "object",
|
|
316
|
+
nameFunc: (item) => item.name || (!displayName ? "Unnamed nested item" : "Unnamed item"),
|
|
317
|
+
fields: __spreadValues({
|
|
318
|
+
path: "href",
|
|
319
|
+
name: "string",
|
|
320
|
+
condition: {
|
|
321
|
+
advanced: true,
|
|
322
|
+
displayName: "Show only if",
|
|
323
|
+
type: "exprEditor"
|
|
324
|
+
}
|
|
325
|
+
}, remainingDepth === 0 ? {} : {
|
|
326
|
+
routes: generateNavMenuType(true, remainingDepth - 1)
|
|
327
|
+
})
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
const richLayoutMeta = {
|
|
332
|
+
name: "hostless-rich-layout",
|
|
333
|
+
displayName: "Rich App Layout",
|
|
334
|
+
props: {
|
|
335
|
+
children: {
|
|
336
|
+
type: "slot",
|
|
337
|
+
unstable__isMainContentSlot: true
|
|
338
|
+
},
|
|
339
|
+
actionsChildren: {
|
|
340
|
+
type: "slot",
|
|
341
|
+
hidePlaceholder: true
|
|
342
|
+
},
|
|
343
|
+
title: {
|
|
344
|
+
displayName: "Title",
|
|
345
|
+
type: "string",
|
|
346
|
+
defaultValue: "App title"
|
|
347
|
+
},
|
|
348
|
+
logo: {
|
|
349
|
+
displayName: "Logo",
|
|
350
|
+
type: "imageUrl",
|
|
351
|
+
hidden: (ps) => !ps.logo
|
|
352
|
+
},
|
|
353
|
+
logoElement: {
|
|
354
|
+
type: "slot",
|
|
355
|
+
displayName: "Logo",
|
|
356
|
+
defaultValue: {
|
|
357
|
+
type: "img",
|
|
358
|
+
src: "https://static1.plasmic.app/fake-logo.svg"
|
|
359
|
+
},
|
|
360
|
+
hidden: (ps) => !!ps.logo
|
|
361
|
+
},
|
|
362
|
+
navMenuItems: generateNavMenuType(false, 2, "Nav menu items", [
|
|
363
|
+
{
|
|
364
|
+
path: "/",
|
|
365
|
+
name: "Home"
|
|
366
|
+
}
|
|
367
|
+
]),
|
|
368
|
+
layout: {
|
|
369
|
+
displayName: "Layout",
|
|
370
|
+
type: "choice",
|
|
371
|
+
options: ["side", "top", "mix"].map((value) => ({
|
|
372
|
+
value,
|
|
373
|
+
label: common.capitalize(value)
|
|
374
|
+
})),
|
|
375
|
+
defaultValueHint: "top"
|
|
376
|
+
},
|
|
377
|
+
simpleNavTheme: {
|
|
378
|
+
displayName: "Theme",
|
|
379
|
+
type: "object",
|
|
380
|
+
fields: {
|
|
381
|
+
scheme: {
|
|
382
|
+
type: "choice",
|
|
383
|
+
options: ["default", "primary", "light", "dark", "custom"].map(
|
|
384
|
+
(v) => ({
|
|
385
|
+
label: common.capitalize(v),
|
|
386
|
+
value: v
|
|
387
|
+
})
|
|
388
|
+
),
|
|
389
|
+
defaultValueHint: "default"
|
|
390
|
+
},
|
|
391
|
+
customBgColor: {
|
|
392
|
+
type: "color",
|
|
393
|
+
displayName: "Custom color",
|
|
394
|
+
hidden: (props) => {
|
|
395
|
+
var _a;
|
|
396
|
+
return !(((_a = props.simpleNavTheme) == null ? void 0 : _a.scheme) === "custom");
|
|
397
|
+
},
|
|
398
|
+
defaultValue: "#D73B58"
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
// Advanced, show later
|
|
403
|
+
/*
|
|
404
|
+
siderMenuType: {
|
|
405
|
+
displayName: "Sidebar mode",
|
|
406
|
+
type: "choice",
|
|
407
|
+
options: ["sub", "group"].map((value) => ({
|
|
408
|
+
value,
|
|
409
|
+
label: capitalize(value),
|
|
410
|
+
})),
|
|
411
|
+
defaultValue: "sub",
|
|
412
|
+
},
|
|
413
|
+
contentWidth: {
|
|
414
|
+
displayName: "Content width",
|
|
415
|
+
type: "choice",
|
|
416
|
+
options: ["Fluid", "Fixed"],
|
|
417
|
+
defaultValueHint: "Fluid",
|
|
418
|
+
},
|
|
419
|
+
*/
|
|
420
|
+
fixedHeader: {
|
|
421
|
+
displayName: "Sticky header",
|
|
422
|
+
type: "boolean",
|
|
423
|
+
hidden: (ps) => {
|
|
424
|
+
var _a;
|
|
425
|
+
return ((_a = ps.layout) != null ? _a : "top") !== "top";
|
|
426
|
+
},
|
|
427
|
+
defaultValueHint: false
|
|
428
|
+
},
|
|
429
|
+
fixSiderbar: {
|
|
430
|
+
displayName: "Sticky sidebar",
|
|
431
|
+
type: "boolean",
|
|
432
|
+
hidden: (ps) => {
|
|
433
|
+
var _a;
|
|
434
|
+
return ((_a = ps.layout) != null ? _a : "top") !== "side";
|
|
435
|
+
},
|
|
436
|
+
defaultValueHint: false
|
|
437
|
+
},
|
|
438
|
+
/*
|
|
439
|
+
showAvatarMenu: {
|
|
440
|
+
displayName: "Show avatar",
|
|
441
|
+
type: "boolean",
|
|
442
|
+
defaultValue: true,
|
|
443
|
+
},
|
|
444
|
+
avatarLabel: {
|
|
445
|
+
displayName: "Avatar label",
|
|
446
|
+
type: "string",
|
|
447
|
+
defaultValue: "User Name",
|
|
448
|
+
},
|
|
449
|
+
avatarImage: {
|
|
450
|
+
displayName: "Avatar image",
|
|
451
|
+
type: "imageUrl",
|
|
452
|
+
defaultValue:
|
|
453
|
+
"https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg",
|
|
454
|
+
},
|
|
455
|
+
*/
|
|
456
|
+
menu: {
|
|
457
|
+
displayName: "Menu",
|
|
458
|
+
type: "object",
|
|
459
|
+
fields: {
|
|
460
|
+
defaultOpenAll: {
|
|
461
|
+
displayName: "Default open all",
|
|
462
|
+
type: "boolean"
|
|
463
|
+
},
|
|
464
|
+
hideMenuWhenCollapsed: {
|
|
465
|
+
// displayName: "",
|
|
466
|
+
type: "boolean"
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
},
|
|
471
|
+
defaultStyles: {
|
|
472
|
+
width: "full-bleed",
|
|
473
|
+
height: "stretch",
|
|
474
|
+
minHeight: "100vh"
|
|
475
|
+
},
|
|
476
|
+
importName: "RichLayout",
|
|
477
|
+
importPath: "@plasmicpkgs/plasmic-rich-components/skinny/rich-layout"
|
|
478
|
+
};
|
|
479
|
+
function registerRichLayout(loader) {
|
|
480
|
+
utils.registerComponentHelper(loader, RichLayout, richLayoutMeta);
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
exports.RichLayout = RichLayout;
|
|
484
|
+
exports.default = RichLayout;
|
|
485
|
+
exports.registerRichLayout = registerRichLayout;
|
|
486
|
+
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../src/widgets.tsx","../../src/rich-layout/RichLayout.tsx","../../src/rich-layout/index.tsx"],"sourcesContent":["import React from \"react\";\nexport const AnchorLink = React.forwardRef(function AnchorLink(\n props: React.ComponentProps<\"a\">,\n ref: React.Ref<HTMLAnchorElement>\n) {\n return <a {...props} ref={ref} />;\n});\n","import { LogoutOutlined } from \"@ant-design/icons\";\nimport type { MenuDataItem, ProLayoutProps } from \"@ant-design/pro-components\";\nimport { ProConfigProvider, ProLayout } from \"@ant-design/pro-components\";\nimport { useDataEnv, usePlasmicLink } from \"@plasmicapp/host\";\nimport { ConfigProvider, Dropdown, theme } from \"antd\";\nimport React, { ReactNode, useEffect, useRef, useState } from \"react\";\nimport { isLight, useIsClient } from \"../common\";\nimport { AnchorLink } from \"../widgets\";\n\nfunction omitUndefined(x: object) {\n return Object.fromEntries(\n Object.entries(x).filter(([k, v]) => v !== undefined)\n );\n}\n\ninterface NavMenuItem extends Omit<MenuDataItem, \"routes\"> {\n routes?: NavMenuItem[];\n}\n\nexport interface SimpleNavTheme {\n scheme?: \"default\" | \"light\" | \"dark\" | \"custom\" | \"primary\";\n customBgColor?: string;\n}\n\n/**\n * Filter items by condition, and add missing paths so that any added items are visible.\n */\nfunction processNavItems(navMenuItems: NavMenuItem[]): NavMenuItem[] {\n return navMenuItems\n .filter((item) => item.condition === undefined || item.condition)\n .map((item) => ({\n ...item,\n // We fill a default path because otherwise the item doesn't appear at all.\n path: item.path || \"/\",\n routes: item.routes ? processNavItems(item.routes) : undefined,\n }));\n}\n\nexport interface RichLayoutProps extends ProLayoutProps {\n navMenuItems?: NavMenuItem[];\n rootUrl?: string;\n actionsChildren?: ReactNode;\n footerChildren?: ReactNode;\n avatarLabel?: string;\n avatarImage?: string;\n showAvatarMenu?: boolean;\n simpleNavTheme?: SimpleNavTheme;\n logoElement?: ReactNode;\n}\n\n// width: 100% needed because parent is display: flex, which is needed for the min-height behavior.\nconst baseStyles = `\n.ant-pro-layout-bg-list {\n display: none;\n}\n.ant-pro-layout {\n display: flex;\n width: 100%;\n}\n.ant-pro-layout .ant-pro-layout-content {\n padding: 0;\n}\n`;\n\nexport function RichLayout({\n children,\n navMenuItems,\n rootUrl = \"/\",\n actionsChildren,\n footerChildren,\n avatarLabel,\n avatarImage,\n showAvatarMenu,\n className,\n simpleNavTheme,\n logo,\n logoElement,\n ...layoutProps\n}: RichLayoutProps) {\n const $ctx = useDataEnv();\n const ref = useRef<HTMLDivElement>(null);\n const isClient = useIsClient();\n const [pathname, setPathname] = useState<string | undefined>(undefined);\n const [openKeys, setOpenKeys] = useState<string[]>([]);\n const [ready, setReady] = useState(false);\n useEffect(() => {\n setTimeout(() => {\n setReady(true);\n }, 500);\n\n if (typeof location !== \"undefined\") {\n setPathname(location.pathname);\n }\n }, []);\n\n useEffect(() => {\n if (!ready) return;\n if (!ref.current) return;\n // open selected submenu (only opens the last one in the list!)\n const selectedSubmenus: string[] =\n (Array.from(\n ref.current.querySelectorAll(\n \"ul > li.ant-menu-submenu.ant-menu-submenu-selected > div\"\n )\n )\n .map((el) => el.getAttribute(\"data-menu-id\")?.split(\"/\").pop())\n .filter((i) => i)\n .map((i) => `/${i}`) as string[]) || [];\n setOpenKeys(selectedSubmenus);\n }, [ready]);\n\n // The usePlasmicLink function may be undefined, if host is not up to date\n const PlasmicLink = usePlasmicLink?.() ?? AnchorLink;\n const { token } = theme.useToken();\n const origTextColor = token.colorTextBase;\n function getNavBgColor(): string {\n const scheme = simpleNavTheme?.scheme ?? \"default\";\n switch (scheme) {\n case \"primary\":\n return token.colorPrimary;\n case \"dark\":\n // Ant default dark blue Menu color.\n return \"#011528\";\n case \"custom\":\n return simpleNavTheme?.customBgColor ?? token.colorBgBase;\n case \"light\":\n // Just use this sorta ugly gray if using 'light' scheme in 'dark' mode.\n // Otherwise using light scheme in light mode.\n return \"#fff\";\n case \"default\":\n return token.colorBgBase || \"#fff\";\n }\n }\n const navBgColor = getNavBgColor();\n // Dynamically determine whether we need to change the text to black/white or not, based on background color.\n // We don't want light-on-light or dark-on-dark, so if both isNavBgLight and isOrigTextLight are the same, then need to change.\n // If no need to change, we leave text color as is.\n const isNavBgLight = isLight(navBgColor);\n const isOrigTextLight = isLight(origTextColor);\n // Ant will interpret \"\" as defaulting to \"#fff\" for dark mode and \"#000\" in light mode.\n const navTextColor = isNavBgLight !== isOrigTextLight ? undefined : \"\";\n if (!isClient) {\n return null;\n }\n\n const layoutColorOverrides = isNavBgLight\n ? undefined\n : {\n colorBgCollapsedButton: navBgColor,\n colorTextCollapsedButtonHover: \"rgba(255,255,255,0.85)\",\n colorTextCollapsedButton: \"rgba(255,255,255,0.65)\",\n colorMenuBackground: navBgColor,\n colorBgMenuItemCollapsedHover: \"rgba(0,0,0,0.06)\",\n colorBgMenuItemCollapsedSelected: \"rgba(0,0,0,0.15)\",\n colorBgMenuItemCollapsedElevated: \"rgba(0,0,0,0.85)\",\n colorMenuItemDivider: \"rgba(255,255,255,0.15)\",\n colorBgMenuItemHover: \"rgba(0,0,0,0.06)\",\n colorBgMenuItemSelected: \"rgba(0,0,0,0.15)\",\n colorTextMenuSelected: \"#fff\",\n colorTextMenuItemHover: \"rgba(255,255,255,0.75)\",\n colorTextMenu: \"rgba(255,255,255,0.75)\",\n colorTextMenuSecondary: \"rgba(255,255,255,0.65)\",\n colorTextMenuTitle: \"rgba(255,255,255,0.95)\",\n colorTextMenuActive: \"rgba(255,255,255,0.95)\",\n colorTextSubMenuSelected: \"#fff\",\n };\n return (\n <div ref={ref} className={className} style={{ display: \"flex\" }}>\n {/* Remove the always-on fixed gradient background layer. */}\n <style>{baseStyles}</style>\n <ProLayout\n {...layoutProps}\n // This prevents setting a document title. Normally tries to set to either app title or page title (from routes meta).\n pageTitleRender={() => \"\"}\n logo={logo ?? logoElement}\n // Theme just the header. If you simply pass in navTheme=realDark, it affects all main content as well.\n //\n // What we're doing is telling Ant to use the dark mode algorithm. However, dark mode algorithm doesn't change\n // the seed tokens for colorTextBase and colorBgBase - it only fills in #fff and #000 for these if they are\n // unset (\"\"). So that's why further up we may be setting the text color to \"\".\n //\n // I think it doesn't matter too much what is the colorBgBase, since we are setting (Pro-specific) `tokens`\n // further down for actually setting the fill of the nav sections. What matters is the text color - if we're\n // showing a dark background, then we want the text to be white.\n //\n // We could specify darkAlgorithm to ConfigProvider, but IIRC Pro might be setting some of its own tokens\n // based on whether dark is being specified to the ProConfigProvider. So that's why we need that.\n //\n // ProConfigProvider does first read/inherit the theme/tokens from the surrounding ConfigProvider.\n headerRender={(_props, defaultDom) => (\n <ConfigProvider\n theme={{ token: omitUndefined({ colorTextBase: navTextColor }) }}\n >\n <ProConfigProvider dark={!isNavBgLight}>\n {defaultDom}\n </ProConfigProvider>\n </ConfigProvider>\n )}\n token={{\n header: omitUndefined({\n colorBgHeader: navBgColor,\n ...layoutColorOverrides,\n }),\n // Ideally, we'd do something similar to headerRender above, and just specify general dark mode to specify\n // whether all components/text should be light.\n // But for some reason it doesn't work, causing the bg color to be ignored (just the default dark Menu color),\n // *and* the text is just dark as well.\n // Haven't yet been able to unravel the pro components code to figure out the proper way to do this, so just\n // bluntly specifying tokens here, as recommended in some GitHub issue.\n sider: omitUndefined({\n colorMenuBackground: navBgColor,\n ...layoutColorOverrides,\n }),\n }}\n // Tweak defaults. ProLayout is janky and has terrible docs!\n layout={layoutProps.layout ?? \"top\"}\n fixedHeader={layoutProps.fixedHeader ?? false}\n fixSiderbar={\n // Doesn't stretch full height if you set this to false and you're in mix mode.\n layoutProps.layout === \"mix\"\n ? undefined\n : layoutProps.fixSiderbar ?? false\n }\n // This is always needed if you want layout mix to have effect and look any different from layout side - not clear why this should ever be false.\n splitMenus={layoutProps.layout === \"mix\"}\n route={{\n path: rootUrl,\n routes: navMenuItems ? processNavItems(navMenuItems) : undefined,\n }}\n location={{\n pathname,\n }}\n menu={{\n // collapsedShowGroupTitle: true,\n defaultOpenAll: false,\n // hideMenuWhenCollapsed: true,\n }}\n avatarProps={\n showAvatarMenu\n ? {\n src: avatarImage,\n size: \"small\",\n title: avatarLabel,\n render: (_props, dom) => {\n return (\n <Dropdown\n menu={{\n items: [\n {\n key: \"logout\",\n icon: <LogoutOutlined />,\n label: \"Sign out\",\n },\n ],\n }}\n >\n {dom}\n </Dropdown>\n );\n },\n }\n : undefined\n }\n actionsRender={(_props) => {\n return [actionsChildren];\n }}\n menuFooterRender={(props) => {\n if (props?.collapsed) return undefined;\n return footerChildren;\n }}\n onMenuHeaderClick={(e) => console.log(e)}\n openKeys={openKeys}\n onOpenChange={(keys) =>\n keys === false || !ready ? [] : setOpenKeys(keys)\n }\n selectedKeys={[$ctx?.pagePath]}\n menuItemRender={(item, dom) => (\n <PlasmicLink href={item.path}>{dom}</PlasmicLink>\n )}\n headerTitleRender={(logoEl, title, _) => {\n return (\n <PlasmicLink href={rootUrl}>\n {logoEl}\n {title}\n </PlasmicLink>\n );\n }}\n >\n {children}\n </ProLayout>\n </div>\n );\n}\n","import {\n ComponentMeta,\n JSONLikeType,\n} from \"@plasmicapp/host/registerComponent\";\nimport { capitalize } from \"../common\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { RichLayout, RichLayoutProps } from \"./RichLayout\";\n\nexport * from \"./RichLayout\";\nexport default RichLayout;\n\nfunction generateNavMenuType(\n isNested: boolean,\n remainingDepth: number,\n displayName?: string,\n defaultValue?: any[]\n): object & JSONLikeType<any> {\n return {\n displayName: displayName ? displayName : \"Nested items\",\n type: \"array\",\n defaultValue,\n advanced: isNested,\n itemType: {\n type: \"object\",\n nameFunc: (item: any) =>\n item.name || (!displayName ? \"Unnamed nested item\" : \"Unnamed item\"),\n fields: {\n path: \"href\",\n name: \"string\",\n condition: {\n advanced: true,\n displayName: \"Show only if\",\n type: \"exprEditor\" as any,\n },\n ...(remainingDepth === 0\n ? {}\n : {\n routes: generateNavMenuType(true, remainingDepth - 1),\n }),\n },\n },\n } as const;\n}\n\nconst richLayoutMeta: ComponentMeta<RichLayoutProps> = {\n name: \"hostless-rich-layout\",\n displayName: \"Rich App Layout\",\n props: {\n children: {\n type: \"slot\",\n unstable__isMainContentSlot: true,\n },\n actionsChildren: {\n type: \"slot\",\n hidePlaceholder: true,\n },\n title: {\n displayName: \"Title\",\n type: \"string\",\n defaultValue: \"App title\",\n },\n logo: {\n displayName: \"Logo\",\n type: \"imageUrl\",\n hidden: (ps) => !ps.logo,\n },\n logoElement: {\n type: \"slot\",\n displayName: \"Logo\",\n defaultValue: {\n type: \"img\",\n src: \"https://static1.plasmic.app/fake-logo.svg\",\n },\n hidden: (ps) => !!ps.logo,\n },\n navMenuItems: generateNavMenuType(false, 2, \"Nav menu items\", [\n {\n path: \"/\",\n name: \"Home\",\n },\n ]),\n\n layout: {\n displayName: \"Layout\",\n type: \"choice\",\n options: [\"side\", \"top\", \"mix\"].map((value) => ({\n value,\n label: capitalize(value),\n })),\n defaultValueHint: \"top\",\n },\n\n simpleNavTheme: {\n displayName: \"Theme\",\n type: \"object\",\n fields: {\n scheme: {\n type: \"choice\",\n options: [\"default\", \"primary\", \"light\", \"dark\", \"custom\"].map(\n (v) => ({\n label: capitalize(v),\n value: v,\n })\n ),\n defaultValueHint: \"default\",\n },\n customBgColor: {\n type: \"color\",\n displayName: \"Custom color\",\n hidden: (props) => !(props.simpleNavTheme?.scheme === \"custom\"),\n defaultValue: \"#D73B58\",\n },\n },\n },\n\n // Advanced, show later\n /*\n siderMenuType: {\n displayName: \"Sidebar mode\",\n type: \"choice\",\n options: [\"sub\", \"group\"].map((value) => ({\n value,\n label: capitalize(value),\n })),\n defaultValue: \"sub\",\n },\n contentWidth: {\n displayName: \"Content width\",\n type: \"choice\",\n options: [\"Fluid\", \"Fixed\"],\n defaultValueHint: \"Fluid\",\n },\n */\n fixedHeader: {\n displayName: \"Sticky header\",\n type: \"boolean\",\n hidden: (ps) => (ps.layout ?? \"top\") !== \"top\",\n defaultValueHint: false,\n },\n fixSiderbar: {\n displayName: \"Sticky sidebar\",\n type: \"boolean\",\n hidden: (ps) => (ps.layout ?? \"top\") !== \"side\",\n defaultValueHint: false,\n },\n /*\n showAvatarMenu: {\n displayName: \"Show avatar\",\n type: \"boolean\",\n defaultValue: true,\n },\n avatarLabel: {\n displayName: \"Avatar label\",\n type: \"string\",\n defaultValue: \"User Name\",\n },\n avatarImage: {\n displayName: \"Avatar image\",\n type: \"imageUrl\",\n defaultValue:\n \"https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg\",\n },\n */\n menu: {\n displayName: \"Menu\",\n type: \"object\",\n fields: {\n defaultOpenAll: {\n displayName: \"Default open all\",\n type: \"boolean\",\n },\n hideMenuWhenCollapsed: {\n // displayName: \"\",\n type: \"boolean\",\n },\n },\n },\n },\n\n defaultStyles: {\n width: \"full-bleed\",\n height: \"stretch\",\n minHeight: \"100vh\",\n },\n\n importName: \"RichLayout\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-layout\",\n};\n\nexport function registerRichLayout(loader?: Registerable) {\n registerComponentHelper(loader, RichLayout, richLayoutMeta);\n}\n"],"names":["React","AnchorLink","__spreadProps","__spreadValues","_a","_b","useDataEnv","useRef","useIsClient","useState","useEffect","usePlasmicLink","theme","isLight","ProLayout","ConfigProvider","ProConfigProvider","Dropdown","LogoutOutlined","capitalize","registerComponentHelper"],"mappings":"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"}
|