tg-controls_cli 0.1.17 → 0.1.20

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.
@@ -215,17 +215,6 @@ function getRawTag(value) {
215
215
  module.exports = getRawTag;
216
216
 
217
217
 
218
- /***/ }),
219
-
220
- /***/ "02ac":
221
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
222
-
223
- "use strict";
224
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SearchableSelect_vue_vue_type_style_index_0_id_50fe2d92_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("adff");
225
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SearchableSelect_vue_vue_type_style_index_0_id_50fe2d92_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SearchableSelect_vue_vue_type_style_index_0_id_50fe2d92_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__);
226
- /* unused harmony reexport * */
227
-
228
-
229
218
  /***/ }),
230
219
 
231
220
  /***/ "0326":
@@ -255,13 +244,6 @@ module.exports = function (fn, that) {
255
244
  };
256
245
 
257
246
 
258
- /***/ }),
259
-
260
- /***/ "0411":
261
- /***/ (function(module, exports, __webpack_require__) {
262
-
263
- // extracted by mini-css-extract-plugin
264
-
265
247
  /***/ }),
266
248
 
267
249
  /***/ "04f8":
@@ -1969,6 +1951,13 @@ module.exports = function isCancel(value) {
1969
1951
  };
1970
1952
 
1971
1953
 
1954
+ /***/ }),
1955
+
1956
+ /***/ "302f":
1957
+ /***/ (function(module, exports, __webpack_require__) {
1958
+
1959
+ // extracted by mini-css-extract-plugin
1960
+
1972
1961
  /***/ }),
1973
1962
 
1974
1963
  /***/ "30b5":
@@ -2056,6 +2045,13 @@ module.exports = JSON.parse("{\"code\":\"bg\",\"messages\":{\"alpha\":\"Поле
2056
2045
 
2057
2046
  /***/ }),
2058
2047
 
2048
+ /***/ "31fc":
2049
+ /***/ (function(module, exports, __webpack_require__) {
2050
+
2051
+ // extracted by mini-css-extract-plugin
2052
+
2053
+ /***/ }),
2054
+
2059
2055
  /***/ "3207":
2060
2056
  /***/ (function(module) {
2061
2057
 
@@ -24643,17 +24639,6 @@ module.exports = function isAxiosError(payload) {
24643
24639
 
24644
24640
  module.exports = JSON.parse("{\"code\":\"zh_TW\",\"messages\":{\"alpha\":\"{_field_} 須以英文組成\",\"alpha_dash\":\"{_field_} 須以英數、斜線及底線組成\",\"alpha_num\":\"{_field_} 須以英數組成\",\"alpha_spaces\":\"{_field_} 須以英文及空格組成\",\"between\":\"{_field_} 須介於 {min} 至 {max}之間\",\"confirmed\":\" {_field_} 不一致\",\"digits\":\"{_field_} 須為 {length} 位數字\",\"dimensions\":\"{_field_} 圖片尺寸不正確。須為 {width} x {height} 像素\",\"email\":\"{_field_} 須為有效的電子信箱\",\"excluded\":\"{_field_} 的選項無效\",\"ext\":\"{_field_} 須為有效的檔案\",\"image\":\"{_field_} 須為圖片\",\"oneOf\":\"{_field_} 的選項無效\",\"integer\":\"{_field_} 須為整數\",\"length\":\"{_field_} 的長度須為 {length}\",\"max\":\"{_field_} 不能大於 {length} 個字元\",\"max_value\":\"{_field_} 不得大於 {max}\",\"mimes\":\"{_field_} 須為有效的檔案類型\",\"min\":\"{_field_} 不能小於 {length} 個字元\",\"min_value\":\"{_field_} 不得小於 {min}\",\"numeric\":\"{_field_} 須為數字\",\"regex\":\"{_field_} 的格式錯誤\",\"required\":\"{_field_} 為必填\",\"required_if\":\"{_field_} 為必填\",\"size\":\"{_field_} 的檔案須小於 {size}KB\",\"double\":\"{_field_}字段必須為有效的小數\"}}");
24645
24641
 
24646
- /***/ }),
24647
-
24648
- /***/ "6275":
24649
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
24650
-
24651
- "use strict";
24652
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Autocomplete_vue_vue_type_style_index_0_id_6cb7e2c2_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("0411");
24653
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Autocomplete_vue_vue_type_style_index_0_id_6cb7e2c2_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Autocomplete_vue_vue_type_style_index_0_id_6cb7e2c2_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__);
24654
- /* unused harmony reexport * */
24655
-
24656
-
24657
24642
  /***/ }),
24658
24643
 
24659
24644
  /***/ "6374":
@@ -26678,6 +26663,17 @@ function toPropertyKey(t) {
26678
26663
  }
26679
26664
  module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
26680
26665
 
26666
+ /***/ }),
26667
+
26668
+ /***/ "a4a6":
26669
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
26670
+
26671
+ "use strict";
26672
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SearchableSelect_vue_vue_type_style_index_0_id_2ccba7c8_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("31fc");
26673
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SearchableSelect_vue_vue_type_style_index_0_id_2ccba7c8_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SearchableSelect_vue_vue_type_style_index_0_id_2ccba7c8_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__);
26674
+ /* unused harmony reexport * */
26675
+
26676
+
26681
26677
  /***/ }),
26682
26678
 
26683
26679
  /***/ "a4e7":
@@ -26863,13 +26859,6 @@ $({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
26863
26859
  });
26864
26860
 
26865
26861
 
26866
- /***/ }),
26867
-
26868
- /***/ "adff":
26869
- /***/ (function(module, exports, __webpack_require__) {
26870
-
26871
- // extracted by mini-css-extract-plugin
26872
-
26873
26862
  /***/ }),
26874
26863
 
26875
26864
  /***/ "ae93":
@@ -36252,6 +36241,17 @@ module.exports = function (target, name, descriptor) {
36252
36241
  /* unused harmony reexport * */
36253
36242
 
36254
36243
 
36244
+ /***/ }),
36245
+
36246
+ /***/ "f367":
36247
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
36248
+
36249
+ "use strict";
36250
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Autocomplete_vue_vue_type_style_index_0_id_562f416e_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("302f");
36251
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Autocomplete_vue_vue_type_style_index_0_id_562f416e_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Autocomplete_vue_vue_type_style_index_0_id_562f416e_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__);
36252
+ /* unused harmony reexport * */
36253
+
36254
+
36255
36255
  /***/ }),
36256
36256
 
36257
36257
  /***/ "f3f6":
@@ -42555,8 +42555,8 @@ var ColorField_component = normalizeComponent(
42555
42555
  )
42556
42556
 
42557
42557
  /* harmony default export */ var ColorField = (ColorField_component.exports);
42558
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"6e4a0282-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/FileField.vue?vue&type=template&id=a2ae54ee
42559
- var FileFieldvue_type_template_id_a2ae54ee_render = function render() {
42558
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"6e4a0282-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/FileField.vue?vue&type=template&id=067bb71d
42559
+ var FileFieldvue_type_template_id_067bb71d_render = function render() {
42560
42560
  var _vm = this,
42561
42561
  _c = _vm._self._c;
42562
42562
  return _c('div', {
@@ -42684,9 +42684,9 @@ var FileFieldvue_type_template_id_a2ae54ee_render = function render() {
42684
42684
  })])]);
42685
42685
  })], 2)])]);
42686
42686
  };
42687
- var FileFieldvue_type_template_id_a2ae54ee_staticRenderFns = [];
42687
+ var FileFieldvue_type_template_id_067bb71d_staticRenderFns = [];
42688
42688
 
42689
- // CONCATENATED MODULE: ./src/components/FileField.vue?vue&type=template&id=a2ae54ee
42689
+ // CONCATENATED MODULE: ./src/components/FileField.vue?vue&type=template&id=067bb71d
42690
42690
 
42691
42691
  // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./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/FileField.vue?vue&type=script&lang=js
42692
42692
 
@@ -42748,93 +42748,189 @@ var FileFieldvue_type_template_id_a2ae54ee_staticRenderFns = [];
42748
42748
  openFilePopup() {
42749
42749
  document.querySelectorAll('#File_' + this.fieldInfo.name + ' [type="file"]')[0].click();
42750
42750
  },
42751
- RemoveFile(event, index) {
42751
+ // RemoveFile(event, index) {
42752
+ // event.stopPropagation();
42753
+ // const dt = new DataTransfer()
42754
+ // const input = document.querySelectorAll('#File_'+ this.fieldInfo.name +' [type="file"]')[0];
42755
+ // const { files } = input
42756
+ // this.previewFiles = [];
42757
+ // for (let i = 0; i < files.length; i++) {
42758
+ // let file = files[i]
42759
+ // if (index !== i) {
42760
+ // dt.items.add(file)
42761
+ // var fileExtention = file.name.split(".").pop()
42762
+ // var isImage = ["jpg", "jpeg", "png", "gif"].includes(fileExtention);
42763
+ // let reader = new FileReader();
42764
+ // reader.addEventListener(
42765
+ // "load",
42766
+ // () => {
42767
+ // // Set file data
42768
+ // let tempfile = {
42769
+ // name: file.name.split(".").shift(),
42770
+ // size: (Math.round((file.size / 1024 / 1024) * 100) / 100),
42771
+ // type: file.type,
42772
+ // fileExtention: fileExtention,
42773
+ // isImage: isImage,
42774
+ // url: reader.result,
42775
+ // isUploaded: true,
42776
+ // };
42777
+ // this.previewFiles.push(tempfile);
42778
+ // },
42779
+ // false
42780
+ // );
42781
+ // // Read uploaded file
42782
+ // reader.readAsDataURL(file);
42783
+ // }
42784
+ // // here you exclude the file. thus removing it.
42785
+ // }
42786
+ // input.files = dt.files // Assign the updates list
42787
+
42788
+ // if (this.fieldInfo && this.fieldInfo.config && this.fieldInfo.config.onRemoveFile) {
42789
+ // this.fieldInfo.config.onRemoveFile(event, index, this.fieldInfo);
42790
+ // }
42791
+ // },
42792
+ // onChange(e) {
42793
+ // this.errors = [];
42794
+ // // Check if file is selected
42795
+ // if (e.target.files && e.target.files[0]) {
42796
+ // // Check if file is valid
42797
+ // for (let index = 0; index < e.target.files.length; index++) {
42798
+ // let file = e.target.files[index];
42799
+ // if (this.isFileValid(file)) {
42800
+ // // Get uploaded file
42801
+ // // Get file size
42802
+ // let fileSize = (Math.round((file.size / 1024 / 1024) * 100) / 100);
42803
+ // // Get file extention
42804
+ // let fileExtention = file.name.split(".").pop();
42805
+ // // Get file name
42806
+ // let fileName = file.name.split(".").shift();
42807
+ // // Check if file is an image
42808
+ // let isImage = ["jpg", "jpeg", "png", "gif"].includes(fileExtention);
42809
+ // // Print to console
42810
+ // console.log(fileSize, fileExtention, fileName, isImage);
42811
+ // // Load the FileReader API
42812
+ // let reader = new FileReader();
42813
+ // reader.addEventListener(
42814
+ // "load",
42815
+ // () => {
42816
+ // // Set file data
42817
+ // let tempfile = {
42818
+ // name: fileName,
42819
+ // size: fileSize,
42820
+ // type: file.type,
42821
+ // fileExtention: fileExtention,
42822
+ // isImage: isImage,
42823
+ // url: reader.result,
42824
+ // isUploaded: true,
42825
+ // };
42826
+ // if (this.canUploadMultipleFile() == false) {
42827
+ // this.previewFiles = [];
42828
+ // }
42829
+ // this.previewFiles.push(tempfile);
42830
+ // },
42831
+ // false
42832
+ // );
42833
+ // // Read uploaded file
42834
+ // reader.readAsDataURL(file);
42835
+ // //reader.removeEventListener("load");
42836
+ // } else {
42837
+ // console.log("Invalid file");
42838
+ // }
42839
+ // }
42840
+
42841
+ // if (this.errors.length == 0) {
42842
+ // this.fieldInfo.value = e.target.files;
42843
+ // if (this.fieldInfo && this.fieldInfo.config && this.fieldInfo.config.onChange) {
42844
+ // this.fieldInfo.config.onChange(e, this.fieldInfo);
42845
+ // }
42846
+ // }
42847
+ // }
42848
+
42849
+ // },
42850
+ async RemoveFile(event, index) {
42752
42851
  event.stopPropagation();
42753
42852
  const dt = new DataTransfer();
42754
- const input = document.querySelectorAll('#File_' + this.fieldInfo.name + ' [type="file"]')[0];
42853
+ const input = document.querySelector(`#File_${this.fieldInfo.name} [type="file"]`);
42854
+ if (!input) return;
42755
42855
  const {
42756
42856
  files
42757
42857
  } = input;
42758
- this.previewFiles = [];
42858
+ const previewFiles = [];
42859
+ const filePromises = [];
42759
42860
  for (let i = 0; i < files.length; i++) {
42760
42861
  const file = files[i];
42761
42862
  if (index !== i) {
42762
42863
  dt.items.add(file);
42763
- var fileExtention = file.name.split(".").pop();
42764
- var isImage = ["jpg", "jpeg", "png", "gif"].includes(fileExtention);
42765
- let reader = new FileReader();
42766
- reader.addEventListener("load", () => {
42767
- // Set file data
42768
- this.file = {
42769
- name: file.name.split(".").shift(),
42770
- size: Math.round(file.size / 1024 / 1024 * 100) / 100,
42771
- type: file.type,
42772
- fileExtention: fileExtention,
42773
- isImage: isImage,
42774
- url: reader.result,
42775
- isUploaded: true
42864
+ filePromises.push(new Promise(resolve => {
42865
+ const fileExtention = file.name.split(".").pop().toLowerCase();
42866
+ const isImage = ["jpg", "jpeg", "png", "gif"].includes(fileExtention);
42867
+ const reader = new FileReader();
42868
+ reader.onload = () => {
42869
+ resolve({
42870
+ name: file.name.lastIndexOf(".") > -1 ? file.name.substring(0, file.name.lastIndexOf(".")) : file.name,
42871
+ size: Math.round(file.size / 1024 / 1024 * 100) / 100,
42872
+ type: file.type,
42873
+ fileExtention,
42874
+ isImage,
42875
+ url: reader.result,
42876
+ isUploaded: true
42877
+ });
42776
42878
  };
42777
- this.previewFiles.push(this.file);
42778
- }, false);
42779
- // Read uploaded file
42780
- reader.readAsDataURL(file);
42879
+ reader.readAsDataURL(file);
42880
+ }));
42781
42881
  }
42782
- // here you exclude the file. thus removing it.
42783
42882
  }
42784
- input.files = dt.files; // Assign the updates list
42785
-
42883
+ const processedFiles = await Promise.all(filePromises);
42884
+ previewFiles.push(...processedFiles);
42885
+ this.previewFiles = previewFiles;
42886
+ input.files = dt.files;
42887
+ this.fieldInfo.value = dt.files;
42786
42888
  if (this.fieldInfo && this.fieldInfo.config && this.fieldInfo.config.onRemoveFile) {
42787
42889
  this.fieldInfo.config.onRemoveFile(event, index, this.fieldInfo);
42788
42890
  }
42789
42891
  },
42790
- onChange(e) {
42892
+ async onChange(e) {
42791
42893
  this.errors = [];
42792
- // Check if file is selected
42793
- if (e.target.files && e.target.files[0]) {
42794
- // Check if file is valid
42795
- for (let index = 0; index < e.target.files.length; index++) {
42796
- const file = e.target.files[index];
42797
- if (this.isFileValid(file)) {
42798
- // Get uploaded file
42799
- // Get file size
42800
- var fileSize = Math.round(file.size / 1024 / 1024 * 100) / 100;
42801
- // Get file extention
42802
- var fileExtention = file.name.split(".").pop();
42803
- // Get file name
42804
- var fileName = file.name.split(".").shift();
42805
- // Check if file is an image
42806
- var isImage = ["jpg", "jpeg", "png", "gif"].includes(fileExtention);
42807
- // Print to console
42808
- console.log(fileSize, fileExtention, fileName, isImage);
42809
- // Load the FileReader API
42810
- let reader = new FileReader();
42811
- reader.addEventListener("load", () => {
42812
- // Set file data
42813
- this.file = {
42894
+ if (!e.target.files || e.target.files.length === 0) {
42895
+ return;
42896
+ }
42897
+ const files = Array.from(e.target.files);
42898
+ const filePromises = [];
42899
+ for (const file of files) {
42900
+ if (this.isFileValid(file)) {
42901
+ const fileSize = Math.round(file.size / 1024 / 1024 * 100) / 100;
42902
+ const fileExtention = file.name.split(".").pop().toLowerCase();
42903
+ const fileName = file.name.lastIndexOf(".") > -1 ? file.name.substring(0, file.name.lastIndexOf(".")) : file.name;
42904
+ const isImage = ["jpg", "jpeg", "png", "gif"].includes(fileExtention);
42905
+ console.log(fileSize, fileExtention, fileName, isImage);
42906
+ filePromises.push(new Promise(resolve => {
42907
+ const reader = new FileReader();
42908
+ reader.onload = () => {
42909
+ resolve({
42814
42910
  name: fileName,
42815
42911
  size: fileSize,
42816
42912
  type: file.type,
42817
- fileExtention: fileExtention,
42818
- isImage: isImage,
42913
+ fileExtention,
42914
+ isImage,
42819
42915
  url: reader.result,
42820
42916
  isUploaded: true
42821
- };
42822
- if (this.canUploadMultipleFile() == false) {
42823
- this.previewFiles = [];
42824
- }
42825
- this.previewFiles.push(this.file);
42826
- }, false);
42827
- // Read uploaded file
42917
+ });
42918
+ };
42828
42919
  reader.readAsDataURL(file);
42829
- } else {
42830
- console.log("Invalid file");
42831
- }
42920
+ }));
42921
+ } else {
42922
+ console.log("Invalid file");
42832
42923
  }
42833
- if (this.errors.length == 0) {
42834
- this.fieldInfo.value = e.target.files;
42835
- if (this.fieldInfo && this.fieldInfo.config && this.fieldInfo.config.onChange) {
42836
- this.fieldInfo.config.onChange(e, this.fieldInfo);
42837
- }
42924
+ }
42925
+ const processedFiles = await Promise.all(filePromises);
42926
+ if (this.canUploadMultipleFile() === false) {
42927
+ this.previewFiles = [];
42928
+ }
42929
+ this.previewFiles.push(...processedFiles);
42930
+ if (this.errors.length === 0) {
42931
+ this.fieldInfo.value = e.target.files;
42932
+ if (this.fieldInfo && this.fieldInfo.config && this.fieldInfo.config.onChange) {
42933
+ this.fieldInfo.config.onChange(e, this.fieldInfo);
42838
42934
  }
42839
42935
  }
42840
42936
  },
@@ -42978,54 +43074,54 @@ var FileFieldvue_type_template_id_a2ae54ee_staticRenderFns = [];
42978
43074
  dragLeave: function () {
42979
43075
  this.isDragging = false;
42980
43076
  },
42981
- handleDrop: function (event) {
43077
+ async handleDrop(event) {
42982
43078
  event.preventDefault();
42983
43079
  this.isDragging = false;
42984
43080
  const files = event.target.files || event.dataTransfer.files;
42985
- if (files.length) {
42986
- for (let index = 0; index < files.length; index++) {
42987
- const file = files[index];
42988
- if (this.isFileValid(file)) {
42989
- // Get uploaded file
42990
- // Get file size
42991
- var fileSize = Math.round(file.size / 1024 / 1024 * 100) / 100;
42992
- // Get file extention
42993
- var fileExtention = file.name.split(".").pop();
42994
- // Get file name
42995
- var fileName = file.name.split(".").shift();
42996
- // Check if file is an image
42997
- var isImage = ["jpg", "jpeg", "png", "gif"].includes(fileExtention);
42998
- // Print to console
42999
- console.log(fileSize, fileExtention, fileName, isImage);
43000
- // Load the FileReader API
43001
- let reader = new FileReader();
43002
- reader.addEventListener("load", () => {
43003
- // Set file data
43004
- this.file = {
43081
+ if (!files || files.length === 0) {
43082
+ return;
43083
+ }
43084
+ const filePromises = [];
43085
+ for (const file of Array.from(files)) {
43086
+ if (this.isFileValid(file)) {
43087
+ const fileSize = Math.round(file.size / 1024 / 1024 * 100) / 100;
43088
+ const fileExtention = file.name.split(".").pop().toLowerCase();
43089
+ const fileName = file.name.lastIndexOf(".") > -1 ? file.name.substring(0, file.name.lastIndexOf(".")) : file.name;
43090
+ const isImage = ["jpg", "jpeg", "png", "gif"].includes(fileExtention);
43091
+ console.log(fileSize, fileExtention, fileName, isImage);
43092
+ filePromises.push(new Promise(resolve => {
43093
+ const reader = new FileReader();
43094
+ reader.onload = () => {
43095
+ resolve({
43005
43096
  name: fileName,
43006
43097
  size: fileSize,
43007
43098
  type: file.type,
43008
- fileExtention: fileExtention,
43009
- isImage: isImage,
43099
+ fileExtention,
43100
+ isImage,
43010
43101
  url: reader.result,
43011
43102
  isUploaded: true
43012
- };
43013
- if (this.canUploadMultipleFile() == false) {
43014
- this.previewFiles = [];
43015
- }
43016
- this.previewFiles.push(this.file);
43017
- }, false);
43018
- // Read uploaded file
43103
+ });
43104
+ };
43019
43105
  reader.readAsDataURL(file);
43020
- } else {
43021
- console.log("Invalid file");
43022
- }
43106
+ }));
43107
+ } else {
43108
+ console.log("Invalid file");
43023
43109
  }
43024
- if (this.errors.length == 0) {
43025
- this.fieldInfo.value = files;
43026
- if (this.fieldInfo && this.fieldInfo.config && this.fieldInfo.config.onChange) {
43027
- this.fieldInfo.config.onChange(event, this.fieldInfo);
43028
- }
43110
+ }
43111
+ const processedFiles = await Promise.all(filePromises);
43112
+ if (this.canUploadMultipleFile() === false) {
43113
+ this.previewFiles = [];
43114
+ }
43115
+ this.previewFiles.push(...processedFiles);
43116
+
43117
+ // if (processedFiles.length > 0) {
43118
+ // this.file = processedFiles[processedFiles.length - 1];
43119
+ // }
43120
+
43121
+ if (this.errors.length === 0) {
43122
+ this.fieldInfo.value = files;
43123
+ if (this.fieldInfo && this.fieldInfo.config && this.fieldInfo.config.onChange) {
43124
+ this.fieldInfo.config.onChange(event, this.fieldInfo);
43029
43125
  }
43030
43126
  }
43031
43127
  }
@@ -43043,8 +43139,8 @@ var FileFieldvue_type_template_id_a2ae54ee_staticRenderFns = [];
43043
43139
 
43044
43140
  var FileField_component = normalizeComponent(
43045
43141
  components_FileFieldvue_type_script_lang_js,
43046
- FileFieldvue_type_template_id_a2ae54ee_render,
43047
- FileFieldvue_type_template_id_a2ae54ee_staticRenderFns,
43142
+ FileFieldvue_type_template_id_067bb71d_render,
43143
+ FileFieldvue_type_template_id_067bb71d_staticRenderFns,
43048
43144
  false,
43049
43145
  null,
43050
43146
  null,
@@ -43750,8 +43846,8 @@ var SlotField_component = normalizeComponent(
43750
43846
  )
43751
43847
 
43752
43848
  /* harmony default export */ var SlotField = (SlotField_component.exports);
43753
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"6e4a0282-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/SearchableSelectField.vue?vue&type=template&id=22749d06
43754
- var SearchableSelectFieldvue_type_template_id_22749d06_render = function render() {
43849
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"6e4a0282-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/SearchableSelectField.vue?vue&type=template&id=4daf05b6
43850
+ var SearchableSelectFieldvue_type_template_id_4daf05b6_render = function render() {
43755
43851
  var _vm = this,
43756
43852
  _c = _vm._self._c;
43757
43853
  return _c('Field', {
@@ -43790,6 +43886,12 @@ var SearchableSelectFieldvue_type_template_id_22749d06_render = function render(
43790
43886
  },
43791
43887
  "change": function ($event) {
43792
43888
  return _vm.onSearchableChange($event, _vm.fieldInfo, 'change');
43889
+ },
43890
+ "input": function ($event) {
43891
+ return _vm.onSearchableChange($event, _vm.fieldInfo, 'input');
43892
+ },
43893
+ "search": function ($event) {
43894
+ return _vm.onSearch($event, _vm.fieldInfo, 'search');
43793
43895
  }
43794
43896
  },
43795
43897
  model: {
@@ -43806,12 +43908,12 @@ var SearchableSelectFieldvue_type_template_id_22749d06_render = function render(
43806
43908
  }])
43807
43909
  });
43808
43910
  };
43809
- var SearchableSelectFieldvue_type_template_id_22749d06_staticRenderFns = [];
43911
+ var SearchableSelectFieldvue_type_template_id_4daf05b6_staticRenderFns = [];
43810
43912
 
43811
- // CONCATENATED MODULE: ./src/components/SearchableSelectField.vue?vue&type=template&id=22749d06
43913
+ // CONCATENATED MODULE: ./src/components/SearchableSelectField.vue?vue&type=template&id=4daf05b6
43812
43914
 
43813
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"6e4a0282-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/SearchableSelect.vue?vue&type=template&id=50fe2d92&scoped=true
43814
- var SearchableSelectvue_type_template_id_50fe2d92_scoped_true_render = function render() {
43915
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"6e4a0282-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/SearchableSelect.vue?vue&type=template&id=2ccba7c8&scoped=true
43916
+ var SearchableSelectvue_type_template_id_2ccba7c8_scoped_true_render = function render() {
43815
43917
  var _vm = this,
43816
43918
  _c = _vm._self._c;
43817
43919
  return _c('div', {
@@ -43857,12 +43959,12 @@ var SearchableSelectvue_type_template_id_50fe2d92_scoped_true_render = function
43857
43959
  }
43858
43960
  })], 1);
43859
43961
  };
43860
- var SearchableSelectvue_type_template_id_50fe2d92_scoped_true_staticRenderFns = [];
43962
+ var SearchableSelectvue_type_template_id_2ccba7c8_scoped_true_staticRenderFns = [];
43861
43963
 
43862
- // CONCATENATED MODULE: ./src/components/SearchableSelect.vue?vue&type=template&id=50fe2d92&scoped=true
43964
+ // CONCATENATED MODULE: ./src/components/SearchableSelect.vue?vue&type=template&id=2ccba7c8&scoped=true
43863
43965
 
43864
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"6e4a0282-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/Autocomplete.vue?vue&type=template&id=6cb7e2c2&scoped=true
43865
- var Autocompletevue_type_template_id_6cb7e2c2_scoped_true_render = function render() {
43966
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"6e4a0282-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/Autocomplete.vue?vue&type=template&id=562f416e&scoped=true
43967
+ var Autocompletevue_type_template_id_562f416e_scoped_true_render = function render() {
43866
43968
  var _vm = this,
43867
43969
  _c = _vm._self._c;
43868
43970
  return _c('div', {
@@ -43991,7 +44093,7 @@ var Autocompletevue_type_template_id_6cb7e2c2_scoped_true_render = function rend
43991
44093
  staticClass: "list-group list-group-flush"
43992
44094
  }, _vm._l(group.items, function (item, itemIndex) {
43993
44095
  return _c('li', {
43994
- key: _vm.getItemValue(item),
44096
+ key: _vm.itemRowKey(item, null, groupIndex, itemIndex),
43995
44097
  staticClass: "list-group-item autocomplete-item",
43996
44098
  class: {
43997
44099
  'active': _vm.getFlatIndex(groupIndex, itemIndex) === _vm.highlightedIndex,
@@ -44073,7 +44175,7 @@ var Autocompletevue_type_template_id_6cb7e2c2_scoped_true_render = function rend
44073
44175
  }
44074
44176
  }) : _vm._e(), _vm._l(_vm.paginatedDisplayItems, function (item, index) {
44075
44177
  return _c('li', {
44076
- key: _vm.getItemValue(item),
44178
+ key: _vm.itemRowKey(item, index),
44077
44179
  staticClass: "list-group-item autocomplete-item",
44078
44180
  class: {
44079
44181
  'active': _vm.windowStart + index === _vm.highlightedIndex,
@@ -44144,7 +44246,7 @@ var Autocompletevue_type_template_id_6cb7e2c2_scoped_true_render = function rend
44144
44246
  staticClass: "d-flex flex-wrap align-items-center"
44145
44247
  }, [_vm._l(_vm.visibleChips, function (selectedItem, index) {
44146
44248
  return [index < _vm.maxVisibleChipsCount ? _c('span', {
44147
- key: _vm.getItemValue(selectedItem),
44249
+ key: 'chip-' + index + '-' + _vm.getItemValue(selectedItem),
44148
44250
  staticClass: "badge badge-primary mr-1 mb-1 pl-2 autocomplete-chip",
44149
44251
  attrs: {
44150
44252
  "title": _vm.getChipText(selectedItem)
@@ -44184,7 +44286,7 @@ var Autocompletevue_type_template_id_6cb7e2c2_scoped_true_render = function rend
44184
44286
  staticClass: "autocomplete-input-inline",
44185
44287
  attrs: {
44186
44288
  "type": "text",
44187
- "placeholder": _vm.selectedItems.length === 0 ? _vm.placeholder : '',
44289
+ "placeholder": _vm.selectedCount === 0 ? _vm.placeholder : '',
44188
44290
  "disabled": _vm.disabled
44189
44291
  },
44190
44292
  domProps: {
@@ -44355,7 +44457,7 @@ var Autocompletevue_type_template_id_6cb7e2c2_scoped_true_render = function rend
44355
44457
  staticClass: "list-group list-group-flush"
44356
44458
  }, _vm._l(group.items, function (item, itemIndex) {
44357
44459
  return _c('li', {
44358
- key: _vm.getItemValue(item),
44460
+ key: _vm.itemRowKey(item, null, groupIndex, itemIndex),
44359
44461
  staticClass: "list-group-item autocomplete-item",
44360
44462
  class: {
44361
44463
  'active': _vm.getFlatIndex(groupIndex, itemIndex) === _vm.highlightedIndex,
@@ -44437,7 +44539,7 @@ var Autocompletevue_type_template_id_6cb7e2c2_scoped_true_render = function rend
44437
44539
  }
44438
44540
  }) : _vm._e(), _vm._l(_vm.paginatedDisplayItems, function (item, index) {
44439
44541
  return _c('li', {
44440
- key: _vm.getItemValue(item),
44542
+ key: _vm.itemRowKey(item, index),
44441
44543
  staticClass: "list-group-item autocomplete-item",
44442
44544
  class: {
44443
44545
  'active': _vm.windowStart + index === _vm.highlightedIndex,
@@ -44501,7 +44603,7 @@ var Autocompletevue_type_template_id_6cb7e2c2_scoped_true_render = function rend
44501
44603
  }, [_vm._v(_vm._s(error))]);
44502
44604
  }), 0) : _vm._e()]);
44503
44605
  };
44504
- var Autocompletevue_type_template_id_6cb7e2c2_scoped_true_staticRenderFns = [function () {
44606
+ var Autocompletevue_type_template_id_562f416e_scoped_true_staticRenderFns = [function () {
44505
44607
  var _vm = this,
44506
44608
  _c = _vm._self._c;
44507
44609
  return _c('div', {
@@ -44525,7 +44627,7 @@ var Autocompletevue_type_template_id_6cb7e2c2_scoped_true_staticRenderFns = [fun
44525
44627
  }, [_vm._v("Loading...")])]);
44526
44628
  }];
44527
44629
 
44528
- // CONCATENATED MODULE: ./src/components/Autocomplete.vue?vue&type=template&id=6cb7e2c2&scoped=true
44630
+ // CONCATENATED MODULE: ./src/components/Autocomplete.vue?vue&type=template&id=562f416e&scoped=true
44529
44631
 
44530
44632
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.reduce.js
44531
44633
  var es_array_reduce = __webpack_require__("13d5");
@@ -44835,33 +44937,20 @@ var es_set_union_v2 = __webpack_require__("72c3");
44835
44937
  menuMaxHeight() {
44836
44938
  return this.menuProps && this.menuProps.maxHeight || 300;
44837
44939
  },
44838
- selectedItems() {
44839
- if (!this.multiple) return [];
44840
-
44841
- // Get selected values from currentValue (supports both value and modelValue props)
44940
+ /** O(1) membership checks when thousands of contracts are selected */
44941
+ selectedValueSet() {
44842
44942
  const currentVal = this.currentValue;
44843
- const selectedValues = Array.isArray(currentVal) ? currentVal : currentVal ? [currentVal] : [];
44844
- if (selectedValues.length === 0) {
44845
- return [];
44943
+ if (this.multiple) {
44944
+ const selectedValues = Array.isArray(currentVal) ? currentVal : currentVal ? [currentVal] : [];
44945
+ return new Set(selectedValues.map(sv => String(sv)));
44846
44946
  }
44847
-
44848
- // Look through ALL items (unfiltered), not just displayItems (which might be filtered)
44849
- let itemsToSearch = this.allItems && this.allItems.length > 0 ? this.allItems : this.items;
44850
-
44851
- // Flatten grouped items if needed
44852
- if (itemsToSearch.length > 0 && Array.isArray(itemsToSearch[0].items)) {
44853
- // Items are in grouped format - flatten them
44854
- itemsToSearch = itemsToSearch.flatMap(group => group.items || []);
44947
+ if (currentVal !== null && currentVal !== undefined && currentVal !== '') {
44948
+ return new Set([String(currentVal)]);
44855
44949
  }
44856
- const filtered = itemsToSearch.filter(item => {
44857
- const itemValue = this.getItemValue(item);
44858
- return selectedValues.some(sv => String(sv) === String(itemValue));
44859
- });
44860
- return filtered.map(item => ({
44861
- ...item,
44862
- title: this.getItemText(item),
44863
- value: this.getItemValue(item)
44864
- }));
44950
+ return new Set();
44951
+ },
44952
+ selectedCount() {
44953
+ return this.selectedValueSet.size;
44865
44954
  },
44866
44955
  displayText() {
44867
44956
  if (this.multiple) return '';
@@ -44879,42 +44968,46 @@ var es_set_union_v2 = __webpack_require__("72c3");
44879
44968
  }
44880
44969
  return this.validateRules();
44881
44970
  },
44882
- // Chips display logic
44971
+ // Chips display logic — resolve only the few chips shown, not every selected id
44883
44972
  visibleChips() {
44884
- return this.selectedItems;
44973
+ if (!this.multiple || this.selectedCount === 0) return [];
44974
+ const limit = this.maxVisibleChipsCount;
44975
+ if (limit <= 0) return [];
44976
+ const set = this.selectedValueSet;
44977
+ let itemsToSearch = this.allItems && this.allItems.length > 0 ? this.allItems : this.items;
44978
+ if (itemsToSearch.length > 0 && Array.isArray(itemsToSearch[0].items)) {
44979
+ itemsToSearch = itemsToSearch.flatMap(group => group.items || []);
44980
+ }
44981
+ const chips = [];
44982
+ for (let i = 0; i < itemsToSearch.length && chips.length < limit; i++) {
44983
+ const item = itemsToSearch[i];
44984
+ const itemValue = String(this.getItemValue(item));
44985
+ if (!set.has(itemValue)) continue;
44986
+ chips.push({
44987
+ ...item,
44988
+ title: this.getItemText(item),
44989
+ value: this.getItemValue(item)
44990
+ });
44991
+ }
44992
+ return chips;
44885
44993
  },
44886
44994
  maxVisibleChipsCount() {
44887
- return this.maxVisibleChips !== null && this.maxVisibleChips !== undefined ? this.maxVisibleChips : this.selectedItems.length;
44995
+ return this.maxVisibleChips !== null && this.maxVisibleChips !== undefined ? this.maxVisibleChips : this.selectedCount;
44888
44996
  },
44889
44997
  remainingChipsCount() {
44890
44998
  if (this.maxVisibleChips === null || this.maxVisibleChips === undefined) return 0;
44891
- return Math.max(0, this.selectedItems.length - this.maxVisibleChips);
44999
+ return Math.max(0, this.selectedCount - this.maxVisibleChips);
44892
45000
  },
44893
45001
  // Action buttons
44894
45002
  hasActionButtons() {
44895
45003
  return this.actionButtons && (this.actionButtons.selectAll || this.actionButtons.active || this.actionButtons.inactive || this.actionButtons.clear);
44896
45004
  },
44897
- // O(1) Set of stringified selected values — used by isSelected to avoid O(n) .some() per item
44898
- selectedValueSet() {
44899
- const currentVal = this.currentValue;
44900
- if (this.multiple) {
44901
- const selectedValues = Array.isArray(currentVal) ? currentVal : currentVal ? [currentVal] : [];
44902
- return new Set(selectedValues.map(sv => String(sv)));
44903
- }
44904
- if (currentVal !== null && currentVal !== undefined) {
44905
- return new Set([String(currentVal)]);
44906
- }
44907
- return new Set();
44908
- },
44909
45005
  allSelected() {
44910
45006
  if (!this.multiple) return false;
44911
- // Check if all filtered items are selected
44912
45007
  const filteredItems = this.filteredDisplayItems;
44913
- const selectedValues = Array.isArray(this.currentValue) ? this.currentValue : [];
44914
- return filteredItems.length > 0 && filteredItems.every(item => {
44915
- const itemValue = this.getItemValue(item);
44916
- return selectedValues.some(sv => String(sv) === String(itemValue));
44917
- });
45008
+ if (filteredItems.length === 0) return false;
45009
+ const set = this.selectedValueSet;
45010
+ return filteredItems.every(item => set.has(String(this.getItemValue(item))));
44918
45011
  },
44919
45012
  hasSelectedItems() {
44920
45013
  if (!this.multiple) return false;
@@ -45075,7 +45168,7 @@ var es_set_union_v2 = __webpack_require__("72c3");
45075
45168
  methods: {
45076
45169
  getItemText(item) {
45077
45170
  if (item.raw) {
45078
- return item.raw.text || item.raw.title || item.raw[this.itemTitle] || '';
45171
+ return item.raw.text || item.raw.name || item.raw.title || item.raw[this.itemTitle] || '';
45079
45172
  }
45080
45173
  return item.text || item.title || item[this.itemTitle] || '';
45081
45174
  },
@@ -45147,6 +45240,17 @@ var es_set_union_v2 = __webpack_require__("72c3");
45147
45240
  }
45148
45241
  return group[field] || '';
45149
45242
  },
45243
+ /** Stable unique key for v-for rows (API may return duplicate value ids) */
45244
+ itemRowKey(item, index, groupIndex, itemIndex) {
45245
+ const value = this.getItemValue(item);
45246
+ const base = value != null && value !== '' ? String(value) : 'item';
45247
+ if (groupIndex != null && itemIndex != null) {
45248
+ return `g${groupIndex}-i${itemIndex}-${base}`;
45249
+ }
45250
+ const offset = this.windowStart != null ? this.windowStart : 0;
45251
+ const idx = index != null ? index : 0;
45252
+ return `r${offset + idx}-${base}`;
45253
+ },
45150
45254
  isSelected(item) {
45151
45255
  const value = this.getItemValue(item);
45152
45256
  return this.selectedValueSet.has(String(value));
@@ -45256,9 +45360,9 @@ var es_set_union_v2 = __webpack_require__("72c3");
45256
45360
  if (index > -1) {
45257
45361
  selectedValues.splice(index, 1);
45258
45362
  // Emit both events for Vue 2 and Vue 3 compatibility
45259
- this.$emit('input', selectedValues);
45363
+ this.$emit('input', selectedValues, 'remove');
45260
45364
  this.$emit('update:modelValue', selectedValues);
45261
- this.$emit('change', selectedValues);
45365
+ this.$emit('change', selectedValues, 'remove');
45262
45366
  }
45263
45367
  }
45264
45368
  },
@@ -45374,22 +45478,36 @@ var es_set_union_v2 = __webpack_require__("72c3");
45374
45478
  },
45375
45479
  // Action button methods
45376
45480
  selectAll(event) {
45377
- // Prevent event from bubbling
45378
45481
  if (event) {
45379
45482
  event.preventDefault();
45380
45483
  event.stopPropagation();
45381
45484
  event.stopImmediatePropagation();
45382
45485
  }
45383
45486
  if (!this.multiple) return;
45384
- // Select all items from the currently filtered/displayed items
45385
- const allItems = this.filteredDisplayItems;
45386
- const allValues = allItems.map(item => this.getItemValue(item));
45387
- // Merge with existing selections to avoid deselecting items not in current filter
45388
- const currentValues = Array.isArray(this.currentValue) ? this.currentValue : [];
45389
- const mergedValues = [...new Set([...currentValues, ...allValues])];
45390
- this.$emit('input', mergedValues);
45391
- this.$emit('update:modelValue', mergedValues);
45392
- this.$emit('change', mergedValues);
45487
+ const mergedSet = new Set(this.selectedValueSet);
45488
+ for (const item of this.filteredDisplayItems) {
45489
+ mergedSet.add(String(this.getItemValue(item)));
45490
+ }
45491
+ const mergedValues = Array.from(mergedSet, key => {
45492
+ const n = Number(key);
45493
+ return !isNaN(n) && String(n) === key ? n : key;
45494
+ });
45495
+
45496
+ // Defer the large v-model update so the click handler can finish and the UI stays responsive
45497
+ const emitSelection = () => {
45498
+ this.$emit('input', mergedValues);
45499
+ this.$emit('update:modelValue', mergedValues);
45500
+ this.$emit('change', mergedValues);
45501
+ };
45502
+ if (mergedValues.length > 200) {
45503
+ if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {
45504
+ window.requestAnimationFrame(emitSelection);
45505
+ } else {
45506
+ this.$nextTick(emitSelection);
45507
+ }
45508
+ } else {
45509
+ emitSelection();
45510
+ }
45393
45511
  },
45394
45512
  filterByStatus(status) {
45395
45513
  if (this.filterStatus === status) {
@@ -45489,8 +45607,8 @@ var es_set_union_v2 = __webpack_require__("72c3");
45489
45607
  });
45490
45608
  // CONCATENATED MODULE: ./src/components/Autocomplete.vue?vue&type=script&lang=js
45491
45609
  /* harmony default export */ var components_Autocompletevue_type_script_lang_js = (Autocompletevue_type_script_lang_js);
45492
- // EXTERNAL MODULE: ./src/components/Autocomplete.vue?vue&type=style&index=0&id=6cb7e2c2&prod&scoped=true&lang=css
45493
- var Autocompletevue_type_style_index_0_id_6cb7e2c2_prod_scoped_true_lang_css = __webpack_require__("6275");
45610
+ // EXTERNAL MODULE: ./src/components/Autocomplete.vue?vue&type=style&index=0&id=562f416e&prod&scoped=true&lang=css
45611
+ var Autocompletevue_type_style_index_0_id_562f416e_prod_scoped_true_lang_css = __webpack_require__("f367");
45494
45612
 
45495
45613
  // CONCATENATED MODULE: ./src/components/Autocomplete.vue
45496
45614
 
@@ -45503,11 +45621,11 @@ var Autocompletevue_type_style_index_0_id_6cb7e2c2_prod_scoped_true_lang_css = _
45503
45621
 
45504
45622
  var Autocomplete_component = normalizeComponent(
45505
45623
  components_Autocompletevue_type_script_lang_js,
45506
- Autocompletevue_type_template_id_6cb7e2c2_scoped_true_render,
45507
- Autocompletevue_type_template_id_6cb7e2c2_scoped_true_staticRenderFns,
45624
+ Autocompletevue_type_template_id_562f416e_scoped_true_render,
45625
+ Autocompletevue_type_template_id_562f416e_scoped_true_staticRenderFns,
45508
45626
  false,
45509
45627
  null,
45510
- "6cb7e2c2",
45628
+ "562f416e",
45511
45629
  null
45512
45630
 
45513
45631
  )
@@ -45702,10 +45820,6 @@ function SearchableSelectvue_type_script_lang_js_debounce(func, wait) {
45702
45820
  },
45703
45821
  set(value) {
45704
45822
  // Emit input event (Vue 2 v-model default)
45705
- console.log('=== internalValue setter ===');
45706
- console.log('Setting internalValue to:', value);
45707
- console.log('Current value prop:', this.value);
45708
- console.log('Emitting input event (Vue 2 v-model) with:', value);
45709
45823
  this.$emit('input', value);
45710
45824
  this.$emit('update:modelValue', value);
45711
45825
  if (!this.multiple) {
@@ -45924,14 +46038,14 @@ function SearchableSelectvue_type_script_lang_js_debounce(func, wait) {
45924
46038
  this.debouncedLoadItems(search, 1, false);
45925
46039
  }
45926
46040
  },
45927
- onSelectionChange(value) {
46041
+ onSelectionChange(value, secondValue) {
45928
46042
  // Ensure value is an array for multiple mode
45929
46043
  const finalValue = this.multiple && !Array.isArray(value) ? [value] : value;
45930
46044
 
45931
46045
  // Emit both events for Vue 2 and Vue 3 compatibility
45932
46046
  this.$emit('input', finalValue);
45933
46047
  this.$emit('update:modelValue', finalValue);
45934
- if (!this.multiple) {
46048
+ if (!this.multiple || secondValue == "remove") {
45935
46049
  this.$emit('change', finalValue);
45936
46050
  }
45937
46051
  },
@@ -46024,11 +46138,6 @@ function SearchableSelectvue_type_script_lang_js_debounce(func, wait) {
46024
46138
  },
46025
46139
  value: {
46026
46140
  handler: async function (newValue, oldValue) {
46027
- console.log('=== SearchableSelect value watcher ===');
46028
- console.log('New value:', newValue, 'type:', Array.isArray(newValue) ? 'array' : typeof newValue);
46029
- console.log('Old value:', oldValue);
46030
- console.log('=== End watcher ===');
46031
-
46032
46141
  // Only load remote items if not using local items
46033
46142
  if (!this.useLocalItems && newValue && this.remoteItems.length === 0 && !this.loading && this.type) {
46034
46143
  // try {
@@ -46083,8 +46192,8 @@ function SearchableSelectvue_type_script_lang_js_debounce(func, wait) {
46083
46192
  });
46084
46193
  // CONCATENATED MODULE: ./src/components/SearchableSelect.vue?vue&type=script&lang=js
46085
46194
  /* harmony default export */ var components_SearchableSelectvue_type_script_lang_js = (SearchableSelectvue_type_script_lang_js);
46086
- // EXTERNAL MODULE: ./src/components/SearchableSelect.vue?vue&type=style&index=0&id=50fe2d92&prod&scoped=true&lang=css
46087
- var SearchableSelectvue_type_style_index_0_id_50fe2d92_prod_scoped_true_lang_css = __webpack_require__("02ac");
46195
+ // EXTERNAL MODULE: ./src/components/SearchableSelect.vue?vue&type=style&index=0&id=2ccba7c8&prod&scoped=true&lang=css
46196
+ var SearchableSelectvue_type_style_index_0_id_2ccba7c8_prod_scoped_true_lang_css = __webpack_require__("a4a6");
46088
46197
 
46089
46198
  // CONCATENATED MODULE: ./src/components/SearchableSelect.vue
46090
46199
 
@@ -46097,11 +46206,11 @@ var SearchableSelectvue_type_style_index_0_id_50fe2d92_prod_scoped_true_lang_css
46097
46206
 
46098
46207
  var SearchableSelect_component = normalizeComponent(
46099
46208
  components_SearchableSelectvue_type_script_lang_js,
46100
- SearchableSelectvue_type_template_id_50fe2d92_scoped_true_render,
46101
- SearchableSelectvue_type_template_id_50fe2d92_scoped_true_staticRenderFns,
46209
+ SearchableSelectvue_type_template_id_2ccba7c8_scoped_true_render,
46210
+ SearchableSelectvue_type_template_id_2ccba7c8_scoped_true_staticRenderFns,
46102
46211
  false,
46103
46212
  null,
46104
- "50fe2d92",
46213
+ "2ccba7c8",
46105
46214
  null
46106
46215
 
46107
46216
  )
@@ -46132,11 +46241,12 @@ var SearchableSelect_component = normalizeComponent(
46132
46241
  },
46133
46242
  watch: {
46134
46243
  fieldInfo: {
46135
- handler: function () {
46244
+ handler: async function () {
46245
+ console.log("fieldInfo - searchable select - watch");
46136
46246
  const newKey = this._getOptionsSourceKey();
46137
46247
  if (newKey !== this._optionsSourceKey) {
46138
46248
  this._optionsSourceKey = newKey;
46139
- this.GetSelectOptions();
46249
+ await this.GetSelectOptions();
46140
46250
  }
46141
46251
  },
46142
46252
  deep: true
@@ -46203,20 +46313,25 @@ var SearchableSelect_component = normalizeComponent(
46203
46313
  const selectKey = f.select_options ? typeof f.select_options === 'string' ? f.select_options.length : Array.isArray(f.select_options) ? f.select_options.length : 0 : 0;
46204
46314
  const urlKey = f.config && f.config.option_request_url || '';
46205
46315
  const bindKey = f.config && f.config.OptionsForBind ? f.config.OptionsForBind.length : 0;
46206
- return `${picklistKey}|${selectKey}|${urlKey}|${bindKey}`;
46316
+ const optionsKey = f.config && f.config.options ? f.config.options.length : 0;
46317
+ return `${picklistKey}|${selectKey}|${urlKey}|${bindKey}|${optionsKey}`;
46207
46318
  },
46208
46319
  GetSelectOptions: async function () {
46209
46320
  this._optionsSourceKey = this._getOptionsSourceKey();
46210
46321
  var vm = this;
46211
46322
  if (vm.fieldInfo.hasOwnProperty('config') && vm.fieldInfo.config.hasOwnProperty('OptionsForBind') == false) {
46212
- vm.fieldInfo.config.OptionsForBind = [];
46323
+ vm.$set(vm.fieldInfo.config, 'OptionsForBind', []);
46213
46324
  }
46214
46325
  if (vm.fieldInfo.hasOwnProperty('picklist_options') && vm.fieldInfo.picklist_options != 'Lookup') {
46215
- vm.fieldInfo.config.OptionsForBind = vm.MakeArray(vm.fieldInfo.picklist_options);
46326
+ vm.$set(vm.fieldInfo.config, 'OptionsForBind', vm.MakeArray(vm.fieldInfo.picklist_options));
46216
46327
  } else if (vm.fieldInfo.hasOwnProperty('select_options') && vm.fieldInfo.select_options.length > 0) {
46217
- vm.fieldInfo.config.OptionsForBind = vm.MakeNormalArray(vm.fieldInfo.select_options);
46328
+ vm.$set(vm.fieldInfo.config, 'OptionsForBind', vm.MakeNormalArray(vm.fieldInfo.select_options));
46329
+ } else if (vm.fieldInfo.hasOwnProperty('options') && vm.fieldInfo.options.length > 0) {
46330
+ vm.$set(vm.fieldInfo.config, 'OptionsForBind', vm.MakeNormalArray(vm.fieldInfo.options));
46218
46331
  } else if (vm.fieldInfo.hasOwnProperty('config') && vm.fieldInfo.config.hasOwnProperty('OptionsForBind') && vm.fieldInfo.config.OptionsForBind.length > 0) {
46219
- vm.fieldInfo.config.OptionsForBind = vm.fieldInfo.config.OptionsForBind;
46332
+ // already set, nothing to do
46333
+ } else if (vm.fieldInfo.hasOwnProperty('config') && Array.isArray(vm.fieldInfo.config.options) && vm.fieldInfo.config.options.length > 0) {
46334
+ vm.fieldInfo.config.OptionsForBind = vm.fieldInfo.config.options;
46220
46335
  } else if (vm.fieldInfo.hasOwnProperty('config') && vm.fieldInfo.config.hasOwnProperty('option_request_url') && vm.fieldInfo.config.option_request_url.length > 0) {
46221
46336
  await axios_default.a.get(vm.fieldInfo.config.option_request_url, {
46222
46337
  headers: {
@@ -46225,9 +46340,9 @@ var SearchableSelect_component = normalizeComponent(
46225
46340
  }).then(res => {
46226
46341
  console.log(res.data);
46227
46342
  if (res.data && res.data.hasOwnProperty('DATA')) {
46228
- vm.fieldInfo.config.OptionsForBind = res.data.DATA;
46343
+ vm.$set(vm.fieldInfo.config, 'OptionsForBind', res.data.DATA);
46229
46344
  } else {
46230
- vm.fieldInfo.config.OptionsForBind = res.data;
46345
+ vm.$set(vm.fieldInfo.config, 'OptionsForBind', res.data);
46231
46346
  }
46232
46347
  }).catch(error => {
46233
46348
  console.log('Error on binding slect option in tg-control- ' + error);
@@ -46313,12 +46428,25 @@ var SearchableSelect_component = normalizeComponent(
46313
46428
  }
46314
46429
  },
46315
46430
  onSearchableChange: function (x, field, e) {
46431
+ let isOnChangeOnCheckbox = false;
46432
+ if (field && field.hasOwnProperty("config") && field.config.hasOwnProperty("isOnChangeOnCheckbox")) {
46433
+ isOnChangeOnCheckbox = field.config.isOnChangeOnCheckbox;
46434
+ }
46316
46435
  if (field && field.hasOwnProperty("config") && field.config.hasOwnProperty("onChange")) {
46317
46436
  if (typeof field.config.onChange == "function") {
46318
- field.config.onChange(field, x);
46437
+ if (isOnChangeOnCheckbox && e == "input" && e == "input") {
46438
+ field.config.onChange(field, x, e);
46439
+ } else if (e != "input") {
46440
+ field.config.onChange(field, x, e);
46441
+ }
46319
46442
  }
46320
46443
  }
46321
46444
  },
46445
+ onSearch: function (e, field, y) {
46446
+ if (field && field.hasOwnProperty("config") && field.config.hasOwnProperty("onSearchChange")) {
46447
+ field.config.onSearchChange(field, e.search);
46448
+ }
46449
+ },
46322
46450
  RenderOptions() {
46323
46451
  var options = [];
46324
46452
  var vm = this;
@@ -46353,8 +46481,8 @@ var SearchableSelect_component = normalizeComponent(
46353
46481
 
46354
46482
  var SearchableSelectField_component = normalizeComponent(
46355
46483
  components_SearchableSelectFieldvue_type_script_lang_js,
46356
- SearchableSelectFieldvue_type_template_id_22749d06_render,
46357
- SearchableSelectFieldvue_type_template_id_22749d06_staticRenderFns,
46484
+ SearchableSelectFieldvue_type_template_id_4daf05b6_render,
46485
+ SearchableSelectFieldvue_type_template_id_4daf05b6_staticRenderFns,
46358
46486
  false,
46359
46487
  null,
46360
46488
  null,