nodebb-plugin-onekite-calendar 2.0.50 → 2.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-onekite-calendar",
3
- "version": "2.0.50",
3
+ "version": "2.0.52",
4
4
  "description": "FullCalendar-based equipment reservation workflow with admin approval & HelloAsso payment for NodeBB",
5
5
  "main": "library.js",
6
6
  "license": "MIT",
package/plugin.json CHANGED
@@ -39,5 +39,5 @@
39
39
  "acpScripts": [
40
40
  "public/admin.js"
41
41
  ],
42
- "version": "2.0.50"
42
+ "version": "2.0.52"
43
43
  }
package/public/client.js CHANGED
@@ -84,12 +84,12 @@ define('forum/calendar-onekite', ['alerts', 'bootbox', 'hooks'], function (alert
84
84
 
85
85
  /* Mobile FAB date range picker (single calendar) */
86
86
  .onekite-range-picker { user-select: none; }
87
- .onekite-range-header { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; }
87
+ .onekite-range-header { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:4px; }
88
88
  .onekite-range-header .btn { padding:.25rem .5rem; }
89
89
  .onekite-range-month { font-weight:600; }
90
90
  .onekite-range-weekdays, .onekite-range-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
91
- .onekite-range-weekdays div { text-align:center; font-size:.8rem; opacity:.7; padding:2px 0; }
92
- .onekite-range-day { border:1px solid var(--bs-border-color, rgba(0,0,0,.18)); border-radius:10px; padding:8px 0; text-align:center; cursor:pointer; background:var(--bs-body-bg,#fff); color:var(--bs-body-color,#212529); }
91
+ .onekite-range-weekdays div { text-align:center; font-size:.8rem; opacity:.7; padding:1px 0; }
92
+ .onekite-range-day { border:1px solid var(--bs-border-color, rgba(0,0,0,.18)); border-radius:10px; padding:6px 0; text-align:center; cursor:pointer; background:var(--bs-body-bg,#fff); color:var(--bs-body-color,#212529); }
93
93
  .onekite-range-day.is-empty { border-color:transparent; background:transparent; cursor:default; }
94
94
  .onekite-range-day.is-disabled { opacity:.35; cursor:not-allowed; }
95
95
  .onekite-range-day.is-start, .onekite-range-day.is-end {
@@ -111,7 +111,11 @@ define('forum/calendar-onekite', ['alerts', 'bootbox', 'hooks'], function (alert
111
111
  .onekite-range-day.is-inrange { background: rgba(255,255,255,.08); }
112
112
  .onekite-range-day.is-start, .onekite-range-day.is-end { background: rgba(255,255,255,.14); color: var(--bs-body-color,#f8f9fa); border-color: var(--bs-border-color, rgba(255,255,255,.22)); }
113
113
  }
114
- .onekite-range-summary { margin-top:10px; font-size:.9rem; }
114
+ .onekite-range-summary { margin-top:6px; font-size:.9rem; }
115
+
116
+ /* Compact spacing inside the FAB creation wizard */
117
+ .onekite-wiz-type .text-muted { margin-bottom: .25rem !important; }
118
+ .onekite-wiz-type .btn { padding: .35rem .75rem; }
115
119
 
116
120
  `;
117
121
  document.head.appendChild(style);
@@ -2284,8 +2288,7 @@ async function openCreateWizardModal(opts) {
2284
2288
  end: null, // inclusive
2285
2289
  };
2286
2290
 
2287
- // Bonus UX: once dates are picked, scroll the type chooser into view.
2288
- let didAutoScrollToType = false;
2291
+ // No auto-scroll: keep the modal stable and compact.
2289
2292
 
2290
2293
  // Pre-fill from an existing FullCalendar selection (end is exclusive)
2291
2294
  try {
@@ -2329,12 +2332,11 @@ async function openCreateWizardModal(opts) {
2329
2332
  </div>
2330
2333
  <div class="onekite-range-grid" id="onekite-wiz-grid"></div>
2331
2334
  <div class="onekite-range-summary" id="onekite-wiz-summary"></div>
2332
- <div class="form-text mt-2">Sélectionne une date de début puis une date de fin (incluse). Les dates passées sont désactivées.</div>
2333
2335
 
2334
- <hr class="my-3" />
2336
+ <hr class="my-2" />
2335
2337
  ` : `
2336
2338
  <div class="onekite-range-summary" id="onekite-wiz-summary-static"><strong>${escapeHtml(summaryText())}</strong></div>
2337
- <hr class="my-3" />
2339
+ <hr class="my-2" />
2338
2340
  `;
2339
2341
 
2340
2342
  const html = `
@@ -2342,13 +2344,12 @@ async function openCreateWizardModal(opts) {
2342
2344
  ${datePickerHtml}
2343
2345
 
2344
2346
  <div id="onekite-wiz-type" class="onekite-wiz-type">
2345
- <div class="text-muted mb-2">Que veux-tu créer sur cette/ces date(s) ?</div>
2347
+ <div class="text-muted mb-1">Que veux-tu créer sur cette/ces date(s) ?</div>
2346
2348
  <div class="d-flex flex-wrap gap-2 justify-content-center">
2347
2349
  ${canCreateReservation ? '<button type="button" class="btn btn-onekite-location" id="onekite-wiz-btn-location">Location</button>' : ''}
2348
2350
  ${canCreateOuting ? '<button type="button" class="btn btn-onekite-outing" id="onekite-wiz-btn-outing">Prévision de sortie</button>' : ''}
2349
2351
  ${canCreateSpecial ? '<button type="button" class="btn btn-onekite-special" id="onekite-wiz-btn-special">Évènement</button>' : ''}
2350
2352
  </div>
2351
- <div class="form-text mt-2">Astuce : une fois les dates choisies, tu peux directement sélectionner le type ci-dessus.</div>
2352
2353
  </div>
2353
2354
  </div>
2354
2355
  `;
@@ -2449,12 +2450,6 @@ async function openCreateWizardModal(opts) {
2449
2450
  state.end = null;
2450
2451
  // If cursor month is before selected month, keep cursor
2451
2452
  render();
2452
- // Bonus UX: once a start date is chosen, bring the type buttons
2453
- // into view so the user can continue immediately (only once).
2454
- if (!didAutoScrollToType) {
2455
- didAutoScrollToType = true;
2456
- try { document.getElementById('onekite-wiz-type')?.scrollIntoView({ behavior: 'smooth', block: 'start' }); } catch (e) {}
2457
- }
2458
2453
  return;
2459
2454
  }
2460
2455
  // Second click: set end (inclusive)
@@ -2466,10 +2461,6 @@ async function openCreateWizardModal(opts) {
2466
2461
  }
2467
2462
  state.end = clicked;
2468
2463
  render();
2469
- if (!didAutoScrollToType) {
2470
- didAutoScrollToType = true;
2471
- try { document.getElementById('onekite-wiz-type')?.scrollIntoView({ behavior: 'smooth', block: 'start' }); } catch (e) {}
2472
- }
2473
2464
  });
2474
2465
  }
2475
2466
 
@@ -2575,15 +2566,7 @@ async function openCreateWizardModal(opts) {
2575
2566
 
2576
2567
  render();
2577
2568
 
2578
- // Bonus UX: if dates are already pre-filled (calendar click/selection),
2579
- // gently scroll to the type selector.
2580
- try {
2581
- if (state.start) {
2582
- setTimeout(() => {
2583
- try { document.getElementById('onekite-wiz-type')?.scrollIntoView({ behavior: 'smooth', block: 'start' }); } catch (e) {}
2584
- }, 150);
2585
- }
2586
- } catch (e) {}
2569
+ // No auto-scroll: keep the wizard compact and stable.
2587
2570
  } catch (e) {}
2588
2571
  });
2589
2572
  }