toggle-components-library 1.37.0-beta.4 → 1.37.0-beta.5

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.
@@ -48729,8 +48729,8 @@ var TogglePodiumBadge_component = normalizeComponent(
48729
48729
  )
48730
48730
 
48731
48731
  /* harmony default export */ var TogglePodiumBadge = (TogglePodiumBadge_component.exports);
48732
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"a48609c2-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/breadcrumb/ToggleBreadCrumb.vue?vue&type=template&id=d98b2612&
48733
- var ToggleBreadCrumbvue_type_template_id_d98b2612_render = function render() {
48732
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"a48609c2-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/breadcrumb/ToggleBreadCrumb.vue?vue&type=template&id=93f64828&
48733
+ var ToggleBreadCrumbvue_type_template_id_93f64828_render = function render() {
48734
48734
  var _vm = this,
48735
48735
  _c = _vm._self._c;
48736
48736
  return _vm.breadcrumb_computed ? _c('div', {
@@ -48739,10 +48739,15 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_render = function render() {
48739
48739
  return _c('div', {
48740
48740
  key: index
48741
48741
  }, [index === _vm.breadcrumb_computed.length - 1 && _vm.editable ? [_c('span', {
48742
+ ref: "editableSpan",
48743
+ refInFor: true,
48742
48744
  staticClass: "toggle-breadcrumb-editable-input",
48743
48745
  attrs: {
48744
48746
  "contenteditable": "true"
48745
48747
  },
48748
+ domProps: {
48749
+ "textContent": _vm._s(_vm.initialContent)
48750
+ },
48746
48751
  on: {
48747
48752
  "input": function ($event) {
48748
48753
  return _vm.updateContent($event);
@@ -48757,7 +48762,7 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_render = function render() {
48757
48762
  return _vm.handlePaste.apply(null, arguments);
48758
48763
  }
48759
48764
  }
48760
- }, [_vm._v(_vm._s(crumb.name))])] : [crumb.link && !_vm.isNuxt ? _c('router-link', {
48765
+ })] : [crumb.link && !_vm.isNuxt ? _c('router-link', {
48761
48766
  staticClass: "back-product",
48762
48767
  attrs: {
48763
48768
  "to": {
@@ -48778,9 +48783,9 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_render = function render() {
48778
48783
  }, [_vm._v(_vm._s(crumb.name))]) : _vm._e()]], 2);
48779
48784
  }), 0) : _vm._e();
48780
48785
  };
48781
- var ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns = [];
48786
+ var ToggleBreadCrumbvue_type_template_id_93f64828_staticRenderFns = [];
48782
48787
 
48783
- // CONCATENATED MODULE: ./src/components/breadcrumb/ToggleBreadCrumb.vue?vue&type=template&id=d98b2612&
48788
+ // CONCATENATED MODULE: ./src/components/breadcrumb/ToggleBreadCrumb.vue?vue&type=template&id=93f64828&
48784
48789
 
48785
48790
  // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/breadcrumb/ToggleBreadCrumb.vue?vue&type=script&lang=js&
48786
48791
  /* harmony default export */ var ToggleBreadCrumbvue_type_script_lang_js_ = ({
@@ -48805,9 +48810,11 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns = [];
48805
48810
  required: false
48806
48811
  }
48807
48812
  },
48808
- data: function () {
48813
+ data() {
48809
48814
  return {
48810
- content: ''
48815
+ content: '',
48816
+ initialContent: '',
48817
+ lastSelection: null
48811
48818
  };
48812
48819
  },
48813
48820
  computed: {
@@ -48815,29 +48822,62 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns = [];
48815
48822
  return this.isNuxt ? this.breadcrumb : this.$route.meta.breadcrumb;
48816
48823
  }
48817
48824
  },
48825
+ mounted() {
48826
+ if (this.breadcrumb_computed && this.breadcrumb_computed.length > 0) {
48827
+ const lastCrumb = this.breadcrumb_computed[this.breadcrumb_computed.length - 1];
48828
+ this.content = lastCrumb.name;
48829
+ this.initialContent = lastCrumb.name;
48830
+ }
48831
+ },
48818
48832
  methods: {
48833
+ saveSelection() {
48834
+ if (window.getSelection) {
48835
+ const sel = window.getSelection();
48836
+ if (sel.getRangeAt && sel.rangeCount) {
48837
+ const range = sel.getRangeAt(0);
48838
+ this.lastSelection = {
48839
+ start: range.startOffset,
48840
+ end: range.endOffset
48841
+ };
48842
+ }
48843
+ }
48844
+ },
48845
+ restoreSelection() {
48846
+ if (!this.lastSelection || !this.$refs.editableSpan) return;
48847
+ const el = this.$refs.editableSpan;
48848
+ if (!el.firstChild && typeof el.textContent === 'string') {
48849
+ el.textContent = this.content || '';
48850
+ }
48851
+ try {
48852
+ const range = document.createRange();
48853
+ const sel = window.getSelection();
48854
+ const textNode = el.firstChild || el;
48855
+
48856
+ // Ensure we don't exceed the text length
48857
+ const start = Math.min(this.lastSelection.start, textNode.length);
48858
+ const end = Math.min(this.lastSelection.end, textNode.length);
48859
+ range.setStart(textNode, start);
48860
+ range.setEnd(textNode, end);
48861
+ sel.removeAllRanges();
48862
+ sel.addRange(range);
48863
+ } catch (e) {
48864
+ console.warn('Failed to restore selection:', e);
48865
+ }
48866
+ },
48819
48867
  handlePaste(event) {
48820
- // Get plain text from clipboard and clean it
48821
48868
  const text = (event.clipboardData || window.clipboardData).getData('text');
48822
48869
  const cleanText = text.replace(/[\r\n\s]+/g, ' ').trim();
48823
-
48824
- // Get current selection information
48870
+ this.saveSelection();
48825
48871
  const selection = window.getSelection();
48826
48872
  const selectionLength = selection.toString().length;
48827
48873
  const currentLength = this.content.length;
48828
-
48829
- // Check if adding the pasted text would exceed maxChars
48830
48874
  if (currentLength - selectionLength + cleanText.length <= this.maxChars && selection.rangeCount) {
48831
48875
  const range = selection.getRangeAt(0);
48832
48876
  range.deleteContents();
48833
48877
  range.insertNode(document.createTextNode(cleanText));
48834
-
48835
- // Move cursor to end of inserted text
48836
48878
  range.collapse(false);
48837
48879
  selection.removeAllRanges();
48838
48880
  selection.addRange(range);
48839
-
48840
- // Update content
48841
48881
  this.content = event.target.innerText;
48842
48882
  this.$emit('update:lastCrumb', this.content);
48843
48883
  }
@@ -48847,27 +48887,17 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns = [];
48847
48887
  event.target.blur();
48848
48888
  },
48849
48889
  updateContent(event) {
48890
+ this.saveSelection();
48850
48891
  const newText = event.target.innerText;
48851
-
48852
- // If text exceeds maxChars, prevent the change
48853
48892
  if (newText.length > this.maxChars) {
48854
- // Save current selection
48855
- const selection = window.getSelection();
48856
- const range = selection.getRangeAt(0);
48857
- const cursorOffset = range.startOffset;
48858
-
48859
- // Restore previous content
48860
48893
  event.target.innerText = this.content;
48861
-
48862
- // Restore cursor position
48863
- const newRange = document.createRange();
48864
- newRange.setStart(event.target.firstChild || event.target, Math.min(cursorOffset, this.content.length));
48865
- newRange.collapse(true);
48866
- selection.removeAllRanges();
48867
- selection.addRange(newRange);
48894
+ this.restoreSelection();
48868
48895
  } else {
48869
48896
  this.content = newText;
48870
48897
  this.$emit('update:lastCrumb', this.content);
48898
+ this.$nextTick(() => {
48899
+ this.restoreSelection();
48900
+ });
48871
48901
  }
48872
48902
  }
48873
48903
  }
@@ -48884,8 +48914,8 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns = [];
48884
48914
 
48885
48915
  var ToggleBreadCrumb_component = normalizeComponent(
48886
48916
  breadcrumb_ToggleBreadCrumbvue_type_script_lang_js_,
48887
- ToggleBreadCrumbvue_type_template_id_d98b2612_render,
48888
- ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns,
48917
+ ToggleBreadCrumbvue_type_template_id_93f64828_render,
48918
+ ToggleBreadCrumbvue_type_template_id_93f64828_staticRenderFns,
48889
48919
  false,
48890
48920
  null,
48891
48921
  null,