mirror of
https://github.com/flarum/framework.git
synced 2025-05-10 05:22:27 +08:00

- Extract shared Ember components into a “flarum-common” ember-cli addon. This can be used by both the forum + admin Ember apps, keeping things DRY - Move LESS styles into their own top-level directory and do a similar thing (extract common styles) - Add LESS/JS compilation and versioning to PHP (AssetManager) - Set up admin entry point (Theoretical) upgrade instructions: - Delete everything in [app_root]/public - Set up tooling in forum/admin Ember apps (npm install/update, bower install/update) and then build them (ember build) - php artisan vendor:publish - Upgrade flarum/flarum repo (slight change in a config file) - If you need to trigger a LESS/JS recompile, delete the .css/.js files in [app_root]/public/flarum. I set up LiveReload to do this for me when I change files in less/ or ember/ Todo: - Start writing admin app! - Remove bootstrap/font-awesome from repo and instead depend on their composer packages? Maybe? (Bower is not an option here)
167 lines
4.1 KiB
Plaintext
Executable File
167 lines
4.1 KiB
Plaintext
Executable File
//
|
|
// Input groups
|
|
// --------------------------------------------------
|
|
|
|
// Base styles
|
|
// -------------------------
|
|
.input-group {
|
|
position: relative; // For dropdowns
|
|
display: table;
|
|
border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table
|
|
|
|
// Undo padding and float of grid classes
|
|
&[class*="col-"] {
|
|
float: none;
|
|
padding-left: 0;
|
|
padding-right: 0;
|
|
}
|
|
|
|
.form-control {
|
|
// Ensure that the input is always above the *appended* addon button for
|
|
// proper border colors.
|
|
position: relative;
|
|
z-index: 2;
|
|
|
|
// IE9 fubars the placeholder attribute in text inputs and the arrows on
|
|
// select elements in input groups. To fix it, we float the input. Details:
|
|
// https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855
|
|
float: left;
|
|
|
|
width: 100%;
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
|
|
// Sizing options
|
|
//
|
|
// Remix the default form control sizing classes into new ones for easier
|
|
// manipulation.
|
|
|
|
.input-group-lg > .form-control,
|
|
.input-group-lg > .input-group-addon,
|
|
.input-group-lg > .input-group-btn > .btn {
|
|
.input-lg();
|
|
}
|
|
.input-group-sm > .form-control,
|
|
.input-group-sm > .input-group-addon,
|
|
.input-group-sm > .input-group-btn > .btn {
|
|
.input-sm();
|
|
}
|
|
|
|
|
|
// Display as table-cell
|
|
// -------------------------
|
|
.input-group-addon,
|
|
.input-group-btn,
|
|
.input-group .form-control {
|
|
display: table-cell;
|
|
|
|
&:not(:first-child):not(:last-child) {
|
|
border-radius: 0;
|
|
}
|
|
}
|
|
// Addon and addon wrapper for buttons
|
|
.input-group-addon,
|
|
.input-group-btn {
|
|
width: 1%;
|
|
white-space: nowrap;
|
|
vertical-align: middle; // Match the inputs
|
|
}
|
|
|
|
// Text input groups
|
|
// -------------------------
|
|
.input-group-addon {
|
|
padding: @padding-base-vertical @padding-base-horizontal;
|
|
font-size: @font-size-base;
|
|
font-weight: normal;
|
|
line-height: 1;
|
|
color: @input-color;
|
|
text-align: center;
|
|
background-color: @input-group-addon-bg;
|
|
border: 1px solid @input-group-addon-border-color;
|
|
border-radius: @border-radius-base;
|
|
|
|
// Sizing
|
|
&.input-sm {
|
|
padding: @padding-small-vertical @padding-small-horizontal;
|
|
font-size: @font-size-small;
|
|
border-radius: @border-radius-small;
|
|
}
|
|
&.input-lg {
|
|
padding: @padding-large-vertical @padding-large-horizontal;
|
|
font-size: @font-size-large;
|
|
border-radius: @border-radius-large;
|
|
}
|
|
|
|
// Nuke default margins from checkboxes and radios to vertically center within.
|
|
input[type="radio"],
|
|
input[type="checkbox"] {
|
|
margin-top: 0;
|
|
}
|
|
}
|
|
|
|
// Reset rounded corners
|
|
.input-group .form-control:first-child,
|
|
.input-group-addon:first-child,
|
|
.input-group-btn:first-child > .btn,
|
|
.input-group-btn:first-child > .btn-group > .btn,
|
|
.input-group-btn:first-child > .dropdown-toggle,
|
|
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
|
|
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
|
|
.border-right-radius(0);
|
|
}
|
|
.input-group-addon:first-child {
|
|
border-right: 0;
|
|
}
|
|
.input-group .form-control:last-child,
|
|
.input-group-addon:last-child,
|
|
.input-group-btn:last-child > .btn,
|
|
.input-group-btn:last-child > .btn-group > .btn,
|
|
.input-group-btn:last-child > .dropdown-toggle,
|
|
.input-group-btn:first-child > .btn:not(:first-child),
|
|
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
|
|
.border-left-radius(0);
|
|
}
|
|
.input-group-addon:last-child {
|
|
border-left: 0;
|
|
}
|
|
|
|
// Button input groups
|
|
// -------------------------
|
|
.input-group-btn {
|
|
position: relative;
|
|
// Jankily prevent input button groups from wrapping with `white-space` and
|
|
// `font-size` in combination with `inline-block` on buttons.
|
|
font-size: 0;
|
|
white-space: nowrap;
|
|
|
|
// Negative margin for spacing, position for bringing hovered/focused/actived
|
|
// element above the siblings.
|
|
> .btn {
|
|
position: relative;
|
|
+ .btn {
|
|
margin-left: -1px;
|
|
}
|
|
// Bring the "active" button to the front
|
|
&:hover,
|
|
&:focus,
|
|
&:active {
|
|
z-index: 2;
|
|
}
|
|
}
|
|
|
|
// Negative margin to only have a 1px border between the two
|
|
&:first-child {
|
|
> .btn,
|
|
> .btn-group {
|
|
margin-right: -1px;
|
|
}
|
|
}
|
|
&:last-child {
|
|
> .btn,
|
|
> .btn-group {
|
|
margin-left: -1px;
|
|
}
|
|
}
|
|
}
|