Merge pull request #3426 from weaveworks/upgrade-to-font-awesome-5-again

Upgrade to font-awesome 5
This commit is contained in:
Simon
2018-11-15 10:15:29 +01:00
committed by GitHub
35 changed files with 98 additions and 108 deletions
+1
View File
@@ -1,5 +1,6 @@
node_modules
build/
build-external/
coverage/
test/*png
weave-scope.tgz
+1 -2
View File
@@ -7,13 +7,12 @@ const NodesError = ({
const className = classnames(mainClassName, {
hide: hidden
});
const iconClassName = `fa ${faIconClass}`;
return (
<div className={className}>
<div className="nodes-chart-error-icon-container">
<div className="nodes-chart-error-icon">
<span className={iconClassName} />
<span className={faIconClass} />
</div>
</div>
{children}
+4 -4
View File
@@ -74,10 +74,10 @@ class Footer extends React.Component {
className="footer-icon"
onClick={this.handleRelayoutClick}
title={forceRelayoutTitle}>
<span className="fa fa-refresh" />
<i className="fa fa-sync" />
</button>
<button onClick={this.handleContrastClick} className="footer-icon" title={otherContrastModeTitle}>
<span className="fa fa-adjust" />
<i className="fa fa-adjust" />
</button>
<button
onClick={this.props.toggleTroubleshootingMenu}
@@ -85,10 +85,10 @@ class Footer extends React.Component {
title="Open troubleshooting menu"
href=""
>
<span className="fa fa-bug" />
<i className="fa fa-bug" />
</button>
<button className="footer-icon" onClick={this.props.toggleHelp} title="Show help">
<span className="fa fa-question" />
<i className="fa fa-question" />
</button>
</div>
+2 -2
View File
@@ -172,9 +172,9 @@ function HelpPanel({
{renderFieldsPanel(currentTopologyName, searchableFields)}
</div>
<div className="help-panel-tools">
<span
<i
title="Close details"
className="fa fa-close"
className="fa fa-times"
onClick={onClickClose}
/>
</div>
+1 -1
View File
@@ -48,7 +48,7 @@ export class Loading extends React.Component {
const { itemType, show } = this.props;
const message = renderTemplate(itemType, this.state.template);
return (
<NodesError mainClassName="nodes-chart-loading" faIconClass="fa-circle-thin" hidden={!show}>
<NodesError mainClassName="nodes-chart-loading" faIconClass="far fa-circle" hidden={!show}>
<div className="heading">{message}</div>
</NodesError>
);
@@ -58,7 +58,7 @@ class MetricSelectorItem extends React.Component {
onMouseOver={this.onMouseOver}
onClick={this.onMouseClick}>
{type}
{isPinned && <span className="fa fa-thumb-tack" />}
{isPinned && <i className="fa fa-thumbtack" />}
</div>
);
}
@@ -49,7 +49,7 @@ class NetworkSelectorItem extends React.Component {
onClick={this.onMouseClick}
style={style}>
{network.get('label')}
{isPinned && <span className="fa fa-thumb-tack" />}
{isPinned && <i className="fa fa-thumbtack" />}
</div>
);
}
@@ -57,16 +57,16 @@ class NodeDetails extends React.Component {
<div className="node-details-tools-wrapper">
<div className="node-details-tools">
{showSwitchTopology &&
<span
<i
title={topologyTitle}
className="fa fa-long-arrow-left"
className="fa fa-long-arrow-alt-left"
onClick={this.handleShowTopologyForNode}>
<span>Show in <span>{this.props.topologyId.replace(/-/g, ' ')}</span></span>
</span>
</i>
}
<span
<i
title="Close details"
className="fa fa-close close-details"
className="fa fa-times close-details"
onClick={this.handleClickClose}
/>
</div>
@@ -80,7 +80,7 @@ class NodeDetails extends React.Component {
// NOTE: If we start the fa-spin animation before the node details panel has been
// mounted, the spinner is displayed blurred the whole time in Chrome (possibly
// caused by a bug having to do with animating the details panel).
const spinnerClassName = classNames('fa fa-circle-o-notch', { 'fa-spin': this.props.mounted });
const spinnerClassName = classNames('fa fa-circle-notch', { 'fa-spin': this.props.mounted });
const nodeColor = (node ?
getNodeColorDark(node.get('rank'), label, node.get('pseudo')) :
getNeutralColor());
@@ -1,5 +1,6 @@
import React from 'react';
import { connect } from 'react-redux';
import classNames from 'classnames';
import { trackAnalyticsEvent } from '../../utils/tracking-utils';
import { doControl } from '../../actions/app-actions';
@@ -11,12 +12,14 @@ class NodeDetailsControlButton extends React.Component {
}
render() {
let className = `tour-step-anchor node-control-button fa ${this.props.control.icon}`;
if (this.props.pending) {
className += ' node-control-button-pending';
}
const { icon, human } = this.props.control;
const className = classNames('tour-step-anchor node-control-button', icon, {
'node-control-button-pending': this.props.pending,
// Old Agent / plugins don't include the 'fa ' prefix, so provide it if they don't.
fa: icon.startsWith('fa-')
});
return (
<span className={className} title={this.props.control.human} onClick={this.handleClick} />
<i className={className} title={human} onClick={this.handleClick} />
);
}
@@ -6,7 +6,7 @@ import NodeDetailsControlButton from './node-details-control-button';
export default function NodeDetailsControls({
controls, error, nodeId, pending
}) {
let spinnerClassName = 'fa fa-circle-o-notch fa-spin';
let spinnerClassName = 'fa fa-circle-notch fa-spin';
if (pending) {
spinnerClassName += ' node-details-controls-spinner';
} else {
@@ -17,7 +17,7 @@ export default function NodeDetailsControls({
<div className="node-details-controls">
{error &&
<div className="node-details-controls-error" title={error}>
<span className="node-details-controls-error-icon fa fa-warning" />
<i className="node-details-controls-error-icon fa fa-exclamation-triangle" />
<span className="node-details-controls-error-messages">{error}</span>
</div>
}
@@ -41,9 +41,9 @@ export default class NodeDetailsTableHeaders extends React.Component {
<td className={headerClasses.join(' ')} style={style} title={header.label} key={header.id}>
<div className="node-details-table-header-sortable" onClick={onClick}>
{isSortedAsc
&& <span className="node-details-table-header-sorter fa fa-caret-up" />}
&& <i className="node-details-table-header-sorter fa fa-caret-up" />}
{isSortedDesc
&& <span className="node-details-table-header-sorter fa fa-caret-down" />}
&& <i className="node-details-table-header-sorter fa fa-caret-down" />}
{label}
</div>
</td>
+1 -1
View File
@@ -42,7 +42,7 @@ class Nodes extends React.Component {
const { topologyNodeCountZero, nodesDisplayEmpty } = this.props;
return (
<NodesError faIconClass="fa-circle-thin" hidden={!nodesDisplayEmpty}>
<NodesError faIconClass="far fa-circle" hidden={!nodesDisplayEmpty}>
<div className="heading">Nothing to show. This can have any of these reasons:</div>
{topologyNodeCountZero ?
renderCauses(NODES_STATS_COUNT_ZERO_CAUSES) :
+1 -1
View File
@@ -17,7 +17,7 @@ const Plugin = ({
<span className="plugins-plugin" key={id}>
<Tooltip tip={tip}>
<span className={className}>
{error && <span className="plugins-plugin-icon fa fa-exclamation-circle" />}
{error && <i className="plugins-plugin-icon fa fa-exclamation-circle" />}
{label || id}
</span>
</Tooltip>
+1 -1
View File
@@ -38,7 +38,7 @@ class Status extends React.Component {
return (
<div className={classNames}>
{showWarningIcon && <span className="status-icon fa fa-exclamation-circle" />}
{showWarningIcon && <i className="status-icon fa fa-exclamation-circle" />}
<span className="status-label" title={title}>{text}</span>
</div>
);
+3 -3
View File
@@ -267,9 +267,9 @@ class Terminal extends React.Component {
onClick={this.handlePopoutTerminal}>
Pop out
</span>
<span
<i
title="Close"
className="terminal-header-tools-item-icon fa fa-close"
className="terminal-header-tools-item-icon fa fa-times"
onClick={this.handleCloseClick} />
</div>
{this.getControlStatusIcon()}
@@ -330,7 +330,7 @@ class Terminal extends React.Component {
getControlStatusIcon() {
const icon = this.props.controlStatus && this.props.controlStatus.get('control').icon;
return (
<span
<i
style={{marginRight: '8px', width: '14px'}}
className={classNames('fa', {[icon]: icon})}
/>
@@ -51,7 +51,7 @@ class TimeControl extends React.Component {
onClick={this.handleNowClick}
disabled={!topologiesLoaded}
title="Show live state of the system">
{!isPaused && <span className="fa fa-play" />}
{!isPaused && <i className="fa fa-play" />}
<span className="label">Live</span>
</span>
<span
@@ -59,7 +59,7 @@ class TimeControl extends React.Component {
onClick={this.handlePauseClick}
disabled={!topologiesLoaded}
title="Pause updates (freezes the nodes in their current layout)">
{isPaused && <span className="fa fa-pause" />}
{isPaused && <i className="fa fa-pause" />}
<span className="label">{isPaused ? 'Paused' : 'Pause'}</span>
</span>
</div>
@@ -36,7 +36,7 @@ class DebugMenu extends React.Component {
download
title="Save raw data as JSON"
>
<span className="fa fa-code" />
<i className="fa fa-code" />
<span className="description">
Save raw data as JSON
</span>
@@ -48,7 +48,7 @@ class DebugMenu extends React.Component {
onClick={this.props.clickDownloadGraph}
title="Save canvas as SVG (does not include search highlighting)"
>
<span className="fa fa-download" />
<i className="fa fa-download" />
<span className="description">
Save canvas as SVG (does not include search highlighting)
</span>
@@ -60,7 +60,7 @@ class DebugMenu extends React.Component {
title="Reset view state"
onClick={this.handleClickReset}
>
<span className="fa fa-undo" />
<i className="fa fa-undo" />
<span className="description">Reset your local view state and reload the page</span>
</button>
</div>
@@ -72,14 +72,14 @@ class DebugMenu extends React.Component {
target="_blank"
rel="noopener noreferrer"
>
<span className="fa fa-bug" />
<i className="fa fa-bug" />
<span className="description">Report a bug</span>
</a>
</div>
<div className="help-panel-tools">
<span
<i
title="Close menu"
className="fa fa-close"
className="fa fa-times"
onClick={this.props.toggleTroubleshootingMenu}
/>
</div>
@@ -35,7 +35,7 @@ class ViewModeButton extends React.Component {
disabled={disabled}
onClick={!disabled ? this.handleClick : undefined}
title={`View ${label.toLowerCase()}`}>
<span className={this.props.icons} style={{ fontSize: 12 }} />
<i className={this.props.icons} />
<span className="label">{label}</span>
</div>
);
@@ -41,7 +41,7 @@ class ViewModeSelector extends React.Component {
/>
<ViewModeButton
label="Resources"
icons="fa fa-bar-chart"
icons="fa fa-chart-bar"
viewMode={RESOURCE_VIEW_MODE}
onClick={this.props.setResourceView}
disabled={!this.props.hasResourceView}
+1 -1
View File
@@ -27,7 +27,7 @@ class Warning extends React.Component {
return (
<div className={className} onClick={this.handleClick}>
<div className="warning-wrapper">
<span className="warning-icon fa fa-warning" title={text} />
<i className="warning-icon fa fa-exclamation-triangle" title={text} />
{expanded && <span className="warning-text">{text}</span>}
</div>
</div>
@@ -57,11 +57,11 @@ export default class ZoomControl extends React.Component {
return (
<div className="zoom-control">
<button className="zoom-in" onClick={this.handleZoomIn}>
<span className="fa fa-plus" />
<i className="fa fa-plus" />
</button>
<Slider value={value} max={1} step={SLIDER_STEP} vertical onChange={this.handleChange} />
<button className="zoom-out" onClick={this.handleZoomOut}>
<span className="fa fa-minus" />
<i className="fa fa-minus" />
</button>
</div>
);
+15 -26
View File
@@ -1,4 +1,5 @@
@import '~font-awesome/scss/font-awesome.scss';
@import '~@fortawesome/fontawesome-free/css/all.css';
@import '~@fortawesome/fontawesome-free/css/v4-shims.css';
@import '~rc-slider/dist/rc-slider.css';
/* sass-lint:disable variable-for-property */
@@ -121,8 +122,8 @@ a {
padding: 1px 3px;
outline: 0;
.fa {
font-size: $font-size-normal;
i {
font-size: $font-size-small;
position: relative;
top: 2px;
}
@@ -544,7 +545,7 @@ a {
z-index: $layer-front;
}
> span {
> i {
@extend .btn-opacity;
padding: 4px 5px;
margin-left: 2px;
@@ -634,6 +635,7 @@ a {
&-controls {
white-space: nowrap;
padding: 8px 0;
font-size: $font-size-small;
&-wrapper {
padding: 0 36px 0 32px;
@@ -736,10 +738,6 @@ a {
&-label {
color: $text-secondary-color;
font-size: $font-size-small;
.fa {
margin-left: 0.5em;
}
}
&-sparkline {
@@ -930,16 +928,6 @@ a {
font-size: $font-size-small;
color: $text-secondary-color;
}
&-value-sparkline {
> div {
display: inline-block;
}
span {
margin-left: 1em;
}
}
}
}
}
@@ -997,7 +985,7 @@ a {
@extend .btn-opacity;
padding: 6px;
margin-left: 2px;
font-size: $font-size-normal;
font-size: $font-size-small;
color: $text-secondary-color;
cursor: pointer;
border: 1px solid transparent;
@@ -1231,7 +1219,8 @@ a {
margin-bottom: 0;
}
.fa {
i {
font-size: $font-size-tiny;
margin-left: 4px;
color: $color-orange-500;
}
@@ -1317,9 +1306,9 @@ a {
margin-right: 15px;
margin-top: 3px;
.fa {
i {
color: $text-secondary-color;
font-size: $font-size-large;
font-size: $font-size-normal;
}
}
@@ -1345,7 +1334,7 @@ a {
.view-mode-selector-wrapper, .time-control-wrapper {
.label { margin-left: 4px; }
.fa {
i {
margin-left: 0;
color: $text-secondary-color;
}
@@ -1462,7 +1451,7 @@ a {
top: 6px;
right: 8px;
span {
i {
@extend .btn-opacity;
padding: 4px 5px;
margin-left: 2px;
@@ -1777,13 +1766,13 @@ a {
}
}
.fa {
i {
width: 20px;
text-align: center;
margin-right: 10px;
}
.fa-close {
.fa.fa-times {
width: 25px;
}
}
-2
View File
@@ -1,5 +1,3 @@
$fa-font-path: "~font-awesome/fonts";
$base-ease: ease-in-out;
$background-color: $color-gray-50;
+2 -2
View File
@@ -22,7 +22,6 @@
"debug": "3.1.0",
"filesize": "3.5.11",
"filter-invalid-dom-props": "2.0.0",
"font-awesome": "4.7.0",
"immutable": "3.8.2",
"json-stable-stringify": "1.0.1",
"lcp": "1.1.0",
@@ -44,11 +43,12 @@
"reselect": "3.0.1",
"reselect-map": "1.0.3",
"styled-components": "2.2.4",
"weaveworks-ui-components": "0.12.3",
"weaveworks-ui-components": "0.15.1",
"whatwg-fetch": "2.0.3",
"xterm": "3.3.0"
},
"devDependencies": {
"@fortawesome/fontawesome-free": "^5.5.0",
"autoprefixer": "7.1.5",
"babel-cli": "6.26.0",
"babel-core": "6.26.0",
+1 -1
View File
@@ -29,7 +29,7 @@ function selectNode(browser) {
function deselectNode(browser) {
debug('deselect node');
return browser.elementByCssSelector('.fa-close', function(err, el) {
return browser.elementByCssSelector('.fa-times', function(err, el) {
return el.click();
});
}
-1
View File
@@ -137,7 +137,6 @@ module.exports = {
data: themeVarsAsScss(),
includePaths: [
path.resolve(__dirname, './node_modules/xterm'),
path.resolve(__dirname, './node_modules/font-awesome'),
path.resolve(__dirname, './node_modules/rc-slider'),
]
}
-1
View File
@@ -137,7 +137,6 @@ module.exports = {
data: themeVarsAsScss(),
includePaths: [
path.resolve(__dirname, './node_modules/xterm'),
path.resolve(__dirname, './node_modules/font-awesome'),
path.resolve(__dirname, './node_modules/rc-slider'),
]
}
+9 -7
View File
@@ -182,6 +182,11 @@
lodash "^4.2.0"
to-fast-properties "^2.0.0"
"@fortawesome/fontawesome-free@^5.5.0":
version "5.5.0"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.5.0.tgz#0c6c53823d04457ae669cd19567b8a21dbb4fcfd"
integrity sha512-p4lu0jfj5QN013ddArh99r3OXZ/fp9rbovs62LfaO70OMBsAXxtNd0lAq/97fitrscR0fqfd+/a5KNcp6Sh/0A==
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
@@ -3319,10 +3324,6 @@ flatten@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
font-awesome@4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
for-in@^0.1.3:
version "0.1.8"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
@@ -8409,9 +8410,10 @@ wd@^0.4.0:
underscore.string "~3.0.3"
vargs "~0.1.0"
weaveworks-ui-components@0.12.3:
version "0.12.3"
resolved "https://registry.yarnpkg.com/weaveworks-ui-components/-/weaveworks-ui-components-0.12.3.tgz#339e4cdf95c45d98aba6fad7b0770c91d239f088"
weaveworks-ui-components@0.15.1:
version "0.15.1"
resolved "https://registry.yarnpkg.com/weaveworks-ui-components/-/weaveworks-ui-components-0.15.1.tgz#cc7ee433815c03fa95e404fe1ce84415f99aa6cf"
integrity sha512-CijoKCmo/fzCs8umaO4dF9fOosx0zyh7OF63Ki3pV9fRtNm+5BWet/G8nYrZuiwY5qQSZNcHKLydaeLxTUlJZg==
dependencies:
classnames "2.2.5"
d3-drag "1.2.1"
+2 -2
View File
@@ -158,13 +158,13 @@ two controls (`ctrl-one` and `ctrl-two`) and two nodes, each with a different co
"ctrl-one": {
"id": "ctrl-one",
"human": "Ctrl One",
"icon": "fa-futbol-o",
"icon": "far fa-futbol",
"rank": 1
},
"ctrl-two": {
"id": "ctrl-two",
"human": "Ctrl Two",
"icon": "fa-beer",
"icon": "fa fa-beer",
"rank": 2
}
},
+2 -2
View File
@@ -213,13 +213,13 @@ func (Reporter) Report() (report.Report, error) {
{
ID: ScaleDown,
Human: "Scale down",
Icon: "fa-minus",
Icon: "fa fa-minus",
Rank: 0,
},
{
ID: ScaleUp,
Human: "Scale up",
Icon: "fa-plus",
Icon: "fa fa-plus",
Rank: 1,
},
})
+8 -8
View File
@@ -93,49 +93,49 @@ var (
{
ID: AttachContainer,
Human: "Attach",
Icon: "fa-desktop",
Icon: "fa fa-desktop",
Rank: 1,
},
{
ID: ExecContainer,
Human: "Exec shell",
Icon: "fa-terminal",
Icon: "fa fa-terminal",
Rank: 2,
},
{
ID: StartContainer,
Human: "Start",
Icon: "fa-play",
Icon: "fa fa-play",
Rank: 3,
},
{
ID: RestartContainer,
Human: "Restart",
Icon: "fa-repeat",
Icon: "fa fa-redo",
Rank: 4,
},
{
ID: PauseContainer,
Human: "Pause",
Icon: "fa-pause",
Icon: "fa fa-pause",
Rank: 5,
},
{
ID: UnpauseContainer,
Human: "Unpause",
Icon: "fa-play",
Icon: "fa fa-play",
Rank: 6,
},
{
ID: StopContainer,
Human: "Stop",
Icon: "fa-stop",
Icon: "fa fa-stop",
Rank: 7,
},
{
ID: RemoveContainer,
Human: "Remove",
Icon: "fa-trash-o",
Icon: "far fa-trash-alt",
Rank: 8,
},
}
+1 -1
View File
@@ -144,7 +144,7 @@ func (r *Reporter) Report() (report.Report, error) {
rep.Host.Controls.AddControl(report.Control{
ID: ExecHost,
Human: "Exec shell",
Icon: "fa-terminal",
Icon: "fa fa-terminal",
})
return rep, nil
+7 -7
View File
@@ -160,13 +160,13 @@ var (
{
ID: ScaleDown,
Human: "Scale down",
Icon: "fa-minus",
Icon: "fa fa-minus",
Rank: 0,
},
{
ID: ScaleUp,
Human: "Scale up",
Icon: "fa-plus",
Icon: "fa fa-plus",
Rank: 1,
},
}
@@ -480,7 +480,7 @@ func (r *Reporter) persistentVolumeClaimTopology() (report.Topology, []Persisten
result.Controls.AddControl(report.Control{
ID: CreateVolumeSnapshot,
Human: "Create snapshot",
Icon: "fa-camera",
Icon: "fa fa-camera",
Rank: 0,
})
err := r.client.WalkPersistentVolumeClaims(func(p PersistentVolumeClaim) error {
@@ -512,13 +512,13 @@ func (r *Reporter) volumeSnapshotTopology() (report.Topology, []VolumeSnapshot,
result.Controls.AddControl(report.Control{
ID: CloneVolumeSnapshot,
Human: "Clone snapshot",
Icon: "fa-clone",
Icon: "far fa-clone",
Rank: 0,
})
result.Controls.AddControl(report.Control{
ID: DeleteVolumeSnapshot,
Human: "Delete",
Icon: "fa-trash-o",
Icon: "far fa-trash-alt",
Rank: 1,
})
err := r.client.WalkVolumeSnapshots(func(p VolumeSnapshot) error {
@@ -568,13 +568,13 @@ func (r *Reporter) podTopology(services []Service, deployments []Deployment, dae
pods.Controls.AddControl(report.Control{
ID: GetLogs,
Human: "Get logs",
Icon: "fa-desktop",
Icon: "fa fa-desktop",
Rank: 0,
})
pods.Controls.AddControl(report.Control{
ID: DeletePod,
Human: "Delete",
Icon: "fa-trash-o",
Icon: "far fa-trash-alt",
Rank: 1,
})
for _, service := range services {
+1 -1
View File
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -156,13 +156,13 @@ two controls (`ctrl-one` and `ctrl-two`) and two nodes, each with a different co
"ctrl-one": {
"id": "ctrl-one",
"human": "Ctrl One",
"icon": "fa-futbol-o",
"icon": "far fa-futbol",
"rank": 1
},
"ctrl-two": {
"id": "ctrl-two",
"human": "Ctrl Two",
"icon": "fa-beer",
"icon": "fa fa-beer",
"rank": 2
}
},