Vishwanatha HM commited on
Commit
3968c8b
·
1 Parent(s): fa5e8c7

Using event delegation and dataset to reduce the listener to one (#168)

Browse files

* added all the possible position options into the demo page

* event listener is reduced to one and data- attribute is used.

Files changed (3) hide show
  1. demo/index.html +19 -5
  2. demo/scripts/demo.js +7 -47
  3. demo/styles/demo.scss +12 -1
demo/index.html CHANGED
@@ -142,11 +142,25 @@ driver.highlight({
142
  </code></pre>
143
  </div>
144
  <div class="section__example">
145
- <div class="top-20 position-btns">
146
- <a href="#" id="position-btn-left">On my Left</a>
147
- <a href="#" id="position-btn-top">On my Top</a>
148
- <a href="#" id="position-btn-bottom">On my Bottom</a>
149
- <a href="#" id="position-btn-right">On my Right</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
  </div>
151
  <p class="top-20">If you don't specify the position or specify it to be <code>auto</code>, it will automatically
152
  find the suitable position for the popover and show it</p>
 
142
  </code></pre>
143
  </div>
144
  <div class="section__example">
145
+ <div class="top-90 position-btns" id="position-btns">
146
+ <a href="#" id="position-btn-left" data-alignment="left">Left, Left Top</a>
147
+ <a href="#" id="position-btn-left-center" data-alignment="left-center">Left Center</a>
148
+ <a href="#" id="position-btn-left-bottom" data-alignment="left-bottom">Left Bottom</a>
149
+
150
+ <a href="#" id="position-btn-right" data-alignment="right">Right, Right Top</a>
151
+ <a href="#" id="position-btn-right-center" data-alignment="right-center">Right Center</a>
152
+ <a href="#" id="position-btn-right-bottom" data-alignment="right-bottom">Right Bottom</a>
153
+
154
+ <a href="#" id="position-btn-top" data-alignment="top">Top, Top-left</a>
155
+ <a href="#" id="position-btn-top-center" data-alignment="top-center">Top Center</a>
156
+ <a href="#" id="position-btn-top-right" data-alignment="top-right">Top Right</a>
157
+
158
+ <a href="#" id="position-btn-bottom" data-alignment="bottom">Bottom, Bottom left</a>
159
+ <a href="#" id="position-btn-bottom-center" data-alignment="bottom-center">Bottom center</a>
160
+ <a href="#" id="position-btn-bottom-right" data-alignment="bottom-right">Bottom right</a>
161
+
162
+ <a href="#" id="position-btn-mid-center" data-alignment="mid-center">Mid Center</a>
163
+ <!-- <a href="#" id="position-btn-auto" data-alignment="auto">Auto</a> -->
164
  </div>
165
  <p class="top-20">If you don't specify the position or specify it to be <code>auto</code>, it will automatically
166
  find the suitable position for the popover and show it</p>
demo/scripts/demo.js CHANGED
@@ -205,65 +205,25 @@ document.addEventListener('DOMContentLoaded', function () {
205
  padding: 0,
206
  });
207
 
208
- document.querySelector('#position-btn-left')
209
  .addEventListener('click', (e) => {
210
  e.preventDefault();
211
 
212
- positionBtnsDriver.highlight({
213
- element: '#position-btn-left',
214
- showButtons: false,
215
- popover: {
216
- title: 'Did you know?',
217
- description: 'You can add HTML in title or description also!',
218
- position: 'left'
219
- }
220
- });
221
- });
222
-
223
- document.querySelector('#position-btn-right')
224
- .addEventListener('click', (e) => {
225
- e.preventDefault();
226
-
227
- positionBtnsDriver.highlight({
228
- element: '#position-btn-right',
229
- showButtons: false,
230
- popover: {
231
- title: 'Did you know?',
232
- description: 'You can add HTML in title or description also!',
233
- position: 'right'
234
- }
235
- });
236
- });
237
-
238
- document.querySelector('#position-btn-bottom')
239
- .addEventListener('click', (e) => {
240
- e.preventDefault();
241
-
242
- positionBtnsDriver.highlight({
243
- element: '#position-btn-bottom',
244
- showButtons: false,
245
- popover: {
246
- title: 'Did you know?',
247
- description: 'You can add HTML in title or description also!',
248
- position: 'bottom'
249
- }
250
- });
251
- });
252
 
253
- document.querySelector('#position-btn-top')
254
- .addEventListener('click', (e) => {
255
- e.preventDefault();
256
 
257
  positionBtnsDriver.highlight({
258
- element: '#position-btn-top',
259
  showButtons: false,
260
  popover: {
261
  title: 'Did you know?',
262
  description: 'You can add HTML in title or description also!',
263
- position: 'top'
264
  }
265
  });
266
- });
267
 
268
  /////////////////////////////////////////////////////
269
  // Highlighting single element with popover position
 
205
  padding: 0,
206
  });
207
 
208
+ document.querySelector('#position-btns')
209
  .addEventListener('click', (e) => {
210
  e.preventDefault();
211
 
212
+ let id = e.target.id;
213
+ let alignment = e.target.dataset.alignment;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
214
 
215
+ if (!alignment) return;
 
 
216
 
217
  positionBtnsDriver.highlight({
218
+ element: `#${id}`,
219
  showButtons: false,
220
  popover: {
221
  title: 'Did you know?',
222
  description: 'You can add HTML in title or description also!',
223
+ position: alignment
224
  }
225
  });
226
+ })
227
 
228
  /////////////////////////////////////////////////////
229
  // Highlighting single element with popover position
demo/styles/demo.scss CHANGED
@@ -108,6 +108,17 @@ section {
108
  }
109
  }
110
 
 
 
 
 
 
 
 
 
 
 
 
111
  .position-btns a {
112
  text-decoration: none;
113
  font-size: 13px;
@@ -115,4 +126,4 @@ section {
115
  background: #f54336;
116
  color: white !important;
117
  border-radius: 6px;
118
- }
 
108
  }
109
  }
110
 
111
+ .position-btns {
112
+ display: grid;
113
+ grid-template-columns: repeat(3,1fr);
114
+ grid-gap: 8px;
115
+ text-align: center;
116
+
117
+ #position-btn-mid-center{
118
+ grid-column: 2/ span 1;
119
+ }
120
+ }
121
+
122
  .position-btns a {
123
  text-decoration: none;
124
  font-size: 13px;
 
126
  background: #f54336;
127
  color: white !important;
128
  border-radius: 6px;
129
+ }