2011-01-25 20:31:40 +01:00
|
|
|
/**
|
|
|
|
* @provides aphront-table-view-css
|
|
|
|
*/
|
|
|
|
|
2016-04-04 21:37:32 +02:00
|
|
|
.aphront-table-wrap {
|
2013-01-22 23:46:40 +01:00
|
|
|
overflow-x: auto;
|
Mobile layouts for Diffusion
Summary: Implements a new mobile view thats more fullscreen, not boxed, so more space. Fixes issues with mobile tables when scrolling overflowed content.
Test Plan: Test home, branch, tags, code, file browse, graph, compare, history, readme, open revisions, owners.
Reviewers: epriestley
Reviewed By: epriestley
Spies: Korvin
Differential Revision: https://secure.phabricator.com/D18505
2017-08-30 21:00:07 +02:00
|
|
|
-webkit-overflow-scrolling: touch;
|
2013-01-22 23:46:40 +01:00
|
|
|
}
|
|
|
|
|
2011-01-25 20:31:40 +01:00
|
|
|
.aphront-table-view {
|
2013-01-11 20:24:35 +01:00
|
|
|
width: 100%;
|
2011-01-25 20:31:40 +01:00
|
|
|
border-collapse: collapse;
|
2017-07-17 20:08:17 +02:00
|
|
|
background: {$page.content};
|
2014-01-07 20:57:37 +01:00
|
|
|
border: 1px solid {$lightblueborder};
|
|
|
|
border-bottom: 1px solid {$blueborder};
|
2011-01-25 20:31:40 +01:00
|
|
|
}
|
|
|
|
|
2016-02-29 15:26:01 +01:00
|
|
|
.aphront-table-view-fixed {
|
|
|
|
table-layout: fixed;
|
|
|
|
}
|
|
|
|
|
2016-02-29 18:53:46 +01:00
|
|
|
.aphront-table-view-fixed th {
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
|
|
|
|
.aphront-table-notice {
|
[Redesign] Put all ApplicationSearch results in an ObjectBox
Summary:
Ref T8099. In most cases we return either an ObjectList or AphrontTable, and can pretty up the UI in ApplicationSearch. There are a few edge cases, like PeopleUserLog, that can be cleanup up individually in the future, but look fine for now.
Also added 'setNotice' for AphrontTable for a few cases where we want to convey addtional information.
TODO: Seems we always pass a Pager Object, which tries to get displayed, I'll redesign that interaction in the future, probably by passing the Pager to the ObjectBox
Test Plan: Went throught most/all ApplicationSearch panels I could find, even edge cases look better.
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: Korvin, epriestley
Maniphest Tasks: T8099
Differential Revision: https://secure.phabricator.com/D12989
2015-05-24 18:13:58 +02:00
|
|
|
padding: 12px 16px;
|
2015-05-31 17:36:44 +02:00
|
|
|
color: {$darkbluetext};
|
[Redesign] Put all ApplicationSearch results in an ObjectBox
Summary:
Ref T8099. In most cases we return either an ObjectList or AphrontTable, and can pretty up the UI in ApplicationSearch. There are a few edge cases, like PeopleUserLog, that can be cleanup up individually in the future, but look fine for now.
Also added 'setNotice' for AphrontTable for a few cases where we want to convey addtional information.
TODO: Seems we always pass a Pager Object, which tries to get displayed, I'll redesign that interaction in the future, probably by passing the Pager to the ObjectBox
Test Plan: Went throught most/all ApplicationSearch panels I could find, even edge cases look better.
Reviewers: btrahan, epriestley
Reviewed By: epriestley
Subscribers: Korvin, epriestley
Maniphest Tasks: T8099
Differential Revision: https://secure.phabricator.com/D12989
2015-05-24 18:13:58 +02:00
|
|
|
border-bottom: 1px solid {$thinblueborder};
|
|
|
|
}
|
|
|
|
|
2017-04-26 01:40:34 +02:00
|
|
|
.phui-two-column-view .aphront-table-notice .phui-info-view {
|
|
|
|
margin: 0;
|
|
|
|
}
|
|
|
|
|
2011-01-25 20:31:40 +01:00
|
|
|
.aphront-table-view tr.alt {
|
2014-01-07 20:57:37 +01:00
|
|
|
background: {$lightgreybackground};
|
2011-01-25 20:31:40 +01:00
|
|
|
}
|
|
|
|
|
2017-06-07 00:47:47 +02:00
|
|
|
.device-desktop .aphront-table-view tr:hover {
|
|
|
|
background: {$bluebackground};
|
|
|
|
}
|
|
|
|
|
|
|
|
.device-desktop .aphront-table-view tr.no-data:hover {
|
|
|
|
background: inherit;
|
|
|
|
}
|
|
|
|
|
2019-02-08 16:12:39 +01:00
|
|
|
.aphront-table-view th,
|
|
|
|
.aphront-table-view td.header {
|
2011-01-25 20:31:40 +01:00
|
|
|
font-weight: bold;
|
|
|
|
white-space: nowrap;
|
2014-01-07 20:57:37 +01:00
|
|
|
color: {$bluetext};
|
2013-01-11 20:24:35 +01:00
|
|
|
font-weight: bold;
|
2019-02-08 16:12:39 +01:00
|
|
|
text-shadow: 0 1px 0 white;
|
2014-01-07 20:57:37 +01:00
|
|
|
background-color: {$lightbluebackground};
|
2013-01-11 20:24:35 +01:00
|
|
|
}
|
|
|
|
|
2019-10-31 19:59:19 +01:00
|
|
|
.aphront-table-view td.row-divider {
|
|
|
|
background-color: {$bluebackground};
|
|
|
|
font-weight: bold;
|
|
|
|
padding: 8px 12px;
|
|
|
|
}
|
|
|
|
|
2019-10-31 20:26:23 +01:00
|
|
|
.aphront-table-view td.indent {
|
|
|
|
padding-left: 24px;
|
|
|
|
}
|
|
|
|
|
2019-02-08 16:12:39 +01:00
|
|
|
.aphront-table-view th {
|
|
|
|
border-bottom: 1px solid {$thinblueborder};
|
|
|
|
}
|
|
|
|
|
2013-01-11 20:24:35 +01:00
|
|
|
th.aphront-table-view-sortable-selected {
|
2014-01-07 20:57:37 +01:00
|
|
|
background-color: {$greybackground};
|
2011-01-25 20:31:40 +01:00
|
|
|
}
|
|
|
|
|
2012-03-20 03:48:22 +01:00
|
|
|
.aphront-table-view th a,
|
|
|
|
.aphront-table-view th a:hover,
|
|
|
|
.aphront-table-view th a:link {
|
2014-01-07 20:57:37 +01:00
|
|
|
color: {$bluetext};
|
2013-01-11 20:24:35 +01:00
|
|
|
text-shadow: 0 1px 0 white;
|
2012-03-20 03:48:22 +01:00
|
|
|
display: block;
|
|
|
|
text-decoration: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.aphront-table-view th a:hover {
|
2013-01-11 20:24:35 +01:00
|
|
|
text-decoration: underline;
|
2014-01-07 20:57:37 +01:00
|
|
|
color: {$darkbluetext};
|
2012-03-20 03:48:22 +01:00
|
|
|
}
|
|
|
|
|
2011-01-25 20:31:40 +01:00
|
|
|
.aphront-table-view td.header {
|
2013-01-11 20:24:35 +01:00
|
|
|
text-align: right;
|
2019-02-08 16:12:39 +01:00
|
|
|
border-right: 1px solid {$thinblueborder};
|
2011-01-25 20:31:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
.aphront-table-view td {
|
2013-01-11 20:24:35 +01:00
|
|
|
white-space: nowrap;
|
|
|
|
vertical-align: middle;
|
2017-06-07 00:47:47 +02:00
|
|
|
color: {$darkbluetext};
|
2013-01-11 20:24:35 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
.aphront-table-down-sort {
|
|
|
|
display: inline-block;
|
|
|
|
margin-top: 5px;
|
|
|
|
width: 0;
|
|
|
|
height: 0;
|
|
|
|
vertical-align: top;
|
2014-01-07 20:57:37 +01:00
|
|
|
border-top: 4px solid {$bluetext};
|
2013-01-11 20:24:35 +01:00
|
|
|
border-right: 4px solid transparent;
|
|
|
|
border-left: 4px solid transparent;
|
|
|
|
content: "";
|
|
|
|
}
|
|
|
|
|
|
|
|
.aphront-table-up-sort {
|
|
|
|
display: inline-block;
|
|
|
|
margin-top: 5px;
|
|
|
|
width: 0;
|
|
|
|
height: 0;
|
|
|
|
vertical-align: top;
|
2014-01-07 20:57:37 +01:00
|
|
|
border-bottom: 4px solid {$bluetext};
|
2013-01-11 20:24:35 +01:00
|
|
|
border-right: 4px solid transparent;
|
|
|
|
border-left: 4px solid transparent;
|
|
|
|
content: "";
|
2011-01-25 20:31:40 +01:00
|
|
|
}
|
|
|
|
|
2012-12-18 00:16:44 +01:00
|
|
|
/* - Padding -------------------------------------------------------------------
|
|
|
|
|
|
|
|
On desktops, we have more horizontal space and use it to space columns out.
|
|
|
|
|
|
|
|
On devices, we make each row slightly taller to create a larger hit target
|
|
|
|
for links.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
.aphront-table-view th {
|
2015-09-20 04:42:19 +02:00
|
|
|
padding: 8px 10px;
|
2015-03-26 21:16:09 +01:00
|
|
|
}
|
|
|
|
|
2012-12-18 00:16:44 +01:00
|
|
|
.aphront-table-view td {
|
2015-03-26 21:16:09 +01:00
|
|
|
padding: 8px 10px;
|
|
|
|
}
|
|
|
|
|
2012-12-18 00:16:44 +01:00
|
|
|
.device-tablet .aphront-table-view th,
|
|
|
|
.device-phone .aphront-table-view th {
|
|
|
|
overflow: hidden;
|
|
|
|
}
|
|
|
|
|
2012-03-20 03:48:22 +01:00
|
|
|
.aphront-table-view td.sorted-column {
|
2014-01-07 20:57:37 +01:00
|
|
|
background: {$lightbluebackground};
|
2012-03-20 03:48:22 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
.aphront-table-view tr.alt td.sorted-column {
|
2014-01-07 20:57:37 +01:00
|
|
|
background: {$greybackground};
|
2012-03-20 03:48:22 +01:00
|
|
|
}
|
|
|
|
|
2011-01-25 20:31:40 +01:00
|
|
|
.aphront-table-view td.action {
|
|
|
|
padding-top: 1px;
|
|
|
|
padding-bottom: 1px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.aphront-table-view td.larger {
|
2015-06-26 18:33:03 +02:00
|
|
|
font-size: {$biggerfontsize};
|
2011-01-25 20:31:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
.aphront-table-view td.pri {
|
2013-01-11 20:24:35 +01:00
|
|
|
font-weight: bold;
|
2014-03-12 19:39:43 +01:00
|
|
|
color: {$darkbluetext};
|
2011-01-25 20:31:40 +01:00
|
|
|
}
|
|
|
|
|
2015-11-03 14:38:06 +01:00
|
|
|
.aphront-table-view td.top {
|
|
|
|
vertical-align: top;
|
|
|
|
}
|
|
|
|
|
2019-04-11 20:35:34 +02:00
|
|
|
/* Apply this rule to both "<th />" and "<td />" so that the header widths
|
|
|
|
are correct if the table has no rows. */
|
|
|
|
.aphront-table-view th.wide,
|
2011-01-25 20:31:40 +01:00
|
|
|
.aphront-table-view td.wide {
|
2013-01-11 20:24:35 +01:00
|
|
|
white-space: normal;
|
|
|
|
width: 100%;
|
2011-01-25 20:31:40 +01:00
|
|
|
}
|
|
|
|
|
2015-03-26 21:16:09 +01:00
|
|
|
.aphront-table-view th.right,
|
2011-01-25 20:31:40 +01:00
|
|
|
.aphront-table-view td.right {
|
2013-01-11 20:24:35 +01:00
|
|
|
text-align: right;
|
2011-01-25 20:31:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
.aphront-table-view td.mono {
|
2013-01-11 20:24:35 +01:00
|
|
|
font-family: "Monaco", monospace;
|
2015-06-26 18:33:03 +02:00
|
|
|
font-size: {$smallestfontsize};
|
2011-01-25 20:31:40 +01:00
|
|
|
}
|
|
|
|
|
2011-02-02 22:48:52 +01:00
|
|
|
.aphront-table-view td.n {
|
2013-01-11 20:24:35 +01:00
|
|
|
font-family: "Monaco", monospace;
|
2015-06-26 18:33:03 +02:00
|
|
|
font-size: {$smallestfontsize};
|
2013-01-11 20:24:35 +01:00
|
|
|
text-align: right;
|
2011-02-02 22:48:52 +01:00
|
|
|
}
|
|
|
|
|
2015-09-11 04:28:49 +02:00
|
|
|
.aphront-table-view td.nudgeright, .aphront-table-view th.nudgeright {
|
|
|
|
padding-right: 0;
|
|
|
|
}
|
|
|
|
|
2012-08-02 22:58:54 +02:00
|
|
|
.aphront-table-view td.wrap {
|
2017-06-07 00:47:47 +02:00
|
|
|
white-space: normal;
|
2011-02-03 07:38:42 +01:00
|
|
|
}
|
|
|
|
|
2013-07-23 21:30:58 +02:00
|
|
|
.aphront-table-view td.prewrap {
|
|
|
|
font-family: "Monaco", monospace;
|
2015-06-26 18:33:03 +02:00
|
|
|
font-size: {$smallestfontsize};
|
2013-07-23 21:30:58 +02:00
|
|
|
white-space: pre-wrap;
|
|
|
|
}
|
|
|
|
|
2012-08-02 22:58:54 +02:00
|
|
|
.aphront-table-view td.narrow {
|
2014-01-07 20:57:37 +01:00
|
|
|
width: 1px;
|
2012-08-02 22:58:54 +02:00
|
|
|
}
|
|
|
|
|
2014-06-13 18:28:00 +02:00
|
|
|
.aphront-table-view td.icon, .aphront-table-view th.icon {
|
|
|
|
width: 1px;
|
|
|
|
padding: 0px;
|
|
|
|
}
|
|
|
|
|
2017-01-31 00:14:38 +01:00
|
|
|
.aphront-table-view td.icon + td.icon {
|
|
|
|
padding-left: 8px;
|
|
|
|
}
|
2015-09-11 04:28:49 +02:00
|
|
|
|
2011-07-31 17:38:06 +02:00
|
|
|
div.single-display-line-bounds {
|
|
|
|
width: 100%;
|
|
|
|
position: relative;
|
|
|
|
overflow: hidden;
|
|
|
|
}
|
|
|
|
|
|
|
|
span.single-display-line-content {
|
|
|
|
white-space: pre;
|
|
|
|
position: absolute;
|
|
|
|
}
|
|
|
|
|
2014-01-20 20:52:49 +01:00
|
|
|
.device-phone span.single-display-line-content {
|
|
|
|
white-space: nowrap;
|
|
|
|
position: static;
|
|
|
|
}
|
|
|
|
|
2016-09-21 23:41:52 +02:00
|
|
|
.aphront-table-view td.object-link {
|
|
|
|
white-space: nowrap;
|
2017-02-10 19:38:00 +01:00
|
|
|
word-wrap: break-word;
|
|
|
|
overflow: hidden;
|
|
|
|
text-overflow: ellipsis;
|
2019-03-29 01:39:28 +01:00
|
|
|
min-width: 320px;
|
|
|
|
max-width: 320px;
|
2016-09-21 23:41:52 +02:00
|
|
|
}
|
|
|
|
|
2016-07-28 20:45:42 +02:00
|
|
|
.aphront-table-view tr.closed td.object-link .object-name,
|
|
|
|
.aphront-table-view tr.alt-closed td.object-link .object-name {
|
2016-07-01 22:30:42 +02:00
|
|
|
text-decoration: line-through;
|
|
|
|
color: rgba({$alphablack}, 0.5);
|
|
|
|
}
|
|
|
|
|
2016-07-01 21:53:41 +02:00
|
|
|
.aphront-table-view tr.closed td.object-link a,
|
|
|
|
.aphront-table-view tr.alt-closed td.object-link a {
|
|
|
|
color: rgba({$alphablack}, 0.5);
|
|
|
|
}
|
|
|
|
|
|
|
|
.aphront-table-view tr.closed td.graph-status,
|
2016-07-01 21:59:15 +02:00
|
|
|
.aphront-table-view tr.alt-closed td.graph-status,
|
2016-07-01 21:53:41 +02:00
|
|
|
.object-graph-table em {
|
|
|
|
color: {$lightgreytext};
|
|
|
|
}
|
|
|
|
|
2011-07-30 01:01:59 +02:00
|
|
|
.aphront-table-view tr.highlighted {
|
[Redesign] Add Table, Collapse support to ObjectBox
Summary: Converts most all tables to be directly set via `setTable` to an ObjectBox. I think this path is more flexible design wise, as we can change the box based on children, and not just CSS. We also already do this with PropertyList, Forms, ObjectList, and Header. `setCollapsed` is added to ObjectBox to all children objects to bleed to the edges (like diffs).
Test Plan: I did a grep of `appendChild($table)` as well as searches for `PHUIObjectBoxView`, also with manual opening of hundreds of files. I'm sure I missed 5-8 places. If you just appendChild($table) nothing breaks, it just looks a little funny.
Reviewers: epriestley, btrahan
Subscribers: Korvin, epriestley
Differential Revision: https://secure.phabricator.com/D12955
2015-05-20 21:43:34 +02:00
|
|
|
background: #fdf9e4;
|
2011-07-30 01:01:59 +02:00
|
|
|
}
|
|
|
|
|
2011-03-31 09:55:18 +02:00
|
|
|
.aphront-table-view tr.alt-highlighted {
|
2015-05-20 08:14:22 +02:00
|
|
|
background: {$sh-yellowbackground};
|
2011-03-13 01:17:34 +01:00
|
|
|
}
|
|
|
|
|
Convert Owners paths to application transactions
Summary:
Ref T8320. Fixes T8317. Fixes T2831. Fixes T8073. Fixes T7127.
There was a bug with this line:
for ($ii = 0; $ii < count($paths); $ii++) {
...because the array may be sparse if there have been deletes, so `count($paths)` might be 3, but the real keys could be `1`, `5` and `6`. I think this was the primary issue behind T7127.
The old Editor did a lot of work to try to validate paths. When a path failed to validate, it silently discarded it. This was silly and pointless: it's incredibly bad UX; and it's totally fine if users saves "invalid" paths. This was likely the cause of T8317, and probably the cause of T8073.
T2831 I'm less sure about, but I can't reproduce it and I rewrote all the logic so I suspect it's gone.
This also records and shows edits, so if stuff does keep happening it should be more clear what's going on.
I removed some adjacent stuff:
- I removed the ability to delete packages. I'll add "disable" in a future diff, plus `bin/remove destroy`, like other objects. Getting rid of this now let me get rid of all the mail stuff.
- I removed "path validation" where packages would try to automatically update in response to commits. This doesn't necessarily make sense in Git/Mercurial, is sketchy, could easily have been the source of T2831, and seems generally complicated and not very valuable. We could maybe restore it some day, but I'd like to get Owners stable before trying to do crazy stuff like that.
Test Plan: {F437687}
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T8317, T8073, T7127, T2831, T8320
Differential Revision: https://secure.phabricator.com/D13032
2015-05-27 19:30:26 +02:00
|
|
|
.aphront-table-view tr.diff-removed,
|
|
|
|
.aphront-table-view tr.alt-diff-removed {
|
|
|
|
background: {$lightred}
|
|
|
|
}
|
|
|
|
|
|
|
|
.aphront-table-view tr.diff-added,
|
|
|
|
.aphront-table-view tr.alt-diff-added {
|
|
|
|
background: {$lightgreen}
|
|
|
|
}
|
|
|
|
|
2011-01-25 20:31:40 +01:00
|
|
|
.aphront-table-view tr.no-data td {
|
2016-03-02 17:45:53 +01:00
|
|
|
padding: 16px;
|
2011-01-25 20:31:40 +01:00
|
|
|
text-align: center;
|
2014-01-07 20:57:37 +01:00
|
|
|
color: {$lightgreytext};
|
2011-01-25 20:31:40 +01:00
|
|
|
font-style: italic;
|
|
|
|
}
|
2011-05-03 19:45:45 +02:00
|
|
|
|
|
|
|
.aphront-table-view td.thumb img {
|
|
|
|
max-width: 64px;
|
|
|
|
max-height: 64px;
|
|
|
|
}
|
2011-07-31 17:38:06 +02:00
|
|
|
|
2012-03-24 01:11:15 +01:00
|
|
|
.aphront-table-view td.threads {
|
|
|
|
font-family: monospace;
|
|
|
|
white-space: pre;
|
2014-05-13 04:57:12 +02:00
|
|
|
padding: 0 0 0 8px;
|
2012-03-24 01:11:15 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
.aphront-table-view td.threads canvas {
|
|
|
|
display: block;
|
|
|
|
}
|
|
|
|
|
2012-04-10 18:46:04 +02:00
|
|
|
.aphront-table-view td.radio {
|
|
|
|
text-align: center;
|
|
|
|
padding: 2px 4px 0px;
|
|
|
|
}
|
|
|
|
|
2014-03-12 19:39:43 +01:00
|
|
|
.aphront-table-view th.center,
|
|
|
|
.aphront-table-view td.center {
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.device .aphront-table-view td + td.center,
|
|
|
|
.device .aphront-table-view th + th.center {
|
|
|
|
padding-left: 3px;
|
|
|
|
padding-right: 3px;
|
|
|
|
}
|
|
|
|
|
2012-12-18 00:16:44 +01:00
|
|
|
.device-desktop .aphront-table-view-device {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.device-tablet .aphront-table-view-nodevice,
|
|
|
|
.device-phone .aphront-table-view-nodevice {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.aphront-table-view td.link {
|
|
|
|
padding: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.aphront-table-view td.link a {
|
|
|
|
display: block;
|
2013-01-11 20:24:35 +01:00
|
|
|
padding: 6px 8px;
|
2012-12-18 00:16:44 +01:00
|
|
|
font-weight: bold;
|
|
|
|
}
|
2014-01-07 20:57:37 +01:00
|
|
|
|
|
|
|
.phui-object-box .aphront-table-view {
|
|
|
|
border: none;
|
|
|
|
}
|
2019-02-14 02:50:10 +01:00
|
|
|
|
|
|
|
.object-graph-header {
|
|
|
|
padding: 8px 12px;
|
|
|
|
overflow: hidden;
|
|
|
|
background: {$lightyellow};
|
|
|
|
border-bottom: 1px solid {$lightblueborder};
|
|
|
|
vertical-align: middle;
|
|
|
|
}
|
|
|
|
|
|
|
|
.object-graph-header .object-graph-header-icon {
|
|
|
|
float: left;
|
|
|
|
margin-top: 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.object-graph-header a.button {
|
|
|
|
float: right;
|
|
|
|
}
|
|
|
|
|
|
|
|
.object-graph-header-message {
|
|
|
|
margin: 8px 200px 8px 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.device .object-graph-header .object-graph-header-icon {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.device .object-graph-header-message {
|
|
|
|
clear: both;
|
|
|
|
margin: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.device .object-graph-header a.button {
|
|
|
|
margin: 0 auto 12px;
|
|
|
|
display: block;
|
|
|
|
width: 180px;
|
|
|
|
float: none;
|
|
|
|
}
|