Initial commit: Core packages

This commit is contained in:
Ernad Husremovic 2025-08-29 15:20:45 +02:00
commit 12c29a983b
9512 changed files with 8379910 additions and 0 deletions

View file

@ -0,0 +1,26 @@
.o_survey_question_view_form {
.o_preview_questions {
border: 3px solid $o-gray-500;
width: auto;
padding: 10px 20px 10px;
margin-top: 15px;
color: $o-gray-500;
}
.o_preview_questions .o_datetime {
margin-bottom: 5px;
}
.o_preview_questions .o_matrix_head {
border-bottom: 1px solid #D8D7D7;
}
.o_preview_questions .o_matrix_row {
border-top: 1px solid #D8D7D7;
}
.o_preview_questions_choice {
line-height: 1rem;
}
}

View file

@ -0,0 +1,321 @@
@font-face {
font-family: "certification-cursive";
src: url("/survey/static/src/fonts/AlexBrush-Regular.ttf") format("truetype");
}
@font-face {
font-family: "certification-serif";
src: url("/survey/static/src/fonts/IbarraRealNova-Regular.ttf") format("truetype");
font-weight: normal;
}
@font-face {
font-family: "certification-serif";
src: url("/survey/static/src/fonts/IbarraRealNova-Bold.ttf") format("truetype");
font-weight: bold;
}
@font-face {
font-family: "certification-modern";
src: url("/survey/static/src/fonts/Trueno-wml2.otf") format("opentype");
font-weight: normal;
}
@font-face {
font-family: "certification-modern";
src: url("/survey/static/src/fonts/TruenoBd.otf") format("opentype");
font-weight: bold;
}
#o_survey_certification.certification-wrapper {
background-color: #875A7B;
position: relative;
display: flex;
margin-left: -4mm;
margin-right: -4mm;
&.blue {
background-color: #263e86;
}
&.gold {
background-color: #d7a520;
}
.test-entry {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url(/survey/static/src/img/watermark.png);
background-size: 20%;
background-position: center;
z-index: 4;
}
.certification {
position: relative;
text-align: center;
.certification-failed p{
margin-top: 30mm;
}
.certification-seal {
position: absolute;
background-size: 100%;
}
.certification-top {
h1 {
font-size: 60pt;
text-transform: uppercase;
line-height: 24pt;
span {
font-size: 20pt;
}
}
}
.certification-content {
p {
font-size: 16pt;
color: #6b6d70;
.user-name {
font-family: certification-cursive, cursive;
font-size: 50pt;
line-height: 2;
color: #282f33;
border-bottom: 1pt solid #282f33;
}
.certification-name {
font-size: 18pt;
line-height: 1.5;
text-transform: uppercase;
color: #282f33;
}
}
}
.certification-bottom {
position: absolute;
bottom: 15mm;
.certification-date-wrapper {
width: 80mm;
padding: 10mm;
text-align: center;
.certification-date {
border-bottom: 1pt solid #282f33;
}
}
.certification-company {
position: absolute;
top: 0;
bottom: 0;
width: 33%;
text-align: center;
img {
max-width: 100%;
max-height: 100%;
}
}
}
.certification-number {
color: #6b6d70;
position: absolute;
font-size: 10pt;
}
}
// Classic Template
&.classic {
&.blue .certification {
color: #263e86;
.certification-top {
&:before, &:after {
background-image: url("/survey/static/src/img/classic-ornament-blue.svg");
}
}
.certification-content p .certification-name {
color: #263e86;
}
}
&.gold .certification {
color: #d7a520;
.certification-top {
&:before, &:after{
background-image: url("/survey/static/src/img/classic-ornament-gold.svg");
}
}
.certification-content p .certification-name {
color: #d7a520;
}
}
.certification {
background-image: url("/survey/static/src/img/certification_bg_classic.svg");
background-repeat: no-repeat;
background-size: cover;
font-family: "certification-serif", serif;
width: 295mm;
height: 208mm;
margin: 1mm;
color: #875A7B;
.certification-top {
padding-top: 10mm;
&:before, &:after {
content: '';
display: block;
width: 108mm;
height: 16mm;
margin: 0 auto;
background-image: url("/survey/static/src/img/classic-ornament-purple.svg");
background-repeat: no-repeat;
}
&:before {
margin-bottom: 10mm;
}
&:after {
-webkit-transform: scaleY(-1);
transform: scaleY(-1);
margin-bottom: 5mm;
}
}
.certification-content {
margin-bottom: 10mm;
p .certification-name {
color: #875A7B;
}
}
.certification-bottom {
width: 295mm;
bottom: 20mm;
.certification-date-wrapper {
margin-left: 40mm;
font-size: 18pt;
color: #6b6d70;
span {
font-size: 18pt;
}
}
.certification-seal {
top: 50%;
left: 50%;
-webkit-transform: translate(-50% , -50%);
transform: translate(-50% , -50%);
width: 24mm;
height: 24mm;
background: url(/survey/static/src/img/classic-seal.png) no-repeat;
}
.certification-company {
padding-left: 10mm;
right: 35mm;
}
.certification-number {
bottom: -15mm;
left: 50%;
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
}
}
}
}
// Modern Template
&.modern {
background-image: url("/survey/static/src/img/certification_bg_modern.svg");
background-repeat: no-repeat;
background-size: cover;
&.blue .certification .certification-seal {
background-image: url("/survey/static/src/img/modern-seal-blue.svg");
}
&.gold .certification .certification-seal {
background-image: url("/survey/static/src/img/modern-seal-gold.svg");
}
.certification {
font-family: "certification-modern", sans-serif;
width: 272mm;
height: 185mm;
margin: 12.5mm;
background-color: #f2f2f2;
text-align: center;
.certification-seal {
top: -7mm;
right: 20mm;
width: 22mm;
height: 42mm;
background-image: url("/survey/static/src/img/modern-seal-purple.svg");
background-repeat: no-repeat;
}
.certification-top {
padding-top: 28mm;
padding-bottom: 10mm;
color: #282f33;
h1 b {
font-weight: bold;
}
}
.certification-bottom {
width: 272mm;
.certification-date-wrapper {
margin-left: 40mm;
text-transform: uppercase;
.certification-date {
font-size: 18pt;
color: #282f33;
}
span {
font-size: 14pt;
color: #6b6d70;
}
}
.certification-company {
right: 30mm;
}
}
.certification-number {
bottom: -6mm;
right:0;
text-align: right;
}
}
}
}

