kamrify commited on
Commit
d6b7277
·
1 Parent(s): 9d9dd89

Add popover arrow adjustment

Browse files
Files changed (2) hide show
  1. src/popover.ts +10 -7
  2. src/style.css +66 -3
src/popover.ts CHANGED
@@ -12,7 +12,7 @@ export type Popover = {
12
 
13
  type PopoverDOM = {
14
  wrapper: HTMLElement;
15
- tip: HTMLElement;
16
  title: HTMLElement;
17
  description: HTMLElement;
18
  footer: HTMLElement;
@@ -47,10 +47,13 @@ export function refreshPopover(element: Element) {
47
  return;
48
  }
49
 
50
- const popoverTip = popover.tip;
51
 
52
  // const position = calculatePopoverPosition(element);
53
- popoverTip?.classList.add("driver-popover-tip-left");
 
 
 
54
  }
55
 
56
  function calculatePopoverPosition(element: Element) {}
@@ -59,8 +62,8 @@ function createPopover(): PopoverDOM {
59
  const wrapper = document.createElement("div");
60
  wrapper.classList.add("driver-popover");
61
 
62
- const tip = document.createElement("div");
63
- tip.classList.add("driver-popover-tip");
64
 
65
  const title = document.createElement("div");
66
  title.classList.add("driver-popover-title");
@@ -94,14 +97,14 @@ function createPopover(): PopoverDOM {
94
  footer.appendChild(closeButton);
95
  footer.appendChild(footerButtons);
96
 
97
- wrapper.appendChild(tip);
98
  wrapper.appendChild(title);
99
  wrapper.appendChild(description);
100
  wrapper.appendChild(footer);
101
 
102
  return {
103
  wrapper,
104
- tip,
105
  title,
106
  description,
107
  footer,
 
12
 
13
  type PopoverDOM = {
14
  wrapper: HTMLElement;
15
+ arrow: HTMLElement;
16
  title: HTMLElement;
17
  description: HTMLElement;
18
  footer: HTMLElement;
 
47
  return;
48
  }
49
 
50
+ const popoverArrow = popover.arrow;
51
 
52
  // const position = calculatePopoverPosition(element);
53
+ popoverArrow?.classList.add(
54
+ "driver-popover-arrow-side-bottom",
55
+ "driver-popover-arrow-align-center"
56
+ );
57
  }
58
 
59
  function calculatePopoverPosition(element: Element) {}
 
62
  const wrapper = document.createElement("div");
63
  wrapper.classList.add("driver-popover");
64
 
65
+ const arrow = document.createElement("div");
66
+ arrow.classList.add("driver-popover-arrow");
67
 
68
  const title = document.createElement("div");
69
  title.classList.add("driver-popover-title");
 
97
  footer.appendChild(closeButton);
98
  footer.appendChild(footerButtons);
99
 
100
+ wrapper.appendChild(arrow);
101
  wrapper.appendChild(title);
102
  wrapper.appendChild(description);
103
  wrapper.appendChild(footer);
104
 
105
  return {
106
  wrapper,
107
+ arrow,
108
  title,
109
  description,
110
  footer,
src/style.css CHANGED
@@ -40,16 +40,79 @@
40
  background-color: #fff;
41
  }
42
 
43
- .driver-popover-tip {
44
  content: "";
45
  position: absolute;
46
  border: 5px solid #fff;
47
  }
48
 
49
- .driver-popover-tip-left {
50
- top: 15px;
51
  left: 100%;
52
  border-right-color: transparent;
53
  border-bottom-color: transparent;
54
  border-top-color: transparent;
55
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  background-color: #fff;
41
  }
42
 
43
+ .driver-popover-arrow {
44
  content: "";
45
  position: absolute;
46
  border: 5px solid #fff;
47
  }
48
 
49
+ /** Popover Arrow Sides **/
50
+ .driver-popover-arrow-side-left {
51
  left: 100%;
52
  border-right-color: transparent;
53
  border-bottom-color: transparent;
54
  border-top-color: transparent;
55
  }
56
+
57
+ .driver-popover-arrow-side-right {
58
+ right: 100%;
59
+ border-left-color: transparent;
60
+ border-bottom-color: transparent;
61
+ border-top-color: transparent;
62
+ }
63
+
64
+ .driver-popover-arrow-side-top {
65
+ top: 100%;
66
+ border-right-color: transparent;
67
+ border-bottom-color: transparent;
68
+ border-left-color: transparent;
69
+ }
70
+
71
+ .driver-popover-arrow-side-bottom {
72
+ bottom: 100%;
73
+ border-left-color: transparent;
74
+ border-top-color: transparent;
75
+ border-right-color: transparent;
76
+ }
77
+
78
+ .driver-popover-arrow-side-center {
79
+ display: none;
80
+ }
81
+
82
+ /* Left/Start + Right/Start */
83
+ .driver-popover-arrow-side-left.driver-popover-arrow-align-start,
84
+ .driver-popover-arrow-side-right.driver-popover-arrow-align-start {
85
+ top: 15px;
86
+ }
87
+
88
+ /* Top/Start + Bottom/Start */
89
+ .driver-popover-arrow-side-top.driver-popover-arrow-align-start,
90
+ .driver-popover-arrow-side-bottom.driver-popover-arrow-align-start {
91
+ left: 15px;
92
+ }
93
+
94
+ /* End/Left + End/Right */
95
+ .driver-popover-arrow-align-end.driver-popover-arrow-side-left,
96
+ .driver-popover-arrow-align-end.driver-popover-arrow-side-right {
97
+ bottom: 15px;
98
+ }
99
+
100
+ /* Top/End + Bottom/End */
101
+ .driver-popover-arrow-side-top.driver-popover-arrow-align-end,
102
+ .driver-popover-arrow-side-bottom.driver-popover-arrow-align-end {
103
+ right: 15px;
104
+ }
105
+
106
+ /* Left/Center + Right/Center */
107
+ .driver-popover-arrow-side-left.driver-popover-arrow-align-center,
108
+ .driver-popover-arrow-side-right.driver-popover-arrow-align-center {
109
+ top: 50%;
110
+ margin-top: -5px;
111
+ }
112
+
113
+ /* Top/Center + Bottom/Center */
114
+ .driver-popover-arrow-side-top.driver-popover-arrow-align-center,
115
+ .driver-popover-arrow-side-bottom.driver-popover-arrow-align-center {
116
+ left: 50%;
117
+ margin-left: -5px;
118
+ }