@thienvu18/designable-react-settings-form 2.0.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/LICENSE.md +20 -0
- package/README.md +1 -0
- package/esm/SchemaField.d.ts +1580 -0
- package/esm/SchemaField.js +42 -0
- package/esm/SettingsForm.d.ts +4 -0
- package/esm/SettingsForm.js +54 -0
- package/esm/components/BackgroundStyleSetter/index.d.ts +6 -0
- package/esm/components/BackgroundStyleSetter/index.js +43 -0
- package/esm/components/BorderRadiusStyleSetter/index.d.ts +6 -0
- package/esm/components/BorderRadiusStyleSetter/index.js +11 -0
- package/esm/components/BorderStyleSetter/index.d.ts +7 -0
- package/esm/components/BorderStyleSetter/index.js +74 -0
- package/esm/components/BorderStyleSetter/styles.less +70 -0
- package/esm/components/BoxShadowStyleSetter/index.d.ts +8 -0
- package/esm/components/BoxShadowStyleSetter/index.js +25 -0
- package/esm/components/BoxStyleSetter/index.d.ts +9 -0
- package/esm/components/BoxStyleSetter/index.js +49 -0
- package/esm/components/CollapseItem/index.d.ts +8 -0
- package/esm/components/CollapseItem/index.js +16 -0
- package/esm/components/CollapseItem/styles.less +45 -0
- package/esm/components/ColorInput/index.d.ts +7 -0
- package/esm/components/ColorInput/index.js +18 -0
- package/esm/components/ColorInput/styles.less +17 -0
- package/esm/components/CornerInput/index.d.ts +9 -0
- package/esm/components/CornerInput/index.js +22 -0
- package/esm/components/CornerInput/styles.less +25 -0
- package/esm/components/DisplayStyleSetter/index.d.ts +9 -0
- package/esm/components/DisplayStyleSetter/index.js +34 -0
- package/esm/components/DisplayStyleSetter/styles.less +15 -0
- package/esm/components/DrawerSetter/index.d.ts +8 -0
- package/esm/components/DrawerSetter/index.js +43 -0
- package/esm/components/DrawerSetter/styles.less +54 -0
- package/esm/components/FlexStyleSetter/index.d.ts +7 -0
- package/esm/components/FlexStyleSetter/index.js +111 -0
- package/esm/components/FlexStyleSetter/styles.less +23 -0
- package/esm/components/FoldItem/index.d.ts +7 -0
- package/esm/components/FoldItem/index.js +49 -0
- package/esm/components/FoldItem/styles.less +42 -0
- package/esm/components/FontStyleSetter/index.d.ts +6 -0
- package/esm/components/FontStyleSetter/index.js +88 -0
- package/esm/components/ImageInput/index.d.ts +9 -0
- package/esm/components/ImageInput/index.js +41 -0
- package/esm/components/ImageInput/styles.less +3 -0
- package/esm/components/InputItems/index.d.ts +23 -0
- package/esm/components/InputItems/index.js +18 -0
- package/esm/components/InputItems/styles.less +45 -0
- package/esm/components/MonacoInput/config.d.ts +1 -0
- package/esm/components/MonacoInput/config.js +39 -0
- package/esm/components/MonacoInput/format.d.ts +1 -0
- package/esm/components/MonacoInput/format.js +31 -0
- package/esm/components/MonacoInput/index.d.ts +16 -0
- package/esm/components/MonacoInput/index.js +216 -0
- package/esm/components/MonacoInput/styles.less +33 -0
- package/esm/components/MonacoInput/themes/chrome.d.ts +39 -0
- package/esm/components/MonacoInput/themes/chrome.js +106 -0
- package/esm/components/MonacoInput/themes/monokai.d.ts +31 -0
- package/esm/components/MonacoInput/themes/monokai.js +140 -0
- package/esm/components/PolyInput/index.d.ts +21 -0
- package/esm/components/PolyInput/index.js +70 -0
- package/esm/components/PolyInput/styles.less +31 -0
- package/esm/components/PositionInput/index.d.ts +9 -0
- package/esm/components/PositionInput/index.js +22 -0
- package/esm/components/PositionInput/styles.less +28 -0
- package/esm/components/SizeInput/index.d.ts +3 -0
- package/esm/components/SizeInput/index.js +53 -0
- package/esm/components/SizeInput/styles.less +23 -0
- package/esm/components/ValueInput/index.d.ts +2 -0
- package/esm/components/ValueInput/index.js +81 -0
- package/esm/components/ValueInput/styles.less +0 -0
- package/esm/components/index.d.ts +20 -0
- package/esm/components/index.js +20 -0
- package/esm/effects/index.d.ts +2 -0
- package/esm/effects/index.js +2 -0
- package/esm/effects/useLocales.d.ts +2 -0
- package/esm/effects/useLocales.js +63 -0
- package/esm/effects/useSnapshot.d.ts +2 -0
- package/esm/effects/useSnapshot.js +10 -0
- package/esm/index.d.ts +5 -0
- package/esm/index.js +5 -0
- package/esm/locales/en-US.d.ts +13 -0
- package/esm/locales/en-US.js +12 -0
- package/esm/locales/index.d.ts +1 -0
- package/esm/locales/index.js +5 -0
- package/esm/locales/ko-KR.d.ts +13 -0
- package/esm/locales/ko-KR.js +12 -0
- package/esm/locales/zh-CN.d.ts +13 -0
- package/esm/locales/zh-CN.js +12 -0
- package/esm/registry.d.ts +2 -0
- package/esm/registry.js +13 -0
- package/esm/shared/context.d.ts +3 -0
- package/esm/shared/context.js +2 -0
- package/esm/shared/loadScript.d.ts +7 -0
- package/esm/shared/loadScript.js +29 -0
- package/esm/styles.less +121 -0
- package/esm/types.d.ts +10 -0
- package/esm/types.js +1 -0
- package/lib/SchemaField.d.ts +1580 -0
- package/lib/SchemaField.js +45 -0
- package/lib/SettingsForm.d.ts +4 -0
- package/lib/SettingsForm.js +60 -0
- package/lib/components/BackgroundStyleSetter/index.d.ts +6 -0
- package/lib/components/BackgroundStyleSetter/index.js +49 -0
- package/lib/components/BorderRadiusStyleSetter/index.d.ts +6 -0
- package/lib/components/BorderRadiusStyleSetter/index.js +15 -0
- package/lib/components/BorderStyleSetter/index.d.ts +7 -0
- package/lib/components/BorderStyleSetter/index.js +80 -0
- package/lib/components/BorderStyleSetter/styles.less +70 -0
- package/lib/components/BoxShadowStyleSetter/index.d.ts +8 -0
- package/lib/components/BoxShadowStyleSetter/index.js +31 -0
- package/lib/components/BoxStyleSetter/index.d.ts +9 -0
- package/lib/components/BoxStyleSetter/index.js +55 -0
- package/lib/components/CollapseItem/index.d.ts +8 -0
- package/lib/components/CollapseItem/index.js +22 -0
- package/lib/components/CollapseItem/styles.less +45 -0
- package/lib/components/ColorInput/index.d.ts +7 -0
- package/lib/components/ColorInput/index.js +22 -0
- package/lib/components/ColorInput/styles.less +17 -0
- package/lib/components/CornerInput/index.d.ts +9 -0
- package/lib/components/CornerInput/index.js +29 -0
- package/lib/components/CornerInput/styles.less +25 -0
- package/lib/components/DisplayStyleSetter/index.d.ts +9 -0
- package/lib/components/DisplayStyleSetter/index.js +40 -0
- package/lib/components/DisplayStyleSetter/styles.less +15 -0
- package/lib/components/DrawerSetter/index.d.ts +8 -0
- package/lib/components/DrawerSetter/index.js +49 -0
- package/lib/components/DrawerSetter/styles.less +54 -0
- package/lib/components/FlexStyleSetter/index.d.ts +7 -0
- package/lib/components/FlexStyleSetter/index.js +117 -0
- package/lib/components/FlexStyleSetter/styles.less +23 -0
- package/lib/components/FoldItem/index.d.ts +7 -0
- package/lib/components/FoldItem/index.js +78 -0
- package/lib/components/FoldItem/styles.less +42 -0
- package/lib/components/FontStyleSetter/index.d.ts +6 -0
- package/lib/components/FontStyleSetter/index.js +94 -0
- package/lib/components/ImageInput/index.d.ts +9 -0
- package/lib/components/ImageInput/index.js +49 -0
- package/lib/components/ImageInput/styles.less +3 -0
- package/lib/components/InputItems/index.d.ts +23 -0
- package/lib/components/InputItems/index.js +48 -0
- package/lib/components/InputItems/styles.less +45 -0
- package/lib/components/MonacoInput/config.d.ts +1 -0
- package/lib/components/MonacoInput/config.js +46 -0
- package/lib/components/MonacoInput/format.d.ts +1 -0
- package/lib/components/MonacoInput/format.js +35 -0
- package/lib/components/MonacoInput/index.d.ts +16 -0
- package/lib/components/MonacoInput/index.js +246 -0
- package/lib/components/MonacoInput/styles.less +33 -0
- package/lib/components/MonacoInput/themes/chrome.d.ts +39 -0
- package/lib/components/MonacoInput/themes/chrome.js +108 -0
- package/lib/components/MonacoInput/themes/monokai.d.ts +31 -0
- package/lib/components/MonacoInput/themes/monokai.js +142 -0
- package/lib/components/PolyInput/index.d.ts +21 -0
- package/lib/components/PolyInput/index.js +100 -0
- package/lib/components/PolyInput/styles.less +31 -0
- package/lib/components/PositionInput/index.d.ts +9 -0
- package/lib/components/PositionInput/index.js +29 -0
- package/lib/components/PositionInput/styles.less +28 -0
- package/lib/components/SizeInput/index.d.ts +3 -0
- package/lib/components/SizeInput/index.js +56 -0
- package/lib/components/SizeInput/styles.less +23 -0
- package/lib/components/ValueInput/index.d.ts +2 -0
- package/lib/components/ValueInput/index.js +84 -0
- package/lib/components/ValueInput/styles.less +0 -0
- package/lib/components/index.d.ts +20 -0
- package/lib/components/index.js +36 -0
- package/lib/effects/index.d.ts +2 -0
- package/lib/effects/index.js +18 -0
- package/lib/effects/useLocales.d.ts +2 -0
- package/lib/effects/useLocales.js +67 -0
- package/lib/effects/useSnapshot.d.ts +2 -0
- package/lib/effects/useSnapshot.js +14 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.js +21 -0
- package/lib/locales/en-US.d.ts +13 -0
- package/lib/locales/en-US.js +14 -0
- package/lib/locales/index.d.ts +1 -0
- package/lib/locales/index.js +10 -0
- package/lib/locales/ko-KR.d.ts +13 -0
- package/lib/locales/ko-KR.js +14 -0
- package/lib/locales/zh-CN.d.ts +13 -0
- package/lib/locales/zh-CN.js +14 -0
- package/lib/registry.d.ts +2 -0
- package/lib/registry.js +21 -0
- package/lib/shared/context.d.ts +3 -0
- package/lib/shared/context.js +5 -0
- package/lib/shared/loadScript.d.ts +7 -0
- package/lib/shared/loadScript.js +33 -0
- package/lib/styles.less +121 -0
- package/lib/types.d.ts +10 -0
- package/lib/types.js +2 -0
- package/package.json +71 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
.dn-corner-input {
|
|
2
|
+
display: flex;
|
|
3
|
+
&-column {
|
|
4
|
+
display: flex;
|
|
5
|
+
justify-content: center;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
align-items: center;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
&-cell {
|
|
11
|
+
width: 26px;
|
|
12
|
+
height: 26px;
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
justify-content: center;
|
|
17
|
+
cursor: pointer;
|
|
18
|
+
border-radius: 3px;
|
|
19
|
+
color: rgba(0, 0, 0, 0.6);
|
|
20
|
+
margin: 5px;
|
|
21
|
+
&.active {
|
|
22
|
+
background: linear-gradient(rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.2));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './styles.less';
|
|
3
|
+
export interface IDisplayStyleSetterProps {
|
|
4
|
+
className?: string;
|
|
5
|
+
style?: React.CSSProperties;
|
|
6
|
+
value?: string;
|
|
7
|
+
onChange?: (value: string) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const DisplayStyleSetter: React.FC<IDisplayStyleSetterProps>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DisplayStyleSetter = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_1 = require("@formily/react");
|
|
9
|
+
const formily_antd_v6_1 = require("@thienvu18/formily-antd-v6");
|
|
10
|
+
const antd_1 = require("antd");
|
|
11
|
+
const designable_react_1 = require("@thienvu18/designable-react");
|
|
12
|
+
const FlexStyleSetter_1 = require("../FlexStyleSetter");
|
|
13
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
14
|
+
require("./styles.less");
|
|
15
|
+
exports.DisplayStyleSetter = (0, react_1.observer)((props) => {
|
|
16
|
+
const field = (0, react_1.useField)();
|
|
17
|
+
const prefix = (0, designable_react_1.usePrefix)('display-style-setter');
|
|
18
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(formily_antd_v6_1.FormItem.BaseItem, { label: field.title, className: (0, classnames_1.default)(prefix, props.className), style: props.style, children: (0, jsx_runtime_1.jsx)(antd_1.Radio.Group, { className: prefix + '-radio', options: [
|
|
19
|
+
{
|
|
20
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "DisplayBlock", size: 16 }),
|
|
21
|
+
value: 'block',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "DisplayInlineBlock", size: 16 }),
|
|
25
|
+
value: 'inline-block',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "DisplayInline", size: 16 }),
|
|
29
|
+
value: 'inline',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "DisplayFlex", size: 16 }),
|
|
33
|
+
value: 'flex',
|
|
34
|
+
},
|
|
35
|
+
], value: props.value, onChange: (e) => {
|
|
36
|
+
props.onChange?.(e.target.value);
|
|
37
|
+
}, optionType: "button" }) }), (0, jsx_runtime_1.jsx)(react_1.Field, { name: "flex", basePath: field.address.parent(), visible: false, reactions: (flexField) => {
|
|
38
|
+
flexField.visible = field.value === 'flex';
|
|
39
|
+
}, component: [FlexStyleSetter_1.FlexStyleSetter] })] }));
|
|
40
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
@ant-prefix: ant;
|
|
2
|
+
.dn-display-style-setter {
|
|
3
|
+
&-radio {
|
|
4
|
+
display: flex !important;
|
|
5
|
+
width: 100%;
|
|
6
|
+
|
|
7
|
+
.@{ant-prefix}-radio-button-wrapper {
|
|
8
|
+
flex-grow: 1;
|
|
9
|
+
display: flex;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
align-items: center;
|
|
12
|
+
padding: 0;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DrawerSetter = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const react_dom_1 = require("react-dom");
|
|
10
|
+
const react_2 = require("@formily/react");
|
|
11
|
+
const formily_antd_v6_1 = require("@thienvu18/formily-antd-v6");
|
|
12
|
+
const designable_react_1 = require("@thienvu18/designable-react");
|
|
13
|
+
const antd_1 = require("antd");
|
|
14
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
15
|
+
require("./styles.less");
|
|
16
|
+
exports.DrawerSetter = (0, react_2.observer)((props) => {
|
|
17
|
+
const node = (0, designable_react_1.useTreeNode)();
|
|
18
|
+
const field = (0, react_2.useField)();
|
|
19
|
+
const [visible, setVisible] = (0, react_1.useState)(false);
|
|
20
|
+
const [remove, setRemove] = (0, react_1.useState)(false);
|
|
21
|
+
const [root, setRoot] = (0, react_1.useState)();
|
|
22
|
+
const prefix = (0, designable_react_1.usePrefix)('drawer-setter');
|
|
23
|
+
const formWrapperCls = (0, designable_react_1.usePrefix)('settings-form-wrapper');
|
|
24
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
25
|
+
const wrapper = document.querySelector('.' + formWrapperCls);
|
|
26
|
+
if (wrapper) {
|
|
27
|
+
setRoot(wrapper);
|
|
28
|
+
}
|
|
29
|
+
}, [node]);
|
|
30
|
+
const renderDrawer = () => {
|
|
31
|
+
if (root && visible) {
|
|
32
|
+
return (0, react_dom_1.createPortal)((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(prefix, 'animate__animated animate__slideInRight', {
|
|
33
|
+
animate__slideOutRight: remove,
|
|
34
|
+
}), children: [(0, jsx_runtime_1.jsxs)("div", { className: prefix + '-header', onClick: handleClose, children: [(0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "Return", size: 18 }), (0, jsx_runtime_1.jsx)("span", { className: prefix + '-header-text', children: props.text || field.title })] }), (0, jsx_runtime_1.jsx)("div", { className: prefix + '-body', children: (0, jsx_runtime_1.jsx)(formily_antd_v6_1.FormLayout, { colon: false, labelWidth: 120, labelAlign: "left", wrapperAlign: "right", feedbackLayout: "none", tooltipLayout: "text", children: props.children }) })] }), root);
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
};
|
|
38
|
+
const handleOpen = () => {
|
|
39
|
+
setVisible(true);
|
|
40
|
+
};
|
|
41
|
+
const handleClose = () => {
|
|
42
|
+
setRemove(true);
|
|
43
|
+
setTimeout(() => {
|
|
44
|
+
setVisible(false);
|
|
45
|
+
setRemove(false);
|
|
46
|
+
}, 150);
|
|
47
|
+
};
|
|
48
|
+
return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(antd_1.Button, { block: true, onClick: handleOpen, ...props.triggerProps, children: props.text || field.title }), renderDrawer()] }));
|
|
49
|
+
});
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
|
|
2
|
+
.dn-drawer-setter {
|
|
3
|
+
position: absolute;
|
|
4
|
+
top: 0;
|
|
5
|
+
left: 0;
|
|
6
|
+
width: 100%;
|
|
7
|
+
bottom: 0;
|
|
8
|
+
background: var(--dn-composite-panel-tabs-content-bg-color);
|
|
9
|
+
z-index: 10;
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
|
|
13
|
+
&-header {
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
flex-shrink: 0;
|
|
17
|
+
flex-grow: 0;
|
|
18
|
+
padding: 5px 10px;
|
|
19
|
+
color: var(--dn-color-text, rgba(0, 0, 0, 0.88));
|
|
20
|
+
border-bottom: 1px solid var(--dn-color-border-secondary, rgba(5, 5, 5, 0.06));
|
|
21
|
+
cursor: pointer;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
&-header-text {
|
|
25
|
+
margin-left: 4px;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
&-body {
|
|
29
|
+
padding: 10px 20px;
|
|
30
|
+
overflow: overlay;
|
|
31
|
+
overflow-x: hidden;
|
|
32
|
+
flex-grow: 2;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.dn-drawer-wrapper {
|
|
37
|
+
transition: all 0.16s ease-in-out;
|
|
38
|
+
|
|
39
|
+
&-enter {
|
|
40
|
+
transform: translateX(100%);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&-enter-active {
|
|
44
|
+
transform: translateX(0);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&-exit {
|
|
48
|
+
transform: translateX(0);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&-exit-active {
|
|
52
|
+
transform: translateX(100%);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FlexStyleSetter = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_1 = require("@formily/react");
|
|
9
|
+
const formily_antd_v6_1 = require("@thienvu18/formily-antd-v6");
|
|
10
|
+
const designable_react_1 = require("@thienvu18/designable-react");
|
|
11
|
+
const InputItems_1 = require("../InputItems");
|
|
12
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
13
|
+
require("./styles.less");
|
|
14
|
+
exports.FlexStyleSetter = (0, react_1.observer)((props) => {
|
|
15
|
+
const field = (0, react_1.useField)();
|
|
16
|
+
const prefix = (0, designable_react_1.usePrefix)('flex-style-setter');
|
|
17
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(prefix, props.className), style: props.style, children: (0, jsx_runtime_1.jsxs)(InputItems_1.InputItems, { vertical: true, children: [(0, jsx_runtime_1.jsx)(react_1.Field, { name: "flexDirection", basePath: field.address.parent(), dataSource: [
|
|
18
|
+
{
|
|
19
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexDirectionRow" }),
|
|
20
|
+
value: 'row',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexDirectionColumn" }),
|
|
24
|
+
value: 'column',
|
|
25
|
+
},
|
|
26
|
+
], reactions: (field) => {
|
|
27
|
+
field.decorator[1].title = `Flex Direction : ${field.value || ''}`;
|
|
28
|
+
}, decorator: [InputItems_1.InputItems.Item], component: [formily_antd_v6_1.Radio.Group, { optionType: 'button' }] }), (0, jsx_runtime_1.jsx)(react_1.Field, { name: "flexWrap", basePath: field.address.parent(), dataSource: [
|
|
29
|
+
{
|
|
30
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexNoWrap" }),
|
|
31
|
+
value: 'nowrap',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexWrap" }),
|
|
35
|
+
value: 'wrap',
|
|
36
|
+
},
|
|
37
|
+
], reactions: (field) => {
|
|
38
|
+
field.decorator[1].title = `Flex Wrap : ${field.value || ''}`;
|
|
39
|
+
}, decorator: [InputItems_1.InputItems.Item], component: [formily_antd_v6_1.Radio.Group, { optionType: 'button' }] }), (0, jsx_runtime_1.jsx)(react_1.Field, { name: "alignContent", basePath: field.address.parent(), dataSource: [
|
|
40
|
+
{
|
|
41
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexAlignContentCenter" }),
|
|
42
|
+
value: 'center',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexAlignContentStart" }),
|
|
46
|
+
value: 'flex-start',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexAlignContentEnd" }),
|
|
50
|
+
value: 'flex-end',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexAlignContentSpaceAround" }),
|
|
54
|
+
value: 'space-around',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexAlignContentSpaceBetween" }),
|
|
58
|
+
value: 'space-between',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexAlignContentStretch" }),
|
|
62
|
+
value: 'stretch',
|
|
63
|
+
},
|
|
64
|
+
], reactions: (field) => {
|
|
65
|
+
field.decorator[1].title = `Align Content : ${field.value || ''}`;
|
|
66
|
+
}, decorator: [InputItems_1.InputItems.Item], component: [formily_antd_v6_1.Radio.Group, { optionType: 'button' }] }), (0, jsx_runtime_1.jsx)(react_1.Field, { name: "justifyContent", basePath: field.address.parent(), dataSource: [
|
|
67
|
+
{
|
|
68
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexJustifyCenter" }),
|
|
69
|
+
value: 'center',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexJustifyStart" }),
|
|
73
|
+
value: 'flex-start',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexJustifyEnd" }),
|
|
77
|
+
value: 'flex-end',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexJustifySpaceAround" }),
|
|
81
|
+
value: 'space-around',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexJustifySpaceBetween" }),
|
|
85
|
+
value: 'space-between',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexJustifySpaceEvenly" }),
|
|
89
|
+
value: 'space-evenly',
|
|
90
|
+
},
|
|
91
|
+
], reactions: (field) => {
|
|
92
|
+
field.decorator[1].title = `Justify Content : ${field.value || ''}`;
|
|
93
|
+
}, decorator: [InputItems_1.InputItems.Item], component: [formily_antd_v6_1.Radio.Group, { optionType: 'button' }] }), (0, jsx_runtime_1.jsx)(react_1.Field, { name: "alignItems", basePath: field.address.parent(), dataSource: [
|
|
94
|
+
{
|
|
95
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexAlignItemsCenter" }),
|
|
96
|
+
value: 'center',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexAlignItemsStart" }),
|
|
100
|
+
value: 'flex-start',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexAlignItemsEnd" }),
|
|
104
|
+
value: 'flex-end',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexAlignItemsStretch" }),
|
|
108
|
+
value: 'stretch',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "FlexAlignItemsBaseline" }),
|
|
112
|
+
value: 'baseline',
|
|
113
|
+
},
|
|
114
|
+
], reactions: (field) => {
|
|
115
|
+
field.decorator[1].title = `Align Items : ${field.value || ''}`;
|
|
116
|
+
}, decorator: [InputItems_1.InputItems.Item], component: [formily_antd_v6_1.Radio.Group, { optionType: 'button' }] })] }) }));
|
|
117
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
@ant-prefix: ant;
|
|
2
|
+
.dn-flex-style-setter {
|
|
3
|
+
.dn-input-items {
|
|
4
|
+
margin-top: -10px;
|
|
5
|
+
margin-left: -10px;
|
|
6
|
+
margin-right: -10px;
|
|
7
|
+
margin-bottom: 10px;
|
|
8
|
+
padding: 10px 10px 0 10px;
|
|
9
|
+
background-color: var(--dn-color-border-secondary, rgba(5, 5, 5, 0.06));
|
|
10
|
+
|
|
11
|
+
.@{ant-prefix}-radio-group {
|
|
12
|
+
display: flex;
|
|
13
|
+
width: 100%;
|
|
14
|
+
|
|
15
|
+
.@{ant-prefix}-radio-button-wrapper {
|
|
16
|
+
flex-grow: 1;
|
|
17
|
+
display: flex;
|
|
18
|
+
justify-content: center;
|
|
19
|
+
padding: 0;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IFormItemProps } from '@thienvu18/formily-antd-v6';
|
|
3
|
+
import './styles.less';
|
|
4
|
+
export declare const FoldItem: React.FC<React.PropsWithChildren<IFormItemProps>> & {
|
|
5
|
+
Base?: React.FC<React.PropsWithChildren<{}>>;
|
|
6
|
+
Extra?: React.FC<React.PropsWithChildren<{}>>;
|
|
7
|
+
};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.FoldItem = void 0;
|
|
30
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
31
|
+
const react_1 = __importStar(require("react"));
|
|
32
|
+
const formily_antd_v6_1 = require("@thienvu18/formily-antd-v6");
|
|
33
|
+
const react_2 = require("@formily/react");
|
|
34
|
+
const reactive_1 = require("@formily/reactive");
|
|
35
|
+
const designable_react_1 = require("@thienvu18/designable-react");
|
|
36
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
37
|
+
require("./styles.less");
|
|
38
|
+
const ExpandedMap = new Map();
|
|
39
|
+
exports.FoldItem = (0, react_2.observer)(({ className, style, children, ...props }) => {
|
|
40
|
+
const prefix = (0, designable_react_1.usePrefix)('fold-item');
|
|
41
|
+
const field = (0, react_2.useField)();
|
|
42
|
+
const expand = (0, react_1.useMemo)(() => reactive_1.observable.ref(ExpandedMap.get(field?.address?.toString() || '')), [field?.address]);
|
|
43
|
+
const slots = (0, react_1.useRef)({
|
|
44
|
+
base: null,
|
|
45
|
+
extra: null,
|
|
46
|
+
});
|
|
47
|
+
slots.current = { base: null, extra: null };
|
|
48
|
+
react_1.default.Children.forEach(children, (node) => {
|
|
49
|
+
if (react_1.default.isValidElement(node)) {
|
|
50
|
+
if (node?.type?.displayName === 'FoldItem.Base') {
|
|
51
|
+
slots.current.base = node.props?.children;
|
|
52
|
+
}
|
|
53
|
+
if (node?.type?.displayName === 'FoldItem.Extra') {
|
|
54
|
+
slots.current.extra = node.props?.children;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(prefix, className), style: style, children: [(0, jsx_runtime_1.jsx)("div", { className: prefix + '-base', onClick: () => {
|
|
59
|
+
expand.value = !expand.value;
|
|
60
|
+
if (field?.address) {
|
|
61
|
+
ExpandedMap.set(field.address.toString(), expand.value);
|
|
62
|
+
}
|
|
63
|
+
}, children: (0, jsx_runtime_1.jsx)(formily_antd_v6_1.FormItem.BaseItem, { ...props, label: (0, jsx_runtime_1.jsxs)("span", { className: (0, classnames_1.default)(prefix + '-title', {
|
|
64
|
+
expand: expand.value,
|
|
65
|
+
}), children: [slots.current.extra && (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "Expand", size: 10 }), props.label] }), children: (0, jsx_runtime_1.jsx)("div", { style: { width: '100%' }, onClick: (e) => {
|
|
66
|
+
e.stopPropagation();
|
|
67
|
+
}, children: slots.current.base }) }) }), expand.value && slots.current.extra && ((0, jsx_runtime_1.jsx)("div", { className: prefix + '-extra', children: slots.current.extra }))] }));
|
|
68
|
+
});
|
|
69
|
+
const Base = () => {
|
|
70
|
+
return (0, jsx_runtime_1.jsx)(react_1.Fragment, {});
|
|
71
|
+
};
|
|
72
|
+
Base.displayName = 'FoldItem.Base';
|
|
73
|
+
const Extra = () => {
|
|
74
|
+
return (0, jsx_runtime_1.jsx)(react_1.Fragment, {});
|
|
75
|
+
};
|
|
76
|
+
Extra.displayName = 'FoldItem.Extra';
|
|
77
|
+
exports.FoldItem.Base = Base;
|
|
78
|
+
exports.FoldItem.Extra = Extra;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
@ant-prefix: ant;
|
|
2
|
+
.dn-fold-item {
|
|
3
|
+
.@{ant-prefix}-formily-item-label-content {
|
|
4
|
+
overflow: visible;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
&-base {
|
|
8
|
+
cursor: pointer;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
&-title {
|
|
12
|
+
display: flex;
|
|
13
|
+
align-items: center;
|
|
14
|
+
margin-left: -10px;
|
|
15
|
+
cursor: pointer;
|
|
16
|
+
.dn-icon {
|
|
17
|
+
transform: translateX(-3px);
|
|
18
|
+
|
|
19
|
+
svg {
|
|
20
|
+
transition: all 0.15s ease-in-out;
|
|
21
|
+
transform: rotate(-90deg);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
&.expand {
|
|
26
|
+
.dn-icon {
|
|
27
|
+
svg {
|
|
28
|
+
transform: rotate(0deg);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
&-extra {
|
|
35
|
+
margin-top: -10px;
|
|
36
|
+
margin-left: -10px;
|
|
37
|
+
margin-right: -10px;
|
|
38
|
+
margin-bottom: 10px;
|
|
39
|
+
padding: 10px 10px 0 10px;
|
|
40
|
+
background-color: var(--dn-composite-panel-highlight-bg-color);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FontStyleSetter = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const designable_react_1 = require("@thienvu18/designable-react");
|
|
9
|
+
const react_1 = require("@formily/react");
|
|
10
|
+
const formily_antd_v6_1 = require("@thienvu18/formily-antd-v6");
|
|
11
|
+
const FoldItem_1 = require("../FoldItem");
|
|
12
|
+
const InputItems_1 = require("../InputItems");
|
|
13
|
+
const SizeInput_1 = require("../SizeInput");
|
|
14
|
+
const ColorInput_1 = require("../ColorInput");
|
|
15
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
16
|
+
const createFontFamilyOptions = (fonts) => {
|
|
17
|
+
return fonts.map((font) => {
|
|
18
|
+
const splited = font.split('=');
|
|
19
|
+
const label = splited?.[0];
|
|
20
|
+
const value = splited?.[1];
|
|
21
|
+
return {
|
|
22
|
+
label: (0, jsx_runtime_1.jsx)("span", { style: { fontFamily: value }, children: label }),
|
|
23
|
+
value,
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
const FontFamilyOptions = createFontFamilyOptions([
|
|
28
|
+
'宋体=SimSun',
|
|
29
|
+
'微软雅黑=Microsoft Yahei',
|
|
30
|
+
'苹方=PingFang SC',
|
|
31
|
+
'Andale Mono=andale mono,monospace',
|
|
32
|
+
'Arial=arial,helvetica,sans-serif',
|
|
33
|
+
'Arial Black=arial black,sans-serif',
|
|
34
|
+
'Book Antiqua=book antiqua,palatino,serif',
|
|
35
|
+
'Comic Sans MS=comic sans ms,sans-serif',
|
|
36
|
+
'Courier New=courier new,courier,monospace',
|
|
37
|
+
'Georgia=georgia,palatino,serif',
|
|
38
|
+
'Helvetica Neue=Helvetica Neue',
|
|
39
|
+
'Helvetica=helvetica,arial,sans-serif',
|
|
40
|
+
'Impact=impact,sans-serif',
|
|
41
|
+
'Symbol=symbol',
|
|
42
|
+
'Tahoma=tahoma,arial,helvetica,sans-serif',
|
|
43
|
+
'Terminal=terminal,monaco,monospace',
|
|
44
|
+
'Times New Roman=times new roman,times,serif',
|
|
45
|
+
'Trebuchet MS=trebuchet ms,geneva,sans-serif',
|
|
46
|
+
'Verdana=verdana,geneva,sans-serif',
|
|
47
|
+
]);
|
|
48
|
+
exports.FontStyleSetter = (0, react_1.observer)((props) => {
|
|
49
|
+
const field = (0, react_1.useField)();
|
|
50
|
+
const prefix = (0, designable_react_1.usePrefix)('font-style-setter');
|
|
51
|
+
return ((0, jsx_runtime_1.jsxs)(FoldItem_1.FoldItem, { label: field.title, className: (0, classnames_1.default)(prefix, props.className), style: props.style, children: [(0, jsx_runtime_1.jsx)(FoldItem_1.FoldItem.Base, { children: (0, jsx_runtime_1.jsx)(react_1.Field, { name: "fontFamily", basePath: field.address.parent(), component: [
|
|
52
|
+
formily_antd_v6_1.Select,
|
|
53
|
+
{ style: { width: '100%' }, placeholder: 'Helvetica Neue' },
|
|
54
|
+
], dataSource: FontFamilyOptions }) }), (0, jsx_runtime_1.jsx)(FoldItem_1.FoldItem.Extra, { children: (0, jsx_runtime_1.jsxs)(InputItems_1.InputItems, { children: [(0, jsx_runtime_1.jsx)(InputItems_1.InputItems.Item, { icon: "FontWeight", width: "50%", children: (0, jsx_runtime_1.jsx)(react_1.Field, { name: "fontWeight", basePath: field.address.parent(), component: [formily_antd_v6_1.NumberPicker, { placeholder: '400' }] }) }), (0, jsx_runtime_1.jsx)(InputItems_1.InputItems.Item, { icon: "FontStyle", width: "50%", children: (0, jsx_runtime_1.jsx)(react_1.Field, { name: "fontStyle", basePath: field.address.parent(), dataSource: [
|
|
55
|
+
{
|
|
56
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "NormalFontStyle" }),
|
|
57
|
+
value: 'normal',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "ItalicFontStyle" }),
|
|
61
|
+
value: 'italic',
|
|
62
|
+
},
|
|
63
|
+
], component: [formily_antd_v6_1.Radio.Group, { optionType: 'button' }] }) }), (0, jsx_runtime_1.jsx)(InputItems_1.InputItems.Item, { icon: "FontColor", width: "100%", children: (0, jsx_runtime_1.jsx)(react_1.Field, { name: "color", basePath: field.address.parent(), component: [ColorInput_1.ColorInput] }) }), (0, jsx_runtime_1.jsx)(InputItems_1.InputItems.Item, { icon: "FontSize", width: "50%", children: (0, jsx_runtime_1.jsx)(react_1.Field, { name: "fontSize", basePath: field.address.parent(), component: [SizeInput_1.SizeInput, { exclude: ['auto'] }] }) }), (0, jsx_runtime_1.jsx)(InputItems_1.InputItems.Item, { icon: "LineHeight", width: "50%", children: (0, jsx_runtime_1.jsx)(react_1.Field, { name: "lineHeight", basePath: field.address.parent(), component: [SizeInput_1.SizeInput, { exclude: ['auto'] }] }) }), (0, jsx_runtime_1.jsx)(InputItems_1.InputItems.Item, { icon: "TextAlign", children: (0, jsx_runtime_1.jsx)(react_1.Field, { name: "textAlign", basePath: field.address.parent(), dataSource: [
|
|
64
|
+
{
|
|
65
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "TextAlignLeft" }),
|
|
66
|
+
value: 'left',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "TextAlignCenter" }),
|
|
70
|
+
value: 'center',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "TextAlignRight" }),
|
|
74
|
+
value: 'right',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "TextAlignJustify" }),
|
|
78
|
+
value: 'justify',
|
|
79
|
+
},
|
|
80
|
+
], component: [formily_antd_v6_1.Radio.Group, { optionType: 'button' }] }) }), (0, jsx_runtime_1.jsx)(InputItems_1.InputItems.Item, { icon: "TextDecoration", children: (0, jsx_runtime_1.jsx)(react_1.Field, { name: "textDecoration", basePath: field.address.parent(), dataSource: [
|
|
81
|
+
{
|
|
82
|
+
label: '--',
|
|
83
|
+
value: 'none',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "TextUnderline" }),
|
|
87
|
+
value: 'underline',
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
label: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "TextLineThrough" }),
|
|
91
|
+
value: 'line-through',
|
|
92
|
+
},
|
|
93
|
+
], component: [formily_antd_v6_1.Radio.Group, { optionType: 'button' }] }) })] }) })] }));
|
|
94
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { InputProps } from 'antd';
|
|
3
|
+
import './styles.less';
|
|
4
|
+
export interface ImageInputProps extends Omit<InputProps, 'onChange'> {
|
|
5
|
+
value?: string;
|
|
6
|
+
onChange?: (value: string) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare const ImageInput: React.FC<ImageInputProps>;
|
|
9
|
+
export declare const BackgroundImageInput: React.FC<ImageInputProps>;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BackgroundImageInput = exports.ImageInput = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const antd_1 = require("antd");
|
|
10
|
+
const designable_react_1 = require("@thienvu18/designable-react");
|
|
11
|
+
const context_1 = require("../../shared/context");
|
|
12
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
13
|
+
require("./styles.less");
|
|
14
|
+
const ImageInput = ({ className, style, ...props }) => {
|
|
15
|
+
const prefix = (0, designable_react_1.usePrefix)('image-input');
|
|
16
|
+
const context = (0, react_1.useContext)(context_1.SettingsFormContext);
|
|
17
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(prefix, className), style: style, children: (0, jsx_runtime_1.jsx)(antd_1.Input, { ...props, onChange: (e) => {
|
|
18
|
+
props.onChange?.(e?.target?.['value']);
|
|
19
|
+
}, prefix: (0, jsx_runtime_1.jsx)(antd_1.Upload, { action: context.uploadAction, itemRender: () => null, maxCount: 1, onChange: (params) => {
|
|
20
|
+
const response = params.file?.response;
|
|
21
|
+
const url = response?.url ||
|
|
22
|
+
response?.downloadURL ||
|
|
23
|
+
response?.imageURL ||
|
|
24
|
+
response?.thumbUrl;
|
|
25
|
+
if (!url)
|
|
26
|
+
return;
|
|
27
|
+
props.onChange?.(url);
|
|
28
|
+
}, children: (0, jsx_runtime_1.jsx)(designable_react_1.IconWidget, { infer: "CloudUpload", style: { cursor: 'pointer' } }) }) }) }));
|
|
29
|
+
};
|
|
30
|
+
exports.ImageInput = ImageInput;
|
|
31
|
+
const BackgroundImageInput = (props) => {
|
|
32
|
+
const addBgValue = (value) => {
|
|
33
|
+
if (/url\([^)]+\)/.test(value)) {
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
return `url(${value})`;
|
|
37
|
+
};
|
|
38
|
+
const removeBgValue = (value) => {
|
|
39
|
+
const matched = String(value).match(/url\(\s*([^)]+)\s*\)/);
|
|
40
|
+
if (matched?.[1]) {
|
|
41
|
+
return matched?.[1];
|
|
42
|
+
}
|
|
43
|
+
return value;
|
|
44
|
+
};
|
|
45
|
+
return ((0, jsx_runtime_1.jsx)(exports.ImageInput, { value: removeBgValue(props.value), onChange: (url) => {
|
|
46
|
+
props.onChange?.(addBgValue(url));
|
|
47
|
+
} }));
|
|
48
|
+
};
|
|
49
|
+
exports.BackgroundImageInput = BackgroundImageInput;
|