@ant-design/icons#PictureOutlined TypeScript Examples
The following examples show how to use
@ant-design/icons#PictureOutlined.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: upload-img.editor.spec.tsx From next-basics with GNU General Public License v3.0 | 6 votes |
describe("UploadImgEditor", () => {
it("should work", () => {
mockUseBuilderNode.mockReturnValueOnce({
type: "brick",
id: "B-001",
brick: "upload-img",
alias: "my-brick",
$$parsedProperties: {
label: "上传图片",
},
});
const wrapper = shallow(<UploadImgEditor nodeUid={1} />);
expect(wrapper.find(".formLabel").text()).toBe("上传图片");
expect(wrapper.find(PictureOutlined).length).toEqual(1);
});
});
Example #2
Source File: upload-img.editor.tsx From next-basics with GNU General Public License v3.0 | 6 votes |
export function UploadImgEditor({
nodeUid,
}: EditorComponentProps): React.ReactElement {
const node = useBuilderNode<UploadImgProperties>({ nodeUid });
const { label, required } = node.$$parsedProperties;
return (
<EditorContainer nodeUid={nodeUid}>
<div className={formSharedStyle.formItemWrapper}>
<div
className={classNames(formSharedStyle.labelContainer, {
[formSharedStyle.requireMark]: required,
})}
>
<span
className={classNames({ [formSharedStyle.formLabel]: !!label })}
>
{label}
</span>
</div>
<div className={styles.formImageItem}>
<span className={styles.icon}>
<PictureOutlined />
</span>
</div>
</div>
</EditorContainer>
);
}
Example #3
Source File: index.tsx From web-pdm with Apache License 2.0 | 6 votes |
IconRenders = {
undo: <RollbackOutlined />,
redo: <RollbackOutlined style={{ transform: 'scaleX(-1)' }} />,
min: <ZoomOutOutlined />,
max: <ZoomInOutlined />,
full: <BorderOutlined />,
miniMap: <PictureFilled />,
miniMapNo: <PictureOutlined />,
dagreLayout: <PartitionOutlined />,
relationLayout: <UngroupOutlined />,
reload: <ReloadOutlined />,
image: <DownloadOutlined />,
darkness: <SnippetsFilled />,
light: <SnippetsOutlined />,
colorClose: <BgColorsOutlined />,
colorOpen: <BgColorsOutlined />
}
Example #4
Source File: out.tsx From web-pdm with Apache License 2.0 | 6 votes |
IconRenders = {
undo: <RollbackOutlined />,
redo: <RollbackOutlined style={{ transform: 'scaleX(-1)' }} />,
min: <ZoomOutOutlined />,
max: <ZoomInOutlined />,
full: <BorderOutlined />,
miniMap: <PictureFilled />,
miniMapNo: <PictureOutlined />,
dagreLayout: <PartitionOutlined />,
relationLayout: <UngroupOutlined />,
reload: <ReloadOutlined />,
image: <DownloadOutlined />,
darkness: <SnippetsFilled />,
light: <SnippetsOutlined />,
colorClose: <BgColorsOutlined />,
colorOpen: <BgColorsOutlined />
}
Example #5
Source File: QuadrangularSelect.tsx From yugong with MIT License | 5 votes |
QuadrangularSelect: React.FC<Props> = ({ label, defaultData, onChange }) => {
const [, setselected] = useState<(UnitType | undefined)[]>([]);
const [index, setIndex] = useState<number>()
const moduleId = useSelector(
(state: RootState) => state.activationItem.moduleId
);
// 选中
const checkSelect = useCallback(
(selected) => {
for (let index = 0; index < simpPosition.length; index++) {
const element = simpPosition[index];
if (selected.join('') === element.value.join('')) {
setIndex(index);
break;
}
setIndex(undefined)
}
},
[],
)
const onClickPict = useCallback((index: number) => {
// setselected(simpPosition[index].value);
checkSelect(simpPosition[index].value);
if (onChange instanceof Function) {
onChange(simpPosition[index].value)
}
}, [checkSelect, onChange]);
// 初始化
useEffect(() => {
setselected(defaultData);
checkSelect(defaultData);
}, [moduleId, defaultData, checkSelect])
return (
<Row className={s.row} gutter={4}>
<Col className={s.label} span={7}>
{label || ""}
</Col>
<Col span={14}>
<div className={s.quad}>{
simpPosition.map((item, i) => <PictureOutlined className={classNames({
[s.selected]: i === index
})} onClick={() => onClickPict(i)} key={item.name} />)
}</div>
</Col>
</Row>
);
}
Example #6
Source File: AppsPage.tsx From disco-cube-admin with MIT License | 5 votes |
apps: Record<
AppNames,
{
path: string;
render: () => React.ReactNode;
label: string;
icon: React.ForwardRefExoticComponent<AntdIconProps & React.RefAttributes<HTMLSpanElement>>;
}
> = {
rpiDemos: {
path: `/rpi-demos`,
label: "RPI Demos",
icon: BuildOutlined,
render: () => <ConnectedRpiDemos />,
},
video: {
path: `/video`,
label: "Video",
icon: VideoCameraOutlined,
render: () => <ConnectedVideoApp />,
},
cubemap: {
path: `/cubemap`,
label: "Cubemap",
icon: PictureOutlined,
render: () => <ConnectedCubemapApp />,
},
paint: {
path: `/paint`,
label: "Paint",
icon: HighlightOutlined,
render: () => <ConnectedPaintApp />,
},
debug: {
path: `/debug`,
label: "Debug",
icon: BugOutlined,
render: () => <ConnectedCommonApp appName={`debug`} />,
},
sparkle: {
path: `/sparkle`,
label: "Sparkle",
icon: StarOutlined,
render: () => <ConnectedCommonApp appName={`sparkle`} />,
},
sprinkles: {
path: `/sprinkles`,
label: "Sprinkles",
icon: SmallDashOutlined,
render: () => <ConnectedCommonApp appName={`sprinkles`} />,
},
particles: {
path: `/particles`,
label: "Particles",
icon: MoreOutlined,
render: () => <ConnectedCommonApp appName={`particles`} />,
},
particleFlow: {
path: `/particleFlow`,
label: "Particle Flow",
icon: DeploymentUnitOutlined,
render: () => <ConnectedCommonApp appName={`particleFlow`} />,
},
tilt: {
path: `/tilt`,
label: "Tilt",
icon: RotateRightOutlined,
render: () => <ConnectedCommonApp appName={`tilt`} />,
},
maze: {
path: `/maze`,
label: "Maze",
icon: TableOutlined,
render: () => <ConnectedCommonApp appName={`maze`} />,
},
}
Example #7
Source File: index.tsx From react_admin with MIT License | 4 votes |
Login: React.FC<Iprops> = (props) => {
const username = useInput("");
const password = useInput("");
const code = useInput("");
const inputRef = useRef<any>(null);
const [loading, setLoading] = useState(false);
/**
* 判断是否登录过 && 获取焦点
*/
useEffect(() => {
const userinfo = localStorage.getItem("userinfo")
? JSON.parse(localStorage.getItem("userinfo") as string)
: null;
if (userinfo) {
props.history.replace("/home");
} else {
inputRef.current.focus();
}
}, []);
/**
* @function
* 登录校验 发出请求
*/
const handleSubmit = async () => {
const _loginName = username.val.trim();
const _password = password.val.trim();
const _code = code.val.trim();
try {
if (!_loginName) throw new Error("用户名不能为空");
if (!_password) throw new Error("密码不能为空");
if (!_code) throw new Error("验证码不能为空");
if (_code !== captcha) throw new Error("验证码错误");
setLoading(true);
const data = (await getUserLoginData({
data: { _loginName, _password },
url: API.getLogin,
})) as Ilogin;
setLoading(false);
// 登录成功
if (_loginName === data.username && _password === data.password) {
localStorage.setItem(
"userinfo",
JSON.stringify({ _loginName, _password })
);
await props.setUserInfoMy({ _loginName, _password });
props.history.replace("/home");
} else {
throw new Error("用户名密码错误");
}
} catch (err) {
message.error(err.message);
return;
}
};
const reloadCaptcha = useCallback((e) => {
captcha = getRandom();
let url = API.getCaptcha + captcha;
e.target.src = url;
}, []);
return (
<section className="login-page">
<a
rel="noopener noreferrer"
className="login-right"
href="https://github.com/2662419405"
target="_blank"
>
<img
src="https://github.blog/wp-content/uploads/2008/12/forkme_right_darkblue_121621.png?resize=149%2C149"
alt="github"
/>
</a>
<div className="wrap">
<div>
<div className="logo-wrap">
<img
alt="logo"
className="logo"
src={require("../../assets/img/sh.png")}
/>
<em>TS + Hooks</em>
</div>
<Input.Group>
<Input
ref={inputRef}
{...username}
onPressEnter={handleSubmit}
prefix={<UserOutlined />}
maxLength={32}
autoComplete="off"
placeholder="username/admin"
/>
<Input
{...password}
prefix={<LockOutlined />}
onPressEnter={handleSubmit}
type="password"
maxLength={32}
autoComplete="off"
placeholder="password/123456"
/>
<Input
{...code}
onKeyDown={(e) => {
if (e.keyCode === 13) handleSubmit();
}}
prefix={<PictureOutlined />}
onPressEnter={handleSubmit}
maxLength={4}
autoComplete="off"
placeholder="请输入验证码"
suffix={
<img
className="captcha"
src={API.getCaptcha + captcha}
onClick={reloadCaptcha}
alt="code"
/>
}
/>
</Input.Group>
<Button
size="large"
className="weitiao-btn"
block={true}
type="primary"
onClick={handleSubmit}
loading={loading}
>
{loading ? "正在登录" : "登录"}
</Button>
<div className="other-login">
<span className="txt">其他登录方式</span>
<GithubOutlined className="github-icon" />
<div className="href-right">
<Tooltip
placement="bottom"
title="账号为admin,密码为123456,推荐使用第三方github进行登录"
>
<span className="text-right">注册账号</span>
</Tooltip>
</div>
</div>
</div>
</div>
<Footer />
</section>
);
}
Example #8
Source File: Icon.tsx From html2sketch with MIT License | 4 votes |
IconSymbol: FC = () => {
return (
<Row>
{/*<CaretUpOutlined*/}
{/* className="icon"*/}
{/* symbolName={'1.General/2.Icons/1.CaretUpOutlined'}*/}
{/*/>*/}
{/* className="icon"*/}
{/* symbolName={'1.General/2.Icons/2.MailOutlined'}*/}
{/*/>*/}
{/*<StepBackwardOutlined*/}
{/* className="icon"*/}
{/* symbolName={'1.General/2.Icons/2.StepBackwardOutlined'}*/}
{/*/>*/}
{/*<StepForwardOutlined*/}
{/* className="icon"*/}
{/* symbolName={'1.General/2.Icons/2.StepBackwardOutlined'}*/}
{/*/>*/}
<StepForwardOutlined />
<ShrinkOutlined />
<ArrowsAltOutlined />
<DownOutlined />
<UpOutlined />
<LeftOutlined />
<RightOutlined />
<CaretUpOutlined />
<CaretDownOutlined />
<CaretLeftOutlined />
<CaretRightOutlined />
<VerticalAlignTopOutlined />
<RollbackOutlined />
<FastBackwardOutlined />
<FastForwardOutlined />
<DoubleRightOutlined />
<DoubleLeftOutlined />
<VerticalLeftOutlined />
<VerticalRightOutlined />
<VerticalAlignMiddleOutlined />
<VerticalAlignBottomOutlined />
<ForwardOutlined />
<BackwardOutlined />
<EnterOutlined />
<RetweetOutlined />
<SwapOutlined />
<SwapLeftOutlined />
<SwapRightOutlined />
<ArrowUpOutlined />
<ArrowDownOutlined />
<ArrowLeftOutlined />
<ArrowRightOutlined />
<LoginOutlined />
<LogoutOutlined />
<MenuFoldOutlined />
<MenuUnfoldOutlined />
<BorderBottomOutlined />
<BorderHorizontalOutlined />
<BorderInnerOutlined />
<BorderOuterOutlined />
<BorderLeftOutlined />
<BorderRightOutlined />
<BorderTopOutlined />
<BorderVerticleOutlined />
<PicCenterOutlined />
<PicLeftOutlined />
<PicRightOutlined />
<RadiusBottomleftOutlined />
<RadiusBottomrightOutlined />
<RadiusUpleftOutlined />
<RadiusUprightOutlined />
<FullscreenOutlined />
<FullscreenExitOutlined />
<QuestionOutlined />
<PauseOutlined />
<MinusOutlined />
<PauseCircleOutlined />
<InfoOutlined />
<CloseOutlined />
<ExclamationOutlined />
<CheckOutlined />
<WarningOutlined />
<IssuesCloseOutlined />
<StopOutlined />
<EditOutlined />
<CopyOutlined />
<ScissorOutlined />
<DeleteOutlined />
<SnippetsOutlined />
<DiffOutlined />
<HighlightOutlined />
<AlignCenterOutlined />
<AlignLeftOutlined />
<AlignRightOutlined />
<BgColorsOutlined />
<BoldOutlined />
<ItalicOutlined />
<UnderlineOutlined />
<StrikethroughOutlined />
<RedoOutlined />
<UndoOutlined />
<ZoomInOutlined />
<ZoomOutOutlined />
<FontColorsOutlined />
<FontSizeOutlined />
<LineHeightOutlined />
<SortAscendingOutlined />
<SortDescendingOutlined />
<DragOutlined />
<OrderedListOutlined />
<UnorderedListOutlined />
<RadiusSettingOutlined />
<ColumnWidthOutlined />
<ColumnHeightOutlined />
<AreaChartOutlined />
<PieChartOutlined />
<BarChartOutlined />
<DotChartOutlined />
<LineChartOutlined />
<RadarChartOutlined />
<HeatMapOutlined />
<FallOutlined />
<RiseOutlined />
<StockOutlined />
<BoxPlotOutlined />
<FundOutlined />
<SlidersOutlined />
<AndroidOutlined />
<AppleOutlined />
<WindowsOutlined />
<IeOutlined />
<ChromeOutlined />
<GithubOutlined />
<AliwangwangOutlined />
<DingdingOutlined />
<WeiboSquareOutlined />
<WeiboCircleOutlined />
<TaobaoCircleOutlined />
<Html5Outlined />
<WeiboOutlined />
<TwitterOutlined />
<WechatOutlined />
<AlipayCircleOutlined />
<TaobaoOutlined />
<SkypeOutlined />
<FacebookOutlined />
<CodepenOutlined />
<CodeSandboxOutlined />
<AmazonOutlined />
<GoogleOutlined />
<AlipayOutlined />
<AntDesignOutlined />
<AntCloudOutlined />
<ZhihuOutlined />
<SlackOutlined />
<SlackSquareOutlined />
<BehanceSquareOutlined />
<DribbbleOutlined />
<DribbbleSquareOutlined />
<InstagramOutlined />
<YuqueOutlined />
<AlibabaOutlined />
<YahooOutlined />
<RedditOutlined />
<SketchOutlined />
<AccountBookOutlined />
<AlertOutlined />
<ApartmentOutlined />
<ApiOutlined />
<QqOutlined />
<MediumWorkmarkOutlined />
<GitlabOutlined />
<MediumOutlined />
<GooglePlusOutlined />
<AppstoreAddOutlined />
<AppstoreOutlined />
<AudioOutlined />
<AudioMutedOutlined />
<AuditOutlined />
<BankOutlined />
<BarcodeOutlined />
<BarsOutlined />
<BellOutlined />
<BlockOutlined />
<BookOutlined />
<BorderOutlined />
<BranchesOutlined />
<BuildOutlined />
<BulbOutlined />
<CalculatorOutlined />
<CalendarOutlined />
<CameraOutlined />
<CarOutlined />
<CarryOutOutlined />
<CiCircleOutlined />
<CiOutlined />
<CloudOutlined />
<ClearOutlined />
<ClusterOutlined />
<CodeOutlined />
<CoffeeOutlined />
<CompassOutlined />
<CompressOutlined />
<ContactsOutlined />
<ContainerOutlined />
<ControlOutlined />
<CopyrightCircleOutlined />
<CopyrightOutlined />
<CreditCardOutlined />
<CrownOutlined />
<CustomerServiceOutlined />
<DashboardOutlined />
<DatabaseOutlined />
<DeleteColumnOutlined />
<DeleteRowOutlined />
<DisconnectOutlined />
<DislikeOutlined />
<DollarCircleOutlined />
<DollarOutlined />
<DownloadOutlined />
<EllipsisOutlined />
<EnvironmentOutlined />
<EuroCircleOutlined />
<EuroOutlined />
<ExceptionOutlined />
<ExpandAltOutlined />
<ExpandOutlined />
<ExperimentOutlined />
<ExportOutlined />
<EyeOutlined />
<FieldBinaryOutlined />
<FieldNumberOutlined />
<FieldStringOutlined />
<DesktopOutlined />
<DingtalkOutlined />
<FileAddOutlined />
<FileDoneOutlined />
<FileExcelOutlined />
<FileExclamationOutlined />
<FileOutlined />
<FileImageOutlined />
<FileJpgOutlined />
<FileMarkdownOutlined />
<FilePdfOutlined />
<FilePptOutlined />
<FileProtectOutlined />
<FileSearchOutlined />
<FileSyncOutlined />
<FileTextOutlined />
<FileUnknownOutlined />
<FileWordOutlined />
<FilterOutlined />
<FireOutlined />
<FlagOutlined />
<FolderAddOutlined />
<FolderOutlined />
<FolderOpenOutlined />
<ForkOutlined />
<FormatPainterOutlined />
<FrownOutlined />
<FunctionOutlined />
<FunnelPlotOutlined />
<GatewayOutlined />
<GifOutlined />
<GiftOutlined />
<GlobalOutlined />
<GoldOutlined />
<GroupOutlined />
<HddOutlined />
<HeartOutlined />
<HistoryOutlined />
<HomeOutlined />
<HourglassOutlined />
<IdcardOutlined />
<ImportOutlined />
<InboxOutlined />
<InsertRowAboveOutlined />
<InsertRowBelowOutlined />
<InsertRowLeftOutlined />
<InsertRowRightOutlined />
<InsuranceOutlined />
<InteractionOutlined />
<KeyOutlined />
<LaptopOutlined />
<LayoutOutlined />
<LikeOutlined />
<LineOutlined />
<LinkOutlined />
<Loading3QuartersOutlined />
<LoadingOutlined />
<LockOutlined />
<MailOutlined />
<ManOutlined />
<MedicineBoxOutlined />
<MehOutlined />
<MenuOutlined />
<MergeCellsOutlined />
<MessageOutlined />
<MobileOutlined />
<MoneyCollectOutlined />
<MonitorOutlined />
<MoreOutlined />
<NodeCollapseOutlined />
<NodeExpandOutlined />
<NodeIndexOutlined />
<NotificationOutlined />
<NumberOutlined />
<PaperClipOutlined />
<PartitionOutlined />
<PayCircleOutlined />
<PercentageOutlined />
<PhoneOutlined />
<PictureOutlined />
<PoundCircleOutlined />
<PoundOutlined />
<PoweroffOutlined />
<PrinterOutlined />
<ProfileOutlined />
<ProjectOutlined />
<PropertySafetyOutlined />
<PullRequestOutlined />
<PushpinOutlined />
<QrcodeOutlined />
<ReadOutlined />
<ReconciliationOutlined />
<RedEnvelopeOutlined />
<ReloadOutlined />
<RestOutlined />
<RobotOutlined />
<RocketOutlined />
<SafetyCertificateOutlined />
<SafetyOutlined />
<ScanOutlined />
<ScheduleOutlined />
<SearchOutlined />
<SecurityScanOutlined />
<SelectOutlined />
<SendOutlined />
<SettingOutlined />
<ShakeOutlined />
<ShareAltOutlined />
<ShopOutlined />
<ShoppingCartOutlined />
<ShoppingOutlined />
<SisternodeOutlined />
<SkinOutlined />
<SmileOutlined />
<SolutionOutlined />
<SoundOutlined />
<SplitCellsOutlined />
<StarOutlined />
<SubnodeOutlined />
<SyncOutlined />
<TableOutlined />
<TabletOutlined />
<TagOutlined />
<TagsOutlined />
<TeamOutlined />
<ThunderboltOutlined />
<ToTopOutlined />
<ToolOutlined />
<TrademarkCircleOutlined />
<TrademarkOutlined />
<TransactionOutlined />
<TrophyOutlined />
<UngroupOutlined />
<UnlockOutlined />
<UploadOutlined />
<UsbOutlined />
<UserAddOutlined />
<UserDeleteOutlined />
<UserOutlined />
<UserSwitchOutlined />
<UsergroupAddOutlined />
<UsergroupDeleteOutlined />
<VideoCameraOutlined />
<WalletOutlined />
<WifiOutlined />
<BorderlessTableOutlined />
<WomanOutlined />
<BehanceOutlined />
<DropboxOutlined />
<DeploymentUnitOutlined />
<UpCircleOutlined />
<DownCircleOutlined />
<LeftCircleOutlined />
<RightCircleOutlined />
<UpSquareOutlined />
<DownSquareOutlined />
<LeftSquareOutlined />
<RightSquareOutlined />
<PlayCircleOutlined />
<QuestionCircleOutlined />
<PlusCircleOutlined />
<PlusSquareOutlined />
<MinusSquareOutlined />
<MinusCircleOutlined />
<InfoCircleOutlined />
<ExclamationCircleOutlined />
<CloseCircleOutlined />
<CloseSquareOutlined />
<CheckCircleOutlined />
<CheckSquareOutlined />
<ClockCircleOutlined />
<FormOutlined />
<DashOutlined />
<SmallDashOutlined />
<YoutubeOutlined />
<CodepenCircleOutlined />
<AliyunOutlined />
<PlusOutlined />
<LinkedinOutlined />
<AimOutlined />
<BugOutlined />
<CloudDownloadOutlined />
<CloudServerOutlined />
<CloudSyncOutlined />
<CloudUploadOutlined />
<CommentOutlined />
<ConsoleSqlOutlined />
<EyeInvisibleOutlined />
<FileGifOutlined />
<DeliveredProcedureOutlined />
<FieldTimeOutlined />
<FileZipOutlined />
<FolderViewOutlined />
<FundProjectionScreenOutlined />
<FundViewOutlined />
<MacCommandOutlined />
<PlaySquareOutlined />
<OneToOneOutlined />
<RotateLeftOutlined />
<RotateRightOutlined />
<SaveOutlined />
<SwitcherOutlined />
<TranslationOutlined />
<VerifiedOutlined />
<VideoCameraAddOutlined />
<WhatsAppOutlined />
{/*</Col>*/}
</Row>
);
}
Example #9
Source File: Upload.tsx From yugong with MIT License | 4 votes |
Upload: React.FC<UploadProps> = ({ label, defaultImg, onChange }) => {
const [img, setimg] = useState<string>();
const [isloading, setIsloading] = useState(false);
const [viewImg, setViewImg] = useState(false);
const [wh, setWh] = useState(' ');
const moduleId = useSelector(
(state: RootState) => state.activationItem.moduleId,
);
const [csrfToken] = useCookie('csrfToken')
const ref = useRef(null);
// 创建临时图片文件
const createTempImg = useCallback((url: string) => {
const wrap = ref.current as any;
if (wrap) {
(ref.current as any).innerHTML = '';
const image = new Image();
image.src = url;
image.onload = () => {};
(ref.current as any).appendChild(image);
}
}, []);
// 获取文件宽高属性
const getTempImgWH = useCallback(() => {
const image = (ref.current as any)?.querySelector('img');
if (image) {
const str = `宽:${image.offsetWidth}px 高:${image.offsetHeight}px`;
setWh(str);
}
}, []);
// 删除临时文件
useEffect(() => {
setimg(defaultImg);
if (defaultImg) {
createTempImg(defaultImg);
}
}, [createTempImg, defaultImg, moduleId]);
const onChangeUpload = useCallback(
(info: UploadChangeParam) => {
if (info.file.status === 'uploading') {
setIsloading(true);
}
if (info.file.status === 'error') {
setIsloading(false);
}
if (info.file.response) {
setTimeout(() => {
setIsloading(false);
setimg(info.file.response.fileUrl);
createTempImg(info.file.response.fileUrl);
}, 1000);
if (onChange instanceof Function) {
onChange(info.file.response.fileUrl);
}
}
},
[createTempImg, onChange],
);
const hideView = useCallback(() => {
setViewImg(false);
}, []);
const showView = useCallback(() => {
getTempImgWH();
setViewImg(true);
}, [getTempImgWH]);
const deleteImage = useCallback(() => {
setimg('');
if (onChange instanceof Function) {
onChange('');
}
}, [onChange]);
const inputOnChange = useCallback(
(e) => {
const url = e.target.value;
if (onChange instanceof Function && isUrl(url)) {
onChange(url);
setimg(url);
createTempImg(url);
}
},
[createTempImg, onChange],
);
return (
<>
<Row className={s.row} gutter={4}>
<Col className={s.label} span={7}>
{label || ''}
</Col>
<Col span={14}>
<div className={s.button}>
{process.env.REACT_APP_DEMO === 'true' ? (
<Tooltip
overlayInnerStyle={{width: 400}}
title={
<Input style={{width: '100%'}} value={img} onChange={inputOnChange} placeholder="输入图片url" />
}
>
<span
className={classNames(s.uploadicon, s.empty, s.flid)}
style={{
backgroundImage: `url(${!isloading && img ? img : ''})`,
}}
>
{isloading ? antIcon : null}
{!img ? <PictureOutlined /> : null}
</span>
</Tooltip>
) : (
<UploadPic
accept=".jpg,.jpeg,.png"
action={'/api/upload'}
onChange={onChangeUpload}
showUploadList={false}
disabled={isloading}
headers={{
'x-csrf-token': csrfToken || ''
}}
>
<span
className={classNames(s.uploadicon, s.empty, s.flid)}
style={{
backgroundImage: `url(${!isloading && img ? img : ''})`,
}}
>
{isloading ? antIcon : null}
{!img ? <PictureOutlined /> : null}
</span>
</UploadPic>
)}
</div>
{!isloading && img ? (
<>
<Tooltip
placement="top"
trigger="hover"
mouseEnterDelay={2}
title="预览"
>
<Button
className={s.view}
type="link"
size={'small'}
onClick={showView}
icon={<EyeOutlined />}
/>
</Tooltip>
<Tooltip
placement="top"
trigger="hover"
mouseEnterDelay={2}
title="删除"
>
<Button
type="link"
danger
size={'small'}
onClick={deleteImage}
icon={<DeleteOutlined />}
/>
</Tooltip>
</>
) : null}
</Col>
</Row>
<Modal visible={viewImg} onCancel={hideView} title={wh} footer={null}>
<div className={s.ref}>
{img ? <img ref={ref} src={img} alt={''} /> : null}
</div>
</Modal>
{!isloading && img ? <div className={s.imgtemp} ref={ref} /> : null}
</>
);
}