Polish Admin UI
- Mostly using new form styles instead of the previous one-off stylespull/1544/head
parent
4cd0a02492
commit
3c90d8d2a3
|
@ -96,7 +96,7 @@ const AdminTabs = ({
|
||||||
<TabList customClass="col-md-2 admin-tabs">
|
<TabList customClass="col-md-2 admin-tabs">
|
||||||
{tabs.map((t, i) => <Tab key={tabs[i].type}>{tabs[i].type}</Tab>)}
|
{tabs.map((t, i) => <Tab key={tabs[i].type}>{tabs[i].type}</Tab>)}
|
||||||
</TabList>
|
</TabList>
|
||||||
<TabPanels customClass="col-md-10">
|
<TabPanels customClass="col-md-10 admin-tabs--content">
|
||||||
{tabs.map((t, i) => (
|
{tabs.map((t, i) => (
|
||||||
<TabPanel key={tabs[i].type}>{t.component}</TabPanel>
|
<TabPanel key={tabs[i].type}>{t.component}</TabPanel>
|
||||||
))}
|
))}
|
||||||
|
|
|
@ -48,13 +48,13 @@ class ChangePassRow extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const {user} = this.props
|
const {user, buttonSize} = this.props
|
||||||
|
|
||||||
if (this.state.showForm) {
|
if (this.state.showForm) {
|
||||||
return (
|
return (
|
||||||
<div className="admin-change-pw">
|
<div className="admin-change-pw">
|
||||||
<input
|
<input
|
||||||
className="form-control"
|
className="form-control input-xs"
|
||||||
name="password"
|
name="password"
|
||||||
type="password"
|
type="password"
|
||||||
value={user.password || ''}
|
value={user.password || ''}
|
||||||
|
@ -67,6 +67,7 @@ class ChangePassRow extends Component {
|
||||||
onConfirm={this.handleSubmit}
|
onConfirm={this.handleSubmit}
|
||||||
item={user}
|
item={user}
|
||||||
onCancel={this.handleCancel}
|
onCancel={this.handleCancel}
|
||||||
|
buttonSize={buttonSize}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
@ -83,12 +84,13 @@ class ChangePassRow extends Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const {shape, func} = PropTypes
|
const {func, shape, string} = PropTypes
|
||||||
|
|
||||||
ChangePassRow.propTypes = {
|
ChangePassRow.propTypes = {
|
||||||
user: shape().isRequired,
|
user: shape().isRequired,
|
||||||
onApply: func.isRequired,
|
onApply: func.isRequired,
|
||||||
onEdit: func.isRequired,
|
onEdit: func.isRequired,
|
||||||
|
buttonSize: string,
|
||||||
}
|
}
|
||||||
|
|
||||||
export default OnClickOutside(ChangePassRow)
|
export default OnClickOutside(ChangePassRow)
|
||||||
|
|
|
@ -25,7 +25,7 @@ const DatabaseManager = ({
|
||||||
onDeleteRetentionPolicy,
|
onDeleteRetentionPolicy,
|
||||||
}) => {
|
}) => {
|
||||||
return (
|
return (
|
||||||
<div className="panel panel-info">
|
<div className="panel panel-default">
|
||||||
<div className="panel-heading u-flex u-ai-center u-jc-space-between">
|
<div className="panel-heading u-flex u-ai-center u-jc-space-between">
|
||||||
<h2 className="panel-title">
|
<h2 className="panel-title">
|
||||||
{databases.length === 1
|
{databases.length === 1
|
||||||
|
|
|
@ -48,13 +48,15 @@ class DatabaseRow extends Component {
|
||||||
{isNew
|
{isNew
|
||||||
? <div className="admin-table--edit-cell">
|
? <div className="admin-table--edit-cell">
|
||||||
<input
|
<input
|
||||||
className="form-control"
|
className="form-control input-sm"
|
||||||
type="text"
|
type="text"
|
||||||
defaultValue={name}
|
defaultValue={name}
|
||||||
placeholder="Name this RP"
|
placeholder="Name this RP"
|
||||||
onKeyDown={e => this.handleKeyDown(e, database)}
|
onKeyDown={e => this.handleKeyDown(e, database)}
|
||||||
ref={r => (this.name = r)}
|
ref={r => (this.name = r)}
|
||||||
autoFocus={true}
|
autoFocus={true}
|
||||||
|
spellCheck={false}
|
||||||
|
autoComplete={false}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
: <div className="admin-table--edit-cell">
|
: <div className="admin-table--edit-cell">
|
||||||
|
@ -64,7 +66,7 @@ class DatabaseRow extends Component {
|
||||||
<td>
|
<td>
|
||||||
<div className="admin-table--edit-cell">
|
<div className="admin-table--edit-cell">
|
||||||
<input
|
<input
|
||||||
className="form-control"
|
className="form-control input-sm"
|
||||||
name="name"
|
name="name"
|
||||||
type="text"
|
type="text"
|
||||||
defaultValue={formattedDuration}
|
defaultValue={formattedDuration}
|
||||||
|
@ -72,13 +74,15 @@ class DatabaseRow extends Component {
|
||||||
onKeyDown={e => this.handleKeyDown(e, database)}
|
onKeyDown={e => this.handleKeyDown(e, database)}
|
||||||
ref={r => (this.duration = r)}
|
ref={r => (this.duration = r)}
|
||||||
autoFocus={!isNew}
|
autoFocus={!isNew}
|
||||||
|
spellCheck={false}
|
||||||
|
autoComplete={false}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td style={isRFDisplayed ? {} : {display: 'none'}}>
|
<td style={isRFDisplayed ? {} : {display: 'none'}}>
|
||||||
<div className="admin-table--edit-cell">
|
<div className="admin-table--edit-cell">
|
||||||
<input
|
<input
|
||||||
className="form-control"
|
className="form-control input-sm"
|
||||||
name="name"
|
name="name"
|
||||||
type="number"
|
type="number"
|
||||||
min="1"
|
min="1"
|
||||||
|
@ -86,6 +90,8 @@ class DatabaseRow extends Component {
|
||||||
placeholder="# of Nodes"
|
placeholder="# of Nodes"
|
||||||
onKeyDown={e => this.handleKeyDown(e, database)}
|
onKeyDown={e => this.handleKeyDown(e, database)}
|
||||||
ref={r => (this.replication = r)}
|
ref={r => (this.replication = r)}
|
||||||
|
spellCheck={false}
|
||||||
|
autoComplete={false}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -121,6 +127,7 @@ class DatabaseRow extends Component {
|
||||||
? <YesNoButtons
|
? <YesNoButtons
|
||||||
onConfirm={() => onDelete(database, retentionPolicy)}
|
onConfirm={() => onDelete(database, retentionPolicy)}
|
||||||
onCancel={this.handleEndDelete}
|
onCancel={this.handleEndDelete}
|
||||||
|
buttonSize="btn-xs"
|
||||||
/>
|
/>
|
||||||
: <button
|
: <button
|
||||||
className="btn btn-xs btn-danger admin-table--hidden"
|
className="btn btn-xs btn-danger admin-table--hidden"
|
||||||
|
|
|
@ -90,7 +90,7 @@ const Header = ({
|
||||||
<div style={confirmStyle}>
|
<div style={confirmStyle}>
|
||||||
<div className="admin-table--delete-cell">
|
<div className="admin-table--delete-cell">
|
||||||
<input
|
<input
|
||||||
className="form-control"
|
className="form-control input-xs"
|
||||||
name="name"
|
name="name"
|
||||||
type="text"
|
type="text"
|
||||||
value={database.deleteCode || ''}
|
value={database.deleteCode || ''}
|
||||||
|
@ -98,12 +98,15 @@ const Header = ({
|
||||||
onChange={e => onDatabaseDeleteConfirm(database, e)}
|
onChange={e => onDatabaseDeleteConfirm(database, e)}
|
||||||
onKeyDown={e => onDatabaseDeleteConfirm(database, e)}
|
onKeyDown={e => onDatabaseDeleteConfirm(database, e)}
|
||||||
autoFocus={true}
|
autoFocus={true}
|
||||||
|
autoComplete={false}
|
||||||
|
spellCheck={false}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<ConfirmButtons
|
<ConfirmButtons
|
||||||
item={database}
|
item={database}
|
||||||
onConfirm={onConfirm}
|
onConfirm={onConfirm}
|
||||||
onCancel={onCancel}
|
onCancel={onCancel}
|
||||||
|
buttonSize="btn-xs"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
@ -119,14 +122,16 @@ const Header = ({
|
||||||
const EditHeader = ({database, onEdit, onKeyDown, onConfirm, onCancel}) => (
|
const EditHeader = ({database, onEdit, onKeyDown, onConfirm, onCancel}) => (
|
||||||
<div className="db-manager-header db-manager-header--edit">
|
<div className="db-manager-header db-manager-header--edit">
|
||||||
<input
|
<input
|
||||||
className="form-control"
|
className="form-control input-sm"
|
||||||
name="name"
|
name="name"
|
||||||
type="text"
|
type="text"
|
||||||
value={database.name}
|
value={database.name}
|
||||||
placeholder="Name this database"
|
placeholder="Name this Database"
|
||||||
onChange={e => onEdit(database, {name: e.target.value})}
|
onChange={e => onEdit(database, {name: e.target.value})}
|
||||||
onKeyDown={e => onKeyDown(e, database)}
|
onKeyDown={e => onKeyDown(e, database)}
|
||||||
autoFocus={true}
|
autoFocus={true}
|
||||||
|
spellCheck={false}
|
||||||
|
autoComplete={false}
|
||||||
/>
|
/>
|
||||||
<ConfirmButtons item={database} onConfirm={onConfirm} onCancel={onCancel} />
|
<ConfirmButtons item={database} onConfirm={onConfirm} onCancel={onCancel} />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -31,7 +31,7 @@ class FilterBar extends Component {
|
||||||
<div className="users__search-widget input-group admin__search-widget">
|
<div className="users__search-widget input-group admin__search-widget">
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
className="form-control"
|
className="form-control input-sm"
|
||||||
placeholder={`Filter ${placeholderText}...`}
|
placeholder={`Filter ${placeholderText}...`}
|
||||||
value={this.state.filterText}
|
value={this.state.filterText}
|
||||||
onChange={this.handleText}
|
onChange={this.handleText}
|
||||||
|
|
|
@ -4,9 +4,9 @@ import QueryRow from 'src/admin/components/QueryRow'
|
||||||
|
|
||||||
const QueriesTable = ({queries, onKillQuery}) => (
|
const QueriesTable = ({queries, onKillQuery}) => (
|
||||||
<div>
|
<div>
|
||||||
<div className="panel panel-minimal">
|
<div className="panel panel-default">
|
||||||
<div className="panel-body">
|
<div className="panel-body">
|
||||||
<table className="table v-center admin-table">
|
<table className="table v-center admin-table table-highlight">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Database</th>
|
<th>Database</th>
|
||||||
|
|
|
@ -72,7 +72,11 @@ const RoleRow = ({
|
||||||
/>
|
/>
|
||||||
: null}
|
: null}
|
||||||
</td>
|
</td>
|
||||||
<DeleteConfirmTableCell onDelete={onDelete} item={role} />
|
<DeleteConfirmTableCell
|
||||||
|
onDelete={onDelete}
|
||||||
|
item={role}
|
||||||
|
buttonSize="btn-xs"
|
||||||
|
/>
|
||||||
</tr>
|
</tr>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ const RolesTable = ({
|
||||||
onUpdateRoleUsers,
|
onUpdateRoleUsers,
|
||||||
onUpdateRolePermissions,
|
onUpdateRolePermissions,
|
||||||
}) => (
|
}) => (
|
||||||
<div className="panel panel-info">
|
<div className="panel panel-default">
|
||||||
<FilterBar
|
<FilterBar
|
||||||
type="roles"
|
type="roles"
|
||||||
onFilter={onFilter}
|
onFilter={onFilter}
|
||||||
|
@ -25,7 +25,7 @@ const RolesTable = ({
|
||||||
onClickCreate={onClickCreate}
|
onClickCreate={onClickCreate}
|
||||||
/>
|
/>
|
||||||
<div className="panel-body">
|
<div className="panel-body">
|
||||||
<table className="table v-center admin-table">
|
<table className="table v-center admin-table table-highlight">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
|
|
|
@ -25,10 +25,10 @@ class UserEditingRow extends Component {
|
||||||
render() {
|
render() {
|
||||||
const {user, isNew} = this.props
|
const {user, isNew} = this.props
|
||||||
return (
|
return (
|
||||||
<td>
|
<td style={{width: '240px'}}>
|
||||||
<div className="admin-table--edit-cell">
|
<div className="admin-table--edit-cell">
|
||||||
<input
|
<input
|
||||||
className="form-control"
|
className="form-control input-sm"
|
||||||
name="name"
|
name="name"
|
||||||
type="text"
|
type="text"
|
||||||
value={user.name || ''}
|
value={user.name || ''}
|
||||||
|
@ -36,16 +36,20 @@ class UserEditingRow extends Component {
|
||||||
onChange={this.handleEdit(user)}
|
onChange={this.handleEdit(user)}
|
||||||
onKeyPress={this.handleKeyPress(user)}
|
onKeyPress={this.handleKeyPress(user)}
|
||||||
autoFocus={true}
|
autoFocus={true}
|
||||||
|
spellCheck={false}
|
||||||
|
autoComplete={false}
|
||||||
/>
|
/>
|
||||||
{isNew
|
{isNew
|
||||||
? <input
|
? <input
|
||||||
className="form-control"
|
className="form-control input-sm"
|
||||||
name="password"
|
name="password"
|
||||||
type="password"
|
type="password"
|
||||||
value={user.password || ''}
|
value={user.password || ''}
|
||||||
placeholder="Password"
|
placeholder="Password"
|
||||||
onChange={this.handleEdit(user)}
|
onChange={this.handleEdit(user)}
|
||||||
onKeyPress={this.handleKeyPress(user)}
|
onKeyPress={this.handleKeyPress(user)}
|
||||||
|
spellCheck={false}
|
||||||
|
autoComplete={false}
|
||||||
/>
|
/>
|
||||||
: null}
|
: null}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -48,8 +48,9 @@ const UserRow = ({
|
||||||
onSave={onSave}
|
onSave={onSave}
|
||||||
isNew={isNew}
|
isNew={isNew}
|
||||||
/>
|
/>
|
||||||
{hasRoles ? <td /> : null}
|
{hasRoles ? <td>--</td> : null}
|
||||||
<td />
|
<td>--</td>
|
||||||
|
<td style={{width: '190px'}} />
|
||||||
<td className="text-right" style={{width: '85px'}}>
|
<td className="text-right" style={{width: '85px'}}>
|
||||||
<ConfirmButtons item={user} onConfirm={onSave} onCancel={onCancel} />
|
<ConfirmButtons item={user} onConfirm={onSave} onCancel={onCancel} />
|
||||||
</td>
|
</td>
|
||||||
|
@ -59,7 +60,7 @@ const UserRow = ({
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<tr>
|
<tr>
|
||||||
<td>{name}</td>
|
<td style={{width: '240px'}}>{name}</td>
|
||||||
{hasRoles
|
{hasRoles
|
||||||
? <td>
|
? <td>
|
||||||
<MultiSelectDropdown
|
<MultiSelectDropdown
|
||||||
|
@ -74,6 +75,7 @@ const UserRow = ({
|
||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
: null}
|
: null}
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
{allPermissions && allPermissions.length
|
{allPermissions && allPermissions.length
|
||||||
? <MultiSelectDropdown
|
? <MultiSelectDropdown
|
||||||
|
@ -86,14 +88,19 @@ const UserRow = ({
|
||||||
/>
|
/>
|
||||||
: null}
|
: null}
|
||||||
</td>
|
</td>
|
||||||
<td className="text-right" style={{width: '300px'}}>
|
<td className="text-right" style={{width: '190px'}}>
|
||||||
<ChangePassRow
|
<ChangePassRow
|
||||||
onEdit={onEdit}
|
onEdit={onEdit}
|
||||||
onApply={handleUpdatePassword}
|
onApply={handleUpdatePassword}
|
||||||
user={user}
|
user={user}
|
||||||
|
buttonSize="btn-xs"
|
||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
<DeleteConfirmTableCell onDelete={onDelete} item={user} />
|
<DeleteConfirmTableCell
|
||||||
|
onDelete={onDelete}
|
||||||
|
item={user}
|
||||||
|
buttonSize="btn-xs"
|
||||||
|
/>
|
||||||
</tr>
|
</tr>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ const UsersTable = ({
|
||||||
onUpdateRoles,
|
onUpdateRoles,
|
||||||
onUpdatePassword,
|
onUpdatePassword,
|
||||||
}) => (
|
}) => (
|
||||||
<div className="panel panel-info">
|
<div className="panel panel-default">
|
||||||
<FilterBar
|
<FilterBar
|
||||||
type="users"
|
type="users"
|
||||||
onFilter={onFilter}
|
onFilter={onFilter}
|
||||||
|
@ -28,7 +28,7 @@ const UsersTable = ({
|
||||||
onClickCreate={onClickCreate}
|
onClickCreate={onClickCreate}
|
||||||
/>
|
/>
|
||||||
<div className="panel-body">
|
<div className="panel-body">
|
||||||
<table className="table v-center admin-table">
|
<table className="table v-center admin-table table-highlight">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>User</th>
|
<th>User</th>
|
||||||
|
|
|
@ -1,21 +1,36 @@
|
||||||
import React, {PropTypes} from 'react'
|
import React, {PropTypes} from 'react'
|
||||||
|
import classnames from 'classnames'
|
||||||
|
|
||||||
const YesNoButtons = ({onConfirm, onCancel}) => (
|
const YesNoButtons = ({onConfirm, onCancel, buttonSize}) => (
|
||||||
<div>
|
<div>
|
||||||
<button className="btn btn-xs btn-info" onClick={onCancel}>
|
<button
|
||||||
|
className={classnames('btn btn-square btn-info', {
|
||||||
|
[buttonSize]: buttonSize,
|
||||||
|
})}
|
||||||
|
onClick={onCancel}
|
||||||
|
>
|
||||||
<span className="icon remove" />
|
<span className="icon remove" />
|
||||||
</button>
|
</button>
|
||||||
<button className="btn btn-xs btn-success" onClick={onConfirm}>
|
<button
|
||||||
|
className={classnames('btn btn-square btn-success', {
|
||||||
|
[buttonSize]: buttonSize,
|
||||||
|
})}
|
||||||
|
onClick={onConfirm}
|
||||||
|
>
|
||||||
<span className="icon checkmark" />
|
<span className="icon checkmark" />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|
||||||
const {func} = PropTypes
|
const {func, string} = PropTypes
|
||||||
|
|
||||||
YesNoButtons.propTypes = {
|
YesNoButtons.propTypes = {
|
||||||
onConfirm: func.isRequired,
|
onConfirm: func.isRequired,
|
||||||
onCancel: func.isRequired,
|
onCancel: func.isRequired,
|
||||||
|
buttonSize: string,
|
||||||
|
}
|
||||||
|
YesNoButtons.defaultProps = {
|
||||||
|
buttonSize: 'btn-sm',
|
||||||
}
|
}
|
||||||
|
|
||||||
export default YesNoButtons
|
export default YesNoButtons
|
||||||
|
|
|
@ -12,22 +12,7 @@
|
||||||
*/
|
*/
|
||||||
.admin-tabs {
|
.admin-tabs {
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
|
& + div {padding-left: 0;}
|
||||||
& + div {
|
|
||||||
padding-left: 0;
|
|
||||||
|
|
||||||
.panel {
|
|
||||||
border-top-left-radius: 0;
|
|
||||||
}
|
|
||||||
.panel-body {
|
|
||||||
min-height: 300px;
|
|
||||||
}
|
|
||||||
.panel-title {
|
|
||||||
font-size: 17px;
|
|
||||||
font-weight: 400 !important;
|
|
||||||
color: $g12-forge;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.admin-tabs .btn-group {
|
.admin-tabs .btn-group {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
@ -64,8 +49,26 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.admin-tabs--content {
|
||||||
|
.panel {
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
}
|
||||||
|
.panel-heading {
|
||||||
|
height: 60px;
|
||||||
|
}
|
||||||
|
.panel-title {
|
||||||
|
font-size: 17px;
|
||||||
|
font-weight: 400 !important;
|
||||||
|
color: $g12-forge;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.panel-body {
|
||||||
|
min-height: 300px;
|
||||||
|
}
|
||||||
|
.panel-heading + .panel-body {
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
Admin Table
|
Admin Table
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
|
@ -184,21 +187,18 @@
|
||||||
h4 {
|
h4 {
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
color: $c-potassium;
|
color: $c-potassium;
|
||||||
font-size: 17px;
|
font-size: 16px;
|
||||||
font-family: $code-font;
|
font-family: $code-font;
|
||||||
padding-left: 6px;
|
padding-left: 6px;
|
||||||
|
width: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.db-manager-header--edit {
|
.db-manager-header--edit {
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
|
|
||||||
.form-control {
|
.form-control {
|
||||||
height: 22px;
|
margin: 0 8px 0 0;
|
||||||
padding: 0 6px;
|
flex: 1 0 0;
|
||||||
margin: 0 4px 0 0;
|
|
||||||
min-width: 110px;
|
|
||||||
font-size: 12px;
|
|
||||||
width: 50%;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,11 +215,7 @@
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
|
|
||||||
.form-control {
|
.form-control {
|
||||||
height: 22px;
|
|
||||||
padding: 0 6px;
|
|
||||||
margin: 0 4px 0 0;
|
margin: 0 4px 0 0;
|
||||||
min-width: 110px;
|
|
||||||
font-size: 12px;
|
|
||||||
width: 120px;
|
width: 120px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue