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.
@@ -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=521e5ac4&
48733
+ var ToggleBreadCrumbvue_type_template_id_521e5ac4_render = function render() {
48734
48734
  var _vm = this,
48735
48735
  _c = _vm._self._c;
48736
48736
  return _vm.breadcrumb_computed ? _c('div', {
@@ -48739,14 +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
  },
48746
48748
  on: {
48747
- "input": function ($event) {
48748
- return _vm.updateContent($event);
48749
- },
48749
+ "input": _vm.handleInput,
48750
+ "keypress": _vm.handleKeypress,
48750
48751
  "keydown": function ($event) {
48751
48752
  if (!$event.type.indexOf('key') && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) return null;
48752
48753
  $event.preventDefault();
@@ -48778,13 +48779,12 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_render = function render() {
48778
48779
  }, [_vm._v(_vm._s(crumb.name))]) : _vm._e()]], 2);
48779
48780
  }), 0) : _vm._e();
48780
48781
  };
48781
- var ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns = [];
48782
+ var ToggleBreadCrumbvue_type_template_id_521e5ac4_staticRenderFns = [];
48782
48783
 
48783
- // CONCATENATED MODULE: ./src/components/breadcrumb/ToggleBreadCrumb.vue?vue&type=template&id=d98b2612&
48784
+ // CONCATENATED MODULE: ./src/components/breadcrumb/ToggleBreadCrumb.vue?vue&type=template&id=521e5ac4&
48784
48785
 
48785
48786
  // 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
48787
  /* harmony default export */ var ToggleBreadCrumbvue_type_script_lang_js_ = ({
48787
- mixins: [],
48788
48788
  props: {
48789
48789
  isNuxt: {
48790
48790
  type: Boolean,
@@ -48805,9 +48805,9 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns = [];
48805
48805
  required: false
48806
48806
  }
48807
48807
  },
48808
- data: function () {
48808
+ data() {
48809
48809
  return {
48810
- content: ''
48810
+ lastValidContent: ''
48811
48811
  };
48812
48812
  },
48813
48813
  computed: {
@@ -48815,60 +48815,83 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns = [];
48815
48815
  return this.isNuxt ? this.breadcrumb : this.$route.meta.breadcrumb;
48816
48816
  }
48817
48817
  },
48818
+ mounted() {
48819
+ this.updateContent();
48820
+ },
48818
48821
  methods: {
48822
+ updateContent() {
48823
+ var _this$breadcrumb_comp;
48824
+ if (this.$refs.editableSpan && (_this$breadcrumb_comp = this.breadcrumb_computed) !== null && _this$breadcrumb_comp !== void 0 && _this$breadcrumb_comp.length) {
48825
+ const lastCrumb = this.breadcrumb_computed[this.breadcrumb_computed.length - 1];
48826
+ if (this.$refs.editableSpan.textContent !== lastCrumb.name) {
48827
+ this.$refs.editableSpan.textContent = lastCrumb.name;
48828
+ this.lastValidContent = lastCrumb.name;
48829
+ }
48830
+ }
48831
+ },
48832
+ handleKeypress(event) {
48833
+ if (event.key.length !== 1) return;
48834
+ const currentLength = this.$refs.editableSpan.textContent.length;
48835
+ const selection = window.getSelection();
48836
+ const selectedLength = selection.toString().length;
48837
+ if (currentLength - selectedLength >= this.maxChars) {
48838
+ event.preventDefault();
48839
+ return false;
48840
+ }
48841
+ },
48842
+ handleInput(event) {
48843
+ const newText = event.target.textContent;
48844
+ if (newText.length <= this.maxChars) {
48845
+ this.lastValidContent = newText;
48846
+ this.$emit('update:lastCrumb', newText);
48847
+ } else {
48848
+ // Get cursor position before restoring text
48849
+ const selection = window.getSelection();
48850
+ const cursorPosition = selection.getRangeAt(0).startOffset;
48851
+
48852
+ // Restore previous content
48853
+ event.target.textContent = this.lastValidContent;
48854
+
48855
+ // Restore cursor position
48856
+ const range = document.createRange();
48857
+ const textNode = event.target.firstChild;
48858
+ if (textNode) {
48859
+ range.setStart(textNode, Math.min(cursorPosition, this.lastValidContent.length));
48860
+ range.collapse(true);
48861
+ selection.removeAllRanges();
48862
+ selection.addRange(range);
48863
+ }
48864
+ }
48865
+ },
48819
48866
  handlePaste(event) {
48820
- // Get plain text from clipboard and clean it
48867
+ event.preventDefault();
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
48825
48870
  const selection = window.getSelection();
48871
+ const range = selection.getRangeAt(0);
48872
+ const currentLength = this.$refs.editableSpan.textContent.length;
48826
48873
  const selectionLength = selection.toString().length;
48827
- const currentLength = this.content.length;
48828
-
48829
- // Check if adding the pasted text would exceed maxChars
48830
- if (currentLength - selectionLength + cleanText.length <= this.maxChars && selection.rangeCount) {
48831
- const range = selection.getRangeAt(0);
48874
+ const availableSpace = this.maxChars - (currentLength - selectionLength);
48875
+ if (availableSpace > 0) {
48876
+ const truncatedText = cleanText.slice(0, availableSpace);
48832
48877
  range.deleteContents();
48833
- range.insertNode(document.createTextNode(cleanText));
48834
-
48835
- // Move cursor to end of inserted text
48878
+ range.insertNode(document.createTextNode(truncatedText));
48836
48879
  range.collapse(false);
48837
- selection.removeAllRanges();
48838
- selection.addRange(range);
48839
-
48840
- // Update content
48841
- this.content = event.target.innerText;
48842
- this.$emit('update:lastCrumb', this.content);
48880
+ this.lastValidContent = this.$refs.editableSpan.textContent;
48881
+ this.$emit('update:lastCrumb', this.lastValidContent);
48843
48882
  }
48844
48883
  },
48845
48884
  handleEnterKey(event) {
48846
48885
  event.preventDefault();
48847
48886
  event.target.blur();
48848
- },
48849
- updateContent(event) {
48850
- const newText = event.target.innerText;
48851
-
48852
- // If text exceeds maxChars, prevent the change
48853
- 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
- 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);
48868
- } else {
48869
- this.content = newText;
48870
- this.$emit('update:lastCrumb', this.content);
48871
- }
48887
+ }
48888
+ },
48889
+ watch: {
48890
+ 'breadcrumb_computed': {
48891
+ handler() {
48892
+ this.$nextTick(this.updateContent);
48893
+ },
48894
+ deep: true
48872
48895
  }
48873
48896
  }
48874
48897
  });
@@ -48884,8 +48907,8 @@ var ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns = [];
48884
48907
 
48885
48908
  var ToggleBreadCrumb_component = normalizeComponent(
48886
48909
  breadcrumb_ToggleBreadCrumbvue_type_script_lang_js_,
48887
- ToggleBreadCrumbvue_type_template_id_d98b2612_render,
48888
- ToggleBreadCrumbvue_type_template_id_d98b2612_staticRenderFns,
48910
+ ToggleBreadCrumbvue_type_template_id_521e5ac4_render,
48911
+ ToggleBreadCrumbvue_type_template_id_521e5ac4_staticRenderFns,
48889
48912
  false,
48890
48913
  null,
48891
48914
  null,