- SOL-465: Initial implementation of certificates web view and signatories (names/titles) - SOL-718 Close button is working properly - SOL-801 Backbone Signatories Modeling - SOL-803 Underscore template: Editor (Add) - SOL-802 Signatories: Underscore template - Details - SOL-804 Signatories: Underscore template: Editor (Edit) - Add signatory delete Django view - SOL-805 Signatory editor (Delete) - Add Coffeescript router - SOL-716 Jasmine Tests - Added missing minified JS library - client side validation of signatory fields - SOL-390 signatories names - Remove obsolete extends Sass files - input maxlength limiting for signatory information - SOL-389: Course title override - SOL-466: Add capability to upload digitized signatures in Studio - ziafazal: fixed css for upload signature image - ziafazal: completed deletion of signature images - UX-1741: Add initial static rendering/styling for Open edX web certs * creating new global static dir * adding static version of edX UX pattern library assets * adding web certificates static assets * adding static (+abstracted) web certificates rendering * creating two tiers of rendering (base + distinguished) * providing sample assets for certificate rendering * supporting RTL layouts * adding certifcates assests to edX static asset pipeline * temporarily hiding the mozilla open badges share action * wiring print button to print view/page * fixup! addressing conflict artifact in valid cert template * fixup! adding missing %hd-subsection sass extend + components comment clean up * fixup! correcting pattern library .hd-4 font-weight value - SOL-468 Linked Student View for Web View Credential - SOL-467: Add capability to upload organization logos for certificates - SOL-391 / SOL-387: Signatory related info (assets) in certificates web view - kelketek: Fixes for static asset collection in certificate HTML view. - SOL-398 Web View: Public Access - mattdrayer: Post-merge branch stabilization - catong: Initial changes to Studio template and Help config file - ziafazal: Branch stabilizations - SOL-387: Display organization logo on LMS web view - talbs/mattdrayer: Branch Stabilizations - talbs: converting backpack action to use a button HTML element - talbs: revising placeholder assets + their rendering in cert view - mattdrayer: Username web view wireup - SOL-386 Certificate Mode Previews - SOL-905: Make organization logo and signatory signature uneditable - SOL-922: Improve test coverage - SOL-765: Add LinkedIn sharing - [marco] temporary styling adjustment to account for smaller linkedin share image / fake button - SOL-921: Address hardcoded template items - SOL-927: Deleting certificate should delete org logo image also * updated invalid template * removed hr * fix invalid certificate error - clrux: Add i18n to certificate templates and partials - mattdrayer: Pylint violations - SOL-920 Certificate Activation/Deactivation - mattdrayer: Added LMS support - SOL-932: Fix preview mode support in certificate view - SOL-934: Fixed bug reported and broken tests - SOL-935 removed the 'valid' word from web view title - talbs: RTL support updates/fixes * revising certificate type icon/name vertical alignment * removing unused older certificate template * revising styling for message/banner actions * abstracting accomplishment type to use course mode + adding in honor/verified-specific placeholders - mattdrayer: JSHint violations
343 lines
7.8 KiB
SCSS
343 lines
7.8 KiB
SCSS
// ------------------------------
|
|
// edX Pattern Library: Components - Buttons
|
|
|
|
// About: Contains base styling for demonstration and utility for buttons.
|
|
// ----------------------------
|
|
|
|
// #LAYOUT
|
|
// #GLOBALS
|
|
// #BASE (size)
|
|
// #LARGE (size)
|
|
// #SMALL (size)
|
|
// #DEFAULT (style)
|
|
// #PRIMARY (style)
|
|
// #SECONDARY (style)
|
|
// #LINK (style)
|
|
// #ELEVATED (type)
|
|
// #ELEVATED-ALT (type)
|
|
// #COMBO (type)
|
|
// #ICONS (type)
|
|
// #OVERLAY (type)
|
|
// ----------------------------
|
|
|
|
// ----------------------------
|
|
// #GLOBALS
|
|
// ----------------------------
|
|
.btn {
|
|
@include transition(
|
|
color timing(xx-fast) ease-in-out 0s,
|
|
border-color timing(xx-fast) ease-in-out 0s,
|
|
background timing(xx-fast) ease-in-out 0s,
|
|
box-shadow timing(xx-fast) ease-in-out 0s
|
|
);
|
|
|
|
// Display: inline, side-by-side
|
|
display: inline-block;
|
|
border-style: $buttons-border-style;
|
|
border-radius: $buttons-border-radius;
|
|
border-width: $buttons-border-size;
|
|
font-weight: $buttons-font-weight;
|
|
|
|
// Display: block, one button per line, full width
|
|
&.block {
|
|
display: block;
|
|
width: 100%;
|
|
}
|
|
|
|
// STATE: is disabled
|
|
&:disabled,
|
|
&.is-disabled {
|
|
@extend %state-disabled;
|
|
}
|
|
}
|
|
|
|
// ----------------------------
|
|
// #BASE
|
|
// ----------------------------
|
|
.btn-base {
|
|
padding: spacing-vertical(x-small) spacing-horizontal(base);
|
|
font-size: font-size(base);
|
|
}
|
|
|
|
|
|
// ----------------------------
|
|
// #LARGE
|
|
// ----------------------------
|
|
.btn-large {
|
|
padding: spacing-vertical(small) spacing-horizontal(mid-large);
|
|
font-size: font-size(mid-large);
|
|
}
|
|
|
|
|
|
// ----------------------------
|
|
// #SMALL
|
|
// ----------------------------
|
|
.btn-small {
|
|
padding: spacing-vertical(x-small) spacing-horizontal(small);
|
|
font-size: font-size(small);
|
|
}
|
|
|
|
|
|
// ----------------------------
|
|
// #DEFAULT
|
|
// ----------------------------
|
|
.btn-default {
|
|
border-color: palette(primary, base);
|
|
// background: palette(grayscale, white);
|
|
color: palette(primary, base);
|
|
|
|
// STATE: hover and focus
|
|
&:hover,
|
|
&.is-hovered,
|
|
&:focus,
|
|
&.is-focused {
|
|
background: palette(primary, base);
|
|
color: palette(grayscale, white);
|
|
}
|
|
|
|
// STATE: is pressed or active
|
|
&:active,
|
|
&.is-pressed,
|
|
&.is-active {
|
|
border-color: palette(primary, dark);
|
|
background: palette(primary, dark);
|
|
}
|
|
|
|
// STATE: is disabled
|
|
&:disabled,
|
|
&.is-disabled {
|
|
border-color: palette(grayscale, light);
|
|
background: palette(grayscale, white);
|
|
color: palette(grayscale, base);
|
|
}
|
|
}
|
|
|
|
// ----------------------------
|
|
// #PRIMARY
|
|
// ----------------------------
|
|
.btn-primary {
|
|
border-color: palette(primary, base);
|
|
background: palette(primary, base);
|
|
color: palette(grayscale, white);
|
|
|
|
// STATE: hover and focus
|
|
&:hover,
|
|
&.is-hovered,
|
|
&:focus,
|
|
&.is-focused {
|
|
border-color: palette(primary, accent);
|
|
background: palette(primary, accent);
|
|
}
|
|
|
|
// STATE: is pressed or active
|
|
&:active,
|
|
&.is-pressed,
|
|
&.is-active {
|
|
border-color: palette(primary, base);
|
|
background: palette(primary, base);
|
|
}
|
|
|
|
// STATE: is disabled
|
|
&:disabled,
|
|
&.is-disabled {
|
|
border-color: palette(grayscale, light);
|
|
background: palette(grayscale, light);
|
|
color: palette(grayscale, base);
|
|
}
|
|
}
|
|
|
|
|
|
// ----------------------------
|
|
// #SECONDARY
|
|
// ----------------------------
|
|
.btn-secondary {
|
|
border-color: $transparent;
|
|
background: $transparent;
|
|
color: palette(primary, base);
|
|
|
|
// STATE: hover and focus
|
|
&:hover,
|
|
&.is-hovered,
|
|
&:focus,
|
|
&.is-focused {
|
|
border-color: palette(grayscale-cool, light);
|
|
}
|
|
|
|
// STATE: is pressed or active
|
|
&:active,
|
|
&.is-pressed,
|
|
&.is-active {
|
|
border-color: palette(primary, base);
|
|
color: palette(primary, base);
|
|
}
|
|
|
|
// STATE: is disabled
|
|
&:disabled,
|
|
&.is-disabled {
|
|
border-color: palette(grayscale, light);
|
|
color: palette(grayscale, light);
|
|
}
|
|
}
|
|
|
|
|
|
// ----------------------------
|
|
// #LINK
|
|
// ----------------------------
|
|
.btn-link {
|
|
@extend %link;
|
|
|
|
// reset of inherited buttons
|
|
border-radius: 0;
|
|
border-color: $transparent;
|
|
padding: 1px;
|
|
background: $transparent;
|
|
}
|
|
|
|
|
|
// ----------------------------
|
|
// #ELEVATED
|
|
// ----------------------------
|
|
.btn-elevated {
|
|
border-color: palette(primary, base);
|
|
box-shadow: inset 0 0 -$buttons-elevated-shadow 0 0 palette(primary, dark);
|
|
background: palette(primary, base);
|
|
color: palette(grayscale, white);
|
|
|
|
// STATE: hover and focus
|
|
&:hover,
|
|
&.is-hovered,
|
|
&:focus,
|
|
&.is-focused {
|
|
box-shadow: inset 0 0 -$buttons-elevated-shadow 0 0 palette(primary, dark);
|
|
background: palette(primary, accent);
|
|
}
|
|
|
|
// STATE: is pressed or active
|
|
&:active,
|
|
&.is-pressed,
|
|
&.is-active {
|
|
box-shadow: inset 0 $buttons-elevated-shadow 0 0 palette(primary, x-dark);
|
|
background: palette(primary, dark);
|
|
}
|
|
|
|
// STATE: is disabled
|
|
&:disabled,
|
|
&.is-disabled {
|
|
border-color: palette(grayscale, x-light);
|
|
box-shadow: inset 0 -1px 0 palette(grayscale, light);
|
|
background: palette(grayscale, x-light);
|
|
color: palette(grayscale, base);
|
|
}
|
|
}
|
|
|
|
|
|
// ----------------------------
|
|
// #ELEVATED-ALT
|
|
// ----------------------------
|
|
.btn-elevated-alt {
|
|
box-shadow: inset 0 0 -$buttons-elevated-shadow 0 0 palette(grayscale-cool, light);
|
|
border-color: palette(grayscale-cool, light);
|
|
background: $transparent;
|
|
color: palette(primary, base);
|
|
|
|
// STATE: hover and focus
|
|
&:hover,
|
|
&.is-hovered,
|
|
&:focus,
|
|
&.is-focused {
|
|
border-color: palette(primary, base);
|
|
box-shadow: inset 0 0 -$buttons-elevated-shadow 0 0 palette(primary, base);
|
|
color: palette(grayscale, white);
|
|
background: palette(primary, accent);
|
|
}
|
|
|
|
// STATE: is pressed or active
|
|
&:active,
|
|
&.is-pressed,
|
|
&.is-active {
|
|
box-shadow: inset 0 $buttons-elevated-shadow 0 0 palette(primary, x-dark);
|
|
background: palette(primary, dark);
|
|
}
|
|
|
|
// STATE: is disabled
|
|
&:disabled,
|
|
&.is-disabled {
|
|
border-color: palette(grayscale, x-light);
|
|
box-shadow: inset 0 -1px 0 palette(grayscale, light);
|
|
background: palette(grayscale, x-light);
|
|
color: palette(grayscale, base);
|
|
}
|
|
}
|
|
|
|
|
|
// ----------------------------
|
|
// #COMBO
|
|
// ----------------------------
|
|
.btn-combo {
|
|
border-radius: 0;
|
|
|
|
// targets the first element in a parent container
|
|
&:first-of-type {
|
|
@include border-top-left-radius($buttons-border-radius);
|
|
@include border-bottom-left-radius($buttons-border-radius);
|
|
}
|
|
|
|
// targets the last element in a parent container
|
|
&:last-of-type {
|
|
@include border-top-right-radius($buttons-border-radius);
|
|
@include border-bottom-right-radius($buttons-border-radius);
|
|
}
|
|
}
|
|
|
|
|
|
// ----------------------------
|
|
// #ICONS
|
|
// ----------------------------
|
|
.has-icon {
|
|
|
|
}
|
|
|
|
.has-icon-reverse {
|
|
|
|
}
|
|
|
|
|
|
// ----------------------------
|
|
// #OVERLAY
|
|
// ----------------------------
|
|
.btn-overlay {
|
|
border-color: palette(grayscale, white);
|
|
background: $transparent;
|
|
color: palette(grayscale, white);
|
|
font-weight: font-weight(semi-bold);
|
|
|
|
// STATE: hover and focus
|
|
&:hover,
|
|
&.is-hovered,
|
|
&:focus,
|
|
&.is-focused {
|
|
background: palette(grayscale, white);
|
|
color: palette(primary, base);
|
|
}
|
|
|
|
// STATE: is pressed or active
|
|
&:active,
|
|
&.is-pressed,
|
|
&.is-active {
|
|
color: palette(primary, dark);
|
|
}
|
|
|
|
// STATE: is disabled
|
|
&:disabled,
|
|
&.is-disabled {
|
|
border-color: palette(grayscale, trans);
|
|
color: palette(grayscale, x-light);
|
|
|
|
&:hover {
|
|
border-color: palette(grayscale, trans);
|
|
background: $transparent;
|
|
color: palette(grayscale, x-light);
|
|
}
|
|
}
|
|
}
|