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

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.
@@ -48720,8 +48720,8 @@ var TogglePodiumBadge_component = normalizeComponent(
48720
48720
  )
48721
48721
 
48722
48722
  /* harmony default export */ var TogglePodiumBadge = (TogglePodiumBadge_component.exports);
48723
- // 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&
48724
- var ToggleBreadCrumbvue_type_template_id_d98b2612_render = function render() {
48723
+ // 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=521e5ac4&
48724
+ var ToggleBreadCrumbvue_type_template_id_521e5ac4_render = function render() {
48725
48725
  var _vm = this,
48726
48726
  _c = _vm._self._c;
48727
48727
  return _vm.breadcrumb_computed ? _c('div', {
@@ -48730,14 +48730,15 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_render = function render() {
48730
48730
  return _c('div', {
48731
48731
  key: index
48732
48732
  }, [index === _vm.breadcrumb_computed.length - 1 && _vm.editable ? [_c('span', {
48733
+ ref: "editableSpan",
48734
+ refInFor: true,
48733
48735
  staticClass: "toggle-breadcrumb-editable-input",
48734
48736
  attrs: {
48735
48737
  "contenteditable": "true"
48736
48738
  },
48737
48739
  on: {
48738
- "input": function ($event) {
48739
- return _vm.updateContent($event);
48740
- },
48740
+ "input": _vm.handleInput,
48741
+ "keypress": _vm.handleKeypress,
48741
48742
  "keydown": function ($event) {
48742
48743
  if (!$event.type.indexOf('key') && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) return null;
48743
48744
  $event.preventDefault();
@@ -48769,13 +48770,12 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_render = function render() {
48769
48770
  }, [_vm._v(_vm._s(crumb.name))]) : _vm._e()]], 2);
48770
48771
  }), 0) : _vm._e();
48771
48772
  };
48772
- var ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns = [];
48773
+ var ToggleBreadCrumbvue_type_template_id_521e5ac4_staticRenderFns = [];
48773
48774
 
48774
- // CONCATENATED MODULE: ./src/components/breadcrumb/ToggleBreadCrumb.vue?vue&type=template&id=d98b2612&
48775
+ // CONCATENATED MODULE: ./src/components/breadcrumb/ToggleBreadCrumb.vue?vue&type=template&id=521e5ac4&
48775
48776
 
48776
48777
  // 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&
48777
48778
  /* harmony default export */ var ToggleBreadCrumbvue_type_script_lang_js_ = ({
48778
- mixins: [],
48779
48779
  props: {
48780
48780
  isNuxt: {
48781
48781
  type: Boolean,
@@ -48796,9 +48796,9 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns = [];
48796
48796
  required: false
48797
48797
  }
48798
48798
  },
48799
- data: function () {
48799
+ data() {
48800
48800
  return {
48801
- content: ''
48801
+ lastValidContent: ''
48802
48802
  };
48803
48803
  },
48804
48804
  computed: {
@@ -48806,60 +48806,83 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns = [];
48806
48806
  return this.isNuxt ? this.breadcrumb : this.$route.meta.breadcrumb;
48807
48807
  }
48808
48808
  },
48809
+ mounted() {
48810
+ this.updateContent();
48811
+ },
48809
48812
  methods: {
48813
+ updateContent() {
48814
+ var _this$breadcrumb_comp;
48815
+ if (this.$refs.editableSpan && (_this$breadcrumb_comp = this.breadcrumb_computed) !== null && _this$breadcrumb_comp !== void 0 && _this$breadcrumb_comp.length) {
48816
+ const lastCrumb = this.breadcrumb_computed[this.breadcrumb_computed.length - 1];
48817
+ if (this.$refs.editableSpan.textContent !== lastCrumb.name) {
48818
+ this.$refs.editableSpan.textContent = lastCrumb.name;
48819
+ this.lastValidContent = lastCrumb.name;
48820
+ }
48821
+ }
48822
+ },
48823
+ handleKeypress(event) {
48824
+ if (event.key.length !== 1) return;
48825
+ const currentLength = this.$refs.editableSpan.textContent.length;
48826
+ const selection = window.getSelection();
48827
+ const selectedLength = selection.toString().length;
48828
+ if (currentLength - selectedLength >= this.maxChars) {
48829
+ event.preventDefault();
48830
+ return false;
48831
+ }
48832
+ },
48833
+ handleInput(event) {
48834
+ const newText = event.target.textContent;
48835
+ if (newText.length <= this.maxChars) {
48836
+ this.lastValidContent = newText;
48837
+ this.$emit('update:lastCrumb', newText);
48838
+ } else {
48839
+ // Get cursor position before restoring text
48840
+ const selection = window.getSelection();
48841
+ const cursorPosition = selection.getRangeAt(0).startOffset;
48842
+
48843
+ // Restore previous content
48844
+ event.target.textContent = this.lastValidContent;
48845
+
48846
+ // Restore cursor position
48847
+ const range = document.createRange();
48848
+ const textNode = event.target.firstChild;
48849
+ if (textNode) {
48850
+ range.setStart(textNode, Math.min(cursorPosition, this.lastValidContent.length));
48851
+ range.collapse(true);
48852
+ selection.removeAllRanges();
48853
+ selection.addRange(range);
48854
+ }
48855
+ }
48856
+ },
48810
48857
  handlePaste(event) {
48811
- // Get plain text from clipboard and clean it
48858
+ event.preventDefault();
48812
48859
  const text = (event.clipboardData || window.clipboardData).getData('text');
48813
48860
  const cleanText = text.replace(/[\r\n\s]+/g, ' ').trim();
48814
-
48815
- // Get current selection information
48816
48861
  const selection = window.getSelection();
48862
+ const range = selection.getRangeAt(0);
48863
+ const currentLength = this.$refs.editableSpan.textContent.length;
48817
48864
  const selectionLength = selection.toString().length;
48818
- const currentLength = this.content.length;
48819
-
48820
- // Check if adding the pasted text would exceed maxChars
48821
- if (currentLength - selectionLength + cleanText.length <= this.maxChars && selection.rangeCount) {
48822
- const range = selection.getRangeAt(0);
48865
+ const availableSpace = this.maxChars - (currentLength - selectionLength);
48866
+ if (availableSpace > 0) {
48867
+ const truncatedText = cleanText.slice(0, availableSpace);
48823
48868
  range.deleteContents();
48824
- range.insertNode(document.createTextNode(cleanText));
48825
-
48826
- // Move cursor to end of inserted text
48869
+ range.insertNode(document.createTextNode(truncatedText));
48827
48870
  range.collapse(false);
48828
- selection.removeAllRanges();
48829
- selection.addRange(range);
48830
-
48831
- // Update content
48832
- this.content = event.target.innerText;
48833
- this.$emit('update:lastCrumb', this.content);
48871
+ this.lastValidContent = this.$refs.editableSpan.textContent;
48872
+ this.$emit('update:lastCrumb', this.lastValidContent);
48834
48873
  }
48835
48874
  },
48836
48875
  handleEnterKey(event) {
48837
48876
  event.preventDefault();
48838
48877
  event.target.blur();
48839
- },
48840
- updateContent(event) {
48841
- const newText = event.target.innerText;
48842
-
48843
- // If text exceeds maxChars, prevent the change
48844
- if (newText.length > this.maxChars) {
48845
- // Save current selection
48846
- const selection = window.getSelection();
48847
- const range = selection.getRangeAt(0);
48848
- const cursorOffset = range.startOffset;
48849
-
48850
- // Restore previous content
48851
- event.target.innerText = this.content;
48852
-
48853
- // Restore cursor position
48854
- const newRange = document.createRange();
48855
- newRange.setStart(event.target.firstChild || event.target, Math.min(cursorOffset, this.content.length));
48856
- newRange.collapse(true);
48857
- selection.removeAllRanges();
48858
- selection.addRange(newRange);
48859
- } else {
48860
- this.content = newText;
48861
- this.$emit('update:lastCrumb', this.content);
48862
- }
48878
+ }
48879
+ },
48880
+ watch: {
48881
+ 'breadcrumb_computed': {
48882
+ handler() {
48883
+ this.$nextTick(this.updateContent);
48884
+ },
48885
+ deep: true
48863
48886
  }
48864
48887
  }
48865
48888
  });
@@ -48875,8 +48898,8 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns = [];
48875
48898
 
48876
48899
  var ToggleBreadCrumb_component = normalizeComponent(
48877
48900
  breadcrumb_ToggleBreadCrumbvue_type_script_lang_js_,
48878
- ToggleBreadCrumbvue_type_template_id_d98b2612_render,
48879
- ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns,
48901
+ ToggleBreadCrumbvue_type_template_id_521e5ac4_render,
48902
+ ToggleBreadCrumbvue_type_template_id_521e5ac4_staticRenderFns,
48880
48903
  false,
48881
48904
  null,
48882
48905
  null,