summaryrefslogtreecommitdiff
path: root/addons/web_tour/static/src/scss
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/web_tour/static/src/scss
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/web_tour/static/src/scss')
-rw-r--r--addons/web_tour/static/src/scss/keyframes.scss1
-rw-r--r--addons/web_tour/static/src/scss/tip.scss240
2 files changed, 241 insertions, 0 deletions
diff --git a/addons/web_tour/static/src/scss/keyframes.scss b/addons/web_tour/static/src/scss/keyframes.scss
new file mode 100644
index 00000000..74f3bbf0
--- /dev/null
+++ b/addons/web_tour/static/src/scss/keyframes.scss
@@ -0,0 +1 @@
+// TODO remove in master
diff --git a/addons/web_tour/static/src/scss/tip.scss b/addons/web_tour/static/src/scss/tip.scss
new file mode 100644
index 00000000..468e82da
--- /dev/null
+++ b/addons/web_tour/static/src/scss/tip.scss
@@ -0,0 +1,240 @@
+$o-tip-width: 28px;
+$o-tip-height: 38px;
+$o-tip-anchor-space: 0;
+$o-tip-bounce-half-size: 3px;
+$o-tip-color: $o-enterprise-color;
+$o-tip-border-width: 3px;
+$o-tip-border-color: white;
+$o-tip-animation-speed: 500ms;
+$o-tip-arrow-size: 12px;
+
+$o-tip-duration-in: 200ms;
+$o-tip-size-duration-in: floor($o-tip-duration-in * 3 / 4);
+$o-tip-size-delay-in: $o-tip-duration-in - $o-tip-size-duration-in;
+
+@keyframes move-left-right {
+ 0% {
+ transform: translate(-$o-tip-bounce-half-size, 0);
+ }
+ 100% {
+ transform: translate($o-tip-bounce-half-size, 0);
+ }
+}
+@keyframes move-bottom-top {
+ 0% {
+ transform: translate(0, -$o-tip-bounce-half-size);
+ }
+ 100% {
+ transform: translate(0, $o-tip-bounce-half-size);
+ }
+}
+
+.o_tooltip_parent {
+ position: relative !important;
+
+ // Tooltips are placed in the <body/> element with z-index 1070 because this
+ // is the only way to position them above everything else. However, for
+ // scrolling performance, the tooltip is placed in its ideal location (see
+ // Tip._get_ideal_location). When in this location, the tooltip were
+ // sometimes overlapping unwanted elements (e.g. chat windows).
+ //
+ // Changing the opacity of the tooltip parents forces the creation of a
+ // stacking context; the home menu tooltips are thus now considered to be
+ // root-level z-index auto (or the default home menu one) and should so
+ // act like their parent (e.g. the home menu is below the chat windows so
+ // the inner tooltips will be too). The tips will be above all elements of
+ // the home menu as they still have a high z-index, but relative to the
+ // home menu (this is especially useful in the website where most tooltips
+ // are placed in the body and need to be placed above elements with z-index
+ // like the navbar).
+ opacity: 0.999 !important;
+}
+
+.o_tooltip {
+ /*rtl:begin:ignore*/
+ position: absolute !important;
+ top: 50% !important;
+ left: 50% !important;
+ /*rtl:end:ignore*/
+ z-index: $zindex-tooltip !important; // See comment on 'o_tooltip_parent' class
+ opacity: 0 !important;
+ width: $o-tip-width !important;
+ height: $o-tip-width !important; // the shape must be done using transform
+ margin: 0 !important;
+ padding: 0 !important;
+
+ transition: opacity 400ms ease 0ms !important;
+
+ &.o_animated {
+ animation: move-bottom-top $o-tip-animation-speed ease-in 0ms infinite alternate !important;
+
+ &.right, &.left {
+ animation-name: move-left-right !important;
+ }
+ }
+ &.o_tooltip_visible {
+ opacity: 1 !important;
+ }
+
+ &.o_tooltip_fixed {
+ position: fixed !important;
+ }
+
+ // Use the ::before element to make the tip shape: a simple filled and
+ // bordered square with one corner and 3 rounded corners, then transformed.
+ // Transform, from right to left: 1) make the arrow point up, 2) scale along
+ // Y axis so that the tip reach the desired height, 3) translate along the Y
+ // axis so that the arrow exactly points at the original square tip border
+ // = the border that will be against the pointed element, 4) rotate the
+ // the shape depending on the tip orientation.
+ &::before {
+ content: "";
+ @include o-position-absolute(0, 0);
+ width: $o-tip-width; // Not 100% need to stay small and square for close transition
+ height: $o-tip-width;
+ border: $o-tip-border-width solid $o-tip-border-color;
+ border-radius: 0 50% 50% 50%;
+ background: radial-gradient(lighten($o-tip-color, 7%), $o-tip-color);
+ box-shadow: 0 0 40px 2px rgba(255, 255, 255, 0.5);
+ }
+ $-sqrt-2: 1.4142;
+ $-tip-scale: $o-tip-height / ((1 + $-sqrt-2) * $o-tip-width / 2);
+ $-tip-overflow: ($-sqrt-2 * $-tip-scale - 1) * $o-tip-width / 2;
+ $-tip-translate: $o-tip-anchor-space + $-tip-overflow;
+ &.top::before {
+ transform: rotate(180deg) translateY($-tip-translate) scaleY($-tip-scale) rotate(45deg);
+ }
+ &.right::before {
+ transform: rotate(270deg) translateY($-tip-translate) scaleY($-tip-scale) rotate(45deg);
+ }
+ &.bottom::before {
+ transform: rotate(0deg) translateY($-tip-translate) scaleY($-tip-scale) rotate(45deg);
+ }
+ &.left::before {
+ transform: rotate(90deg) translateY($-tip-translate) scaleY($-tip-scale) rotate(45deg);
+ }
+
+ > .o_tooltip_overlay {
+ display: none;
+ @include o-position-absolute(0, 0, 0, 0);
+ z-index: -1;
+ }
+ > .o_tooltip_content {
+ overflow: hidden;
+ direction: ltr;
+ position: relative;
+ padding: 7px 14px;
+ background-color: inherit;
+ color: transparent;
+ visibility: hidden;
+
+ // Force style so that it does not depend on where the tooltip is attached
+ line-height: $line-height-base;
+ font-size: $font-size-base;
+ font-family: $font-family-sans-serif;
+ font-weight: normal;
+
+ .o_skip_tour {
+ display: inline-block;
+ margin-top: 4px;
+ cursor: pointer;
+ color: gray;
+ &:hover {
+ color: darken(gray, 20%);
+ }
+ }
+ > p:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ &.active {
+ border: $o-tip-border-width solid $o-tip-color !important;
+ background-color: white !important;
+
+ transition:
+ width $o-tip-size-duration-in ease $o-tip-size-delay-in,
+ height $o-tip-size-duration-in ease $o-tip-size-delay-in,
+ margin $o-tip-size-duration-in ease $o-tip-size-delay-in !important;
+
+ &::before {
+ width: $o-tip-arrow-size;
+ height: $o-tip-arrow-size;
+ border-color: $o-tip-color;
+ border-radius: 0;
+ background: white;
+ box-shadow: none;
+ }
+
+ > .o_tooltip_overlay {
+ display: block;
+ }
+ > .o_tooltip_content {
+ // Content background must appear immediately to hide the bottom of
+ // the square present to shape the bubble arrow. But text must
+ // appear at the very end.
+ color: black;
+ visibility: visible;
+ transition: color 0ms ease $o-tip-duration-in;
+ }
+
+ $-arrow-offset: ($o-tip-width - $o-tip-arrow-size) / 2 - $o-tip-border-width;
+ $-tip-translate: $o-tip-anchor-space + $o-tip-arrow-size / 2;
+ &.right {
+ transform: translateX($-tip-translate) !important;
+
+ &::before {
+ @include o-position-absolute($left: -$o-tip-arrow-size, $top: $-arrow-offset);
+ transform: translateX(50%) rotate(45deg);
+ }
+ }
+ &.top {
+ transform: translateY(-$-tip-translate) !important;
+
+ &::before {
+ /*rtl:begin:ignore*/
+ @include o-position-absolute($bottom: -$o-tip-arrow-size, $left: $-arrow-offset);
+ /*rtl:end:ignore*/
+ transform: translateY(-50%) rotate(45deg);
+ }
+ }
+ &.left {
+ transform: translateX(-$-tip-translate) !important;
+
+ &::before {
+ @include o-position-absolute($right: -$o-tip-arrow-size, $top: $-arrow-offset);
+ transform: translateX(-50%) rotate(45deg);
+ }
+ }
+ &.bottom {
+ transform: translateY($-tip-translate) !important;
+
+ &::before {
+ /*rtl:begin:ignore*/
+ @include o-position-absolute($top: -$o-tip-arrow-size, $left: $-arrow-offset);
+ /*rtl:end:ignore*/
+ transform: translateY(50%) rotate(45deg);
+ }
+ }
+ &.inverse {
+ &.left, &.right {
+ &::before {
+ top: auto;
+ bottom: $-arrow-offset;
+ }
+ }
+ &.top, &.bottom {
+ &::before {
+ left: auto#{"/*rtl:ignore*/"};
+ right: $-arrow-offset#{"/*rtl:ignore*/"};
+ }
+ }
+ }
+ }
+}
+
+@media print {
+ .o_tooltip {
+ display: none !important;
+ }
+}