ngx-xtroedge-cms 1.3.7 → 1.3.8

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/dist/index.mjs CHANGED
@@ -131,10 +131,12 @@ var CMS_STYLES = `
131
131
  .lcms-toggle input:checked + .lcms-toggle-slider::after { transform: translateX(16px); background: white; }
132
132
  .lcms-toggle-label { font-size: 12px; font-weight: 700; color: rgba(255,255,255,0.5); letter-spacing: 0.5px; transition: color 0.25s; }
133
133
  .lcms-toggle input:checked ~ .lcms-toggle-label { color: rgba(var(--lcms-primary-rgb, 0,200,83),0.75); }
134
- .lcms-lang-switch { display: flex; border: 1px solid rgba(var(--lcms-primary-rgb, 0,200,83),0.4); border-radius: 6px; overflow: hidden; margin-left: auto; }
135
- .lcms-lang-btn { background: transparent; border: none; color: rgba(255,255,255,0.45); padding: 3px 12px; font-size: 11px; font-weight: 600; cursor: pointer; transition: all 0.2s; }
136
- .lcms-lang-btn.active { background: var(--lcms-primary, #00C853); color: white; }
137
- .lcms-lang-btn:hover:not(.active) { color: white; background: rgba(var(--lcms-primary-rgb, 0,200,83),0.2); }
134
+ .lcms-lang-switch { margin-left: auto; position: relative; }
135
+ .lcms-lang-select { background: rgba(var(--lcms-primary-rgb, 0,200,83),0.15); border: 1px solid rgba(var(--lcms-primary-rgb, 0,200,83),0.4); border-radius: 6px; color: white; padding: 3px 24px 3px 8px; font-size: 11px; font-weight: 600; cursor: pointer; appearance: none; -webkit-appearance: none; outline: none; transition: all 0.2s; }
136
+ .lcms-lang-select:hover { background: rgba(var(--lcms-primary-rgb, 0,200,83),0.3); }
137
+ .lcms-lang-select:focus { border-color: var(--lcms-primary, #00C853); }
138
+ .lcms-lang-select option { background: #1a1a2e; color: white; }
139
+ .lcms-lang-arrow { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); pointer-events: none; color: rgba(255,255,255,0.6); font-size: 10px; }
138
140
  .lcms-close-btn { background: transparent; border: none; color: rgba(255,255,255,0.4); cursor: pointer; padding: 2px; display: flex; transition: color 0.2s; }
139
141
  .lcms-close-btn:hover { color: white; }
140
142
  .lcms-changes-info { font-size: 12px; color: rgba(var(--lcms-primary-rgb, 0,200,83),0.75); margin-bottom: 10px; padding-left: 2px; }
@@ -738,16 +740,24 @@ var XtroedgeCMS = class _XtroedgeCMS {
738
740
  buildLangButtons() {
739
741
  if (!this.langSwitchEl) return;
740
742
  this.langSwitchEl.innerHTML = "";
743
+ const select = document.createElement("select");
744
+ select.className = "lcms-lang-select";
741
745
  for (const lang of this.languages) {
742
- const btn = document.createElement("button");
743
- btn.className = "lcms-lang-btn" + (this.currentLang === lang ? " active" : "");
744
- btn.textContent = lang.toUpperCase();
745
- btn.addEventListener("click", (e) => {
746
- e.stopPropagation();
747
- this.switchLang(lang);
748
- });
749
- this.langSwitchEl.appendChild(btn);
746
+ const opt = document.createElement("option");
747
+ opt.value = lang;
748
+ opt.textContent = lang.toUpperCase();
749
+ if (lang === this.currentLang) opt.selected = true;
750
+ select.appendChild(opt);
750
751
  }
752
+ select.addEventListener("change", (e) => {
753
+ e.stopPropagation();
754
+ this.switchLang(e.target.value);
755
+ });
756
+ this.langSwitchEl.appendChild(select);
757
+ const arrow = document.createElement("span");
758
+ arrow.className = "lcms-lang-arrow";
759
+ arrow.textContent = "\u25BC";
760
+ this.langSwitchEl.appendChild(arrow);
751
761
  }
752
762
  // ===============================================
753
763
  // UI UPDATE
@@ -778,10 +788,8 @@ var XtroedgeCMS = class _XtroedgeCMS {
778
788
  if (this.editToggle) this.editToggle.checked = this.editMode;
779
789
  if (this.langSwitchEl) {
780
790
  this.langSwitchEl.classList.toggle("lcms-hidden", !this.editMode || this.languages.length <= 1);
781
- const btns = this.langSwitchEl.querySelectorAll(".lcms-lang-btn");
782
- btns.forEach((btn) => {
783
- btn.classList.toggle("active", btn.textContent === this.currentLang.toUpperCase());
784
- });
791
+ const sel = this.langSwitchEl.querySelector(".lcms-lang-select");
792
+ if (sel) sel.value = this.currentLang;
785
793
  }
786
794
  if (this.editModeContent) {
787
795
  this.editModeContent.classList.toggle("lcms-hidden", !this.editMode);
@@ -1668,15 +1676,12 @@ var XtroedgeCMS = class _XtroedgeCMS {
1668
1676
  }
1669
1677
  switchLang(lang) {
1670
1678
  this.currentLang = lang;
1671
- const html = document.documentElement;
1672
- html.setAttribute("lang", lang);
1673
- html.setAttribute("dir", lang === "ar" ? "rtl" : "ltr");
1674
1679
  localStorage.setItem("selectedLanguage", lang);
1675
- this.updateElementTexts();
1676
- this.buildLangButtons();
1677
- this.updateUI();
1678
- window.dispatchEvent(new CustomEvent("cms:langChanged", { detail: { lang } }));
1680
+ document.documentElement.setAttribute("lang", lang);
1681
+ document.documentElement.setAttribute("dir", lang === "ar" ? "rtl" : "ltr");
1679
1682
  this.config.onLangChanged?.(lang);
1683
+ window.dispatchEvent(new CustomEvent("cms:langChanged", { detail: { lang } }));
1684
+ window.location.reload();
1680
1685
  }
1681
1686
  // ===============================================
1682
1687
  // FAB DRAG