Work in progress on port to Bootstrap 4
This commit is contained in:
parent
3425e2c16a
commit
41d74e3cc7
40 changed files with 144 additions and 365 deletions
|
@ -4,13 +4,14 @@
|
|||
"description": "Self hosted email newsletter app - client components",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "webpack",
|
||||
"js": "webpack",
|
||||
"watch-js": "webpack --watch",
|
||||
"css": "npm-run-all --sequential css-compile css-minify",
|
||||
"css-compile": "node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 static/scss/mailtrain.scss dist/mailtrain.css",
|
||||
"css-minify": "cleancss --level 1 --source-map --source-map-inline-sources --output dist/mailtrain.min.css dist/mailtrain.css",
|
||||
"watch-css": "nodemon --watch static/scss -e scss -x \"npm run css\"",
|
||||
"watch": "npm-run-all --parallel watch-css watch-js"
|
||||
"watch": "npm-run-all --parallel watch-css watch-js",
|
||||
"build": "npm-run-all --parallel css js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
|
|
@ -108,7 +108,7 @@ export default class List extends Component {
|
|||
tableAddRestActionButton(
|
||||
actions, this,
|
||||
{ method: HTTPMethod.DELETE, url: `rest/blacklist/${email}`},
|
||||
{ icon: 'remove', label: t('removeFromBlacklist') },
|
||||
{ icon: 'trash-alt', label: t('removeFromBlacklist') },
|
||||
t('confirmRemovalFromBlacklist'),
|
||||
t('areYouSureYouWantToRemoveEmailFromThe', {email}),
|
||||
t('removingEmailFromTheBlacklist', {email}),
|
||||
|
|
|
@ -508,7 +508,7 @@ export default class CUD extends Component {
|
|||
{lsts.length > 1 &&
|
||||
<Button
|
||||
className="btn-secondary"
|
||||
icon="remove"
|
||||
icon="trash-alt"
|
||||
title={t('remove')}
|
||||
onClickAsync={() => this.onRemoveListEntry(lstUid)}
|
||||
/>
|
||||
|
@ -738,7 +738,7 @@ export default class CUD extends Component {
|
|||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={saveButtonLabel}/>
|
||||
{canDelete && <NavButton className="btn-danger" icon="remove" label={t('delete')} linkTo={`/campaigns/${this.props.entity.id}/delete`}/> }
|
||||
{canDelete && <NavButton className="btn-danger" icon="trash-alt" label={t('delete')} linkTo={`/campaigns/${this.props.entity.id}/delete`}/> }
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
</div>
|
||||
|
|
|
@ -3,11 +3,12 @@
|
|||
import React, {Component} from 'react';
|
||||
import {withTranslation} from '../lib/i18n';
|
||||
import {
|
||||
DropdownMenu,
|
||||
ButtonDropdown,
|
||||
Icon
|
||||
} from '../lib/bootstrap-components';
|
||||
import {
|
||||
MenuLink,
|
||||
ButtonDropdownLink,
|
||||
NavDropdown,
|
||||
requiresAuthenticatedUser,
|
||||
Title,
|
||||
Toolbar,
|
||||
|
@ -109,7 +110,7 @@ export default class List extends Component {
|
|||
|
||||
if (perms.includes('viewStats')) {
|
||||
actions.push({
|
||||
label: <Icon icon="send" title={t('status')}/>,
|
||||
label: <Icon icon="envelope" title={t('status')}/>,
|
||||
link: `/campaigns/${data[0]}/status`
|
||||
});
|
||||
|
||||
|
@ -149,14 +150,14 @@ export default class List extends Component {
|
|||
|
||||
if (campaignType === CampaignType.TRIGGERED && perms.includes('viewTriggers')) {
|
||||
actions.push({
|
||||
label: <Icon icon="flash" title={t('triggers')}/>,
|
||||
label: <Icon icon="bell" title={t('triggers')}/>,
|
||||
link: `/campaigns/${data[0]}/triggers`
|
||||
});
|
||||
}
|
||||
|
||||
if (perms.includes('share')) {
|
||||
actions.push({
|
||||
label: <Icon icon="share-alt" title={t('share')}/>,
|
||||
label: <Icon icon="share" title={t('share')}/>,
|
||||
link: `/campaigns/${data[0]}/share`
|
||||
});
|
||||
}
|
||||
|
@ -173,11 +174,11 @@ export default class List extends Component {
|
|||
{tableRestActionDialogRender(this)}
|
||||
<Toolbar>
|
||||
{this.state.createPermitted &&
|
||||
<DropdownMenu className="btn-primary" label={t('createCampaign')}>
|
||||
<MenuLink to="/campaigns/create-regular">{t('regular')}</MenuLink>
|
||||
<MenuLink to="/campaigns/create-rss">{t('rss')}</MenuLink>
|
||||
<MenuLink to="/campaigns/create-triggered">{t('triggered')}</MenuLink>
|
||||
</DropdownMenu>
|
||||
<ButtonDropdown buttonClassName="btn-primary" menuClassName="dropdown-menu-right" label={t('createCampaign')}>
|
||||
<ButtonDropdownLink to="/campaigns/create-regular">{t('regular')}</ButtonDropdownLink>
|
||||
<ButtonDropdownLink to="/campaigns/create-rss">{t('rss')}</ButtonDropdownLink>
|
||||
<ButtonDropdownLink to="/campaigns/create-triggered">{t('triggered')}</ButtonDropdownLink>
|
||||
</ButtonDropdown>
|
||||
}
|
||||
</Toolbar>
|
||||
|
||||
|
|
|
@ -236,7 +236,7 @@ export default class CUD extends Component {
|
|||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
{isEdit && <NavButton className="btn-danger" icon="remove" label={t('delete')} linkTo={`/campaigns/${this.props.campaign.id}/triggers/${this.props.entity.id}/delete`}/>}
|
||||
{isEdit && <NavButton className="btn-danger" icon="trash-alt" label={t('delete')} linkTo={`/campaigns/${this.props.campaign.id}/triggers/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
</div>
|
||||
|
|
69
client/src/lib/bootstrap-components.js
vendored
69
client/src/lib/bootstrap-components.js
vendored
|
@ -112,35 +112,28 @@ class Button extends Component {
|
|||
}
|
||||
}
|
||||
|
||||
//TODO
|
||||
class DropdownMenu extends Component {
|
||||
class ButtonDropdown extends Component {
|
||||
static propTypes = {
|
||||
label: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
|
||||
noCaret: PropTypes.bool,
|
||||
className: PropTypes.string
|
||||
className: PropTypes.string,
|
||||
buttonClassName: PropTypes.string,
|
||||
menuClassName: PropTypes.string
|
||||
}
|
||||
|
||||
render() {
|
||||
const props = this.props;
|
||||
|
||||
let className = 'btn dropdown-toggle';
|
||||
if (props.className) {
|
||||
className = className + ' ' + props.className;
|
||||
}
|
||||
|
||||
let label;
|
||||
if (this.props.noCaret) {
|
||||
label = props.label;
|
||||
} else {
|
||||
label = <span>{props.label}{' '}<span className="caret"></span></span>;
|
||||
}
|
||||
const className = 'dropdown' + (props.className ? ' ' + props.className : '');
|
||||
const buttonClassName = 'btn dropdown-toggle' + (props.buttonClassName ? ' ' + props.buttonClassName : '');
|
||||
const menuClassName = 'dropdown-menu' + (props.menuClassName ? ' ' + props.menuClassName : '');
|
||||
|
||||
return (
|
||||
<div className="btn-group">
|
||||
<button type="button" className={className} data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
{label}
|
||||
<div className="dropdown" className={className}>
|
||||
<button type="button" className={buttonClassName} data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
{props.label}
|
||||
</button>
|
||||
<ul className="dropdown-menu">
|
||||
<ul className={menuClassName}>
|
||||
{props.children}
|
||||
</ul>
|
||||
|
||||
|
@ -149,41 +142,6 @@ class DropdownMenu extends Component {
|
|||
}
|
||||
}
|
||||
|
||||
//TODO
|
||||
class DropdownMenuItem extends Component {
|
||||
static propTypes = {
|
||||
label: PropTypes.string,
|
||||
icon: PropTypes.string,
|
||||
className: PropTypes.string
|
||||
}
|
||||
|
||||
render() {
|
||||
const props = this.props;
|
||||
|
||||
let className = 'nav-item dropdown';
|
||||
if (props.className) {
|
||||
className = className + ' ' + props.className;
|
||||
}
|
||||
|
||||
return (
|
||||
<li className={className}>
|
||||
{props.icon ?
|
||||
<a href="#" className="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
<Icon icon={props.icon}/>{' '}{props.label}
|
||||
</a>
|
||||
:
|
||||
<a href="#" className="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
{props.label}
|
||||
</a>
|
||||
}
|
||||
<ul className="dropdown-menu">
|
||||
{props.children}
|
||||
</ul>
|
||||
</li>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@withComponentMixins([
|
||||
withErrorHandling
|
||||
])
|
||||
|
@ -217,7 +175,6 @@ class ActionLink extends Component {
|
|||
withTranslation,
|
||||
withErrorHandling
|
||||
])
|
||||
//TODO
|
||||
class ModalDialog extends Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
@ -314,8 +271,8 @@ class ModalDialog extends Component {
|
|||
<div className="modal-dialog" role="document">
|
||||
<div className="modal-content">
|
||||
<div className="modal-header">
|
||||
<button type="button" className="close" aria-label={t('close')} onClick={::this.onClose}><span aria-hidden="true">×</span></button>
|
||||
<h4 className="modal-title">{this.props.title}</h4>
|
||||
<button type="button" className="close" aria-label={t('close')} onClick={::this.onClose}><span aria-hidden="true">×</span></button>
|
||||
</div>
|
||||
<div className="modal-body">{this.props.children}</div>
|
||||
<div className="modal-footer">
|
||||
|
@ -332,7 +289,7 @@ class ModalDialog extends Component {
|
|||
|
||||
export {
|
||||
Button,
|
||||
DropdownMenu,
|
||||
ButtonDropdown,
|
||||
DropdownMenuItem,
|
||||
ActionLink,
|
||||
DismissibleAlert,
|
||||
|
|
|
@ -144,7 +144,7 @@ export default class Files extends Component {
|
|||
|
||||
if (this.props.entity.permissions.includes(this.props.managePermission)) {
|
||||
actions.push({
|
||||
label: <Icon icon="remove" title={t('delete')}/>,
|
||||
label: <Icon icon="trash-alt" title={t('delete')}/>,
|
||||
action: () => this.deleteFile(data[0], data[1])
|
||||
});
|
||||
}
|
||||
|
|
|
@ -194,9 +194,9 @@ function wrapInput(id, htmlId, owner, format, rightContainerClass, label, help,
|
|||
// wrapInput may be used also outside forms to make a kind of fake read-only forms
|
||||
let className;
|
||||
if (owner) {
|
||||
className = 'form-group row';
|
||||
className = 'form-group';
|
||||
} else {
|
||||
className = 'row ' + styles.staticFormGroup;
|
||||
className = styles.staticFormGroup;
|
||||
}
|
||||
|
||||
let colLeft = '';
|
||||
|
@ -207,15 +207,17 @@ function wrapInput(id, htmlId, owner, format, rightContainerClass, label, help,
|
|||
colLeft = '';
|
||||
colRight = '';
|
||||
break;
|
||||
case 'inline':
|
||||
colLeft = 'mr-3';
|
||||
colRight = '';
|
||||
break;
|
||||
default:
|
||||
className = className + ' row';
|
||||
colLeft = 'col-sm-2 col-form-label';
|
||||
colRight = 'col-sm-10';
|
||||
break;
|
||||
}
|
||||
|
||||
if (format === 'inline') {
|
||||
}
|
||||
|
||||
let helpBlock = null;
|
||||
if (help) {
|
||||
helpBlock = <small className={`form-text text-muted`} id={htmlId + '_help'}>{help}</small>;
|
||||
|
@ -239,7 +241,7 @@ function wrapInput(id, htmlId, owner, format, rightContainerClass, label, help,
|
|||
if (format === 'inline') {
|
||||
return (
|
||||
<div className={className} >
|
||||
{labelBlock} {input}
|
||||
{labelBlock}{input}
|
||||
{helpBlock}
|
||||
{validationBlock}
|
||||
</div>
|
||||
|
|
|
@ -224,7 +224,7 @@ export function tableAddDeleteButton(actions, owner, perms, deleteUrl, name, del
|
|||
if (!perms || perms.includes('delete')) {
|
||||
if (owner.tableRestActionDialogData.shown) {
|
||||
actions.push({
|
||||
label: <Icon className={styles.iconDisabled} icon="remove" title={t('delete')}/>
|
||||
label: <Icon className={styles.iconDisabled} icon="trash-alt" title={t('delete')}/>
|
||||
});
|
||||
} else {
|
||||
actions.push({
|
||||
|
|
|
@ -98,7 +98,6 @@ class Breadcrumb extends Component {
|
|||
}
|
||||
}
|
||||
|
||||
//TODO
|
||||
class SecondaryNavBar extends Component {
|
||||
static propTypes = {
|
||||
route: PropTypes.object.isRequired,
|
||||
|
@ -116,9 +115,10 @@ class SecondaryNavBar extends Component {
|
|||
title = entry.title;
|
||||
}
|
||||
|
||||
let className = '';
|
||||
let liClassName = 'nav-item';
|
||||
let linkClassName = 'nav-link';
|
||||
if (entry.active) {
|
||||
className += ' active';
|
||||
linkClassName += ' active';
|
||||
}
|
||||
|
||||
if (entry.link) {
|
||||
|
@ -130,7 +130,7 @@ class SecondaryNavBar extends Component {
|
|||
link = entry.link;
|
||||
}
|
||||
|
||||
return <li key={key} role="presentation" className={className}><Link to={link}>{title}</Link></li>;
|
||||
return <li key={key} role="presentation" className={liClassName}><Link className={linkClassName} to={link}>{title}</Link></li>;
|
||||
|
||||
} else if (entry.externalLink) {
|
||||
let externalLink;
|
||||
|
@ -140,10 +140,10 @@ class SecondaryNavBar extends Component {
|
|||
externalLink = entry.externalLink;
|
||||
}
|
||||
|
||||
return <li key={key} role="presentation" className={className}><a href={externalLink}>{title}</a></li>;
|
||||
return <li key={key} role="presentation" className={liClassName}><a className={linkClassName} href={externalLink}>{title}</a></li>;
|
||||
|
||||
} else {
|
||||
return <li key={key} role="presentation" className={className}>{title}</li>;
|
||||
return <li key={key} role="presentation" className={liClassName}>{title}</li>;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -153,7 +153,7 @@ class SecondaryNavBar extends Component {
|
|||
const keys = Object.keys(route.navs);
|
||||
const renderedElems = [];
|
||||
|
||||
for (const key in keys) {
|
||||
for (const key of keys) {
|
||||
const entry = route.navs[key];
|
||||
|
||||
let visible = true;
|
||||
|
@ -280,10 +280,9 @@ class RouteContent extends Component {
|
|||
<div>
|
||||
{primaryMenuComponent}
|
||||
|
||||
<div>
|
||||
<SecondaryNavBar className="hidden-xs pull-right" route={route} params={params} resolved={resolved}/>
|
||||
<div className={styles.breadcrumbAndSecondaryNavbar}>
|
||||
<Breadcrumb route={route} params={params} resolved={resolved}/>
|
||||
<SecondaryNavBar className="visible-xs" route={route} params={params} resolved={resolved}/>
|
||||
<SecondaryNavBar route={route} params={params} resolved={resolved}/>
|
||||
</div>
|
||||
|
||||
<div className="container-fluid">
|
||||
|
@ -473,8 +472,7 @@ export class NavButton extends Component {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO
|
||||
export class MenuLink extends Component {
|
||||
export class ButtonDropdownLink extends Component {
|
||||
static propTypes = {
|
||||
to: PropTypes.string,
|
||||
className: PropTypes.string
|
||||
|
@ -483,9 +481,9 @@ export class MenuLink extends Component {
|
|||
render() {
|
||||
const props = this.props;
|
||||
|
||||
const clsName = "nav-item" + (props.className ? " " + props.className : "")
|
||||
const clsName = "dropdown-item" + (props.className ? " " + props.className : "")
|
||||
return (
|
||||
<li className={clsName}><Link to={props.to} className="nav-link">{props.children}</Link></li>
|
||||
<Link to={props.to} className={clsName}>{props.children}</Link>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -84,28 +84,32 @@
|
|||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.secondaryNav {
|
||||
margin-top: 5px;
|
||||
margin-right: 5px;
|
||||
text-align: right;
|
||||
}
|
||||
.breadcrumbAndSecondaryNavbar {
|
||||
/*
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
*/
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.secondaryNav {
|
||||
margin: 0px;
|
||||
background-color: #f5f5f5;
|
||||
padding: 5px 5px;
|
||||
border-radius: 4px;
|
||||
:global .breadcrumb {
|
||||
margin-bottom: 0px;
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.secondaryNav > li {
|
||||
display: inline-block;
|
||||
float: none;
|
||||
}
|
||||
margin-bottom: 1.5rem;
|
||||
|
||||
.secondaryNav > li > a {
|
||||
padding: 3px 10px;
|
||||
.secondaryNav {
|
||||
justify-content: flex-end;
|
||||
|
||||
margin-top: 0.5rem;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
|
||||
:global .nav-item .nav-link {
|
||||
padding: 3px 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropZone {
|
||||
|
|
|
@ -240,7 +240,7 @@ export default class CUD extends Component {
|
|||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
{canDelete && <NavButton className="btn-danger" icon="remove" label={t('delete')} linkTo={`/lists/${this.props.entity.id}/delete`}/>}
|
||||
{canDelete && <NavButton className="btn-danger" icon="trash-alt" label={t('delete')} linkTo={`/lists/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
</div>
|
||||
|
|
|
@ -122,7 +122,7 @@ export default class List extends Component {
|
|||
|
||||
if (triggersCount > 0) {
|
||||
actions.push({
|
||||
label: <Icon icon="flash" title={t('triggers')}/>,
|
||||
label: <Icon icon="bell" title={t('triggers')}/>,
|
||||
link: `/lists/${data[0]}/triggers`
|
||||
});
|
||||
}
|
||||
|
|
|
@ -481,7 +481,7 @@ export default class CUD extends Component {
|
|||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
{isEdit && <NavButton className="btn-danger" icon="remove" label={t('delete')} linkTo={`/lists/${this.props.list.id}/fields/${this.props.entity.id}/delete`}/>}
|
||||
{isEdit && <NavButton className="btn-danger" icon="trash-alt" label={t('delete')} linkTo={`/lists/${this.props.list.id}/fields/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
</div>
|
||||
|
|
|
@ -525,7 +525,7 @@ export default class CUD extends Component {
|
|||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
{canDelete && <NavButton className="btn-danger" icon="remove" label={t('delete')} linkTo={`/lists/forms/${this.props.entity.id}/delete`}/>}
|
||||
{canDelete && <NavButton className="btn-danger" icon="trash-alt" label={t('delete')} linkTo={`/lists/forms/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
</div>
|
||||
|
|
|
@ -76,7 +76,7 @@ export default class List extends Component {
|
|||
}
|
||||
if (perms.includes('share')) {
|
||||
actions.push({
|
||||
label: <Icon icon="share-alt" title={t('share')}/>,
|
||||
label: <Icon icon="share" title={t('share')}/>,
|
||||
link: `/lists/forms/${data[0]}/share`
|
||||
});
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import {
|
|||
withPageHelpers
|
||||
} from '../../lib/page';
|
||||
import {
|
||||
AlignedRow,
|
||||
Button,
|
||||
ButtonRow,
|
||||
CheckBox,
|
||||
|
@ -336,7 +337,7 @@ export default class CUD extends Component {
|
|||
} else {
|
||||
settingsEdit =
|
||||
<div>
|
||||
<StaticField withValidation id="csvFileName" label={t('file')}><input ref={node => this.csvFile = node} type="file" onChange={::this.onFileSelected}/></StaticField>
|
||||
<AlignedRow label={t('file')}><input ref={node => this.csvFile = node} type="file" className="form-control-file" onChange={::this.onFileSelected}/></AlignedRow>
|
||||
<InputField id="csvDelimiter" label={t('delimiter')}/>
|
||||
</div>;
|
||||
}
|
||||
|
@ -451,7 +452,7 @@ export default class CUD extends Component {
|
|||
|
||||
<ButtonRow>
|
||||
{saveButtons}
|
||||
{isEdit && <NavButton className="btn-danger" icon="remove" label={t('delete')} linkTo={`/lists/${this.props.list.id}/imports/${this.props.entity.id}/delete`}/>}
|
||||
{isEdit && <NavButton className="btn-danger" icon="trash-alt" label={t('delete')} linkTo={`/lists/${this.props.list.id}/imports/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
</div>
|
||||
|
|
|
@ -80,7 +80,7 @@ export default class List extends Component {
|
|||
}
|
||||
|
||||
actions.push({
|
||||
label: <Icon icon="eye-open" title={t('detailedStatus')}/>,
|
||||
label: <Icon icon="eye" title={t('detailedStatus')}/>,
|
||||
link: `/lists/${this.props.list.id}/imports/${data[0]}/status`
|
||||
});
|
||||
|
||||
|
|
|
@ -357,7 +357,7 @@ export default class CUD extends Component {
|
|||
<FormButton type="submit" className="btn-primary" icon="check" label={t('saveAndStay')} onClickAsync={::this.submitAndStay}/>
|
||||
<FormButton type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')}/>
|
||||
|
||||
<NavButton className="btn-danger" icon="remove" label={t('delete')} linkTo={`/lists/${this.props.list.id}/segments/${this.props.entity.id}/delete`}/>
|
||||
<NavButton className="btn-danger" icon="trash-alt" label={t('delete')} linkTo={`/lists/${this.props.list.id}/segments/${this.props.entity.id}/delete`}/>
|
||||
</ButtonRow>
|
||||
:
|
||||
<ButtonRow format="wide" className={`col-xs-12 ${styles.toolbar}`}>
|
||||
|
@ -394,7 +394,7 @@ export default class CUD extends Component {
|
|||
generateNodeProps={data => ({
|
||||
buttons: [
|
||||
<ActionLink onClickAsync={async () => !this.state.ruleOptionsVisible && this.showRuleOptions(data.node.rule)} className={styles.ruleActionLink}><Icon icon="edit" title={t('edit')}/></ActionLink>,
|
||||
<ActionLink onClickAsync={async () => !this.state.ruleOptionsVisible && this.deleteRule(data.node.rule)} className={styles.ruleActionLink}><Icon icon="remove" title={t('delete')}/></ActionLink>
|
||||
<ActionLink onClickAsync={async () => !this.state.ruleOptionsVisible && this.deleteRule(data.node.rule)} className={styles.ruleActionLink}><Icon icon="trash-alt" title={t('delete')}/></ActionLink>
|
||||
]
|
||||
})}
|
||||
/>
|
||||
|
|
|
@ -238,7 +238,7 @@ export default class CUD extends Component {
|
|||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="chevron-left" label={t('ok')}/>
|
||||
<Button className="btn-primary" icon="remove" label={t('delete')} onClickAsync={::this.deleteRule}/>
|
||||
<Button className="btn-primary" icon="trash-alt" label={t('delete')} onClickAsync={::this.deleteRule}/>
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
|
||||
|
|
|
@ -223,7 +223,7 @@ export default class CUD extends Component {
|
|||
}
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
{isEdit && <NavButton className="btn-danger" icon="remove" label={t('delete')} linkTo={`/lists/${this.props.list.id}/subscriptions/${this.props.entity.id}/delete`}/>}
|
||||
{isEdit && <NavButton className="btn-danger" icon="trash-alt" label={t('delete')} linkTo={`/lists/${this.props.list.id}/subscriptions/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
</div>
|
||||
|
|
|
@ -137,7 +137,7 @@ export default class List extends Component {
|
|||
tableAddRestActionButton(
|
||||
actions, this,
|
||||
{ method: HTTPMethod.POST, url: `rest/subscriptions-unsubscribe/${this.props.list.id}/${id}`},
|
||||
{ icon: 'off', label: t('unsubscribe') },
|
||||
{ icon: 'power-off', label: t('unsubscribe') },
|
||||
t('confirmUnsubscription'),
|
||||
t('areYouSureYouWantToUnsubscribeEmail?', {email}),
|
||||
t('unsubscribingEmail', {email}),
|
||||
|
@ -150,7 +150,7 @@ export default class List extends Component {
|
|||
tableAddRestActionButton(
|
||||
actions, this,
|
||||
{ method: HTTPMethod.POST, url: `rest/blacklist`, data: {email} },
|
||||
{ icon: 'ban-circle', label: t('blacklist') },
|
||||
{ icon: 'ban', label: t('blacklist') },
|
||||
t('confirmEmailBlacklisting'),
|
||||
t('areYouSureYouWantToBlacklistEmail?', {email}),
|
||||
t('blacklistingEmail', {email}),
|
||||
|
@ -194,13 +194,14 @@ export default class List extends Component {
|
|||
<div className="well well-sm">{list.description}</div>
|
||||
}
|
||||
|
||||
<div className="well well-sm">
|
||||
<Form format="inline" stateOwner={this}>
|
||||
<Dropdown format="inline" className="input-sm" id="segment" label={t('segment')} options={segmentOptions}/>
|
||||
</Form>
|
||||
<div className="card bg-light">
|
||||
<div className="card-body p-2">
|
||||
<Form format="inline" stateOwner={this}>
|
||||
<Dropdown format="inline" className="input-sm" id="segment" label={t('segment')} options={segmentOptions}/>
|
||||
</Form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<Table ref={node => this.table = node} withHeader dataUrl={dataUrl} columns={columns} />
|
||||
</div>
|
||||
);
|
||||
|
|
|
@ -206,7 +206,7 @@ export default class CUD extends Component {
|
|||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
{canDelete && <NavButton className="btn-danger" icon="remove" label={t('delete')} linkTo={`/namespaces/${this.props.entity.id}/delete`}/>}
|
||||
{canDelete && <NavButton className="btn-danger" icon="trash-alt" label={t('delete')} linkTo={`/namespaces/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
</div>
|
||||
|
|
|
@ -72,7 +72,7 @@ export default class List extends Component {
|
|||
|
||||
if (node.data.permissions.includes('share')) {
|
||||
actions.push({
|
||||
label: <Icon icon="share-alt" title={t('share')}/>,
|
||||
label: <Icon icon="share" title={t('share')}/>,
|
||||
link: `/namespaces/${node.key}/share`
|
||||
});
|
||||
}
|
||||
|
|
|
@ -276,7 +276,7 @@ export default class CUD extends Component {
|
|||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
{canDelete &&
|
||||
<NavButton className="btn-danger" icon="remove" label={t('delete')} linkTo={`/reports/${this.props.entity.id}/delete`}/>
|
||||
<NavButton className="btn-danger" icon="trash-alt" label={t('delete')} linkTo={`/reports/${this.props.entity.id}/delete`}/>
|
||||
}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
|
|
|
@ -122,18 +122,18 @@ export default class List extends Component {
|
|||
} else if (state === ReportState.FINISHED) {
|
||||
if (mimeType === 'text/html') {
|
||||
viewContent = {
|
||||
label: <Icon icon="eye-open" title={t('view')}/>,
|
||||
label: <Icon icon="eye" title={t('view')}/>,
|
||||
link: `/reports/${id}/view`
|
||||
};
|
||||
} else if (mimeType === 'text/csv') {
|
||||
viewContent = {
|
||||
label: <Icon icon="download-alt" title={t('download')}/>,
|
||||
label: <Icon icon="file-download" title={t('download')}/>,
|
||||
href: getUrl(`rpts/${id}/download`)
|
||||
};
|
||||
}
|
||||
|
||||
startStop = {
|
||||
label: <Icon icon="repeat" title={t('refreshReport')}/>,
|
||||
label: <Icon icon="redo" title={t('refreshReport')}/>,
|
||||
action: (table) => this.start(table, id)
|
||||
};
|
||||
|
||||
|
@ -143,7 +143,7 @@ export default class List extends Component {
|
|||
};
|
||||
|
||||
startStop = {
|
||||
label: <Icon icon="repeat" title={t('regenerateReport')}/>,
|
||||
label: <Icon icon="redo" title={t('regenerateReport')}/>,
|
||||
action: (table) => this.start(table, id)
|
||||
};
|
||||
}
|
||||
|
@ -155,7 +155,7 @@ export default class List extends Component {
|
|||
if (perms.includes('viewOutput')) {
|
||||
actions.push(
|
||||
{
|
||||
label: <Icon icon="modal-window" title={t('viewConsoleOutput')}/>,
|
||||
label: <Icon icon="tv" title={t('viewConsoleOutput')}/>,
|
||||
link: `/reports/${id}/output`
|
||||
}
|
||||
);
|
||||
|
@ -174,7 +174,7 @@ export default class List extends Component {
|
|||
|
||||
if (perms.includes('share')) {
|
||||
actions.push({
|
||||
label: <Icon icon="share-alt" title={t('share')}/>,
|
||||
label: <Icon icon="share" title={t('share')}/>,
|
||||
link: `/reports/${id}/share`
|
||||
});
|
||||
}
|
||||
|
|
|
@ -335,7 +335,7 @@ export default class CUD extends Component {
|
|||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndStay')} onClickAsync={::this.submitAndStay}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')}/>
|
||||
{canDelete &&
|
||||
<NavButton className="btn-danger" icon="remove" label={t('delete')} linkTo={`/reports/templates/${this.props.entity.id}/delete`}/>
|
||||
<NavButton className="btn-danger" icon="trash-alt" label={t('delete')} linkTo={`/reports/templates/${this.props.entity.id}/delete`}/>
|
||||
}
|
||||
</ButtonRow>
|
||||
:
|
||||
|
|
|
@ -3,11 +3,12 @@
|
|||
import React, {Component} from 'react';
|
||||
import {withTranslation} from '../../lib/i18n';
|
||||
import {
|
||||
DropdownMenu,
|
||||
ButtonDropdown,
|
||||
Icon
|
||||
} from '../../lib/bootstrap-components';
|
||||
import {
|
||||
MenuLink,
|
||||
ButtonDropdownLink,
|
||||
NavDropdown,
|
||||
requiresAuthenticatedUser,
|
||||
Title,
|
||||
Toolbar,
|
||||
|
@ -85,7 +86,7 @@ export default class List extends Component {
|
|||
|
||||
if (perms.includes('share')) {
|
||||
actions.push({
|
||||
label: <Icon icon="share-alt" title={t('share')}/>,
|
||||
label: <Icon icon="share" title={t('share')}/>,
|
||||
link: `/reports/templates/${data[0]}/share`
|
||||
});
|
||||
}
|
||||
|
@ -102,12 +103,12 @@ export default class List extends Component {
|
|||
{tableRestActionDialogRender(this)}
|
||||
{this.state.createPermitted &&
|
||||
<Toolbar>
|
||||
<DropdownMenu className="btn-primary" label={t('createReportTemplate')}>
|
||||
<MenuLink to="/reports/templates/create">{t('blank')}</MenuLink>
|
||||
<MenuLink to="/reports/templates/create/open-counts">{t('openCounts')}</MenuLink>
|
||||
<MenuLink to="/reports/templates/create/open-counts-csv">{t('openCountsAsCsv')}</MenuLink>
|
||||
<MenuLink to="/reports/templates/create/aggregated-open-counts">{t('aggregatedOpenCounts')}</MenuLink>
|
||||
</DropdownMenu>
|
||||
<ButtonDropdown buttonClassName="btn-primary" menuClassName="dropdown-menu-right" label={t('createReportTemplate')}>
|
||||
<ButtonDropdownLink to="/reports/templates/create">{t('blank')}</ButtonDropdownLink>
|
||||
<ButtonDropdownLink to="/reports/templates/create/open-counts">{t('openCounts')}</ButtonDropdownLink>
|
||||
<ButtonDropdownLink to="/reports/templates/create/open-counts-csv">{t('openCountsAsCsv')}</ButtonDropdownLink>
|
||||
<ButtonDropdownLink to="/reports/templates/create/aggregated-open-counts">{t('aggregatedOpenCounts')}</ButtonDropdownLink>
|
||||
</ButtonDropdown>
|
||||
</Toolbar>
|
||||
}
|
||||
|
||||
|
|
|
@ -249,7 +249,7 @@ export default class CUD extends Component {
|
|||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
{canDelete &&
|
||||
<NavButton className="btn-danger" icon="remove" label={t('delete')} linkTo={`/send-configurations/${this.props.entity.id}/delete`}/>
|
||||
<NavButton className="btn-danger" icon="trash-alt" label={t('delete')} linkTo={`/send-configurations/${this.props.entity.id}/delete`}/>
|
||||
}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
|
|
|
@ -86,7 +86,7 @@ export default class List extends Component {
|
|||
|
||||
if (perms.includes('share')) {
|
||||
actions.push({
|
||||
label: <Icon icon="share-alt" title={t('share')}/>,
|
||||
label: <Icon icon="share" title={t('share')}/>,
|
||||
link: `/send-configurations/${data[0]}/share`
|
||||
});
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ export default class UserShares extends Component {
|
|||
|
||||
if (!autoGenerated && perms.includes('share')) {
|
||||
actions.push({
|
||||
label: <Icon icon="remove" title={t('remove')}/>,
|
||||
label: <Icon icon="trash-alt" title={t('remove')}/>,
|
||||
action: () => this.deleteShare(entityTypeId, data[2])
|
||||
});
|
||||
}
|
||||
|
|
|
@ -295,7 +295,7 @@ export default class CUD extends Component {
|
|||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={isEdit ? t('save') : t('saveAndEditTemplate')}/>
|
||||
{canDelete && <NavButton className="btn-danger" icon="remove" label={t('delete')} linkTo={`/templates/${this.props.entity.id}/delete`}/> }
|
||||
{canDelete && <NavButton className="btn-danger" icon="trash-alt" label={t('delete')} linkTo={`/templates/${this.props.entity.id}/delete`}/> }
|
||||
{isEdit && <Button className="btn-danger" icon="send" label={t('testSend')} onClickAsync={async () => this.setState({showTestSendModal: true})}/> }
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
|
|
|
@ -100,7 +100,7 @@ export default class List extends Component {
|
|||
|
||||
if (perms.includes('share')) {
|
||||
actions.push({
|
||||
label: <Icon icon="share-alt" title={t('share')}/>,
|
||||
label: <Icon icon="share" title={t('share')}/>,
|
||||
link: `/templates/${data[0]}/share`
|
||||
});
|
||||
}
|
||||
|
|
|
@ -196,7 +196,7 @@ export default class CUD extends Component {
|
|||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndStay')} onClickAsync={::this.submitAndStay}/>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('saveAndLeave')}/>
|
||||
{canDelete &&
|
||||
<NavButton className="btn-danger" icon="remove" label={t('delete')} linkTo={`/templates/mosaico/${this.props.entity.id}/delete`}/>
|
||||
<NavButton className="btn-danger" icon="trash-alt" label={t('delete')} linkTo={`/templates/mosaico/${this.props.entity.id}/delete`}/>
|
||||
}
|
||||
</ButtonRow>
|
||||
:
|
||||
|
|
|
@ -3,11 +3,12 @@
|
|||
import React, {Component} from 'react';
|
||||
import {withTranslation} from '../../lib/i18n';
|
||||
import {
|
||||
DropdownMenu,
|
||||
ButtonDropdown,
|
||||
Icon
|
||||
} from '../../lib/bootstrap-components';
|
||||
import {
|
||||
MenuLink,
|
||||
ButtonDropdownLink,
|
||||
NavDropdown,
|
||||
requiresAuthenticatedUser,
|
||||
Title,
|
||||
Toolbar,
|
||||
|
@ -102,7 +103,7 @@ export default class List extends Component {
|
|||
|
||||
if (perms.includes('share')) {
|
||||
actions.push({
|
||||
label: <Icon icon="share-alt" title={t('share')}/>,
|
||||
label: <Icon icon="share" title={t('share')}/>,
|
||||
link: `/templates/mosaico/${data[0]}/share`
|
||||
});
|
||||
}
|
||||
|
@ -119,10 +120,10 @@ export default class List extends Component {
|
|||
{tableRestActionDialogRender(this)}
|
||||
{this.state.createPermitted &&
|
||||
<Toolbar>
|
||||
<DropdownMenu className="btn-primary" label={t('createMosaicoTemplate')}>
|
||||
<MenuLink to="/templates/mosaico/create">{t('blank')}</MenuLink>
|
||||
<MenuLink to="/templates/mosaico/create/versafix">{t('versafixOne')}</MenuLink>
|
||||
</DropdownMenu>
|
||||
<ButtonDropdown buttonClassName="btn-primary" menuClassName="dropdown-menu-right" label={t('createMosaicoTemplate')}>
|
||||
<ButtonDropdownLink to="/templates/mosaico/create">{t('blank')}</ButtonDropdownLink>
|
||||
<ButtonDropdownLink to="/templates/mosaico/create/versafix">{t('versafixOne')}</ButtonDropdownLink>
|
||||
</ButtonDropdown>
|
||||
</Toolbar>
|
||||
}
|
||||
|
||||
|
|
|
@ -249,7 +249,7 @@ export default class CUD extends Component {
|
|||
|
||||
<ButtonRow>
|
||||
<Button type="submit" className="btn-primary" icon="check" label={t('save')}/>
|
||||
{canDelete && <NavButton className="btn-danger" icon="remove" label={t('deleteUser')} linkTo={`/users/${this.props.entity.id}/delete`}/>}
|
||||
{canDelete && <NavButton className="btn-danger" icon="trash-alt" label={t('deleteUser')} linkTo={`/users/${this.props.entity.id}/delete`}/>}
|
||||
</ButtonRow>
|
||||
</Form>
|
||||
</div>
|
||||
|
|
|
@ -60,7 +60,7 @@ export default class List extends Component {
|
|||
});
|
||||
|
||||
actions.push({
|
||||
label: <Icon icon="share" title={t('share')}/>,
|
||||
label: <Icon icon="share-square" title={t('share')}/>,
|
||||
link: `/users/${data[0]}/shares`
|
||||
});
|
||||
|
||||
|
|
|
@ -1,196 +0,0 @@
|
|||
// Variables
|
||||
// Syntax: <control>-(<sub control>)-<bg|border|text>-(<state>)-(<extra>);
|
||||
// Example: @btn-primary-bg-hover-hlight;
|
||||
|
||||
@prefix: mce;
|
||||
|
||||
// Default font
|
||||
@font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
@font-size: 14px;
|
||||
@line-height: 20px;
|
||||
@has-gradients: false;
|
||||
@has-radius: true;
|
||||
@has-boxshadow: false;
|
||||
@has-button-borders: true;
|
||||
|
||||
// Text colors
|
||||
@text: #333333;
|
||||
@text-inverse: #ffffff;
|
||||
@text-disabled: #aaaaaa;
|
||||
@text-shadow: 0 1px 1px hsla(hue(@text-inverse), saturation(@text-inverse), lightness(@text-inverse), 0.75);
|
||||
@text-error: #aa0000;
|
||||
|
||||
// Button
|
||||
@btn-text: #ffffff;
|
||||
@btn-text-shadow: #333332;
|
||||
@btn-border-top: rgba(0,0,0,0.1);
|
||||
@btn-border-right: rgba(0,0,0,0.1);
|
||||
@btn-border-bottom: rgba(0,0,0,0.25);
|
||||
@btn-border-left: rgba(0,0,0,0.25);
|
||||
@btn-caret-border: @btn-text;
|
||||
@btn-text-disabled: @text-disabled;
|
||||
@btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
|
||||
@btn-box-shadow-active: inset 0 2px 4px rgba(0, 0, 0, .15), 0 1px 2px rgba(0, 0, 0, .05);
|
||||
@btn-box-disabled-opacity: 0.4;
|
||||
@btn-bg: #333332;
|
||||
@btn-bg-hlight: #333332;
|
||||
@btn-bg-hover: darken(@btn-bg, 5%);
|
||||
@btn-bg-hlight-hover: darken(@btn-bg-hlight, 5%);
|
||||
@btn-border-hover: darken(@btn-bg, 20%);
|
||||
@btn-border-active: darken(@btn-bg, 20%);
|
||||
@btn-padding: 4px 8px;
|
||||
|
||||
@btn-primary-bg: #333332;
|
||||
@btn-primary-bg-hlight: #333332;
|
||||
@btn-primary-bg-hover: darken(@btn-primary-bg, 5%);
|
||||
@btn-primary-bg-hover-hlight: darken(@btn-primary-bg-hlight, 5%);
|
||||
@btn-primary-text: #ffffff;
|
||||
@btn-primary-text-shadow: #333333;
|
||||
@btn-primary-border-top: mix(@btn-border-top, @btn-primary-bg, 50%);
|
||||
@btn-primary-border-right: mix(@btn-border-right, @btn-primary-bg, 50%);
|
||||
@btn-primary-border-bottom: mix(@btn-border-bottom, @btn-primary-bg, 50%);
|
||||
@btn-primary-border-left: mix(@btn-border-left, @btn-primary-bg, 50%);
|
||||
@btn-primary-border: transparent;
|
||||
@btn-primary-border-hover: transparent;
|
||||
|
||||
// Button group
|
||||
@btn-group-border-width: 1px;
|
||||
|
||||
// Menu
|
||||
@menuitem-text: #333333;
|
||||
@menu-bg: #ffffff;
|
||||
@menu-margin: -1px 0 0;
|
||||
@menu-border: rgba(0,0,0,0.2);
|
||||
@menubar-border: mix(@panel-border, @panel-bg, 60%);
|
||||
@menuitem-text-inverse: #ffffff;
|
||||
@menubar-bg-active: darken(@btn-bg, 10%);
|
||||
@menuitem-bg-hover: #0081C2;
|
||||
@menuitem-bg-selected: #333332;
|
||||
@menuitem-bg-selected-hlight: #333332;
|
||||
@menuitem-bg-disabled: #CCC;
|
||||
@menuitem-caret: @menuitem-text;
|
||||
@menuitem-caret-selected: @menuitem-text-inverse;
|
||||
@menuitem-separator-top: #cbcbcb;
|
||||
@menuitem-separator-bottom: #ffffff;
|
||||
@menuitem-bg-active: #666666;
|
||||
@menuitem-text-active: #ffffff;
|
||||
@menuitem-preview-border-active: #aaaaaa;
|
||||
@menubar-menubtn-text: ;
|
||||
|
||||
// Panel
|
||||
@panel-border: #9e9e9e;
|
||||
@panel-bg: #f1eee6;
|
||||
@panel-bg-hlight: #f1eee6;
|
||||
|
||||
// Tabs
|
||||
@tab-border: #c5c5c5;
|
||||
@tab-bg: #e3e3e3;
|
||||
@tab-bg-hover: #fdfdfd;
|
||||
@tab-bg-active: #fdfdfd;
|
||||
@tabs-bg: #ffffff;
|
||||
|
||||
// Tooltip
|
||||
@tooltip-bg: #000;
|
||||
@tooltip-text: white;
|
||||
@tooltip-font-size: 11px;
|
||||
|
||||
// Notification
|
||||
@notification-font-size: 14px;
|
||||
@notification-bg: #f0f0f0;
|
||||
@notification-border: #cccccc;
|
||||
@notification-text: #333333;
|
||||
@notification-success-bg: #dff0d8;
|
||||
@notification-success-border: #d6e9c6;
|
||||
@notification-success-text: #3c763d;
|
||||
@notification-info-bg: #d9edf7;
|
||||
@notification-info-border: #779ecb;
|
||||
@notification-info-text: #31708f;
|
||||
@notification-warning-bg: #fcf8e3;
|
||||
@notification-warning-border: #faebcc;
|
||||
@notification-warning-text: #8a6d3b;
|
||||
@notification-error-bg: #f2dede;
|
||||
@notification-error-border: #ebccd1;
|
||||
@notification-error-text: #a94442;
|
||||
|
||||
// Window
|
||||
@window-border: #c4c4c4;
|
||||
@window-head-border: @window-border;
|
||||
@window-head-close: mix(@text, @window-bg, 60%);
|
||||
@window-head-close-hover: mix(@text, @window-bg, 40%);
|
||||
@window-foot-border: @window-border;
|
||||
@window-foot-bg: @window-bg;
|
||||
@window-fullscreen-bg: #FFF;
|
||||
@window-modalblock-bg: #000;
|
||||
@window-modalblock-opacity: 0.3;
|
||||
@window-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
|
||||
@window-bg: #ffffff;
|
||||
@window-title-font-size: 20px;
|
||||
|
||||
// Popover
|
||||
@popover-bg: @window-bg;
|
||||
@popover-arrow-width: 10px;
|
||||
@popover-arrow: @window-bg;
|
||||
@popover-arrow-outer-width: @popover-arrow-width + 1;
|
||||
@popover-arrow-outer: rgba(0, 0, 0, 0.25);
|
||||
|
||||
// Floatpanel
|
||||
@floatpanel-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
|
||||
|
||||
// Checkbox
|
||||
@checkbox-bg: @btn-bg;
|
||||
@checkbox-bg-hlight: @btn-bg-hlight;
|
||||
@checkbox-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
|
||||
@checkbox-border: #c5c5c5;
|
||||
@checkbox-border-focus: #59a5e1;
|
||||
|
||||
// Path
|
||||
@path-text: @text;
|
||||
@path-bg-focus: #666;
|
||||
@path-text-focus: #fff;
|
||||
|
||||
// Textbox
|
||||
@textbox-text-placeholder: #aaa;
|
||||
@textbox-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||
@textbox-bg: #ffffff;
|
||||
@textbox-border: #c5c5c5;
|
||||
@textbox-border-focus: #59a5e1;
|
||||
|
||||
// Selectbox
|
||||
@selectbox-bg: @textbox-bg;
|
||||
@selectbox-border: @textbox-border;
|
||||
|
||||
// Throbber
|
||||
@throbber-bg: #fff url('img/loader.gif') no-repeat center center;
|
||||
|
||||
// Combobox
|
||||
@combobox-border: @textbox-border;
|
||||
|
||||
// Colorpicker
|
||||
@colorpicker-border: @textbox-border;
|
||||
@colorpicker-hue-bg: #fff;
|
||||
@colorpicker-hue-border: #333;
|
||||
|
||||
// Grid
|
||||
@grid-bg-active: @menuitem-bg-active;
|
||||
@grid-border-active: #a1a1a1;
|
||||
@grid-border: #d6d6d6;
|
||||
|
||||
// Misc
|
||||
@colorbtn-backcolor-bg: #bbbbbb;
|
||||
@iframe-border: @panel-border;
|
||||
|
||||
// Slider
|
||||
@slider-border: #aaaaaa;
|
||||
@slider-bg: #eeeeee;
|
||||
@slider-handle-border: #bbbbbb;
|
||||
@slider-handle-bg: #dddddd;
|
||||
|
||||
// Progress
|
||||
@progress-border: #cccccc;
|
||||
@progress-bar-bg: #dfdfdf;
|
||||
@progress-bar-bg-hlight: #cccccc;
|
||||
@progress-text: #333333;
|
||||
@progress-text-shadow: #ffffff;
|
||||
|
||||
// Flow layout
|
||||
@flow-layout-spacing: 2px;
|
|
@ -12,9 +12,13 @@
|
|||
|
||||
<title>Mailtrain</title>
|
||||
|
||||
<link rel="stylesheet" href="{{publicPath}}static/bootstrap/themes/united.min.css">
|
||||
<link rel="stylesheet" href="{{publicPath}}mailtrain/mailtrain.css">
|
||||
|
||||
<script src="{{publicPath}}static/jquery-3.3.1.min.js"></script>
|
||||
<script src="{{publicPath}}static/bootstrap/js/bootstrap.min.js"></script>
|
||||
|
||||
<script src="{{publicPath}}static-npm/popper.min.js"></script>
|
||||
<script src="{{publicPath}}static-npm/bootstrap.min.js"></script>
|
||||
<script src="{{publicPath}}static-npm/coreui.min.js"></script>
|
||||
|
||||
{{#if mailtrainConfig}}
|
||||
<script>
|
||||
|
|
|
@ -12,9 +12,13 @@
|
|||
|
||||
<title>Mailtrain</title>
|
||||
|
||||
<link rel="stylesheet" href="{{publicPath}}static/bootstrap/themes/united.min.css">
|
||||
<link rel="stylesheet" href="{{publicPath}}mailtrain/mailtrain.css">
|
||||
|
||||
<script src="{{publicPath}}static/jquery-3.3.1.min.js"></script>
|
||||
<script src="{{publicPath}}static/bootstrap/js/bootstrap.min.js"></script>
|
||||
|
||||
<script src="{{publicPath}}static-npm/popper.min.js"></script>
|
||||
<script src="{{publicPath}}static-npm/bootstrap.min.js"></script>
|
||||
<script src="{{publicPath}}static-npm/coreui.min.js"></script>
|
||||
|
||||
{{#if mailtrainConfig}}
|
||||
<script>
|
||||
|
|
Loading…
Reference in a new issue