View file

@ -0,0 +1,7 @@
// = Survey view
// ============================================================================
// No CSS hacks, variables overrides only
.o_survey_form {
--SurveyForm__section-background-color: #{$o-gray-300};
}

View file

@ -0,0 +1,179 @@
// KANBAN VIEW
.o_survey_survey_view_kanban {
// Common: left semi-trophy icon for certifications
.o_survey_kanban_card_certification {
background-image:
linear-gradient(rgba($o-view-background-color,.75),
rgba($o-view-background-color,.75)),
url(/survey/static/src/img/trophy-solid.svg);
background-repeat: no-repeat;
background-position: bottom 6px left -45px;
background-size: 100%, 100px;
}
// Grouped / Ungrouped sections hidding
&.o_kanban_grouped {
.o_survey_kanban_card_ungrouped {
display:none !important;
}
}
&.o_kanban_ungrouped {
.o_survey_kanban_card_grouped {
display:none !important;
}
}
// Ungrouped display: whole length (kanban-list)
&.o_kanban_ungrouped {
padding: 0px;
.o_kanban_record {
width: 100%;
margin: 0px;
border-top: 0px !important;
}
}
// Grouped specific
&.o_kanban_grouped {
// Set a minimal height otherwise display may have different card sized
.o_survey_kanban_card_grouped {
& > .row {
min-height: 60px;
}
}
// Due to activity widget crashing if present twice, have to set absolute and tweak
.o_survey_kanban_card_bottom {
position: absolute;
bottom: 10px;
right: 10px;
}
}
// Ungrouped specific
&.o_kanban_ungrouped {
// Set a minimal height otherwise display may have different card sized
.o_survey_kanban_card_ungrouped {
&.row {
min-height: 60px;
}
}
// Left semi-trophy icon for certifications: tweak display for list view
.o_survey_kanban_card_certification {
background-position: center left -35px;
background-size: auto 75%;
}
// Due to activity widget crashing if present twice, have to set absolute and tweak
.o_survey_kanban_card_bottom {
position: absolute;
bottom: 4px;
right: 19px;
}
}
// RIBBON: Kanban specific
// Ungrouped specific
.o_survey_kanban_card_ungrouped {
.ribbon {
// Desktop: finishes on next kanban card line
height: 100px;
width: 125px;
// Mobile: is in a corner, takes more place
@include media-breakpoint-down(md) {
height: 100px;
width: 125px;
}
&-top-right {
top: 25px;
&:after {
display: none;
}
& span {
left: 26px;
top: 4px;
}
}
& span {
font-size: 0.9rem;
width: 130px;
height: 32px;
}
}
}
// Grouped specific
.o_survey_kanban_card_grouped {
.ribbon {
height: 90px;
width: 98px;
&-top-right {
margin-top: -$o-kanban-inside-vgutter;
right: 0;
& span {
left: -8px;
top: 24px;
}
}
& span {
font-size: 1rem;
width: 150px;
height: 32px;
padding: 0 8px;
}
}
}
}
// FORM view
.o_survey_form table.o_section_list_view tr.o_data_row.o_is_section {
font-weight: bold;
background-color: var(--SurveyForm__section-background-color, #DDD);
border-top: 1px solid #BBB;
border-bottom: 1px solid #BBB;
> td {
background: transparent;
}
}
// TOOLS
.icon_rotates {
transform: rotate(180deg);
}
/* Style of the tiles allowing the user to load a sample survey. */
.o_survey_sample_tile {
max-width: 150px;
height: 150px;
.o_survey_sample_tile_cover {
display: none;
overflow-y: auto;
cursor: pointer;
}
&:hover {
.o_survey_sample_tile_cover {
display: flex;
flex-direction: column;
background: rgba(0, 0, 0, 0.9);
&::before, &::after {
content: '';
}
&::before {
margin-top: auto;
}
&::after {
margin-bottom: auto;
}
}
}
}

View file

@ -0,0 +1,556 @@
/**********************************************************
Remove website backend redirection button : Should be
done in website survey but we won't do a bridge module
only for this.
TODO: SmartPeople Fixme - cleaner solution? be my guest!
**********************************************************/
div.o_frontend_to_backend_nav {
display: none !important;
}
/**********************************************************
Common Style
**********************************************************/
// dynamic color is used to ensure enough contrast between the text and the background color
$dynamic-text-color: if(lightness($body-bg) > 50%, $gray-900, $gray-100);
// the survey background image takes all the page background, with a translucent white overlay (box-shadow)
// When changing the background from one section to another, the overlay will become opaque to simulate a fade out of
// the background image. This ensure a smooth transition from one background to another, likewise the question
// transition.
.o_survey_background {
height: 100%;
overflow: auto;
transition: box-shadow 0.3s ease-in-out;
background: no-repeat fixed center;
background-size: cover;
color: $dynamic-text-color !important;
.text-muted {
opacity: 0.7;
color: $dynamic-text-color !important;
}
&.o_survey_background_shadow {
box-shadow: inset 0 0 0 10000px rgba(255,255,255,.7);
color: $gray-900 !important;
.text-muted {
color: $gray-900 !important;
}
}
&.o_survey_background_transition {
box-shadow: inset 0 0 0 10000px rgba(255,255,255,1);
}
}
.o_survey_wrap {
min-height: 100%;
}
// Safari(v 7.1+) specific fix (min-height given above doesn't work with safari)
// see https://stackoverflow.com/a/25975282 for info on safari specific css
_::-webkit-full-page-media, _:future, :root .o_survey_wrap {
min-height: 90vh;
}
.o_survey_progress_wrapper {
min-width: 7rem;
max-width: 11rem;
.o_survey_progress {
height:0.5em;
}
}
.o_survey_navigation_wrapper .o_survey_navigation_submit {
cursor: pointer;
&:disabled {
cursor: default;
opacity: 1;
i {
opacity: .3;
}
}
}
.o_survey_timer {
min-height: 1.2rem;
}
.o_survey_brand_message {
background-color: rgba(255,255,255,0.7);
}
.o_survey_form, .o_survey_print, .o_survey_session_manage, .o_survey_quick_access {
.o_survey_question_error {
height: 0px;
transition: height .5s ease;
line-height: 4rem;
&.slide_in {
height: 4rem;
}
}
fieldset[disabled] {
.o_survey_question_text_box,
.o_survey_question_date,
.o_survey_question_datetime,
.o_survey_question_numerical_box {
padding-left: 0px;
}
}
.o_survey_question_text_box,
.o_survey_question_date,
.o_survey_question_datetime,
.o_survey_question_numerical_box {
border: 0px;
border-bottom: 1px solid $primary;
&:disabled {
color: black !important;
border-color: $gray-600;
border-bottom: 1px solid $gray-600;
}
&:focus {
box-shadow: none;
}
.o_survey_background_shadow & {
color: $gray-900 !important;
}
}
div.bg-danger, div.bg-success, div.o_survey_question_skipped {
.o_survey_question_char_box,
.o_survey_question_date,
.o_survey_question_datetime,
.o_survey_question_numerical_box,
.o_survey_question_text_box {
border: 0;
color: $white !important;
font-weight: $font-weight-bold;
height: 2rem;
}
}
.o_survey_form_date [data-toggle="datetimepicker"] {
right: 0;
bottom: 5px;
top: auto;
}
.o_survey_choice_btn {
transition: background-color 0.3s ease;
flex: 1 0 300px;
color: $primary;
span {
line-height: 25px;
}
i {
top: 0px;
font-size: large;
&.fa-check-circle {
display: none;
}
}
&.o_survey_selected i {
display: none;
&.fa-check-circle {
display: inline;
}
}
}
input::placeholder, textarea::placeholder {
font-weight: 300;
}
.o_survey_page_per_question.o_survey_simple_choice.o_survey_minimized_display,
.o_survey_page_per_question.o_survey_multiple_choice.o_survey_minimized_display,
.o_survey_page_per_question.o_survey_numerical_box,
.o_survey_page_per_question.o_survey_date,
.o_survey_page_per_question.o_survey_datetime {
// 'pixel perfect' layouting for choice questions having less than 5 choices in page_per_question mode
// we use media queries instead of bootstrap classes because they don't provide everything needed here
@media (min-width: 768px) {
width: 50%;
position: relative;
left: 25%;
}
}
.o_survey_question_matrix {
td {
min-width: 100px;
i {
font-size: 22px;
display: none;
&.o_survey_matrix_empty_checkbox {
display: inline;
}
}
.o_survey_choice_key {
left: 10px;
right: auto;
top: 12px;
> span > span {
top: 0px;
}
}
&.o_survey_selected {
i {
display: inline;
&.o_survey_matrix_empty_checkbox {
display: none;
}
}
}
}
thead {
th:first-child {
border-top-left-radius: .25rem;
}
th:last-child {
border-top-right-radius: .25rem;
}
}
tbody tr:last-child {
th {
border-bottom-left-radius: .25rem;
}
td:last-child {
border-bottom-right-radius: .25rem;
}
}
}
}
.o_survey_quick_access {
.o_survey_error {
min-height: 2rem;
}
#session_code {
font-size: 4rem;
}
}
.o_survey_form, .o_survey_session_manage {
.o_survey_question_matrix {
th {
background-color: $primary;
}
td {
background-color: rgba($primary, 0.2);
}
}
}
/**********************************************************
Form Specific Style
**********************************************************/
.o_survey_form {
min-height: 25rem;
.o_survey_choice_btn {
cursor: pointer;
background-color: rgba($primary, 0.1);
box-shadow: $primary 0px 0px 0px 1px;
&.o_survey_selected {
box-shadow: $primary 0px 0px 0px 2px;
}
&:hover {
background-color: rgba($primary, 0.3);
.o_survey_choice_key span.o_survey_key {
opacity: 1;
}
}
}
.o_survey_choice_img img {
max-width: 95%;
max-height: 60vh;
cursor: zoom-in;
&:hover {
box-sizing: border-box;
box-shadow: 0 0 5px 2px grey;
}
}
.o_survey_choice_key {
width: 25px;
height: 25px;
border: 1px solid $primary;
span {
font-size: smaller;
top: -1px;
&.o_survey_key {
right: 21px;
border: 1px solid $primary;
border-right: 0px;
height: 25px;
transition: opacity 0.4s ease;
white-space: nowrap;
opacity: 0;
span {
top: -2px;
}
}
}
}
.o_survey_question_matrix td:hover {
background-color: rgba($primary, 0.5);
cursor: pointer;
.o_survey_choice_key span.o_survey_key {
opacity: 1;
}
}
}
/**********************************************************
Survey Session Specific Style
**********************************************************/
.o_survey_session_manage {
h1 {
font-size: 3rem;
}
h2 {
font-size: 2.5rem;
}
.o_survey_session_navigation {
position: fixed;
padding: 1rem;
top: calc(50% - 0.5rem);
cursor: pointer;
&.o_survey_session_navigation_next {
right: 1rem;
}
&.o_survey_session_navigation_previous {
left: 1rem;
}
}
.o_survey_manage_fontsize_14 {
font-size: 1.4rem;
}
.o_survey_question_header {
top: 1em;
> div {
width: 400px;
}
.progress {
height: 2rem;
border-radius: 0.6rem;
font-size: 1.2rem;
background-color: #cfcfcf;
.progress-bar {
width: 0%;
transition: width 1s ease;
}
}
}
.o_survey_session_manage_container {
.o_survey_choice_key {
display: none;
}
&.pt-6 {
padding-top: 5rem !important;
}
.o_survey_session_results {
display: flex; // here and not d-flex because we need to be able to fade-out
.mb-6 {
margin-bottom: 6rem;
}
.o_survey_session_text_answer {
.o_survey_session_text_answer_container {
border: solid 1.6px;
border-radius: 0.6rem;
font-size: 1.4rem;
width: 2rem;
opacity: .1;
transition: width .4s ease, opacity .4s ease;
overflow: hidden;
}
span {
white-space: nowrap;
}
}
}
.o_survey_session_leaderboard {
display: flex; // here and not d-flex because we need to be able to fade-out
.o_survey_leaderboard_buttons {
line-height: 4rem;
font-variant: small-caps;
}
}
}
.o_survey_session_copy {
cursor: pointer;
}
}
.o_survey_session_leaderboard {
font-size: 1.4rem;
.o_survey_session_leaderboard_container {
height: calc(2.8rem * 15);
}
.o_survey_session_leaderboard_item {
line-height: 2.4rem;
width: 100%;
transition: top ease-in-out .3s;
.o_survey_session_leaderboard_score {
width: 6.5rem;
padding-top: .2rem;
height: 2.8rem;
}
.o_survey_session_leaderboard_bar, .o_survey_session_leaderboard_bar_question {
height: 2.8rem;
}
.o_survey_session_leaderboard_bar {
min-width: 3rem;
background-color: #007A77;
z-index: 2;
}
.o_survey_session_leaderboard_bar_question_score {
top: .2rem;
right: .5rem;
width: 20rem;
z-index: 1;
}
.o_survey_session_leaderboard_name {
padding-top: .2rem;
width: 7.5rem;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
/**********************************************************
Print Specific Style
**********************************************************/
.o_survey_print {
.o_survey_choice_btn {
background-color: $gray-500;
border-color: transparent;
cursor: default;
color: white; // not bootstrap to customize for survey_print only
font-weight: bold; // not bootstrap to customize for survey_print only
&.bg-success, &.bg-danger {
opacity: 0.6;
}
&.o_survey_selected {
background-color: $gray-600;
opacity: 1;
}
i.fa-circle-thin {
display: none;
}
}
.o_survey_question_matrix {
th {
/* important needed to force override bg-primary set on th in the template */
background-color: $gray-600 !important;
}
td {
background-color: $gray-200;
&:hover {
cursor: default;
}
}
i.fa-check-square, i.fa-check-circle, i.o_survey_matrix_empty_checkbox {
color: $gray-600;
}
}
.o_survey_question_skipped {
background-color: darken($warning, 10%);
}
.o_survey_choice_question_skipped {
color: darken($warning, 10%);
}
.o_survey_choice_img img {
cursor: default;
&:hover {
box-shadow: none;
}
}
}
/**********************************************************
Zoomer Specific Style (SurveyImageZoomer widget)
When the width is small (mobile), let space above and below
to indicate that the user can close it by clicking out.
**********************************************************/
.o_survey_img_zoom_modal {
cursor: pointer;
.o_survey_img_zoom_dialog {
background-color: rgba(0,0,0,0.65);
@include media-breakpoint-down(sm) {
height: 80% !important;
}
.o_survey_img_zoom_body {
font-size: 1.5rem;
img {
max-width: 90%;
min-width: clamp(250px, 60%, 450px);
max-height: 90%;
object-fit: contain;
}
.o_survey_img_zoom_close_btn {
right: 12px;
top: 12px;
z-index: 1;
}
.o_survey_img_zoom_controls_wrapper {
bottom: 5%;
.o_survey_img_zoom_in_btn, .o_survey_img_zoom_out_btn {
background-color: rgba(0,0,0,0.65);
&:hover .fa {
color: grey;
}
}
}
}
}
}
// Avoid shifting (due to scroll bar) when opening the image zoom widget
.modal-open {
.o_survey_background {
overflow: auto !important;
}
}

View file

@ -0,0 +1,94 @@
@media print {
.chartjs-size-monitor {
display: none;
}
.chartjs-render-monitor {
width: 100% !important;
height: 100% !important;
}
.tab-content > .tab-pane {
display: block;
}
html {
height: unset;
}
}
.o_survey_results_topbar {
border: 1px solid rgba(0, 0, 0, 0.125);
.nav-item.dropdown a {
min-width: 13em;
}
.o_survey_results_topbar_dropdown_filters {
// Dropdown adapted from event templates to get a coherent styling
.dropdown-toggle {
text-align: left;
&:hover, &:focus {
text-decoration: none;
}
&:after {
float:right;
margin-top: .5em;
}
.fa {
margin-right: .4em;
}
}
.dropdown-menu {
margin-top: $navbar-padding-y;
min-width: 12rem;
max-height: 250px;
overflow-y: auto;
}
.dropdown-item {
&.active .badge { // Invert badge display when the item is active
background-color: color-contrast(map-get($theme-colors, 'primary'));
color: map-get($theme-colors, 'primary');
}
}
}
.o_survey_results_topbar_answer_filters {
.btn.filter-remove-answer {
border-color: #DEE2E6;
background-color: transparent;
white-space: normal;
text-align: left;
i.fa-times {
cursor: pointer;
}
}
}
.o_survey_results_topbar_clear_filters {
cursor: pointer;
&:hover {
text-decoration: underline;
}
}
}
.o_survey_results_question {
.o_survey_results_question_pill {
.only_right_radius {
border-radius: 0 2em 2em 0;
}
.only_left_radius {
border-radius: 2em 0 0 2em;
}
}
.o_survey_answer i {
padding:3px;
cursor:pointer;
&.o_survey_answer_matrix_whitespace {
padding-right:18px;
cursor:default;
}
}
.nav-tabs .nav-link.active {
background-color: transparent;
border-color: #DEE2E6;
font-weight: bold;
}
}