aldehyde 0.2.327 → 0.2.328
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/lib/controls/icon-selector/app-icon-selector.d.ts +2 -2
- package/lib/controls/icon-selector/app-icon-selector.d.ts.map +1 -1
- package/lib/controls/icon-selector/app-icon-selector.js +7 -2
- package/lib/controls/icon-selector/app-icon-selector.js.map +1 -1
- package/lib/controls/icon-selector/pc-icon-selector.d.ts +2 -2
- package/lib/controls/icon-selector/pc-icon-selector.d.ts.map +1 -1
- package/lib/controls/icon-selector/pc-icon-selector.js +7 -2
- package/lib/controls/icon-selector/pc-icon-selector.js.map +1 -1
- package/package.json +1 -1
- package/src/aldehyde/controls/icon-selector/app-icon-selector.tsx +12 -4
- package/src/aldehyde/controls/icon-selector/pc-icon-selector.tsx +12 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-icon-selector.d.ts","sourceRoot":"","sources":["../../../../../src/aldehyde/controls/icon-selector/app-icon-selector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"app-icon-selector.d.ts","sourceRoot":"","sources":["../../../../../src/aldehyde/controls/icon-selector/app-icon-selector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAIxC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAOrD,UAAU,KAAM,SAAQ,aAAa;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;CACf;AAED,QAAA,MAAM,KAAK,GAAI,OAAO,KAAK,sBA+C1B,CAAA;AAED,eAAe,KAAK,CAAC"}
|
|
@@ -2,16 +2,21 @@ import React, { useState } from 'react';
|
|
|
2
2
|
import { createFromIconfontCN } from '@ant-design/icons';
|
|
3
3
|
import { Select, Empty, Row, Col } from "antd";
|
|
4
4
|
import iconEnum from "./icon/phonenode-menu-icon/iconfont.json";
|
|
5
|
+
import { useLocale } from "../../locale/useLocale";
|
|
5
6
|
const IconFont = createFromIconfontCN({ scriptUrl: "./icon/phonenode-menu-icon/iconfont.js" });
|
|
6
7
|
const options = iconEnum.glyphs.map(item => ({ value: `icon-${item.font_class}`, label: React.createElement(IconFont, { type: `icon-${item.font_class}` }) }));
|
|
7
8
|
const Index = (props) => {
|
|
8
|
-
const { value, onChange,
|
|
9
|
+
const { value, onChange, fieldConfig, id } = props;
|
|
9
10
|
const [filterOptions, setFilterOptions] = useState(options);
|
|
10
11
|
const [open, setOpen] = useState(false);
|
|
12
|
+
const { translate } = useLocale();
|
|
13
|
+
const placeholder = !fieldConfig.disabled
|
|
14
|
+
? translate("${请选择}${" + fieldConfig.title + "}")
|
|
15
|
+
: translate("${无需选择}");
|
|
11
16
|
const handleSearch = (val) => {
|
|
12
17
|
setFilterOptions(val ? options.filter(item => item.value.includes(val)) : options);
|
|
13
18
|
};
|
|
14
|
-
return React.createElement(Select, { open: open, showSearch: true, id: id, disabled: disabled, value: value, options: options, onSearch: handleSearch, onOpenChange: setOpen, popupMatchSelectWidth: false, popupRender: () => {
|
|
19
|
+
return React.createElement(Select, { allowClear: true, open: open, showSearch: true, id: id, disabled: fieldConfig.disabled, value: value, options: options, onChange: onChange, onSearch: handleSearch, onOpenChange: setOpen, popupMatchSelectWidth: false, placeholder: placeholder, popupRender: () => {
|
|
15
20
|
return React.createElement("div", { style: { padding: 4, maxWidth: 240 } }, filterOptions.length === 0 ? (React.createElement(Empty, { image: Empty.PRESENTED_IMAGE_SIMPLE })) : (React.createElement(Row, { gutter: 12 }, filterOptions.map((opt) => (React.createElement(Col, { style: { textAlign: "center", cursor: "pointer" }, onClick: () => {
|
|
16
21
|
onChange(opt.value);
|
|
17
22
|
setOpen(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-icon-selector.js","sourceRoot":"","sources":["../../../../../src/aldehyde/controls/icon-selector/app-icon-selector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,QAAQ,MAAM,0CAA0C,CAAC;AAEhE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,EAAE,SAAS,EAAE,wCAAwC,EAAE,CAAC,CAAC;AAE/F,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,oBAAC,QAAQ,IAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,UAAU,EAAE,GAAI,EAAE,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"app-icon-selector.js","sourceRoot":"","sources":["../../../../../src/aldehyde/controls/icon-selector/app-icon-selector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pc-icon-selector.d.ts","sourceRoot":"","sources":["../../../../../src/aldehyde/controls/icon-selector/pc-icon-selector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"pc-icon-selector.d.ts","sourceRoot":"","sources":["../../../../../src/aldehyde/controls/icon-selector/pc-icon-selector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAIxC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAOrD,UAAU,KAAM,SAAQ,aAAa;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;CACf;AAED,QAAA,MAAM,KAAK,GAAI,OAAO,KAAK,sBA+C1B,CAAA;AAED,eAAe,KAAK,CAAC"}
|
|
@@ -2,16 +2,21 @@ import React, { useState } from 'react';
|
|
|
2
2
|
import { createFromIconfontCN } from '@ant-design/icons';
|
|
3
3
|
import { Select, Empty, Row, Col } from "antd";
|
|
4
4
|
import iconEnum from "./icon/aldehyde-menu-icon/iconfont.json";
|
|
5
|
+
import { useLocale } from "../../locale/useLocale";
|
|
5
6
|
const IconFont = createFromIconfontCN({ scriptUrl: "./icon/aldehyde-menu-icon/iconfont.js" });
|
|
6
7
|
const options = iconEnum.glyphs.map(item => ({ value: `icon-${item.font_class}`, label: React.createElement(IconFont, { type: `icon-${item.font_class}` }) }));
|
|
7
8
|
const Index = (props) => {
|
|
8
|
-
const { value, onChange,
|
|
9
|
+
const { value, onChange, fieldConfig, id } = props;
|
|
9
10
|
const [filterOptions, setFilterOptions] = useState(options);
|
|
10
11
|
const [open, setOpen] = useState(false);
|
|
12
|
+
const { translate } = useLocale();
|
|
13
|
+
const placeholder = !fieldConfig.disabled
|
|
14
|
+
? translate("${请选择}${" + fieldConfig.title + "}")
|
|
15
|
+
: translate("${无需选择}");
|
|
11
16
|
const handleSearch = (val) => {
|
|
12
17
|
setFilterOptions(val ? options.filter(item => item.value.includes(val)) : options);
|
|
13
18
|
};
|
|
14
|
-
return React.createElement(Select, { open: open, showSearch: true, id: id, disabled: disabled, value: value, options: options, onSearch: handleSearch, onOpenChange: setOpen, popupMatchSelectWidth: false, popupRender: () => {
|
|
19
|
+
return React.createElement(Select, { allowClear: true, open: open, showSearch: true, id: id, disabled: fieldConfig.disabled, value: value, options: options, onChange: onChange, onSearch: handleSearch, onOpenChange: setOpen, popupMatchSelectWidth: false, placeholder: placeholder, popupRender: () => {
|
|
15
20
|
return React.createElement("div", { style: { padding: 4, maxWidth: 240 } }, filterOptions.length === 0 ? (React.createElement(Empty, { image: Empty.PRESENTED_IMAGE_SIMPLE })) : (React.createElement(Row, { gutter: 12 }, filterOptions.map((opt) => (React.createElement(Col, { style: { textAlign: "center", cursor: "pointer" }, onClick: () => {
|
|
16
21
|
onChange(opt.value);
|
|
17
22
|
setOpen(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pc-icon-selector.js","sourceRoot":"","sources":["../../../../../src/aldehyde/controls/icon-selector/pc-icon-selector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,QAAQ,MAAM,yCAAyC,CAAC;AAE/D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,EAAE,SAAS,EAAE,uCAAuC,EAAE,CAAC,CAAC;AAE9F,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,oBAAC,QAAQ,IAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,UAAU,EAAE,GAAI,EAAE,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"pc-icon-selector.js","sourceRoot":"","sources":["../../../../../src/aldehyde/controls/icon-selector/pc-icon-selector.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,37 +2,45 @@ import React, { useState } from 'react';
|
|
|
2
2
|
import { createFromIconfontCN } from '@ant-design/icons';
|
|
3
3
|
import { Select, Empty, Row, Col } from "antd";
|
|
4
4
|
import iconEnum from "./icon/phonenode-menu-icon/iconfont.json";
|
|
5
|
+
import { EControlProps } from "../../tmpl/interface";
|
|
6
|
+
import { useLocale } from "../../locale/useLocale";
|
|
5
7
|
|
|
6
8
|
const IconFont = createFromIconfontCN({ scriptUrl: "./icon/phonenode-menu-icon/iconfont.js" });
|
|
7
9
|
|
|
8
10
|
const options = iconEnum.glyphs.map(item => ({ value: `icon-${item.font_class}`, label: <IconFont type={`icon-${item.font_class}`} /> }))
|
|
9
11
|
|
|
10
|
-
interface Props {
|
|
11
|
-
disabled?: boolean;
|
|
12
|
+
interface Props extends EControlProps {
|
|
12
13
|
value?: string;
|
|
13
14
|
onChange?: (data: string) => void;
|
|
14
15
|
id?: string;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
const Index = (props: Props) => {
|
|
18
|
-
const { value, onChange,
|
|
19
|
+
const { value, onChange, fieldConfig, id } = props;
|
|
19
20
|
const [filterOptions, setFilterOptions] = useState<{ value: string, label: React.ReactNode }[]>(options);
|
|
20
21
|
const [open, setOpen] = useState(false);
|
|
22
|
+
const { translate } = useLocale();
|
|
23
|
+
const placeholder = !fieldConfig.disabled
|
|
24
|
+
? translate("${请选择}${" + fieldConfig.title + "}")
|
|
25
|
+
: translate("${无需选择}");
|
|
21
26
|
|
|
22
27
|
const handleSearch = (val) => {
|
|
23
28
|
setFilterOptions(val ? options.filter(item => item.value.includes(val)) : options);
|
|
24
29
|
}
|
|
25
30
|
|
|
26
31
|
return <Select
|
|
32
|
+
allowClear={true}
|
|
27
33
|
open={open}
|
|
28
34
|
showSearch={true}
|
|
29
35
|
id={id}
|
|
30
|
-
disabled={disabled}
|
|
36
|
+
disabled={fieldConfig.disabled}
|
|
31
37
|
value={value}
|
|
32
38
|
options={options}
|
|
39
|
+
onChange={onChange}
|
|
33
40
|
onSearch={handleSearch}
|
|
34
41
|
onOpenChange={setOpen}
|
|
35
42
|
popupMatchSelectWidth={false}
|
|
43
|
+
placeholder={placeholder}
|
|
36
44
|
popupRender={() => {
|
|
37
45
|
return <div style={{ padding: 4, maxWidth: 240 }}>
|
|
38
46
|
{filterOptions.length === 0 ? (
|
|
@@ -2,37 +2,45 @@ import React, { useState } from 'react';
|
|
|
2
2
|
import { createFromIconfontCN } from '@ant-design/icons';
|
|
3
3
|
import { Select, Empty, Row, Col } from "antd";
|
|
4
4
|
import iconEnum from "./icon/aldehyde-menu-icon/iconfont.json";
|
|
5
|
+
import { EControlProps } from "../../tmpl/interface";
|
|
6
|
+
import { useLocale } from "../../locale/useLocale";
|
|
5
7
|
|
|
6
8
|
const IconFont = createFromIconfontCN({ scriptUrl: "./icon/aldehyde-menu-icon/iconfont.js" });
|
|
7
9
|
|
|
8
10
|
const options = iconEnum.glyphs.map(item => ({ value: `icon-${item.font_class}`, label: <IconFont type={`icon-${item.font_class}`} /> }))
|
|
9
11
|
|
|
10
|
-
interface Props {
|
|
11
|
-
disabled?: boolean;
|
|
12
|
+
interface Props extends EControlProps {
|
|
12
13
|
value?: string;
|
|
13
14
|
onChange?: (data: string) => void;
|
|
14
15
|
id?: string;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
const Index = (props: Props) => {
|
|
18
|
-
const { value, onChange,
|
|
19
|
+
const { value, onChange, fieldConfig, id } = props;
|
|
19
20
|
const [filterOptions, setFilterOptions] = useState<{ value: string, label: React.ReactNode }[]>(options);
|
|
20
21
|
const [open, setOpen] = useState(false);
|
|
22
|
+
const { translate } = useLocale();
|
|
23
|
+
const placeholder = !fieldConfig.disabled
|
|
24
|
+
? translate("${请选择}${" + fieldConfig.title + "}")
|
|
25
|
+
: translate("${无需选择}");
|
|
21
26
|
|
|
22
27
|
const handleSearch = (val) => {
|
|
23
28
|
setFilterOptions(val ? options.filter(item => item.value.includes(val)) : options);
|
|
24
29
|
}
|
|
25
30
|
|
|
26
31
|
return <Select
|
|
32
|
+
allowClear={true}
|
|
27
33
|
open={open}
|
|
28
34
|
showSearch={true}
|
|
29
35
|
id={id}
|
|
30
|
-
disabled={disabled}
|
|
36
|
+
disabled={fieldConfig.disabled}
|
|
31
37
|
value={value}
|
|
32
38
|
options={options}
|
|
39
|
+
onChange={onChange}
|
|
33
40
|
onSearch={handleSearch}
|
|
34
41
|
onOpenChange={setOpen}
|
|
35
42
|
popupMatchSelectWidth={false}
|
|
43
|
+
placeholder={placeholder}
|
|
36
44
|
popupRender={() => {
|
|
37
45
|
return <div style={{ padding: 4, maxWidth: 240 }}>
|
|
38
46
|
{filterOptions.length === 0 ? (
|