forked from M-Labs/web2019
sovanna
e025f66f3e
fix(place-order): Avoids colliding with page var feat(place-order): Adds drag(copy)/drop system Finally get this to work.. Still some minor issues while drag(copy)/drop This commit allows to drag(copy)/drop inside the crate. Allows to reorder the crate feat(place-order): Adds basic summary of shopping cart allows to delete item feat(place-order): Adds form also applies some cosmetcis css feat(place-order): Applies custom css to drag/drop process feat(place-order): Improves crate UI feat(place-order): Adds missing assets feat(place-order): Updates icon button add feat(place-order): Changes cart layout to increase space - moves up the control crate type (rack/desktop) - increase card size a bit - reduces some padding - adding some space above card title - re-organise react component to achieve this layout feat(place-order): Updates icon remove in summary price - uses icon instead of shitty html/css - re-organises react component fix(place-order): Reduces overlay gradient effect on the aside also increases padding-bottom to avoid overlay above content feat(place-order): Updates summary price layout feat(place-order): Updates CrateMode using data this avoid using hard text in component and also, adding crate mode in data.js will be helpful for other component too (e.g OrderSummary) feat(place-order): Adds crate mode in OrderSummary Allows to add fees to rack mode for exemple feat(place-order): Allows to delete all items in the crate at once feat(place-order): Updates typo uses currentMode instead of crateMode feat(place-order): Displays selection shadow on card when user hover delete button feat(place-order): Allows to add item to the crate feat(place-order): Corrects typo feat(place-order): Corrects layout for browser support feat(place-order): Adds first automatic rules this allows to test how things could be done feat(place-order): Allows to remove card when drop out of crate feat(place-order): Adds icon reminder to rules feat(place-order): Uses internal js production assets feat(place-order): Uses production file feat(place-order): Adds kali first as initialisation feat(place-order): Simulates slots in crate (desktop/rack) feat(place-order): Updates data that prepare for rules algo feat(place-order): Adds some rules feat(place-order): Removes rule 2kasli when no more kasli it's a fix feat(place-order): Corrects typo rules koster fix(place-order): Removes PWA prompt fix(place-order): Corrects size card inside crate refactor(place-order): Reduces padding between items in listing refactor(place-order): Uses USD currency feat(place-order): Upgrades algo for rules feat(place-order): Adds progress bar to kasli/kasli w/backplane feat(place-order): Refactores a bit rule handler feat(place-order): Adds all other rules fix(place-order): Corrects typo fix(place-order): Corrects count zotino/hd68 when IDC-BNC does not follow each others feat(place-order): Backups dev script call just in case For now, I can work with prod build even debugging production code feat(place-order): Adds super tooltip to progress bar feat(place-order): Adds tooltip for zotino/hd68 too refactor(place-order): Updates typo rule for Koster feat(place-order/WIP): Adds warning feat(place-order): Adds Mirny adds css changes from previous commit (i've forgotten) feat(place-order): Updates build feat(place-order): Set RJ45-DIO to occupy 2 EEMs feat(place-order): Make clocker progress bar visible It was hidden by horizontal scrollbar inside crate feat(place-order): Remove red warning for 2 kaslis following each other feat(place-order): Adds rule for cards that need a resource controller feat(place-order): Corrects typo, adds point to end of message feat(place-order): Changes idc-bnc info into a warning one feat(place-order): Moves down warning box feat(place-order): Updates some cosmetics css fix(place-order): Removes IDC-BNC from Kasli connectors count feat(place-order): Displays warning on hover warning icon feat(place-order): Updates design hover item in listing feat(place-order): Updates price estimate feat(place-order): Displays warning in summary feat(place-order): Allows to select item feat(place-order): Allows to send request quote through client email fix(place-order): Allows to click on remove inside summary list feat(place-order): Adds btn remove for each cards inside crate feat(place-order): Builds fix(place-order): Updates icon warning fix(place-order): Corrects recipient email address LOL, forgot to remove mine haha fix(place-order): Removes typo (kasli double) fix(place-order): Removes num from email title subject fix(place-order): Adds warning resources to mirny, zotino Also updates message text feat(place-order): Adds clocker counter feat(place-order): Uses warning for id68 instead of reminder feat(place-order): Adds crate type into the json feat(place-order): Adds btn order hardware in homepage refactor(place-order): Cleans a bit fix(place-order): Improves a bit ux remove item from crate fix(place-order): Improves a bit ux remove item from crate feat(place-order): Builds fix(place-order): Uses cursor pointer on remove button fix(place-order): Corrects card need a resources card chore(place-order): Removes call to ap.js fix(place-order): Tries with fixed height on warning icon fix(place-order): Adds fixed height to other element fix(place-order): Tries to remove up container height to let flex to its job fix(place-order): Removes .trim call which block multiline and augments row to 5 feat(place-order): Builds fix(place-order): Adds min-height for the crate
451 lines
12 KiB
SCSS
451 lines
12 KiB
SCSS
#root-shop, #root-shop > div {
|
|
width: 100%;
|
|
height: calc(100vh - 72px);
|
|
overflow: hidden;
|
|
}
|
|
|
|
button {
|
|
outline: none!important;
|
|
}
|
|
|
|
#root-shop {
|
|
|
|
.layout {
|
|
|
|
display: flex;
|
|
|
|
> aside.aside {
|
|
flex: 2;
|
|
background-color: $color-primary;
|
|
overflow-y: scroll;
|
|
overflow-x: hidden;
|
|
position: relative;
|
|
/*padding-bottom: 4rem!important;*/
|
|
}
|
|
|
|
> aside.aside:after {
|
|
position: fixed;
|
|
bottom: 0;
|
|
height: 100px;
|
|
width: calc(2 / 6 * 100%);
|
|
content: "";
|
|
background: linear-gradient(
|
|
to top,
|
|
rgba(13, 53, 71, 1),
|
|
rgba(13, 53, 71, 0)
|
|
);
|
|
pointer-events: none;
|
|
}
|
|
|
|
> section.main {
|
|
flex: 4;
|
|
max-width: calc(4 / 6 * 100%);
|
|
overflow-y: scroll;
|
|
}
|
|
}
|
|
|
|
.productItem {
|
|
|
|
display: flex;
|
|
color: white;
|
|
padding: 3rem 2rem 1rem;
|
|
|
|
.content {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
|
|
> *:not(:last-child) {
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
img {
|
|
height: 400px;
|
|
align-self: center;
|
|
border: 0;
|
|
}
|
|
|
|
h3 {
|
|
color: white;
|
|
}
|
|
|
|
button {
|
|
background-color: inherit;
|
|
align-self: center;
|
|
border: 0;
|
|
|
|
img {
|
|
width: 40px;
|
|
height: auto;
|
|
}
|
|
}
|
|
|
|
.price {
|
|
align-self: flex-start;
|
|
padding: .5rem 1rem;
|
|
border: 2px solid $btn-primary-2;
|
|
border-radius: 3px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
ul {
|
|
font-size: .8rem;
|
|
margin: 0;
|
|
padding-left: 20px;
|
|
|
|
li::before {
|
|
color: white;
|
|
}
|
|
|
|
li {
|
|
padding: .3rem 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.backlog-container {
|
|
padding-bottom: 4rem;
|
|
}
|
|
|
|
.rule {
|
|
margin-bottom: .3rem;
|
|
font-size: .8rem;
|
|
|
|
img {
|
|
width: 20px;
|
|
}
|
|
}
|
|
|
|
.panel {
|
|
padding: 3rem;
|
|
overflow: hidden;
|
|
|
|
h2 {
|
|
padding-bottom: .5rem;
|
|
}
|
|
|
|
.control {
|
|
display: flex;
|
|
font-size: .8rem;
|
|
|
|
> p {
|
|
width: 50%;
|
|
padding-right: 30px;
|
|
}
|
|
.crate-mode {
|
|
text-align: right;
|
|
width: 50%;
|
|
|
|
a {
|
|
cursor: pointer;
|
|
margin-right: 1rem;
|
|
color: inherit;
|
|
text-decoration: none;
|
|
padding-bottom: 5px;
|
|
}
|
|
a.active {
|
|
font-weight: 700;
|
|
border-bottom: 3px solid $btn-primary-2;
|
|
}
|
|
}
|
|
}
|
|
|
|
.summary {
|
|
display: flex;
|
|
margin: 2rem 0;
|
|
|
|
> .summary-price {
|
|
flex: 1;
|
|
font-size: .8rem;
|
|
|
|
table {
|
|
max-width: 350px;
|
|
}
|
|
|
|
.summary-remove-all {
|
|
padding-bottom: 1rem;
|
|
|
|
.item-card-name {
|
|
color: $btn-primary-2;
|
|
}
|
|
}
|
|
|
|
.item-card-name {
|
|
font-weight: 700;
|
|
}
|
|
|
|
.price {
|
|
text-align: left;
|
|
}
|
|
|
|
.item-card-name > div,
|
|
.price > div {
|
|
display: inline;
|
|
}
|
|
|
|
.item-card-name,
|
|
.price {
|
|
> .alert-warning {
|
|
background-color: inherit;
|
|
height: inherit;
|
|
width: 20px;
|
|
padding-bottom: 3px;
|
|
}
|
|
}
|
|
|
|
thead, tbody, tfoot {
|
|
display: block;
|
|
/*max-height: 200px;
|
|
overflow-y: auto;*/
|
|
|
|
tr {
|
|
display: table;
|
|
table-layout: fixed;
|
|
width: 100%;
|
|
}
|
|
tr.hoverable {
|
|
cursor: pointer;
|
|
}
|
|
tr.hoverable:hover,
|
|
tr.hoverable.selected {
|
|
background-color: $color-hover;
|
|
}
|
|
td {
|
|
padding: 1px 5px;
|
|
}
|
|
}
|
|
|
|
tfoot {
|
|
color: $btn-primary-2;
|
|
font-size: 1.2rem;
|
|
td {
|
|
padding: 1.2rem 0;
|
|
}
|
|
}
|
|
|
|
button {
|
|
background-color: inherit;
|
|
border: 0;
|
|
margin-left: 20px;
|
|
|
|
img {
|
|
width: 20px;
|
|
height: auto;
|
|
}
|
|
}
|
|
}
|
|
|
|
> .summary-form {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-end;
|
|
|
|
form {
|
|
display: flex;
|
|
flex-direction: column;
|
|
width: 80%;
|
|
|
|
input:not([type="submit"]),
|
|
textarea {
|
|
border: 1px solid $color-secondary;
|
|
border-radius: 3px;
|
|
margin: 0 0 1rem;
|
|
padding: .4rem;
|
|
}
|
|
|
|
input[type="submit"] {
|
|
background-color: $btn-primary-2;
|
|
font-weight: 700;
|
|
color: white;
|
|
padding: .7rem;
|
|
border: 0;
|
|
border-radius: 3px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.crate {
|
|
position: relative;
|
|
|
|
.crate-products {
|
|
box-shadow: 0 .5rem 1rem rgba(0,0,0,.15);
|
|
padding: .5rem .5rem 1rem;
|
|
|
|
.items-cart-list {
|
|
display: flex;
|
|
flex-direction: row;
|
|
flex-wrap: nowrap;
|
|
overflow-x: auto;
|
|
overflow-y: hidden;
|
|
-webkit-overflow-scrolling: touch;
|
|
-ms-overflow-style: -ms-autohiding-scrollbar;
|
|
min-height: 345px;
|
|
background-color: #ebebeb;
|
|
padding: 5px 5px 12px;
|
|
position: relative;
|
|
|
|
> div {
|
|
display: flex;
|
|
flex-direction: column;
|
|
max-width: 96px;
|
|
justify-content: flex-start;
|
|
align-content: center;
|
|
align-items: center;
|
|
margin-right: 8px;
|
|
flex-shrink: 0;
|
|
padding: 5px 3px;
|
|
}
|
|
|
|
h6 {
|
|
font-size: .6rem;
|
|
text-align: center;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
img {
|
|
height: 250px;
|
|
border: 0;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.nbr-connectors, .nbr-clocks {
|
|
width: 100%;
|
|
height: 6px;
|
|
margin-top: 5px;
|
|
border: 1px solid #0d3547;
|
|
|
|
> div {
|
|
height: 100%;
|
|
width: 0%;
|
|
}
|
|
}
|
|
.nbr-connectors > div {
|
|
background-color: $brand-color;
|
|
}
|
|
.nbr-clocks > div {
|
|
background-color: #d689bf;
|
|
}
|
|
|
|
.progress-container {
|
|
width: 100%;
|
|
text-align: center;
|
|
|
|
> .alert-warning {
|
|
background-color: inherit;
|
|
height: inherit;
|
|
width: 20px;
|
|
padding-bottom: 3px;
|
|
}
|
|
|
|
.k-popup-connectors,
|
|
.k-popup-warning {
|
|
position: absolute;
|
|
background-color: $color-primary;
|
|
color: white;
|
|
font-weight: 700;
|
|
font-size: .6rem;
|
|
padding: .8rem 1rem;
|
|
box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15);
|
|
text-align: left;
|
|
|
|
p {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
p + p {
|
|
padding-bottom: 8px;
|
|
}
|
|
}
|
|
|
|
.k-popup-connectors {
|
|
min-width: 200px;
|
|
bottom: 50px;
|
|
}
|
|
|
|
.k-popup-warning {
|
|
background-color: #c75e5e;
|
|
min-width: 350px;
|
|
|
|
.rule.warning {
|
|
display: flex;
|
|
font-size: .75rem;
|
|
|
|
img {
|
|
margin-right: 10px;
|
|
height: 100%;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.overlayRemove {
|
|
bottom: 0;
|
|
width: 100%;
|
|
height: 70px;
|
|
margin-top: -70px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background-color: $brand-color;
|
|
color: white;
|
|
flex-direction: column;
|
|
cursor: pointer;
|
|
|
|
img {
|
|
width: 20px;
|
|
height: 20px;
|
|
}
|
|
|
|
p {
|
|
font-size: .65rem;
|
|
margin: 0;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
.hovered {
|
|
box-shadow: 0 0 5px rgba(255, 0, 0, .8);
|
|
}
|
|
}
|
|
|
|
.crate-info {
|
|
padding: 1rem 0 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
.arrow_box {
|
|
position: relative;
|
|
background: #c75e5e;
|
|
border: 2px solid #c75e5e;
|
|
}
|
|
.arrow_box:after, .arrow_box:before {
|
|
top: 100%;
|
|
left: 5%;
|
|
border: solid transparent;
|
|
content: " ";
|
|
height: 0;
|
|
width: 0;
|
|
position: absolute;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.arrow_box:after {
|
|
border-color: rgba(199, 94, 94, 0);
|
|
border-top-color: #c75e5e;
|
|
border-width: 10px;
|
|
margin-left: -10px;
|
|
}
|
|
.arrow_box:before {
|
|
border-color: rgba(199, 94, 94, 0);
|
|
border-top-color: #c75e5e;
|
|
border-width: 10px;
|
|
margin-left: -10px;
|
|
}
|
|
|
|
}
|