refactoring

This commit is contained in:
Maren Süwer
2018-10-02 13:34:04 +02:00
parent 2c3abd5b0b
commit 2f69d82734
11 changed files with 90 additions and 91 deletions

View File

@@ -0,0 +1,54 @@
//@flow
import React from "react";
import {Help} from "./index";
type Props = {
label: string,
helpText?: string
};
class LabelWithHelpIcon extends React.Component<Props> {
renderLabel = () => {
const label = this.props.label;
if (label) {
return <label className="label">{label}</label>;
}
return "";
};
renderHelp = () => {
const helpText = this.props.helpText;
if(helpText){
return (
<div className="control columns is-vcentered">
<Help message={helpText} />
</div>);
}
else
return null;
};
renderLabelWithHelpIcon = () => {
if(this.props.label){
return(
<div className="field is-grouped">
<div className="control">
{this.renderLabel()}
</div>
{this.renderHelp()}
</div>
)
}
else
return null;
};
render() {
return (
this.renderLabelWithHelpIcon()
);
}
}
export default LabelWithHelpIcon;

View File

@@ -1,7 +1,7 @@
//@flow //@flow
import React from "react"; import React from "react";
import classNames from "classnames"; import classNames from "classnames";
import {Help, Page} from "../index"; import {LabelWithHelpIcon} from "../index";
type Props = { type Props = {
label?: string, label?: string,
@@ -35,26 +35,6 @@ class InputField extends React.Component<Props> {
this.props.onChange(event.target.value); this.props.onChange(event.target.value);
}; };
renderLabel = () => {
const label = this.props.label;
if (label) {
return <label className="label">{label}</label>;
}
return "";
};
renderHelp = () => {
const helpText = this.props.helpText;
if(helpText){
return (
<div className="control columns is-vcentered">
<Help message={helpText} />
</div>);
}
else
return null;
};
handleKeyPress = (event: SyntheticKeyboardEvent<HTMLInputElement>) => { handleKeyPress = (event: SyntheticKeyboardEvent<HTMLInputElement>) => {
const onReturnPressed = this.props.onReturnPressed; const onReturnPressed = this.props.onReturnPressed;
if (!onReturnPressed) { if (!onReturnPressed) {
@@ -73,7 +53,9 @@ class InputField extends React.Component<Props> {
value, value,
validationError, validationError,
errorMessage, errorMessage,
disabled disabled,
label,
helpText
} = this.props; } = this.props;
const errorView = validationError ? "is-danger" : ""; const errorView = validationError ? "is-danger" : "";
const helper = validationError ? ( const helper = validationError ? (
@@ -83,12 +65,10 @@ class InputField extends React.Component<Props> {
); );
return ( return (
<div className="field"> <div className="field">
<div className="field is-grouped"> <LabelWithHelpIcon
<div className="control"> label={label}
{this.renderLabel()} helpText={helpText}
</div> />
{this.renderHelp()}
</div>
<div className="control"> <div className="control">
<input <input
ref={input => { ref={input => {

View File

@@ -1,6 +1,6 @@
//@flow //@flow
import React from "react"; import React from "react";
import {Help} from "../index"; import {LabelWithHelpIcon} from "../index";
export type SelectItem = { export type SelectItem = {
value: string, value: string,
@@ -30,33 +30,15 @@ class Select extends React.Component<Props> {
this.props.onChange(event.target.value); this.props.onChange(event.target.value);
}; };
renderLabel = () => {
const label = this.props.label;
if (label) {
return <label className="label">{label}</label>;
}
return "";
};
renderHelp = () => {
const helpText = this.props.helpText;
if(helpText){
return (
<div className="control columns is-vcentered">
<Help message={helpText} />
</div>);
}
else
return null;
};
render() { render() {
const { options, value } = this.props; const { options, value, label, helpText } = this.props;
return ( return (
<div className="field"> <div className="field">
{this.renderLabel()} <LabelWithHelpIcon
<div className="field is-grouped"> label={label}
helpText={helpText}
/>
<div className="control select"> <div className="control select">
<select <select
ref={input => { ref={input => {
@@ -74,8 +56,6 @@ class Select extends React.Component<Props> {
})} })}
</select> </select>
</div> </div>
{this.renderHelp()}
</div>
</div> </div>
); );
} }

View File

@@ -1,6 +1,6 @@
//@flow //@flow
import React from "react"; import React from "react";
import {Help} from "../index"; import {LabelWithHelpIcon} from "../index";
export type SelectItem = { export type SelectItem = {
value: string, value: string,
@@ -22,37 +22,15 @@ class Textarea extends React.Component<Props> {
this.props.onChange(event.target.value); this.props.onChange(event.target.value);
}; };
renderLabel = () => {
const label = this.props.label;
if (label) {
return <label className="label">{label}</label>;
}
return "";
};
renderHelp = () => {
const helpText = this.props.helpText;
if(helpText){
return (
<div className="control columns is-vcentered">
<Help message={helpText} />
</div>);
}
else
return null;
};
render() { render() {
const { placeholder, value } = this.props; const { placeholder, value, label, helpText } = this.props;
return ( return (
<div className="field"> <div className="field">
<div className="field is-grouped"> <LabelWithHelpIcon
<div className="control"> label={label}
{this.renderLabel()} helpText={helpText}
</div> />
{this.renderHelp()}
</div>
<div className="control"> <div className="control">
<textarea <textarea
className="textarea" className="textarea"

View File

@@ -17,6 +17,7 @@ export { default as Notification } from "./Notification.js";
export { default as Paginator } from "./Paginator.js"; export { default as Paginator } from "./Paginator.js";
export { default as ProtectedRoute } from "./ProtectedRoute.js"; export { default as ProtectedRoute } from "./ProtectedRoute.js";
export { default as Help } from "./Help.js"; export { default as Help } from "./Help.js";
export { default as LabelWithHelpIcon } from "./LabelWithHelpIcon.js";
export { apiClient, NOT_FOUND_ERROR, UNAUTHORIZED_ERROR } from "./apiclient.js"; export { apiClient, NOT_FOUND_ERROR, UNAUTHORIZED_ERROR } from "./apiclient.js";

View File

@@ -33,7 +33,6 @@ class AdminSettings extends React.Component<Props> {
buttonLabel={t("admin-settings.add-group-button")} buttonLabel={t("admin-settings.add-group-button")}
fieldLabel={t("admin-settings.add-group-textfield")} fieldLabel={t("admin-settings.add-group-textfield")}
errorMessage={t("admin-settings.add-group-error")} errorMessage={t("admin-settings.add-group-error")}
helpText={t("help.adminGroupsHelpText")}
/> />
<AdminUserTable <AdminUserTable
adminUsers={adminUsers} adminUsers={adminUsers}
@@ -48,7 +47,6 @@ class AdminSettings extends React.Component<Props> {
buttonLabel={t("admin-settings.add-user-button")} buttonLabel={t("admin-settings.add-user-button")}
fieldLabel={t("admin-settings.add-user-textfield")} fieldLabel={t("admin-settings.add-user-textfield")}
errorMessage={t("admin-settings.add-user-error")} errorMessage={t("admin-settings.add-user-error")}
helpText={t("help.adminUsersHelpText")}
/> />
</div> </div>
); );

View File

@@ -24,6 +24,7 @@ class AdminGroupTable extends React.Component<Props, State> {
removeLabel={t("admin-settings.remove-group-button")} removeLabel={t("admin-settings.remove-group-button")}
onRemove={this.removeEntry} onRemove={this.removeEntry}
disabled={disabled} disabled={disabled}
helpText={t("help.adminGroupsHelpText")}
/> />
); );
} }

View File

@@ -22,6 +22,7 @@ class AdminUserTable extends React.Component<Props> {
removeLabel={t("admin-settings.remove-user-button")} removeLabel={t("admin-settings.remove-user-button")}
onRemove={this.removeEntry} onRemove={this.removeEntry}
disabled={disabled} disabled={disabled}
helpText={t("help.adminUsersHelpText")}
/> />
); );
} }

View File

@@ -1,21 +1,22 @@
//@flow //@flow
import React from "react"; import React from "react";
import { RemoveEntryOfTableButton } from "@scm-manager/ui-components"; import { RemoveEntryOfTableButton, LabelWithHelpIcon } from "@scm-manager/ui-components";
type Props = { type Props = {
items: string[], items: string[],
label: string, label: string,
removeLabel: string, removeLabel: string,
onRemove: (string[], string) => void, onRemove: (string[], string) => void,
disabled: boolean disabled: boolean,
helpText: string
}; };
class ArrayConfigTable extends React.Component<Props> { class ArrayConfigTable extends React.Component<Props> {
render() { render() {
const { label, disabled, removeLabel, items } = this.props; const { label, disabled, removeLabel, items, helpText } = this.props;
return ( return (
<div> <div>
<label className="label">{label}</label> <LabelWithHelpIcon label={label} helpText={helpText}/>
<table className="table is-hoverable is-fullwidth"> <table className="table is-hoverable is-fullwidth">
<tbody> <tbody>
{items.map(item => { {items.map(item => {

View File

@@ -106,7 +106,6 @@ class GroupForm extends React.Component<Props, State> {
buttonLabel={t("add-member-button.label")} buttonLabel={t("add-member-button.label")}
fieldLabel={t("add-member-textfield.label")} fieldLabel={t("add-member-textfield.label")}
errorMessage={t("add-member-textfield.error")} errorMessage={t("add-member-textfield.error")}
helpText={t("group-form.help.membersHelpText")}
/> />
<SubmitButton <SubmitButton
disabled={!this.isValid()} disabled={!this.isValid()}

View File

@@ -1,7 +1,10 @@
//@flow //@flow
import React from "react"; import React from "react";
import { translate } from "react-i18next"; import { translate } from "react-i18next";
import { RemoveEntryOfTableButton } from "@scm-manager/ui-components"; import {
RemoveEntryOfTableButton,
LabelWithHelpIcon
} from "@scm-manager/ui-components";
type Props = { type Props = {
members: string[], members: string[],
@@ -16,7 +19,10 @@ class MemberNameTable extends React.Component<Props, State> {
const { t } = this.props; const { t } = this.props;
return ( return (
<div> <div>
<label className="label">{t("group.members")}</label> <LabelWithHelpIcon
label={t("group.members")}
helpText={t("group-form.help.membersHelpText")}
/>
<table className="table is-hoverable is-fullwidth"> <table className="table is-hoverable is-fullwidth">
<tbody> <tbody>
{this.props.members.map(member => { {this.props.members.map(member => {